En route пре 2 година
родитељ
комит
29577b9c65
30 измењених фајлова са 672 додато и 1998 уклоњено
  1. 13 7
      .hbuilderx/launch.json
  2. 1 1
      manifest.json
  3. 0 30
      node_modules/_jweixin-module@1.6.0@jweixin-module/README.md
  4. 0 0
      node_modules/_jweixin-module@1.6.0@jweixin-module/lib/index.js
  5. 0 29
      node_modules/_jweixin-module@1.6.0@jweixin-module/package.json
  6. 0 22
      node_modules/_tki-qrcode@0.1.6@tki-qrcode/App.vue
  7. 0 114
      node_modules/_tki-qrcode@0.1.6@tki-qrcode/README.md
  8. 0 1206
      node_modules/_tki-qrcode@0.1.6@tki-qrcode/components/tki-qrcode/qrcode.js
  9. 0 205
      node_modules/_tki-qrcode@0.1.6@tki-qrcode/components/tki-qrcode/tki-qrcode.vue
  10. 0 11
      node_modules/_tki-qrcode@0.1.6@tki-qrcode/main.js
  11. 0 60
      node_modules/_tki-qrcode@0.1.6@tki-qrcode/manifest.json
  12. 0 29
      node_modules/_tki-qrcode@0.1.6@tki-qrcode/package.json
  13. 0 16
      node_modules/_tki-qrcode@0.1.6@tki-qrcode/pages.json
  14. 0 132
      node_modules/_tki-qrcode@0.1.6@tki-qrcode/pages/index/index.vue
  15. 0 2
      node_modules/_tki-qrcode@0.1.6@tki-qrcode/static/README.md
  16. 41 17
      node_modules/jweixin-module/package.json
  17. 41 17
      node_modules/tki-qrcode/package.json
  18. 90 3
      package-lock.json
  19. 198 0
      pages/bill/index-s.vue
  20. 288 97
      pages/bill/index.vue
  21. BIN
      static/image/background.png
  22. BIN
      static/image/logo.png
  23. BIN
      static/image/play.png
  24. BIN
      static/image/xcxqrcode.jpg
  25. BIN
      static/image/zt.png
  26. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/common/main.js.map
  27. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/common/runtime.js.map
  28. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/common/vendor.js.map
  29. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index.js.map
  30. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uview-ui/components/u-icon/u-icon.js.map

+ 13 - 7
.hbuilderx/launch.json

@@ -4,13 +4,19 @@
     "version" : "0.0",
     "configurations" : [
         {
-            "default" : {
-                "launchtype" : "local"
-            },
-            "mp-weixin" : {
-                "launchtype" : "local"
-            },
-            "type" : "uniCloud"
+        	"default" : 
+        	{
+        		"launchtype" : "local"
+        	},
+        	"h5" : 
+        	{
+        		"launchtype" : "local"
+        	},
+        	"mp-weixin" : 
+        	{
+        		"launchtype" : "local"
+        	},
+        	"type" : "uniCloud"
         },
         {
             "playground" : "standard",

+ 1 - 1
manifest.json

@@ -1,6 +1,6 @@
 {
     "name" : "saas_manager",
-    "appid" : "__UNI__5C2D7AA",
+    "appid" : "__UNI__A07943E",
     "description" : "",
     "versionName" : "1.0.0",
     "versionCode" : "100",

+ 0 - 30
node_modules/_jweixin-module@1.6.0@jweixin-module/README.md

@@ -1,30 +0,0 @@
-# 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@1.6.0@jweixin-module/lib/index.js


+ 0 - 29
node_modules/_jweixin-module@1.6.0@jweixin-module/package.json

@@ -1,29 +0,0 @@
-{
-  "name": "jweixin-module",
-  "version": "1.6.0",
-  "description": "微信JS-SDK",
-  "main": "lib/index.js",
-  "scripts": {},
-  "repository": {
-    "type": "git",
-    "url": "git+https://github.com/zhetengbiji/jweixin-module.git"
-  },
-  "keywords": [
-    "wxjssdk",
-    "weixin",
-    "jweixin",
-    "wechat",
-    "jssdk",
-    "wx"
-  ],
-  "author": "Shengqiang Guo",
-  "license": "ISC",
-  "bugs": {
-    "url": "https://github.com/zhetengbiji/jweixin-module/issues"
-  },
-  "homepage": "https://github.com/zhetengbiji/jweixin-module#readme",
-  "devDependencies": {},
-  "__npminstall_done": true,
-  "_from": "jweixin-module@1.6.0",
-  "_resolved": "https://registry.npmmirror.com/jweixin-module/-/jweixin-module-1.6.0.tgz"
-}

+ 0 - 22
node_modules/_tki-qrcode@0.1.6@tki-qrcode/App.vue

@@ -1,22 +0,0 @@
-<script>
-	export default {
-		onLaunch: function () {
-			// console.log('App Launch')
-		},
-		onShow: function () {
-			// console.log('App Show')
-		},
-		onHide: function () {
-			// console.log('App Hide')
-		}
-	}
-</script>
-
-<style>
-	/*每个页面公共css */
-
-	page,
-	view {
-		display: flex;/* uni-app默认使用flex布局。因为flex布局有利于跨更多平台,尤其是采用原生渲染的平台。如不了解flex布局,请参考http://www.w3.org/TR/css3-flexbox/。若不需要flex布局可删除本行*/
-	}
-</style>

+ 0 - 114
node_modules/_tki-qrcode@0.1.6@tki-qrcode/README.md

@@ -1,114 +0,0 @@
-# uni-app 二维码生成器
-### 作者:诗小柒
-
-1. H5、微信小程序、支付宝小程序、APP,其它平台的小程序没有测试
-2. 使用canvas生成  
-3. 可设置二维码背景色,前景色,角标色  
-4. 可设置二维码logo  
-
-## 重要的事情说3遍 重要的事情说3遍 重要的事情说3遍
-
-1. IOS、Android真机都可以正常生成二维码
-2. 使用的时候出现无法生成二维码或空白的请先github直接打包下载,问题依旧,请github上直接提出问题并配图
-3. 有问题请说明问题原因,这样我才好定位,否则我也无法解决
-4. 如果此插件有帮助到你请打5分或赞赏我,你的支持是我更新的动力
-
-+ 图片1 是微信小程序真机实测
-+ 图片2 是微信小程序模拟实测
-+ 图片3 是支付宝小程序模拟器实测
-+ 图片4 是安卓真机实测
-+ 图片5 H5
-
-## 开始使用
-NPM 
-```
-npm i tki-qrcode
-```
-GIT 
-```
-git clone https://github.com/q310550690/uni-app-qrcode
-```
-
-### 更新说明
-
-* 0.1.6 新增cid属性,支持同一个页面使用多个二维码组件
-* 0.1.5 新增showLoading、loadingText属性
-* 0.1.4 新增usingComponents属性,修复非自定义组件下 v-if 无法生成二维码的问题(非自定义组件下设置为false)
-* 0.1.3 新增unit属性
-* 0.1.2 适配新版uni-app编译器 感谢 "DCloud_UNI_Trust" (如果github上下载后使用新版HbuilderX1.7.1.20190320编译后无法启动请等待Dcloud更新即可)
-* 0.1.1 新增监听val值变化时自动生成二维码(onval)、新增组件初始化时自动生成二维码(loadMake) 属性,具体说明看文档说明
-* 0.1.0 常规更新
-* 0.0.9 修复小程序真机生成二维码错乱问题(其实这是小程序canvas的锅)
-* 0.0.8 修复官方 uni.canvasToTempFilePath 在有些平台返回字段不统一而导致的支付宝无法生成二维码的问题。
-* 0.0.7 常规修复
-* 0.0.6 新增角标色、二维码logo
-
-### 使用方法
-在 `script` 中引入组件
-``` javascript
-import tkiQrcode from "@/components/tki-qrcode/tki-qrcode.vue"
-export default {
-    components: {tkiQrcode}
-}
-```
-在 `template` 中使用
-``` javascript
-<view class="qrimg">
-    <tki-qrcode
-    ref="qrcode"
-    :cid="cid"
-    :val="val"
-    :size="size"
-    :unit="unit"
-    :background="background"
-    :foreground="foreground"
-    :pdground="pdground"
-    :icon="icon"
-    :iconSize="iconsize"
-    :lv="lv" 
-    :onval="onval"
-    :loadMake="loadMake"
-    :usingComponents="usingComponents"
-    :showLoading="showLoading"
-    :loadingText="loadingText"
-    @result="qrR" />
-</view>
-```
-### 属性
-
-|属性名|类型|默认值|可选值|说明|
-|:-|:-:|:--:|:--:|-:|
-|cid|String|tki-qrcode-canvas| |canvasId,页面存在多个二维码组件时需设置不同的ID|
-|size|Number|200| |生成的二维码大小|
-|unit|String|upx|px|大小单位尺寸|
-|show|Boolean|true| |默认使用组件中的image标签显示二维码|
-|val|String|二维码| |要生成的内容|
-|background|String|#000000| |二维码背景色|
-|foreground|String|#ffffff| |二维码前景色|
-|pdground|String|#ffffff| |二维码角标色|
-|icon|String| | |二维码图标URL(必须是本地图片,网络图需要先下载至本地)|
-|iconSize|Number|40<br/>注意此大小不会跟随二维码size 动态变化,设置时需注意大小,不要太大,以免无法识别| |二维码图标大小|
-|lv|Number|3(一般不用设置)| |容错级别|
-|onval|Boolean|false| |监听val值变化自动重新生成二维码|
-|loadMake|Boolean|false| |组件初始化完成后自动生成二维码,val需要有值|
-|usingComponents|Boolean|true| false |是否使用了自定义组件模式(主要是为了修复非自定义组件模式时 v-if 无法生成二维码的问题)|
-|showLoading|Boolean|true| false |是否显示loading|
-|loadingText|String|二维码生成中| |loading文字|
-
-### 方法
-|方法名|参数|默认值|说明|
-|:-|:-:|:--:|-:|
-|_makeCode()| | |生成二维码|
-|_clearCode()| | |清空二维码(清空二维码会触发result回调 返回值为空)|
-|_saveCode()| | |保存二维码到图库|
-
-### 事件
-|事件名|返回值|说明|
-|:-|:-:|-:|
-|result|生成的图片base64或图片临时地址|返回二维码路径 注:_clearCode()后返回空|
-
-
-### 感谢
-
-[uni-app](https://uniapp.dcloud.io/ "uni-app")
-[qrcode](https://github.com/aralejs/qrcode "qrcode")

+ 0 - 1206
node_modules/_tki-qrcode@0.1.6@tki-qrcode/components/tki-qrcode/qrcode.js

@@ -1,1206 +0,0 @@
-let QRCode = {};
-(function () {
-    /**
-     * 获取单个字符的utf8编码
-     * unicode BMP平面约65535个字符
-     * @param {num} code
-     * return {array}
-     */
-    function unicodeFormat8(code) {
-        // 1 byte
-        var c0, c1, c2;
-        if (code < 128) {
-            return [code];
-            // 2 bytes
-        } else if (code < 2048) {
-            c0 = 192 + (code >> 6);
-            c1 = 128 + (code & 63);
-            return [c0, c1];
-            // 3 bytes
-        } else {
-            c0 = 224 + (code >> 12);
-            c1 = 128 + (code >> 6 & 63);
-            c2 = 128 + (code & 63);
-            return [c0, c1, c2];
-        }
-    }
-    /**
-     * 获取字符串的utf8编码字节串
-     * @param {string} string
-     * @return {array}
-     */
-    function getUTF8Bytes(string) {
-        var utf8codes = [];
-        for (var i = 0; i < string.length; i++) {
-            var code = string.charCodeAt(i);
-            var utf8 = unicodeFormat8(code);
-            for (var j = 0; j < utf8.length; j++) {
-                utf8codes.push(utf8[j]);
-            }
-        }
-        return utf8codes;
-    }
-    /**
-     * 二维码算法实现
-     * @param {string} data              要编码的信息字符串
-     * @param {num} errorCorrectLevel 纠错等级
-     */
-    function QRCodeAlg(data, errorCorrectLevel) {
-        this.typeNumber = -1; //版本
-        this.errorCorrectLevel = errorCorrectLevel;
-        this.modules = null; //二维矩阵,存放最终结果
-        this.moduleCount = 0; //矩阵大小
-        this.dataCache = null; //数据缓存
-        this.rsBlocks = null; //版本数据信息
-        this.totalDataCount = -1; //可使用的数据量
-        this.data = data;
-        this.utf8bytes = getUTF8Bytes(data);
-        this.make();
-    }
-    QRCodeAlg.prototype = {
-        constructor: QRCodeAlg,
-        /**
-         * 获取二维码矩阵大小
-         * @return {num} 矩阵大小
-         */
-        getModuleCount: function () {
-            return this.moduleCount;
-        },
-        /**
-         * 编码
-         */
-        make: function () {
-            this.getRightType();
-            this.dataCache = this.createData();
-            this.createQrcode();
-        },
-        /**
-         * 设置二位矩阵功能图形
-         * @param  {bool} test 表示是否在寻找最好掩膜阶段
-         * @param  {num} maskPattern 掩膜的版本
-         */
-        makeImpl: function (maskPattern) {
-            this.moduleCount = this.typeNumber * 4 + 17;
-            this.modules = new Array(this.moduleCount);
-            for (var row = 0; row < this.moduleCount; row++) {
-                this.modules[row] = new Array(this.moduleCount);
-            }
-            this.setupPositionProbePattern(0, 0);
-            this.setupPositionProbePattern(this.moduleCount - 7, 0);
-            this.setupPositionProbePattern(0, this.moduleCount - 7);
-            this.setupPositionAdjustPattern();
-            this.setupTimingPattern();
-            this.setupTypeInfo(true, maskPattern);
-            if (this.typeNumber >= 7) {
-                this.setupTypeNumber(true);
-            }
-            this.mapData(this.dataCache, maskPattern);
-        },
-        /**
-         * 设置二维码的位置探测图形
-         * @param  {num} row 探测图形的中心横坐标
-         * @param  {num} col 探测图形的中心纵坐标
-         */
-        setupPositionProbePattern: function (row, col) {
-            for (var r = -1; r <= 7; r++) {
-                if (row + r <= -1 || this.moduleCount <= row + r) continue;
-                for (var c = -1; c <= 7; c++) {
-                    if (col + c <= -1 || this.moduleCount <= col + c) continue;
-                    if ((0 <= r && r <= 6 && (c == 0 || c == 6)) || (0 <= c && c <= 6 && (r == 0 || r == 6)) || (2 <= r && r <= 4 && 2 <= c && c <= 4)) {
-                        this.modules[row + r][col + c] = true;
-                    } else {
-                        this.modules[row + r][col + c] = false;
-                    }
-                }
-            }
-        },
-        /**
-         * 创建二维码
-         * @return {[type]} [description]
-         */
-        createQrcode: function () {
-            var minLostPoint = 0;
-            var pattern = 0;
-            var bestModules = null;
-            for (var i = 0; i < 8; i++) {
-                this.makeImpl(i);
-                var lostPoint = QRUtil.getLostPoint(this);
-                if (i == 0 || minLostPoint > lostPoint) {
-                    minLostPoint = lostPoint;
-                    pattern = i;
-                    bestModules = this.modules;
-                }
-            }
-            this.modules = bestModules;
-            this.setupTypeInfo(false, pattern);
-            if (this.typeNumber >= 7) {
-                this.setupTypeNumber(false);
-            }
-        },
-        /**
-         * 设置定位图形
-         * @return {[type]} [description]
-         */
-        setupTimingPattern: function () {
-            for (var r = 8; r < this.moduleCount - 8; r++) {
-                if (this.modules[r][6] != null) {
-                    continue;
-                }
-                this.modules[r][6] = (r % 2 == 0);
-                if (this.modules[6][r] != null) {
-                    continue;
-                }
-                this.modules[6][r] = (r % 2 == 0);
-            }
-        },
-        /**
-         * 设置矫正图形
-         * @return {[type]} [description]
-         */
-        setupPositionAdjustPattern: function () {
-            var pos = QRUtil.getPatternPosition(this.typeNumber);
-            for (var i = 0; i < pos.length; i++) {
-                for (var j = 0; j < pos.length; j++) {
-                    var row = pos[i];
-                    var col = pos[j];
-                    if (this.modules[row][col] != null) {
-                        continue;
-                    }
-                    for (var r = -2; r <= 2; r++) {
-                        for (var c = -2; c <= 2; c++) {
-                            if (r == -2 || r == 2 || c == -2 || c == 2 || (r == 0 && c == 0)) {
-                                this.modules[row + r][col + c] = true;
-                            } else {
-                                this.modules[row + r][col + c] = false;
-                            }
-                        }
-                    }
-                }
-            }
-        },
-        /**
-         * 设置版本信息(7以上版本才有)
-         * @param  {bool} test 是否处于判断最佳掩膜阶段
-         * @return {[type]}      [description]
-         */
-        setupTypeNumber: function (test) {
-            var bits = QRUtil.getBCHTypeNumber(this.typeNumber);
-            for (var i = 0; i < 18; i++) {
-                var mod = (!test && ((bits >> i) & 1) == 1);
-                this.modules[Math.floor(i / 3)][i % 3 + this.moduleCount - 8 - 3] = mod;
-                this.modules[i % 3 + this.moduleCount - 8 - 3][Math.floor(i / 3)] = mod;
-            }
-        },
-        /**
-         * 设置格式信息(纠错等级和掩膜版本)
-         * @param  {bool} test
-         * @param  {num} maskPattern 掩膜版本
-         * @return {}
-         */
-        setupTypeInfo: function (test, maskPattern) {
-            var data = (QRErrorCorrectLevel[this.errorCorrectLevel] << 3) | maskPattern;
-            var bits = QRUtil.getBCHTypeInfo(data);
-            // vertical
-            for (var i = 0; i < 15; i++) {
-                var mod = (!test && ((bits >> i) & 1) == 1);
-                if (i < 6) {
-                    this.modules[i][8] = mod;
-                } else if (i < 8) {
-                    this.modules[i + 1][8] = mod;
-                } else {
-                    this.modules[this.moduleCount - 15 + i][8] = mod;
-                }
-                // horizontal
-                var mod = (!test && ((bits >> i) & 1) == 1);
-                if (i < 8) {
-                    this.modules[8][this.moduleCount - i - 1] = mod;
-                } else if (i < 9) {
-                    this.modules[8][15 - i - 1 + 1] = mod;
-                } else {
-                    this.modules[8][15 - i - 1] = mod;
-                }
-            }
-            // fixed module
-            this.modules[this.moduleCount - 8][8] = (!test);
-        },
-        /**
-         * 数据编码
-         * @return {[type]} [description]
-         */
-        createData: function () {
-            var buffer = new QRBitBuffer();
-            var lengthBits = this.typeNumber > 9 ? 16 : 8;
-            buffer.put(4, 4); //添加模式
-            buffer.put(this.utf8bytes.length, lengthBits);
-            for (var i = 0, l = this.utf8bytes.length; i < l; i++) {
-                buffer.put(this.utf8bytes[i], 8);
-            }
-            if (buffer.length + 4 <= this.totalDataCount * 8) {
-                buffer.put(0, 4);
-            }
-            // padding
-            while (buffer.length % 8 != 0) {
-                buffer.putBit(false);
-            }
-            // padding
-            while (true) {
-                if (buffer.length >= this.totalDataCount * 8) {
-                    break;
-                }
-                buffer.put(QRCodeAlg.PAD0, 8);
-                if (buffer.length >= this.totalDataCount * 8) {
-                    break;
-                }
-                buffer.put(QRCodeAlg.PAD1, 8);
-            }
-            return this.createBytes(buffer);
-        },
-        /**
-         * 纠错码编码
-         * @param  {buffer} buffer 数据编码
-         * @return {[type]}
-         */
-        createBytes: function (buffer) {
-            var offset = 0;
-            var maxDcCount = 0;
-            var maxEcCount = 0;
-            var length = this.rsBlock.length / 3;
-            var rsBlocks = new Array();
-            for (var i = 0; i < length; i++) {
-                var count = this.rsBlock[i * 3 + 0];
-                var totalCount = this.rsBlock[i * 3 + 1];
-                var dataCount = this.rsBlock[i * 3 + 2];
-                for (var j = 0; j < count; j++) {
-                    rsBlocks.push([dataCount, totalCount]);
-                }
-            }
-            var dcdata = new Array(rsBlocks.length);
-            var ecdata = new Array(rsBlocks.length);
-            for (var r = 0; r < rsBlocks.length; r++) {
-                var dcCount = rsBlocks[r][0];
-                var ecCount = rsBlocks[r][1] - dcCount;
-                maxDcCount = Math.max(maxDcCount, dcCount);
-                maxEcCount = Math.max(maxEcCount, ecCount);
-                dcdata[r] = new Array(dcCount);
-                for (var i = 0; i < dcdata[r].length; i++) {
-                    dcdata[r][i] = 0xff & buffer.buffer[i + offset];
-                }
-                offset += dcCount;
-                var rsPoly = QRUtil.getErrorCorrectPolynomial(ecCount);
-                var rawPoly = new QRPolynomial(dcdata[r], rsPoly.getLength() - 1);
-                var modPoly = rawPoly.mod(rsPoly);
-                ecdata[r] = new Array(rsPoly.getLength() - 1);
-                for (var i = 0; i < ecdata[r].length; i++) {
-                    var modIndex = i + modPoly.getLength() - ecdata[r].length;
-                    ecdata[r][i] = (modIndex >= 0) ? modPoly.get(modIndex) : 0;
-                }
-            }
-            var data = new Array(this.totalDataCount);
-            var index = 0;
-            for (var i = 0; i < maxDcCount; i++) {
-                for (var r = 0; r < rsBlocks.length; r++) {
-                    if (i < dcdata[r].length) {
-                        data[index++] = dcdata[r][i];
-                    }
-                }
-            }
-            for (var i = 0; i < maxEcCount; i++) {
-                for (var r = 0; r < rsBlocks.length; r++) {
-                    if (i < ecdata[r].length) {
-                        data[index++] = ecdata[r][i];
-                    }
-                }
-            }
-            return data;
-
-        },
-        /**
-         * 布置模块,构建最终信息
-         * @param  {} data
-         * @param  {} maskPattern
-         * @return {}
-         */
-        mapData: function (data, maskPattern) {
-            var inc = -1;
-            var row = this.moduleCount - 1;
-            var bitIndex = 7;
-            var byteIndex = 0;
-            for (var col = this.moduleCount - 1; col > 0; col -= 2) {
-                if (col == 6) col--;
-                while (true) {
-                    for (var c = 0; c < 2; c++) {
-                        if (this.modules[row][col - c] == null) {
-                            var dark = false;
-                            if (byteIndex < data.length) {
-                                dark = (((data[byteIndex] >>> bitIndex) & 1) == 1);
-                            }
-                            var mask = QRUtil.getMask(maskPattern, row, col - c);
-                            if (mask) {
-                                dark = !dark;
-                            }
-                            this.modules[row][col - c] = dark;
-                            bitIndex--;
-                            if (bitIndex == -1) {
-                                byteIndex++;
-                                bitIndex = 7;
-                            }
-                        }
-                    }
-                    row += inc;
-                    if (row < 0 || this.moduleCount <= row) {
-                        row -= inc;
-                        inc = -inc;
-                        break;
-                    }
-                }
-            }
-        }
-    };
-    /**
-     * 填充字段
-     */
-    QRCodeAlg.PAD0 = 0xEC;
-    QRCodeAlg.PAD1 = 0x11;
-    //---------------------------------------------------------------------
-    // 纠错等级对应的编码
-    //---------------------------------------------------------------------
-    var QRErrorCorrectLevel = [1, 0, 3, 2];
-    //---------------------------------------------------------------------
-    // 掩膜版本
-    //---------------------------------------------------------------------
-    var QRMaskPattern = {
-        PATTERN000: 0,
-        PATTERN001: 1,
-        PATTERN010: 2,
-        PATTERN011: 3,
-        PATTERN100: 4,
-        PATTERN101: 5,
-        PATTERN110: 6,
-        PATTERN111: 7
-    };
-    //---------------------------------------------------------------------
-    // 工具类
-    //---------------------------------------------------------------------
-    var QRUtil = {
-        /*
-        每个版本矫正图形的位置
-         */
-        PATTERN_POSITION_TABLE: [
-            [],
-            [6, 18],
-            [6, 22],
-            [6, 26],
-            [6, 30],
-            [6, 34],
-            [6, 22, 38],
-            [6, 24, 42],
-            [6, 26, 46],
-            [6, 28, 50],
-            [6, 30, 54],
-            [6, 32, 58],
-            [6, 34, 62],
-            [6, 26, 46, 66],
-            [6, 26, 48, 70],
-            [6, 26, 50, 74],
-            [6, 30, 54, 78],
-            [6, 30, 56, 82],
-            [6, 30, 58, 86],
-            [6, 34, 62, 90],
-            [6, 28, 50, 72, 94],
-            [6, 26, 50, 74, 98],
-            [6, 30, 54, 78, 102],
-            [6, 28, 54, 80, 106],
-            [6, 32, 58, 84, 110],
-            [6, 30, 58, 86, 114],
-            [6, 34, 62, 90, 118],
-            [6, 26, 50, 74, 98, 122],
-            [6, 30, 54, 78, 102, 126],
-            [6, 26, 52, 78, 104, 130],
-            [6, 30, 56, 82, 108, 134],
-            [6, 34, 60, 86, 112, 138],
-            [6, 30, 58, 86, 114, 142],
-            [6, 34, 62, 90, 118, 146],
-            [6, 30, 54, 78, 102, 126, 150],
-            [6, 24, 50, 76, 102, 128, 154],
-            [6, 28, 54, 80, 106, 132, 158],
-            [6, 32, 58, 84, 110, 136, 162],
-            [6, 26, 54, 82, 110, 138, 166],
-            [6, 30, 58, 86, 114, 142, 170]
-        ],
-        G15: (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0),
-        G18: (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0),
-        G15_MASK: (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1),
-        /*
-        BCH编码格式信息
-         */
-        getBCHTypeInfo: function (data) {
-            var d = data << 10;
-            while (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G15) >= 0) {
-                d ^= (QRUtil.G15 << (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G15)));
-            }
-            return ((data << 10) | d) ^ QRUtil.G15_MASK;
-        },
-        /*
-        BCH编码版本信息
-         */
-        getBCHTypeNumber: function (data) {
-            var d = data << 12;
-            while (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G18) >= 0) {
-                d ^= (QRUtil.G18 << (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G18)));
-            }
-            return (data << 12) | d;
-        },
-        /*
-        获取BCH位信息
-         */
-        getBCHDigit: function (data) {
-            var digit = 0;
-            while (data != 0) {
-                digit++;
-                data >>>= 1;
-            }
-            return digit;
-        },
-        /*
-        获取版本对应的矫正图形位置
-         */
-        getPatternPosition: function (typeNumber) {
-            return QRUtil.PATTERN_POSITION_TABLE[typeNumber - 1];
-        },
-        /*
-        掩膜算法
-         */
-        getMask: function (maskPattern, i, j) {
-            switch (maskPattern) {
-                case QRMaskPattern.PATTERN000:
-                    return (i + j) % 2 == 0;
-                case QRMaskPattern.PATTERN001:
-                    return i % 2 == 0;
-                case QRMaskPattern.PATTERN010:
-                    return j % 3 == 0;
-                case QRMaskPattern.PATTERN011:
-                    return (i + j) % 3 == 0;
-                case QRMaskPattern.PATTERN100:
-                    return (Math.floor(i / 2) + Math.floor(j / 3)) % 2 == 0;
-                case QRMaskPattern.PATTERN101:
-                    return (i * j) % 2 + (i * j) % 3 == 0;
-                case QRMaskPattern.PATTERN110:
-                    return ((i * j) % 2 + (i * j) % 3) % 2 == 0;
-                case QRMaskPattern.PATTERN111:
-                    return ((i * j) % 3 + (i + j) % 2) % 2 == 0;
-                default:
-                    throw new Error("bad maskPattern:" + maskPattern);
-            }
-        },
-        /*
-        获取RS的纠错多项式
-         */
-        getErrorCorrectPolynomial: function (errorCorrectLength) {
-            var a = new QRPolynomial([1], 0);
-            for (var i = 0; i < errorCorrectLength; i++) {
-                a = a.multiply(new QRPolynomial([1, QRMath.gexp(i)], 0));
-            }
-            return a;
-        },
-        /*
-        获取评价
-         */
-        getLostPoint: function (qrCode) {
-            var moduleCount = qrCode.getModuleCount(),
-                lostPoint = 0,
-                darkCount = 0;
-            for (var row = 0; row < moduleCount; row++) {
-                var sameCount = 0;
-                var head = qrCode.modules[row][0];
-                for (var col = 0; col < moduleCount; col++) {
-                    var current = qrCode.modules[row][col];
-                    //level 3 评价
-                    if (col < moduleCount - 6) {
-                        if (current && !qrCode.modules[row][col + 1] && qrCode.modules[row][col + 2] && qrCode.modules[row][col + 3] && qrCode.modules[row][col + 4] && !qrCode.modules[row][col + 5] && qrCode.modules[row][col + 6]) {
-                            if (col < moduleCount - 10) {
-                                if (qrCode.modules[row][col + 7] && qrCode.modules[row][col + 8] && qrCode.modules[row][col + 9] && qrCode.modules[row][col + 10]) {
-                                    lostPoint += 40;
-                                }
-                            } else if (col > 3) {
-                                if (qrCode.modules[row][col - 1] && qrCode.modules[row][col - 2] && qrCode.modules[row][col - 3] && qrCode.modules[row][col - 4]) {
-                                    lostPoint += 40;
-                                }
-                            }
-                        }
-                    }
-                    //level 2 评价
-                    if ((row < moduleCount - 1) && (col < moduleCount - 1)) {
-                        var count = 0;
-                        if (current) count++;
-                        if (qrCode.modules[row + 1][col]) count++;
-                        if (qrCode.modules[row][col + 1]) count++;
-                        if (qrCode.modules[row + 1][col + 1]) count++;
-                        if (count == 0 || count == 4) {
-                            lostPoint += 3;
-                        }
-                    }
-                    //level 1 评价
-                    if (head ^ current) {
-                        sameCount++;
-                    } else {
-                        head = current;
-                        if (sameCount >= 5) {
-                            lostPoint += (3 + sameCount - 5);
-                        }
-                        sameCount = 1;
-                    }
-                    //level 4 评价
-                    if (current) {
-                        darkCount++;
-                    }
-                }
-            }
-            for (var col = 0; col < moduleCount; col++) {
-                var sameCount = 0;
-                var head = qrCode.modules[0][col];
-                for (var row = 0; row < moduleCount; row++) {
-                    var current = qrCode.modules[row][col];
-                    //level 3 评价
-                    if (row < moduleCount - 6) {
-                        if (current && !qrCode.modules[row + 1][col] && qrCode.modules[row + 2][col] && qrCode.modules[row + 3][col] && qrCode.modules[row + 4][col] && !qrCode.modules[row + 5][col] && qrCode.modules[row + 6][col]) {
-                            if (row < moduleCount - 10) {
-                                if (qrCode.modules[row + 7][col] && qrCode.modules[row + 8][col] && qrCode.modules[row + 9][col] && qrCode.modules[row + 10][col]) {
-                                    lostPoint += 40;
-                                }
-                            } else if (row > 3) {
-                                if (qrCode.modules[row - 1][col] && qrCode.modules[row - 2][col] && qrCode.modules[row - 3][col] && qrCode.modules[row - 4][col]) {
-                                    lostPoint += 40;
-                                }
-                            }
-                        }
-                    }
-                    //level 1 评价
-                    if (head ^ current) {
-                        sameCount++;
-                    } else {
-                        head = current;
-                        if (sameCount >= 5) {
-                            lostPoint += (3 + sameCount - 5);
-                        }
-                        sameCount = 1;
-                    }
-                }
-            }
-            // LEVEL4
-            var ratio = Math.abs(100 * darkCount / moduleCount / moduleCount - 50) / 5;
-            lostPoint += ratio * 10;
-            return lostPoint;
-        }
-
-    };
-    //---------------------------------------------------------------------
-    // QRMath使用的数学工具
-    //---------------------------------------------------------------------
-    var QRMath = {
-        /*
-        将n转化为a^m
-         */
-        glog: function (n) {
-            if (n < 1) {
-                throw new Error("glog(" + n + ")");
-            }
-            return QRMath.LOG_TABLE[n];
-        },
-        /*
-        将a^m转化为n
-         */
-        gexp: function (n) {
-            while (n < 0) {
-                n += 255;
-            }
-            while (n >= 256) {
-                n -= 255;
-            }
-            return QRMath.EXP_TABLE[n];
-        },
-        EXP_TABLE: new Array(256),
-        LOG_TABLE: new Array(256)
-
-    };
-    for (var i = 0; i < 8; i++) {
-        QRMath.EXP_TABLE[i] = 1 << i;
-    }
-    for (var i = 8; i < 256; i++) {
-        QRMath.EXP_TABLE[i] = QRMath.EXP_TABLE[i - 4] ^ QRMath.EXP_TABLE[i - 5] ^ QRMath.EXP_TABLE[i - 6] ^ QRMath.EXP_TABLE[i - 8];
-    }
-    for (var i = 0; i < 255; i++) {
-        QRMath.LOG_TABLE[QRMath.EXP_TABLE[i]] = i;
-    }
-    //---------------------------------------------------------------------
-    // QRPolynomial 多项式
-    //---------------------------------------------------------------------
-    /**
-     * 多项式类
-     * @param {Array} num   系数
-     * @param {num} shift a^shift
-     */
-    function QRPolynomial(num, shift) {
-        if (num.length == undefined) {
-            throw new Error(num.length + "/" + shift);
-        }
-        var offset = 0;
-        while (offset < num.length && num[offset] == 0) {
-            offset++;
-        }
-        this.num = new Array(num.length - offset + shift);
-        for (var i = 0; i < num.length - offset; i++) {
-            this.num[i] = num[i + offset];
-        }
-    }
-    QRPolynomial.prototype = {
-        get: function (index) {
-            return this.num[index];
-        },
-        getLength: function () {
-            return this.num.length;
-        },
-        /**
-         * 多项式乘法
-         * @param  {QRPolynomial} e 被乘多项式
-         * @return {[type]}   [description]
-         */
-        multiply: function (e) {
-            var num = new Array(this.getLength() + e.getLength() - 1);
-            for (var i = 0; i < this.getLength(); i++) {
-                for (var j = 0; j < e.getLength(); j++) {
-                    num[i + j] ^= QRMath.gexp(QRMath.glog(this.get(i)) + QRMath.glog(e.get(j)));
-                }
-            }
-            return new QRPolynomial(num, 0);
-        },
-        /**
-         * 多项式模运算
-         * @param  {QRPolynomial} e 模多项式
-         * @return {}
-         */
-        mod: function (e) {
-            var tl = this.getLength(),
-                el = e.getLength();
-            if (tl - el < 0) {
-                return this;
-            }
-            var num = new Array(tl);
-            for (var i = 0; i < tl; i++) {
-                num[i] = this.get(i);
-            }
-            while (num.length >= el) {
-                var ratio = QRMath.glog(num[0]) - QRMath.glog(e.get(0));
-
-                for (var i = 0; i < e.getLength(); i++) {
-                    num[i] ^= QRMath.gexp(QRMath.glog(e.get(i)) + ratio);
-                }
-                while (num[0] == 0) {
-                    num.shift();
-                }
-            }
-            return new QRPolynomial(num, 0);
-        }
-    };
-
-    //---------------------------------------------------------------------
-    // RS_BLOCK_TABLE
-    //---------------------------------------------------------------------
-    /*
-    二维码各个版本信息[块数, 每块中的数据块数, 每块中的信息块数]
-     */
-    var RS_BLOCK_TABLE = [
-        // L
-        // M
-        // Q
-        // H
-        // 1
-        [1, 26, 19],
-        [1, 26, 16],
-        [1, 26, 13],
-        [1, 26, 9],
-
-        // 2
-        [1, 44, 34],
-        [1, 44, 28],
-        [1, 44, 22],
-        [1, 44, 16],
-
-        // 3
-        [1, 70, 55],
-        [1, 70, 44],
-        [2, 35, 17],
-        [2, 35, 13],
-
-        // 4
-        [1, 100, 80],
-        [2, 50, 32],
-        [2, 50, 24],
-        [4, 25, 9],
-
-        // 5
-        [1, 134, 108],
-        [2, 67, 43],
-        [2, 33, 15, 2, 34, 16],
-        [2, 33, 11, 2, 34, 12],
-
-        // 6
-        [2, 86, 68],
-        [4, 43, 27],
-        [4, 43, 19],
-        [4, 43, 15],
-
-        // 7
-        [2, 98, 78],
-        [4, 49, 31],
-        [2, 32, 14, 4, 33, 15],
-        [4, 39, 13, 1, 40, 14],
-
-        // 8
-        [2, 121, 97],
-        [2, 60, 38, 2, 61, 39],
-        [4, 40, 18, 2, 41, 19],
-        [4, 40, 14, 2, 41, 15],
-
-        // 9
-        [2, 146, 116],
-        [3, 58, 36, 2, 59, 37],
-        [4, 36, 16, 4, 37, 17],
-        [4, 36, 12, 4, 37, 13],
-
-        // 10
-        [2, 86, 68, 2, 87, 69],
-        [4, 69, 43, 1, 70, 44],
-        [6, 43, 19, 2, 44, 20],
-        [6, 43, 15, 2, 44, 16],
-
-        // 11
-        [4, 101, 81],
-        [1, 80, 50, 4, 81, 51],
-        [4, 50, 22, 4, 51, 23],
-        [3, 36, 12, 8, 37, 13],
-
-        // 12
-        [2, 116, 92, 2, 117, 93],
-        [6, 58, 36, 2, 59, 37],
-        [4, 46, 20, 6, 47, 21],
-        [7, 42, 14, 4, 43, 15],
-
-        // 13
-        [4, 133, 107],
-        [8, 59, 37, 1, 60, 38],
-        [8, 44, 20, 4, 45, 21],
-        [12, 33, 11, 4, 34, 12],
-
-        // 14
-        [3, 145, 115, 1, 146, 116],
-        [4, 64, 40, 5, 65, 41],
-        [11, 36, 16, 5, 37, 17],
-        [11, 36, 12, 5, 37, 13],
-
-        // 15
-        [5, 109, 87, 1, 110, 88],
-        [5, 65, 41, 5, 66, 42],
-        [5, 54, 24, 7, 55, 25],
-        [11, 36, 12],
-
-        // 16
-        [5, 122, 98, 1, 123, 99],
-        [7, 73, 45, 3, 74, 46],
-        [15, 43, 19, 2, 44, 20],
-        [3, 45, 15, 13, 46, 16],
-
-        // 17
-        [1, 135, 107, 5, 136, 108],
-        [10, 74, 46, 1, 75, 47],
-        [1, 50, 22, 15, 51, 23],
-        [2, 42, 14, 17, 43, 15],
-
-        // 18
-        [5, 150, 120, 1, 151, 121],
-        [9, 69, 43, 4, 70, 44],
-        [17, 50, 22, 1, 51, 23],
-        [2, 42, 14, 19, 43, 15],
-
-        // 19
-        [3, 141, 113, 4, 142, 114],
-        [3, 70, 44, 11, 71, 45],
-        [17, 47, 21, 4, 48, 22],
-        [9, 39, 13, 16, 40, 14],
-
-        // 20
-        [3, 135, 107, 5, 136, 108],
-        [3, 67, 41, 13, 68, 42],
-        [15, 54, 24, 5, 55, 25],
-        [15, 43, 15, 10, 44, 16],
-
-        // 21
-        [4, 144, 116, 4, 145, 117],
-        [17, 68, 42],
-        [17, 50, 22, 6, 51, 23],
-        [19, 46, 16, 6, 47, 17],
-
-        // 22
-        [2, 139, 111, 7, 140, 112],
-        [17, 74, 46],
-        [7, 54, 24, 16, 55, 25],
-        [34, 37, 13],
-
-        // 23
-        [4, 151, 121, 5, 152, 122],
-        [4, 75, 47, 14, 76, 48],
-        [11, 54, 24, 14, 55, 25],
-        [16, 45, 15, 14, 46, 16],
-
-        // 24
-        [6, 147, 117, 4, 148, 118],
-        [6, 73, 45, 14, 74, 46],
-        [11, 54, 24, 16, 55, 25],
-        [30, 46, 16, 2, 47, 17],
-
-        // 25
-        [8, 132, 106, 4, 133, 107],
-        [8, 75, 47, 13, 76, 48],
-        [7, 54, 24, 22, 55, 25],
-        [22, 45, 15, 13, 46, 16],
-
-        // 26
-        [10, 142, 114, 2, 143, 115],
-        [19, 74, 46, 4, 75, 47],
-        [28, 50, 22, 6, 51, 23],
-        [33, 46, 16, 4, 47, 17],
-
-        // 27
-        [8, 152, 122, 4, 153, 123],
-        [22, 73, 45, 3, 74, 46],
-        [8, 53, 23, 26, 54, 24],
-        [12, 45, 15, 28, 46, 16],
-
-        // 28
-        [3, 147, 117, 10, 148, 118],
-        [3, 73, 45, 23, 74, 46],
-        [4, 54, 24, 31, 55, 25],
-        [11, 45, 15, 31, 46, 16],
-
-        // 29
-        [7, 146, 116, 7, 147, 117],
-        [21, 73, 45, 7, 74, 46],
-        [1, 53, 23, 37, 54, 24],
-        [19, 45, 15, 26, 46, 16],
-
-        // 30
-        [5, 145, 115, 10, 146, 116],
-        [19, 75, 47, 10, 76, 48],
-        [15, 54, 24, 25, 55, 25],
-        [23, 45, 15, 25, 46, 16],
-
-        // 31
-        [13, 145, 115, 3, 146, 116],
-        [2, 74, 46, 29, 75, 47],
-        [42, 54, 24, 1, 55, 25],
-        [23, 45, 15, 28, 46, 16],
-
-        // 32
-        [17, 145, 115],
-        [10, 74, 46, 23, 75, 47],
-        [10, 54, 24, 35, 55, 25],
-        [19, 45, 15, 35, 46, 16],
-
-        // 33
-        [17, 145, 115, 1, 146, 116],
-        [14, 74, 46, 21, 75, 47],
-        [29, 54, 24, 19, 55, 25],
-        [11, 45, 15, 46, 46, 16],
-
-        // 34
-        [13, 145, 115, 6, 146, 116],
-        [14, 74, 46, 23, 75, 47],
-        [44, 54, 24, 7, 55, 25],
-        [59, 46, 16, 1, 47, 17],
-
-        // 35
-        [12, 151, 121, 7, 152, 122],
-        [12, 75, 47, 26, 76, 48],
-        [39, 54, 24, 14, 55, 25],
-        [22, 45, 15, 41, 46, 16],
-
-        // 36
-        [6, 151, 121, 14, 152, 122],
-        [6, 75, 47, 34, 76, 48],
-        [46, 54, 24, 10, 55, 25],
-        [2, 45, 15, 64, 46, 16],
-
-        // 37
-        [17, 152, 122, 4, 153, 123],
-        [29, 74, 46, 14, 75, 47],
-        [49, 54, 24, 10, 55, 25],
-        [24, 45, 15, 46, 46, 16],
-
-        // 38
-        [4, 152, 122, 18, 153, 123],
-        [13, 74, 46, 32, 75, 47],
-        [48, 54, 24, 14, 55, 25],
-        [42, 45, 15, 32, 46, 16],
-
-        // 39
-        [20, 147, 117, 4, 148, 118],
-        [40, 75, 47, 7, 76, 48],
-        [43, 54, 24, 22, 55, 25],
-        [10, 45, 15, 67, 46, 16],
-
-        // 40
-        [19, 148, 118, 6, 149, 119],
-        [18, 75, 47, 31, 76, 48],
-        [34, 54, 24, 34, 55, 25],
-        [20, 45, 15, 61, 46, 16]
-    ];
-
-    /**
-     * 根据数据获取对应版本
-     * @return {[type]} [description]
-     */
-    QRCodeAlg.prototype.getRightType = function () {
-        for (var typeNumber = 1; typeNumber < 41; typeNumber++) {
-            var rsBlock = RS_BLOCK_TABLE[(typeNumber - 1) * 4 + this.errorCorrectLevel];
-            if (rsBlock == undefined) {
-                throw new Error("bad rs block @ typeNumber:" + typeNumber + "/errorCorrectLevel:" + this.errorCorrectLevel);
-            }
-            var length = rsBlock.length / 3;
-            var totalDataCount = 0;
-            for (var i = 0; i < length; i++) {
-                var count = rsBlock[i * 3 + 0];
-                var dataCount = rsBlock[i * 3 + 2];
-                totalDataCount += dataCount * count;
-            }
-            var lengthBytes = typeNumber > 9 ? 2 : 1;
-            if (this.utf8bytes.length + lengthBytes < totalDataCount || typeNumber == 40) {
-                this.typeNumber = typeNumber;
-                this.rsBlock = rsBlock;
-                this.totalDataCount = totalDataCount;
-                break;
-            }
-        }
-    };
-
-    //---------------------------------------------------------------------
-    // QRBitBuffer
-    //---------------------------------------------------------------------
-    function QRBitBuffer() {
-        this.buffer = new Array();
-        this.length = 0;
-    }
-    QRBitBuffer.prototype = {
-        get: function (index) {
-            var bufIndex = Math.floor(index / 8);
-            return ((this.buffer[bufIndex] >>> (7 - index % 8)) & 1);
-        },
-        put: function (num, length) {
-            for (var i = 0; i < length; i++) {
-                this.putBit(((num >>> (length - i - 1)) & 1));
-            }
-        },
-        putBit: function (bit) {
-            var bufIndex = Math.floor(this.length / 8);
-            if (this.buffer.length <= bufIndex) {
-                this.buffer.push(0);
-            }
-            if (bit) {
-                this.buffer[bufIndex] |= (0x80 >>> (this.length % 8));
-            }
-            this.length++;
-        }
-    };
-
-
-
-    // xzedit
-    let qrcodeAlgObjCache = [];
-    /**
-     * 二维码构造函数,主要用于绘制
-     * @param  {参数列表} opt 传递参数
-     * @return {}
-     */
-    QRCode = function (opt) {
-        //设置默认参数
-        this.options = {
-            text: '',
-            size: 256,
-            correctLevel: 3,
-            background: '#ffffff',
-            foreground: '#000000',
-            pdground: '#000000',
-            image: '',
-            imageSize: 30,
-            canvasId: opt.canvasId,
-            context: opt.context,
-            usingComponents: opt.usingComponents,
-            showLoading: opt.showLoading,
-            loadingText: opt.loadingText,
-        };
-        if (typeof opt === 'string') { // 只编码ASCII字符串
-            opt = {
-                text: opt
-            };
-        }
-        if (opt) {
-            for (var i in opt) {
-                this.options[i] = opt[i];
-            }
-        }
-        //使用QRCodeAlg创建二维码结构
-        var qrCodeAlg = null;
-        for (var i = 0, l = qrcodeAlgObjCache.length; i < l; i++) {
-            if (qrcodeAlgObjCache[i].text == this.options.text && qrcodeAlgObjCache[i].text.correctLevel == this.options.correctLevel) {
-                qrCodeAlg = qrcodeAlgObjCache[i].obj;
-                break;
-            }
-        }
-        if (i == l) {
-            qrCodeAlg = new QRCodeAlg(this.options.text, this.options.correctLevel);
-            qrcodeAlgObjCache.push({
-                text: this.options.text,
-                correctLevel: this.options.correctLevel,
-                obj: qrCodeAlg
-            });
-        }
-        /**
-         * 计算矩阵点的前景色
-         * @param {Obj} config
-         * @param {Number} config.row 点x坐标
-         * @param {Number} config.col 点y坐标
-         * @param {Number} config.count 矩阵大小
-         * @param {Number} config.options 组件的options
-         * @return {String}
-         */
-        let getForeGround = function (config) {
-            var options = config.options;
-            if (options.pdground && (
-                (config.row > 1 && config.row < 5 && config.col > 1 && config.col < 5) ||
-                (config.row > (config.count - 6) && config.row < (config.count - 2) && config.col > 1 && config.col < 5) ||
-                (config.row > 1 && config.row < 5 && config.col > (config.count - 6) && config.col < (config.count - 2))
-            )) {
-                return options.pdground;
-            }
-            return options.foreground;
-        }
-        // 创建canvas
-        let createCanvas = function (options) {
-            if(options.showLoading){
-                uni.showLoading({
-                    title: options.loadingText,
-                    mask: true
-                });
-            }
-            var ctx = uni.createCanvasContext(options.canvasId, options.context);
-            var count = qrCodeAlg.getModuleCount();
-            var ratioSize = options.size;
-            var ratioImgSize = options.imageSize;
-            //计算每个点的长宽
-            var tileW = (ratioSize / count).toPrecision(4);
-            var tileH = (ratioSize / count).toPrecision(4);
-            //绘制
-            for (var row = 0; row < count; row++) {
-                for (var col = 0; col < count; col++) {
-                    var w = (Math.ceil((col + 1) * tileW) - Math.floor(col * tileW));
-                    var h = (Math.ceil((row + 1) * tileW) - Math.floor(row * tileW));
-                    var foreground = getForeGround({
-                        row: row,
-                        col: col,
-                        count: count,
-                        options: options
-                    });
-                    ctx.setFillStyle(qrCodeAlg.modules[row][col] ? foreground : options.background);
-                    ctx.fillRect(Math.round(col * tileW), Math.round(row * tileH), w, h);
-                }
-            }
-            if (options.image) {
-                var x = Number(((ratioSize - ratioImgSize) / 2).toFixed(2));
-                var y = Number(((ratioSize - ratioImgSize) / 2).toFixed(2));
-                drawRoundedRect(ctx, x, y, ratioImgSize, ratioImgSize, 2, 6, true, true)
-                ctx.drawImage(options.image, x, y, ratioImgSize, ratioImgSize);
-                // 画圆角矩形
-                function drawRoundedRect(ctxi, x, y, width, height, r, lineWidth, fill, stroke) {
-                    ctxi.setLineWidth(lineWidth);
-                    ctxi.setFillStyle(options.background);
-                    ctxi.setStrokeStyle(options.background);
-                    ctxi.beginPath(); // draw top and top right corner 
-                    ctxi.moveTo(x + r, y);
-                    ctxi.arcTo(x + width, y, x + width, y + r, r); // draw right side and bottom right corner 
-                    ctxi.arcTo(x + width, y + height, x + width - r, y + height, r); // draw bottom and bottom left corner 
-                    ctxi.arcTo(x, y + height, x, y + height - r, r); // draw left and top left corner 
-                    ctxi.arcTo(x, y, x + r, y, r);
-                    ctxi.closePath();
-                    if (fill) {
-                        ctxi.fill();
-                    }
-                    if (stroke) {
-                        ctxi.stroke();
-                    }
-                }
-            }
-            setTimeout(() => {
-                ctx.draw(true, () => {
-                    // 保存到临时区域
-                    setTimeout(() => {
-                        uni.canvasToTempFilePath({
-                            width: options.width,
-                            height: options.height,
-                            destWidth: options.width,
-                            destHeight: options.height,
-                            canvasId: options.canvasId,
-                            quality: Number(1),
-                            success: function (res) {
-                                if (options.cbResult) {
-                                    // 由于官方还没有统一此接口的输出字段,所以先判定下  支付宝为 res.apFilePath
-                                    if (!empty(res.tempFilePath)) {
-                                        options.cbResult(res.tempFilePath)
-                                    } else if (!empty(res.apFilePath)) {
-                                        options.cbResult(res.apFilePath)
-                                    } else {
-                                        options.cbResult(res.tempFilePath)
-                                    }
-                                }
-                            },
-                            fail: function (res) {
-                                if (options.cbResult) {
-                                    options.cbResult(res)
-                                }
-                            },
-                            complete: function () {
-                                uni.hideLoading();
-                            },
-                        }, options.context);
-                    }, options.text.length + 100);
-                });
-            }, options.usingComponents ? 0 : 150);
-        }
-        createCanvas(this.options);
-        // 空判定
-        let empty = function (v) {
-            let tp = typeof v,
-                rt = false;
-            if (tp == "number" && String(v) == "") {
-                rt = true
-            } else if (tp == "undefined") {
-                rt = true
-            } else if (tp == "object") {
-                if (JSON.stringify(v) == "{}" || JSON.stringify(v) == "[]" || v == null) rt = true
-            } else if (tp == "string") {
-                if (v == "" || v == "undefined" || v == "null" || v == "{}" || v == "[]") rt = true
-            } else if (tp == "function") {
-                rt = false
-            }
-            return rt
-        }
-    };
-    QRCode.prototype.clear = function (fn) {
-        var ctx = uni.createCanvasContext(this.options.canvasId, this.options.context)
-        ctx.clearRect(0, 0, this.options.size, this.options.size)
-        ctx.draw(false, () => {
-            if (fn) {
-                fn()
-            }
-        })
-    };
-})()
-
-export default QRCode

+ 0 - 205
node_modules/_tki-qrcode@0.1.6@tki-qrcode/components/tki-qrcode/tki-qrcode.vue

@@ -1,205 +0,0 @@
-<template xlang="wxml" minapp="mpvue">
-	<view class="tki-qrcode">
-		<canvas class="tki-qrcode-canvas" :canvas-id="cid" :style="{width:cpSize+'px',height:cpSize+'px'}" />
-		<image v-show="show" :src="result" :style="{width:cpSize+'px',height:cpSize+'px'}" />
-	</view>
-</template>
-
-<script>
-import QRCode from "./qrcode.js"
-let qrcode
-export default {
-	name: "tki-qrcode",
-	props: {
-		cid: {
-			type: String,
-			default: 'tki-qrcode-canvas'
-		},
-		size: {
-			type: Number,
-			default: 200
-		},
-		unit: {
-			type: String,
-			default: 'upx'
-		},
-		show: {
-			type: Boolean,
-			default: true
-		},
-		val: {
-			type: String,
-			default: ''
-		},
-		background: {
-			type: String,
-			default: '#ffffff'
-		},
-		foreground: {
-			type: String,
-			default: '#000000'
-		},
-		pdground: {
-			type: String,
-			default: '#000000'
-		},
-		icon: {
-			type: String,
-			default: ''
-		},
-		iconSize: {
-			type: Number,
-			default: 40
-		},
-		lv: {
-			type: Number,
-			default: 3
-		},
-		onval: {
-			type: Boolean,
-			default: false
-		},
-		loadMake: {
-			type: Boolean,
-			default: false
-		},
-		usingComponents: {
-			type: Boolean,
-			default: true
-		},
-		showLoading: {
-			type: Boolean,
-			default: true
-		},
-		loadingText: {
-			type: String,
-			default: '二维码生成中'
-		},
-	},
-	data() {
-		return {
-			result: '',
-		}
-	},
-	methods: {
-		_makeCode() {
-			let that = this
-			if (!this._empty(this.val)) {
-				qrcode = new QRCode({
-					context: that, // 上下文环境
-					canvasId:that.cid, // canvas-id
-					usingComponents: that.usingComponents, // 是否是自定义组件
-					showLoading: that.showLoading, // 是否显示loading
-					loadingText: that.loadingText, // loading文字
-					text: that.val, // 生成内容
-					size: that.cpSize, // 二维码大小
-					background: that.background, // 背景色
-					foreground: that.foreground, // 前景色
-					pdground: that.pdground, // 定位角点颜色
-					correctLevel: that.lv, // 容错级别
-					image: that.icon, // 二维码图标
-					imageSize: that.iconSize,// 二维码图标大小
-					cbResult: function (res) { // 生成二维码的回调
-						that._result(res)
-					},
-				});
-			} else {
-				uni.showToast({
-					title: '二维码内容不能为空',
-					icon: 'none',
-					duration: 2000
-				});
-			}
-		},
-		_clearCode() {
-			this._result('')
-			qrcode.clear()
-		},
-		_saveCode() {
-			let that = this;
-			if (this.result != "") {
-				uni.saveImageToPhotosAlbum({
-					filePath: that.result,
-					success: function () {
-						uni.showToast({
-							title: '二维码保存成功',
-							icon: 'success',
-							duration: 2000
-						});
-					}
-				});
-			}
-		},
-		_result(res) {
-			this.result = res;
-			this.$emit('result', res)
-		},
-		_empty(v) {
-			let tp = typeof v,
-				rt = false;
-			if (tp == "number" && String(v) == "") {
-				rt = true
-			} else if (tp == "undefined") {
-				rt = true
-			} else if (tp == "object") {
-				if (JSON.stringify(v) == "{}" || JSON.stringify(v) == "[]" || v == null) rt = true
-			} else if (tp == "string") {
-				if (v == "" || v == "undefined" || v == "null" || v == "{}" || v == "[]") rt = true
-			} else if (tp == "function") {
-				rt = false
-			}
-			return rt
-		}
-	},
-	watch: {
-		size: function (n, o) {
-			if (n != o && !this._empty(n)) {
-				this.cSize = n
-				if (!this._empty(this.val)) {
-					setTimeout(() => {
-						this._makeCode()
-					}, 100);
-				}
-			}
-		},
-		val: function (n, o) {
-			if (this.onval) {
-				if (n != o && !this._empty(n)) {
-					setTimeout(() => {
-						this._makeCode()
-					}, 0);
-				}
-			}
-		}
-	},
-	computed: {
-		cpSize() {
-			if(this.unit == "upx"){
-				return uni.upx2px(this.size)
-			}else{
-				return this.size
-			}
-		}
-	},
-	mounted: function () {
-		if (this.loadMake) {
-			if (!this._empty(this.val)) {
-				setTimeout(() => {
-					this._makeCode()
-				}, 0);
-			}
-		}
-	},
-}
-</script>
-<style>
-.tki-qrcode {
-  position: relative;
-}
-.tki-qrcode-canvas {
-  position: fixed;
-  top: -99999upx;
-  left: -99999upx;
-  z-index: -99999;
-}
-</style>

+ 0 - 11
node_modules/_tki-qrcode@0.1.6@tki-qrcode/main.js

@@ -1,11 +0,0 @@
-import Vue from 'vue'
-import App from './App'
-
-Vue.config.productionTip = false
-
-App.mpType = 'app'
-
-const app = new Vue({
-    ...App
-})
-app.$mount()

+ 0 - 60
node_modules/_tki-qrcode@0.1.6@tki-qrcode/manifest.json

@@ -1,60 +0,0 @@
-{
-    "name" : "qrcode",
-    "appid" : "__UNI__2A8D346",
-    "description" : "",
-    "versionName" : "1.0.0",
-    "versionCode" : "100",
-    "transformPx" : false,
-    "usingComponents": true,
-    "debug": true,
-    "app-plus" : {
-        /* 5+App特有相关 */
-        "modules" : {},
-        /* 模块配置 */
-        "distribute" : {
-            /* 应用发布信息 */
-            "android" : {
-                /* android打包配置 */
-                "permissions" : [
-                    "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
-                    "<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
-                    "<uses-permission android:name=\"android.permission.READ_CONTACTS\"/>",
-                    "<uses-permission android:name=\"android.permission.VIBRATE\"/>",
-                    "<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
-                    "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
-                    "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
-                    "<uses-permission android:name=\"android.permission.WRITE_CONTACTS\"/>",
-                    "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
-                    "<uses-permission android:name=\"android.permission.CAMERA\"/>",
-                    "<uses-permission android:name=\"android.permission.RECORD_AUDIO\"/>",
-                    "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
-                    "<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>",
-                    "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
-                    "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
-                    "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
-                    "<uses-permission android:name=\"android.permission.CALL_PHONE\"/>",
-                    "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
-                    "<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>",
-                    "<uses-feature android:name=\"android.hardware.camera\"/>",
-                    "<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>",
-                    "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
-                ]
-            },
-            "ios" : {},
-            /* ios打包配置 */
-            "sdkConfigs" : {}
-        },
-		"usingComponents": true
-    },
-    /* SDK配置 */
-    "quickapp" : {},
-    /* 快应用特有相关 */
-    "mp-weixin" : {
-        /* 小程序特有相关 */
-        "appid" : "wx7d67739c63a7f3e0",
-        "setting" : {
-            "urlCheck" : true
-        },
-		"usingComponents": true
-    }
-}

+ 0 - 29
node_modules/_tki-qrcode@0.1.6@tki-qrcode/package.json

@@ -1,29 +0,0 @@
-{
-  "name": "tki-qrcode",
-  "version": "0.1.6",
-  "description": "qrcode",
-  "main": "components/tki-qrcode/tki-qrcode.vue",
-  "scripts": {
-    "test": "echo \"Error: no test specified\" && exit 1"
-  },
-  "repository": {
-    "type": "git",
-    "url": "git+https://github.com/q310550690/uni-app-qrcode.git"
-  },
-  "keywords": [
-    "qrcode",
-    "mpvue",
-    "uni-app",
-    "tki-qrcode",
-    "TikiUi"
-  ],
-  "author": "sxq",
-  "license": "MIT",
-  "bugs": {
-    "url": "https://github.com/q310550690/uni-app-qrcode/issues"
-  },
-  "homepage": "https://github.com/q310550690/uni-app-qrcode#readme",
-  "__npminstall_done": true,
-  "_from": "tki-qrcode@0.1.6",
-  "_resolved": "https://registry.npmmirror.com/tki-qrcode/-/tki-qrcode-0.1.6.tgz"
-}

+ 0 - 16
node_modules/_tki-qrcode@0.1.6@tki-qrcode/pages.json

@@ -1,16 +0,0 @@
-{
-	"pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
-		{
-			"path": "pages/index/index",
-			"style": {
-				"navigationBarTitleText": "uni-app"
-			}
-		}
-	],
-	"globalStyle": {
-		"navigationBarTextStyle": "black",
-		"navigationBarTitleText": "uni-app",
-		"navigationBarBackgroundColor": "#F8F8F8",
-		"backgroundColor": "#F8F8F8"
-	}
-}

+ 0 - 132
node_modules/_tki-qrcode@0.1.6@tki-qrcode/pages/index/index.vue

@@ -1,132 +0,0 @@
-<template xlang="wxml">
-	<view class="container">
-		<view class="qrimg">
-			<view class="qrimg-i">
-				<tki-qrcode v-if="ifShow" cid="qrcode1" ref="qrcode" :val="val" :size="size" :unit="unit" :background="background" :foreground="foreground" :pdground="pdground" :icon="icon" :iconSize="iconsize" :lv="lv" :onval="onval" :loadMake="loadMake" :usingComponents="true" @result="qrR" />
-			</view>
-			<view class="qrimg-i">
-				<tki-qrcode v-if="ifShow" cid="qrcode2" ref="qrcode2" val="第二个二维码" :size="size" :onval="onval" :loadMake="loadMake" :usingComponents="true" @result="qrR" />
-			</view>
-		</view>
-		<view class="uni-padding-wrap">
-			<view class="uni-title">请输入要生成的二维码内容</view>
-		</view>
-		<view class="uni-list">
-			<input class="uni-input" placeholder="请输入要生成的二维码内容" v-model="val" />
-		</view>
-		<view class="uni-padding-wrap uni-common-mt">
-			<view class="uni-title">设置二维码大小</view>
-		</view>
-		<view class="body-view">
-			<slider :value="size" @change="sliderchange" min="50" max="500" show-value />
-		</view>
-		<view class="uni-padding-wrap">
-			<view class="btns">
-				<button type="primary" @tap="selectIcon">选择二维码图标</button>
-				<button type="primary" @tap="creatQrcode">生成二维码</button>
-				<button type="primary" @tap="saveQrcode">保存到图库</button>
-				<button type="warn" @tap="clearQrcode">清除二维码</button>
-				<button type="warn" @tap="ifQrcode">显示隐藏二维码</button>
-			</view>
-		</view>
-	</view>
-</template>
-<script>
-import tkiQrcode from '@/components/tki-qrcode/tki-qrcode.vue'
-export default {
-	data() {
-		return {
-			ifShow: true,
-			val: '二维码', // 要生成的二维码值
-			size: 200, // 二维码大小
-			unit: 'upx', // 单位
-			background: '#b4e9e2', // 背景色
-			foreground: '#309286', // 前景色
-			pdground: '#32dbc6', // 角标色
-			icon: '', // 二维码图标
-			iconsize: 40, // 二维码图标大小
-			lv: 3, // 二维码容错级别 , 一般不用设置,默认就行
-			onval: false, // val值变化时自动重新生成二维码
-			loadMake: true, // 组件加载完成后自动生成二维码
-			src: '' // 二维码生成后的图片地址或base64
-		}
-	},
-	methods: {
-		sliderchange(e) {
-			this.size = e.detail.value
-		},
-		creatQrcode() {
-			this.$refs.qrcode._makeCode()
-		},
-		saveQrcode() {
-			this.$refs.qrcode._saveCode()
-		},
-		qrR(res) {
-			this.src = res
-		},
-		clearQrcode() {
-			this.$refs.qrcode._clearCode()
-			this.val = ''
-		},
-		ifQrcode() {
-			this.ifShow = !this.ifShow
-		},
-		selectIcon() {
-			let that = this
-			uni.chooseImage({
-				count: 1, //默认9
-				sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
-				sourceType: ['album'], //从相册选择
-				success: function (res) {
-					that.icon = res.tempFilePaths[0]
-					setTimeout(() => {
-						that.creatQrcode()
-					}, 100);
-					// console.log(res.tempFilePaths);
-				}
-			});
-		}
-	},
-	components: {
-		tkiQrcode
-	},
-	onLoad: function () { },
-}
-</script>
-
-<style>
-/* @import "../../../common/icon.css"; */
-.container {
-	display: flex;
-	flex-direction: column;
-	width: 100%;
-}
-
-.qrimg {
-	display: flex;
-	justify-content: center;
-}
-.qrimg-i{
-	margin-right: 10px;
-}
-
-slider {
-	width: 100%;
-}
-
-input {
-	width: 100%;
-	margin-bottom: 20upx;
-}
-
-.btns {
-	display: flex;
-	flex-direction: column;
-	width: 100%;
-}
-
-button {
-	width: 100%;
-	margin-top: 10upx;
-}
-</style>

+ 0 - 2
node_modules/_tki-qrcode@0.1.6@tki-qrcode/static/README.md

@@ -1,2 +0,0 @@
-# 静态资源
-占位

+ 41 - 17
node_modules/jweixin-module/package.json

@@ -1,13 +1,38 @@
 {
-  "name": "jweixin-module",
-  "version": "1.6.0",
-  "description": "微信JS-SDK",
-  "main": "lib/index.js",
-  "scripts": {},
-  "repository": {
-    "type": "git",
-    "url": "git+https://github.com/zhetengbiji/jweixin-module.git"
+  "_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.npmmirror.com/jweixin-module/-/jweixin-module-1.6.0.tgz",
+  "_shasum": "4a7ea614083e3c9c3f49e2fdc2bb882cfa58dfcd",
+  "_spec": "jweixin-module@1.6.0",
+  "_where": "D:\\gitOptions\\saas_manager",
+  "author": {
+    "name": "Shengqiang Guo"
   },
+  "bugs": {
+    "url": "https://github.com/zhetengbiji/jweixin-module/issues"
+  },
+  "bundleDependencies": false,
+  "deprecated": false,
+  "description": "微信JS-SDK",
+  "devDependencies": {},
+  "homepage": "https://github.com/zhetengbiji/jweixin-module#readme",
   "keywords": [
     "wxjssdk",
     "weixin",
@@ -16,14 +41,13 @@
     "jssdk",
     "wx"
   ],
-  "author": "Shengqiang Guo",
   "license": "ISC",
-  "bugs": {
-    "url": "https://github.com/zhetengbiji/jweixin-module/issues"
+  "main": "lib/index.js",
+  "name": "jweixin-module",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/zhetengbiji/jweixin-module.git"
   },
-  "homepage": "https://github.com/zhetengbiji/jweixin-module#readme",
-  "devDependencies": {},
-  "__npminstall_done": true,
-  "_from": "jweixin-module@1.6.0",
-  "_resolved": "https://registry.npmmirror.com/jweixin-module/-/jweixin-module-1.6.0.tgz"
-}
+  "scripts": {},
+  "version": "1.6.0"
+}

+ 41 - 17
node_modules/tki-qrcode/package.json

@@ -1,15 +1,37 @@
 {
-  "name": "tki-qrcode",
-  "version": "0.1.6",
-  "description": "qrcode",
-  "main": "components/tki-qrcode/tki-qrcode.vue",
-  "scripts": {
-    "test": "echo \"Error: no test specified\" && exit 1"
+  "_from": "tki-qrcode@0.1.6",
+  "_id": "tki-qrcode@0.1.6",
+  "_inBundle": false,
+  "_integrity": "sha512-EnnlS8psowC7PsW3MDYcxvJYkuklX3WAZ/BYanR4TdBHTu74GfjTBX8Y16REP+AeDENiVtBPh4jtTRL2P736hQ==",
+  "_location": "/tki-qrcode",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "tki-qrcode@0.1.6",
+    "name": "tki-qrcode",
+    "escapedName": "tki-qrcode",
+    "rawSpec": "0.1.6",
+    "saveSpec": null,
+    "fetchSpec": "0.1.6"
   },
-  "repository": {
-    "type": "git",
-    "url": "git+https://github.com/q310550690/uni-app-qrcode.git"
+  "_requiredBy": [
+    "/"
+  ],
+  "_resolved": "https://registry.npmmirror.com/tki-qrcode/-/tki-qrcode-0.1.6.tgz",
+  "_shasum": "71373d9c4b3f8944faa54d3ee998aba33d97de7f",
+  "_spec": "tki-qrcode@0.1.6",
+  "_where": "D:\\gitOptions\\saas_manager",
+  "author": {
+    "name": "sxq"
   },
+  "bugs": {
+    "url": "https://github.com/q310550690/uni-app-qrcode/issues"
+  },
+  "bundleDependencies": false,
+  "deprecated": false,
+  "description": "qrcode",
+  "homepage": "https://github.com/q310550690/uni-app-qrcode#readme",
   "keywords": [
     "qrcode",
     "mpvue",
@@ -17,13 +39,15 @@
     "tki-qrcode",
     "TikiUi"
   ],
-  "author": "sxq",
   "license": "MIT",
-  "bugs": {
-    "url": "https://github.com/q310550690/uni-app-qrcode/issues"
+  "main": "components/tki-qrcode/tki-qrcode.vue",
+  "name": "tki-qrcode",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/q310550690/uni-app-qrcode.git"
   },
-  "homepage": "https://github.com/q310550690/uni-app-qrcode#readme",
-  "__npminstall_done": true,
-  "_from": "tki-qrcode@0.1.6",
-  "_resolved": "https://registry.npmmirror.com/tki-qrcode/-/tki-qrcode-0.1.6.tgz"
-}
+  "scripts": {
+    "test": "echo \"Error: no test specified\" && exit 1"
+  },
+  "version": "0.1.6"
+}

+ 90 - 3
package-lock.json

@@ -1,6 +1,93 @@
 {
-  "name": "saas_manager",
-  "lockfileVersion": 3,
   "requires": true,
-  "packages": {}
+  "lockfileVersion": 1,
+  "dependencies": {
+    "@babel/runtime": {
+      "version": "7.23.5",
+      "resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.23.5.tgz",
+      "integrity": "sha512-NdUTHcPe4C99WxPub+K9l9tK5/lV4UXIoaHSYgzco9BCyjKAAwzdBI+wWtYqHt7LJdbo74ZjRPJgzVweq1sz0w==",
+      "requires": {
+        "regenerator-runtime": "^0.14.0"
+      }
+    },
+    "base64-arraybuffer": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz",
+      "integrity": "sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ=="
+    },
+    "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=="
+    },
+    "core-js": {
+      "version": "3.34.0",
+      "resolved": "https://registry.npmmirror.com/core-js/-/core-js-3.34.0.tgz",
+      "integrity": "sha512-aDdvlDder8QmY91H88GzNi9EtQi2TjvQhpCX6B1v/dAZHU1AuLgHvRh54RiOerpEhEW46Tkf+vgAViB/CWC0ag=="
+    },
+    "css-line-break": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmmirror.com/css-line-break/-/css-line-break-2.1.0.tgz",
+      "integrity": "sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==",
+      "requires": {
+        "utrie": "^1.0.2"
+      }
+    },
+    "html2canvas": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npmmirror.com/html2canvas/-/html2canvas-1.4.1.tgz",
+      "integrity": "sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==",
+      "requires": {
+        "css-line-break": "^2.1.0",
+        "text-segmentation": "^1.0.3"
+      }
+    },
+    "jweixin-module": {
+      "version": "1.6.0",
+      "resolved": "https://registry.npmmirror.com/jweixin-module/-/jweixin-module-1.6.0.tgz",
+      "integrity": "sha512-dGk9cf+ipipHmtzYmKZs5B2toX+p4hLyllGLF6xuC8t+B05oYxd8fYoaRz0T30U2n3RUv8a4iwvjhA+OcYz52w=="
+    },
+    "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=="
+    },
+    "regenerator-runtime": {
+      "version": "0.14.0",
+      "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz",
+      "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA=="
+    },
+    "text-segmentation": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmmirror.com/text-segmentation/-/text-segmentation-1.0.3.tgz",
+      "integrity": "sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==",
+      "requires": {
+        "utrie": "^1.0.2"
+      }
+    },
+    "tki-qrcode": {
+      "version": "0.1.6",
+      "resolved": "https://registry.npmmirror.com/tki-qrcode/-/tki-qrcode-0.1.6.tgz",
+      "integrity": "sha512-EnnlS8psowC7PsW3MDYcxvJYkuklX3WAZ/BYanR4TdBHTu74GfjTBX8Y16REP+AeDENiVtBPh4jtTRL2P736hQ=="
+    },
+    "utrie": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/utrie/-/utrie-1.0.2.tgz",
+      "integrity": "sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==",
+      "requires": {
+        "base64-arraybuffer": "^1.0.2"
+      }
+    },
+    "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"
+      }
+    }
+  }
 }

+ 198 - 0
pages/bill/index-s.vue

@@ -0,0 +1,198 @@
+<template>
+	<view class="bill-ward">
+		<view class="bill-head" v-if="userInfo">
+			<image :src="
+          userInfo.avatar
+            ? $method.splitImgHost(userInfo.avatar, true)
+            : defaultHead
+        "></image>
+		</view>
+		<view v-for="(item, index) in posterConfig" :key="index" :style="backPosition(item)">
+			<image :style="item.css" v-if="(item.type == 0 || item.type == 2) && item.checked"
+				:src="$method.splitImgHost(item.name)" mode="" />
+
+			<view :style="item.css" v-if="item.type == 1" style="white-space: pre-wrap">
+				{{ item.name }}
+			</view>
+
+			<view class="code-box" v-if="item.type == 3 && item.checked">
+				<tki-qrcode :cid="item.codeUrl" ref="qrcode" :val="item.codeUrl" :size="item.height * 2 - 20" unit="upx"
+					background="#ffffff" foreground="#000000" pdground="#000000" :lv="3" :onval="true"
+					:loadMake="true" />
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import {
+		getSharePoster,
+		bindLink
+	} from "@/utils/bill";
+	import {
+		authorize,
+		backOpenId
+	} from "@/common/authorize";
+	import {
+		openidLogin
+	} from "@/utils/login";
+	import {
+		mapGetters
+	} from "vuex";
+	import tkiQrcode from "tki-qrcode";
+	import wechat from "@/common/wechat";
+	export default {
+		data() {
+			return {
+				options: {},
+				posterConfig: [],
+				billDetail: {},
+				bg: {},
+				defaultHead: require("../../static/image/defhead.png"),
+			};
+		},
+		onLoad(options) {
+			this.options = options;
+			uni.setStorageSync("BillHerf", window.location.href);
+		},
+		onShow() {
+			this.backUrl();
+			backOpenId(this.login);
+			authorize();
+			this.getSharePoster();
+		},
+		components: {
+			tkiQrcode,
+		},
+
+		methods: {
+			getSharePoster() {
+				getSharePoster(this.options).then((res) => {
+					let nowTime = Date.parse(new Date()) / 1000;
+					if (
+						res.status != 1 ||
+						nowTime < res.startTime ||
+						nowTime > res.endTime
+					) {
+						uni.showModal({
+							title: "提示",
+							content: res.status != 1 ?
+								"活动已关闭" :
+								nowTime < res.startTime ?
+								"未到活动开启时间" :
+								"活动已过期",
+							showCancel: false,
+							success: (resst) => {
+								// uni.navigateBack();
+							},
+						});
+						return;
+					}
+					this.billDetail = res;
+					console.log(this.billDetail,'this.billDetail')
+					uni.setNavigationBarTitle({
+						title: this.billDetail.activityName
+					})
+					let posterConfig = JSON.parse(res.posterConfig);
+					this.posterConfig = this.changeData(posterConfig);
+					this.share(posterConfig);
+				});
+			},
+			changeData(data) {
+				Object.keys(data)
+					.filter((key) => {
+						if (key == "distribution" || key == "cardCode") {
+							data[key].codeUrl =
+								this.billDetail[
+									key == "distribution" ? "urlCard" : "urlActivity"
+								];
+						}
+						return data[key].checked;
+					})
+					.forEach((key) => this.backStyle(data[key].css));
+				return Object.values(data);
+			},
+			px2rpx(data) {
+				if (!data.includes("px")) {
+					return data;
+				}
+				return data.split("px")[0] * 2 + "rpx";
+			},
+			backPosition(item) {
+				return {
+					position: "absolute",
+					left: item.left * 2 + "rpx",
+					top: item.top * 2 + "rpx",
+					width: item.width * 2 + "rpx",
+					height: item.height * 2 + "rpx",
+				};
+			},
+			backStyle(item) {
+				Object.keys(item).forEach((e) => {
+					item[e] = this.px2rpx(item[e]);
+				});
+			},
+			bindLink() {
+				bindLink({
+					linkCode: this.options.linkCode,
+					distributionId: this.options.distributionId,
+				});
+			},
+			share(data) {
+				wechat
+					.share({
+						title: this.billDetail.activityName,
+						desc: data.advertise.name,
+						imgUrl: this.$method.splitImgHost(data.goods.name),
+						link: this.backUrl(),
+					})
+					.then((res) => {
+						this.$method.isLogin() && this.bindLink();
+					});
+			},
+			login(openid) {
+				openidLogin({
+					openid
+				}).then((data) => {
+					this.$store.commit("LOGIN_CB", data);
+					this.$store.dispatch("getUserInfo");
+				});
+			},
+			backUrl() {
+				let url = window.location.href;
+				if (url.includes("&code")) {
+					url = url.split("&code")[0];
+				}
+				return url;
+			},
+		},
+		computed: {
+			...mapGetters(["userInfo"]),
+		},
+	};
+</script>
+
+<style lang="scss" scoped>
+	.bill-ward {
+		position: relative;
+
+		.code-box {
+			padding: 10rpx;
+			background: #ffffff;
+			box-sizing: border-box;
+		}
+
+		.bill-head {
+			position: absolute;
+			left: 30rpx;
+			top: 20rpx;
+			z-index: 100;
+
+			image {
+				width: 60rpx;
+				height: 60rpx;
+				border-radius: 50%;
+			}
+		}
+	}
+</style>

+ 288 - 97
pages/bill/index.vue

@@ -1,24 +1,49 @@
 <template>
-	<view class="bill-ward">
-		<view class="bill-head" v-if="userInfo">
-			<image :src="
-          userInfo.avatar
-            ? $method.splitImgHost(userInfo.avatar, true)
-            : defaultHead
-        "></image>
+	<view class="bill_view">
+		<view class="header">
+			<img src="@/static/image/logo.png" alt="">
 		</view>
-		<view v-for="(item, index) in posterConfig" :key="index" :style="backPosition(item)">
-			<image :style="item.css" v-if="(item.type == 0 || item.type == 2) && item.checked"
-				:src="$method.splitImgHost(item.name)" mode="" />
-
-			<view :style="item.css" v-if="item.type == 1" style="white-space: pre-wrap">
-				{{ item.name }}
+		<view class="zt">
+			<img src="@/static/image/zt.png" alt="">
+		</view>
+		<view class="content" v-for="(i,k) in goodsList" :key="k">
+			<view class="title">
+				{{i.title}}
 			</view>
-
-			<view class="code-box" v-if="item.type == 3 && item.checked">
-				<tki-qrcode :cid="item.codeUrl" ref="qrcode" :val="item.codeUrl" :size="item.height * 2 - 20" unit="upx"
-					background="#ffffff" foreground="#000000" pdground="#000000" :lv="3" :onval="true"
-					:loadMake="true" />
+			<view class="content_box" v-for="(item,index) in i.list" :key="index">
+				<view class="imgBox">
+					<img src="@/static/image/login_bg.jpg" alt="">
+					<view class="bg_img" v-if="item.videoUrl" @click="playVideo(item.videoUrl)">
+						<img src="@/static/image/play.png" alt="">
+					</view>
+				</view>
+				<view class="contentBox">
+					<view class="title_li">
+						{{item.goodsName}}
+					</view>
+					<view class="remark">
+						{{item.remark}}
+					</view>
+					<view class="footer">
+						<view class="price">一口价:<text style="color: red;">¥</text><text
+								class="price_li">{{item.price}}</text></view>
+						<view class="btn">
+							立即购买
+						</view>
+					</view>
+				</view>
+			</view>
+		</view>
+		<view class="footer">
+			<img src="@/static/image/xcxqrcode.jpg" alt="">
+			<view style="color: yellow;">
+				扫码公众号
+			</view>
+			<view>
+				服务热线:020-87085982
+			</view>
+			<view>
+				云学堂网址:web.xyyxt.net
 			</view>
 		</view>
 	</view>
@@ -36,19 +61,92 @@
 	import {
 		openidLogin
 	} from "@/utils/login";
-	import {
-		mapGetters
-	} from "vuex";
-	import tkiQrcode from "tki-qrcode";
 	import wechat from "@/common/wechat";
 	export default {
 		data() {
 			return {
+				goodsList: [{
+					title: "阶段课程",
+					list: [{
+						goodsName: "精讲班1",
+						remark: "备考导学 课程精讲 巧学白皮书",
+						price: "99",
+						img: "",
+						videoUrl: "123"
+					}, {
+						goodsName: "精讲班2",
+						remark: "备考导学 课程精讲 实务通关 巧学白皮书 精选600题 真题字典",
+						price: "599",
+						img: "",
+						videoUrl: ""
+					}, {
+						goodsName: "精讲班1",
+						remark: "备考导学 课程精讲 巧学白皮书",
+						price: "99",
+						img: "",
+						videoUrl: "123"
+					}, {
+						goodsName: "精讲班2",
+						remark: "备考导学 课程精讲 实务通关 巧学白皮书 精选600题 真题字典",
+						price: "599",
+						img: "",
+						videoUrl: ""
+					}, {
+						goodsName: "精讲班1",
+						remark: "备考导学 课程精讲 巧学白皮书",
+						price: "99",
+						img: "",
+						videoUrl: "123"
+					}, {
+						goodsName: "精讲班2",
+						remark: "备考导学 课程精讲 实务通关 巧学白皮书 精选600题 真题字典",
+						price: "599",
+						img: "",
+						videoUrl: ""
+					}]
+				}, {
+					title: "精选课程",
+					list: [{
+						goodsName: "精讲班1",
+						remark: "备考导学 课程精讲 巧学白皮书",
+						price: "99",
+						img: "",
+						videoUrl: "123"
+					}, {
+						goodsName: "精讲班2",
+						remark: "备考导学 课程精讲 实务通关 巧学白皮书 精选600题 真题字典",
+						price: "599",
+						img: "",
+						videoUrl: ""
+					}, {
+						goodsName: "精讲班1",
+						remark: "备考导学 课程精讲 巧学白皮书",
+						price: "99",
+						img: "",
+						videoUrl: "123"
+					}, {
+						goodsName: "精讲班2",
+						remark: "备考导学 课程精讲 实务通关 巧学白皮书 精选600题 真题字典",
+						price: "599",
+						img: "",
+						videoUrl: ""
+					}, {
+						goodsName: "精讲班1",
+						remark: "备考导学 课程精讲 巧学白皮书",
+						price: "99",
+						img: "",
+						videoUrl: "123"
+					}, {
+						goodsName: "精讲班2",
+						remark: "备考导学 课程精讲 实务通关 巧学白皮书 精选600题 真题字典",
+						price: "599",
+						img: "",
+						videoUrl: ""
+					}]
+				}],
+
 				options: {},
-				posterConfig: [],
 				billDetail: {},
-				bg: {},
-				defaultHead: require("../../static/image/defhead.png"),
 			};
 		},
 		onLoad(options) {
@@ -57,15 +155,15 @@
 		},
 		onShow() {
 			this.backUrl();
-			backOpenId(this.login);
+			backOpenId();
 			authorize();
 			this.getSharePoster();
 		},
-		components: {
-			tkiQrcode,
-		},
 
 		methods: {
+			playVideo(url) {
+				console.log("播放视频", url)
+			},
 			getSharePoster() {
 				getSharePoster(this.options).then((res) => {
 					let nowTime = Date.parse(new Date()) / 1000;
@@ -77,10 +175,8 @@
 						uni.showModal({
 							title: "提示",
 							content: res.status != 1 ?
-								"活动已关闭" :
-								nowTime < res.startTime ?
-								"未到活动开启时间" :
-								"活动已过期",
+								"活动已关闭" : nowTime < res.startTime ?
+								"未到活动开启时间" : "活动已过期",
 							showCancel: false,
 							success: (resst) => {
 								// uni.navigateBack();
@@ -89,49 +185,13 @@
 						return;
 					}
 					this.billDetail = res;
-					console.log(this.billDetail,'this.billDetail')
 					uni.setNavigationBarTitle({
 						title: this.billDetail.activityName
 					})
 					let posterConfig = JSON.parse(res.posterConfig);
-					this.posterConfig = this.changeData(posterConfig);
 					this.share(posterConfig);
 				});
 			},
-			changeData(data) {
-				Object.keys(data)
-					.filter((key) => {
-						if (key == "distribution" || key == "cardCode") {
-							data[key].codeUrl =
-								this.billDetail[
-									key == "distribution" ? "urlCard" : "urlActivity"
-								];
-						}
-						return data[key].checked;
-					})
-					.forEach((key) => this.backStyle(data[key].css));
-				return Object.values(data);
-			},
-			px2rpx(data) {
-				if (!data.includes("px")) {
-					return data;
-				}
-				return data.split("px")[0] * 2 + "rpx";
-			},
-			backPosition(item) {
-				return {
-					position: "absolute",
-					left: item.left * 2 + "rpx",
-					top: item.top * 2 + "rpx",
-					width: item.width * 2 + "rpx",
-					height: item.height * 2 + "rpx",
-				};
-			},
-			backStyle(item) {
-				Object.keys(item).forEach((e) => {
-					item[e] = this.px2rpx(item[e]);
-				});
-			},
 			bindLink() {
 				bindLink({
 					linkCode: this.options.linkCode,
@@ -142,22 +202,14 @@
 				wechat
 					.share({
 						title: this.billDetail.activityName,
-						desc: data.advertise.name,
-						imgUrl: this.$method.splitImgHost(data.goods.name),
+						desc: "",
+						imgUrl: "",
 						link: this.backUrl(),
 					})
 					.then((res) => {
 						this.$method.isLogin() && this.bindLink();
 					});
 			},
-			login(openid) {
-				openidLogin({
-					openid
-				}).then((data) => {
-					this.$store.commit("LOGIN_CB", data);
-					this.$store.dispatch("getUserInfo");
-				});
-			},
 			backUrl() {
 				let url = window.location.href;
 				if (url.includes("&code")) {
@@ -166,32 +218,171 @@
 				return url;
 			},
 		},
-		computed: {
-			...mapGetters(["userInfo"]),
-		},
 	};
 </script>
 
 <style lang="scss" scoped>
-	.bill-ward {
-		position: relative;
+	.bill_view {
+		min-height: 100vh;
+		background: url("../../static/image/background.png") repeat center center;
+		background-size: contain;
+
+		&>.header {
+			height: 160rpx;
+			display: flex;
+			align-items: center;
 
-		.code-box {
-			padding: 10rpx;
-			background: #ffffff;
-			box-sizing: border-box;
+			img {
+				padding-left: 50rpx;
+				width: 300rpx;
+				height: 80rpx;
+			}
+		}
+
+		&>.zt {
+			&>img {
+				width: 100%;
+			}
 		}
 
-		.bill-head {
-			position: absolute;
-			left: 30rpx;
-			top: 20rpx;
-			z-index: 100;
+		&>.content {
+			margin: 20rpx;
+			background: linear-gradient(to bottom, #ffd4b8, #af2526, #fed1b5);
+			border-radius: 8rpx;
+			padding: 20rpx;
+
+			&>.title {
+				padding-bottom: 16rpx;
+				font-weight: bold;
+				font-size: 32rpx;
+			}
+
+			&>.content_box {
+				background-color: #fff;
+				display: flex;
+				margin-bottom: 18rpx;
+				padding: 20rpx;
+				border-radius: 8rpx;
 
-			image {
-				width: 60rpx;
-				height: 60rpx;
-				border-radius: 50%;
+				&:last-child {
+					margin-bottom: 0rpx;
+				}
+
+				&>.imgBox {
+					width: 164rpx;
+					height: 164rpx;
+					border-radius: 8rpx;
+					overflow: hidden;
+					margin-right: 20rpx;
+					position: relative;
+
+					&>img {
+						width: 100%;
+						height: 100%;
+					}
+
+					&>.bg_img {
+						position: absolute;
+						top: 0;
+						left: 0;
+						width: 164rpx;
+						height: 164rpx;
+						background-color: rgba(0, 0, 0, .3);
+						display: flex;
+						align-items: center;
+						justify-content: center;
+
+						&>img {
+							width: 50rpx;
+							height: 50rpx;
+						}
+					}
+				}
+
+				&>.contentBox {
+					flex: 1;
+					display: flex;
+					flex-direction: column;
+
+					&>.title_li {
+						font-size: 30rpx;
+						font-weight: bold;
+						overflow: hidden;
+						word-break: break-all;
+						/* break-all(允许在单词内换行。) */
+						text-overflow: ellipsis;
+						/* 超出部分省略号 */
+						display: -webkit-box;
+						/** 对象作为伸缩盒子模型显示 **/
+						-webkit-box-orient: vertical;
+						-webkit-line-clamp: 1; //两行
+					}
+
+					&>.remark {
+						font-size: 26rpx;
+						margin: 10rpx 0rpx;
+						flex: 1;
+						line-height: 38rpx;
+						color: #999;
+						overflow: hidden;
+						word-break: break-all;
+						/* break-all(允许在单词内换行。) */
+						text-overflow: ellipsis;
+						/* 超出部分省略号 */
+						display: -webkit-box;
+						/** 对象作为伸缩盒子模型显示 **/
+						-webkit-box-orient: vertical;
+						-webkit-line-clamp: 2; //两行
+					}
+
+					&>.footer {
+						font-size: 24rpx;
+						display: flex;
+						align-items: center;
+						justify-content: space-between;
+
+						&>.price {
+							&>.price_li {
+								font-size: 28rpx;
+								font-weight: bold;
+								color: red;
+							}
+						}
+
+						&>.btn {
+							background: linear-gradient(to right, #FF846D, #F82A37);
+							color: #fff;
+							border-radius: 100rpx;
+							font-weight: bold;
+							padding: 6rpx 20rpx;
+						}
+					}
+				}
+			}
+		}
+
+		&>.footer {
+			margin: 20rpx;
+			background: linear-gradient(to bottom, #ffd4b8, #af2526, #fed1b5);
+			border-radius: 8rpx;
+			display: flex;
+			flex-direction: column;
+			align-items: center;
+			padding: 40rpx 0rpx;
+			font-size: 28rpx;
+
+			&>img {
+				width: 160rpx;
+				height: 160rpx;
+				margin-bottom: 20rpx;
+			}
+
+			&>view {
+				margin-bottom: 20rpx;
+
+				&:last-child {
+					margin-bottom: 0rpx;
+				}
 			}
 		}
 	}

BIN
static/image/background.png


BIN
static/image/logo.png


BIN
static/image/play.png


BIN
static/image/xcxqrcode.jpg


BIN
static/image/zt.png


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/common/main.js.map


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/common/runtime.js.map


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/common/vendor.js.map


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index.js.map


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uview-ui/components/u-icon/u-icon.js.map


Неке датотеке нису приказане због велике количине промена