From 9f1e740e07085a7fc74defe5d63bcc4818aab69e Mon Sep 17 00:00:00 2001 From: yiming <m13691596795@163.com> Date: 星期四, 29 二月 2024 18:49:37 +0800 Subject: [PATCH] zhang --- pages/testLogin/index.wxml | 8 pages/personalCenter/myMassage/index.json | 3 pages/teacherCertification/index.wxml | 2 pages/personalCenter/myCollection/index.json | 3 pages/personalCenter/activateProduct/index.json | 3 pages/personalCenter/feedBack/index.js | 66 pages/personalCenter/sampleBooks/index.wxml | 2 pages/personalCenter/activateProduct/index.wxss | 1 pages/personalCenter/components/user-center-card/index.wxss | 60 pages/personalCenter/activateProduct/index.js | 66 services/cart/cart.js | 32 pages/personalCenter/index.wxml | 2 pages/personalCenter/myCollection/index.wxss | 1 pages/personalCenter/certificate/index.wxss | 1 pages/personalCenter/myOrder/index.js | 66 pages/personalCenter/feedBackSubmit/index.js | 66 pages/aboutUs/index.wxml | 20 pages/bibliographyList/index.json | 8 pages/personalCenter/myMassage/index.wxss | 60 pages/personalCenter/publishBooks/index.js | 66 pages/personalCenter/index.js | 200 ++ pages/personalCenter/myMassage/massageDetail/index.wxss | 28 pages/personalCenter/sampleBooks/index.js | 66 pages/cart/index.wxml | 37 pages/personalCenter/certificate/index.json | 3 pages/personalCenter/feedBack/index.wxss | 1 pages/personalCenter/publishBooks/index.wxml | 2 pages/personalCenter/certificate/index.js | 66 pages/bookExhibitionList/index.wxml | 2 pages/aboutUs/js/weapp.qrcode.js | 1281 ++++++++++++++++++ static/images/personal/notification1.png | 0 custom-tab-bar/data.js | 2 pages/personalCenter/downloads/index.wxss | 1 pages/cart/index.js | 345 +--- pages/teacherCertification/index.json | 3 pages/personalCenter/publishBooks/index.json | 3 pages/bibliographyList/index.wxss | 72 pages/personalCenter/myMassage/massageDetail/index.json | 4 pages/bibliographyList/index.js | 415 +++-- pages/personalCenter/myOrder/index.wxml | 2 pages/aboutUs/index.json | 6 pages/personalCenter/feedBackSubmit/index.wxml | 2 components/goods-card/index.wxss | 2 pages/personalCenter/feedBackSubmit/index.wxss | 1 pages/teacherCertification/index.wxss | 1 pages/testLogin/index.js | 132 + pages/personalCenter/sampleBooks/index.wxss | 1 pages/bookExhibitionList/index.js | 19 pages/personalCenter/feedBack/index.json | 3 pages/personalCenter/activateProduct/index.wxml | 2 pages/personalCenter/components/user-center-card/index.wxml | 33 pages/personalCenter/sampleBooks/index.json | 3 pages/aboutUs/index.js | 141 ++ pages/personalCenter/myCollection/index.wxml | 2 pages/personalCenter/certificate/index.wxml | 2 pages/personalCenter/index.wxss | 1 pages/teacherCertification/index.js | 66 pages/personalCenter/downloads/index.js | 66 pages/personalCenter/myMassage/massageDetail/index.wxml | 8 pages/personalCenter/feedBackSubmit/index.json | 3 pages/personalCenter/myMassage/index.wxml | 35 pages/aboutUs/index.wxss | 20 pages/cart/index.wxss | 28 pages/testLogin/index.json | 6 pages/personalCenter/myOrder/index.json | 3 pages/personalCenter/index.json | 3 pages/personalCenter/publishBooks/index.wxss | 1 pages/bookExhibitionList/index.wxss | 2 pages/personalCenter/feedBack/index.wxml | 2 pages/personalCenter/downloads/index.json | 3 pages/personalCenter/downloads/index.wxml | 2 app.json | 22 /dev/null | 68 pages/cart/index.json | 9 pages/personalCenter/myCollection/index.js | 66 pages/bibliographyList/index.wxml | 39 pages/personalCenter/myMassage/index.js | 155 ++ pages/personalCenter/myMassage/massageDetail/index.js | 79 + pages/testLogin/index.wxss | 4 pages/personalCenter/myOrder/index.wxss | 1 80 files changed, 3,520 insertions(+), 591 deletions(-) diff --git a/app.json b/app.json index 1232b9f..430bd80 100644 --- a/app.json +++ b/app.json @@ -1,6 +1,8 @@ { "pages": [ + "pages/cart/index", "pages/home/home", + "pages/aboutUs/index", "pages/bookServices/index", "pages/bookExhibitionList/index", "pages/bookExhibitionDetails/index", @@ -14,7 +16,6 @@ "pages/goods/category/index", "pages/goods/search/index", "pages/goods/result/index", - "pages/cart/index", "pages/order/order-confirm/index", "pages/order/receipt/index", "pages/order/pay-result/index", @@ -32,7 +33,21 @@ "pages/order/fill-tracking-no/index", "pages/order/delivery-detail/index", "pages/order/invoice/index", - "pages/usercenter/name-edit/index" + "pages/usercenter/name-edit/index", + "pages/teacherCertification/index", + "pages/personalCenter/index", + "pages/personalCenter/myOrder/index", + "pages/personalCenter/myCollection/index", + "pages/personalCenter/myMassage/index", + "pages/personalCenter/myMassage/massageDetail/index", + "pages/personalCenter/feedBack/index", + "pages/personalCenter/feedBackSubmit/index", + "pages/personalCenter/certificate/index", + "pages/personalCenter/publishBooks/index", + "pages/personalCenter/sampleBooks/index", + "pages/personalCenter/downloads/index", + "pages/personalCenter/activateProduct/index", + "pages/testLogin/index" ], "tabBar": { "custom": true, @@ -72,7 +87,8 @@ "backgroundTextStyle": "light", "navigationBarBackgroundColor": "#fff", "navigationBarTitleText": "浜笀E璇�", - "navigationBarTextStyle": "black" + "navigationBarTextStyle": "black", + " navigationStyle": "custom" }, "sitemapLocation": "sitemap.json", "permission": { diff --git a/components/goods-card/index.wxss b/components/goods-card/index.wxss index 1326d59..6a3efe2 100644 --- a/components/goods-card/index.wxss +++ b/components/goods-card/index.wxss @@ -130,4 +130,4 @@ .spec-for-symbol { font-size: 24rpx; -} +} \ No newline at end of file diff --git a/custom-tab-bar/data.js b/custom-tab-bar/data.js index 7691a71..34da94e 100644 --- a/custom-tab-bar/data.js +++ b/custom-tab-bar/data.js @@ -23,6 +23,6 @@ { icon: 'person', text: '涓汉涓績', - url: 'pages/usercenter/index', + url: 'pages/personalCenter/index', }, ]; diff --git a/pages/aboutUs/index.js b/pages/aboutUs/index.js new file mode 100644 index 0000000..7f5f5f5 --- /dev/null +++ b/pages/aboutUs/index.js @@ -0,0 +1,141 @@ +// pages/aboutUs/index.js +const app = getApp() +import drawQrcode from './js/weapp.qrcode' +Page({ + + /** + * 椤甸潰鐨勫垵濮嬫暟鎹� + */ + data: { + aboutText: null, + swiperList: null, + qrcodeWidth: 0, + current: 1,//杞挱鍥惧弬鏁� + autoplay: true, //杞挱鍥惧弬鏁� + duration: '500',//杞挱鍥惧弬鏁� + interval: 5000,//杞挱鍥惧弬鏁� + navigation: { type: 'dots' },//杞挱鍥惧弬鏁� + bannerList: [], //杞挱鍥惧垪琛� + }, + + /** + * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍔犺浇 + */ + onLoad(options) { + + this.getBanner() + this.getAboutText() + + + // drawQrcode({ + + // width: 200, // 蹇呴』锛屼簩缁寸爜瀹藉害锛屼笌canvas鐨剋idth淇濇寔涓�鑷� + + // height: 200, // 蹇呴』锛屼簩缁寸爜楂樺害锛屼笌canvas鐨刪eight淇濇寔涓�鑷� + + // canvasId: 'myQrcode', + + // background: '#ffffff', // 闈炲繀椤伙紝浜岀淮鐮佽儗鏅鑹诧紝榛樿鍊肩櫧鑹� + + // foreground: '#000', // 闈炲繀椤伙紝浜岀淮鐮佸墠鏅壊锛岄粯璁ゅ�奸粦鑹� '#000000' + + // // ctx: wx.createCanvasContext('myQrcode'), // 闈炲繀椤伙紝缁樺浘涓婁笅鏂囷紝鍙�氳繃 wx.createCanvasContext('canvasId') 鑾峰彇锛寁1.0.0+鐗堟湰鏀寔 + + // text: '13216549865', // 蹇呴』锛屼簩缁寸爜鍐呭 + // // v1.0.0+鐗堟湰鏀寔鍦ㄤ簩缁寸爜涓婄粯鍒跺浘鐗� + + // image: { + // // imageResource: '../../images/icon.png', // 鎸囧畾浜岀淮鐮佸皬鍥炬爣 + // dx: 70, + // dy: 70, + // dWidth: 60, + // dHeight: 60 + // } + // }) + + }, + + /** + * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍒濇娓叉煋瀹屾垚 + */ + onReady() { + + }, + + /** + * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鏄剧ず + */ + onShow() { + + }, + + /** + * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰闅愯棌 + */ + onHide() { + + }, + + /** + * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍗歌浇 + */ + onUnload() { + + }, + + /** + * 椤甸潰鐩稿叧浜嬩欢澶勭悊鍑芥暟--鐩戝惉鐢ㄦ埛涓嬫媺鍔ㄤ綔 + */ + onPullDownRefresh() { + + }, + + /** + * 椤甸潰涓婃媺瑙﹀簳浜嬩欢鐨勫鐞嗗嚱鏁� + */ + onReachBottom() { + + }, + + /** + * 鐢ㄦ埛鐐瑰嚮鍙充笂瑙掑垎浜� + */ + onShareAppMessage() { + + }, + getBanner() { + app.MG.resource.getItem({ + path: 'jsek_banner\\jsek_aboutUsBanner', + paging: { start: 0, size: 9 }, + coverSize: { + width: 250 + }, + fields: { + jsek_link: [] + } + }).then(res => { + // console.log(res.datas[0].icon, 'res'); + this.setData({ + bannerList: res.datas[0].icon, + swiperList: res.datas[0].icon + }) + // console.log(this.data.swiperList); + }) + }, + getAboutText() { + app.MG.resource.getItem({ + path: 'jsek_aboutUs', + fields: { + content: [] + }, + }).then(res => { + console.log(res); + + this.setData({ + aboutText: res.datas[0].content + }) + + console.log(this.data.aboutText); + }) + } +}) \ No newline at end of file diff --git a/pages/aboutUs/index.json b/pages/aboutUs/index.json new file mode 100644 index 0000000..81e41cd --- /dev/null +++ b/pages/aboutUs/index.json @@ -0,0 +1,6 @@ +{ + "usingComponents": { + "t-swiper": "tdesign-miniprogram/swiper/swiper", + "t-swiper-nav": "tdesign-miniprogram/swiper-nav/swiper-nav" + } +} \ No newline at end of file diff --git a/pages/aboutUs/index.wxml b/pages/aboutUs/index.wxml new file mode 100644 index 0000000..ef37383 --- /dev/null +++ b/pages/aboutUs/index.wxml @@ -0,0 +1,20 @@ +<!--pages/aboutUs/index.wxml--> +<!-- <text>鍏充簬鎴戜滑</text> --> +<view class="swiper-wrap"> + <t-swiper wx:if="{{bannerList.length > 0}}" list="{{bannerList}}" current="{{current}}" autoplay="{{autoplay}}" duration="{{duration}}" interval="{{interval}}" navigation="{{navigation}}" bind:click="navToActivityDetail" /> +</view> + + +<!-- 浜岀淮鐮佸睍绀� --> +<!-- <view class=""> + <canvas style="width: 200px; height: 200px;margin:0 auto" canvas-id="myQrcode"></canvas> +</view> --> + +<view class="aboutUs"> + <view class="imageBox"> + <image src="{{swiperList}}" alt="" /> + </view> + <view class="aboutText"> + <rich-text nodes="{{aboutText}}"></rich-text> + </view> +</view> \ No newline at end of file diff --git a/pages/aboutUs/index.wxss b/pages/aboutUs/index.wxss new file mode 100644 index 0000000..5a434ed --- /dev/null +++ b/pages/aboutUs/index.wxss @@ -0,0 +1,20 @@ +/* pages/aboutUs/index.wxss */ +image { + width: 100%; + height: 100%; +} + +.imageBox { + width: 690rpx; + height: 300rpx; + margin-bottom: 35rpx; +} + +.aboutUs { + margin: 30rpx; + +} + +.aboutText { + padding-bottom: 100rpx; +} \ No newline at end of file diff --git a/pages/aboutUs/js/weapp.qrcode.js b/pages/aboutUs/js/weapp.qrcode.js new file mode 100644 index 0000000..2967226 --- /dev/null +++ b/pages/aboutUs/js/weapp.qrcode.js @@ -0,0 +1,1281 @@ +/** + * weapp.qrcode.js v1.0.0 (https://github.com/yingye/weapp-qrcode#readme) + */ + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global.drawQrcode = factory()); +}(this, (function () { 'use strict'; + +var hasOwn = Object.prototype.hasOwnProperty; +var toStr = Object.prototype.toString; +var defineProperty = Object.defineProperty; +var gOPD = Object.getOwnPropertyDescriptor; + +var isArray = function isArray(arr) { + if (typeof Array.isArray === 'function') { + return Array.isArray(arr); + } + + return toStr.call(arr) === '[object Array]'; +}; + +var isPlainObject = function isPlainObject(obj) { + if (!obj || toStr.call(obj) !== '[object Object]') { + return false; + } + + var hasOwnConstructor = hasOwn.call(obj, 'constructor'); + var hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf'); + // Not own constructor property must be Object + if (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) { + return false; + } + + // Own properties are enumerated firstly, so to speed up, + // if last one is own, then all properties are own. + var key; + for (key in obj) { /**/ } + + return typeof key === 'undefined' || hasOwn.call(obj, key); +}; + +// If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target +var setProperty = function setProperty(target, options) { + if (defineProperty && options.name === '__proto__') { + defineProperty(target, options.name, { + enumerable: true, + configurable: true, + value: options.newValue, + writable: true + }); + } else { + target[options.name] = options.newValue; + } +}; + +// Return undefined instead of __proto__ if '__proto__' is not an own property +var getProperty = function getProperty(obj, name) { + if (name === '__proto__') { + if (!hasOwn.call(obj, name)) { + return void 0; + } else if (gOPD) { + // In early versions of node, obj['__proto__'] is buggy when obj has + // __proto__ as an own property. Object.getOwnPropertyDescriptor() works. + return gOPD(obj, name).value; + } + } + + return obj[name]; +}; + +var extend = function extend() { + var options, name, src, copy, copyIsArray, clone; + var target = arguments[0]; + var i = 1; + var length = arguments.length; + var deep = false; + + // Handle a deep copy situation + if (typeof target === 'boolean') { + deep = target; + target = arguments[1] || {}; + // skip the boolean and the target + i = 2; + } + if (target == null || (typeof target !== 'object' && typeof target !== 'function')) { + target = {}; + } + + for (; i < length; ++i) { + options = arguments[i]; + // Only deal with non-null/undefined values + if (options != null) { + // Extend the base object + for (name in options) { + src = getProperty(target, name); + copy = getProperty(options, name); + + // Prevent never-ending loop + if (target !== copy) { + // Recurse if we're merging plain objects or arrays + if (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) { + if (copyIsArray) { + copyIsArray = false; + clone = src && isArray(src) ? src : []; + } else { + clone = src && isPlainObject(src) ? src : {}; + } + + // Never move original objects, clone them + setProperty(target, { name: name, newValue: extend(deep, clone, copy) }); + + // Don't bring in undefined values + } else if (typeof copy !== 'undefined') { + setProperty(target, { name: name, newValue: copy }); + } + } + } + } + } + + // Return the modified object + return target; +}; + +//--------------------------------------------------------------------- +// QRCode for JavaScript +// +// Copyright (c) 2009 Kazuhiko Arase +// +// URL: http://www.d-project.com/ +// +// Licensed under the MIT license: +// http://www.opensource.org/licenses/mit-license.php +// +// The word "QR Code" is registered trademark of +// DENSO WAVE INCORPORATED +// http://www.denso-wave.com/qrcode/faqpatent-e.html +// +//--------------------------------------------------------------------- + +//--------------------------------------------------------------------- +// QR8bitByte +//--------------------------------------------------------------------- + +function QR8bitByte(data) { + this.mode = QRMode.MODE_8BIT_BYTE; + this.data = data; +} + +QR8bitByte.prototype = { + + getLength: function (buffer) { + return this.data.length; + }, + + write: function (buffer) { + for (var i = 0; i < this.data.length; i++) { + // not JIS ... + buffer.put(this.data.charCodeAt(i), 8); + } + } +}; + +//--------------------------------------------------------------------- +// QRCode +//--------------------------------------------------------------------- + +function QRCode(typeNumber, errorCorrectLevel) { + this.typeNumber = typeNumber; + this.errorCorrectLevel = errorCorrectLevel; + this.modules = null; + this.moduleCount = 0; + this.dataCache = null; + this.dataList = new Array(); +} + +QRCode.prototype = { + + addData: function (data) { + var newData = new QR8bitByte(data); + this.dataList.push(newData); + this.dataCache = null; + }, + + isDark: function (row, col) { + if (row < 0 || this.moduleCount <= row || col < 0 || this.moduleCount <= col) { + throw new Error(row + "," + col); + } + return this.modules[row][col]; + }, + + getModuleCount: function () { + return this.moduleCount; + }, + + make: function () { + // Calculate automatically typeNumber if provided is < 1 + if (this.typeNumber < 1) { + var typeNumber = 1; + for (typeNumber = 1; typeNumber < 40; typeNumber++) { + var rsBlocks = QRRSBlock.getRSBlocks(typeNumber, this.errorCorrectLevel); + + var buffer = new QRBitBuffer(); + var totalDataCount = 0; + for (var i = 0; i < rsBlocks.length; i++) { + totalDataCount += rsBlocks[i].dataCount; + } + + for (var i = 0; i < this.dataList.length; i++) { + var data = this.dataList[i]; + buffer.put(data.mode, 4); + buffer.put(data.getLength(), QRUtil.getLengthInBits(data.mode, typeNumber)); + data.write(buffer); + } + if (buffer.getLengthInBits() <= totalDataCount * 8) break; + } + this.typeNumber = typeNumber; + } + this.makeImpl(false, this.getBestMaskPattern()); + }, + + makeImpl: function (test, 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); + + for (var col = 0; col < this.moduleCount; col++) { + this.modules[row][col] = null; //(col + row) % 3; + } + } + + this.setupPositionProbePattern(0, 0); + this.setupPositionProbePattern(this.moduleCount - 7, 0); + this.setupPositionProbePattern(0, this.moduleCount - 7); + this.setupPositionAdjustPattern(); + this.setupTimingPattern(); + this.setupTypeInfo(test, maskPattern); + + if (this.typeNumber >= 7) { + this.setupTypeNumber(test); + } + + if (this.dataCache == null) { + this.dataCache = QRCode.createData(this.typeNumber, this.errorCorrectLevel, this.dataList); + } + + this.mapData(this.dataCache, maskPattern); + }, + + 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; + } + } + } + }, + + getBestMaskPattern: function () { + + var minLostPoint = 0; + var pattern = 0; + + for (var i = 0; i < 8; i++) { + + this.makeImpl(true, i); + + var lostPoint = QRUtil.getLostPoint(this); + + if (i == 0 || minLostPoint > lostPoint) { + minLostPoint = lostPoint; + pattern = i; + } + } + + return pattern; + }, + + createMovieClip: function (target_mc, instance_name, depth) { + + var qr_mc = target_mc.createEmptyMovieClip(instance_name, depth); + var cs = 1; + + this.make(); + + for (var row = 0; row < this.modules.length; row++) { + + var y = row * cs; + + for (var col = 0; col < this.modules[row].length; col++) { + + var x = col * cs; + var dark = this.modules[row][col]; + + if (dark) { + qr_mc.beginFill(0, 100); + qr_mc.moveTo(x, y); + qr_mc.lineTo(x + cs, y); + qr_mc.lineTo(x + cs, y + cs); + qr_mc.lineTo(x, y + cs); + qr_mc.endFill(); + } + } + } + + return qr_mc; + }, + + 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; + } + + for (var c = 8; c < this.moduleCount - 8; c++) { + if (this.modules[6][c] != null) { + continue; + } + this.modules[6][c] = c % 2 == 0; + } + }, + + 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; + } + } + } + } + } + }, + + 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; + } + + for (var i = 0; i < 18; i++) { + var mod = !test && (bits >> i & 1) == 1; + this.modules[i % 3 + this.moduleCount - 8 - 3][Math.floor(i / 3)] = mod; + } + }, + + setupTypeInfo: function (test, maskPattern) { + + var data = 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 + for (var i = 0; i < 15; i++) { + + 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; + }, + + 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; + } + } + } + } + +}; + +QRCode.PAD0 = 0xEC; +QRCode.PAD1 = 0x11; + +QRCode.createData = function (typeNumber, errorCorrectLevel, dataList) { + + var rsBlocks = QRRSBlock.getRSBlocks(typeNumber, errorCorrectLevel); + + var buffer = new QRBitBuffer(); + + for (var i = 0; i < dataList.length; i++) { + var data = dataList[i]; + buffer.put(data.mode, 4); + buffer.put(data.getLength(), QRUtil.getLengthInBits(data.mode, typeNumber)); + data.write(buffer); + } + + // calc num max data. + var totalDataCount = 0; + for (var i = 0; i < rsBlocks.length; i++) { + totalDataCount += rsBlocks[i].dataCount; + } + + if (buffer.getLengthInBits() > totalDataCount * 8) { + throw new Error("code length overflow. (" + buffer.getLengthInBits() + ">" + totalDataCount * 8 + ")"); + } + + // end code + if (buffer.getLengthInBits() + 4 <= totalDataCount * 8) { + buffer.put(0, 4); + } + + // padding + while (buffer.getLengthInBits() % 8 != 0) { + buffer.putBit(false); + } + + // padding + while (true) { + + if (buffer.getLengthInBits() >= totalDataCount * 8) { + break; + } + buffer.put(QRCode.PAD0, 8); + + if (buffer.getLengthInBits() >= totalDataCount * 8) { + break; + } + buffer.put(QRCode.PAD1, 8); + } + + return QRCode.createBytes(buffer, rsBlocks); +}; + +QRCode.createBytes = function (buffer, rsBlocks) { + + var offset = 0; + + var maxDcCount = 0; + var maxEcCount = 0; + + var dcdata = new Array(rsBlocks.length); + var ecdata = new Array(rsBlocks.length); + + for (var r = 0; r < rsBlocks.length; r++) { + + var dcCount = rsBlocks[r].dataCount; + var ecCount = rsBlocks[r].totalCount - 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 totalCodeCount = 0; + for (var i = 0; i < rsBlocks.length; i++) { + totalCodeCount += rsBlocks[i].totalCount; + } + + var data = new Array(totalCodeCount); + 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; +}; + +//--------------------------------------------------------------------- +// QRMode +//--------------------------------------------------------------------- + +var QRMode = { + MODE_NUMBER: 1 << 0, + MODE_ALPHA_NUM: 1 << 1, + MODE_8BIT_BYTE: 1 << 2, + MODE_KANJI: 1 << 3 +}; + +//--------------------------------------------------------------------- +// QRErrorCorrectLevel +//--------------------------------------------------------------------- + +var QRErrorCorrectLevel = { + L: 1, + M: 0, + Q: 3, + H: 2 +}; + +//--------------------------------------------------------------------- +// QRMaskPattern +//--------------------------------------------------------------------- + +var QRMaskPattern = { + PATTERN000: 0, + PATTERN001: 1, + PATTERN010: 2, + PATTERN011: 3, + PATTERN100: 4, + PATTERN101: 5, + PATTERN110: 6, + PATTERN111: 7 +}; + +//--------------------------------------------------------------------- +// QRUtil +//--------------------------------------------------------------------- + +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, + + 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; + }, + + 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; + }, + + 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); + } + }, + + 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; + }, + + getLengthInBits: function (mode, type) { + + if (1 <= type && type < 10) { + + // 1 - 9 + + switch (mode) { + case QRMode.MODE_NUMBER: + return 10; + case QRMode.MODE_ALPHA_NUM: + return 9; + case QRMode.MODE_8BIT_BYTE: + return 8; + case QRMode.MODE_KANJI: + return 8; + default: + throw new Error("mode:" + mode); + } + } else if (type < 27) { + + // 10 - 26 + + switch (mode) { + case QRMode.MODE_NUMBER: + return 12; + case QRMode.MODE_ALPHA_NUM: + return 11; + case QRMode.MODE_8BIT_BYTE: + return 16; + case QRMode.MODE_KANJI: + return 10; + default: + throw new Error("mode:" + mode); + } + } else if (type < 41) { + + // 27 - 40 + + switch (mode) { + case QRMode.MODE_NUMBER: + return 14; + case QRMode.MODE_ALPHA_NUM: + return 13; + case QRMode.MODE_8BIT_BYTE: + return 16; + case QRMode.MODE_KANJI: + return 12; + default: + throw new Error("mode:" + mode); + } + } else { + throw new Error("type:" + type); + } + }, + + getLostPoint: function (qrCode) { + + var moduleCount = qrCode.getModuleCount(); + + var lostPoint = 0; + + // LEVEL1 + + for (var row = 0; row < moduleCount; row++) { + + for (var col = 0; col < moduleCount; col++) { + + var sameCount = 0; + var dark = qrCode.isDark(row, col); + + for (var r = -1; r <= 1; r++) { + + if (row + r < 0 || moduleCount <= row + r) { + continue; + } + + for (var c = -1; c <= 1; c++) { + + if (col + c < 0 || moduleCount <= col + c) { + continue; + } + + if (r == 0 && c == 0) { + continue; + } + + if (dark == qrCode.isDark(row + r, col + c)) { + sameCount++; + } + } + } + + if (sameCount > 5) { + lostPoint += 3 + sameCount - 5; + } + } + } + + // LEVEL2 + + for (var row = 0; row < moduleCount - 1; row++) { + for (var col = 0; col < moduleCount - 1; col++) { + var count = 0; + if (qrCode.isDark(row, col)) count++; + if (qrCode.isDark(row + 1, col)) count++; + if (qrCode.isDark(row, col + 1)) count++; + if (qrCode.isDark(row + 1, col + 1)) count++; + if (count == 0 || count == 4) { + lostPoint += 3; + } + } + } + + // LEVEL3 + + for (var row = 0; row < moduleCount; row++) { + for (var col = 0; col < moduleCount - 6; col++) { + if (qrCode.isDark(row, col) && !qrCode.isDark(row, col + 1) && qrCode.isDark(row, col + 2) && qrCode.isDark(row, col + 3) && qrCode.isDark(row, col + 4) && !qrCode.isDark(row, col + 5) && qrCode.isDark(row, col + 6)) { + lostPoint += 40; + } + } + } + + for (var col = 0; col < moduleCount; col++) { + for (var row = 0; row < moduleCount - 6; row++) { + if (qrCode.isDark(row, col) && !qrCode.isDark(row + 1, col) && qrCode.isDark(row + 2, col) && qrCode.isDark(row + 3, col) && qrCode.isDark(row + 4, col) && !qrCode.isDark(row + 5, col) && qrCode.isDark(row + 6, col)) { + lostPoint += 40; + } + } + } + + // LEVEL4 + + var darkCount = 0; + + for (var col = 0; col < moduleCount; col++) { + for (var row = 0; row < moduleCount; row++) { + if (qrCode.isDark(row, col)) { + darkCount++; + } + } + } + + var ratio = Math.abs(100 * darkCount / moduleCount / moduleCount - 50) / 5; + lostPoint += ratio * 10; + + return lostPoint; + } + +}; + +//--------------------------------------------------------------------- +// QRMath +//--------------------------------------------------------------------- + +var QRMath = { + + glog: function (n) { + + if (n < 1) { + throw new Error("glog(" + n + ")"); + } + + return QRMath.LOG_TABLE[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 +//--------------------------------------------------------------------- + +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; + }, + + 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); + }, + + mod: function (e) { + + if (this.getLength() - e.getLength() < 0) { + return this; + } + + var ratio = QRMath.glog(this.get(0)) - QRMath.glog(e.get(0)); + + var num = new Array(this.getLength()); + + for (var i = 0; i < this.getLength(); i++) { + num[i] = this.get(i); + } + + for (var i = 0; i < e.getLength(); i++) { + num[i] ^= QRMath.gexp(QRMath.glog(e.get(i)) + ratio); + } + + // recursive call + return new QRPolynomial(num, 0).mod(e); + } +}; + +//--------------------------------------------------------------------- +// QRRSBlock +//--------------------------------------------------------------------- + +function QRRSBlock(totalCount, dataCount) { + this.totalCount = totalCount; + this.dataCount = dataCount; +} + +QRRSBlock.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]]; + +QRRSBlock.getRSBlocks = function (typeNumber, errorCorrectLevel) { + + var rsBlock = QRRSBlock.getRsBlockTable(typeNumber, errorCorrectLevel); + + if (rsBlock == undefined) { + throw new Error("bad rs block @ typeNumber:" + typeNumber + "/errorCorrectLevel:" + errorCorrectLevel); + } + + var length = rsBlock.length / 3; + + var list = new Array(); + + for (var i = 0; i < length; i++) { + + var count = rsBlock[i * 3 + 0]; + var totalCount = rsBlock[i * 3 + 1]; + var dataCount = rsBlock[i * 3 + 2]; + + for (var j = 0; j < count; j++) { + list.push(new QRRSBlock(totalCount, dataCount)); + } + } + + return list; +}; + +QRRSBlock.getRsBlockTable = function (typeNumber, errorCorrectLevel) { + + switch (errorCorrectLevel) { + case QRErrorCorrectLevel.L: + return QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 0]; + case QRErrorCorrectLevel.M: + return QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 1]; + case QRErrorCorrectLevel.Q: + return QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 2]; + case QRErrorCorrectLevel.H: + return QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 3]; + default: + return undefined; + } +}; + +//--------------------------------------------------------------------- +// 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) == 1; + }, + + put: function (num, length) { + for (var i = 0; i < length; i++) { + this.putBit((num >>> length - i - 1 & 1) == 1); + } + }, + + getLengthInBits: function () { + return this.length; + }, + + 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++; + } +}; + +// support Chinese +function utf16to8(str) { + var out, i, len, c; + out = ''; + len = str.length; + for (i = 0; i < len; i++) { + c = str.charCodeAt(i); + if (c >= 0x0001 && c <= 0x007F) { + out += str.charAt(i); + } else if (c > 0x07FF) { + out += String.fromCharCode(0xE0 | c >> 12 & 0x0F); + out += String.fromCharCode(0x80 | c >> 6 & 0x3F); + out += String.fromCharCode(0x80 | c >> 0 & 0x3F); + } else { + out += String.fromCharCode(0xC0 | c >> 6 & 0x1F); + out += String.fromCharCode(0x80 | c >> 0 & 0x3F); + } + } + return out; +} + +function drawQrcode(options) { + options = options || {}; + options = extend(true, { + width: 256, + height: 256, + x: 0, + y: 0, + typeNumber: -1, + correctLevel: QRErrorCorrectLevel.H, + background: '#ffffff', + foreground: '#000000', + image: { + imageResource: '', + dx: 0, + dy: 0, + dWidth: 100, + dHeight: 100 + } + }, options); + + if (!options.canvasId && !options.ctx) { + console.warn('please set canvasId or ctx!'); + return; + } + + createCanvas(); + + function createCanvas() { + // create the qrcode itself + var qrcode = new QRCode(options.typeNumber, options.correctLevel); + qrcode.addData(utf16to8(options.text)); + qrcode.make(); + + // get canvas context + var ctx; + if (options.ctx) { + ctx = options.ctx; + } else { + ctx = options._this ? wx.createCanvasContext && wx.createCanvasContext(options.canvasId, options._this) : wx.createCanvasContext && wx.createCanvasContext(options.canvasId); + } + + // compute tileW/tileH based on options.width/options.height + var tileW = options.width / qrcode.getModuleCount(); + var tileH = options.height / qrcode.getModuleCount(); + + // draw in the canvas + for (var row = 0; row < qrcode.getModuleCount(); row++) { + for (var col = 0; col < qrcode.getModuleCount(); col++) { + var style = qrcode.isDark(row, col) ? options.foreground : options.background; + ctx.setFillStyle(style); + var w = Math.ceil((col + 1) * tileW) - Math.floor(col * tileW); + var h = Math.ceil((row + 1) * tileW) - Math.floor(row * tileW); + ctx.fillRect(Math.round(col * tileW) + options.x, Math.round(row * tileH) + options.y, w, h); + } + } + + if (options.image.imageResource) { + ctx.drawImage(options.image.imageResource, options.image.dx, options.image.dy, options.image.dWidth, options.image.dHeight); + } + + ctx.draw(false, function (e) { + options.callback && options.callback(e); + }); + } +} + +return drawQrcode; + +}))); diff --git a/pages/bibliographyList/index.js b/pages/bibliographyList/index.js index 5edaf82..dfa20f5 100644 --- a/pages/bibliographyList/index.js +++ b/pages/bibliographyList/index.js @@ -1,174 +1,267 @@ // pages/bibliographyList/index.js const app = getApp() -Page({ +const config = + Page({ - /** - * 椤甸潰鐨勫垵濮嬫暟鎹� - */ - data: { - higherList: [], - vocationalList: [], - teacherList: [], - higherTotal: null, - vocationalTotal: null, - teacherTotal: null - }, + /** + * 椤甸潰鐨勫垵濮嬫暟鎹� + */ + data: { + higherList: [], + vocationalList: [], + teacherList: [], + higherTotal: null, + vocationalTotal: null, + teacherTotal: null, + value: '', + BarHeight: '', + navBarHeight: '' + }, - /** - * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍔犺浇 - */ - onLoad(options) { - this.higherGet() - this.vocationalGet() - this.teacherGet() - }, + /** + * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍔犺浇 + */ + onLoad(options) { + this.higherGet() + this.vocationalGet() + this.teacherGet() - /** - * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍒濇娓叉煋瀹屾垚 - */ - onReady() { - }, - - /** - * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鏄剧ず - */ - onShow() { - - }, - - /** - * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰闅愯棌 - */ - onHide() { - - }, - - /** - * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍗歌浇 - */ - onUnload() { - - }, - - /** - * 椤甸潰鐩稿叧浜嬩欢澶勭悊鍑芥暟--鐩戝惉鐢ㄦ埛涓嬫媺鍔ㄤ綔 - */ - onPullDownRefresh() { - - }, - - /** - * 椤甸潰涓婃媺瑙﹀簳浜嬩欢鐨勫鐞嗗嚱鏁� - */ - onReachBottom() { - - }, - - /** - * 鐢ㄦ埛鐐瑰嚮鍙充笂瑙掑垎浜� - */ - onShareAppMessage() { - - }, - onTabsChange(event) { - console.log(`Change tab, tab-panel value is ${event.detail.value}.`); - }, - - onTabsClick(event) { - console.log(`Click tab, tab-panel value is ${event.detail.value}.`); - }, - //楂樼瓑鏁欒偛 - higherGet() { - app.MG.resource.getItem({ - path: 'jsek_biblioClassification\\jsek_bCHigherEducation', - queryType: '*', - paging: { - start: '0', - size: '999' - }, - coverSize: { - width: 260 - }, - fields: { - jsek_link: [], - content: [], - subtitle: [], - fileType: [], - jsek_resource: [], - freeFile: [] - }, - SysType: 'CmsItem' - }).then(res => { - console.log(res.total); + //鑾峰彇绯荤粺淇℃伅锛岀姸鎬佹爮楂樺害涓簊ysInfo['statusBarHeight']; + let sysInfo = wx.getSystemInfoSync(); + let menu = wx.getMenuButtonBoundingClientRect(); //鑳跺泭淇℃伅 + let navBarHeight = (menu.top - sysInfo.statusBarHeight) * 2 + menu.height; // 瀵艰埅鏍忛珮搴� this.setData({ - higherList: res.datas, - higherTotal: res.total - }) - console.log(this.data.higherList, '5555'); - }) - - - }, - - //鏁欏笀鏁欒偛 - vocationalGet() { - app.MG.resource.getItem({ - path: 'jsek_biblioClassification\\jsek_bCVocationalEducation', - queryType: '*', - paging: { - start: '0', - size: '999' - }, - coverSize: { - width: 260 - }, - fields: { - jsek_link: [], - content: [], - subtitle: [], - fileType: [], - jsek_resource: [], - freeFile: [] - }, - SysType: 'CmsItem' - }).then(res => { - this.setData({ - vocationalList: res.datas, - vocationalTotal: res.total + BarHeight: sysInfo.statusBarHeight, navBarHeight: navBarHeight }) - }) - }, - // 鑱屼笟鏁欒偛 - teacherGet() { - app.MG.resource.getItem({ - path: 'jsek_biblioClassification\\jsek_bCTeacherEducation', - queryType: '*', - paging: { - start: '0', - size: '999' - }, - coverSize: { - width: 260 - }, - fields: { - jsek_link: [], - content: [], - subtitle: [], - fileType: [], - jsek_resource: [], - freeFile: [] - }, - SysType: 'CmsItem' - }).then(res => { - this.setData({ - teacherList: res.datas, - teacherTotal: res.total + + + + + + }, + + /** + * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍒濇娓叉煋瀹屾垚 + */ + onReady() { + + }, + + /** + * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鏄剧ず + */ + onShow() { + console.log(this.data.value); + }, + + /** + * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰闅愯棌 + */ + onHide() { + + }, + + /** + * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍗歌浇 + */ + onUnload() { + + }, + + /** + * 椤甸潰鐩稿叧浜嬩欢澶勭悊鍑芥暟--鐩戝惉鐢ㄦ埛涓嬫媺鍔ㄤ綔 + */ + onPullDownRefresh() { + + }, + + /** + * 椤甸潰涓婃媺瑙﹀簳浜嬩欢鐨勫鐞嗗嚱鏁� + */ + onReachBottom() { + + }, + + /** + * 鐢ㄦ埛鐐瑰嚮鍙充笂瑙掑垎浜� + */ + onShareAppMessage() { + + }, + onTabsChange(event) { + console.log(`Change tab, tab-panel value is ${event.detail.value}.`); + }, + + onTabsClick(event) { + console.log(`Click tab, tab-panel value is ${event.detail.value}.`); + }, + //楂樼瓑鏁欒偛 + higherGet(keyword) { + let searchObj = { + 'Name*': keyword, + '||author*': keyword, + '||isbn*': keyword + + } + + app.MG.resource.getItem({ + path: 'jsek_biblioClassification\\jsek_bCHigherEducation', + queryType: '*', + paging: { + start: '0', + size: '999' + }, + coverSize: { + width: 260 + }, + fields: { + jsek_link: [], + content: [], + subtitle: [], + fileType: [], + jsek_resource: [], + freeFile: [], + ...searchObj, + }, + SysType: 'CmsItem' + }).then(res => { + + res.datas.forEach(item => { + item.determine = true + }) + console.log(res, 789111); + this.setData({ + higherList: res.datas, + higherTotal: res.total + }) + console.log(this.data.higherList, '5555'); }) - }) + + }, + + //鏁欏笀鏁欒偛 + vocationalGet(keyword) { + let searchObj = { + 'Name*': keyword, + '||author*': keyword, + '||isbn*': keyword + + } + app.MG.resource.getItem({ + path: 'jsek_biblioClassification\\jsek_bCVocationalEducation', + queryType: '*', + paging: { + start: '0', + size: '999' + }, + coverSize: { + width: 260 + }, + fields: { + jsek_link: [], + content: [], + subtitle: [], + fileType: [], + jsek_resource: [], + freeFile: [], + ...searchObj + }, + SysType: 'CmsItem' + }).then(res => { + res.datas.forEach(item => { + item.determine = true + }) + this.setData({ + vocationalList: res.datas, + vocationalTotal: res.total + }) + + }) + }, + // 鑱屼笟鏁欒偛 + teacherGet(keyword) { + let searchObj = { + 'Name*': keyword, + '||author*': keyword, + '||isbn*': keyword + + } + app.MG.resource.getItem({ + path: 'jsek_biblioClassification\\jsek_bCTeacherEducation', + queryType: '*', + paging: { + start: '0', + size: '999' + }, + coverSize: { + width: 260 + }, + fields: { + jsek_link: [], + content: [], + subtitle: [], + fileType: [], + jsek_resource: [], + freeFile: [], + ...searchObj + }, + SysType: 'CmsItem' + }).then(res => { + res.datas.forEach(item => { + item.determine = true + }) + this.setData({ + teacherList: res.datas, + teacherTotal: res.total + }) + + }) - } -}) \ No newline at end of file + }, + downloadData(event) { + const item = event.currentTarget.dataset.item; + // console.log(item.datas.freeFile.Value); + const URL = 'http://182.92.203.7:3001/file/api/ApiDownload?md5=' + item.datas.freeFile.Value + item.determine = false + + setTimeout(() => { + if (URL) { + item.determine = true + } + }, 600) + wx.downloadFile({ + url: URL, + success: function (res) { + const filePath = res.tempFilePath; + wx.openDocument({ + filePath: filePath, + success: function (res) { + console.log('鎵撳紑鏂囨。鎴愬姛'); + }, + fail: function (res) { + console.log('鎵撳紑鏂囨。澶辫触', res); + } + }); + }, + fail: function (res) { + console.log('涓嬭浇鏂囦欢澶辫触', res); + } + }); + }, + onSearchSubmit: function (e) { + const keyword = e.detail.value; + // 澶勭悊鎼滅储閫昏緫锛屼緥濡傚彂閫佹悳绱㈣姹傜瓑 + console.log('鎼滅储鍏抽敭璇嶏細', keyword); + this.higherGet(keyword) + this.vocationalGet(keyword) + this.teacherGet(keyword) + }, + + + + + }) \ No newline at end of file diff --git a/pages/bibliographyList/index.json b/pages/bibliographyList/index.json index e1e3326..307560a 100644 --- a/pages/bibliographyList/index.json +++ b/pages/bibliographyList/index.json @@ -2,6 +2,10 @@ "component": true, "usingComponents": { "t-tabs": "tdesign-miniprogram/tabs/tabs", - "t-tab-panel": "tdesign-miniprogram/tab-panel/tab-panel" - } + "t-tab-panel": "tdesign-miniprogram/tab-panel/tab-panel", + "t-search": "tdesign-miniprogram/search/search" + }, + "navigationBarTitleText": "涔︾洰", + "navigationBarTextStyle": "white", + "navigationStyle": "custom" } \ No newline at end of file diff --git a/pages/bibliographyList/index.wxml b/pages/bibliographyList/index.wxml index 18f91df..f837d93 100644 --- a/pages/bibliographyList/index.wxml +++ b/pages/bibliographyList/index.wxml @@ -1,12 +1,41 @@ <!--pages/bibliographyList/index.wxml--> +<view class="example-search"> + <t-search model:value="{{value}}" placeholder="鎼滅储棰勮鏂囨" bind:submit="onSearchSubmit" /> +</view> + + + + +<!--鐘舵�佹爮楂樺害 --> +<!-- <view style="width: 100%; height:{{BarHeight}}px;"></view> +<view style="width: 70%; height:{{navBarHeight}}px;"> + <view style="position: relative; padding-top: 10rpx;"> + <view class="iconfont icon-sousuo search_icones"></view> + <input class="nav_input" model:value="{{ name }}" placeholder-class="placeholder_class" maxlength="30" bindfocus="bindfocus" bindconfirm="doSearch" placeholder="杈撳叆鍏呯數绔�" /> + </view> +</view> --> + + + + + + + + + + <t-tabs defaultValue="{{0}}" bind:change="onTabsChange" bind:click="onTabsClick" t-class="custom-tabs" t-class-content="custom-panel"> <t-tab-panel label="楂樼瓑鏁欒偛({{higherTotal}})" value="0"> <view class="outsideHigherBox"> <view class="higherBox" wx:for="{{higherList}}" wx:key="index" wx:for-item="item" wx:for-index="index"> <view class="outsideHigherImageBox"> <image class="higherImageBox" src="{{item.icon}}" mode="" /> + <view class="downloadIcon" bind:tap="downloadData" data-item="{{item}}"> + <image wx:if="{{determine}}" class="download" src="/static/images/bibliographyList/downloadshiftin.png" mode="" /> + <image wx:else="" class="downloadshiftin" src="/static/images/bibliographyList/download.png" mode="" /> + </view> </view> <view class="higherTextBox">{{item.name}}</view> @@ -20,10 +49,10 @@ <view class="higherBox" wx:for="{{vocationalList}}" wx:key="index" wx:for-item="item" wx:for-index="index"> <view class="outsideHigherImageBox"> <image class="higherImageBox" src="{{item.icon}}" mode="" /> - <view class="downloadIcon"> + <view class="downloadIcon" bind:tap="downloadData" data-item="{{item}}"> - <image class="download" src="/static/images/bibliographyList/download.png" mode="" /> - <image class="downloadshiftin" src="/static/images/bibliographyList/downloadshiftin.png" mode="" /> + <image wx:if="{{determine}}" class="download" src="/static/images/bibliographyList/downloadshiftin.png" mode="" /> + <image wx:else="" class="downloadshiftin" src="/static/images/bibliographyList/download.png" mode="" /> </view> </view> @@ -39,7 +68,11 @@ <view class="higherBox" wx:for="{{teacherList}}" wx:key="index" wx:for-item="item" wx:for-index="index"> <view class="outsideHigherImageBox"> <image class="higherImageBox" src="{{item.icon}}" mode="" /> + <view class="downloadIcon" bind:tap="downloadData" data-item="{{item}}"> + <image wx:if="{{determine}}" class="download" src="/static/images/bibliographyList/downloadshiftin.png" mode="" /> + <image wx:else="" class="downloadshiftin" src="/static/images/bibliographyList/download.png" mode="" /> + </view> </view> <view class="higherTextBox">{{item.name}}</view> diff --git a/pages/bibliographyList/index.wxss b/pages/bibliographyList/index.wxss index a24200b..6ee6962 100644 --- a/pages/bibliographyList/index.wxss +++ b/pages/bibliographyList/index.wxss @@ -33,15 +33,65 @@ margin-bottom: 10rpx; } -/* .downloadIcon { - width: 430rpx; - height: 430rpx; - background-color: #000; - position: relative; - top: 0; - left: 0; -} */ +.outsideHigherImageBox { -/* .download { - background-color: #8bc34a; -} */ \ No newline at end of file + position: relative; +} + +.downloadIcon { + width: 34rpx; + height: 34rpx; + + border-radius: 5rpx 5rpx 5rpx 5rpx; + background: rgba(0, 0, 0, 0.3); + position: absolute; + top: 15rpx; + right: 15rpx; + padding: 10rpx; +} + + +.download { + /* background-color: #8bc34a; */ + width: 100%; + height: 100%; + +} + +.downloadshiftin { + width: 100%; + height: 100%; +} + +.example-search { + background-color: #fff; + padding: 16rpx 32rpx; +} + + +.search_icones { + position: absolute; + font-size: 32rpx; + height: 32rpx; + width: 32rpx; + color: var(--gry-col); + top: 0px; + bottom: 0px; + margin: auto 0; + padding-left: 30rpx; + padding-top: 10rpx; + line-height: 32rpx; +} + +/*杈撳叆妗�*/ +.nav_input { + border: 1px solid var(--egry-col); + border-radius: 40rpx; + padding-left: 72rpx; + background-color: var(--whi-col); + padding-right: 16rpx; + font-size: 28rpx; + box-sizing: border-box; + line-height: 75rpx; + height: 75rpx; +} \ No newline at end of file diff --git a/pages/bookExhibitionList/index.js b/pages/bookExhibitionList/index.js index c4d4a70..153ccd8 100644 --- a/pages/bookExhibitionList/index.js +++ b/pages/bookExhibitionList/index.js @@ -8,6 +8,8 @@ * 椤甸潰鐨勫垵濮嬫暟鎹� */ data: { + value: '', + keyword: '', nameSort: null, total: null, page: { @@ -17,7 +19,6 @@ keynoteValue: null, filteredItems: [], newValue: null, - value: '', bookExhibitionList: [], sorter: { value: 'default', @@ -138,7 +139,10 @@ wx.showLoading({ title: '鍔犺浇涓�...', }) - + let searchObj = { + 'Name*': this.data.keyword, + '||subtitle*': this.data.keyword + } // console.log(this.data.keynoteValue); let sort = { Name: this.data.nameSort || 'Desc' @@ -149,7 +153,8 @@ queryType: '*', fields: { jsek_link: [], - 'bookClassification*': this.data.keynoteValue || [] + 'bookClassification*': this.data.keynoteValue || [], + ...searchObj }, paging: this.data.page, sort: sort, @@ -304,5 +309,13 @@ wx.navigateTo({ url: '/pages/bookExhibitionDetails/index?id=' + item.id // 鍋囪璺宠浆鍒拌鎯呴〉闈紝骞朵紶閫掍簡id鍙傛暟 }); + }, + // 鎼滅储妗� + onSearchSubmit(e) { + this.setData({ + keyword: e.detail.value + }) + console.log(this.data.keyword, 'keyword'); + this.bookExhibitionGet() } }) \ No newline at end of file diff --git a/pages/bookExhibitionList/index.wxml b/pages/bookExhibitionList/index.wxml index 075544a..ef63ba0 100644 --- a/pages/bookExhibitionList/index.wxml +++ b/pages/bookExhibitionList/index.wxml @@ -5,7 +5,7 @@ <view class="example-search"> - <t-search model:value="{{value}}" placeholder="璇疯緭鍏ュ叧閿瘝/涔︾洰/ISBN/浣滆��" /> + <t-search model:value="{{value}}" placeholder="璇疯緭鍏ュ叧閿瘝/涔︾洰/ISBN/浣滆��" bind:submit="onSearchSubmit"/> </view> diff --git a/pages/bookExhibitionList/index.wxss b/pages/bookExhibitionList/index.wxss index f313307..f45445e 100644 --- a/pages/bookExhibitionList/index.wxss +++ b/pages/bookExhibitionList/index.wxss @@ -40,7 +40,7 @@ .example-search { - width: 300px; + /* width: 300px; */ background-color: #fff; /* padding: 16rpx 32rpx; */ } diff --git a/pages/cart/components/cart-bar/index.js b/pages/cart/components/cart-bar/index.js deleted file mode 100644 index db7736c..0000000 --- a/pages/cart/components/cart-bar/index.js +++ /dev/null @@ -1,59 +0,0 @@ -Component({ - options: { - addGlobalClass: true, - }, - /** - * 缁勪欢鐨勫睘鎬у垪琛� - */ - properties: { - isAllSelected: { - type: Boolean, - value: false, - }, - totalAmount: { - type: Number, - value: 1, - }, - totalGoodsNum: { - type: Number, - value: 0, - observer(num) { - const isDisabled = num == 0; - setTimeout(() => { - this.setData({ - isDisabled, - }); - }); - }, - }, - totalDiscountAmount: { - type: Number, - value: 0, - }, - bottomHeight: { - type: Number, - value: 100, - }, - fixed: Boolean, - }, - data: { - isDisabled: false, - }, - - methods: { - handleSelectAll() { - const { isAllSelected } = this.data; - this.setData({ - isAllSelected: !isAllSelected, - }); - this.triggerEvent('handleSelectAll', { - isAllSelected: isAllSelected, - }); - }, - - handleToSettle() { - if (this.data.isDisabled) return; - this.triggerEvent('handleToSettle'); - }, - }, -}); diff --git a/pages/cart/components/cart-bar/index.json b/pages/cart/components/cart-bar/index.json deleted file mode 100644 index c6c4351..0000000 --- a/pages/cart/components/cart-bar/index.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "component": true, - "usingComponents": { - "price": "/components/price/index", - "t-icon": "tdesign-miniprogram/icon/icon" - } -} \ No newline at end of file diff --git a/pages/cart/components/cart-bar/index.wxml b/pages/cart/components/cart-bar/index.wxml deleted file mode 100644 index 486a0d5..0000000 --- a/pages/cart/components/cart-bar/index.wxml +++ /dev/null @@ -1,31 +0,0 @@ -<view class="cart-bar__placeholder" wx:if="{{fixed}}" /> -<view class="cart-bar {{fixed ? 'cart-bar--fixed' : ''}} flex flex-v-center" style="bottom: {{fixed ? 'calc(' + bottomHeight + 'rpx + env(safe-area-inset-bottom))' : ''}};"> - <t-icon - size="40rpx" - color="{{isAllSelected ? '#FA4126' : '#BBBBBB'}}" - name="{{isAllSelected ? 'check-circle-filled' : 'circle'}}" - class="cart-bar__check" - catchtap="handleSelectAll" - /> - <text>鍏ㄩ��</text> - <view class="cart-bar__total flex1"> - <view> - <text class="cart-bar__total--bold text-padding-right">鎬昏</text> - <price - price="{{totalAmount || '0'}}" - fill="{{false}}" - decimalSmaller - class="cart-bar__total--bold cart-bar__total--price" - /> - <text class="cart-bar__total--normal">锛堜笉鍚繍璐癸級</text> - </view> - <view wx:if="{{totalDiscountAmount}}"> - <text class="cart-bar__total--normal text-padding-right">宸蹭紭鎯�</text> - <price class="cart-bar__total--normal" price="{{totalDiscountAmount || '0'}}" fill="{{false}}" /> - </view> - </view> - <view catchtap="handleToSettle" class="{{!isDisabled ? '' : 'disabled-btn'}} account-btn" hover-class="{{!isDisabled ? '' : 'hover-btn'}}"> - 鍘荤粨绠�({{totalGoodsNum}}) - </view> -</view> - diff --git a/pages/cart/components/cart-bar/index.wxss b/pages/cart/components/cart-bar/index.wxss deleted file mode 100644 index 0e63f60..0000000 --- a/pages/cart/components/cart-bar/index.wxss +++ /dev/null @@ -1,80 +0,0 @@ -.cart-bar__placeholder { - height: 100rpx; -} -.flex { - display: flex; -} -.flex-v-center { - align-items: center; -} -.flex1 { - flex: 1; -} -.algin-bottom { - text-align: end; -} -.cart-bar--fixed { - position: fixed; - left: 0; - right: 0; - z-index: 99; - bottom: calc(100rpx + env(safe-area-inset-bottom)); -} - -.cart-bar { - height: 112rpx; - background-color: #fff; - border-top: 1rpx solid #e5e5e5; - padding: 16rpx 32rpx; - box-sizing: border-box; - font-size: 24rpx; - line-height: 36rpx; - color: #333; -} - -.cart-bar .cart-bar__check { - margin-right: 12rpx; -} - -.cart-bar .cart-bar__total { - margin-left: 24rpx; -} - -.cart-bar .account-btn { - width: 192rpx; - height: 80rpx; - border-radius: 40rpx; - background-color: #fa4126; - font-size: 28rpx; - font-weight: bold; - line-height: 80rpx; - color: #ffffff; - text-align: center; -} -.cart-bar .disabled-btn { - background-color: #cccccc !important; -} -.cart-bar .hover-btn { - opacity: 0.5; -} - -.cart-bar__total .cart-bar__total--bold { - font-size: 28rpx; - line-height: 40rpx; - color: #333; - font-weight: bold; -} -.cart-bar__total .cart-bar__total--normal { - font-size: 24rpx; - line-height: 32rpx; - color: #999; -} - -.cart-bar__total .cart-bar__total--price { - color: #fa4126; - font-weight: bold; -} - -.text-padding-right { - padding-right: 4rpx; -} diff --git a/pages/cart/components/cart-empty/index.js b/pages/cart/components/cart-empty/index.js deleted file mode 100644 index 01cf9c3..0000000 --- a/pages/cart/components/cart-empty/index.js +++ /dev/null @@ -1,23 +0,0 @@ -Component({ - properties: { - imgUrl: { - type: String, - value: - 'https://cdn-we-retail.ym.tencent.com/miniapp/template/empty-cart.png', - }, - tip: { - type: String, - value: '璐墿杞︽槸绌虹殑', - }, - btnText: { - type: String, - value: '鍘婚椤�', - }, - }, - data: {}, - methods: { - handleClick() { - this.triggerEvent('handleClick'); - }, - }, -}); diff --git a/pages/cart/components/cart-empty/index.json b/pages/cart/components/cart-empty/index.json deleted file mode 100644 index b659310..0000000 --- a/pages/cart/components/cart-empty/index.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "component": true, - "usingComponents": { - "t-image": "/components/webp-image/index" - } -} \ No newline at end of file diff --git a/pages/cart/components/cart-empty/index.wxml b/pages/cart/components/cart-empty/index.wxml deleted file mode 100644 index d0cdd43..0000000 --- a/pages/cart/components/cart-empty/index.wxml +++ /dev/null @@ -1,6 +0,0 @@ -<view class="cart-empty"> - <t-image t-class="cart-img" src="{{imgUrl}}" /> - <view class="tip">{{tip}}</view> - <view class="btn" bind:tap="handleClick">{{btnText}}</view> -</view> - diff --git a/pages/cart/components/cart-empty/index.wxss b/pages/cart/components/cart-empty/index.wxss deleted file mode 100644 index d074bc3..0000000 --- a/pages/cart/components/cart-empty/index.wxss +++ /dev/null @@ -1,33 +0,0 @@ -.cart-empty { - padding: 64rpx 0rpx; - display: flex; - flex-direction: column; - align-items: center; - box-sizing: border-box; - height: calc(100vh - 100rpx); - background-color: #f5f5f5; -} -.cart-empty .cart-img { - width: 160rpx; - height: 160rpx; - margin-bottom: 24rpx; -} - -.cart-empty .tip { - font-size: 28rpx; - line-height: 40rpx; - color: #999; - margin-bottom: 24rpx; -} -.cart-empty .btn { - width: 240rpx; - height: 72rpx; - border-radius: 36rpx; - text-align: center; - line-height: 72rpx; - border: 2rpx solid #fa4126; - color: #fa4126; - background-color: transparent; - font-size: 28rpx; - font-weight: bold; -} diff --git a/pages/cart/components/cart-group/index.js b/pages/cart/components/cart-group/index.js deleted file mode 100644 index 99a908d..0000000 --- a/pages/cart/components/cart-group/index.js +++ /dev/null @@ -1,166 +0,0 @@ -import Toast from 'tdesign-miniprogram/toast/index'; - -const shortageImg = - 'https://cdn-we-retail.ym.tencent.com/miniapp/cart/shortage.png'; - -Component({ - isSpecsTap: false, // 鏍囪鏈鐐瑰嚮浜嬩欢鏄惁鍥犱负鐐瑰嚮specs瑙﹀彂锛堢敱浜庡簳灞俫oods-card缁勪欢娌℃湁catch specs鐐瑰嚮浜嬩欢锛屽彧鑳藉湪姝ゅ鍔犵姸鎬佹潵閬垮厤鐐瑰嚮specs鏃惰Е鍙戣烦杞晢鍝佽鎯咃級 - externalClasses: ['wr-class'], - properties: { - storeGoods: { - type: Array, - observer(storeGoods) { - for (const store of storeGoods) { - for (const activity of store.promotionGoodsList) { - for (const goods of activity.goodsPromotionList) { - goods.specs = goods.specInfo.map((item) => item.specValue); // 鐩墠浠呭睍绀哄晢鍝佸凡閫夎鏍肩殑鍊� - } - } - for (const goods of store.shortageGoodsList) { - goods.specs = goods.specInfo.map((item) => item.specValue); // 鐩墠浠呭睍绀哄晢鍝佸凡閫夎鏍肩殑鍊� - } - } - - this.setData({ _storeGoods: storeGoods }); - }, - }, - invalidGoodItems: { - type: Array, - observer(invalidGoodItems) { - invalidGoodItems.forEach((goods) => { - goods.specs = goods.specInfo.map((item) => item.specValue); // 鐩墠浠呭睍绀哄晢鍝佸凡閫夎鏍肩殑鍊� - }); - this.setData({ _invalidGoodItems: invalidGoodItems }); - }, - }, - thumbWidth: { type: null }, - thumbHeight: { type: null }, - }, - - data: { - shortageImg, - isShowSpecs: false, - currentGoods: {}, - isShowToggle: false, - _storeGoods: [], - _invalidGoodItems: [], - }, - - methods: { - // 鍒犻櫎鍟嗗搧 - deleteGoods(e) { - const { goods } = e.currentTarget.dataset; - this.triggerEvent('delete', { goods }); - }, - - // 娓呯┖澶辨晥鍟嗗搧 - clearInvalidGoods() { - this.triggerEvent('clearinvalidgoods'); - }, - - // 閫変腑鍟嗗搧 - selectGoods(e) { - const { goods } = e.currentTarget.dataset; - this.triggerEvent('selectgoods', { - goods, - isSelected: !goods.isSelected, - }); - }, - - changeQuantity(num, goods) { - this.triggerEvent('changequantity', { - goods, - quantity: num, - }); - }, - changeStepper(e) { - const { value } = e.detail; - const { goods } = e.currentTarget.dataset; - let num = value; - if (value > goods.stack) { - num = goods.stack; - } - this.changeQuantity(num, goods); - }, - - input(e) { - const { value } = e.detail; - const { goods } = e.currentTarget.dataset; - const num = value; - this.changeQuantity(num, goods); - }, - - overlimit(e) { - const text = - e.detail.type === 'minus' - ? '璇ュ晢鍝佹暟閲忎笉鑳藉噺灏戜簡鍝�' - : '鍚屼竴鍟嗗搧鏈�澶氳喘涔�999浠�'; - Toast({ - context: this, - selector: '#t-toast', - message: text, - }); - }, - - // 鍘诲噾鍗�/鍐嶉�涢�� - gotoBuyMore(e) { - const { promotion, storeId = '' } = e.currentTarget.dataset; - this.triggerEvent('gocollect', { promotion, storeId }); - }, - - // 閫変腑闂ㄥ簵 - selectStore(e) { - const { storeIndex } = e.currentTarget.dataset; - const store = this.data.storeGoods[storeIndex]; - const isSelected = !store.isSelected; - if (store.storeStockShortage && isSelected) { - Toast({ - context: this, - selector: '#t-toast', - message: '閮ㄥ垎鍟嗗搧搴撳瓨涓嶈冻', - }); - return; - } - this.triggerEvent('selectstore', { - store, - isSelected, - }); - }, - - // 灞曞紑/鏀惰捣鍒囨崲 - showToggle() { - this.setData({ - isShowToggle: !this.data.isShowToggle, - }); - }, - - // 灞曠ず瑙勬牸popup - specsTap(e) { - this.isSpecsTap = true; - const { goods } = e.currentTarget.dataset; - this.setData({ - isShowSpecs: true, - currentGoods: goods, - }); - }, - - hideSpecsPopup() { - this.setData({ - isShowSpecs: false, - }); - }, - - goGoodsDetail(e) { - if (this.isSpecsTap) { - this.isSpecsTap = false; - return; - } - const { goods } = e.currentTarget.dataset; - this.triggerEvent('goodsclick', { goods }); - }, - - gotoCoupons() { - wx.navigateTo({ url: '/pages/coupon/coupon-list/index' }); - }, - }, -}); diff --git a/pages/cart/components/cart-group/index.json b/pages/cart/components/cart-group/index.json deleted file mode 100644 index 9b8003d..0000000 --- a/pages/cart/components/cart-group/index.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "component": true, - "usingComponents": { - "t-toast": "tdesign-miniprogram/toast/toast", - "t-icon": "tdesign-miniprogram/icon/icon", - "t-stepper": "tdesign-miniprogram/stepper/stepper", - "swipeout": "/components/swipeout/index", - "goods-card": "../../components/goods-card/index", - "specs-popup": "../../components/specs-popup/index" - } -} \ No newline at end of file diff --git a/pages/cart/components/cart-group/index.wxml b/pages/cart/components/cart-group/index.wxml deleted file mode 100644 index 9e3c1d9..0000000 --- a/pages/cart/components/cart-group/index.wxml +++ /dev/null @@ -1,152 +0,0 @@ -<wxs src="./index.wxs" module="handlePromotion" /> -<wxs src="./utils.wxs" module="utils" /> - -<view class="cart-group"> - <view class="goods-wrap" wx:for="{{_storeGoods}}" wx:for-item="store" wx:for-index="si" wx:key="storeId"> - <view class="cart-store"> - <t-icon - size="40rpx" - color="{{store.isSelected ? '#FA4126' : '#BBBBBB'}}" - name="{{store.isSelected ? 'check-circle-filled' : 'circle'}}" - class="cart-store__check" - bindtap="selectStore" - data-store-index="{{si}}" - /> - <view class="cart-store__content"> - <view class="store-title"> - <t-icon prefix="wr" size="40rpx" color="#333333" name="store" /> - <view class="store-name">{{store.storeName}}</view> - </view> - <view class="get-coupon" catch:tap="gotoCoupons">浼樻儬鍒�</view> - </view> - </view> - <block wx:for="{{store.promotionGoodsList}}" wx:for-item="promotion" wx:for-index="promoindex" wx:key="promoindex"> - <view - class="promotion-wrap" - wx:if="{{handlePromotion.hasPromotion(promotion.promotionCode)}}" - bindtap="gotoBuyMore" - data-promotion="{{promotion}}" - data-store-id="{{store.storeId}}" - > - <view class="promotion-title"> - <view class="promotion-icon">{{promotion.tag}}</view> - <view class="promotion-text">{{promotion.description}}</view> - </view> - <view class="promotion-action action-btn" hover-class="action-btn--active"> - <view class="promotion-action-label"> {{promotion.isNeedAddOnShop == 1 ? '鍘诲噾鍗�' : '鍐嶉�涢��'}} </view> - <t-icon name="chevron-right" size="32rpx" color="#BBBBBB" /> - </view> - </view> - <view - class="goods-item" - wx:for="{{promotion.goodsPromotionList}}" - wx:for-item="goods" - wx:for-index="gi" - wx:key="extKey" - > - <swipeout right-width="{{ 72 }}"> - <view class="goods-item-info"> - <view class="check-wrap" catchtap="selectGoods" data-goods="{{goods}}"> - <t-icon - size="40rpx" - color="{{goods.isSelected ? '#FA4126' : '#BBBBBB'}}" - name="{{goods.isSelected ? 'check-circle-filled' : 'circle'}}" - class="check" - /> - </view> - <view class="goods-sku-info"> - <goods-card - layout="horizontal-wrap" - thumb-width="{{thumbWidth}}" - thumb-height="{{thumbHeight}}" - centered="{{true}}" - data="{{goods}}" - data-goods="{{goods}}" - catchspecs="specsTap" - catchclick="goGoodsDetail" - > - <view slot="thumb-cover" class="stock-mask" wx:if="{{goods.shortageStock || goods.stockQuantity <= 3}}"> - 浠呭墿{{goods.stockQuantity}}浠� - </view> - <view slot="append-body" class="goods-stepper"> - <view class="stepper-tip" wx:if="{{goods.shortageStock}}">搴撳瓨涓嶈冻</view> - <t-stepper - classname="stepper-info" - value="{{goods.quantity}}" - min="{{1}}" - max="{{999}}" - data-goods="{{goods}}" - data-gi="{{gi}}" - data-si="{{si}}" - catchchange="changeStepper" - catchblur="input" - catchoverlimit="overlimit" - theme="filled" - /> - </view> - </goods-card> - </view> - </view> - <view slot="right" class="swiper-right-del" bindtap="deleteGoods" data-goods="{{goods}}"> 鍒犻櫎 </view> - </swipeout> - </view> - <view - class="promotion-line-wrap" - wx:if="{{handlePromotion.hasPromotion(promotion.promotionCode) && promoindex != (store.promotionGoodsList.length - 2)}}" - > - <view class="promotion-line" /> - </view> - </block> - <block wx:if="{{store.shortageGoodsList.length>0}}"> - <view - class="goods-item" - wx:for="{{store.shortageGoodsList}}" - wx:for-item="goods" - wx:for-index="gi" - wx:key="extKey" - > - <swipeout right-width="{{ 72 }}"> - <view class="goods-item-info"> - <view class="check-wrap"> - <view class="unCheck-icon" /> - </view> - <view class="goods-sku-info"> - <goods-card - layout="horizontal-wrap" - thumb-width="{{thumbWidth}}" - thumb-height="{{thumbHeight}}" - centered="{{true}}" - data="{{goods}}" - data-goods="{{goods}}" - catchspecs="specsTap" - catchclick="goGoodsDetail" - > - <view slot="thumb-cover" class="no-storage-mask" wx:if="{{goods.stockQuantity <=0}}"> - <view class="no-storage-content">鏃犺揣</view> - </view> - </goods-card> - </view> - </view> - <view slot="right" class="swiper-right-del" bindtap="deleteGoods" data-goods="{{goods}}"> 鍒犻櫎 </view> - </swipeout> - </view> - <view - class="promotion-line-wrap" - wx:if="{{handlePromotion.hasPromotion(promotion.promotionCode) && promoindex != (store.promotionGoodsList.length - 2)}}" - > - <view class="promotion-line" /> - </view> - </block> - </view> -</view> -<specs-popup - show="{{isShowSpecs}}" - title="{{currentGoods.title || ''}}" - price="{{currentGoods.price || ''}}" - thumb="{{utils.imgCut(currentGoods.thumb, 180, 180)}}" - specs="{{currentGoods.specs || []}}" - zIndex="{{999}}" - bindclose="hideSpecsPopup" -/> - -<t-toast id="t-toast" /> diff --git a/pages/cart/components/cart-group/index.wxs b/pages/cart/components/cart-group/index.wxs deleted file mode 100644 index 39f1e0b..0000000 --- a/pages/cart/components/cart-group/index.wxs +++ /dev/null @@ -1,5 +0,0 @@ -var hasPromotion = function (code) { - return code && code !== 'EMPTY_PROMOTION'; -}; - -module.exports.hasPromotion = hasPromotion; diff --git a/pages/cart/components/cart-group/index.wxss b/pages/cart/components/cart-group/index.wxss deleted file mode 100644 index 641101f..0000000 --- a/pages/cart/components/cart-group/index.wxss +++ /dev/null @@ -1,335 +0,0 @@ -.cart-group { - border-radius: 8rpx; -} -.cart-group .goods-wrap { - margin-top: 40rpx; - background-color: #fff; - border-radius: 8rpx; - overflow: hidden; -} -.cart-group .goods-wrap:first-of-type { - margin-top: 0; -} -.cart-group .cart-store { - height: 96rpx; - background-color: #fff; - box-sizing: border-box; - display: flex; - align-items: center; - padding: 0rpx 24rpx 0rpx 36rpx; -} -.cart-group .cart-store .cart-store__check { - padding: 28rpx 32rpx 28rpx 0rpx; -} -.cart-group .cart-store__content { - box-sizing: border-box; - flex: auto; - display: flex; - align-items: center; - justify-content: space-between; -} -.cart-group .cart-store__content .store-title { - flex: auto; - font-size: 28rpx; - line-height: 40rpx; - color: #333333; - display: flex; - align-items: center; - font-weight: bold; - overflow: hidden; -} - -.cart-group .cart-store__content .store-title .wr-store { - font-size: 32rpx; -} -.cart-group .cart-store__content .store-title .store-name { - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - margin-left: 12rpx; -} -.cart-group .cart-store__content .get-coupon { - width: 112rpx; - height: 40rpx; - border-radius: 20rpx; - background-color: #ffecf9; - line-height: 40rpx; - text-align: center; - font-size: 26rpx; - color: #fa4126; -} - -.cart-group .promotion-wrap { - display: flex; - justify-content: space-between; - align-items: center; - padding: 0rpx 24rpx 32rpx 36rpx; - background-color: #ffffff; - font-size: 24rpx; - line-height: 36rpx; - color: #222427; -} -.cart-group .promotion-wrap .promotion-title { - font-weight: bold; - flex: auto; - overflow: hidden; - margin-right: 20rpx; - display: flex; - align-items: center; -} -.cart-group .promotion-wrap .promotion-title .promotion-icon { - flex: none; - font-weight: normal; - display: inline-block; - padding: 0 8rpx; - color: #ffffff; - background: #fa4126; - font-size: 20rpx; - height: 32rpx; - line-height: 32rpx; - margin-right: 16rpx; - border-radius: 16rpx; -} -.cart-group .promotion-wrap .promotion-title .promotion-text { - flex: auto; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} -.cart-group .promotion-wrap .promotion-action { - flex: none; - color: #333333; -} -.cart-group .promotion-line-wrap { - background-color: #fff; - height: 2rpx; - display: flex; - justify-content: flex-end; -} -.cart-group .promotion-line-wrap .promotion-line { - width: 684rpx; - height: 2rpx; - background-color: #e6e6e6; -} -.cart-group .goods-item-info { - display: flex; - background-color: #fff; - align-items: flex-start; -} -.cart-group .goods-item-info .check-wrap { - margin-top: 56rpx; - padding: 20rpx 28rpx 20rpx 36rpx; -} - -.cart-group .goods-item-info .check-wrap .unCheck-icon { - box-sizing: border-box; - width: 36rpx; - height: 36rpx; - border-radius: 20rpx; - background: #f5f5f5; - border: 2rpx solid #bbbbbb; -} - -.cart-group .goods-item-info .goods-sku-info { - padding: 0rpx 32rpx 40rpx 0; - flex-grow: 1; -} -.cart-group .goods-item-info .goods-sku-info .stock-mask { - position: absolute; - color: #fff; - font-size: 24rpx; - bottom: 0rpx; - background-color: rgba(0, 0, 0, 0.5); - width: 100%; - height: 40rpx; - line-height: 40rpx; - text-align: center; -} -.cart-group .goods-item-info .goods-sku-info .goods-stepper { - position: absolute; - right: 0; - bottom: 8rpx; -} -.cart-group .goods-item-info .goods-sku-info .goods-stepper .stepper-tip { - position: absolute; - top: -36rpx; - right: 0; - height: 28rpx; - color: #ff2525; - font-size: 20rpx; - line-height: 28rpx; -} - -.cart-group .shortage-line { - width: 662rpx; - height: 2rpx; - background-color: #e6e6e6; - margin: 0 auto; -} -.cart-group .shortage-goods-wrap { - background-color: #fff; -} -.cart-group .shortage-goods-wrap .shortage-tip-title { - height: 72rpx; - line-height: 72rpx; - padding-left: 28rpx; - font-size: 24rpx; - color: #999; -} -.stepper-info { - margin-left: auto; -} -.invalid-goods-wrap { - background-color: #fff; - border-radius: 8rpx; - margin-top: 40rpx; -} -.invalid-goods-wrap .invalid-head { - display: flex; - justify-content: space-between; - padding: 30rpx 20rpx; - font-size: 24rpx; - border-bottom: 2rpx solid #f6f6f6; -} -.invalid-goods-wrap .invalid-head .invalid-title { - color: #333; - font-size: 28rpx; - font-weight: 600; -} -.invalid-goods-wrap .invalid-head .invalid-clear { - color: #fa4126; -} -.invalid-goods-wrap .toggle { - display: flex; - height: 80rpx; - justify-content: center; - align-items: center; - font-size: 24rpx; - color: #fa4126; -} -.invalid-goods-wrap .toggle .m-r-6 { - margin-right: 6rpx; -} -.invalid-goods-wrap .toggle .top-icon { - display: inline-block; - width: 0; - height: 0; - border-left: 10rpx solid transparent; - border-right: 10rpx solid transparent; - border-bottom: 10rpx solid #fa4126; -} -.invalid-goods-wrap .toggle .down-icon { - display: inline-block; - width: 0; - height: 0; - border-left: 10rpx solid transparent; - border-right: 10rpx solid transparent; - border-top: 10rpx solid #fa4126; -} -.action-btn { - display: flex; - align-items: center; -} -.action-btn .action-btn-arrow { - font-size: 20rpx; - margin-left: 8rpx; -} -.action-btn--active { - opacity: 0.5; -} - -.swiper-right-del { - height: calc(100% - 40rpx); - width: 144rpx; - background-color: #fa4126; - font-size: 28rpx; - color: white; - display: flex; - justify-content: center; - align-items: center; -} -.goods-stepper .stepper { - border: none; - border-radius: 0; - height: auto; - width: 168rpx; - overflow: visible; -} -.goods-stepper .stepper .stepper__minus, -.goods-stepper .stepper .stepper__plus { - width: 44rpx; - height: 44rpx; - background-color: #f5f5f5; -} -.goods-stepper .stepper .stepper__minus--hover, -.goods-stepper .stepper .stepper__plus--hover { - background-color: #f5f5f5; -} -.goods-stepper .stepper .stepper__minus .wr-icon, -.goods-stepper .stepper .stepper__plus .wr-icon { - font-size: 24rpx; -} -.goods-stepper .stepper .stepper__minus { - position: relative; -} -.goods-stepper .stepper .stepper__minus::after { - position: absolute; - display: block; - content: ' '; - left: -20rpx; - right: -5rpx; - top: -20rpx; - bottom: -20rpx; - background-color: transparent; -} -.goods-stepper .stepper .stepper__plus { - position: relative; -} -.goods-stepper .stepper .stepper__plus::after { - position: absolute; - display: block; - content: ' '; - left: -5rpx; - right: -20rpx; - top: -20rpx; - bottom: -20rpx; - background-color: transparent; -} -.goods-stepper .stepper .stepper__input { - width: 72rpx; - height: 44rpx; - background-color: #f5f5f5; - font-size: 24rpx; - color: #222427; - font-weight: 600; - border-left: none; - border-right: none; - min-height: 40rpx; - margin: 0 4rpx; - display: flex; - align-items: center; -} - -.goods-sku-info .no-storage-mask { - position: absolute; - color: #fff; - bottom: 0rpx; - left: 0rpx; - background-color: rgba(0, 0, 0, 0.1); - height: 192rpx; - width: 192rpx; - border-radius: 8rpx; - display: flex; - justify-content: center; - align-items: center; -} - -.no-storage-mask .no-storage-content { - width: 128rpx; - height: 128rpx; - border-radius: 64rpx; - background-color: rgba(0, 0, 0, 0.4); - text-align: center; - line-height: 128rpx; - font-size: 28rpx; -} diff --git a/pages/cart/components/cart-group/utils.wxs b/pages/cart/components/cart-group/utils.wxs deleted file mode 100644 index f887eba..0000000 --- a/pages/cart/components/cart-group/utils.wxs +++ /dev/null @@ -1,20 +0,0 @@ -module.exports.slice = function(arr) { - return arr.slice(0, 2); -}; -module.exports.imgCut = function(url, width, height) { - if (url && (url.slice(0, 5) === 'http:' || url.slice(0, 6) === 'https:' || url.slice(0, 2) === '//')) { - var argsStr = 'imageMogr2/thumbnail/!' + width + 'x' + height + 'r'; - if (url.indexOf('?') > -1) { - url = url + '&' + argsStr; - } else { - url = url + '?' + argsStr; - } - if (url.slice(0, 5) === 'http:') { - url = 'https://' + url.slice(5) - } - if (url.slice(0, 2) === '//') { - url = 'https:' + url - } - } - return url; -}; diff --git a/pages/cart/components/goods-card/index.js b/pages/cart/components/goods-card/index.js deleted file mode 100644 index c59658c..0000000 --- a/pages/cart/components/goods-card/index.js +++ /dev/null @@ -1,243 +0,0 @@ -Component({ - options: { - multipleSlots: true, // 鍦ㄧ粍浠跺畾涔夋椂鐨勯�夐」涓惎鐢ㄥslot鏀寔 - addGlobalClass: true, - }, - intersectionObserverContext: null, - - externalClasses: [ - 'card-class', - 'title-class', - 'desc-class', - 'num-class', - 'thumb-class', - 'specs-class', - 'price-class', - 'origin-price-class', - 'price-prefix-class', - ], - - properties: { - hidden: { - // 璁剧疆涓簄ull浠h〃涓嶅仛绫诲瀷杞崲 - type: null, - value: false, - observer(hidden) { - // null灏辨槸浠h〃娌℃湁璁剧疆锛屾病鏈夎缃殑璇濅笉setData锛岄槻姝㈢鍏堢粍浠惰Е鍙戠殑setHidden鎿嶄綔琚鐩� - if (hidden !== null) { - this.setHidden(!!hidden); - } - }, - }, - id: { - type: String, - // `goods-card-88888888` - // 涓嶈兘鍦ㄨ繖閲屽啓鐢熸垚閫昏緫锛屽鏋滃湪杩欓噷鍐欙紝閭d箞鍋囪鏈夊涓猤oods-list鏃讹紝浠栦滑灏嗗叡浜繖涓�� - value: '', - observer: (id) => { - this.genIndependentID(id); - if (this.properties.thresholds?.length) { - this.createIntersectionObserverHandle(); - } - }, - }, - data: { - type: Object, - observer(goods) { - // 鏈塈D鐨勫晢鍝佹墠娓叉煋 - if (!goods) { - return; - } - - /** 鍒掔嚎浠锋槸鍚︽湁鏁� */ - let isValidityLinePrice = true; - // 鍒ゆ柇涓�娆″垝绾夸环鏍兼槸鍚﹀悎鐞� - if ( - goods.originPrice && - goods.price && - goods.originPrice < goods.price - ) { - isValidityLinePrice = false; - } - - // 鏁插畾鎹㈣鏁伴噺榛樿鍊� - if (goods.lineClamp === undefined || goods.lineClamp <= 0) { - // tag鏁扮粍闀垮害 澶т簬0 涓� 鍙 - // 鎸囧畾鎹㈣涓�1琛� - if ((goods.tags?.length || 0) > 0 && !goods.hideKey?.tags) { - goods.lineClamp = 1; - } else { - goods.lineClamp = 2; - } - } - - this.setData({ goods, isValidityLinePrice }); - }, - }, - layout: { - type: String, - value: 'horizontal', - }, - thumbMode: { - type: String, - value: 'aspectFill', - }, - priceFill: { - type: Boolean, - value: true, - }, - currency: { - type: String, - value: '楼', - }, - lazyLoad: { - type: Boolean, - value: false, - }, - centered: { - type: Boolean, - value: false, - }, - pricePrefix: { - type: String, - value: '', - }, - /** 鍏冪礌鍙鐩戞帶闃堝��, 鏁扮粍闀垮害澶т簬0灏卞垱寤� */ - thresholds: { - type: Array, - value: [], - observer(current) { - if (current && current.length) { - this.createIntersectionObserverHandle(); - } else { - this.clearIntersectionObserverHandle(); - } - }, - }, - specsIconClassPrefix: { - type: String, - value: 'wr', - }, - specsIcon: { - type: String, - value: 'expand_more', - }, - addCartIconClassPrefix: { - type: String, - value: 'wr', - }, - addCartIcon: { - type: String, - value: 'cart', - }, - }, - - data: { - hiddenInData: false, - independentID: '', - goods: { id: '' }, - /** 淇濊瘉鍒掔嚎浠锋牸涓嶅皬浜庡師浠凤紝鍚﹀垯涓嶆覆鏌撳垝绾夸环 */ - isValidityLinePrice: false, - }, - - lifetimes: { - ready() { - this.init(); - }, - detached() { - this.clear(); - }, - }, - - methods: { - clickHandle() { - this.triggerEvent('click', { goods: this.data.goods }); - }, - clickThumbHandle() { - this.triggerEvent('thumb', { goods: this.data.goods }); - }, - clickSpecsHandle() { - this.triggerEvent('specs', { goods: this.data.goods }); - }, - clickTagHandle(evt) { - const { index } = evt.currentTarget.dataset; - this.triggerEvent('tag', { goods: this.data.goods, index }); - }, - // 鍔犲叆璐墿杞� - addCartHandle(e) { - const { id } = e.currentTarget; - const { id: cardID } = e.currentTarget.dataset; - this.triggerEvent('add-cart', { - ...e.detail, - id, - cardID, - goods: this.data.goods, - }); - }, - genIndependentID(id, cb) { - let independentID; - if (id) { - independentID = id; - } else { - independentID = `goods-card-${~~(Math.random() * 10 ** 8)}`; - } - this.setData({ independentID }, cb); - }, - - init() { - const { thresholds, id, hidden } = this.properties; - if (hidden !== null) { - this.setHidden(!!hidden); - } - - this.genIndependentID(id || '', () => { - if (thresholds && thresholds.length) { - this.createIntersectionObserverHandle(); - } - }); - }, - - clear() { - this.clearIntersectionObserverHandle(); - }, - - setHidden(hidden) { - this.setData({ hiddenInData: !!hidden }); - }, - - createIntersectionObserverHandle() { - if (this.intersectionObserverContext || !this.data.independentID) { - return; - } - - this.intersectionObserverContext = wx - .createIntersectionObserver(this, { - thresholds: this.properties.thresholds, - }) - .relativeToViewport(); - - this.intersectionObserverContext.observe( - `#${this.data.independentID}`, - (res) => { - this.intersectionObserverCB(res); - }, - ); - }, - intersectionObserverCB(ob) { - this.triggerEvent('ob', { - goods: this.data.goods, - context: this.intersectionObserverContext, - ob, - }); - }, - clearIntersectionObserverHandle() { - if (this.intersectionObserverContext) { - try { - this.intersectionObserverContext.disconnect(); - } catch (e) {} - - this.intersectionObserverContext = null; - } - }, - }, -}); diff --git a/pages/cart/components/goods-card/index.json b/pages/cart/components/goods-card/index.json deleted file mode 100644 index d76303b..0000000 --- a/pages/cart/components/goods-card/index.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "component": true, - "usingComponents": { - "price": "/components/price/index", - "t-tag": "tdesign-miniprogram/tag/tag", - "t-image": "/components/webp-image/index", - "t-icon": "tdesign-miniprogram/icon/icon" - } -} \ No newline at end of file diff --git a/pages/cart/components/goods-card/index.wxml b/pages/cart/components/goods-card/index.wxml deleted file mode 100644 index df4111f..0000000 --- a/pages/cart/components/goods-card/index.wxml +++ /dev/null @@ -1,75 +0,0 @@ -<view - id="{{independentID}}" - class="wr-goods-card card-class {{ layout }} {{ centered ? 'center' : ''}}" - bind:tap="clickHandle" - data-goods="{{ goods }}" - hidden="{{hiddenInData}}" -> - <view class="wr-goods-card__main"> - <view class="wr-goods-card__thumb thumb-class" bind:tap="clickThumbHandle"> - <!-- data-src 鏄柟渚垮姞璐姩鐢昏鍙栧浘鐗囩敤鐨� --> - <t-image - t-class="wr-goods-card__thumb-com" - wx:if="{{ !!goods.thumb && !goods.hideKey.thumb }}" - src="{{ goods.thumb }}" - mode="{{ thumbMode }}" - lazy-load="{{ lazyLoad }}" - /> - <slot name="thumb-cover" /> - </view> - <view class="wr-goods-card__body"> - <view class="wr-goods-card__long_content"> - <view wx:if="{{ goods.title && !goods.hideKey.title }}" class="wr-goods-card__title title-class" style="-webkit-line-clamp: {{ goods.lineClamp }};"> - <slot name="before-title" /> - {{ goods.title }} - </view> - <slot name="after-title" /> - <view wx:if="{{ goods.desc && !goods.hideKey.desc }}" class="wr-goods-card__desc desc-class">{{ goods.desc }}</view> - <slot name="after-desc" /> - <view wx:if="{{ goods.specs && goods.specs.length > 0 && !goods.hideKey.specs }}" class="wr-goods-card__specs__desc specs-class" bind:tap="clickSpecsHandle"> - <view class="wr-goods-card__specs__desc-text">{{ goods.specs }}</view> - <t-icon name="chevron-down" size="32rpx" color="#999999" /> - </view> - <view class="goods_tips" wx:if="{{goods.stockQuantity !== 0 && goods.quantity >= goods.stockQuantity}}">搴撳瓨涓嶈冻</view> - </view> - <view class="wr-goods-card__short_content"> - <block wx:if="{{goods.stockQuantity !== 0}}"> - <view wx:if="{{ pricePrefix }}" class="wr-goods-card__price__prefix price-prefix-class">{{ pricePrefix }}</view> - <slot name="price-prefix" /> - <view wx:if="{{ goods.price && !goods.hideKey.price }}" class="wr-goods-card__price"> - <price - wr-class="price-class" - symbol="{{currency}}" - price="{{goods.price}}" - fill="{{priceFill}}" - decimalSmaller - /> - </view> - <view wx:if="{{ goods.originPrice && !goods.hideKey.originPrice && isValidityLinePrice }}" class="wr-goods-card__origin-price"> - <price - wr-class="origin-price-class" - symbol="{{currency}}" - price="{{goods.originPrice}}" - fill="{{priceFill}}" - /> - </view> - <slot name="origin-price" /> - <view wx:if="{{goods.num && !goods.hideKey.num}}" class="wr-goods-card__num num-class"> - <text class="wr-goods-card__num__prefix">x </text> - {{ goods.num }} - </view> - </block> - <block wx:else> - <view class="no_storage"> - <view>璇烽噸鏂伴�夋嫨鍟嗗搧瑙勬牸</view> - <view class="no_storage__right">閲嶉��</view> - </view> - </block> - </view> - <slot name="append-body" /> - </view> - <slot name="footer" /> - </view> - <slot name="append-card" /> -</view> - diff --git a/pages/cart/components/goods-card/index.wxss b/pages/cart/components/goods-card/index.wxss deleted file mode 100644 index 6a7a4da..0000000 --- a/pages/cart/components/goods-card/index.wxss +++ /dev/null @@ -1,260 +0,0 @@ -.wr-goods-card { - box-sizing: border-box; - font-size: 24rpx; -} -/* */ -.wr-goods-card__main { - position: relative; - display: flex; - padding: 0; - background: transparent; -} - -.wr-goods-card.center .wr-goods-card__main { - align-items: flex-start; - justify-content: center; -} - -.wr-goods-card__thumb { - flex-shrink: 0; - position: relative; - width: 140rpx; - height: 140rpx; -} - -.wr-goods-card__thumb-com { - width: 192rpx; - height: 192rpx; - border-radius: 8rpx; - overflow: hidden; -} -.wr-goods-card__thumb:empty { - display: none; - margin: 0; -} - -.wr-goods-card__body { - display: flex; - margin: 0 0 0 20rpx; - flex-direction: row; - flex: 1 1 auto; - min-height: 192rpx; -} - -.wr-goods-card__long_content { - display: flex; - flex-direction: column; - overflow: hidden; - flex: 1 1 auto; -} -.wr-goods-card__long_content .goods_tips { - width: 100%; - margin-top: 16rpx; - text-align: right; - color: #fa4126; - font-size: 24rpx; - line-height: 32rpx; - font-weight: bold; -} -.wr-goods-card__title { - flex-shrink: 0; - font-size: 28rpx; - color: #333; - line-height: 40rpx; - font-weight: 400; - display: -webkit-box; - -webkit-box-orient: vertical; - overflow: hidden; - word-break: break-word; -} -.wr-goods-card__title__prefix-tags { - display: inline-flex; -} -.wr-goods-card__title__prefix-tags .prefix-tag { - margin: 0 8rpx 0 0; -} -.wr-goods-card__desc { - font-size: 24rpx; - color: #f5f5f5; - line-height: 40rpx; - display: -webkit-box; - -webkit-box-orient: vertical; - -webkit-line-clamp: 2; - overflow: hidden; -} -.wr-goods-card__specs__desc, -.wr-goods-card__specs__text { - font-size: 24rpx; - height: 32rpx; - line-height: 32rpx; - color: #999999; - margin: 8rpx 0; -} -.wr-goods-card__specs__desc { - display: flex; - align-self: flex-start; - flex-direction: row; - background: #f5f5f5; - border-radius: 8rpx; - padding: 4rpx 8rpx; -} -.wr-goods-card__specs__desc-text { - height: 100%; - max-width: 380rpx; - word-break: break-all; - overflow: hidden; - display: -webkit-box; - -webkit-box-orient: vertical; - -webkit-line-clamp: 1; -} -.wr-goods-card__specs__desc-icon { - line-height: inherit; - margin-left: 8rpx; - font-size: 24rpx; - color: #bbb; -} -.wr-goods-card__specs__text { - display: -webkit-box; - -webkit-box-orient: vertical; - -webkit-line-clamp: 1; - overflow: hidden; - text-overflow: ellipsis; - word-break: break-all; -} -.wr-goods-card__tags { - display: flex; - flex-direction: row; - flex-wrap: wrap; - margin: 16rpx 0 0 0; -} -.wr-goods-card__tag { - color: #fa550f; - background: transparent; - font-size: 20rpx; - border: 1rpx solid #fa550f; - padding: 0 8rpx; - height: 30rpx; - line-height: 30rpx; - margin: 0 8rpx 8rpx 0; - display: block; - overflow: hidden; - white-space: nowrap; - word-break: keep-all; - text-overflow: ellipsis; -} -.wr-goods-card__short_content { - display: flex; - flex-direction: column; - justify-content: flex-start; - align-items: flex-end; - margin: 0 0 0 46rpx; -} -.wr-goods-card__price__prefix { - order: 0; - color: #666; - margin: 0; -} -.wr-goods-card__price { - white-space: nowrap; - font-weight: bold; - order: 1; - color: #fa4126; - font-size: 36rpx; - margin: 0; - line-height: 48rpx; -} -.wr-goods-card__origin-price { - white-space: nowrap; - font-weight: normal; - order: 2; - color: #aaaaaa; - font-size: 24rpx; - margin: 0; -} -.wr-goods-card__num { - white-space: nowrap; - order: 4; - font-size: 24rpx; - color: #999; - margin: 20rpx 0 0 auto; -} -.wr-goods-card__num__prefix { - color: inherit; -} -.wr-goods-card__add-cart { - order: 3; - margin: auto 0 0 auto; -} -.wr-goods-card.horizontal-wrap .wr-goods-card__thumb { - width: 192rpx; - height: 192rpx; - border-radius: 8rpx; - overflow: hidden; -} -.wr-goods-card.horizontal-wrap .wr-goods-card__body { - flex-direction: column; -} -.wr-goods-card.horizontal-wrap .wr-goods-card__short_content { - flex-direction: row; - align-items: center; - margin: 16rpx 0 0 0; -} - -.wr-goods-card.horizontal-wrap .wr-goods-card__num { - margin: 0 0 0 auto; -} -.wr-goods-card.vertical .wr-goods-card__main { - padding: 0 0 22rpx 0; - flex-direction: column; -} -.wr-goods-card.vertical .wr-goods-card__thumb { - width: 340rpx; - height: 340rpx; -} -.wr-goods-card.vertical .wr-goods-card__body { - margin: 20rpx 20rpx 0 20rpx; - flex-direction: column; -} -.wr-goods-card.vertical .wr-goods-card__long_content { - overflow: hidden; -} -.wr-goods-card.vertical .wr-goods-card__title { - line-height: 36rpx; -} -.wr-goods-card.vertical .wr-goods-card__short_content { - margin: 20rpx 0 0 0; -} -.wr-goods-card.vertical .wr-goods-card__price { - order: 2; - color: #fa4126; - margin: 20rpx 0 0 0; -} -.wr-goods-card.vertical .wr-goods-card__origin-price { - order: 1; -} -.wr-goods-card.vertical .wr-goods-card__add-cart { - position: absolute; - bottom: 20rpx; - right: 20rpx; -} - -.wr-goods-card__short_content .no_storage { - display: flex; - align-items: center; - justify-content: space-between; - height: 40rpx; - color: #333; - font-size: 24rpx; - line-height: 32rpx; - width: 100%; -} - -.no_storage .no_storage__right { - width: 80rpx; - height: 40rpx; - border-radius: 20rpx; - border: 2rpx solid #fa4126; - line-height: 40rpx; - text-align: center; - color: #fa4126; -} diff --git a/pages/cart/components/specs-popup/index.js b/pages/cart/components/specs-popup/index.js deleted file mode 100644 index 650d2aa..0000000 --- a/pages/cart/components/specs-popup/index.js +++ /dev/null @@ -1,72 +0,0 @@ -Component({ - options: { - addGlobalClass: true, - multipleSlots: true, // 鍦ㄧ粍浠跺畾涔夋椂鐨勯�夐」涓惎鐢ㄥslot鏀寔 - }, - - properties: { - show: { - type: Boolean, - value: false, - }, - value: { - type: String, - value: '', - }, - title: { - type: String, - observer(newVal) { - this.setData({ 'goods.title': newVal }); - }, - }, - price: { - type: String, - value: '', - observer(newVal) { - this.setData({ 'goods.price': newVal }); - }, - }, - thumb: { - type: String, - value: '', - observer(newVal) { - this.setData({ 'goods.thumb': newVal }); - }, - }, - thumbMode: { - type: String, - value: 'aspectFit', - }, - zIndex: { - type: Number, - value: 99, - }, - specs: { - type: Array, - value: [], - }, - }, - - data: { - goods: { - title: '', - thumb: '', - price: '', - hideKey: { - originPrice: true, - tags: true, - specs: true, - num: true, - }, - }, - }, - methods: { - onClose() { - this.triggerEvent('close'); - }, - - onCloseOver() { - this.triggerEvent('closeover'); - }, - }, -}); diff --git a/pages/cart/components/specs-popup/index.json b/pages/cart/components/specs-popup/index.json deleted file mode 100644 index d59fc6d..0000000 --- a/pages/cart/components/specs-popup/index.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "component": true, - "usingComponents": { - "t-popup": "tdesign-miniprogram/popup/popup", - "goods-card": "../../components/goods-card/index" - } -} \ No newline at end of file diff --git a/pages/cart/components/specs-popup/index.wxml b/pages/cart/components/specs-popup/index.wxml deleted file mode 100644 index 4ddcb43..0000000 --- a/pages/cart/components/specs-popup/index.wxml +++ /dev/null @@ -1,26 +0,0 @@ -<t-popup - close-on-overlay-click="{{true}}" - visible="{{show}}" - placement="bottom" - z-index="{{zIndex}}" -> - <view class="specs-popup"> - <view> - <goods-card data="{{goods}}" layout="horizontal-wrap" thumb-mode="{{thumbMode}}" /> - <view class="section"> - <view class="title">宸查�夎鏍�</view> - <view class="options"> - <view - wx:for="{{specs}}" - wx:for-item="spec" - wx:key="spec" - class="option" - >{{spec}} - </view> - </view> - </view> - </view> - <view class="bottom-btn" hover-class="bottom-btn--active" bindtap="onClose">鎴戠煡閬撲簡</view> - </view> -</t-popup> - diff --git a/pages/cart/components/specs-popup/index.wxss b/pages/cart/components/specs-popup/index.wxss deleted file mode 100644 index 359c185..0000000 --- a/pages/cart/components/specs-popup/index.wxss +++ /dev/null @@ -1,68 +0,0 @@ -.specs-popup { - width: 100vw; - box-sizing: border-box; - padding: 32rpx 32rpx calc(20rpx + env(safe-area-inset-bottom)) 32rpx; - max-height: 80vh; - display: flex; - flex-direction: column; - background-color: white; - border-radius: 20rpx 20rpx 0 0; -} -.specs-popup .section { - margin-top: 44rpx; - flex: auto; - overflow-y: scroll; - overflow-x: hidden; - -webkit-overflow-scrolling: touch; -} -.specs-popup .section .title { - font-size: 26rpx; - color: #4f5356; -} -.specs-popup .section .options { - color: #333333; - font-size: 24rpx; - margin-right: -26rpx; -} -.specs-popup .section .options .option { - display: inline-block; - margin-top: 24rpx; - height: 56rpx; - line-height: 56rpx; - padding: 0 16rpx; - border-radius: 8rpx; - background-color: #f5f5f5; - max-width: 100%; - box-sizing: border-box; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; -} -.specs-popup .section .options .option:not(:last-child) { - margin-right: 26rpx; -} -.specs-popup .bottom-btn { - margin-top: 42rpx; - position: relative; - height: 80rpx; - line-height: 80rpx; - text-align: center; - background-color: white; - color: #fa4126; -} -.specs-popup .bottom-btn--active { - opacity: 0.5; -} -.specs-popup .bottom-btn::after { - display: block; - content: ' '; - position: absolute; - left: 0; - top: 0; - width: 200%; - height: 200%; - border: 1px solid #fa4126; - border-radius: 80rpx; - transform: scale(0.5); - transform-origin: left top; -} diff --git a/pages/cart/index.js b/pages/cart/index.js index e710106..41fcea5 100644 --- a/pages/cart/index.js +++ b/pages/cart/index.js @@ -1,294 +1,89 @@ -import Dialog from 'tdesign-miniprogram/dialog/index'; -import Toast from 'tdesign-miniprogram/toast/index'; -import { fetchCartGroupData } from '../../services/cart/cart'; - +// pages/cart/index.js +const app = getApp() Page({ + + /** + * 椤甸潰鐨勫垵濮嬫暟鎹� + */ data: { - cartGroupData: null, + right: [ + { + text: '缂栬緫', + className: 'btn edit-btn', + }, + { + text: '鍒犻櫎', + className: 'btn delete-btn', + }, + ], + }, + onDelete() { + wx.showToast({ title: '浣犵偣鍑讳簡鍒犻櫎', icon: 'none' }); + }, + /** + * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍔犺浇 + */ + onLoad(options) { + this.shoppingCartGet() }, - // 璋冪敤鑷畾涔塼abbar鐨刬nit鍑芥暟锛屼娇椤甸潰涓巘abbar婵�娲荤姸鎬佷繚鎸佷竴鑷� + /** + * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍒濇娓叉煋瀹屾垚 + */ + onReady() { + + }, + + /** + * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鏄剧ず + */ onShow() { - this.getTabBar().init(); + }, - onLoad() { - this.refreshData(); + /** + * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰闅愯棌 + */ + onHide() { + }, - refreshData() { - this.getCartGroupData().then((res) => { - let isEmpty = true; - const cartGroupData = res.data; - // 涓�浜涚粍浠朵腑闇�瑕佺殑瀛楁鍙兘鎺ュ彛骞舵病鏈夎繑鍥烇紝鎴栬�呰繑鍥炵殑鏁版嵁缁撴瀯涓庨鏈熶笉涓�鑷达紝闇�瑕佸湪姝ゅ厛瀵规暟鎹仛涓�浜涘鐞� - // 缁熻闂ㄥ簵涓嬪姞璐殑鍟嗗搧鏄惁鍏ㄩ�夈�佹槸鍚﹀瓨鍦ㄧ己璐�/鏃犺揣 - for (const store of cartGroupData.storeGoods) { - store.isSelected = true; // 璇ラ棬搴楀凡鍔犺喘鍟嗗搧鏄惁鍏ㄩ�� - store.storeStockShortage = false; // 璇ラ棬搴楀凡鍔犺喘鍟嗗搧鏄惁瀛樺湪搴撳瓨涓嶈冻 - if (!store.shortageGoodsList) { - store.shortageGoodsList = []; // 璇ラ棬搴楀凡鍔犺喘鍟嗗搧濡傛灉搴撳瓨涓�0闇�鍗曠嫭鍒嗙粍 - } - for (const activity of store.promotionGoodsList) { - activity.goodsPromotionList = activity.goodsPromotionList.filter((goods) => { - goods.originPrice = undefined; + /** + * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍗歌浇 + */ + onUnload() { - // 缁熻鏄惁鏈夊姞璐暟澶т簬搴撳瓨鏁扮殑鍟嗗搧 - if (goods.quantity > goods.stockQuantity) { - store.storeStockShortage = true; - } - // 缁熻鏄惁鍏ㄩ�� - if (!goods.isSelected) { - store.isSelected = false; - } - // 搴撳瓨涓�0锛堟棤璐э級鐨勫晢鍝佸崟鐙垎缁� - if (goods.stockQuantity > 0) { - return true; - } - store.shortageGoodsList.push(goods); - return false; - }); - - if (activity.goodsPromotionList.length > 0) { - isEmpty = false; - } - } - if (store.shortageGoodsList.length > 0) { - isEmpty = false; - } - } - cartGroupData.invalidGoodItems = cartGroupData.invalidGoodItems.map((goods) => { - goods.originPrice = undefined; - return goods; - }); - cartGroupData.isNotEmpty = !isEmpty; - this.setData({ cartGroupData }); - }); }, - findGoods(spuId, skuId) { - let currentStore; - let currentActivity; - let currentGoods; - const { storeGoods } = this.data.cartGroupData; - for (const store of storeGoods) { - for (const activity of store.promotionGoodsList) { - for (const goods of activity.goodsPromotionList) { - if (goods.spuId === spuId && goods.skuId === skuId) { - currentStore = store; - currentActivity = currentActivity; - currentGoods = goods; - return { - currentStore, - currentActivity, - currentGoods, - }; - } - } - } - } - return { - currentStore, - currentActivity, - currentGoods, - }; + /** + * 椤甸潰鐩稿叧浜嬩欢澶勭悊鍑芥暟--鐩戝惉鐢ㄦ埛涓嬫媺鍔ㄤ綔 + */ + onPullDownRefresh() { + }, - // 娉細瀹為檯鍦烘櫙鏃跺簲璇ヨ皟鐢ㄦ帴鍙h幏鍙栬喘鐗╄溅鏁版嵁 - getCartGroupData() { - const { cartGroupData } = this.data; - if (!cartGroupData) { - return fetchCartGroupData(); - } - return Promise.resolve({ data: cartGroupData }); + /** + * 椤甸潰涓婃媺瑙﹀簳浜嬩欢鐨勫鐞嗗嚱鏁� + */ + onReachBottom() { + }, - // 閫夋嫨鍗曚釜鍟嗗搧 - // 娉細瀹為檯鍦烘櫙鏃跺簲璇ヨ皟鐢ㄦ帴鍙f洿鏀归�変腑鐘舵�� - selectGoodsService({ spuId, skuId, isSelected }) { - this.findGoods(spuId, skuId).currentGoods.isSelected = isSelected; - return Promise.resolve(); - }, + /** + * 鐢ㄦ埛鐐瑰嚮鍙充笂瑙掑垎浜� + */ + onShareAppMessage() { - // 鍏ㄩ�夐棬搴� - // 娉細瀹為檯鍦烘櫙鏃跺簲璇ヨ皟鐢ㄦ帴鍙f洿鏀归�変腑鐘舵�� - selectStoreService({ storeId, isSelected }) { - const currentStore = this.data.cartGroupData.storeGoods.find((s) => s.storeId === storeId); - currentStore.isSelected = isSelected; - currentStore.promotionGoodsList.forEach((activity) => { - activity.goodsPromotionList.forEach((goods) => { - goods.isSelected = isSelected; - }); - }); - return Promise.resolve(); }, + shoppingCartGet() { - // 鍔犺喘鏁伴噺鍙樻洿 - // 娉細瀹為檯鍦烘櫙鏃跺簲璇ヨ皟鐢ㄦ帴鍙� - changeQuantityService({ spuId, skuId, quantity }) { - this.findGoods(spuId, skuId).currentGoods.quantity = quantity; - return Promise.resolve(); - }, - - // 鍒犻櫎鍔犺喘鍟嗗搧 - // 娉細瀹為檯鍦烘櫙鏃跺簲璇ヨ皟鐢ㄦ帴鍙� - deleteGoodsService({ spuId, skuId }) { - function deleteGoods(group) { - for (const gindex in group) { - const goods = group[gindex]; - if (goods.spuId === spuId && goods.skuId === skuId) { - group.splice(gindex, 1); - return gindex; - } - } - return -1; - } - const { storeGoods, invalidGoodItems } = this.data.cartGroupData; - for (const store of storeGoods) { - for (const activity of store.promotionGoodsList) { - if (deleteGoods(activity.goodsPromotionList) > -1) { - return Promise.resolve(); - } - } - if (deleteGoods(store.shortageGoodsList) > -1) { - return Promise.resolve(); - } - } - if (deleteGoods(invalidGoodItems) > -1) { - return Promise.resolve(); - } - return Promise.reject(); - }, - - // 娓呯┖澶辨晥鍟嗗搧 - // 娉細瀹為檯鍦烘櫙鏃跺簲璇ヨ皟鐢ㄦ帴鍙� - clearInvalidGoodsService() { - this.data.cartGroupData.invalidGoodItems = []; - return Promise.resolve(); - }, - - onGoodsSelect(e) { - const { - goods: { spuId, skuId }, - isSelected, - } = e.detail; - const { currentGoods } = this.findGoods(spuId, skuId); - Toast({ - context: this, - selector: '#t-toast', - message: `${isSelected ? '閫夋嫨' : '鍙栨秷'}"${ - currentGoods.title.length > 5 ? `${currentGoods.title.slice(0, 5)}...` : currentGoods.title - }"`, - icon: '', - }); - this.selectGoodsService({ spuId, skuId, isSelected }).then(() => this.refreshData()); - }, - - onStoreSelect(e) { - const { - store: { storeId }, - isSelected, - } = e.detail; - this.selectStoreService({ storeId, isSelected }).then(() => this.refreshData()); - }, - - onQuantityChange(e) { - const { - goods: { spuId, skuId }, - quantity, - } = e.detail; - const { currentGoods } = this.findGoods(spuId, skuId); - const stockQuantity = currentGoods.stockQuantity > 0 ? currentGoods.stockQuantity : 0; // 閬垮厤鍚庣杩斿洖鐨勬槸-1 - // 鍔犺喘鏁伴噺瓒呰繃搴撳瓨鏁伴噺 - if (quantity > stockQuantity) { - // 鍔犺喘鏁伴噺绛変簬搴撳瓨鏁伴噺鐨勬儏鍐典笅缁х画鍔犺喘 - if (currentGoods.quantity === stockQuantity && quantity - stockQuantity === 1) { - Toast({ - context: this, - selector: '#t-toast', - message: '褰撳墠鍟嗗搧搴撳瓨涓嶈冻', - }); - return; - } - Dialog.confirm({ - title: '鍟嗗搧搴撳瓨涓嶈冻', - content: `褰撳墠鍟嗗搧搴撳瓨涓嶈冻锛屾渶澶у彲璐拱鏁伴噺涓�${stockQuantity}浠禶, - confirmBtn: '淇敼涓烘渶澶у彲璐拱鏁伴噺', - cancelBtn: '鍙栨秷', - }) - .then(() => { - this.changeQuantityService({ - spuId, - skuId, - quantity: stockQuantity, - }).then(() => this.refreshData()); - }) - .catch(() => {}); - return; - } - this.changeQuantityService({ spuId, skuId, quantity }).then(() => this.refreshData()); - }, - - goCollect() { - /** 娲诲姩鑲畾鏈変竴涓椿鍔↖D锛岀敤鏉ヨ幏鍙栨椿鍔╞anner锛屾椿鍔ㄥ晢鍝佸垪琛ㄧ瓑 */ - const promotionID = '123'; - wx.navigateTo({ - url: `/pages/promotion-detail/index?promotion_id=${promotionID}`, - }); - }, - - goGoodsDetail(e) { - const { spuId, storeId } = e.detail.goods; - wx.navigateTo({ - url: `/pages/goods/details/index?spuId=${spuId}&storeId=${storeId}`, - }); - }, - - clearInvalidGoods() { - // 瀹為檯鍦烘櫙鏃跺簲璇ヨ皟鐢ㄦ帴鍙f竻绌哄け鏁堝晢鍝� - this.clearInvalidGoodsService().then(() => this.refreshData()); - }, - - onGoodsDelete(e) { - const { - goods: { spuId, skuId }, - } = e.detail; - Dialog.confirm({ - content: '纭鍒犻櫎璇ュ晢鍝佸悧?', - confirmBtn: '纭畾', - cancelBtn: '鍙栨秷', - }).then(() => { - this.deleteGoodsService({ spuId, skuId }).then(() => { - Toast({ context: this, selector: '#t-toast', message: '鍟嗗搧鍒犻櫎鎴愬姛' }); - this.refreshData(); - }); - }); - }, - - onSelectAll(event) { - const { isAllSelected } = event?.detail ?? {}; - Toast({ - context: this, - selector: '#t-toast', - message: `${isAllSelected ? '鍙栨秷' : '鐐瑰嚮'}浜嗗叏閫夋寜閽甡, - }); - // 璋冪敤鎺ュ彛鏀瑰彉鍏ㄩ�� - }, - - onToSettle() { - const goodsRequestList = []; - this.data.cartGroupData.storeGoods.forEach((store) => { - store.promotionGoodsList.forEach((promotion) => { - promotion.goodsPromotionList.forEach((m) => { - if (m.isSelected == 1) { - goodsRequestList.push(m); - } - }); - }); - }); - wx.setStorageSync('order.goodsRequestList', JSON.stringify(goodsRequestList)); - wx.navigateTo({ url: '/pages/order/order-confirm/index?type=cart' }); - }, - onGotoHome() { - wx.switchTab({ url: '/pages/home/home' }); - }, -}); + app.MG.store.getShoppingCartProductList({ + start: 0, + size: 999, + filterList: [], + searchList: [] + }).then(res => { + console.log(res); + }) + } +}) \ No newline at end of file diff --git a/pages/cart/index.json b/pages/cart/index.json index 1d2e717..03de311 100644 --- a/pages/cart/index.json +++ b/pages/cart/index.json @@ -1,10 +1,7 @@ { - "navigationBarTitleText": "璐墿杞�", + "component": true, "usingComponents": { - "cart-group": "./components/cart-group/index", - "cart-empty": "./components/cart-empty/index", - "cart-bar": "./components/cart-bar/index", - "t-toast": "tdesign-miniprogram/toast/toast", - "t-dialog": "tdesign-miniprogram/dialog/dialog" + "t-swipe-cell": "tdesign-miniprogram/swipe-cell/swipe-cell", + "t-cell": "tdesign-miniprogram/cell/cell" } } \ No newline at end of file diff --git a/pages/cart/index.wxml b/pages/cart/index.wxml index 8828092..8ffcb80 100644 --- a/pages/cart/index.wxml +++ b/pages/cart/index.wxml @@ -1,31 +1,6 @@ -<!-- 鍒嗗眰璐墿杞� --> -<block wx:if="{{cartGroupData.isNotEmpty}}"> - <cart-group - store-goods="{{ cartGroupData.storeGoods }}" - invalid-good-items="{{ cartGroupData.invalidGoodItems }}" - bindselectgoods="onGoodsSelect" - bindselectstore="onStoreSelect" - bindchangequantity="onQuantityChange" - bindgocollect="goCollect" - bindgoodsclick="goGoodsDetail" - bindclearinvalidgoods="clearInvalidGoods" - binddelete="onGoodsDelete" - /> - - <view class="gap" /> - <!-- 鍟嗗搧灏忚浠ュ強缁撶畻鎸夐挳 --> - <cart-bar - is-all-selected="{{cartGroupData.isAllSelected}}" - total-amount="{{cartGroupData.totalAmount}}" - total-goods-num="{{cartGroupData.selectedGoodsCount}}" - total-discount-amount="{{cartGroupData.totalDiscountAmount}}" - fixed="{{true}}" - bottomHeight="{{112}}" - bindhandleSelectAll="onSelectAll" - bindhandleToSettle="onToSettle" - /> -</block> -<!-- 璐墿杞︾┖鎬� --> -<cart-empty wx:else bind:handleClick="onGotoHome" /> -<t-toast id="t-toast" /> -<t-dialog id="t-dialog" /> +<!--pages/cart/index.wxml--> +<text>璐墿杞�</text> +<t-swipe-cell> + <t-cell bordered="{{false}}" title="宸︽粦澶у垪琛�" description="涓�娈靛緢闀垮緢闀跨殑鍐呭鏂囧瓧" note="杈呭姪淇℃伅" image="https://tdesign.gtimg.com/mobile/demos/avatar1.png" /> + <view slot="right" class="btn delete-btn" bind:tap="onDelete">鍒犻櫎</view> +</t-swipe-cell> \ No newline at end of file diff --git a/pages/cart/index.wxss b/pages/cart/index.wxss index ea19962..8c1e525 100644 --- a/pages/cart/index.wxss +++ b/pages/cart/index.wxss @@ -1,13 +1,25 @@ -:host { - padding-bottom: 100rpx; +/* pages/cart/item.wxss */ +.btn-wrapper { + height: 100%; } -.gap { - height: 100rpx; - width: 100%; +.btn { + display: inline-flex; + justify-content: center; + align-items: center; + width: 120rpx; + height: 100%; + color: white; } -.t-button { - --td-button-default-color: #000; - --td-button-primary-text-color: #fa4126; +.delete-btn { + background-color: #e34d59; } + +.edit-btn { + background-color: #ed7b2f; +} + +.favor-btn { + background-color: #0052d9; +} \ No newline at end of file diff --git a/pages/personalCenter/activateProduct/index.js b/pages/personalCenter/activateProduct/index.js new file mode 100644 index 0000000..7db447e --- /dev/null +++ b/pages/personalCenter/activateProduct/index.js @@ -0,0 +1,66 @@ +// pages/personalCenter/activateProduct/index.js +Page({ + + /** + * 椤甸潰鐨勫垵濮嬫暟鎹� + */ + data: { + + }, + + /** + * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍔犺浇 + */ + onLoad(options) { + + }, + + /** + * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍒濇娓叉煋瀹屾垚 + */ + onReady() { + + }, + + /** + * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鏄剧ず + */ + onShow() { + + }, + + /** + * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰闅愯棌 + */ + onHide() { + + }, + + /** + * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍗歌浇 + */ + onUnload() { + + }, + + /** + * 椤甸潰鐩稿叧浜嬩欢澶勭悊鍑芥暟--鐩戝惉鐢ㄦ埛涓嬫媺鍔ㄤ綔 + */ + onPullDownRefresh() { + + }, + + /** + * 椤甸潰涓婃媺瑙﹀簳浜嬩欢鐨勫鐞嗗嚱鏁� + */ + onReachBottom() { + + }, + + /** + * 鐢ㄦ埛鐐瑰嚮鍙充笂瑙掑垎浜� + */ + onShareAppMessage() { + + } +}) \ No newline at end of file diff --git a/pages/personalCenter/activateProduct/index.json b/pages/personalCenter/activateProduct/index.json new file mode 100644 index 0000000..8835af0 --- /dev/null +++ b/pages/personalCenter/activateProduct/index.json @@ -0,0 +1,3 @@ +{ + "usingComponents": {} +} \ No newline at end of file diff --git a/pages/personalCenter/activateProduct/index.wxml b/pages/personalCenter/activateProduct/index.wxml new file mode 100644 index 0000000..880b74d --- /dev/null +++ b/pages/personalCenter/activateProduct/index.wxml @@ -0,0 +1,2 @@ +<!--pages/personalCenter/activateProduct/index.wxml--> +<text>pages/personalCenter/activateProduct/index.wxml</text> diff --git a/pages/personalCenter/activateProduct/index.wxss b/pages/personalCenter/activateProduct/index.wxss new file mode 100644 index 0000000..d2baa87 --- /dev/null +++ b/pages/personalCenter/activateProduct/index.wxss @@ -0,0 +1 @@ +/* pages/personalCenter/activateProduct/index.wxss */ \ No newline at end of file diff --git a/pages/personalCenter/certificate/index.js b/pages/personalCenter/certificate/index.js new file mode 100644 index 0000000..9f7a333 --- /dev/null +++ b/pages/personalCenter/certificate/index.js @@ -0,0 +1,66 @@ +// pages/personalCenter/certificate/index.js +Page({ + + /** + * 椤甸潰鐨勫垵濮嬫暟鎹� + */ + data: { + + }, + + /** + * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍔犺浇 + */ + onLoad(options) { + + }, + + /** + * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍒濇娓叉煋瀹屾垚 + */ + onReady() { + + }, + + /** + * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鏄剧ず + */ + onShow() { + + }, + + /** + * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰闅愯棌 + */ + onHide() { + + }, + + /** + * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍗歌浇 + */ + onUnload() { + + }, + + /** + * 椤甸潰鐩稿叧浜嬩欢澶勭悊鍑芥暟--鐩戝惉鐢ㄦ埛涓嬫媺鍔ㄤ綔 + */ + onPullDownRefresh() { + + }, + + /** + * 椤甸潰涓婃媺瑙﹀簳浜嬩欢鐨勫鐞嗗嚱鏁� + */ + onReachBottom() { + + }, + + /** + * 鐢ㄦ埛鐐瑰嚮鍙充笂瑙掑垎浜� + */ + onShareAppMessage() { + + } +}) \ No newline at end of file diff --git a/pages/personalCenter/certificate/index.json b/pages/personalCenter/certificate/index.json new file mode 100644 index 0000000..8835af0 --- /dev/null +++ b/pages/personalCenter/certificate/index.json @@ -0,0 +1,3 @@ +{ + "usingComponents": {} +} \ No newline at end of file diff --git a/pages/personalCenter/certificate/index.wxml b/pages/personalCenter/certificate/index.wxml new file mode 100644 index 0000000..a960ce8 --- /dev/null +++ b/pages/personalCenter/certificate/index.wxml @@ -0,0 +1,2 @@ +<!--pages/personalCenter/certificate/index.wxml--> +<text>pages/personalCenter/certificate/index.wxml</text> diff --git a/pages/personalCenter/certificate/index.wxss b/pages/personalCenter/certificate/index.wxss new file mode 100644 index 0000000..b13f6f1 --- /dev/null +++ b/pages/personalCenter/certificate/index.wxss @@ -0,0 +1 @@ +/* pages/personalCenter/certificate/index.wxss */ \ No newline at end of file diff --git a/pages/personalCenter/components/user-center-card/index.wxml b/pages/personalCenter/components/user-center-card/index.wxml new file mode 100644 index 0000000..d6af2e3 --- /dev/null +++ b/pages/personalCenter/components/user-center-card/index.wxml @@ -0,0 +1,33 @@ +<view class="user-center-card"> + <!-- 鏈櫥褰曠殑鎯呭喌 --> + <block wx:if="{{currAuthStep === AuthStepType.ONE}}"> + <view class="user-center-card__header" bind:tap="gotoUserEditPage"> + <t-avatar image="{{userInfo.avatarUrl || defaultAvatarUrl}}" class="user-center-card__header__avatar" /> + <view class="user-center-card__header__name">{{'璇风櫥褰�'}}</view> + <view class="setting"> + <image src="/static/images/personal/setting.png" mode="heightFix" class="img" /> + <text>璁剧疆</text> + </view> + </view> + </block> + <!-- 宸茬櫥褰曚絾鏈巿鏉冪敤鎴蜂俊鎭儏鍐� --> + <block wx:if="{{currAuthStep === AuthStepType.TWO}}"> + <view class="user-center-card__header"> + <t-avatar image="{{userInfo.avatarUrl || defaultAvatarUrl}}" class="user-center-card__header__avatar" /> + <view class="user-center-card__header__name">{{userInfo.nickName || '寰俊鐢ㄦ埛'}}</view> + <!-- 闇�瑕佹巿鏉冪敤鎴蜂俊鎭紝閫氳繃slot娣诲姞寮圭獥 --> + <view class="user-center-card__header__transparent" wx:if="{{isNeedGetUserInfo}}"> + <slot name="getUserInfo" /> + </view> + <!-- 涓嶉渶瑕佹巿鏉冪敤鎴蜂俊鎭紝浠嶇劧瑙﹀彂gotoUserEditPage浜嬩欢 --> + <view class="user-center-card__header__transparent" bind:tap="gotoUserEditPage" wx:else></view> + </view> + </block> + <!-- 宸茬櫥褰曚笖宸茬粡鎺堟潈鐢ㄦ埛淇℃伅鐨勬儏鍐� --> + <block wx:if="{{currAuthStep === AuthStepType.THREE}}"> + <view class="user-center-card__header" bind:tap="gotoUserEditPage"> + <t-avatar t-class="avatar" mode="aspectFill" class="user-center-card__header__avatar" image="{{userInfo.avatarUrl || defaultAvatarUrl}}" /> + <view class="user-center-card__header__name">{{userInfo.nickName || '寰俊鐢ㄦ埛'}}</view> + </view> + </block> +</view> \ No newline at end of file diff --git a/pages/personalCenter/components/user-center-card/index.wxss b/pages/personalCenter/components/user-center-card/index.wxss new file mode 100644 index 0000000..4bb493f --- /dev/null +++ b/pages/personalCenter/components/user-center-card/index.wxss @@ -0,0 +1,60 @@ +.user-center-card { + background-image: url('https://cdn-we-retail.ym.tencent.com/miniapp/template/user-center-bg-v1.png'); + background-size: cover; + background-repeat: no-repeat; + padding: 0 24rpx; +} + +.user-center-card__header { + margin-top: 160rpx; + margin-bottom: 30rpx; + margin-left: 20rpx; + height: 96rpx; + line-height: 48rpx; + display: flex; + justify-content: flex-start; + align-items: center; + color: #333; + position: relative; +} + +.user-center-card__header__avatar { + width: 96rpx; + height: 96rpx; + border-radius: 48rpx; + overflow: hidden; +} + +.user-center-card__header__name { + font-size: 36rpx; + line-height: 48rpx; + color: #333; + font-weight: bold; + margin-left: 24rpx; + margin-right: 16rpx; +} + +.user-center-card__header__transparent { + position: absolute; + left: 0; + top: 0; + background-color: transparent; + height: 100%; + width: 100%; +} + +.user-center-card__icon { + line-height: 96rpx; +} + +.setting { + margin-left: auto; + display: flex; + align-items: center; +} + +.setting .img { + height: 34rpx; + width: 34rpx; + margin-right: 10rpx; +} \ No newline at end of file diff --git a/pages/personalCenter/downloads/index.js b/pages/personalCenter/downloads/index.js new file mode 100644 index 0000000..2e5078a --- /dev/null +++ b/pages/personalCenter/downloads/index.js @@ -0,0 +1,66 @@ +// pages/personalCenter/downloads/index.js +Page({ + + /** + * 椤甸潰鐨勫垵濮嬫暟鎹� + */ + data: { + + }, + + /** + * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍔犺浇 + */ + onLoad(options) { + + }, + + /** + * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍒濇娓叉煋瀹屾垚 + */ + onReady() { + + }, + + /** + * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鏄剧ず + */ + onShow() { + + }, + + /** + * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰闅愯棌 + */ + onHide() { + + }, + + /** + * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍗歌浇 + */ + onUnload() { + + }, + + /** + * 椤甸潰鐩稿叧浜嬩欢澶勭悊鍑芥暟--鐩戝惉鐢ㄦ埛涓嬫媺鍔ㄤ綔 + */ + onPullDownRefresh() { + + }, + + /** + * 椤甸潰涓婃媺瑙﹀簳浜嬩欢鐨勫鐞嗗嚱鏁� + */ + onReachBottom() { + + }, + + /** + * 鐢ㄦ埛鐐瑰嚮鍙充笂瑙掑垎浜� + */ + onShareAppMessage() { + + } +}) \ No newline at end of file diff --git a/pages/personalCenter/downloads/index.json b/pages/personalCenter/downloads/index.json new file mode 100644 index 0000000..8835af0 --- /dev/null +++ b/pages/personalCenter/downloads/index.json @@ -0,0 +1,3 @@ +{ + "usingComponents": {} +} \ No newline at end of file diff --git a/pages/personalCenter/downloads/index.wxml b/pages/personalCenter/downloads/index.wxml new file mode 100644 index 0000000..b64266a --- /dev/null +++ b/pages/personalCenter/downloads/index.wxml @@ -0,0 +1,2 @@ +<!--pages/personalCenter/downloads/index.wxml--> +<text>pages/personalCenter/downloads/index.wxml</text> diff --git a/pages/personalCenter/downloads/index.wxss b/pages/personalCenter/downloads/index.wxss new file mode 100644 index 0000000..f73c53a --- /dev/null +++ b/pages/personalCenter/downloads/index.wxss @@ -0,0 +1 @@ +/* pages/personalCenter/downloads/index.wxss */ \ No newline at end of file diff --git a/pages/personalCenter/feedBack/index.js b/pages/personalCenter/feedBack/index.js new file mode 100644 index 0000000..9e4b25b --- /dev/null +++ b/pages/personalCenter/feedBack/index.js @@ -0,0 +1,66 @@ +// pages/personalCenter/feedBack/index.js +Page({ + + /** + * 椤甸潰鐨勫垵濮嬫暟鎹� + */ + data: { + + }, + + /** + * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍔犺浇 + */ + onLoad(options) { + + }, + + /** + * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍒濇娓叉煋瀹屾垚 + */ + onReady() { + + }, + + /** + * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鏄剧ず + */ + onShow() { + + }, + + /** + * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰闅愯棌 + */ + onHide() { + + }, + + /** + * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍗歌浇 + */ + onUnload() { + + }, + + /** + * 椤甸潰鐩稿叧浜嬩欢澶勭悊鍑芥暟--鐩戝惉鐢ㄦ埛涓嬫媺鍔ㄤ綔 + */ + onPullDownRefresh() { + + }, + + /** + * 椤甸潰涓婃媺瑙﹀簳浜嬩欢鐨勫鐞嗗嚱鏁� + */ + onReachBottom() { + + }, + + /** + * 鐢ㄦ埛鐐瑰嚮鍙充笂瑙掑垎浜� + */ + onShareAppMessage() { + + } +}) \ No newline at end of file diff --git a/pages/personalCenter/feedBack/index.json b/pages/personalCenter/feedBack/index.json new file mode 100644 index 0000000..8835af0 --- /dev/null +++ b/pages/personalCenter/feedBack/index.json @@ -0,0 +1,3 @@ +{ + "usingComponents": {} +} \ No newline at end of file diff --git a/pages/personalCenter/feedBack/index.wxml b/pages/personalCenter/feedBack/index.wxml new file mode 100644 index 0000000..134e541 --- /dev/null +++ b/pages/personalCenter/feedBack/index.wxml @@ -0,0 +1,2 @@ +<!--pages/personalCenter/feedBack/index.wxml--> +<text>pages/personalCenter/feedBack/index.wxml</text> diff --git a/pages/personalCenter/feedBack/index.wxss b/pages/personalCenter/feedBack/index.wxss new file mode 100644 index 0000000..62d1b32 --- /dev/null +++ b/pages/personalCenter/feedBack/index.wxss @@ -0,0 +1 @@ +/* pages/personalCenter/feedBack/index.wxss */ \ No newline at end of file diff --git a/pages/personalCenter/feedBackSubmit/index.js b/pages/personalCenter/feedBackSubmit/index.js new file mode 100644 index 0000000..545c533 --- /dev/null +++ b/pages/personalCenter/feedBackSubmit/index.js @@ -0,0 +1,66 @@ +// pages/personalCenter/feedBackSubmit/index.js +Page({ + + /** + * 椤甸潰鐨勫垵濮嬫暟鎹� + */ + data: { + + }, + + /** + * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍔犺浇 + */ + onLoad(options) { + + }, + + /** + * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍒濇娓叉煋瀹屾垚 + */ + onReady() { + + }, + + /** + * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鏄剧ず + */ + onShow() { + + }, + + /** + * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰闅愯棌 + */ + onHide() { + + }, + + /** + * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍗歌浇 + */ + onUnload() { + + }, + + /** + * 椤甸潰鐩稿叧浜嬩欢澶勭悊鍑芥暟--鐩戝惉鐢ㄦ埛涓嬫媺鍔ㄤ綔 + */ + onPullDownRefresh() { + + }, + + /** + * 椤甸潰涓婃媺瑙﹀簳浜嬩欢鐨勫鐞嗗嚱鏁� + */ + onReachBottom() { + + }, + + /** + * 鐢ㄦ埛鐐瑰嚮鍙充笂瑙掑垎浜� + */ + onShareAppMessage() { + + } +}) \ No newline at end of file diff --git a/pages/personalCenter/feedBackSubmit/index.json b/pages/personalCenter/feedBackSubmit/index.json new file mode 100644 index 0000000..8835af0 --- /dev/null +++ b/pages/personalCenter/feedBackSubmit/index.json @@ -0,0 +1,3 @@ +{ + "usingComponents": {} +} \ No newline at end of file diff --git a/pages/personalCenter/feedBackSubmit/index.wxml b/pages/personalCenter/feedBackSubmit/index.wxml new file mode 100644 index 0000000..675b7b0 --- /dev/null +++ b/pages/personalCenter/feedBackSubmit/index.wxml @@ -0,0 +1,2 @@ +<!--pages/personalCenter/feedBackSubmit/index.wxml--> +<text>pages/personalCenter/feedBackSubmit/index.wxml</text> diff --git a/pages/personalCenter/feedBackSubmit/index.wxss b/pages/personalCenter/feedBackSubmit/index.wxss new file mode 100644 index 0000000..5445ab2 --- /dev/null +++ b/pages/personalCenter/feedBackSubmit/index.wxss @@ -0,0 +1 @@ +/* pages/personalCenter/feedBackSubmit/index.wxss */ \ No newline at end of file diff --git a/pages/personalCenter/index.js b/pages/personalCenter/index.js new file mode 100644 index 0000000..1405558 --- /dev/null +++ b/pages/personalCenter/index.js @@ -0,0 +1,200 @@ +const app = getApp() +const menuData = [ + { + title: '鎴戠殑璁㈠崟', + icon: '/static/images/personal/order.png', + url: '/pages/personalCenter/myOrder/index', + type: 'order', + }, + { + title: '婵�娲诲晢鍝�', + icon: '/static/images/personal/jihuo.png', + url: '/pages/personalCenter/activateProduct/index', + type: 'activateProduct', + }, + { + title: '鎴戠殑璇佷功', + icon: '/static/images/personal/certificate.png', + url: '/pages/personalCenter/certificate/index', + type: 'certificate', + }, + { + title: '鎴戠殑鏀惰棌', + icon: '/static/images/personal/wodeshoucang.png', + url: '/pages/personalCenter/myCollection/index', + type: 'collection', + }, + { + title: '鎴戠殑涓嬭浇', + icon: '/static/images/personal/download.png', + url: '/pages/personalCenter/downloads/index', + type: 'download', + }, + { + title: '鏍蜂功鐢宠', + icon: '/static/images/personal/yangshushenqing.png', + url: '/pages/personalCenter/sampleBooks/index', + type: 'sampleBook', + }, + { + title: '鍑轰功鐢宠', + icon: '/static/images/personal/chushu.png', + url: '/pages/personalCenter/publishBooks/index', + type: 'publishBooks', + }, + { + title: '鎴戠殑涓婁紶', + icon: '/static/images/personal/upload.png', + url: '', + type: 'upload', + } +]; +const moreMenu = [ + { + title: '鎴戠殑娑堟伅', + icon: '/static/images/personal/notification.png', + url: '/pages/personalCenter/myMassage/index', + type: 'message', + }, + { + title: '寤鸿涓庡弽棣�', + icon: '/static/images/personal/feedback.png', + url: '/pages/personalCenter/feedback/index', + type: 'feedback', + } +]; +const moreMenu1 = [ + { + title: '鍏充簬鎴戜滑', + icon: '/static/images/personal/about.png', + url: '', + type: 'aboutUs', + }, + { + title: '鑱旂郴鎴戜滑', + icon: '/static/images/personal/contact.png', + url: '', + type: 'contact', + } +]; +Page({ + + /** + * 椤甸潰鐨勫垵濮嬫暟鎹� + */ + data: { + show: false, + userInfo: { + avatarUrl: + 'https://we-retail-static-1300977798.cos.ap-guangzhou.myqcloud.com/retail-ui/components-exp/avatar/avatar-1.jpg', + nickName: 'TDesign', + phoneNumber: '13438358888', + }, + currAuthStep: 1, + teacherState: { + state: '', + reasonTxt: '', + }, + integral: 0, + menuData, + moreMenu, + moreMenu1 + }, + /** + * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍔犺浇 + */ + onLoad(options) { + }, + + + /** + * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鏄剧ず + */ + onShow() { + if (wx.getStorageSync(app.config.userInfoKey)) { + this.setData({ + show: true, + userInfo: JSON.parse(wx.getStorageSync(app.config.userInfoKey)) + }) + + if (typeof this.getTabBar === 'function' && this.getTabBar()) { + this.getTabBar().setData({ + selected: 4 //杩欎釜鏁板瓧鏄綋鍓嶉〉闈㈠湪tabBar涓璴ist鏁扮粍鐨勭储寮� + }) + } + this.getTeacherInfo() + } else { + wx.navigateTo({ + url: "/pages/testLogin/index", + }); + } + }, + /** + * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰闅愯棌 + */ + onHide() { + this.setData({ + show: false + }) + }, + /** + * 椤甸潰鐩稿叧浜嬩欢澶勭悊鍑芥暟--鐩戝惉鐢ㄦ埛涓嬫媺鍔ㄤ綔 + */ + onPullDownRefresh() { + this.init(); + }, + /** + * 椤甸潰涓婃媺瑙﹀簳浜嬩欢鐨勫鐞嗗嚱鏁� + */ + onReachBottom() { + }, + //鏁欏笀淇℃伅 + getTeacherInfo() { + const data = { + start: 0, + size: 10, + topicIdOrRefCode: 'teacherRoleApproval', + appRefCode: app.config.appRefCode, + sort: { + type: 'Desc', + field: 'CreateDate' + } + } + app.MG.ugc.getTopicMessageList(data).then((res) => { + console.log(this.data.userInfo, "userInfo") + const resData = res.datas.find((i) => i.appUserCreator.userId == this.data.userInfo.userId) + if (resData) { + this.setData({ + teacherState: { + state: resData.state, + reasonTxt: resData.feedBack != null ? JSON.parse(resData.feedBack).reason : '' + } + }) + } + }) + }, + + //鐐瑰嚮鐩綍 + toPages(item) { + console.log(item) + let info = item.target.dataset.info + if (info.url) { + wx.navigateTo({ + url: info.url + }) + } else { + wx.showToast({ + title: "寤鸿涓�", + icon: 'none', + duration: 2000 + }) + } + }, + + /** + * 鐢ㄦ埛鐐瑰嚮鍙充笂瑙掑垎浜� + */ + onShareAppMessage() { + + } +}) \ No newline at end of file diff --git a/pages/personalCenter/index.json b/pages/personalCenter/index.json new file mode 100644 index 0000000..8835af0 --- /dev/null +++ b/pages/personalCenter/index.json @@ -0,0 +1,3 @@ +{ + "usingComponents": {} +} \ No newline at end of file diff --git a/pages/personalCenter/index.wxml b/pages/personalCenter/index.wxml new file mode 100644 index 0000000..d93ae03 --- /dev/null +++ b/pages/personalCenter/index.wxml @@ -0,0 +1,2 @@ +<!--pages/personalCenter/index.wxml--> +<text>pages/personalCenter/index.wxml</text> diff --git a/pages/personalCenter/index.wxss b/pages/personalCenter/index.wxss new file mode 100644 index 0000000..0387fff --- /dev/null +++ b/pages/personalCenter/index.wxss @@ -0,0 +1 @@ +/* pages/personalCenter/index.wxss */ \ No newline at end of file diff --git a/pages/personalCenter/myCollection/index.js b/pages/personalCenter/myCollection/index.js new file mode 100644 index 0000000..93fc08e --- /dev/null +++ b/pages/personalCenter/myCollection/index.js @@ -0,0 +1,66 @@ +// pages/personalCenter/myCollection/index.js +Page({ + + /** + * 椤甸潰鐨勫垵濮嬫暟鎹� + */ + data: { + + }, + + /** + * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍔犺浇 + */ + onLoad(options) { + + }, + + /** + * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍒濇娓叉煋瀹屾垚 + */ + onReady() { + + }, + + /** + * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鏄剧ず + */ + onShow() { + + }, + + /** + * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰闅愯棌 + */ + onHide() { + + }, + + /** + * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍗歌浇 + */ + onUnload() { + + }, + + /** + * 椤甸潰鐩稿叧浜嬩欢澶勭悊鍑芥暟--鐩戝惉鐢ㄦ埛涓嬫媺鍔ㄤ綔 + */ + onPullDownRefresh() { + + }, + + /** + * 椤甸潰涓婃媺瑙﹀簳浜嬩欢鐨勫鐞嗗嚱鏁� + */ + onReachBottom() { + + }, + + /** + * 鐢ㄦ埛鐐瑰嚮鍙充笂瑙掑垎浜� + */ + onShareAppMessage() { + + } +}) \ No newline at end of file diff --git a/pages/personalCenter/myCollection/index.json b/pages/personalCenter/myCollection/index.json new file mode 100644 index 0000000..8835af0 --- /dev/null +++ b/pages/personalCenter/myCollection/index.json @@ -0,0 +1,3 @@ +{ + "usingComponents": {} +} \ No newline at end of file diff --git a/pages/personalCenter/myCollection/index.wxml b/pages/personalCenter/myCollection/index.wxml new file mode 100644 index 0000000..c7503c3 --- /dev/null +++ b/pages/personalCenter/myCollection/index.wxml @@ -0,0 +1,2 @@ +<!--pages/personalCenter/myCollection/index.wxml--> +<text>pages/personalCenter/myCollection/index.wxml</text> diff --git a/pages/personalCenter/myCollection/index.wxss b/pages/personalCenter/myCollection/index.wxss new file mode 100644 index 0000000..c6a2567 --- /dev/null +++ b/pages/personalCenter/myCollection/index.wxss @@ -0,0 +1 @@ +/* pages/personalCenter/myCollection/index.wxss */ \ No newline at end of file diff --git a/pages/personalCenter/myMassage/index.js b/pages/personalCenter/myMassage/index.js new file mode 100644 index 0000000..b6c2b58 --- /dev/null +++ b/pages/personalCenter/myMassage/index.js @@ -0,0 +1,155 @@ +import moment from 'moment' +const app = getApp(); +Page({ + /** + * 椤甸潰鐨勫垵濮嬫暟鎹� + */ + data: { + list: [], + //鍒嗛〉 + page: 1, + limit: 10, + pageTotalCount: 0, + bottomLoading: false, + isMoreData: false, + // 杩斿洖椤堕儴 + isBackTop: false, + setScrollValue: 0, + skeletonLoding: true, + + }, + + /** + * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍔犺浇 + */ + onLoad(options) { + this.getDataList(false); + }, + + getDataList(isReachBottom) { + app.MG.app.getAppMessageList({ + appRefCode: app.config.appRefCode, + start: this.data.page * this.data.limit - this.data.limit, + size: this.data.limit, + sort: { + type: "Desc", + field: "CreateDate" + } + }) + .then(res => { + try { + if (res.datas.length > 0) { + res.datas.forEach((item) => { + item.createDate = moment(item.createDate).format("YYYY-MM-DD HH:mm"); + }); + let dataList = res.datas; + + //瑙﹀簳鍔犺浇鏂版暟鎹苟淇濈暀鑰佹暟鎹� + if (isReachBottom) { + dataList = [...this.data.list, ...dataList] //灏嗘柊鏁版嵁鍔犲叆鑰佹暟鎹腑 + } + this.setData({ + list: dataList, + pageTotalCount: res.total, + bottomLoading: false, + isMoreData: dataList.length > 0 ? false : true, + skeletonLoding: false, + }) + } else { + this.setData({ + skeletonLoding: false, + }) + } + } catch (error) { + console.log(error) + } + }) + }, + + toList(itemData) { + let info = itemData.currentTarget.dataset.info; + wx.navigateTo({ + url: "/pages/personalCenter/myMassage/massageDetail/index?id=" + info.id, + }); + }, + /** + * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍒濇娓叉煋瀹屾垚 + */ + onReady() { + + }, + + /** + * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鏄剧ず + */ + onShow() { + + }, + + /** + * 椤甸潰鐩稿叧浜嬩欢澶勭悊鍑芥暟--鐩戝惉鐢ㄦ埛涓嬫媺鍔ㄤ綔 + */ + onPullDownRefresh() { + if (this._freshing) return + this.setData({ + page: 1, + limit: 10, + pageTotalCount: 0, + bottomLoading: false, + isMoreData: false + }) + this._freshing = true; + this.setData({ + triggered: false, + }) + this.getDataList(false); + this._freshing = false + }, + + /** + * 椤甸潰涓婃媺瑙﹀簳浜嬩欢鐨勫鐞嗗嚱鏁� + */ + onReachBottom() { + this.setData({ + bottomLoading: true, + isMoreData: false + }) + let bool = false; + if (this.data.pageTotalCount > this.data.list.length) { + bool = true; + this.setData({ + page: this.data.page + 1, + }) + } else { + setTimeout(() => { + this.setData({ + bottomLoading: false, + isMoreData: true + }) + }, 100) + return false; + } + this.getDataList(bool); + + }, + + // 鐩戝惉婊氬姩璺濈 + onPageScroll(e) { + if (e && e.scrollTop >= 1000) { + this.setData({ + isBackTop: true + }) + } else { + this.setData({ + isBackTop: false + }) + } + }, + + /** + * 鐢ㄦ埛鐐瑰嚮鍙充笂瑙掑垎浜� + */ + onShareAppMessage() { + + } +}) \ No newline at end of file diff --git a/pages/personalCenter/myMassage/index.json b/pages/personalCenter/myMassage/index.json new file mode 100644 index 0000000..8835af0 --- /dev/null +++ b/pages/personalCenter/myMassage/index.json @@ -0,0 +1,3 @@ +{ + "usingComponents": {} +} \ No newline at end of file diff --git a/pages/personalCenter/myMassage/index.wxml b/pages/personalCenter/myMassage/index.wxml new file mode 100644 index 0000000..5a96715 --- /dev/null +++ b/pages/personalCenter/myMassage/index.wxml @@ -0,0 +1,35 @@ +<view class="container" wx:if="{{!skeletonLoding}}"> + <scroll-view class="scroll content" bind:scroll="onPageScroll" model:scroll-top="{{setScrollValue}}" scroll-y refresher-enabled="{{true}}" lower-threshold="{{200}}" refresher-threshold="{{80}}" refresher-default-style="none" refresher-triggered="{{triggered}}" bindrefresherpulling="{{refresh.onPulling}}" bindrefresherrefresh="onPullDownRefresh" bindscrolltolower="onReachBottom"> + <view slot="refresher" class="refresh-container"> + <view class="loading"> + <t-loading theme="circular" size="40rpx" text="姝e湪鍒锋柊..." class="wrapper" /> + </view> + </view> + <view class="pageInfo" wx:if="{{list.length > 0}}"> + <view class="content-item" wx:for="{{list}}" wx:for-item="item" wx:for-index="index" wx:key="index"> + <view class="icon"> + <t-image src="/static/images/personal/notification1.png" mode="heightFix" class="img" /> + </view> + <view class="item-con" data-info="{{item}}" bindtap="toList"> + <view class="titleBox"> + <view class="item-title">{{item.name}}</view> + <view class="createDate">{{item.createDate}}</view> + </view> + <view class="description"> + {{item.description}} + </view> + </view> + </view> + </view> + <view wx:if="{{list.length == 0}}" class="empyt"> + <t-empty icon="folder-open" description="鏆傛棤鏁版嵁" /> + </view> + <view class="bottom-loading" wx:if="{{bottomLoading}}"> + <t-loading theme="circular" size="40rpx" text="鍔犺浇涓�..." class="wrapper" /> + </view> + <view class="bottom-loading" style="color: #ccc;font-size: 28rpx;" wx:if="{{isMoreData}}"> + <text>娌℃湁鏇村浜�</text> + </view> + </scroll-view> + <t-back-top theme="round" wx:if="{{isBackTop}}" text="椤堕儴" bind:to-top="onToTop"></t-back-top> +</view> \ No newline at end of file diff --git a/pages/personalCenter/myMassage/index.wxss b/pages/personalCenter/myMassage/index.wxss new file mode 100644 index 0000000..2848b48 --- /dev/null +++ b/pages/personalCenter/myMassage/index.wxss @@ -0,0 +1,60 @@ +.pageInfo { + padding: 40rpx 20rpx; +} + +.content-item { + padding: 20rpx 0; + border-bottom: 1px solid #EDEDED; + display: flex; +} + +.content-item .icon { + width: 58rpx; + height: 58rpx; +} + +.content-item .icon .img { + width: 100%; + height: 100%; +} + +.item-con { + flex: 1; + margin-left: 30rpx; +} + +.titleBox { + display: flex; + justify-content: space-between +} + +.titleBox .item-title { + font-weight: bold; +} + +.createDate { + font-size: 24rpx; + color: #949494; +} + +.description { + font-size: 24rpx; + height: 88rpx; + line-height: 40rpx; + display: -webkit-box; + margin-top: 20rpx; + -webkit-box-orient: vertical; + -webkit-line-clamp: 2; + overflow: hidden; + text-overflow: ellipsis; +} + +.refresh-container { + margin: 0 auto; +} + +.bottom-loading, +.loading { + padding: 20rpx; + text-align: center; +} \ No newline at end of file diff --git a/pages/personalCenter/myMassage/massageDetail/index.js b/pages/personalCenter/myMassage/massageDetail/index.js new file mode 100644 index 0000000..e8ed824 --- /dev/null +++ b/pages/personalCenter/myMassage/massageDetail/index.js @@ -0,0 +1,79 @@ +const app = getApp(); +import moment from 'moment' +Page({ + + /** + * 椤甸潰鐨勫垵濮嬫暟鎹� + */ + data: { + dataInfo: {} + }, + + /** + * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍔犺浇 + */ + onLoad(options) { + this.getDataInfo(options.id) + }, + getDataInfo(id) { + app.MG.app.getMessage({ + messageId: id + }) + .then(res => { + res.createDate = moment(res.createDate).format("YYYY-MM-DD HH:mm"); + this.setData({ + dataInfo: res, + }) + + }) + }, + + /** + * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍒濇娓叉煋瀹屾垚 + */ + onReady() { + + }, + + /** + * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鏄剧ず + */ + onShow() { + + }, + + /** + * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰闅愯棌 + */ + onHide() { + + }, + + /** + * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍗歌浇 + */ + onUnload() { + + }, + + /** + * 椤甸潰鐩稿叧浜嬩欢澶勭悊鍑芥暟--鐩戝惉鐢ㄦ埛涓嬫媺鍔ㄤ綔 + */ + onPullDownRefresh() { + + }, + + /** + * 椤甸潰涓婃媺瑙﹀簳浜嬩欢鐨勫鐞嗗嚱鏁� + */ + onReachBottom() { + + }, + + /** + * 鐢ㄦ埛鐐瑰嚮鍙充笂瑙掑垎浜� + */ + onShareAppMessage() { + + } +}) \ No newline at end of file diff --git a/pages/personalCenter/myMassage/massageDetail/index.json b/pages/personalCenter/myMassage/massageDetail/index.json new file mode 100644 index 0000000..211820b --- /dev/null +++ b/pages/personalCenter/myMassage/massageDetail/index.json @@ -0,0 +1,4 @@ +{ + "navigationBarTitleText": "鎴戠殑娑堟伅", + "usingComponents": {} +} \ No newline at end of file diff --git a/pages/personalCenter/myMassage/massageDetail/index.wxml b/pages/personalCenter/myMassage/massageDetail/index.wxml new file mode 100644 index 0000000..80216eb --- /dev/null +++ b/pages/personalCenter/myMassage/massageDetail/index.wxml @@ -0,0 +1,8 @@ +<view class="container"> + <view> + <view class="name">{{dataInfo.name}}</view> + <view class="createDate">{{dataInfo.createDate}}</view> + <view class="description">{{dataInfo.description}}</view> + <rich-text space="emsp" nodes="{{dataInfo.content}}" class="content" /> + </view> +</view> \ No newline at end of file diff --git a/pages/personalCenter/myMassage/massageDetail/index.wxss b/pages/personalCenter/myMassage/massageDetail/index.wxss new file mode 100644 index 0000000..67696db --- /dev/null +++ b/pages/personalCenter/myMassage/massageDetail/index.wxss @@ -0,0 +1,28 @@ +.container { + padding: 20rpx; +} + +.name { + text-align: center; + font-size: 32rpx; + font-weight: bold; +} + +.createDate { + margin-top: 20rpx; + color: #999; + text-align: center; + font-size: 28rpx; +} + +.description { + padding: 30rpx 0; + color: #999; + font-size: 28rpx; + line-height: 40rpx; +} + +.content { + font-size: 28rpx; + line-height: 40rpx; +} \ No newline at end of file diff --git a/pages/personalCenter/myOrder/index.js b/pages/personalCenter/myOrder/index.js new file mode 100644 index 0000000..b7ca12c --- /dev/null +++ b/pages/personalCenter/myOrder/index.js @@ -0,0 +1,66 @@ +// pages/personalCenter/myOrder/index.js +Page({ + + /** + * 椤甸潰鐨勫垵濮嬫暟鎹� + */ + data: { + + }, + + /** + * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍔犺浇 + */ + onLoad(options) { + + }, + + /** + * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍒濇娓叉煋瀹屾垚 + */ + onReady() { + + }, + + /** + * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鏄剧ず + */ + onShow() { + + }, + + /** + * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰闅愯棌 + */ + onHide() { + + }, + + /** + * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍗歌浇 + */ + onUnload() { + + }, + + /** + * 椤甸潰鐩稿叧浜嬩欢澶勭悊鍑芥暟--鐩戝惉鐢ㄦ埛涓嬫媺鍔ㄤ綔 + */ + onPullDownRefresh() { + + }, + + /** + * 椤甸潰涓婃媺瑙﹀簳浜嬩欢鐨勫鐞嗗嚱鏁� + */ + onReachBottom() { + + }, + + /** + * 鐢ㄦ埛鐐瑰嚮鍙充笂瑙掑垎浜� + */ + onShareAppMessage() { + + } +}) \ No newline at end of file diff --git a/pages/personalCenter/myOrder/index.json b/pages/personalCenter/myOrder/index.json new file mode 100644 index 0000000..8835af0 --- /dev/null +++ b/pages/personalCenter/myOrder/index.json @@ -0,0 +1,3 @@ +{ + "usingComponents": {} +} \ No newline at end of file diff --git a/pages/personalCenter/myOrder/index.wxml b/pages/personalCenter/myOrder/index.wxml new file mode 100644 index 0000000..2413eb4 --- /dev/null +++ b/pages/personalCenter/myOrder/index.wxml @@ -0,0 +1,2 @@ +<!--pages/personalCenter/myOrder/index.wxml--> +<text>pages/personalCenter/myOrder/index.wxml</text> diff --git a/pages/personalCenter/myOrder/index.wxss b/pages/personalCenter/myOrder/index.wxss new file mode 100644 index 0000000..de4ba68 --- /dev/null +++ b/pages/personalCenter/myOrder/index.wxss @@ -0,0 +1 @@ +/* pages/personalCenter/myOrder/index.wxss */ \ No newline at end of file diff --git a/pages/personalCenter/publishBooks/index.js b/pages/personalCenter/publishBooks/index.js new file mode 100644 index 0000000..8036f4a --- /dev/null +++ b/pages/personalCenter/publishBooks/index.js @@ -0,0 +1,66 @@ +// pages/personalCenter/publishBooks/index.js +Page({ + + /** + * 椤甸潰鐨勫垵濮嬫暟鎹� + */ + data: { + + }, + + /** + * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍔犺浇 + */ + onLoad(options) { + + }, + + /** + * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍒濇娓叉煋瀹屾垚 + */ + onReady() { + + }, + + /** + * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鏄剧ず + */ + onShow() { + + }, + + /** + * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰闅愯棌 + */ + onHide() { + + }, + + /** + * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍗歌浇 + */ + onUnload() { + + }, + + /** + * 椤甸潰鐩稿叧浜嬩欢澶勭悊鍑芥暟--鐩戝惉鐢ㄦ埛涓嬫媺鍔ㄤ綔 + */ + onPullDownRefresh() { + + }, + + /** + * 椤甸潰涓婃媺瑙﹀簳浜嬩欢鐨勫鐞嗗嚱鏁� + */ + onReachBottom() { + + }, + + /** + * 鐢ㄦ埛鐐瑰嚮鍙充笂瑙掑垎浜� + */ + onShareAppMessage() { + + } +}) \ No newline at end of file diff --git a/pages/personalCenter/publishBooks/index.json b/pages/personalCenter/publishBooks/index.json new file mode 100644 index 0000000..8835af0 --- /dev/null +++ b/pages/personalCenter/publishBooks/index.json @@ -0,0 +1,3 @@ +{ + "usingComponents": {} +} \ No newline at end of file diff --git a/pages/personalCenter/publishBooks/index.wxml b/pages/personalCenter/publishBooks/index.wxml new file mode 100644 index 0000000..0fb8c8b --- /dev/null +++ b/pages/personalCenter/publishBooks/index.wxml @@ -0,0 +1,2 @@ +<!--pages/personalCenter/publishBooks/index.wxml--> +<text>pages/personalCenter/publishBooks/index.wxml</text> diff --git a/pages/personalCenter/publishBooks/index.wxss b/pages/personalCenter/publishBooks/index.wxss new file mode 100644 index 0000000..a9a43b0 --- /dev/null +++ b/pages/personalCenter/publishBooks/index.wxss @@ -0,0 +1 @@ +/* pages/personalCenter/publishBooks/index.wxss */ \ No newline at end of file diff --git a/pages/personalCenter/sampleBooks/index.js b/pages/personalCenter/sampleBooks/index.js new file mode 100644 index 0000000..ff7d82d --- /dev/null +++ b/pages/personalCenter/sampleBooks/index.js @@ -0,0 +1,66 @@ +// pages/personalCenter/sampleBooks/index.js +Page({ + + /** + * 椤甸潰鐨勫垵濮嬫暟鎹� + */ + data: { + + }, + + /** + * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍔犺浇 + */ + onLoad(options) { + + }, + + /** + * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍒濇娓叉煋瀹屾垚 + */ + onReady() { + + }, + + /** + * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鏄剧ず + */ + onShow() { + + }, + + /** + * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰闅愯棌 + */ + onHide() { + + }, + + /** + * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍗歌浇 + */ + onUnload() { + + }, + + /** + * 椤甸潰鐩稿叧浜嬩欢澶勭悊鍑芥暟--鐩戝惉鐢ㄦ埛涓嬫媺鍔ㄤ綔 + */ + onPullDownRefresh() { + + }, + + /** + * 椤甸潰涓婃媺瑙﹀簳浜嬩欢鐨勫鐞嗗嚱鏁� + */ + onReachBottom() { + + }, + + /** + * 鐢ㄦ埛鐐瑰嚮鍙充笂瑙掑垎浜� + */ + onShareAppMessage() { + + } +}) \ No newline at end of file diff --git a/pages/personalCenter/sampleBooks/index.json b/pages/personalCenter/sampleBooks/index.json new file mode 100644 index 0000000..8835af0 --- /dev/null +++ b/pages/personalCenter/sampleBooks/index.json @@ -0,0 +1,3 @@ +{ + "usingComponents": {} +} \ No newline at end of file diff --git a/pages/personalCenter/sampleBooks/index.wxml b/pages/personalCenter/sampleBooks/index.wxml new file mode 100644 index 0000000..d4eb5c9 --- /dev/null +++ b/pages/personalCenter/sampleBooks/index.wxml @@ -0,0 +1,2 @@ +<!--pages/personalCenter/sampleBooks/index.wxml--> +<text>pages/personalCenter/sampleBooks/index.wxml</text> diff --git a/pages/personalCenter/sampleBooks/index.wxss b/pages/personalCenter/sampleBooks/index.wxss new file mode 100644 index 0000000..73a1729 --- /dev/null +++ b/pages/personalCenter/sampleBooks/index.wxss @@ -0,0 +1 @@ +/* pages/personalCenter/sampleBooks/index.wxss */ \ No newline at end of file diff --git a/pages/teacherCertification/index.js b/pages/teacherCertification/index.js new file mode 100644 index 0000000..09555f3 --- /dev/null +++ b/pages/teacherCertification/index.js @@ -0,0 +1,66 @@ +// pages/teacherCertification/index.js +Page({ + + /** + * 椤甸潰鐨勫垵濮嬫暟鎹� + */ + data: { + + }, + + /** + * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍔犺浇 + */ + onLoad(options) { + + }, + + /** + * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍒濇娓叉煋瀹屾垚 + */ + onReady() { + + }, + + /** + * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鏄剧ず + */ + onShow() { + + }, + + /** + * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰闅愯棌 + */ + onHide() { + + }, + + /** + * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍗歌浇 + */ + onUnload() { + + }, + + /** + * 椤甸潰鐩稿叧浜嬩欢澶勭悊鍑芥暟--鐩戝惉鐢ㄦ埛涓嬫媺鍔ㄤ綔 + */ + onPullDownRefresh() { + + }, + + /** + * 椤甸潰涓婃媺瑙﹀簳浜嬩欢鐨勫鐞嗗嚱鏁� + */ + onReachBottom() { + + }, + + /** + * 鐢ㄦ埛鐐瑰嚮鍙充笂瑙掑垎浜� + */ + onShareAppMessage() { + + } +}) \ No newline at end of file diff --git a/pages/teacherCertification/index.json b/pages/teacherCertification/index.json new file mode 100644 index 0000000..8835af0 --- /dev/null +++ b/pages/teacherCertification/index.json @@ -0,0 +1,3 @@ +{ + "usingComponents": {} +} \ No newline at end of file diff --git a/pages/teacherCertification/index.wxml b/pages/teacherCertification/index.wxml new file mode 100644 index 0000000..ffa6ee5 --- /dev/null +++ b/pages/teacherCertification/index.wxml @@ -0,0 +1,2 @@ +<!--pages/teacherCertification/index.wxml--> +<text>pages/teacherCertification/index.wxml</text> diff --git a/pages/teacherCertification/index.wxss b/pages/teacherCertification/index.wxss new file mode 100644 index 0000000..a28030d --- /dev/null +++ b/pages/teacherCertification/index.wxss @@ -0,0 +1 @@ +/* pages/teacherCertification/index.wxss */ \ No newline at end of file diff --git a/pages/testLogin/index.js b/pages/testLogin/index.js new file mode 100644 index 0000000..e402ac9 --- /dev/null +++ b/pages/testLogin/index.js @@ -0,0 +1,132 @@ +// pages/testLogin/index.js +const app = getApp(); + +Page({ + + /** + * 椤甸潰鐨勫垵濮嬫暟鎹� + */ + data: { + textName: "18892081234", + textPassword: "xA123456", + loading: false, + userInfo: { + name: "", + icon: "" + } + }, + + // 鐧诲綍 + onLogin() { + this.setData({ + loading: true + }) + const data = { + loginName: this.data.textName, + password: this.data.textPassword, + appRefCode: app.config.appRefCode, + platform: "Mobile", + }; + app.MG.identity.loginByPassword(data).then(res => { + if (res && res.status == "Ok") { + this.setData({ + loginInfo: JSON.stringify(res) + }) + wx.setStorageSync(app.config.tokenKey, res.token); + this.getUserInfo() + } else { + wx.showToast({ + title: res.message || "鎵嬫満鍙锋垨瀵嗙爜閿欒", + icon: "error", + duration: 2000 + }) + } + }); + }, + + // 鑾峰彇鐢ㄦ埛淇℃伅 + // 鑾峰彇鐧诲綍鐢ㄦ埛韬唤 + getUserInfo() { + app.MG.identity.getCurrentAppUser().then(res => { + // 鐢ㄦ埛淇℃伅浼樺厛绾э細鏁欏笀璁よ瘉 > 寰俊 > 瀛︾敓锛堟敞鍐屾椂榛樿锛� + if (res) { + console.log(res, "user"); + let defaultUser = {}; + let secretData = res.secretList.find(i => i.type == 'LoginNameAndPassword') + let WeChatInfo = res.infoList.find((item) => item.type === "WeChat"); + if (WeChatInfo) { + defaultUser = { + nickName: WeChatInfo.name, + avatarUrl: WeChatInfo.icon, + userId: res.userId + } + } + if (secretData) { + defaultUser = { + nickName: secretData.credential, + avatarUrl: "../../static/images/index/tab.png", + userId: res.userId + } + } + + this.setData({ + userInfo: defaultUser, + loading: false + }) + wx.setStorageSync(app.config.userInfoKey, JSON.stringify(this.data.userInfo)); + } + wx.switchTab({ + url: '/pages/home/home' + }) + }); + }, + + /** + * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍔犺浇 + */ + onLoad(options) { + + }, + + /** + * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍒濇娓叉煋瀹屾垚 + */ + onReady() { + + }, + + /** + * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鏄剧ず + */ + onShow() { + + }, + + /** + * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰闅愯棌 + */ + onHide() { + + }, + + /** + * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍗歌浇 + */ + onUnload() { + + }, + + /** + * 椤甸潰鐩稿叧浜嬩欢澶勭悊鍑芥暟--鐩戝惉鐢ㄦ埛涓嬫媺鍔ㄤ綔 + */ + onPullDownRefresh() { + + }, + + /** + * 椤甸潰涓婃媺瑙﹀簳浜嬩欢鐨勫鐞嗗嚱鏁� + */ + onReachBottom() { + + } +}) \ No newline at end of file diff --git a/pages/testLogin/index.json b/pages/testLogin/index.json new file mode 100644 index 0000000..fd16c3b --- /dev/null +++ b/pages/testLogin/index.json @@ -0,0 +1,6 @@ +{ + "usingComponents": { + "t-input": "tdesign-miniprogram/input/input", + "t-button": "tdesign-miniprogram/button/button" + } +} \ No newline at end of file diff --git a/pages/testLogin/index.wxml b/pages/testLogin/index.wxml new file mode 100644 index 0000000..b538be0 --- /dev/null +++ b/pages/testLogin/index.wxml @@ -0,0 +1,8 @@ +<!--pages/testLogin/index.wxml--> +<view> + <t-input label="鐢ㄦ埛璐﹀彿" placeholder="璇疯緭鍏ョ敤鎴峰悕" model:value="{{textName}}" suffixIcon="{{ { name: 'user-avatar', ariaLabel: '閫氳褰�' } }}"></t-input> + <t-input label="鐢ㄦ埛瀵嗙爜" placeholder="璇疯緭鍏ュ瘑鐮�" type="password" model:value="{{textPassword}}" clearable /> +</view> +<view class="button-example"> + <t-button theme="primary" loading="{{loading}}" bindtap="onLogin" size="large" block>绔嬪嵆鐧诲綍</t-button> +</view> \ No newline at end of file diff --git a/pages/testLogin/index.wxss b/pages/testLogin/index.wxss new file mode 100644 index 0000000..7eb603b --- /dev/null +++ b/pages/testLogin/index.wxss @@ -0,0 +1,4 @@ +/* pages/testLogin/index.wxss */ +.button-example { + margin: 60rpx 32rpx; +} \ No newline at end of file diff --git a/services/cart/cart.js b/services/cart/cart.js index d42f959..5b48a23 100644 --- a/services/cart/cart.js +++ b/services/cart/cart.js @@ -1,20 +1,20 @@ -import { config } from '../../config/index'; +// import { config } from '../../config/index'; -/** 鑾峰彇璐墿杞ock鏁版嵁 */ -function mockFetchCartGroupData(params) { - const { delay } = require('../_utils/delay'); - const { genCartGroupData } = require('../../model/cart'); +// /** 鑾峰彇璐墿杞ock鏁版嵁 */ +// function mockFetchCartGroupData(params) { +// const { delay } = require('../_utils/delay'); +// const { genCartGroupData } = require('../../model/cart'); - return delay().then(() => genCartGroupData(params)); -} +// return delay().then(() => genCartGroupData(params)); +// } -/** 鑾峰彇璐墿杞︽暟鎹� */ -export function fetchCartGroupData(params) { - if (config.useMock) { - return mockFetchCartGroupData(params); - } +// /** 鑾峰彇璐墿杞︽暟鎹� */ +// export function fetchCartGroupData(params) { +// if (config.useMock) { +// return mockFetchCartGroupData(params); +// } - return new Promise((resolve) => { - resolve('real api'); - }); -} +// return new Promise((resolve) => { +// resolve('real api'); +// }); +// } diff --git a/static/images/personal/notification1.png b/static/images/personal/notification1.png new file mode 100644 index 0000000..8132730 --- /dev/null +++ b/static/images/personal/notification1.png Binary files differ -- Gitblit v1.9.1