浏览代码

2022-9-15

cmy 3 年之前
父节点
当前提交
3c12f76c0d
共有 67 个文件被更改,包括 1671 次插入184 次删除
  1. 3 0
      .gitignore
  2. 41 4
      api/apply.js
  3. 7 1
      manifest.json
  4. 二进制
      myjtp.rar
  5. 12 0
      node_modules/.package-lock.json
  6. 30 0
      node_modules/jweixin-module/README.md
  7. 0 0
      node_modules/jweixin-module/lib/index.js
  8. 56 0
      node_modules/jweixin-module/package.json
  9. 4 0
      node_modules/qrcodejs2/.npmignore
  10. 14 0
      node_modules/qrcodejs2/LICENSE
  11. 43 0
      node_modules/qrcodejs2/README.md
  12. 18 0
      node_modules/qrcodejs2/bower.json
  13. 47 0
      node_modules/qrcodejs2/index-svg.html
  14. 44 0
      node_modules/qrcodejs2/index.html
  15. 37 0
      node_modules/qrcodejs2/index.svg
  16. 1 0
      node_modules/qrcodejs2/jquery.min.js
  17. 50 0
      node_modules/qrcodejs2/package.json
  18. 156 0
      node_modules/qrcodejs2/qrcode.js
  19. 0 0
      node_modules/qrcodejs2/qrcode.min.js
  20. 16 0
      package-lock.json
  21. 6 0
      package.json
  22. 18 15
      pages.json
  23. 86 80
      pages/apply/choose.vue
  24. 434 0
      pages/apply/information.vue
  25. 94 0
      pages/apply/qrcode.vue
  26. 11 5
      pages/apply/query.vue
  27. 152 75
      pages/apply/success.vue
  28. 256 0
      pages/apply/verification.vue
  29. 二进制
      static/img/92x.png
  30. 二进制
      static/img/alertbg2.png
  31. 二进制
      static/img/alertbg3.png
  32. 二进制
      static/img/apply.png
  33. 二进制
      static/img/bp1.png
  34. 二进制
      static/img/bp2.png
  35. 二进制
      static/img/cm.png
  36. 二进制
      static/img/logo.png
  37. 二进制
      static/img/s1.jpg
  38. 二进制
      static/img/userAllb.png
  39. 二进制
      static/img/userb.png
  40. 二进制
      static/img/verification.png
  41. 0 1
      store/index.js
  42. 6 0
      store/model/user.js
  43. 二进制
      unpackage/dist.zip
  44. 二进制
      unpackage/dist/build/h5/h5.rar
  45. 1 1
      unpackage/dist/build/h5/index.html
  46. 二进制
      unpackage/dist/build/h5/static/img/img02.a56a0368.jpg
  47. 二进制
      unpackage/dist/build/h5/static/img/img02.jpg
  48. 二进制
      unpackage/dist/build/h5/static/img/img02.png
  49. 0 0
      unpackage/dist/build/h5/static/js/index.575034fb.js
  50. 0 0
      unpackage/dist/build/h5/static/js/pages-activity-index.aa05f91f.js
  51. 0 0
      unpackage/dist/build/h5/static/js/pages-activity-userInfo.867e66a7.js
  52. 0 0
      unpackage/dist/build/h5/static/js/pages-activity-userInfo~pages-addTp-company~pages-addTp-user~pages-index.71a855c7.js
  53. 0 0
      unpackage/dist/build/h5/static/js/pages-activity-userInfo~pages-addTp-company~pages-addTp-user~pages-index~pages-recharge-pay.66c91ae3.js
  54. 0 0
      unpackage/dist/build/h5/static/js/pages-addTp-company.0197a6e8.js
  55. 0 0
      unpackage/dist/build/h5/static/js/pages-addTp-company~pages-addTp-user.f358bee2.js
  56. 0 0
      unpackage/dist/build/h5/static/js/pages-addTp-company~pages-addTp-user~pages-recharge-pay.b58bec58.js
  57. 0 0
      unpackage/dist/build/h5/static/js/pages-addTp-user.019d6a86.js
  58. 0 0
      unpackage/dist/build/h5/static/js/pages-index.86e8d209.js
  59. 0 0
      unpackage/dist/build/h5/static/js/pages-public-forget.741dde1b.js
  60. 0 0
      unpackage/dist/build/h5/static/js/pages-public-login.af7772e9.js
  61. 0 0
      unpackage/dist/build/h5/static/js/pages-public-register.4cef4024.js
  62. 0 0
      unpackage/dist/build/h5/static/js/pages-public-wxLogin.d57e4c0c.js
  63. 0 0
      unpackage/dist/build/h5/static/js/pages-recharge-pay.e374285e.js
  64. 0 0
      unpackage/dist/build/h5/static/js/pages-redirect-redirect.8320eebf.js
  65. 2 2
      utils/newRequest.js
  66. 26 0
      utils/wxAuthorized.js
  67. 二进制
      uview-ui.rar

+ 3 - 0
.gitignore

@@ -0,0 +1,3 @@
+unpackage/debug
+unpackage/dist
+unpackage/resources

+ 41 - 4
api/apply.js

@@ -1,9 +1,10 @@
 import request from '@/utils/request'
+import {upFilse} from '@/utils/request'
 
 // 查询会员
 export function query(data,type) {
 	return request({
-		url: '/member/get/'+type,
+		url: '/api/member/get/'+type,
 		method: 'get',
 		data
 	});
@@ -11,7 +12,7 @@ export function query(data,type) {
 // 申请
 export function apply(data,type) {
 	return request({
-		url: '/member/apply/'+type,
+		url: '/api/member/apply/'+type,
 		method: 'post',
 		data
 	});
@@ -19,8 +20,44 @@ export function apply(data,type) {
 // 会员价格
 export function getPrice(data,type) {
 	return request({
-		url: '/member/config/'+type,
+		url: '/api/member/config/'+type,
 		method: 'get',
 		data
 	});
-}
+}
+
+//上传图片
+export function uploads(data) {
+	return upFilse({
+		url: '/api/upload/image',
+		method: 'post',
+		data
+	});
+}
+
+// 
+export function getIndex(data) {
+	return request({
+		url: '/api/index',
+		method: 'get',
+		data
+	});
+}
+// 核销码列表
+export function getTicket(data) {
+	return request({
+		url: '/api/ticket',
+		method: 'get',
+		data
+	});
+}
+// 核销
+export function check(data) {
+	return request({
+		url: '/api/check',
+		method: 'post',
+		data
+	});
+}
+
+

+ 7 - 1
manifest.json

@@ -1,6 +1,6 @@
 {
     "name" : "投票系统",
-    "appid" : "__UNI__F0EBD91",
+    "appid" : "__UNI__A8504C1",
     "description" : "",
     "versionName" : "1.0.0",
     "versionCode" : "100",
@@ -48,6 +48,12 @@
                         "appsecret" : "",
                         "UniversalLinks" : ""
                     }
+                },
+                "share" : {
+                    "weixin" : {
+                        "appid" : "",
+                        "UniversalLinks" : ""
+                    }
                 }
             }
         }

二进制
myjtp.rar


+ 12 - 0
node_modules/.package-lock.json

@@ -0,0 +1,12 @@
+{
+  "name": "myjtp",
+  "lockfileVersion": 2,
+  "requires": true,
+  "packages": {
+    "node_modules/jweixin-module": {
+      "version": "1.6.0",
+      "resolved": "https://registry.npmjs.org/jweixin-module/-/jweixin-module-1.6.0.tgz",
+      "integrity": "sha512-dGk9cf+ipipHmtzYmKZs5B2toX+p4hLyllGLF6xuC8t+B05oYxd8fYoaRz0T30U2n3RUv8a4iwvjhA+OcYz52w=="
+    }
+  }
+}

+ 30 - 0
node_modules/jweixin-module/README.md

@@ -0,0 +1,30 @@
+# jweixin-module
+
+微信JS-SDK
+
+## 安装
+
+### NPM
+
+```shell
+npm install jweixin-module --save
+```
+
+### UMD
+
+```http
+https://unpkg.com/jweixin-module/out/index.js
+```
+
+## 使用
+
+```js
+var jweixin = require('jweixin-module')
+jweixin.ready(function(){
+    // TODO
+});
+```
+
+## 完整API
+
+>[微信JS-SDK说明文档](https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115)

文件差异内容过多而无法显示
+ 0 - 0
node_modules/jweixin-module/lib/index.js


+ 56 - 0
node_modules/jweixin-module/package.json

@@ -0,0 +1,56 @@
+{
+  "_args": [
+    [
+      "jweixin-module@1.6.0",
+      "C:\\Users\\Administrator\\Documents\\WeChat Files\\wxid_5042trap0ahs22\\FileStorage\\File\\2021-11\\myjtp"
+    ]
+  ],
+  "_from": "jweixin-module@1.6.0",
+  "_id": "jweixin-module@1.6.0",
+  "_inBundle": false,
+  "_integrity": "sha512-dGk9cf+ipipHmtzYmKZs5B2toX+p4hLyllGLF6xuC8t+B05oYxd8fYoaRz0T30U2n3RUv8a4iwvjhA+OcYz52w==",
+  "_location": "/jweixin-module",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "jweixin-module@1.6.0",
+    "name": "jweixin-module",
+    "escapedName": "jweixin-module",
+    "rawSpec": "1.6.0",
+    "saveSpec": null,
+    "fetchSpec": "1.6.0"
+  },
+  "_requiredBy": [
+    "/"
+  ],
+  "_resolved": "https://registry.npmjs.org/jweixin-module/-/jweixin-module-1.6.0.tgz",
+  "_spec": "1.6.0",
+  "_where": "C:\\Users\\Administrator\\Documents\\WeChat Files\\wxid_5042trap0ahs22\\FileStorage\\File\\2021-11\\myjtp",
+  "author": {
+    "name": "Shengqiang Guo"
+  },
+  "bugs": {
+    "url": "https://github.com/zhetengbiji/jweixin-module/issues"
+  },
+  "description": "微信JS-SDK",
+  "devDependencies": {},
+  "homepage": "https://github.com/zhetengbiji/jweixin-module#readme",
+  "keywords": [
+    "wxjssdk",
+    "weixin",
+    "jweixin",
+    "wechat",
+    "jssdk",
+    "wx"
+  ],
+  "license": "ISC",
+  "main": "lib/index.js",
+  "name": "jweixin-module",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/zhetengbiji/jweixin-module.git"
+  },
+  "scripts": {},
+  "version": "1.6.0"
+}

+ 4 - 0
node_modules/qrcodejs2/.npmignore

@@ -0,0 +1,4 @@
+.DS_Store
+
+.idea
+.project

+ 14 - 0
node_modules/qrcodejs2/LICENSE

@@ -0,0 +1,14 @@
+The MIT License (MIT)
+---------------------
+Copyright (c) 2012 davidshimjs
+
+Permission is hereby granted, free of charge,
+to any person obtaining a copy of this software and associated documentation files (the "Software"),
+to deal in the Software without restriction,
+including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
+and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+ 43 - 0
node_modules/qrcodejs2/README.md

@@ -0,0 +1,43 @@
+# QRCode.js
+QRCode.js is javascript library for making QRCode. QRCode.js supports Cross-browser with HTML5 Canvas and table tag in DOM.
+QRCode.js has no dependencies.
+
+## Basic Usages
+```
+<div id="qrcode"></div>
+<script type="text/javascript">
+new QRCode(document.getElementById("qrcode"), "http://jindo.dev.naver.com/collie");
+</script>
+```
+
+or with some options
+
+```
+var qrcode = new QRCode("test", {
+	text: "http://jindo.dev.naver.com/collie",
+	width: 128,
+	height: 128,
+	colorDark : "#000000",
+	colorLight : "#ffffff",
+	correctLevel : QRCode.CorrectLevel.H
+});
+```
+
+and you can use some methods
+
+```
+qrcode.clear(); // clear the code.
+qrcode.makeCode("http://naver.com"); // make another code.
+```
+
+## Browser Compatibility
+IE6~10, Chrome, Firefox, Safari, Opera, Mobile Safari, Android, Windows Mobile, ETC.
+
+## License
+MIT License
+
+## Contact
+twitter @davidshimjs
+
+[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/davidshimjs/qrcodejs/trend.png)](https://bitdeli.com/free "Bitdeli Badge")
+

+ 18 - 0
node_modules/qrcodejs2/bower.json

@@ -0,0 +1,18 @@
+{
+  "name": "qrcode.js",
+  "version": "0.0.1",
+  "homepage": "https://github.com/davidshimjs/qrcodejs",
+  "authors": [
+    "Sangmin Shim", "Sangmin Shim <ssm0123@gmail.com> (http://jaguarjs.com)"
+  ],
+  "description": "Cross-browser QRCode generator for javascript",
+  "main": "qrcode.js",
+  "ignore": [
+    "bower_components",
+    "node_modules",
+    "index.html",
+    "index.svg",
+    "jquery.min.js",
+    "qrcode.min.js"
+  ]
+}

+ 47 - 0
node_modules/qrcodejs2/index-svg.html

@@ -0,0 +1,47 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ko" lang="ko">
+  <head>
+    <title>Cross-Browser QRCode generator for Javascript</title>
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+    <meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no" />
+    <script type="text/javascript" src="jquery.min.js"></script>
+    <script type="text/javascript" src="qrcode.js"></script>
+  </head>
+  <body>
+  <input id="text" type="text" value="http://jindo.dev.naver.com/collie" style="width:80%" />
+  <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <g id="qrcode"/>
+  </svg>
+  <script type="text/javascript">
+  var qrcode = new QRCode(document.getElementById("qrcode"), {
+      width : 100,
+      height : 100,
+      useSVG: true
+  });
+
+  function makeCode () {		
+      var elText = document.getElementById("text");
+
+      if (!elText.value) {
+          alert("Input a text");
+          elText.focus();
+          return;
+      }
+
+      qrcode.makeCode(elText.value);
+  }
+
+  makeCode();
+
+  $("#text").
+      on("blur", function () {
+          makeCode();
+      }).
+      on("keydown", function (e) {
+          if (e.keyCode == 13) {
+              makeCode();
+          }
+      });
+    </script>
+  </body>
+</html>

+ 44 - 0
node_modules/qrcodejs2/index.html

@@ -0,0 +1,44 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ko" lang="ko">
+<head>
+<title>Cross-Browser QRCode generator for Javascript</title>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no" />
+<script type="text/javascript" src="jquery.min.js"></script>
+<script type="text/javascript" src="qrcode.js"></script>
+</head>
+<body>
+<input id="text" type="text" value="http://jindo.dev.naver.com/collie" style="width:80%" /><br />
+<div id="qrcode" style="width:100px; height:100px; margin-top:15px;"></div>
+
+<script type="text/javascript">
+var qrcode = new QRCode(document.getElementById("qrcode"), {
+	width : 100,
+	height : 100
+});
+
+function makeCode () {		
+	var elText = document.getElementById("text");
+	
+	if (!elText.value) {
+		alert("Input a text");
+		elText.focus();
+		return;
+	}
+	
+	qrcode.makeCode(elText.value);
+}
+
+makeCode();
+
+$("#text").
+	on("blur", function () {
+		makeCode();
+	}).
+	on("keydown", function (e) {
+		if (e.keyCode == 13) {
+			makeCode();
+		}
+	});
+</script>
+</body>

+ 37 - 0
node_modules/qrcodejs2/index.svg

@@ -0,0 +1,37 @@
+<?xml version="1.0" standalone="yes"?>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="-50 0 200 100">
+  <g id="qrcode"/>
+  <foreignObject x="-50" y="0" width="100" height="100">
+    <body xmlns="http://www.w3.org/1999/xhtml" style="padding:0; margin:0">
+      <div style="padding:inherit; margin:inherit; height:100%">
+        <textarea id="text" style="height:100%; width:100%; position:absolute; margin:inherit; padding:inherit">james</textarea>
+      </div>
+      <script type="application/ecmascript" src="qrcode.js"></script>
+      <script type="application/ecmascript">
+var elem = document.getElementById("qrcode");
+var qrcode = new QRCode(elem, {
+    width : 100,
+    height : 100
+});
+
+function makeCode () {
+    var elText = document.getElementById("text");
+ 
+    if (elText.value === "") {
+        //alert("Input a text");
+        //elText.focus();
+        return;
+    }
+ 
+    qrcode.makeCode(elText.value);
+}
+
+makeCode();
+
+document.getElementById("text").onkeyup = function (e) {
+        makeCode();
+};
+</script>
+    </body>
+  </foreignObject>
+</svg>

文件差异内容过多而无法显示
+ 1 - 0
node_modules/qrcodejs2/jquery.min.js


+ 50 - 0
node_modules/qrcodejs2/package.json

@@ -0,0 +1,50 @@
+{
+  "_from": "qrcodejs2",
+  "_id": "qrcodejs2@0.0.2",
+  "_inBundle": false,
+  "_integrity": "sha1-Rlr+Xjnxn6zsuTLBH3oYYQkUauE=",
+  "_location": "/qrcodejs2",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "tag",
+    "registry": true,
+    "raw": "qrcodejs2",
+    "name": "qrcodejs2",
+    "escapedName": "qrcodejs2",
+    "rawSpec": "",
+    "saveSpec": null,
+    "fetchSpec": "latest"
+  },
+  "_requiredBy": [
+    "#USER",
+    "/"
+  ],
+  "_resolved": "https://registry.npmjs.org/qrcodejs2/-/qrcodejs2-0.0.2.tgz",
+  "_shasum": "465afe5e39f19facecb932c11f7a186109146ae1",
+  "_spec": "qrcodejs2",
+  "_where": "C:\\Users\\Administrator\\Documents\\WeChat Files\\wxid_5042trap0ahs22\\FileStorage\\File\\2021-11\\myjtp",
+  "author": {
+    "name": "davidshimjs",
+    "email": "ssm0123@gmail.com"
+  },
+  "bugs": {
+    "url": "https://github.com/davidshimjs/qrcodejs/issues"
+  },
+  "bundleDependencies": false,
+  "deprecated": false,
+  "description": "Javsacript QRCode for all browsers",
+  "gitHead": "06c7a5e134f116402699f03cda5819e10a0e5787",
+  "homepage": "https://github.com/davidshimjs/qrcodejs#readme",
+  "keywords": [
+    "qrcode",
+    "javascript"
+  ],
+  "license": "MIT",
+  "main": "qrcode.js",
+  "name": "qrcodejs2",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/davidshimjs/qrcodejs.git"
+  },
+  "version": "0.0.2"
+}

文件差异内容过多而无法显示
+ 156 - 0
node_modules/qrcodejs2/qrcode.js


文件差异内容过多而无法显示
+ 0 - 0
node_modules/qrcodejs2/qrcode.min.js


+ 16 - 0
package-lock.json

@@ -0,0 +1,16 @@
+{
+  "requires": true,
+  "lockfileVersion": 1,
+  "dependencies": {
+    "jweixin-module": {
+      "version": "1.6.0",
+      "resolved": "https://registry.npmjs.org/jweixin-module/-/jweixin-module-1.6.0.tgz",
+      "integrity": "sha512-dGk9cf+ipipHmtzYmKZs5B2toX+p4hLyllGLF6xuC8t+B05oYxd8fYoaRz0T30U2n3RUv8a4iwvjhA+OcYz52w=="
+    },
+    "qrcodejs2": {
+      "version": "0.0.2",
+      "resolved": "https://registry.npmjs.org/qrcodejs2/-/qrcodejs2-0.0.2.tgz",
+      "integrity": "sha1-Rlr+Xjnxn6zsuTLBH3oYYQkUauE="
+    }
+  }
+}

+ 6 - 0
package.json

@@ -0,0 +1,6 @@
+{
+  "dependencies": {
+    "jweixin-module": "^1.6.0",
+    "qrcodejs2": "0.0.2"
+  }
+}

+ 18 - 15
pages.json

@@ -5,7 +5,7 @@
 	"pages": [{
 			"path": "pages/index",
 			"style": {
-				"navigationBarTitleText": "2022届寻找明星母婴服务人员海选赛",
+				"navigationBarTitleText": "2021届寻找明星母婴服务人员海选赛",
 				"app-plus": {
 					"titleNView": false
 				}
@@ -41,26 +41,15 @@
 			}
 		},
 		{
-			"path": "pages/apply/enterpriseInformation",
+			"path": "pages/apply/information",
 			"style": {
-				"navigationBarTitleText": "企业申请"
-				// "app-plus": {
-				// 	"titleNView": {
-				// 		"type": "transparent"
-				// 	}
-				// }
-			}
-		},
-		{
-			"path": "pages/apply/personalInformation",
-			"style": {
-				"navigationBarTitleText": "个人申请"
+				"navigationBarTitleText": "申请"
 			}
 		},
 		{
 			"path": "pages/apply/choose",
 			"style": {
-				"navigationBarTitleText": "申请类型"
+				"navigationBarTitleText": "会员申请表"
 			}
 		},
 		{
@@ -80,6 +69,20 @@
 				"navigationBarTitleText": "证书"
 			}
 		},
+		{
+			"path": "pages/apply/verification",
+			"style": {
+				"navigationStyle":"custom",
+				"navigationBarTitleText": "我的核销码"
+			}
+		},
+		{
+			"path": "pages/apply/qrcode",
+			"style": {
+				"navigationBarTitleText": "我的核销券"
+			}
+		},
+		
 		{
 			"path": "pages/redirect/redirect",
 			"style": {

+ 86 - 80
pages/apply/choose.vue

@@ -1,111 +1,109 @@
 <template>
-	<view class="alertBox">
-		<image class="titleImg" src="@/static/img/alertbg.png" mode="widthFix"></image>
-		<view class="title">参赛类型</view>
-		<view class="titleTip">请选择您的参赛身份类型</view>
-		<view class="lxTtem flex" @click="type = 1">
-			<view class="leftTitle flex">
-				<image class="leftImgTip" src="@/static/img/user.png" mode="heightFix"></image>
-				<text>个人参赛</text>
+	<view class="">
+		<view class="alertBox">
+			<image class="titleImg" src="@/static/img/alertbg2.png" mode="widthFix"></image>
+			<image :src="img" class="logo"></image>
+			<view class="hed"></view>
+			<view class="lxTtem flex" @click="type = 1">
+				<view class="leftTitle flex">
+					<image class="leftImgTip" src="@/static/img/bp2.png" mode="heightFix"></image>
+					<text>个人会员</text>
+				</view>
+				<view class="rightTip flex"><view v-if="type == 1" class="xzTip"></view></view>
 			</view>
-			<view class="rightTip flex"><view v-if="type == 1" class="xzTip"></view></view>
-		</view>
-		<view class="lxTtem flex" @click="type = 2">
-			<view class="leftTitle flex">
-				<image class="leftImgTip" src="@/static/img/userAll.png" mode="heightFix"></image>
-				<text>企业参赛(我有所属企业)</text>
+			<view class="lxTtem flex" @click="type = 2">
+				<view class="leftTitle flex">
+					<image class="leftImgTip" src="@/static/img/bp1.png" mode="heightFix"></image>
+					<text>企业会员</text>
+				</view>
+				<view class="rightTip flex"><view v-if="type == 2" class="xzTip"></view></view>
 			</view>
-			<view class="rightTip flex"><view v-if="type == 2" class="xzTip"></view></view>
+			<view class="pushtyle" @click="submit">确认</view>
 		</view>
-	
-		<view class="pushtyle" @click="submit">确认</view>
+		<view class="content" id="content"></view>
 	</view>
-	<!-- <div class="content">
-		<div class="">
-			<div class="title">申请类型</div>
-			<div class="explain">
-				请选择您的申请身份类型
-			</div>
-			<div class="list">
-				<label>个人会员</label>
-				<input type="radio" name="radio" id="" value="1" v-model="type"/>
-			</div>
-			<div class="list">
-				<label>企业会员</label>
-				<input type="radio" name="radio" id="" value="2" v-model="type"/>
-			</div>
-		</div>
-		<div class="button" @click="submit">
-			确认
-		</div>
-	</div> -->
 </template>
 
 <script>
+import { shareLoad } from '../../utils/wxAuthorized.js'
+import { getIndex } from '../../api/apply.js'
+import { getUserInfo } from '../../api/login.js'
 export default {
 	data() {
 		return {
-			type: 1
+			type: 1,
+			img: require('@/static/img/logo.png'),
 		}
 	},
+	mounted() {
+		this.getContent()
+	},
+	onShow() {
+		
+	},
+	onLoad() {
+		this.share()
+	},
 	methods: {
+		getContent() {
+			getIndex().then(res => {
+				const content = document.getElementById("content");
+				console.log(res.data)
+				content.innerHTML = res.data.content
+			})
+		},
 		submit() {
 			uni.navigateTo({
-				url: '/pages/apply/query?type=' + this.type
+				url: '/pages/apply/information?type=' + this.type
 			})
-			// window.location.href = 'query.html?type='+this.type;
+		},
+		// 分享
+		share() {
+			const pages = getCurrentPages()
+			const path = pages[pages.length - 1].route
+			const baseURL = this.$store.state.baseURL
+			const data = {
+				link: window.location.href, // 分享链接
+				imgUrl: 'http://vote.deepbytop.com/index/static/img/logo.f387ae76.png',
+				desc: '母婴健康专委会会员申请表',
+				title: '母婴健康专委会会员申请表',
+				fail:function (e) {
+					console.log(e);
+				}
+			}
+			shareLoad(data)
 		}
 	}
 }
 </script>
 
 <style lang="scss" scoped>
-/* body {
-	background-color: #888888;
-	height: 100%;
-}
-.content {
-	width: 70%;
-	font-size: 15px;
-	margin: 300px auto;
-	background-color: #fff;
-	padding: 20px;
-	text-align: center;
-	border-radius: 10px;
-}
-.title {
-	font-weight: bold;
-	margin-bottom: 15px;
-}
-.explain {
-	font-size: 12px;
-	color: #4c4c4c;
-}
-.list {
-	margin-top: 30px;
-	width: 100%;
-	display: flex;
-	justify-content: space-between;
-}
-.button {
-	background-color: #006eeb;
-	width: 90%;
-	margin: 5px auto;
-	margin-top: 20px;
-	color: #fff;
-	border-radius: 5px;
-	padding: 5px;
-} */
-
+	page {
+		height: 100%;
+	}
 .alertBox {
 	background-color: #fff;
 	width: 80%;
-	margin: 280rpx auto;
+	margin: auto auto;
 	border-radius: 30rpx;
 	padding-bottom: 40rpx;
+	position: relative;
+	top: 100rpx;
 	.titleImg {
 		width: 100%;
-		z-index: -1;
+		z-index: 99;
+		position: absolute;
+		top: 0;
+	}
+	.logo {
+		width: 130rpx;
+		height: 130rpx;
+		position: absolute;
+		top: 100rpx;
+		left: calc(50% - 60rpx);
+	}
+	.hed {
+		height: 230rpx;
 	}
 	.title {
 		text-align: center;
@@ -153,8 +151,7 @@ export default {
 		}
 	}
 	.pushtyle {
-		background: #006eeb;
-		// box-shadow: 0px 16rpx 16rpx 0px rgba(215, 39, 43, 0.5);
+		background-color: #3b66f5;
 		border-radius: 10rpx;
 		color: #ffffff;
 		font-size: 28rpx;
@@ -165,4 +162,13 @@ export default {
 		margin-top: 40rpx;
 	}
 }
+.content {
+	// background-color: ;
+	position: relative;
+	top: 150rpx;
+	padding: 0 10%;
+	font-size: 28rpx;
+	color: #303133;
+	line-height: 45rpx;
+}
 </style>

+ 434 - 0
pages/apply/information.vue

@@ -0,0 +1,434 @@
+<template>
+	<view class="">
+		<view class="information">
+			<view class="list">
+				<view class="lable">{{isType?'姓名':'企业单位'}}:</view>
+				<view class="input">
+					<input type="text" v-model="list.name" :placeholder="isType?'请输入姓名':'请输入企业单位'" />
+				</view>
+			</view>
+			<view class="list">
+				<view class="lable">{{isType?'身份证号':'企业统一代码'}}:</view>
+				<view class="input">
+					<input type="text" v-model="list.id" :placeholder="isType?'请输入身份证号':'请输入企业统一代码'" />
+				</view>
+			</view>
+			<view class="list">
+				<view class="lable">联系方式:</view>
+				<view class="input">
+					<input type="text" v-model="list.phone" placeholder="请输入联系方式" />
+				</view>
+			</view>
+			<view class="list">
+				<view class="lable" style="">所在地区:</view>
+				<view class="input" style="width: calc(100% - 240rpx);padding: 20rpx;">
+					<pickerAddress class="pickerAddress" :class="{pickerColor: !location}" @change="onCityClick">
+						{{location||'请选择地址'}}
+					</pickerAddress>
+				</view>
+				<view><img src="@/static/img/jt.png" v-show="!location"></view>
+			</view>
+			<view class="list">
+				<view class="lable">详细地址:</view>
+				<view class="input">
+					<input type="text" v-model="list.address" placeholder="请输入详细地址" />
+				</view>
+			</view>
+			<view class="list">
+				<view class="lable">{{isType?'职业':'主营领域'}}:</view>
+				<view class="input">
+					<input type="text" v-model="list.occupation" :placeholder="isType?'请输入职业':'请输入主营领域'" />
+				</view>
+			</view>
+			<view class="list">
+				<view class="lable">{{isType?'职业年限':'公司年限'}}:</view>
+				<view class="input">
+					<input type="text" v-model="list.careerYears" :placeholder="isType?'请输入职业年限':'请输入公司年限'" />
+				</view>
+			</view>
+			<view class="list">
+				<view class="lable">保荐人:</view>
+				<view class="input">
+					<input type="text" v-model="list.sponsor" placeholder="请输入保荐人" />
+				</view>
+			</view>
+		</view>
+		<view class="img">
+			<p>{{isType?'半身照':'品牌logo'}}:</p>
+			<view class="photo" @click='pic'>
+				<img :src="list.img" v-if="list.img" />
+				<img src="@/static/img/k.png" v-else>
+			</view>
+		</view>
+		<view class="button" @click="eject">
+			提交申请
+		</view>
+		<view class="gradeList" v-if="isEject">
+			<view class="title">
+				选择会员
+			</view>
+			<view class="grade" v-for="( g,index ) in gradeList"  @click="chooseGradeList(g,index)">
+				<view style="width: 230rpx;">{{ g.name }}</view>
+				<view class="right">
+					{{ g.price == 0 ? '': g.price }}
+					<view class="border">
+						<view v-if="chooseGrade == index" class="xzTip"></view>
+					</view>
+				</view>
+			</view>
+			<view class="gradeButton" @click="type == 1?submit1():submit2()">
+				确定提交
+			</view>
+		</view>
+		<view class="bg" v-if="isEject" @click="isEject = false"></view>
+	</view>
+</template>
+
+<script>
+	import {
+		apply,
+		getPrice,
+		uploads
+	} from '../../api/apply.js'
+	import {
+		getUserInfo
+	} from '../../api/login.js'
+	import {
+		mapMutations,
+		mapState
+	} from 'vuex';
+	import {
+		saveUrl,
+		interceptor
+	} from '@/utils/loginUtils.js';
+	import pickerAddress from '@/components/wangding-pickerAddress/wangding-pickerAddress.vue';
+	import weixinObj from '@/plugin/jweixin-module/index.js';
+	export default {
+		components: {
+			pickerAddress
+		},
+		data() {
+			return {
+				list: {
+					name: '', // 姓名/企业单位
+					id: '', // 身份证号/企业统一代码
+					phone: '', // 联系方式
+					location: '', // 所在地区
+					address: '', // 详细地址
+					occupation: '', // 职业/主营领域
+					careerYears: '', // 职业年限/公司年限
+					sponsor: '', // 保荐人
+					img: '', // 半身照/品牌logo
+					pay_type: 'weixin', //weixin:微信支付,yue:余额支付
+					grade: '' // 等级
+				},
+				province: '', // 省
+				city: '', // 市
+				district: '', // 区
+				type: '', // 1代表个人会员2代表企业会员
+				isEject: false, //会员价格弹窗
+				gradeList: [],
+				chooseGrade: 0,
+				money: 0.0, //订单金额
+				// // #ifdef H5
+				// froms: '', //保存h5中数据来源对象
+				// // #endif
+				// orderKey: '',
+				// orderId: '', //保存订单id
+				payLoding: false, //判断是否在支付中
+			}
+		},
+		computed: {
+			// #ifdef H5
+			...mapState(['weichatObj']),
+			// #endif
+			isType() {
+				return this.type == 1
+			},
+			// 所在地区
+			location() {
+				return this.province + this.city + this.district
+			},
+			...mapState('user', ['hasLogin'])
+		},
+		mounted() {
+			this.price()
+		},
+		watch: {
+			location() {
+				this.list.location = this.location
+			}
+		},
+		onLoad(options) {
+			this.type = options.type;
+			getUserInfo()
+		},
+		methods: {
+			...mapMutations('user', ['setInformation']),
+			// 选择会员价格
+			chooseGradeList(data, index) {
+				this.chooseGrade = index
+				this.list.grade = data.grade
+				this.money = data.price
+				console.log(this.list)
+			},
+			// 会员价格
+			price() {
+				getPrice({}, this.type).then(res => {
+					this.gradeList = res.data
+					this.list.grade = res.data[0].grade
+					console.log(this.list)
+				})
+			},
+			//会员价格选择
+			eject() {
+				this.isEject = true
+			},
+			// 个人申请提交
+			submit1() {
+				console.log('1')
+				const obj = this;
+				if (obj.payLoding) {
+					return;
+				}
+				obj.payLoding = true;
+				apply(obj.list, obj.type).then(res => {
+					let da = res.data.result.jsConfig;
+					let data = {
+						timestamp: da.timestamp,
+						nonceStr: da.nonceStr,
+						package: da.package,
+						signType: da.signType,
+						paySign: da.paySign,
+						success: function(res) {
+							console.log(res)
+							obj.paySuccessToP();
+							obj.payLoding = false;
+						},
+						fail: () => {
+							obj.payLoding = false;
+						}
+					};
+					weixinObj.chooseWXPay(data);
+				}).catch(res => {
+					obj.payLoding = false;
+					console.log(res)
+				})
+			},
+			//企业申请
+			submit2() {
+				const obj = this;
+				console.log('2')
+				apply(obj.list, obj.type).then(res => {
+					console.log(res)
+					obj.paySuccessTo();
+				}).catch(res => {
+					console.log(res)
+				})
+			},
+			// 上传图片
+			pic() {
+				console.log(this.hasLogin, '当前状态');
+				if (this.hasLogin) {
+					uploads().then(res => {
+						console.log(res, '返回图片');
+						this.list.img = res[0].url
+					})
+				} else {
+					uni.showModal({
+						title: "登陆",
+						content: '您未登录!是否马上登录?',
+						success: (e) => {
+							// 判断是否点击确认按钮
+							if (e.confirm) {
+								// 保存当前页面地址
+								saveUrl()
+								// 跳转页面
+								interceptor()
+							}
+						}
+					})
+				}
+			},
+			// 选中城市切换
+			onCityClick({ data }) {
+				this.province = data[0] + '/';
+				this.city = data[1] + '/';
+				this.district = data[2];
+			},
+			//提交申请成功
+			paySuccessTo() {
+				const that = this
+				uni.showToast({
+					title: '申请成功,请等待三个工作日审核',
+					duration: 2000,
+					position: 'top'
+				});
+				this.isEject = !this.isEject
+			},
+			// 个人申请提交申请成功
+			paySuccessToP() {
+				this.paySuccessTo()
+				setTimeout(() => {
+					uni.navigateTo({
+						url: '/pages/apply/verification'
+					})
+				},500)
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	page {
+		height: 100%;
+	}
+
+	body {
+		background-color: #f3f3f3;
+	}
+
+	.information {
+		background-color: #fff;
+		margin: 0 10rpx;
+		padding: 0 40rpx;
+		border-radius: 20rpx 20rpx 0 0;
+		font-size: 30rpx;
+	}
+
+	.list {
+		display: flex;
+		border-bottom: solid 1rpx #f3f3f3;
+
+		.lable {
+			padding: 20rpx;
+			width: 270rpx;
+		}
+
+		img {
+			padding-top: 26rpx;
+			width: 0rpx;
+			float: right;
+		}
+
+		.input {
+			input {
+				border: 0;
+				width: calc(100% - 20rpx);
+				font-size: 30rpx;
+				padding: 20rpx;
+			}
+		}
+	}
+
+	.img {
+		font-size: 30rpx;
+		background-color: #fff;
+		border-radius: 0 0 20rpx 20rpx;
+		height: 340rpx;
+		position: relative;
+		margin: 0 10rpx;
+		padding: 0 40rpx;
+
+		p {
+			padding: 20rpx;
+		}
+
+		img {
+			width: 160rpx;
+		}
+	}
+
+	.photo {
+		width: 160rpx;
+		height: 160rpx;
+		margin: auto auto;
+	}
+
+	.button {
+		position: fixed;
+		bottom: 0;
+		left: 0;
+		width: 100%;
+		text-align: center;
+		color: #fff;
+		background-color: #3b66f5;
+		font-size: 30rpx;
+		height: 100rpx;
+		line-height: 100rpx;
+	}
+
+	.pickerAddress {}
+
+	.pickerColor {
+		color: #808080;
+	}
+
+	.gradeList {
+		padding: 40rpx;
+		width: 600rpx;
+		left: calc(50% - 300rpx);
+		position: absolute;
+		top: 30%;
+		border-radius: 20rpx;
+		z-index: 99;
+		background-color: #fff;
+
+		.title {
+			text-align: center;
+			font-size: 36rpx;
+			font-weight: bold;
+			color: #333333;
+		}
+
+		.grade {
+			text-align: center;
+			display: flex;
+			justify-content: space-between;
+			padding: 40rpx 20rpx;
+		}
+
+		.right {
+			display: flex;
+			margin: auto 0;
+		}
+
+		.border {
+			margin: auto 15rpx;
+			width: 20rpx;
+			height: 20rpx;
+			border-radius: 50%;
+			border: solid 1rpx #3b66f5;
+
+			.xzTip {
+				width: 12rpx;
+				height: 12rpx;
+				margin-top: 2rpx;
+				margin-left: 2rpx;
+				border-radius: 50%;
+				background-color: #3b66f5;
+			}
+		}
+	}
+
+	.bg {
+		position: absolute;
+		top: 0;
+		left: 0;
+		background-color: rgba(0, 0, 0, 0.5);
+		width: 100%;
+		height: 100%;
+		z-index: 98;
+	}
+
+	.gradeButton {
+		padding: 10rpx;
+		background-color: #3b66f5;
+		color: #fff;
+		width: 80%;
+		margin: 0 auto;
+		border-radius: 10rpx;
+		font-size: 32rpx;
+		text-align: center;
+	}
+</style>

+ 94 - 0
pages/apply/qrcode.vue

@@ -0,0 +1,94 @@
+<template>
+	<view class="qrcode">
+		<view class="name">
+			<image :src="avatar" mode="" class="name-img"></image>
+			<view class="">
+				{{ name }}
+			</view>
+		</view>
+		<view class="ma">
+			<div class="qrCode" ref="qrCodeDiv"></div>
+			<view class="id">
+				<!-- {{ id }} -->
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+import QRCode from 'qrcodejs2';
+	export default {
+		onLoad(options) {
+			this.id = options.id
+			console.log(this.id)
+			this.$nextTick(function () {
+			    this.bindQRCode();
+			})
+		},
+		mounted() {
+			const data = this.$store.state.user.userInfo
+			this.avatar = data.avatar
+			this.name = data.nickname || data.real_name
+			console.log(this.avatar);
+			console.log(this.name);
+		},
+		data() {
+			return {
+				id: '',
+				avatar: '',
+				name: '',
+			}
+		},
+		methods: {
+			bindQRCode() {
+				new QRCode(this.$refs.qrCodeDiv, {
+					render : "canvas",
+				    text: this.id,
+				    width: 170,
+				    height: 170,
+				    colorDark: "#333333", //二维码颜色
+				    colorLight: "#ffffff", //二维码背景色
+				    correctLevel: QRCode.CorrectLevel.L//容错率,L/M/H
+				})
+			},
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	page {
+		background-color: #fff;
+		height: 100%;
+	}
+	.qrcode {
+			text-align: center;
+		.name {
+			margin: 100rpx;
+			image {
+				width: 120rpx;
+				height: 120rpx;
+				border-radius: 50%;
+				border: solid 1rpx #eaeaea;
+			}
+		}
+		.ma {
+			margin: 0 auto;
+			padding: 50rpx;
+			width: 450rpx;
+			height: 450rpx;
+			border: solid 1rpx #3b66f5;
+			.name-img {
+				width: 300rpx;
+				height: 300rpx;
+			}
+			
+			.id {
+				font-size: 30rpx;
+				margin: 20rpx 0;
+			}
+		}
+		.about {
+			margin: 30rpx;
+		}
+	}
+</style>

+ 11 - 5
pages/apply/query.vue

@@ -1,7 +1,7 @@
 <template>
 	<view id="myApp">
 		<view class="header">
-			<img src="@/static/img/index-bg.png" >
+			<img src="@/static/img/apply.png" >
 		</view>
 		<view class="information" v-if="type == 1">
 			<form name="myform">
@@ -40,6 +40,7 @@
 
 <script>
 import { query } from '../../api/apply.js'
+import { mapMutations } from 'vuex';
 	export default {
 		data() {
 			return {
@@ -52,10 +53,15 @@ import { query } from '../../api/apply.js'
 			this.type = options.type
 		},
 		methods: {
+			...mapMutations('user', ['setInformation']),
 			submit() {
-				const data = this.type ==1 ? { name: this.name, idcard: this.idcard }: { name: this.name }
-				query(data,this.type).then(res => {
-					console.log(res)
+				const obj = this
+				const data = obj.type == 1 ? { name: this.name, idcard: this.idcard }: { name: this.name }
+				query(data,obj.type).then(res => {
+					obj.setInformation(res.data.data)
+					uni.navigateTo({
+						url: '/pages/apply/success?type='+this.type
+					})
 				}).catch(res => {
 					console.log(res)
 				})
@@ -64,7 +70,7 @@ import { query } from '../../api/apply.js'
 	}
 </script>
 
-<style>
+<style lang="scss" scoped>
 body {
 	margin: 0;
 	background-color: #f3f3f3;

+ 152 - 75
pages/apply/success.vue

@@ -1,96 +1,173 @@
 <template>
 <view class="success">
-	<img src="@/static/img/su2.jpg" v-if="type == 1" ref="img">
-	<img src="@/static/img/su.jpg" v-else>
-	<text class="name" :style="{top: -height*1.15+'rpx'}">{{ list.name }}</text>
-	<text class="id" :style="{top: -height*1.92+'rpx'}">{{ list.id }}</text>
-	<text class="time" :style="{top: -height*0.55+'rpx'}">{{ getTime(list.valid_time) }}</text>
+	<canvas canvas-id="firstCanvas" id="firstCanvas" :style="{width: width+'px',height: height+'px'}" v-if="type ==1">
+	</canvas >
+	<swiper class="sw" :indicator-dots="true" :autoplay="false" :interval="4000" :duration="1000">
+		<swiper-item  class="swl" v-for="i in this.list.imgs">
+			<view class="sImgList" @click="previewImg(i)">
+				<image :src="i" class="sImg" mode="aspectFit"></image>
+			</view>
+		</swiper-item>
+	</swiper>
 </view>
 </template>
 
 <script>
-	export default {
-		mounted() {
-			this.height = this.$refs.img.height
+export default {
+	onReady: function (e) {
+		this.getWidth()
+		// 获取信息
+		this.list = this.$store.state.user.information
+		if(this.type == 1) {
+			this.huatu()
+		}else {
+			console.log(this.list.imgs)
+		}
+		
+	},
+	computed: {
+		// 时间戳转换
+		time() {
+			return this.getTime(this.list.valid_time)
+		},
+		// 证书高度
+		height() {
+			return this.width*3/2
 		},
-		data() {
-			return {
-				height: '',
-				type: 1,
-				list: {
-					id: "9",
+		// 字体大小
+		font() {
+			const size = Math.ceil((this.width-375)/20+15)
+			console.log(size)
+			return size +'rpx 黑体'
+		},
+	},
+	data() {
+		return {
+			img1: require('@/static/img/s1.jpg'),
+			img2: require('@/static/img/su2.jpg'),
+			width: '',
+			type: 1,
+			list: {
+				id: "9",
+				type: "2",
+				name: "京",
+				idcard: "怀疑自己",
+				phone: "快递积极",
+				province: "安徽省",
+				city: "铜陵市",
+				area: "郊区",
+				detail_address: "古茗",
+				job: "李静",
+				job_year: "1",
+				uid: "33776",
+				saver: "刺激感了",
+				logo: "/Uploads/Picture/2021-11-17/6194a421bb357.jpg",
+				add_time: "1637131806",
+				status: "1",
+				paid: "1",
+				valid_time: "1668673114",
+				check_time: "1637137114",
+				pay_time: "1637131815",
+				pay_money: "0.01",
+				order_id: "20211117101575758703",
+				grade: "1",
+				grade_info: {
+					id: "3",
 					type: "2",
-					name: "京",
-					idcard: "怀疑自己",
-					phone: "快递积极",
-					province: "安徽省",
-					city: "铜陵市",
-					area: "郊区",
-					detail_address: "古茗",
-					job: "李静",
-					job_year: "1",
-					uid: "33776",
-					saver: "刺激感了",
-					logo: "/Uploads/Picture/2021-11-17/6194a421bb357.jpg",
-					add_time: "1637131806",
-					status: "1",
-					paid: "1",
-					valid_time: "1668673114",
-					check_time: "1637137114",
-					pay_time: "1637131815",
-					pay_money: "0.01",
-					order_id: "20211117101575758703",
+					year: "3",
+					name: "3年企业会员",
 					grade: "1",
-					grade_info: {
-						id: "3",
-						type: "2",
-						year: "3",
-						name: "3年企业会员",
-						grade: "1",
-						price: "0.01"
-					}
+					price: "0.01"
 				}
 			}
+		}
+	},
+	onLoad(options) {
+		// 企业或个人
+		this.type = options.type
+	},
+	methods: {
+		// 查看图片
+		previewImg(current) {
+			console.log(current);
+			uni.previewImage({
+				current,
+				urls: this.list.imgs
+			})
+		},
+		// 时间戳转换成时间
+		getTime(time) {
+			const num =13 - (time+'').length;
+			let l = 1;//倍数
+			for (let i = 0; i < num; i++) {
+				l+='0';
+			}
+			// 重新解析为数字
+			l = parseInt(l)
+			const date = new Date(parseInt(time) * l);
+			const year = date.getFullYear();
+			const mon = date.getMonth() + 1;
+			const day = date.getDate();
+			const hours = date.getHours();
+			const minu = date.getMinutes();
+			const sec = date.getSeconds();
+			return year + '-' + mon + '-' + day 
+			// + ' ' + hours + ':' + minu + ':' + sec;
 		},
-		methods: {
-			//时间戳转换成时间
-			getTime(time) {
-				const num =13 - (time+'').length;
-				let l = 1;//倍数
-				for (let i = 0; i < num; i++) {
-					l+='0';
-				}
-				// 重新解析为数字
-				l = parseInt(l)
-				const date = new Date(parseInt(time) * l);
-				const year = date.getFullYear();
-				const mon = date.getMonth() + 1;
-				const day = date.getDate();
-				const hours = date.getHours();
-				const minu = date.getMinutes();
-				const sec = date.getSeconds();
-				return year + '-' + mon + '-' + day 
-				// + ' ' + hours + ':' + minu + ':' + sec;
+		// 获取屏幕宽度
+		getWidth() {
+			this.width = (document.body.clientWidth || document.documentElement.clientWidth);
+		},
+		huatu() {
+			var context = uni.createCanvasContext('firstCanvas')
+			context.font = this.font;
+			// 设置颜色
+			context.fillStyle = "#000";
+			const width = this.width
+			const height = this.height
+			// 绘制文字(参数:要写的字,x坐标,y坐标)
+			context.drawImage(this.img1 ,0 ,0,width,height)
+			// 企业名称
+			if(this.list.unit != null) {
+				context.fillText(this.list.unit, width/3.2, height/2.15);
 			}
+			// 个人会员姓名
+			if(this.list.name != null) {
+				context.fillText(this.list.name, width/3.2, height/2.15);
+			}
+			// 会员编号
+			if(this.list.id != null) {
+				context.fillText(this.list.id, width/1.32, height/13.8);
+			}
+			// 有效日期
+			if(this.list.valid_time != null) {
+				context.fillText( this.time, width/3.6, height/1.31);
+			}
+			context.stroke()
+			context.draw()
 		}
 	}
+}
 </script>
 
-<style>
-img {
-	width: 100%;
-	height: 507px;
+<style lang="scss" scoped>
+page {
+	height: 100%;
 }
-.name {
-	position: relative;
-	left: 35%;
+#firstCanvas {
+	margin: auto auto;
 }
-.id {
-	position: relative;
-	left: 70%;
-}
-.time {
-	position: relative;
-	left: 25%;
+.sw {
+	min-height: 500px;
+	margin: auto auto;
+	.swl {
+	margin: auto auto;
+	}
 }
+	.sImgList {
+		.sImg {
+			width: 100%;
+			height: 500px;
+		}
+	}
 </style>

+ 256 - 0
pages/apply/verification.vue

@@ -0,0 +1,256 @@
+<template>
+	<view class="verification">
+		<view :isBack="true" titleTintColor="#fff" search class='headerNav'>
+		    <text></text>
+		    <image class="uni_btnImage" src="../../static/img/cm.png" @click="scanCode"></image>
+		</view>
+		<view class="">
+				<view class="letter" v-for="l in list">
+					<view class="header">
+						<view class="left tico">
+							订单号: {{ l.id }}
+						</view>
+						<view class="right">
+							待核销
+						</view>
+					</view>
+					<view class="middle">
+						<image src="../../static/img/verification.png" mode=""></image>
+						<view class="inf">
+							<text class="name"><b>{{ l.ticket_name }}</b></text><br>
+							<text class="time tico">{{ getTime(l.add_time) }}</text>
+						</view>
+					</view>
+					<view class="footer">
+						<view class="about tico">
+							当前已核销{{ l.num }}次,还剩{{ l.all_num - l.num }}次
+						</view>
+						<view class="button" @click="navTo(l.ticket_code)">
+							出示核销
+						</view>
+					</view>
+				</view>
+				<view class="jz">
+					-------{{ loadingType=='loadmore'?'加载中':'加载完成'}}-------
+				</view>
+		</view>
+	</view>
+</template>
+
+<script>
+import weichatObj from "@/plugin/jweixin-module/index.js";
+import { sanCode } from '../../utils/wxAuthorized.js'
+import { getTicket,check } from '../../api/apply.js'
+// import { mapState } from 'vuex';
+	export default {
+		data() {
+			return {
+				page: 1,
+				limit: 10,
+				loadingType: 'loadmore',
+				list: [],
+			}
+		},
+		mounted() {
+			this.init()
+		},
+		methods: {
+			// 初始化数据
+			init() {
+				const that = this// 获取项目对象
+				if (that.loadingType === 'loading') {
+					//防止重复加载
+					return;
+				}
+				if (that.loadingType === 'nomore') {
+					//防止重复加载
+					return;
+				}
+				// 修改当前对象状态为加载中
+				that.loadingType = 'loading';
+				const data = {page: this.page,limit: this.limit}
+				console.log(data);
+				getTicket(data)
+				.then(e => {
+					const data = e.data.list
+					that.list = data
+					that.page++;
+					if (that.limit == data.length) {
+						//判断是否还有数据, 有改为 more, 没有改为noMore
+						that.loadingType = 'loadmore';
+						return;
+					} else {
+						//判断是否还有数据, 有改为 more, 没有改为noMore
+						that.loadingType = 'nomore';
+					}
+				}).catch(e => {
+					that.loadingType = 'loadmore';
+					console.log(e);
+				});
+			},// 页面下拉到底部加载
+			onReachBottom() {
+				this.ticketList()
+				console.log("dddd")
+			},
+			ticketList() {
+				const that = this// 获取项目对象
+				if (that.loadingType === 'loading') {
+					//防止重复加载
+					return;
+				}
+				if (that.loadingType === 'nomore') {
+					//防止重复加载
+					return;
+				}
+				// 修改当前对象状态为加载中
+				that.loadingType = 'loading';
+				const data = {page: this.page+1,limit: this.limit}
+				console.log(data);
+				getTicket(data)
+				.then(e => {
+					const data = e.data.list;
+					that.list = data
+					that.page++;
+					if (that.limit == data.length) {
+						//判断是否还有数据, 有改为 more, 没有改为noMore
+						that.loadingType = 'loadmore';
+						return;
+					} else {
+						//判断是否还有数据, 有改为 more, 没有改为noMore
+						that.loadingType = 'nomore';
+					}
+				}).catch(e => {
+					that.loadingType = 'loadmore';
+					console.log(e);
+				});
+			},
+			navTo(id) {
+				uni.navigateTo({
+					url: '/pages/apply/qrcode?id='+id
+				})
+			},
+			// 扫一扫
+			scanCode() {
+				console.log("===");
+				// const weichatObj = this.$store.state.weichatObj
+				console.log(weichatObj)
+				weichatObj.scanQRCode({
+					needResult: 1, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,
+					scanType: ['qrCode', 'barCode'], // 可以指定扫二维码还是一维码,默认二者都有
+					success: function(res) {
+						console.log(res.resultStr);
+						// obj.orderVerific(res.resultStr); // 当needResult 为 1 时,扫码返回的结果
+						check({code: res.resultStr}).then(res => {
+							console.log(res);
+							this.scanCodeSuccessTo()
+						})
+					}
+				});
+			},
+			// 核销成功
+			scanCodeSuccessTo() {
+				const that = this
+				uni.showToast({
+					title: '核销成功',
+					duration: 2000,
+					position: 'top'
+				});
+			},
+			// 时间戳转换成时间
+			getTime(time) {
+				const num =13 - (time+'').length;
+				let l = 1;//倍数
+				for (let i = 0; i < num; i++) {
+					l+='0';
+				}
+				// 重新解析为数字
+				l = parseInt(l)
+				const date = new Date(parseInt(time) * l);
+				const year = date.getFullYear();
+				const mon = date.getMonth() + 1;
+				const day = date.getDate();
+				const hours = date.getHours();
+				const minu = date.getMinutes();
+				const sec = date.getSeconds();
+				return year + '-' + mon + '-' + day + ' ' + hours + ':' + minu + ':' + sec;
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.tico {
+		color: #999;
+	}
+	.nav {
+		display: flex;
+		justify-content: space-around;
+		background-color: #fff;
+		.isclick {
+			color: #3b66f5;
+			border-bottom: solid 5rpx #3b66f5;
+		}
+		.item {
+			padding: 20rpx;
+		}
+	}
+	.letter {
+		margin: 30rpx;
+		padding: 20rpx;
+		background-color: #fff;
+		border-radius: 10rpx;
+		box-shadow:2rpx 2rpx 20rpx  #dedede;
+		.header {
+			display: flex;
+			justify-content: space-between;
+			.left {
+				color: #999;
+			}
+			.right {
+				color: red;
+			}
+		}
+		.middle {
+			display: flex;
+			margin: 20rpx 0;
+			image {
+				width: 80rpx;
+				height: 80rpx;
+				margin: auto 0;
+			}
+			.inf {
+				margin: auto 20rpx;
+				text {
+					padding: 20rpx 0;
+				}
+				.name {
+					font-size: 30rpx;
+				}
+			}
+		}
+		.footer {
+			display: flex;
+			justify-content: space-between;
+			.button {
+				background-color: #3b66f5;
+				color: #fff;
+				padding: 6rpx 20rpx;
+				border-radius: 50rpx;
+			}
+		}
+	}
+	.jz {
+		text-align: center;
+		color: #999;
+	}
+	.headerNav {
+		background-color: #fff;
+		padding: 20rpx;
+		display: flex;
+		justify-content: space-between;
+	}
+	.uni_btnImage {
+		width: 50rpx;
+		height: 50rpx;
+	}
+</style>

二进制
static/img/92x.png


二进制
static/img/alertbg2.png


二进制
static/img/alertbg3.png


二进制
static/img/apply.png


二进制
static/img/bp1.png


二进制
static/img/bp2.png


二进制
static/img/cm.png


二进制
static/img/logo.png


二进制
static/img/s1.jpg


二进制
static/img/userAllb.png


二进制
static/img/userb.png


二进制
static/img/verification.png


+ 0 - 1
store/index.js

@@ -8,7 +8,6 @@ const store = new Vuex.Store({
 		// baseURL:"http://yrh.liuniu946.com",//'http://eb.shuibo.net',//请求地址配置 
 		baseURL:'http://vote.deepbytop.com',//请求地址配置 
 		urlFile:'/index',//项目部署所在文件夹
-		userInfo: {}, //登录信息
 		loginInterceptor:false,//是否打开强制登录
 		// #ifdef H5 || MP-WEIXIN
 		weichatInfo:{},//保存微信注册信息

+ 6 - 0
store/model/user.js

@@ -8,11 +8,13 @@ let state = {
 		unpaid_count: 0 //待付款
 	}, //订单信息
 	hasLogin: false, //是否登录
+	information: {} //申请后获取信息
 }
 
 let mutations = {
 	// 登录
 	login(state) {
+		console.log('登录完成');
 		state.hasLogin = true;
 	},
 	// 退出登录
@@ -47,6 +49,10 @@ let mutations = {
 	// 保存订单信息
 	setOrderInfo(state, provider) {
 		state.orderInfo = provider;
+	},
+	// 申请获取信息
+	setInformation(state, provider) {
+		state.information = provider;
 	}
 
 }

二进制
unpackage/dist.zip


二进制
unpackage/dist/build/h5/h5.rar


+ 1 - 1
unpackage/dist/build/h5/index.html

@@ -1,2 +1,2 @@
 <!DOCTYPE html><html lang=zh-CN><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><title>我要投票</title><script>var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') || CSS.supports('top: constant(a)'))
-            document.write('<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' + (coverSupport ? ', viewport-fit=cover' : '') + '" />')</script><link rel=stylesheet href=/index/static/index.b0707a6a.css></head><body><noscript><strong>Please enable JavaScript to continue.</strong></noscript><div id=app></div><script src=/index/static/js/chunk-vendors.5fef9a39.js></script><script src=/index/static/js/index.575034fb.js></script></body></html>
+            document.write('<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' + (coverSupport ? ', viewport-fit=cover' : '') + '" />')</script><link rel=stylesheet href=/index/static/index.a5c69d49.css></head><body><noscript><strong>Please enable JavaScript to continue.</strong></noscript><div id=app></div><script src=/index/static/js/chunk-vendors.ced84562.js></script><script src=/index/static/js/index.9df1e1ab.js></script></body></html>

二进制
unpackage/dist/build/h5/static/img/img02.a56a0368.jpg


二进制
unpackage/dist/build/h5/static/img/img02.jpg


二进制
unpackage/dist/build/h5/static/img/img02.png


文件差异内容过多而无法显示
+ 0 - 0
unpackage/dist/build/h5/static/js/index.575034fb.js


文件差异内容过多而无法显示
+ 0 - 0
unpackage/dist/build/h5/static/js/pages-activity-index.aa05f91f.js


文件差异内容过多而无法显示
+ 0 - 0
unpackage/dist/build/h5/static/js/pages-activity-userInfo.867e66a7.js


文件差异内容过多而无法显示
+ 0 - 0
unpackage/dist/build/h5/static/js/pages-activity-userInfo~pages-addTp-company~pages-addTp-user~pages-index.71a855c7.js


文件差异内容过多而无法显示
+ 0 - 0
unpackage/dist/build/h5/static/js/pages-activity-userInfo~pages-addTp-company~pages-addTp-user~pages-index~pages-recharge-pay.66c91ae3.js


文件差异内容过多而无法显示
+ 0 - 0
unpackage/dist/build/h5/static/js/pages-addTp-company.0197a6e8.js


文件差异内容过多而无法显示
+ 0 - 0
unpackage/dist/build/h5/static/js/pages-addTp-company~pages-addTp-user.f358bee2.js


文件差异内容过多而无法显示
+ 0 - 0
unpackage/dist/build/h5/static/js/pages-addTp-company~pages-addTp-user~pages-recharge-pay.b58bec58.js


文件差异内容过多而无法显示
+ 0 - 0
unpackage/dist/build/h5/static/js/pages-addTp-user.019d6a86.js


文件差异内容过多而无法显示
+ 0 - 0
unpackage/dist/build/h5/static/js/pages-index.86e8d209.js


文件差异内容过多而无法显示
+ 0 - 0
unpackage/dist/build/h5/static/js/pages-public-forget.741dde1b.js


文件差异内容过多而无法显示
+ 0 - 0
unpackage/dist/build/h5/static/js/pages-public-login.af7772e9.js


文件差异内容过多而无法显示
+ 0 - 0
unpackage/dist/build/h5/static/js/pages-public-register.4cef4024.js


文件差异内容过多而无法显示
+ 0 - 0
unpackage/dist/build/h5/static/js/pages-public-wxLogin.d57e4c0c.js


文件差异内容过多而无法显示
+ 0 - 0
unpackage/dist/build/h5/static/js/pages-recharge-pay.e374285e.js


文件差异内容过多而无法显示
+ 0 - 0
unpackage/dist/build/h5/static/js/pages-redirect-redirect.8320eebf.js


+ 2 - 2
utils/newRequest.js

@@ -48,7 +48,7 @@ let service = {
 			// 请求前数据处理
 			requestData = service.request.success(data);
 			// #ifdef H5
-			
+			console.log(process)
 			if(process.env.NODE_ENV === 'development'){
 				url= requestData.url;
 			    console.log('开发环境')
@@ -84,7 +84,7 @@ let service = {
 		})
 	},
 	// 上传文件
-	upFilse: async function(data) {
+	 upFilse: async function(data) {
 		return await new Promise(function(resolve, reject) {
 			let requestData = ''; //保存处理完成后请求数据
 			let url = '' //保存请求地址

+ 26 - 0
utils/wxAuthorized.js

@@ -106,6 +106,7 @@ export async function weixindata(config) {
 				}) => {
 					try {
 						// 保存appId
+						console.log(data)
 						appId = data.appId
 						// 微信信息配置
 						weixinObj.config({
@@ -218,6 +219,31 @@ function shareFun(config) {
 
 	}
 }
+
+// 扫码
+export function sanCode(config) {
+	try {
+		weixindata().then(e => {
+			sanCodeapi().then(res => {
+				console.log(res);
+				return res
+			})
+			// wx.checkJsApi({
+			// // jsApiList: ['scanQRCode'], // 需要检测的JS接口列表,所有JS接口列表见附录2,
+			// 	success: function(res) {
+			// 		console.log('返回信息')
+			// 		console.log(res)
+			// 		return res
+			// 		// 以键值对的形式返回,可用的api值true,不可用为false
+			// 		// 如:{"checkResult":{"chooseImage":true},"errMsg":"checkJsApi:ok"}
+			// 	}
+			// });
+		})
+	}catch (e) {
+		console.log('报错', e)
+		return e
+	}
+}
 // 保存路由对象
 export function setRouter(route) {
 	return new Promise((ok, err) => {

二进制
uview-ui.rar


部分文件因为文件数量过多而无法显示