hwq 3 years ago
parent
commit
7e76b0dcab
100 changed files with 3465 additions and 131 deletions
  1. 17 0
      api/market.js
  2. 7 0
      api/product.js
  3. 16 0
      api/set.js
  4. 8 0
      api/user.js
  5. 1201 0
      components/tki-qrcode/qrcode.js
  6. 210 0
      components/tki-qrcode/tki-qrcode.vue
  7. 17 5
      manifest.json
  8. 32 7
      pages.json
  9. 8 3
      pages/assets/assets.vue
  10. 2 1
      pages/assets/details.vue
  11. 9 5
      pages/assets/myPing.vue
  12. 99 57
      pages/assets/recharge.vue
  13. 5 1
      pages/assets/teamDetails.vue
  14. 91 0
      pages/index/article.vue
  15. 36 11
      pages/index/index.vue
  16. 8 0
      pages/market/details.vue
  17. 514 2
      pages/market/market.vue
  18. 7 7
      pages/public/register.vue
  19. 7 3
      pages/user/extension.vue
  20. 160 0
      pages/user/fuli.vue
  21. 354 0
      pages/user/rake.vue
  22. 58 28
      pages/user/user.vue
  23. BIN
      static/img/gift.png
  24. BIN
      static/img/img01.png
  25. BIN
      static/img/img28.png
  26. BIN
      static/img/img51.png
  27. 1 1
      store/index.js
  28. 9 0
      unpackage/cache/appleConfig.ini
  29. 3 0
      unpackage/cache/certdata
  30. BIN
      unpackage/cache/wgt/__UNI__3CDE968/.manifest/google-keystore.keystore
  31. BIN
      unpackage/cache/wgt/__UNI__3CDE968/.manifest/icon-android-hdpi.png
  32. BIN
      unpackage/cache/wgt/__UNI__3CDE968/.manifest/icon-android-xhdpi.png
  33. BIN
      unpackage/cache/wgt/__UNI__3CDE968/.manifest/icon-android-xxhdpi.png
  34. BIN
      unpackage/cache/wgt/__UNI__3CDE968/.manifest/icon-android-xxxhdpi.png
  35. BIN
      unpackage/cache/wgt/__UNI__3CDE968/.manifest/splash-android-hdpi.png
  36. BIN
      unpackage/cache/wgt/__UNI__3CDE968/.manifest/splash-android-xhdpi.png
  37. BIN
      unpackage/cache/wgt/__UNI__3CDE968/.manifest/splash-android-xxhdpi.png
  38. 0 0
      unpackage/cache/wgt/__UNI__3CDE968/__uniappchooselocation.js
  39. BIN
      unpackage/cache/wgt/__UNI__3CDE968/__uniapperror.png
  40. 0 0
      unpackage/cache/wgt/__UNI__3CDE968/__uniappes6.js
  41. 0 0
      unpackage/cache/wgt/__UNI__3CDE968/__uniappopenlocation.js
  42. 0 0
      unpackage/cache/wgt/__UNI__3CDE968/__uniapppicker.js
  43. 6 0
      unpackage/cache/wgt/__UNI__3CDE968/__uniappquill.js
  44. 0 0
      unpackage/cache/wgt/__UNI__3CDE968/__uniappquillimageresize.js
  45. 0 0
      unpackage/cache/wgt/__UNI__3CDE968/__uniappscan.js
  46. BIN
      unpackage/cache/wgt/__UNI__3CDE968/__uniappsuccess.png
  47. 25 0
      unpackage/cache/wgt/__UNI__3CDE968/__uniappview.html
  48. 3 0
      unpackage/cache/wgt/__UNI__3CDE968/app-config-service.js
  49. 1 0
      unpackage/cache/wgt/__UNI__3CDE968/app-config.js
  50. 0 0
      unpackage/cache/wgt/__UNI__3CDE968/app-service.js
  51. 0 0
      unpackage/cache/wgt/__UNI__3CDE968/app-view.js
  52. 0 0
      unpackage/cache/wgt/__UNI__3CDE968/manifest.json
  53. 551 0
      unpackage/cache/wgt/__UNI__3CDE968/static/css/cmy.css
  54. BIN
      unpackage/cache/wgt/__UNI__3CDE968/static/error/emptyCart.png
  55. BIN
      unpackage/cache/wgt/__UNI__3CDE968/static/error/errorImage.jpg
  56. BIN
      unpackage/cache/wgt/__UNI__3CDE968/static/error/missing-face.png
  57. BIN
      unpackage/cache/wgt/__UNI__3CDE968/static/img/Close.png
  58. BIN
      unpackage/cache/wgt/__UNI__3CDE968/static/img/appointment1.png
  59. BIN
      unpackage/cache/wgt/__UNI__3CDE968/static/img/assets-bg.png
  60. BIN
      unpackage/cache/wgt/__UNI__3CDE968/static/img/bgTip2.png
  61. BIN
      unpackage/cache/wgt/__UNI__3CDE968/static/img/chong.png
  62. BIN
      unpackage/cache/wgt/__UNI__3CDE968/static/img/eyes.png
  63. BIN
      unpackage/cache/wgt/__UNI__3CDE968/static/img/fanhui.png
  64. BIN
      unpackage/cache/wgt/__UNI__3CDE968/static/img/gift.png
  65. BIN
      unpackage/cache/wgt/__UNI__3CDE968/static/img/img01.png
  66. BIN
      unpackage/cache/wgt/__UNI__3CDE968/static/img/img16.png
  67. BIN
      unpackage/cache/wgt/__UNI__3CDE968/static/img/img28.png
  68. BIN
      unpackage/cache/wgt/__UNI__3CDE968/static/img/img43.png
  69. BIN
      unpackage/cache/wgt/__UNI__3CDE968/static/img/img51.png
  70. BIN
      unpackage/cache/wgt/__UNI__3CDE968/static/img/index1.png
  71. BIN
      unpackage/cache/wgt/__UNI__3CDE968/static/img/index2.png
  72. BIN
      unpackage/cache/wgt/__UNI__3CDE968/static/img/index3.png
  73. BIN
      unpackage/cache/wgt/__UNI__3CDE968/static/img/index4.png
  74. BIN
      unpackage/cache/wgt/__UNI__3CDE968/static/img/index5.png
  75. BIN
      unpackage/cache/wgt/__UNI__3CDE968/static/img/index6.png
  76. BIN
      unpackage/cache/wgt/__UNI__3CDE968/static/img/index7.png
  77. BIN
      unpackage/cache/wgt/__UNI__3CDE968/static/img/jiantou.png
  78. BIN
      unpackage/cache/wgt/__UNI__3CDE968/static/img/kefu.png
  79. BIN
      unpackage/cache/wgt/__UNI__3CDE968/static/img/lianxi.png
  80. BIN
      unpackage/cache/wgt/__UNI__3CDE968/static/img/ling.png
  81. BIN
      unpackage/cache/wgt/__UNI__3CDE968/static/img/log.png
  82. BIN
      unpackage/cache/wgt/__UNI__3CDE968/static/img/myTeam.png
  83. BIN
      unpackage/cache/wgt/__UNI__3CDE968/static/img/password.png
  84. BIN
      unpackage/cache/wgt/__UNI__3CDE968/static/img/paySuccess.png
  85. BIN
      unpackage/cache/wgt/__UNI__3CDE968/static/img/pgTip.png
  86. BIN
      unpackage/cache/wgt/__UNI__3CDE968/static/img/phone.png
  87. BIN
      unpackage/cache/wgt/__UNI__3CDE968/static/img/pinggou.png
  88. BIN
      unpackage/cache/wgt/__UNI__3CDE968/static/img/pwd.png
  89. BIN
      unpackage/cache/wgt/__UNI__3CDE968/static/img/qian.png
  90. BIN
      unpackage/cache/wgt/__UNI__3CDE968/static/img/rengouBg.png
  91. BIN
      unpackage/cache/wgt/__UNI__3CDE968/static/img/set.png
  92. BIN
      unpackage/cache/wgt/__UNI__3CDE968/static/img/share-bg.png
  93. BIN
      unpackage/cache/wgt/__UNI__3CDE968/static/img/share.png
  94. BIN
      unpackage/cache/wgt/__UNI__3CDE968/static/img/tab.png
  95. BIN
      unpackage/cache/wgt/__UNI__3CDE968/static/img/ti.png
  96. BIN
      unpackage/cache/wgt/__UNI__3CDE968/static/img/tongz-bg.png
  97. BIN
      unpackage/cache/wgt/__UNI__3CDE968/static/img/user-bg.png
  98. BIN
      unpackage/cache/wgt/__UNI__3CDE968/static/img/weixin.png
  99. BIN
      unpackage/cache/wgt/__UNI__3CDE968/static/img/xiaj.png
  100. BIN
      unpackage/cache/wgt/__UNI__3CDE968/static/img/yan.png

+ 17 - 0
api/market.js

@@ -0,0 +1,17 @@
+import request from '@/utils/request'
+
+export function mining(data) {
+	return request({
+		url: '/api/mining',
+		method: 'get',
+		data
+	});
+}
+
+export function buyMining(data,id) {
+	return request({
+		url: '/api/mining/'+id,
+		method: 'post',
+		data
+	});
+}

+ 7 - 0
api/product.js

@@ -24,3 +24,10 @@ export function buylala(data,id) {
 		data
 	});
 }
+export function details(data,id) {
+	return request({
+		url: '/api/article/details/'+id,
+		method: 'GET',
+		data
+	});
+}

+ 16 - 0
api/set.js

@@ -25,7 +25,23 @@ export function registerReset(data) {
 		data
 	});
 }
+//设置下级服务费比例
+export function setServiceRatio(uid,data) {
+	return request({
+		url: '/api/spread/service/'+uid,
+		method: 'post',
+		data
+	})
+}
 
+//设置下级佣金比例
+export function setRatio(uid,data) {
+	return request({
+		url: '/api/spread/ratio/'+uid,
+		method: 'post',
+		data
+	})
+}
 //绑定手机
 export function binding(data) {
 	return request({

+ 8 - 0
api/user.js

@@ -67,3 +67,11 @@ export function loadIndexs(data) {
 		data
 	});
 }
+//获取版本
+export function version(data) {
+	return request({
+		url: '/api/version',
+		method: 'GET',
+		data
+	})
+}

+ 1201 - 0
components/tki-qrcode/qrcode.js

@@ -0,0 +1,1201 @@
+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) {
+                                    options.cbResult(res.tempFilePath)
+                                }
+                            },
+                            fail: function (res) {
+                                if (options.cbResult) {
+                                    options.cbResult(res)
+                                }
+                            },
+                            complete: function () {
+                                if (options.showLoading){
+                                    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

+ 210 - 0
components/tki-qrcode/tki-qrcode.vue

@@ -0,0 +1,210 @@
+<template xlang="wxml" minapp="mpvue">
+	<view class="tki-qrcode">
+		<!-- #ifndef MP-ALIPAY -->
+		<canvas class="tki-qrcode-canvas" :canvas-id="cid" :style="{width:cpSize+'px',height:cpSize+'px'}" />
+		<!-- #endif -->
+		<!-- #ifdef MP-ALIPAY -->
+		<canvas :id="cid" :width="cpSize" :height="cpSize" class="tki-qrcode-canvas" />
+		<!-- #endif -->
+		<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>

+ 17 - 5
manifest.json

@@ -3,7 +3,7 @@
     "appid" : "__UNI__3CDE968",
     "description" : "",
     "versionName" : "1.0.0",
-    "versionCode" : "100",
+    "versionCode" : 100,
     "transformPx" : false,
     "app-plus" : {
         /* 5+App特有相关 */
@@ -51,9 +51,21 @@
                 "androidStyle" : "default",
                 "iosStyle" : "common",
                 "android" : {
-                    "hdpi" : "unpackage/pz/启动图/qd480x762.png",
-                    "xhdpi" : "unpackage/pz/启动图/qd720x1242.png",
-                    "xxhdpi" : "unpackage/pz/启动图/qd1080x1882.png"
+                    "hdpi" : "C:/Users/Administrator/Desktop/137a955def8d57faac7e2f62492c22d.png",
+                    "xhdpi" : "C:/Users/Administrator/Desktop/137a955def8d57faac7e2f62492c22d.png",
+                    "xxhdpi" : "C:/Users/Administrator/Desktop/137a955def8d57faac7e2f62492c22d.png"
+                },
+                "ios" : {
+                    "iphone" : {
+                        "portrait-896h@3x" : "unpackage/pz/启动图/qd1242x2688.png",
+                        "portrait-896h@2x" : "unpackage/pz/启动图/qd828x1792.png",
+                        "iphonex" : "unpackage/pz/启动图/qd1125x2436.png",
+                        "retina55" : "unpackage/pz/启动图/qd1242x2208.png",
+                        "retina47" : "unpackage/pz/启动图/qd750x1334.png",
+                        "retina40" : "unpackage/pz/启动图/qd640x1136.png",
+                        "retina35" : "unpackage/pz/启动图/qd640x960.png"
+                    },
+                    "storyboard" : "C:/Users/Administrator/Desktop/苹果/LALA.zip"
                 }
             },
             "icons" : {
@@ -111,7 +123,7 @@
         "devServer" : {
             "proxy" : {
                 "/api" : {
-                    "target" : "http://rpg.frp.liuniu946.com/api",
+                    "target" : "http://www.lalanft.net/api",
                     // "changeOrigin": true,
                     "pathRewrite" : {
                         "/api" : "" // rewrite path

+ 32 - 7
pages.json

@@ -36,6 +36,18 @@
 				"navigationBarTitleText": "兑换"
 			}
 		},
+		{
+			"path": "pages/market/details",
+			"style": {
+				"navigationBarTitleText": "云算力详情"
+			}
+		},
+		{
+			"path": "pages/user/rake",
+			"style": {
+				"navigationBarTitleText": "矿机列表"
+			}
+		},
 		{
 			"path": "pages/index/datile",
 			"style": {
@@ -88,7 +100,7 @@
 		{
 			"path": "pages/money/payment",
 			"style": {
-				"navigationBarTitleText": "支付密码"
+				"navigationBarTitleText": "修改交易密码"
 			}
 		},
 		{
@@ -98,6 +110,13 @@
 				
 			}
 		},
+		{
+			"path": "pages/user/fuli",
+			"style": {
+				"navigationBarTitleText": "拼购福利"
+				
+			}
+		},
 		{
 			"path": "pages/set/set",
 			"style": {
@@ -276,6 +295,12 @@
 				"navigationBarTitleText": "提现账号"
 			}
 		},
+		{
+			"path": "pages/index/article",
+			"style": {
+				"navigationBarTitleText": "通知"
+			}
+		},
 		{
 			"path": "pages/money/withdrawal",
 			"style": {
@@ -323,12 +348,12 @@
 				"selectedIconPath": "static/tabBar/tab-home-current.png",
 				"text": "首页"
 			},
-			// {
-			// 	"pagePath": "pages/market/market",
-			// 	"iconPath": "static/tabBar/tab-market.png",
-			// 	"selectedIconPath": "static/tabBar/tab-market-current.png",
-			// 	"text": "市场"
-			// },
+			{
+				"pagePath": "pages/market/market",
+				"iconPath": "static/tabBar/tab-market.png",
+				"selectedIconPath": "static/tabBar/tab-market-current.png",
+				"text": "市场"
+			},
 			{
 				"pagePath": "pages/assets/assets",
 				"iconPath": "static/tabBar/tab-assets.png",

+ 8 - 3
pages/assets/assets.vue

@@ -57,6 +57,10 @@
 						<view class="name">可用</view>
 						<view class="tpl">{{ ls.money.money * 1 }}</view>
 					</view>
+					<view class="cell-tpl tips">
+						<view class="name">冻结中</view>
+						<view class="tpl">{{ ls.lock_money * 1 }}</view>
+					</view>
 					<view class="cell-tpl tip-box">
 						<view class="name">折合(USDT)</view>
 						<view class="tpl clamp">{{ ls.usdt * 1 }}</view>
@@ -293,6 +297,7 @@ page {
 	}
 	.cell-list {
 		width: 100%;
+		justify-content: space-between;
 		.cell-tpl {
 			text-align: left;
 			.name {
@@ -304,14 +309,14 @@ page {
 		}
 		.tip-box {
 			text-align: right;
-			width: 40%;
+			// width: 40%;
 		}
 		.tip-tpl {
 			text-align: center;
-			width: 30%;
+			// width: 30%;
 		}
 		.tips {
-			width: 30%;
+			// width: 30%;
 		}
 	}
 }

+ 2 - 1
pages/assets/details.vue

@@ -25,7 +25,8 @@
 					<view class="num clamp" v-if="ls.pm === 0">- {{ ls.number }}</view>
 					<view class="num clamp" v-else>+ {{ ls.number }}</view>
 				</view>
-				<view class="tpl-time">{{ ls.add_time }}</view>
+				<view class="tpl-time" v-if="ls.status == 1">{{ ls.add_time }}</view>
+				<view class="tpl-time" v-if="ls.status == 0">待发放</view>
 			</view>
 		</view>
 		<view class="empty-box" v-show="list.length == 0"><u-empty></u-empty></view>

+ 9 - 5
pages/assets/myPing.vue

@@ -35,8 +35,8 @@
 					<view class="log"><image src="../../static/img/pgTip.png" mode="scaleToFill"></image></view>
 					<view class="name clamp">{{ item.name }}</view>
 					<view class="lun">
-						<text>{{ item.lun }}</text>
-						<text v-if="item.status == 0">未开始</text>
+						<text>{{ item.lun }}{{ item.table }}</text>
+						<text v-if="item.status == 0">待开团</text>
 						<text v-if="item.status == 1">已拼中</text>
 						<text v-if="item.status == 2">未拼中</text>
 						<text v-if="item.status == 3">已失败</text>
@@ -68,8 +68,8 @@ import { pinkLog, systemWallet } from '@/api/finance.js';
 export default {
 	data() {
 		return {
-			// happy: '0.00',
-			// luck: '0.00',
+			happy: '0.00',
+			luck: '0.00',
 			// honor: '0.00',
 			// usdt: '0.00',
 			// fil: '0.00',
@@ -120,11 +120,14 @@ export default {
 			})
 				.then(e => {
 					const data = e.data.list.map(ls => {
-						const lun = ls.group_num > 0 ? ls.group_num + '轮' : '';
+						const lun = ls.group_num > 0 ? '第'+ ls.group_num + '轮' : '';
+						console.log(ls.table)
+						const table = ls.table_id > 0 ? '第'+ ls.table_id + '桌' : '';
 						const time = new Date(ls.pay_time * 1000);
 						return {
 							name: ls.activity.name,
 							lun,
+							table,
 							fen: 1,
 							money: +ls.cost,
 							type: ls.cost_money_type,
@@ -135,6 +138,7 @@ export default {
 						};
 					});
 					that.list.push(...data);
+					console.log(that.list,"xiangqing")
 					// 判断是否还有数据
 					if (that.list.length >= that.limit) {
 						that.page++;

+ 99 - 57
pages/assets/recharge.vue

@@ -3,101 +3,143 @@
 		<view class="top">
 			<view class="title flex">
 				<view class="xian"></view>
-				<view class="title-font">
-					充币二维码TRC20
-				</view>
+				<view class="title-font">充币二维码TRC20</view>
 			</view>
 			<view class="erweima-box">
-				<view class="erweima-font">
-					请转入USDT
-				</view>
+				<view class="erweima-font">请转入USDT</view>
 				<view class="erweima">
-					<image :src="image" mode="scaleToFill"></image>
+					<tki-qrcode
+						:cid="cid"
+						ref="qrcode"
+						:val="num"
+						:size="size"
+						:unit="unit"
+						:background="background"
+						:foreground="foreground"
+						:pdground="pdground"
+						:iconSize="iconSize"
+						:lv="lv"
+						:onval="onval"
+						:loadMake="loadMake"
+						:usingComponents="usingComponents"
+						@result="qrR"
+					/>
 				</view>
+				
 			</view>
-			<view class="btn" @click="domFile">
-				保存二维码
-			</view>
+			<view class="btn" @click="domFile">保存二维码</view>
 		</view>
 		<view class="top">
 			<view class="title flex">
 				<view class="xian"></view>
-				<view class="title-font">
-					充币地址
-				</view>
-			</view>
-			<view class="address">
-				{{num}}
-			</view>
-			<view class="btn" style="margin-top: 50rpx;" @click="setData">
-				复制充币地址
+				<view class="title-font">充币地址</view>
 			</view>
+			<view class="address">{{ num }}</view>
+			<view class="btn" style="margin-top: 50rpx;" @click="setData">复制充币地址</view>
 		</view>
 		<view class="top info">
-			请勿向上述地址充值人任何非USDT资产,否则资产将不可追回。<br>
-			USDT冲币仅支持ERC2.0以太坊上的资产,其他USDT将无法上帐,请您谅解。<br>
-			您充值至上述地址后,需要整个网络节点确认,1次网络确认后到账,2次网络确认后即可提币。<br>
-			最小充值金额:100USDT,小于最小金额的充值将不会上帐且无法退回。<br>
+			请勿向上述地址充值人任何非USDT资产,否则资产将不可追回。
+			<br />
+			USDT冲币仅支持TRC2.0以太坊上的资产,其他USDT将无法上帐,请您谅解。
+			<br />
+			您充值至上述地址后,需要整个网络节点确认,1次网络确认后到账,2次网络确认后即可提币。
+			<br />
+			最小充值金额:100USDT,小于最小金额的充值将不会上帐且无法退回。
+			<br />
 			请通过IMTOKEN充值,充值时在备注栏填写 个人的用户ID,如果用户ID错误,将导致您无法入账,请注意确认。
 		</view>
 	</view>
 </template>
 
 <script>
+import { wallet } from '@/api/finance.js';
+import tkiQrcode from '@/components/tki-qrcode/tki-qrcode.vue';
 export default {
 	data() {
 		return {
-				num:"TEn1gLWumRj1FfjQ927vSoQrUCqKhuiWV2",
-				image:'../../static/re/re1.png'
-		}
+			num: '',
+			image: '../../static/re/re1.png',
+			cid: 'cid',
+			size: 150,
+			unit: '150',
+			background: '#FFFFFF',
+			foreground: '#000000',
+			pdground: '#000000',
+			icon: '',
+			iconSize: 40,
+			lv: 3,
+			onval: true,
+			loadMake: true,
+			usingComponents: true,
+		};
+	},
+	onLoad() {
+		this.loadData();
 	},
-	methods:{
-		domFile(){
+	methods: {
+		async loadData() {
+			wallet().then(({ data }) => {
+				console.log(data);
+				const arr = Object.keys(data.back);
+				console.log(arr);
+				let ar = [];
+				arr.forEach(e => {
+					console.log(e)
+					ar.push(data.back[e]);
+				});
+				console.log(ar)
+				this.num = ar[0].money.address
+			});
+		},
+		domFile() {
 			uni.downloadFile({
-				url:this.image,
-				success:(e) => {
+				url: this.image,
+				success: e => {
 					console.log(e);
 					uni.showToast({
-						title:'下载成功!'
-					})
+						title: '下载成功!'
+					});
 				},
 				fail(e) {
 					uni.showToast({
-						title:'复制失败',
-						icon:false
-					})
+						title: '复制失败',
+						icon: false
+					});
 					console.log(e);
 				}
-			})
+			});
 		},
-		setData(){
+		qrR(res) {
+			this.src = res;
+		},
+		setData() {
 			// #ifdef APP-PLUS
 			uni.setClipboardData({
-				data:this.num,
-				success: (e) => {
+				data: this.num,
+				success: e => {
 					uni.showToast({
-						title:'复制成功!',
-					})
+						title: '复制成功!'
+					});
 				},
 				fail(e) {
 					uni.showToast({
-						title:'复制失败',
-						icon:false
-					})
+						title: '复制失败',
+						icon: false
+					});
 					console.log(e);
 				}
-			})
+			});
 			// #endif
-			
 		}
 	}
-}
+};
 </script>
 
 <style lang="scss">
-.center,page {
+.center,
+page {
 	height: 100%;
-	background: #F3F3F3;
+	background: #f3f3f3;
 }
 .top:first-child {
 	margin-top: 0;
@@ -106,10 +148,10 @@ export default {
 	margin-top: 20rpx;
 	width: 100%;
 	height: auto;
-	background: #FFFFFF;
+	background: #ffffff;
 	padding: 26rpx 30rpx 50rpx;
 	.erweima-box {
-		margin-top: 77rpx ;
+		margin-top: 77rpx;
 		.erweima-font {
 			text-align: center;
 			font-size: 30rpx;
@@ -119,8 +161,8 @@ export default {
 		}
 		.erweima {
 			margin: 16rpx auto 0;
-			width: 188rpx;
-			height: 188rpx;
+			width: 300rpx;
+			height: 300rpx;
 			image {
 				width: 100%;
 				height: 100%;
@@ -138,7 +180,7 @@ export default {
 	.xian {
 		width: 2rpx;
 		height: 30rpx;
-		background: linear-gradient(90deg, #F95B2F, #60BAB0, #45969B);
+		background: linear-gradient(90deg, #f95b2f, #60bab0, #45969b);
 	}
 	.title-font {
 		padding-left: 16rpx;
@@ -148,18 +190,18 @@ export default {
 		color: #333333;
 	}
 }
-.btn{
+.btn {
 	margin: 36rpx auto 0;
 	width: 500rpx;
 	height: 60rpx;
-	background: linear-gradient(90deg, #60BAB0, #60BAB0, #45969B);
+	background: linear-gradient(90deg, #60bab0, #60bab0, #45969b);
 	border-radius: 30px;
 	line-height: 60rpx;
 	text-align: center;
 	font-size: 26rpx;
 	font-family: PingFang SC;
 	font-weight: 500;
-	color: #FFFFFF;
+	color: #ffffff;
 }
 .info {
 	font-size: 24rpx;

+ 5 - 1
pages/assets/teamDetails.vue

@@ -14,7 +14,7 @@
 				<view class="main-info rule">每轮限购1组,每组限购1份</view>
 				<view class="main-info time">
 					开奖时间:
-					<text>{{item.stopTime}}</text>
+					<text>{{item.time}} 22:00:00</text>
 				</view>
 				<view class="main-info new">该轮预约{{item.bingos+item.fails}}份,拼中{{item.bingos}}份,退回{{item.fails}}份</view>
 			</view>
@@ -73,6 +73,9 @@ export default {
 	},
 	methods: {
 		getDate() {
+			uni.showLoading({
+				title: '加载中'
+			});
 			pinkLogDate({}, this.id)
 				.then(e => {
 					console.log(e)
@@ -107,6 +110,7 @@ export default {
 						order_id:ls.order_id
 					};
 					console.log(this.item)
+					uni.hideLoading();
 				})
 				.catch(e => {
 					console.log(e);

+ 91 - 0
pages/index/article.vue

@@ -0,0 +1,91 @@
+<template>
+	<view class="center">
+		<view class="bg">
+			<image :src="src" mode=""></image>
+		</view>
+		<view class="title">
+			{{ title }}
+		</view>
+		<view v-html="synopsis" class="content">
+			{{ synopsis }}
+		</view>
+	</view>
+</template>
+
+<script>
+import { details } from '@/api/product.js'
+export default {
+	data(){
+		return{
+			src: '',
+			title: '',
+			synopsis:'',
+			time:'',
+		}
+	},
+	onLoad(option) {
+		this.loadData(option.id);
+	},
+	methods: {
+		async loadData(id){
+			let obj = this;
+			details({},id).then(e =>{
+				console.log(e);
+				obj.src = e.data.image_input[0];
+				obj.title = e.data.title;
+				obj.synopsis = e.data.content
+				obj.time = e.data.add_time;
+			})
+		}
+	}
+}
+</script>
+
+<style lang="scss">
+	.center{
+		height: 100%;
+	}
+	.bg{
+		width: 100%;
+		height: 474rpx;
+		image{
+			width: 100%;
+			height: 100%;
+		}
+	}
+	.title{
+		width: 90%;
+		margin: 0 auto;
+		font-size: 40rpx;
+		font-weight: 500;
+		color: #171313;
+		text-overflow: -o-ellipsis-lastline;
+		overflow: hidden;
+		display: -webkit-box;
+		-webkit-line-clamp: 2;
+		-webkit-box-orient: vertical;
+	}
+	.time {
+		width: 90%;
+		margin: 0 auto;
+		margin-top: 16rpx;
+		font-size: 24rpx;
+		font-weight: 500;
+		color: #656b6c;
+	}
+	.content{
+		width: 90%;
+		margin:0 auto;
+		margin-top: 20rpx;
+		font-size: 32rpx;
+		font-weight: 500;
+		color:#777777;
+	}
+	/deep/ .content{
+		img{
+			width: 100%;
+			height: 100%;
+		}
+	}
+</style>
+

+ 36 - 11
pages/index/index.vue

@@ -11,6 +11,7 @@
 				<view class="swiper-dots-item" :key="item" :class="{ action: swiperCurrent + 1 === item }"></view>
 			</template>
 		</view>
+		<!-- 通知栏 -->
 		<view class="tongz flex">
 			<view>
 				<view class="tongz-bg">
@@ -18,14 +19,15 @@
 				</view>
 				<view class="tongz-left flex">
 					<image class="image-left" src="../../static/img/ling.png" mode=""></image>
-					<view class="tongz-font">
+					<!-- <view class="tongz-font">
 						这是一条系统通知消息
-					</view>
+					</view> -->
+					<u-notice-bar style="width: 100%;" mode="vertical" type="none" :volume-icon="false" :more-icon="true" :list="showList.infoList" @click="goDetails"></u-notice-bar>
 				</view>
 			</view>
-			<view class="tongz-right">
+			<!-- <view class="tongz-right">
 				<image src="../../static/img/img16.png" mode=""></image>
-			</view>
+			</view> -->
 		</view>
 		<view class="box-body">
 			<view class="navBox">
@@ -50,7 +52,10 @@
 						<text id="one">{{ item.name }}</text>
 						<text id="two">{{ item.lun }}轮</text>
 					</view>
-					<text id="three">拼购中</text>
+					<view v-if="'childList' in item">
+						<text id="three" v-if="item.childList.next_pink_status">拼购中</text>
+						<text id="three" v-else>拼购中</text>
+					</view>
 				</view>
 				<view class="shopBox-between">
 					<view class="number">
@@ -103,7 +108,7 @@
 						<view class="info-right">{{ money }}</view>
 					</view>
 					<view class="info-box">
-						<view class="info-left">预约手续费:</view>
+						<view class="info-left">预约门票:</view>
 						<view class="info-right">{{ souxu }}</view>
 					</view>
 				</view>
@@ -140,7 +145,8 @@ export default {
 			max: 1,
 			carouselList: [],
 			swiperLength: 0,
-			swiperCurrent: 0
+			swiperCurrent: 0,
+			showList:[]
 		};
 	},
 	//页面加载即刻发生
@@ -150,11 +156,21 @@ export default {
 	methods: {
 		async loadDate() {
 			const obj = this;
+			uni.showLoading({
+				title: '加载中'
+			});
 			loadIndexs({})
 				.then(({ data }) => {
 					console.log(data);
 					obj.carouselList = data.banner;
 					obj.swiperLength = data.banner.length;
+					let arr = data.roll;
+					let ar = []
+					arr.forEach(e => {
+						ar.push(e.info)
+					})
+					arr.infoList = ar;
+					obj.showList = arr;
 					uni.stopPullDownRefresh();
 				})
 				.catch(e => {
@@ -182,6 +198,8 @@ export default {
 				});
 				obj.list = data.list.data;
 				console.log(obj.list,"1111111")
+				uni.stopPullDownRefresh();
+				uni.hideLoading();
 			});
 		},
 		nav(url) {
@@ -191,7 +209,7 @@ export default {
 		},
 		buy(item) {
 			this.money = 1 * item.cost + item.cost_money_type;
-			this.souxu = item.ticket + item.ticket_money_type;
+			this.souxu = 1* item.ticket + item.ticket_money_type;
 			this.id = item.id;
 			this.show = true;
 		},
@@ -226,7 +244,7 @@ export default {
 				.then(e => {
 					this.password = '';
 					this.show1 = false;
-					obj.$api.msg(data.msg);
+					obj.$api.msg("参与拼购成功");
 				})
 				.catch(e => {
 					this.password = '';
@@ -248,7 +266,13 @@ export default {
 			this.swiperCurrent = index;
 			this.titleNViewBackground = this.carouselList[index].background;
 		},
-	}
+		goDetails(e){
+			console.log(this.showList[e].url,"111111")
+			uni.navigateTo({
+				url: this.showList[e].url
+			})
+		}
+	},
 };
 </script>
 <style lang="scss">
@@ -317,6 +341,7 @@ export default {
 		}
 	}
 	.tongz-left {
+		width: 640rpx;
 		.image-left {
 			width: 28rpx;
 			height: 34rpx;
@@ -531,7 +556,7 @@ export default {
 			font-weight: 500;
 			color: #60bab0;
 			text-align: center;
-			line-height: 72rpx;
+			line-height: 70rpx;
 			margin: 40rpx 10rpx;
 		}
 	}

+ 8 - 0
pages/market/details.vue

@@ -0,0 +1,8 @@
+<template>
+</template>
+
+<script>
+</script>
+
+<style>
+</style>

+ 514 - 2
pages/market/market.vue

@@ -1,8 +1,520 @@
 <template>
+	<view class="container">
+		<image class="logo-img" src="../../static/img/img01.png"></image>
+		<view class="list-box">
+			<scroll-view scroll-x class="list-title">
+				<view class="title" 
+				:class="{ blue: tabCurrent == '全部' }"
+				@click="tabClick('全部', 1)"
+				>
+					全部
+				</view>
+				<view
+					class="title"
+					v-for="(ls, index) in moneyTypeList"
+					:key="index"
+					:class="{ blue: tabCurrent == ls.code, grey: ls.has_mining == 0 }"
+					@click="tabClick(ls.code, ls.has_mining)"
+					v-if="ls.name !== 'USDT'"
+				>
+					{{ ls.name }}
+				</view>
+			</scroll-view>
+			<view class="flex_item list-name" v-if="tabCurrent!== '全部'">
+				<view class="name" :class="{ black: tabType == 1 }" @click="tabTypeClick(1)">算力包</view>
+				<view class="name" :class="{ black: tabType == 2 }" @click="tabTypeClick(2)">独享矿机</view>
+				<view class='name' :class="{'black':tabType==3}" @click="tabTypeClick(3)">联合挖矿</view>
+				<!-- <view class='name' :class="{'black':tabCurrent==4}">分类名称</view> -->
+			</view>
+			<view class="jg" v-else></view>
+			<view class="list-cell" v-if="list.length > 0" v-for="(ls, index) in list" :key="index" :class="{'mini-list-cell': tabCurrent === '全部'}">
+				<view class="flex">
+					<view>
+						<view class="cell-title flex">
+							<image :src="ls.logo"></image>
+							<view class="title">{{ ls.name }}</view>
+						</view>
+						<view class="tags">
+							<!-- <view class="cell-tip">{{ ls.first_step_time + ls.second_step_time + ls.third_step_time }}天矿机</view> -->
+							<template v-if="ls.tags[0] !== '0'">
+								<view class="cell-tip" v-for="item  in ls.tags" :key="item">{{item}}</view>
+								<!-- <view class="cell-tag">特价</view> -->
+							</template>
+						</view>
+					</view>
+					<image v-if="ls.stock == 0" class="all-list" src="../../static/img/img51.png"></image>
+				</view>
+				<view class="flex cell-tpl">
+					<view class="tpl">
+						<view class="">单价</view>
+						<view class="" v-if="ls.get_money_type == 'BZZ'">{{ ls._cost_money }}/节点</view>
+						<view class="" v-else>{{ ls._cost_money }}/T</view>
+					</view>
+					<view class="tpl">
+						<view class="">有效算力</view>
+						<view class="" v-if="ls.get_money_type == 'BZZ'">{{ ls.step }}节点</view>
+						<view class="" v-else>{{ ls.step }}T</view>
+					</view>
+					<view class="tpl">
+						<view class="">合约周期</view>
+						<view class="">{{ ls.first_step_time + ls.second_step_time }}天 + {{ls.third_step_time}}天</view>
+					</view>
+					<!-- <view class="tpl">
+						<view class="">上架期</view>
+						<view class="">{{ ls.stand_time }}天</view>
+					</view> -->
+				</view>
+				<view class="cell-info flex">
+					<view class="tip">剩余数量:{{ ls | dataStock }}</view>
+					<view class="zhiya-btn" v-if="ls.stock > 0" @click="ToBuy(ls)">{{ ls.type == 3 ? '立即质押' : '立即购买' }}</view>
+					<view class="zhiya-btn grey" v-if="ls.stock == 0">已售罄</view>
+				</view>
+				<!-- <view class="list-tip" v-if="ls.detail"><rich-text :nodes="ls.detail"></rich-text></view> -->
+			</view>
+			<view class="empty-box" v-show="list.length === 0"><u-empty text="敬请期待" mode="data"></u-empty></view>
+		</view>
+		<uni-popup ref="popup" type="center">
+			<view class="popup">
+				<view class="cancel flex" @click="close">
+					<view></view>
+					<view class="tip">x</view>
+				</view>
+				<view class="list-box">
+					<view class="popup-text">购买数量:</view>
+					<view class="password"><input type="number" v-model="num" /></view>
+					<view class="popup-text">支付密码:</view>
+					<view class="password"><input type="password" v-model="password" /></view>
+					<view class="confirm-btn" @click="pay"><text>确认购买</text></view>
+				</view>
+			</view>
+		</uni-popup>
+	</view>
 </template>
-
 <script>
+import { mining, buyMining } from '@/api/market.js';
+import { wallet } from '@/api/finance.js';
+export default {
+	filters: {
+		dataStock: function(ls) {
+			let type = 'T';
+			// if (+ls.stock >= 1024) {
+			// 	// type = 'P';
+			// 	return `${ls.stock/1024 }/${ls.all_stock/1024 }${type}`;
+			// } else {
+			// 	return `${ls.stock}/${ls.all_stock}${type}`;
+			// }
+			return `${+ls.stock}${type}/${+ls.all_stock}${type}`;
+		}
+	},
+	data() {
+		return {
+			tabCurrent: '全部',
+			tabType: 1,
+			moneyTypeList: [],
+			list: [],
+			buyId: '',
+			password: '',
+			num: ''
+		};
+	},
+	onLoad(option) {
+		this.moneyType();
+		this.loadData();
+	},
+	onShow() {},
+	//下拉刷新
+	onPullDownRefresh() {
+		this.moneyType();
+	},
+	methods: {
+		// 所有币种
+		async moneyType() {
+			let obj = this;
+			// console.log(obj.moneyTypeList);
+			wallet({}).then(({ data }) => {
+					console.log(data);
+					obj.like_rmb = data.all_rmb;
+					obj.like_usdt = data.all_usdt;
+					const arr = Object.keys(data.back);
+					console.log(arr);
+					let ar = [];
+					arr.forEach(e => {
+						ar.push(data.back[e]);
+					});
+					obj.moneyTypeList = ar;
+					console.log(obj.moneyTypeList,"swpie")
+				});
+			},
+		// 请求载入数据
+		async loadData() {
+			let obj = this;
+			uni.showLoading({
+				title: '加载中...'
+			});
+			if(obj.tabCurrent === '全部'){
+				obj.list = []
+				mining({
+					page: 1,
+					limit: 1000
+				}).then( ({data}) => {
+					uni.hideLoading();
+					console.log(data.data,'9999999999999999999999999999999999')
+					obj.list = data.data.map(e => {
+						e.step = +e.step;
+						e._cost_money = +e._cost_money.replace(e.cost_money_type, '') + e.cost_money_type;
+						return e;
+					});
+					console.log(obj.list, 'obj.list++++++++++++');
+				})
+				// for(let i = 0 ; i<obj.moneyTypeList.length;i++){
+				// 	if(obj.moneyTypeList[i].has_mining !==0){
+				// 		mining({
+				// 			page:1,
+				// 			limit:1000,
+				// 			type: obj.tabType,
+				// 			get_money_type: obj.moneyTypeList[i].code
+				// 		}).then(({ data }) => {
+				// 			console.log(data)
+				// 			let arr = data.data.map(e => {
+				// 				e.step = +e.step;
+				// 				e._cost_money = +e._cost_money.replace(e.cost_money_type, '') + e.cost_money_type;
+				// 				return e;
+				// 			});
+				// 			obj.list = obj.list.concat(arr)
+				// 			// console.log( obj.list.length)
+				// 			let len = obj.list.length
+				// 			for (let i = 0; i < len; i++) {
+				// 				// obj.list[i].tags = obj.list[i].tags.splice(',')
+				// 				for (let j = 0; j < len; j++) {
+				// 					if (obj.list[i].step > obj.list[j].step) {
+				// 						let z = obj.list[i];
+				// 						obj.list[i] = obj.list[j];
+				// 						obj.list[j] = z;
+				// 					}
+				// 				}
+				// 			}
+				// 			// console.log(obj.list, 'new obj.list-------------')
+				// 			uni.hideLoading();
+							
+				// 		})
+				// 	}
+					
+				// }
+				// let len = obj.list.length;
+				
+			}else {
+				mining({
+					page: 1,
+					limit: 1000,
+					type: obj.tabType,
+					get_money_type: obj.tabCurrent
+				}).then(({ data }) => {
+					console.log(data, '1111');
+					obj.list = data.data.map(e => {
+						e.step = +e.step;
+						e._cost_money = +e._cost_money.replace(e.cost_money_type, '') + e.cost_money_type;
+						return e;
+					});
+					console.log(obj.list, 'obj.list++++++++++++');
+					let len = obj.list.length;
+				
+					for (let i = 0; i < len; i++) {
+						// obj.list[i].tags = obj.list[i].tags.splice(',')
+						for (let j = 0; j < len; j++) {
+							if (obj.list[i].step > obj.list[j].step) {
+								let z = obj.list[i];
+								obj.list[i] = obj.list[j];
+								obj.list[j] = z;
+							}
+						}
+					}
+					
+					console.log(obj.list, 'new obj.list-------------');
+					uni.hideLoading();
+				});
+			}
+			
+		},
+		ToBuy(ls) {
+			// let obj = this;
+			// obj.buyId = id;
+			// this.$refs.popup.open();
+			uni.navigateTo({
+				url: '/pages/market/details?id=' + ls.id + '&type=' + ls.type
+			});
+		},
+		pay() {
+			let obj = this;
+			buyMining(
+				{
+					num: obj.num,
+					trade_psw: obj.password
+				},
+				obj.buyId
+			)
+				.then(({ data }) => {
+					obj.$api.msg('购买成功!');
+					obj.loadData();
+					obj.password = '';
+					obj.num = '';
+					obj.$refs.popup.close();
+				})
+				.catch(e => {
+					obj.loadData();
+					obj.password = '';
+					obj.num = '';
+					obj.$refs.popup.close();
+				});
+		},
+		close() {
+			this.$refs.popup.close();
+		},
+		tabClick(index, has_mining) {
+			if(index === '全部') {
+				console.log('ddddddddd')
+			}
+			if (has_mining == 0) {
+				this.$api.msg('敬请期待!');
+			} else {
+				this.tabCurrent = index;
+				this.loadData();
+			}
+		},
+		tabTypeClick(index) {
+			this.tabType = index;
+			this.loadData();
+		}
+	}
+};
 </script>
 
-<style>
+<style lang="scss">
+page {
+	min-height: 100%;
+	background-color: #ffffff;
+	.container {
+		width: 100%;
+	}
+}
+.logo-img {
+	margin: 40rpx 6%;
+	width: 88%;
+	height: 209rpx;
+}
+.list-box {
+	.list-title {
+		overflow: hidden;
+		white-space: nowrap;
+		.title {
+			display: inline-block;
+			background-color: #A7DCD7;
+			font-size: 30rpx;
+			font-weight: bold;
+			color: #ffffff;
+			width: 24.49%;
+			margin-right: 5rpx;
+			text-align: center;
+			line-height: 60rpx;
+		}
+		.blue {
+			background-color: #44969D;
+		}
+		.grey {
+			background-color: #dbdbdb !important;
+		}
+	}
+	.list-name {
+		padding: 24rpx 50rpx;
+		.name {
+			font-size: 28rpx;
+			margin-right: 15%;
+			font-weight: 500;
+			color: #666666;
+		}
+		.black {
+			color: #333333;
+			border-bottom: 2rpx solid #5771df;
+			padding-bottom: 10rpx;
+			font-size: 30rpx;
+			font-weight: bold;
+		}
+	}
+}
+.more {
+	color: #606266;
+	font-size: 24rpx;
+	font-weight: normal;
+	border-bottom: 1rpx solid #606266;
+}
+.all-list {
+	width: 180rpx;
+	height: 180rpx;
+	position: absolute;
+	top: 10rpx;
+	right: 10rpx;
+}
+.list-cell {
+	box-sizing: border-box;
+	width: 670rpx;
+	margin: 0 auto;
+	padding: 40rpx 40rpx;
+	border-radius: 30rpx 30rpx;
+	background: #F3FEFF;
+	margin-bottom: 20rpx;
+	position: relative;
+	.cell-title {
+		padding: 29rpx 38rpx 29rpx 15rpx;
+		font-size: 38rpx;
+		font-weight: bold;
+		color: #333333;
+		image {
+			width: 40rpx;
+			height: 40rpx;
+			margin-right: 15rpx;
+		}
+	}
+	.tags {
+		.cell-tip {
+			display: inline-block;
+			padding: 11rpx 18rpx 9rpx 20rpx;
+			font-size: 30rpx;
+			font-weight: bold;
+			color: #0ec1a1;
+			background-color: #e3f6fa;
+			border-radius: 24rpx 24rpx;
+			margin-right: 20rpx;
+			margin-top: 15rpx;
+		}
+		.cell-tag {
+			display: inline-block;
+			margin-left: 20rpx;
+			padding: 4rpx 18rpx 3rpx 20rpx;
+			font-size: 30rpx;
+			font-weight: bold;
+			color: red;
+			// background-color: #fff;
+			// border-radius: 24rpx 24rpx;
+			border: 4rpx red solid;
+		}
+	}
+
+	.cell-tpl {
+		padding: 50rpx 0rpx 34rpx;
+		font-size: 30rpx;
+		font-weight: bold;
+		color: #333333;
+		line-height: 40rpx;
+		// text-align: center;
+	}
+	.cell-info {
+		.tip {
+			font-size: 34rpx;
+			font-weight: bold;
+			color: #44969D;
+			line-height: 55px;
+		}
+		.zhiya-btn {
+			background-color: #44969D;
+			width: 150rpx;
+			text-align: center;
+			line-height: 60rpx;
+			font-size: 26rpx;
+			border-radius: 50rpx;
+			color: #ffffff;
+		}
+		.grey {
+			background-color: #999999;
+		}
+	}
+	.list-tip {
+		background-color: #bac1ef !important;
+		word-wrap: break-word;
+		font-size: 26rpx;
+		font-weight: 500;
+		color: #333333;
+		padding: 36rpx 32rpx;
+		margin-top: 15rpx;
+		border-bottom-left-radius: 15rpx;
+		border-bottom-right-radius: 15rpx;
+	}
+}
+.empty-box {
+	width: 100%;
+	height: 500rpx;
+}
+//弹窗
+.popup {
+	background-color: #ffffff;
+	border-radius: 25rpx;
+	font-size: 30rpx;
+	.cancel {
+		text-align: center;
+		width: 100%;
+		line-height: 60rpx;
+		.tip {
+			background-color: #5771df;
+			color: #ffffff;
+			width: 70rpx;
+			height: 70rpx;
+			border-top-right-radius: 25rpx;
+		}
+	}
+	.list-box {
+		padding: 0rpx 80rpx;
+		.password {
+			padding: 50rpx 0rpx;
+			width: 100%;
+			input {
+				width: 70%;
+				height: 80rpx;
+				border: 2rpx solid #999999;
+				padding-left: 25rpx;
+				box-shadow: 0px 3px 5px 0px rgba(0, 0, 0, 0.27);
+				border-radius: 11rpx;
+			}
+		}
+		.confirm-btn {
+			padding-bottom: 120rpx;
+			padding-top: 30rpx;
+			text {
+				background-color: #44969D;
+				color: #ffffff;
+				width: 70%;
+				text-align: center;
+				padding: 25rpx 90rpx;
+				border-radius: 15rpx;
+			}
+		}
+	}
+}
+.jg {
+	height: 20rpx;
+}
+.mini-list-cell {
+	padding: 0rpx 40rpx 10rpx;
+	.cell-tpl {
+		padding: 10rpx 0 8rpx;
+	}
+	.cell-info {
+		.tip {
+			font-size: 34rpx;
+			font-weight: bold;
+			color: #44969D;
+			opacity: 0;
+			line-height: 40px;
+		}
+		.zhiya-btn {
+			background-color: #44969D;
+			width: 150rpx;
+			text-align: center;
+			line-height: 60rpx;
+			font-size: 26rpx;
+			border-radius: 50rpx;
+			color: #ffffff;
+		}
+		.grey {
+			background-color: #999999;
+		}
+	}
+}
 </style>

+ 7 - 7
pages/public/register.vue

@@ -5,7 +5,7 @@
 		<view class="loginText">请认真填写个人信息</view>
 		<view class="login-box">
 			<view class="username">账号</view>
-			<input class="input-box" type="number" v-model="phone" placeholder="请输入手机号" />
+			<input class="input-box" type="text" v-model="phone" placeholder="请输入邮箱" />
 		</view>
 		<view class="login-box">
 			<view class="username">验证码</view>
@@ -61,11 +61,11 @@ export default {
 		register() {
 			let obj = this;
 			if (obj.phone == '') {
-				obj.$api.msg('请输入电话号码');
+				obj.$api.msg('请输入邮箱号码');
 				return;
 			}
-			if (!/(^1[3|4|5|7|8][0-9]{9}$)/.test(obj.phone)) {
-				obj.$api.msg('请输入正确的手机号');
+			if (!/^([a-zA-Z]|[0-9])(\w|\-|\.)+@[a-zA-Z0-9]+\.([a-zA-Z]{2,4})$/.test(obj.phone)) {
+				obj.$api.msg('请输入正确的邮箱');
 				return;
 			}
 			if (obj.loginPass == '') {
@@ -109,11 +109,11 @@ export default {
 		verification() {
 			let obj = this;
 			if (this.phone == '') {
-				this.$api.msg('请输入电话号码');
+				this.$api.msg('请输入邮箱');
 				return;
 			}
-			if (this.phone.length < 11) {
-				this.$api.msg('请输入正确的手机号');
+			if (!/^([a-zA-Z]|[0-9])(\w|\-|\.)+@[a-zA-Z0-9]+\.([a-zA-Z]{2,4})$/.test(obj.phone)) {
+				obj.$api.msg('请输入正确的邮箱');
 				return;
 			}
 			// 判断是否在倒计时

+ 7 - 3
pages/user/extension.vue

@@ -21,12 +21,12 @@
 			<view class="empty-box"><empty v-if="orderList.length === 0"></empty></view>
 
 			<!-- 订单列表 -->
-			<view v-for="(item, index) in orderList" :key="index" class="order-item flex">
+			<view v-for="(item, index) in orderList" :key="index" class="order-item flex" @click="nav(item)">
 				<view class="title-box flex_item">
 					<view class="title-avatar"><image :src="item.avatar"></image></view>
 					<view class="list_tpl">
 						<view class="title">
-							<text>{{ item.nickname }}</text>
+							<text>{{ item.email || item.phone }}</text>
 						</view>
 						<view class="time">
 							<text>{{ item.time }}</text>
@@ -45,7 +45,6 @@ import uniLoadMore from '@/uview-ui/components/u-loading-page/u-loading-page.vue
 import empty from '@/uview-ui/components/u-empty/u-empty.vue';
 export default {
 	components: {
-		empty,
 		uniLoadMore
 	},
 	onReady() {
@@ -116,6 +115,11 @@ export default {
 			uni.switchTab({
 				url: '/pages/user/user'
 			});
+		},
+		nav(e) {
+			uni.navigateTo({
+				url: '/pages/user/rake?uid=' + e.uid
+			})
 		}
 	}
 };

+ 160 - 0
pages/user/fuli.vue

@@ -0,0 +1,160 @@
+<template>
+	<view class="center">
+		<view class="bg"></view>
+		<view class="zong flex">
+			<view class="info">
+				<view class="info-num">{{ '0.00' }}</view>
+				<view class="info-font">USDL</view>
+			</view>
+			<view class="info">
+				<view class="info-num">{{ '0' }}</view>
+				<view class="info-font">幸运值</view>
+			</view>
+			<view class="info">
+				<view class="info-num">{{ '0.00' }}</view>
+				<view class="info-font">USDT</view>
+			</view>
+			<view class="info">
+				<view class="info-num">{{ '0' }}</view>
+				<view class="info-font">荣誉值</view>
+			</view>
+		</view>
+		<view class="rule">
+			<view class="rule-title">福利兑换规则</view>
+			<view class="rule-main">每1000USDL+10福气值可兑换2000USDT+10荣誉值</view>
+		</view>
+		<view class="main-title">
+			<view class="shu"></view>
+			<view class="m-title">
+				兑换记录
+			</view>
+		</view>
+		<view class="list-box">
+			<view class="list-item flex">
+				<view class="list-left">
+					<view class="list-title">
+						福利兑换
+					</view>
+					<view class="time">
+						2018-12-1  09:30
+					</view>
+				</view>
+				<view class="list-right">
+					已兑换
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script></script>
+
+<style lang="scss">
+.center,
+page {
+	height: 100%;
+	background: #f7fbfe;
+}
+.bg {
+	width: 750rpx;
+	height: 248rpx;
+	background: linear-gradient(90deg, #60bab0, #60bab0, #45969b);
+	border-bottom-left-radius: 150rpx;
+	border-bottom-right-radius: 150rpx;
+}
+.zong {
+	width: 690rpx;
+	height: 181rpx;
+	background: #ffffff;
+	box-shadow: 0px 0px 17rpx 0px rgba(0, 0, 0, 0.05);
+	border-radius: 20rpx;
+	margin: -150rpx auto 0;
+	justify-content: space-between;
+	padding: 0rpx 36rpx;
+	.info {
+		display: flex;
+		flex-direction: column;
+		align-items: center;
+		.info-num {
+			font-size: 50rpx;
+			font-family: PingFang SC;
+			font-weight: bold;
+			color: #0f253a;
+		}
+		.info-font {
+			font-size: 28rpx;
+			font-family: PingFang SC;
+			font-weight: bold;
+			color: #6d7c88;
+		}
+	}
+}
+.rule {
+	width: 690rpx;
+	background: #ffffff;
+	box-shadow: 0px 0px 17rpx 0px rgba(0, 0, 0, 0.05);
+	border-radius: 20rpx;
+	margin: 16rpx auto 0;
+	padding: 26rpx 36rpx;
+	.rule-title {
+		font-size: 28rpx;
+		font-family: PingFang SC;
+		font-weight: bold;
+		color: #44969d;
+	}
+	.rule-main {
+		font-size: 26rpx;
+		font-family: PingFang SC;
+		font-weight: 500;
+		color: #0f253a;
+		margin-top: 10rpx;
+	}
+}
+.main-title {
+	margin-top: 36rpx;
+	display: flex;
+	justify-content: flex-start;
+	align-items: center;
+	.shu {
+		margin-left: 30rpx;
+		width: 5rpx;
+		height: 29rpx;
+		background: #0F253A;
+		border-radius: 3rpx;
+	}
+	.m-title {
+		font-size: 30rpx;
+		font-family: PingFang SC;
+		font-weight: bold;
+		color: #0F253A;
+		margin-left: 16rpx;
+	}
+}
+.list-box {
+	margin-top: 34rpx;
+	background-color: #FFFFFF;
+	.list-item {
+		padding: 25rpx 50rpx;
+		border-bottom: 1px solid #F0F4F8;
+		.list-title {
+			font-size: 30rpx;
+			font-family: PingFang SC;
+			font-weight: bold;
+			color: #666666;
+		}
+		.time {
+			margin-top: 10rpx;
+			font-size: 26rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #AEAEAE;
+		}
+		.list-right {
+			font-size: 27rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #999999;
+		}
+	}
+}
+</style>

+ 354 - 0
pages/user/rake.vue

@@ -0,0 +1,354 @@
+<template>
+	<view class="rake">
+		<view class="item" v-for="(ls,index) in list" v-if="ls.stock != 0">
+			<view class="top">
+				<view class="info-title">
+					<image :src="ls.logo" mode=""></image>
+					<view class="">{{ ls.name }}</view>
+				</view>
+				<view class="tags">
+					<view class="tag" v-for="it in ls.tags" :key="it">{{ it }}</view>
+				</view>
+				<view class="base-info">
+					<view class="info-item">
+						<view class="tit">单价</view>
+						<view class="val">{{ +ls.cost_money }}{{ls.cost_money_type}}/{{ ls.get_money_type === 'BZZ' ? '节点' : 'T' }}</view>
+					</view>
+					<view class="info-item">
+						<view class="tit">有效算力</view>
+						<view class="val">{{ ls.step }} {{ ls.get_money_type === 'BZZ' ? '节点' : 'T' }}</view>
+					</view>
+					<view class="info-item">
+						<view class="tit">周期</view>
+						<view class="val">{{ ls.first_step_time + ls.second_step_time }}天 + {{ ls.third_step_time }}天</view>
+					</view>
+				</view>
+			</view>
+			<view class="btn-wrapper">
+				<view class="btn">
+					服务费:{{ls.user_service_ratio*1}}%
+					<text @click="+ls.lower_service_ratio<= +mList[index].user_service_ratio ? '': set(index,ls,0)" :class="{'black':+ls.lower_service_ratio<= +mList[index].user_service_ratio }">设置</text>
+					
+				</view>
+<!-- 				<view class="btn">
+					佣金:{{ls.award_ratio*1}}%
+					<text @click="ls.lower_award_ratio*1 < mList[index].award_ratio*1 ? set(index,ls,1):''" :class="{'black':+ls.lower_award_ratio >= +mList[index].award_ratio }">设置</text>
+				</view> -->
+			</view>
+			
+		</view>
+		<view class="jg" v-if="list.length !== 0"></view>
+		<u-empty v-if="list.length == 0"></u-empty>
+		<uni-popup ref="popup" type="center">
+			<view class="wrapper">
+				<view class="title">
+					设置{{setType === 0? '服务费比例':'佣金比例'}}
+				</view>
+				<input type="number" v-model="setVal" :placeholder="placeTitle" class="inp" />
+				<view class="btn-wrapper">
+					<view class="cansel" @click="close()">取消</view>
+					<view class="qr" @click="sub()">确定</view>
+				</view>
+			</view>
+		</uni-popup>
+	</view>
+</template>
+
+<script>
+import { mining, buyMining } from '@/api/market.js';
+import {setServiceRatio ,setRatio} from '@/api/set.js'
+export default {
+	data() {
+		return {
+			height: 0,
+			setType: 0,
+			setVal: null,
+			list: [],
+			mList: [],
+			m_service_ratio: 0,
+			uid:0,
+			max_ratio: 0,
+			min_ratio: 0,
+			item: {}
+		};
+	},
+	computed: {
+		placeTitle() {
+			return `可设置比例为${this.min_ratio}%~${this.max_ratio}%`;
+		}
+	},
+	onReady(res) {
+		// var _this = this;
+		// uni.getSystemInfo({
+		// 	success: resu => {
+		// 		const query = uni.createSelectorQuery();
+		// 		query.select('.list-cell').boundingClientRect();
+		// 		query.exec(function(res) {
+		// 			console.log(res, 'ddddddddddddd');
+		// 			_this.height = resu.windowHeight - res[0].top + 'px';
+		// 			console.log('打印页面的剩余高度', _this.height);
+		// 		});
+		// 	},
+		// 	fail: res => {}
+		// });
+	},
+	onLoad(opt) {
+		if(opt) {
+			this.uid = opt.uid
+		}
+		// uni.showLoading({
+		// 	title: '加载中'
+		// })
+		this.loadMlist()
+		
+	},
+	methods: {
+		set(index,ls,num) {
+			console.log(index)
+			this.setType = num
+			this.item = ls
+			if(this.setType === 0) {
+				this.min_ratio = +this.mList[index].user_service_ratio
+				this.max_ratio = +this.list[index].lower_service_ratio
+				console.log(this.min_ratio,this.max_ratio,'5555555555555555555555555')
+				if(this.min_ratio  === this.max_ratio) {
+					this.$api.msg('当前无法设置')
+				}else {
+					this.$refs.popup.open();
+				}
+				
+				console.log(this.min_ratio,this.max_ratio)
+			}else {
+				this.min_ratio = +this.list[index].lower_award_ratio
+				this.max_ratio = +this.mList[index].award_ratio
+				console.log(this.min_ratio,this.max_ratio,'5555555555555555555555555')
+				if(this.min_ratio  === this.max_ratio) {
+					this.$api.msg('当前无法设置')
+				}else {
+					this.$refs.popup.open();
+				}
+			}
+			
+			
+		},
+		close() {
+			this.$refs.popup.close();
+			this.setVal = null;
+		},
+		sub() {
+			console.log();
+			this.$refs.popup.close();
+			if(this.setType === 0){
+				setServiceRatio(this.uid,{
+					ratio: this.setVal,
+					mid: this.item.id
+				}).then(res => {
+					this.$api.msg(res.msg)
+					this.loadData()
+				})
+			}else {
+				setRatio(this.uid,{
+					ratio: this.setVal,
+					mid: this.item.id
+				}).then(res => {
+					this.$api.msg(res.msg)
+					this.loadData()
+				})
+			}
+
+			this.setVal = null
+			
+			
+			
+		},
+		loadData() {
+			mining({
+				uid: this.uid,
+				page: 1,
+				limit: 1000
+			}).then(({ data }) => {
+				this.list = data.data;
+				// uni.hideLoading()
+				console.log(this.list, '88888888888888');
+			});
+		},
+		loadMlist() {
+			mining({
+				// uid: this.uid,
+				page: 1,
+				limit: 1000
+			}).then(({ data }) => {
+				this.mList = data.data;
+				console.log(this.mList, '999999999999999999999999999999999999');
+				this.loadData();
+			});
+		}
+		
+	}
+};
+</script>
+
+<style lang="scss" scoped>
+page {
+	height: 100%;
+	// padding-top: 20rpx;
+}
+.rake {
+	height: 100%;
+	// padding-top: 30rpx;
+}
+.item {
+	margin: 20rpx auto;
+	width: 670rpx;
+	// height: 438rpx;
+	background: #f7f6fb;
+	border-radius: 10rpx;
+	box-shadow: 0 0 20rpx rgba(0, 0, 0, 0.2);
+	.top {
+		// height: 347rpx;
+		width: 100%;
+		padding: 40rpx 30rpx 0;
+		.info-title {
+			display: flex;
+
+			image {
+				display: inline-block;
+				width: 38rpx;
+				height: 38rpx;
+				margin-left: 10rpx;
+				flex-shrink: 0;
+			}
+			view {
+				padding-left: 12rpx;
+				font-size: 30rpx;
+				font-family: PingFang SC;
+				font-weight: bold;
+				color: #333333;
+			}
+		}
+		.tags {
+			padding-top: 20rpx;
+			display: flex;
+			flex-wrap: wrap;
+			.tag {
+				display: inline-block;
+				padding: 0 20rpx;
+				text-align: center;
+				line-height: 43rpx;
+				background: #e3f6fa;
+				border-radius: 22rpx;
+				margin: 10rpx 10rpx 0;
+				font-size: 24rpx;
+				font-family: PingFang SC;
+				font-weight: bold;
+				color: #0ec1a1;
+			}
+		}
+		.base-info {
+			padding-top: 30rpx;
+			display: flex;
+			justify-content: space-between;
+			// text-align: center;
+			font-size: 24rpx;
+			font-family: PingFang SC;
+			font-weight: bold;
+			color: #333333;
+			padding-bottom: 30rpx;
+		}
+		.end-time {
+			font-size: 30rpx;
+			font-family: PingFang SC;
+			font-weight: bold;
+			color: #5771df;
+			padding-bottom: 24rpx;
+		}
+	}
+	.btn-wrapper {
+		// width: 670rpx;
+		height: 95rpx;
+		background: #ffffff;
+		border-radius: 0px 0px 10rpx 10rpx;
+		display: flex;
+		justify-content: flex-end;
+		// justify-content: space-between;
+		align-items: center;
+		padding-right: 20rpx;
+		.btn {
+			// display: flex;
+			padding-left: 10rpx;
+			text {
+				
+				display: inline-block;
+				width: 108rpx;
+				height: 39rpx;
+				background: #5771df;
+				border: 1rpx solid #5771df;
+				box-shadow: 0rpx 0rpx 10rpx 0rpx rgba(0, 0, 0, 0.1);
+				border-radius: 20rpx;
+				text-align: center;
+				line-height: 35rpx;
+				margin-left: 11rpx;
+				font-size: 24rpx;
+				font-family: PingFang SC;
+				font-weight: 500;
+				color: #ffffff;
+			}
+			.black {
+				background-color: #999;
+				border-color: #999;
+			}
+		}
+	}
+}
+.list-cell {
+	width: 100%;
+	height: 100%;
+	background-color: #f8f8f8;
+}
+.wrapper {
+	width: 549rpx;
+	height: 344rpx;
+	background: #ffffff;
+	border-radius: 14rpx;
+	.title {
+		text-align: center;
+		padding-top: 40rpx;
+		font-size: 37rpx;
+		font-family: PingFang SC;
+		font-weight: bold;
+		color: #333333;
+	}
+	.inp {
+		display: block;
+		margin: 60rpx auto;
+		width: 439rpx;
+		height: 68rpx;
+		background: #f6f6f6;
+		border-radius: 10rpx;
+		padding-left: 13rpx;
+	}
+	.btn-wrapper {
+		display: flex;
+	
+		view {
+			width: 50%;
+			text-align: center;
+		}
+		.cansel {
+			font-size: 37rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #333333;
+		}
+		.qr {
+			font-size: 37rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #5771df;
+		}
+	}
+}
+.jg {
+	height: 20rpx;
+}
+</style>

+ 58 - 28
pages/user/user.vue

@@ -4,7 +4,13 @@
 			<view class="bg"><image class="imgBg" src="../../static/img/user-bg.png" mode=""></image></view>
 			<view class="user">
 				<view class="avtor"><image class="portrait" :src="userInfo.avatar || '/static/img/missing-face.png'"></image></view>
-				<view class="name">{{ userInfo.nickname || '游客' }}</view>
+				<view class="">
+					<view class="name">{{ userInfo.phone || '游客' }}</view>
+					<view class="level-box">
+						<image class="image" src="../../static/img/img28.png"></image>
+						<view class="level">V{{ userInfo.level }}</view>
+					</view>
+				</view>
 			</view>
 		</view>
 		<view class="main">
@@ -15,6 +21,11 @@
 					<view class="tt-txt">我的拼购</view>
 					<image src="../../static/img/jiantou.png" class="next-icon" mode=""></image>
 				</view>
+				<view class="tt-box" @click="nav('/pages/user/fuli')">
+					<image src="../../static/img/gift.png" class="tt-icon1" mode=""></image>
+					<view class="tt-txt">拼购福利</view>
+					<image src="../../static/img/jiantou.png" class="next-icon" mode=""></image>
+				</view>
 				<view class="tt-box" @click="nav('/pages/user/extension')">
 					<image src="../../static/img/myTeam.png" class="tt-icon2" mode=""></image>
 					<view class="tt-txt">我的团队</view>
@@ -27,7 +38,7 @@
 				</view>
 				<view class="tt-box" @click="nav('/pages/money/payment')">
 					<image src="../../static/img/zfpwd.png" class="tt-icon4" mode=""></image>
-					<view class="tt-txt">支付密码</view>
+					<view class="tt-txt">交易密码</view>
 					<image src="../../static/img/jiantou.png" class="next-icon" mode=""></image>
 				</view>
 				<view class="tt-box" @click="nav('/pages/set/password')">
@@ -47,14 +58,17 @@
 				</view>
 			</view>
 		</view>
-		
+
 		<uni-popup ref="popup" type="center">
 			<view class="popup">
 				<view class="popup-dox">
 					<image class="popup-logo" src="../../static/img/lianxi.png"></image>
 					<view class="pop-title">已为您定制专属客服</view>
 					<image class="popup-text" src=""></image>
-					<view class="pop-tip flex"><view class="weixin"><image src="../../static/img/weixin.png" mode=""></image></view><view>长按识别咨询客服</view></view>
+					<view class="pop-tip flex">
+						<view class="weixin"><image src="../../static/img/weixin.png" mode=""></image></view>
+						<view>长按识别咨询客服</view>
+					</view>
 				</view>
 			</view>
 			<view class="close_icon" @click="close"><image src="../../static/img/Close.png"></image></view>
@@ -81,7 +95,7 @@ export default {
 		//判断是否已经登录
 		if (this.hasLogin) {
 			this.loadBaseData();
-		}else{
+		} else {
 			uni.showModal({
 				title: '登录',
 				content: '您未登录,是否马上登陆?',
@@ -102,31 +116,29 @@ export default {
 	methods: {
 		...mapMutations('user', ['setUserInfo', 'setOrderInfo']),
 		loadBaseData() {
-			console.log(this.userInfo)
-			getUserInfo({}).then(({
-				data
-			}) => {
+			console.log(this.userInfo);
+			getUserInfo({}).then(({ data }) => {
 				this.setUserInfo(data);
 			});
 		},
-		server(){
+		server() {
 			this.$refs.popup.open();
 		},
-		close(){
+		close() {
 			this.$refs.popup.close();
 		},
 		nav(url) {
 			// 判断是否已经登录
 			// if (this.hasLogin) {
-				console.log(url)
-				uni.navigateTo({
-					url: url,
-					fail() {
-						uni.switchTab({
-							url:url
-						})
-					}
-				})
+			console.log(url);
+			uni.navigateTo({
+				url: url,
+				fail() {
+					uni.switchTab({
+						url: url
+					});
+				}
+			});
 			// }else {
 			// 	uni.showModal({
 			// 		title: '登录',
@@ -141,7 +153,6 @@ export default {
 			// 		}
 			// 	});
 			// }
-
 		}
 	}
 };
@@ -196,6 +207,25 @@ page {
 			font-weight: 500;
 			color: #ffffff;
 		}
+		.level-box {
+			margin-left: 30rpx;
+			margin-top: 10rpx;
+			position: relative;
+			.image {
+				width: 128rpx;
+				height: 45rpx;
+			}
+			.level {
+				position: absolute;
+				top: 0;
+				left: 62rpx;
+				height: 44rpx;
+				line-height: 48rpx;
+				font-size: 24rpx;
+				color: #826740;
+				font-weight: bold;
+			}
+		}
 	}
 }
 .main {
@@ -270,39 +300,39 @@ page {
 }
 .popup {
 	width: 640rpx;
-	background-color: #FFFFFF;
+	background-color: #ffffff;
 	border-radius: 15rpx;
 	text-align: center;
-	.popup-dox{
+	.popup-dox {
 		position: relative;
 		top: -60rpx;
 		.popup-logo {
 			width: 460rpx;
 			height: 132rpx;
 		}
-		.pop-title{
+		.pop-title {
 			font-size: 40rpx;
 			font-weight: bold;
 			color: #333333;
 			padding: 25rpx 0rpx;
 			margin-bottom: 50rpx;
 		}
-		.popup-text{
+		.popup-text {
 			width: 400rpx;
 			height: 400rpx;
 			margin-bottom: 50rpx;
 		}
-		.pop-tip{
+		.pop-tip {
 			font-size: 30rpx;
 			font-weight: 500;
 			color: #333333;
 			justify-content: center;
-			
+
 			.weixin {
 				width: 48rpx;
 				height: 40rpx;
 				margin-right: 14rpx;
-				image{
+				image {
 					width: 48rpx;
 					height: 40rpx;
 				}

BIN
static/img/gift.png


BIN
static/img/img01.png


BIN
static/img/img28.png


BIN
static/img/img51.png


+ 1 - 1
store/index.js

@@ -6,7 +6,7 @@ Vue.use(Vuex)
 const store = new Vuex.Store({
 	state: {
 		// baseURL:"http://yrh.liuniu946.com",//'http://eb.shuibo.net',//请求地址配置 
-		baseURL:'http://rpg.frp.liuniu946.com',//请求地址配置 
+		baseURL:"http://www.lalanft.net",//请求地址配置 
 		urlFile:'/index',//项目部署所在文件夹
 		userInfo: {}, //登录信息
 		loginInterceptor:false,//是否打开强制登录

+ 9 - 0
unpackage/cache/appleConfig.ini

@@ -0,0 +1,9 @@
+[appleAppid]
+appleAppid=uni.UNIF0EBD91
+
+[iosStyle]
+iosStyle=common
+
+[universalLinks]
+universalLinks=
+spaceid=

+ 3 - 0
unpackage/cache/certdata

@@ -0,0 +1,3 @@
+andrCertfile=D:/工作/项目2/nft拼团/NFT/unpackage/pz/nft.keystore
+andrCertAlias=nft.inc
+andrCertPass=7IwuiYJfyRjKKTfhI7sjzw==

BIN
unpackage/cache/wgt/__UNI__3CDE968/.manifest/google-keystore.keystore


BIN
unpackage/cache/wgt/__UNI__3CDE968/.manifest/icon-android-hdpi.png


BIN
unpackage/cache/wgt/__UNI__3CDE968/.manifest/icon-android-xhdpi.png


BIN
unpackage/cache/wgt/__UNI__3CDE968/.manifest/icon-android-xxhdpi.png


BIN
unpackage/cache/wgt/__UNI__3CDE968/.manifest/icon-android-xxxhdpi.png


BIN
unpackage/cache/wgt/__UNI__3CDE968/.manifest/splash-android-hdpi.png


BIN
unpackage/cache/wgt/__UNI__3CDE968/.manifest/splash-android-xhdpi.png


BIN
unpackage/cache/wgt/__UNI__3CDE968/.manifest/splash-android-xxhdpi.png


File diff suppressed because it is too large
+ 0 - 0
unpackage/cache/wgt/__UNI__3CDE968/__uniappchooselocation.js


BIN
unpackage/cache/wgt/__UNI__3CDE968/__uniapperror.png


File diff suppressed because it is too large
+ 0 - 0
unpackage/cache/wgt/__UNI__3CDE968/__uniappes6.js


File diff suppressed because it is too large
+ 0 - 0
unpackage/cache/wgt/__UNI__3CDE968/__uniappopenlocation.js


File diff suppressed because it is too large
+ 0 - 0
unpackage/cache/wgt/__UNI__3CDE968/__uniapppicker.js


File diff suppressed because it is too large
+ 6 - 0
unpackage/cache/wgt/__UNI__3CDE968/__uniappquill.js


File diff suppressed because it is too large
+ 0 - 0
unpackage/cache/wgt/__UNI__3CDE968/__uniappquillimageresize.js


File diff suppressed because it is too large
+ 0 - 0
unpackage/cache/wgt/__UNI__3CDE968/__uniappscan.js


BIN
unpackage/cache/wgt/__UNI__3CDE968/__uniappsuccess.png


+ 25 - 0
unpackage/cache/wgt/__UNI__3CDE968/__uniappview.html

@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<html lang="zh-CN">
+
+  <head>
+    <meta charset="UTF-8" />
+    <script>
+      var __UniViewStartTime__ = Date.now();
+      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>
+    <title>View</title>
+    <link rel="stylesheet" href="view.css" />
+  </head>
+
+  <body>
+    <div id="app"></div>
+    <script src="__uniappes6.js"></script>
+    <script src="view.umd.min.js"></script>
+    <script src="app-view.js"></script>
+  </body>
+
+</html>

File diff suppressed because it is too large
+ 3 - 0
unpackage/cache/wgt/__UNI__3CDE968/app-config-service.js


+ 1 - 0
unpackage/cache/wgt/__UNI__3CDE968/app-config.js

@@ -0,0 +1 @@
+(function(e){function r(r){for(var n,l,i=r[0],p=r[1],a=r[2],c=0,s=[];c<i.length;c++)l=i[c],Object.prototype.hasOwnProperty.call(o,l)&&o[l]&&s.push(o[l][0]),o[l]=0;for(n in p)Object.prototype.hasOwnProperty.call(p,n)&&(e[n]=p[n]);f&&f(r);while(s.length)s.shift()();return u.push.apply(u,a||[]),t()}function t(){for(var e,r=0;r<u.length;r++){for(var t=u[r],n=!0,i=1;i<t.length;i++){var p=t[i];0!==o[p]&&(n=!1)}n&&(u.splice(r--,1),e=l(l.s=t[0]))}return e}var n={},o={"app-config":0},u=[];function l(r){if(n[r])return n[r].exports;var t=n[r]={i:r,l:!1,exports:{}};return e[r].call(t.exports,t,t.exports,l),t.l=!0,t.exports}l.m=e,l.c=n,l.d=function(e,r,t){l.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},l.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},l.t=function(e,r){if(1&r&&(e=l(e)),8&r)return e;if(4&r&&"object"===typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(l.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var n in e)l.d(t,n,function(r){return e[r]}.bind(null,n));return t},l.n=function(e){var r=e&&e.__esModule?function(){return e["default"]}:function(){return e};return l.d(r,"a",r),r},l.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},l.p="/";var i=this["webpackJsonp"]=this["webpackJsonp"]||[],p=i.push.bind(i);i.push=r,i=i.slice();for(var a=0;a<i.length;a++)r(i[a]);var f=p;t()})([]);

File diff suppressed because it is too large
+ 0 - 0
unpackage/cache/wgt/__UNI__3CDE968/app-service.js


File diff suppressed because it is too large
+ 0 - 0
unpackage/cache/wgt/__UNI__3CDE968/app-view.js


File diff suppressed because it is too large
+ 0 - 0
unpackage/cache/wgt/__UNI__3CDE968/manifest.json


+ 551 - 0
unpackage/cache/wgt/__UNI__3CDE968/static/css/cmy.css

@@ -0,0 +1,551 @@
+/*初始化类*/
+@font-face {
+	font-family: 'iconfont';
+	/* project id 1482221 */
+	src: url('https://at.alicdn.com/t/font_1482221_x9emymthrxs.eot');
+	src: url('https://at.alicdn.com/t/font_1482221_x9emymthrxs.eot?#iefix') format('embedded-opentype'),
+		url('https://at.alicdn.com/t/font_1482221_x9emymthrxs.woff2') format('woff2'),
+		url('https://at.alicdn.com/t/font_1482221_x9emymthrxs.woff') format('woff'),
+		url('https://at.alicdn.com/t/font_1482221_x9emymthrxs.ttf') format('truetype'),
+		url('https://at.alicdn.com/t/font_1482221_x9emymthrxs.svg#iconfont') format('svg');
+}
+
+.acea-row {
+	display: -webkit-box;
+	display: -moz-box;
+	display: -webkit-flex;
+	display: -ms-flexbox;
+	display: flex;
+	-webkit-box-lines: multiple;
+	-moz-box-lines: multiple;
+	-o-box-lines: multiple;
+	-webkit-flex-wrap: wrap;
+	-ms-flex-wrap: wrap;
+	flex-wrap: wrap
+}
+
+.acea-row.row-middle {
+	-webkit-box-align: center;
+	-moz-box-align: center;
+	-o-box-align: center;
+	-ms-flex-align: center;
+	-webkit-align-items: center;
+	align-items: center
+}
+
+.bg-color-red {
+	background-color: #e93323 !important;
+}
+
+.acea-row.row-right {
+	-webkit-box-pack: end;
+	-moz-box-pack: end;
+	-o-box-pack: end;
+	-ms-flex-pack: end;
+	-webkit-justify-content: flex-end;
+	justify-content: flex-end
+}
+
+.acea-row.row-between-wrapper {
+	-webkit-box-align: center;
+	-moz-box-align: center;
+	-o-box-align: center;
+	-ms-flex-align: center;
+	-webkit-align-items: center;
+	align-items: center;
+	-webkit-box-pack: justify;
+	-moz-box-pack: justify;
+	-o-box-pack: justify;
+	-ms-flex-pack: justify;
+	-webkit-justify-content: space-between;
+	justify-content: space-between
+}
+
+.acea-row.row-column-around {
+	-webkit-flex-direction: column;
+	-ms-flex-direction: column;
+	flex-direction: column;
+	justify-content: space-around;
+	-webkit-justify-content: space-around
+}
+
+.acea-row.row-center-wrapper {
+	-webkit-box-align: center;
+	-moz-box-align: center;
+	-o-box-align: center;
+	-ms-flex-align: center;
+	-webkit-align-items: center;
+	align-items: center;
+	-webkit-box-pack: center;
+	-moz-box-pack: center;
+	-o-box-pack: center;
+	-ms-flex-pack: center;
+	-webkit-justify-content: center;
+	justify-content: center
+}
+
+.iconfont {
+	font-family: "iconfont" !important;
+	font-size: 34rpx;
+	font-style: normal;
+	-webkit-font-smoothing: antialiased;
+	-webkit-text-stroke-width: 0rpx;
+	-moz-osx-font-smoothing: grayscale;
+}
+
+.iconedit:before {
+	content: "\e649";
+}
+
+.iconfavorfill:before {
+	content: "\e64b";
+}
+
+.iconfavor:before {
+	content: "\e64c";
+}
+
+.iconlocation:before {
+	content: "\e651";
+}
+
+.iconroundcheckfill:before {
+	content: "\e656";
+}
+
+.iconroundcheck:before {
+	content: "\e657";
+}
+
+.iconunfold:before {
+	content: "\e661";
+}
+
+.iconlikefill:before {
+	content: "\e668";
+}
+
+.iconlike:before {
+	content: "\e669";
+}
+
+.iconshop:before {
+	content: "\e676";
+}
+
+.iconcart:before {
+	content: "\e6af";
+}
+
+.icondelete:before {
+	content: "\e6b4";
+}
+
+.iconhome:before {
+	content: "\e6b8";
+}
+
+.iconcartfill:before {
+	content: "\e6b9";
+}
+
+.iconhomefill:before {
+	content: "\e6bb";
+}
+
+.iconlock:before {
+	content: "\e6c0";
+}
+
+.iconfriendadd:before {
+	content: "\e6ca";
+}
+
+.iconfold:before {
+	content: "\e6de";
+}
+
+.iconapps:before {
+	content: "\e729";
+}
+
+.iconadd:before {
+	content: "\e767";
+}
+
+.iconmove:before {
+	content: "\e768";
+}
+
+.icontriangledownfill:before {
+	content: "\e79b";
+}
+
+.icontriangleupfill:before {
+	content: "\e79c";
+}
+
+.iconshaixuan:before {
+	content: "\e74a";
+}
+
+.iconyanzhengma:before {
+	content: "\e684";
+}
+
+.iconjifen:before {
+	content: "\e60f";
+}
+
+.iconwuliuxinxi:before {
+	content: "\e62b";
+}
+
+.iconmessage:before {
+	content: "\e78a";
+}
+
+.iconsetting:before {
+	content: "\e78e";
+}
+
+.iconaddition:before {
+	content: "\e6e0";
+}
+
+.iconclose:before {
+	content: "\e6e9";
+}
+
+.iconenter:after {
+	content: "\e6f8";
+}
+
+.iconprompt:before {
+	content: "\e71b";
+}
+
+.iconreturn:before {
+	content: "\e720";
+}
+
+.iconsearch:before {
+	content: "\e741";
+}
+
+.iconpengyouquan:before {
+	content: "\e62c";
+}
+
+.iconweixin:before {
+	content: "\e60e";
+}
+
+.iconzhifubao:before {
+	content: "\e673";
+}
+
+.iconyue:before {
+	content: "\e618";
+}
+
+.iconweixin1:before {
+	content: "\e622";
+}
+
+.iconlock1:before {
+	content: "\e64d";
+}
+
+.iconuser:before {
+	content: "\e64e";
+}
+
+.iconchenggongtixianshouyi:before {
+	content: "\e64f";
+}
+
+.iconviptuiguangdingdan:before {
+	content: "\e650";
+}
+
+.icondaifukuan:before {
+	content: "\e652";
+}
+
+.icondaijiesuanshouyi:before {
+	content: "\e653";
+}
+
+.icondaidakuanshouyi:before {
+	content: "\e654";
+}
+
+.icondaifahuo:before {
+	content: "\e655";
+}
+
+.icondaishouhuoshouyi:before {
+	content: "\e658";
+}
+
+.icondaishouhuo:before {
+	content: "\e659";
+}
+
+.iconwuxiaoshouyi:before {
+	content: "\e65a";
+}
+
+.icontixianmingxi:before {
+	content: "\e65b";
+}
+
+.iconshouyi:before {
+	content: "\e65c";
+}
+
+.iconkouchutixianshouxufei:before {
+	content: "\e65d";
+}
+
+.iconyishenqingshouyi:before {
+	content: "\e65e";
+}
+
+.icontuihuanhuo:before {
+	content: "\e65f";
+}
+
+
+/*水平线*/
+.hr {
+	width: 100%;
+	position: relative;
+	border-bottom: 1px solid #dddddd;
+	/* height: 0.5rpx; */
+}
+
+/* 一行显示 */
+.clamp {
+	overflow: hidden;
+	text-overflow: ellipsis;
+	white-space: nowrap;
+	display: block;
+}
+
+/* 二行显示 */
+.clamp2 {
+	overflow: hidden;
+	text-overflow: ellipsis;
+	display: -webkit-box;
+	-webkit-line-clamp: 2;
+	-webkit-box-orient: vertical;
+}
+
+/* 二行显示 */
+.ellipsis {
+	overflow: hidden;
+	text-overflow: ellipsis;
+	display: -webkit-box;
+	-webkit-box-orient: vertical;
+	-webkit-line-clamp: 2;
+}
+
+.common-hover {
+	background: #f5f5f5;
+}
+
+/* 角标 */
+.corner {
+	background-color: #e51c23;
+	position: absolute;
+	right: -18rpx;
+	top: -18rpx;
+	color: #FFFFFF;
+	text-align: center;
+	border-radius: 999px;
+	font-size: 24rpx !important;
+	min-width: 35rpx;
+	min-height: 35rpx;
+	display: flex;
+	align-items: center;
+	justify-content: center;
+	line-height: 1;
+}
+
+.flex_item {
+	display: flex;
+	align-items: center;
+	/* justify-content: space-between; */
+}
+
+/* 左右顶格加上下居中 */
+.flex-between-center {
+	display: flex;
+	justify-content: space-between;
+	align-items: center;
+}
+
+/* flex布局-整体居中 */
+.flex-center {
+	display: flex;
+	align-items: center;
+	justify-content: center;
+}
+
+.flex-start {
+	display: flex;
+	align-items: center;
+	justify-content: flex-start;
+}
+
+/*文字对齐*/
+.text-left {
+	text-align: left !important;
+}
+
+.text-center {
+	text-align: center !important;
+}
+
+.text-justify {
+	text-align: justify !important;
+}
+
+.text-right {
+	text-align: right !important;
+}
+
+.text-default {
+	color: #212121 !important;
+}
+
+.text-white {
+	color: #ffffff !important;
+}
+
+.text-primary {
+	color: #00bcd4 !important;
+}
+
+.text-success {
+	color: #009688 !important;
+}
+
+.text-info {
+	color: #03a9f4 !important;
+}
+
+.text-warning {
+	color: #ffc107 !important;
+}
+
+.text-danger {
+	color: #e51c23 !important;
+}
+
+.text-pink {
+	color: #e91e63 !important;
+}
+
+.text-purple {
+	color: #673ab7 !important;
+}
+
+.text-indigo {
+	color: #3f51b5 !important;
+}
+
+.text-gray {
+	color: #999999 !important;
+}
+
+.bg-default {
+	background-color: #f5f5f5 !important;
+}
+
+.bg-primary {
+	background-color: #00bcd4 !important;
+}
+
+.bg-success {
+	background-color: #009688 !important;
+}
+
+.bg-info {
+	background-color: #03a9f4 !important;
+}
+
+.bg-warning {
+	background-color: #FFB238 !important;
+}
+
+.bg-danger {
+	background-color: #DC4D46 !important;
+}
+
+.bg-pink {
+	background-color: #e91e63 !important;
+}
+
+.bg-purple {
+	background-color: #673ab7 !important;
+}
+
+.bg-indigo {
+	background-color: #3f51b5 !important;
+}
+
+.bg-white {
+	background-color: white !important;
+}
+
+.bg-gray {
+	background-color: #e3e3e3 !important;
+}
+
+/* 边框 */
+.border-radius-15 {
+	border-radius: 15rpx;
+}
+
+.border-radius-10 {
+	border-radius: 10rpx;
+}
+
+.border-radius-all {
+	border-radius: 1000rpx;
+}
+
+/* 底部边线 */
+.borde-b {
+	border-bottom: 1px solid #dddddd;
+}
+
+/* 弹性盒子 */
+.flex {
+	display: flex;
+	align-items: center;
+	justify-content: space-between;
+}
+
+.items-left {
+	justify-content: flex-start;
+}
+
+.items-right {
+	justify-content: flex-end;
+}
+
+.flex-shrink-false {
+	flex-shrink: 0;
+}
+
+.flex-grow-true {
+	flex-grow: 1;
+}
+
+.position-relative {
+	position: relative;
+}

BIN
unpackage/cache/wgt/__UNI__3CDE968/static/error/emptyCart.png


BIN
unpackage/cache/wgt/__UNI__3CDE968/static/error/errorImage.jpg


BIN
unpackage/cache/wgt/__UNI__3CDE968/static/error/missing-face.png


BIN
unpackage/cache/wgt/__UNI__3CDE968/static/img/Close.png


BIN
unpackage/cache/wgt/__UNI__3CDE968/static/img/appointment1.png


BIN
unpackage/cache/wgt/__UNI__3CDE968/static/img/assets-bg.png


BIN
unpackage/cache/wgt/__UNI__3CDE968/static/img/bgTip2.png


BIN
unpackage/cache/wgt/__UNI__3CDE968/static/img/chong.png


BIN
unpackage/cache/wgt/__UNI__3CDE968/static/img/eyes.png


BIN
unpackage/cache/wgt/__UNI__3CDE968/static/img/fanhui.png


BIN
unpackage/cache/wgt/__UNI__3CDE968/static/img/gift.png


BIN
unpackage/cache/wgt/__UNI__3CDE968/static/img/img01.png


BIN
unpackage/cache/wgt/__UNI__3CDE968/static/img/img16.png


BIN
unpackage/cache/wgt/__UNI__3CDE968/static/img/img28.png


BIN
unpackage/cache/wgt/__UNI__3CDE968/static/img/img43.png


BIN
unpackage/cache/wgt/__UNI__3CDE968/static/img/img51.png


BIN
unpackage/cache/wgt/__UNI__3CDE968/static/img/index1.png


BIN
unpackage/cache/wgt/__UNI__3CDE968/static/img/index2.png


BIN
unpackage/cache/wgt/__UNI__3CDE968/static/img/index3.png


BIN
unpackage/cache/wgt/__UNI__3CDE968/static/img/index4.png


BIN
unpackage/cache/wgt/__UNI__3CDE968/static/img/index5.png


BIN
unpackage/cache/wgt/__UNI__3CDE968/static/img/index6.png


BIN
unpackage/cache/wgt/__UNI__3CDE968/static/img/index7.png


BIN
unpackage/cache/wgt/__UNI__3CDE968/static/img/jiantou.png


BIN
unpackage/cache/wgt/__UNI__3CDE968/static/img/kefu.png


BIN
unpackage/cache/wgt/__UNI__3CDE968/static/img/lianxi.png


BIN
unpackage/cache/wgt/__UNI__3CDE968/static/img/ling.png


BIN
unpackage/cache/wgt/__UNI__3CDE968/static/img/log.png


BIN
unpackage/cache/wgt/__UNI__3CDE968/static/img/myTeam.png


BIN
unpackage/cache/wgt/__UNI__3CDE968/static/img/password.png


BIN
unpackage/cache/wgt/__UNI__3CDE968/static/img/paySuccess.png


BIN
unpackage/cache/wgt/__UNI__3CDE968/static/img/pgTip.png


BIN
unpackage/cache/wgt/__UNI__3CDE968/static/img/phone.png


BIN
unpackage/cache/wgt/__UNI__3CDE968/static/img/pinggou.png


BIN
unpackage/cache/wgt/__UNI__3CDE968/static/img/pwd.png


BIN
unpackage/cache/wgt/__UNI__3CDE968/static/img/qian.png


BIN
unpackage/cache/wgt/__UNI__3CDE968/static/img/rengouBg.png


BIN
unpackage/cache/wgt/__UNI__3CDE968/static/img/set.png


BIN
unpackage/cache/wgt/__UNI__3CDE968/static/img/share-bg.png


BIN
unpackage/cache/wgt/__UNI__3CDE968/static/img/share.png


BIN
unpackage/cache/wgt/__UNI__3CDE968/static/img/tab.png


BIN
unpackage/cache/wgt/__UNI__3CDE968/static/img/ti.png


BIN
unpackage/cache/wgt/__UNI__3CDE968/static/img/tongz-bg.png


BIN
unpackage/cache/wgt/__UNI__3CDE968/static/img/user-bg.png


BIN
unpackage/cache/wgt/__UNI__3CDE968/static/img/weixin.png


BIN
unpackage/cache/wgt/__UNI__3CDE968/static/img/xiaj.png


BIN
unpackage/cache/wgt/__UNI__3CDE968/static/img/yan.png


Some files were not shown because too many files changed in this diff