diff --git a/assets/img/guoqi.jpg b/assets/img/guoqi.jpg new file mode 100644 index 0000000..ddbfc91 Binary files /dev/null and b/assets/img/guoqi.jpg differ diff --git a/assets/img/guoqi.png b/assets/img/guoqi.png new file mode 100644 index 0000000..c4f0fa9 Binary files /dev/null and b/assets/img/guoqi.png differ diff --git a/components/coupons/index.js b/components/coupons/index.js index 5e06e63..fa71a9a 100644 --- a/components/coupons/index.js +++ b/components/coupons/index.js @@ -4,24 +4,18 @@ Component({ * 组件的属性列表 */ properties: { + paramAtoB: String, data: { value: {}, - type: Object, - }, + type: Object + } }, /** * 组件的初始数据 */ - data: { - - }, + data: {}, methods: { - navigateTo(e){ - let { id } = e.currentTarget.dataset.date; - wx.navigateTo({ - url: `../../pages/coupon/detail/index?id=${id}`, - }) - } + } -}) +}); diff --git a/components/coupons/index.wxml b/components/coupons/index.wxml index 493b960..9c5e2e9 100644 --- a/components/coupons/index.wxml +++ b/components/coupons/index.wxml @@ -1,4 +1,5 @@ + @@ -6,21 +7,24 @@ {{data.title}} {{data.subTitle}} + + 满¥{{data.usePriceStr}}可用 + + + 仅限本店使用 + + + + ¥{{data.salePrice/100}} ¥{{data.price/100}} - - - - - 购买 + 领取 + 购买 - \ No newline at end of file + + + \ No newline at end of file diff --git a/components/coupons/index.wxss b/components/coupons/index.wxss index 1701bb8..216eb6b 100644 --- a/components/coupons/index.wxss +++ b/components/coupons/index.wxss @@ -1,101 +1,161 @@ @import "../../app.wxss"; .coupons { - flex-direction: row; - display: flex; - padding: 30rpx; - position: relative; - height: 184rpx; -} -.coupons-border{ - height: 1rpx; - /* width: 100%; */ - left: 30rpx; - right: 30rpx; - background: #F5F5F5; - position: absolute; - bottom: 0; + flex-direction: row; + display: flex; + padding: 30rpx; + position: relative; + height: 184rpx; +} +.coupons-border { + height: 1rpx; + /* width: 100%; */ + left: 30rpx; + right: 30rpx; + background: #f5f5f5; + position: absolute; + bottom: 0; } .coupons-img { - width: 248rpx; - height: 184rpx; - overflow: hidden; - border-radius: 10rpx; + width: 248rpx; + height: 184rpx; + overflow: hidden; + border-radius: 10rpx; } .coupons-img image { - width: 100%; - height: 100%; + width: 100%; + height: 100%; } .coupons-info { - padding-left: 20rpx; - /* padding-top: 10rpx; */ + padding-left: 20rpx; } .coupons-info-name { - font-size: 30rpx; - color: #000000; - letter-spacing: 0; - line-height: 42rpx; - font-weight: bold; + font-size: 30rpx; + color: #000000; + letter-spacing: 0; + line-height: 42rpx; + font-weight: bold; + margin-top: 10rpx; } -.coupons-info-price{ - padding:10rpx 0 15rpx; - height: 50rpx; +.coupons-info-price { + padding: 10rpx 0 15rpx; + height: 88rpx; } .coupons-info-price-p { - font-size: 36rpx; - color: #FF3434; - letter-spacing: 0.96rpx; - line-height: 50rpx; + display: block; + text-align: center; + font-size: 36rpx; + color: #ff3434; + line-height: 50rpx; } .coupons-info-price-o { - display: inline-block; - padding-left: 20rpx; - font-size: 20rpx; - color: #B4B4B4; - letter-spacing: 0.96rpx; - text-decoration: line-through; - line-height: 24rpx; + display: block; + text-align: center; + font-size: 26rpx; + color: #b4b4b4; + letter-spacing: 0.96rpx; + text-decoration: line-through; + line-height: 24rpx; } .coupons-info-distance { - font-size: 22rpx; - color: #C0C0C0; - letter-spacing: 0; - padding-bottom: 10rpx; - line-height: 30rpx; + font-size: 22rpx; + color: #c0c0c0; + letter-spacing: 0; + padding-bottom: 10rpx; + line-height: 30rpx; } .coupons-info-address { - font-size: 22rpx; - color: #585858; - letter-spacing: 0; - line-height: 30rpx; + font-size: 22rpx; + color: #585858; + letter-spacing: 0; + line-height: 30rpx; } .coupons-btn { - position: absolute; - bottom: 30rpx; - right: 30rpx; + position: absolute; + top: 40rpx; + right: 30rpx; } .coupons-btn-gm { - background: #00C0FF !important; - border-radius: 10rpx !important; - margin: 0 !important; - padding: 0 !important; - font-family: PingFangSC-Semibold; - font-size: 28rpx; - color: #FFFFFF !important; - letter-spacing: 0; - height: 50rpx !important; - width: 114rpx !important; - line-height: 50rpx !important; -} -.subtitle{ - font-size: 26rpx; - color: #666; - font-weight:100; -} \ No newline at end of file + background: #00c0ff !important; + border-radius: 10rpx !important; + margin: 0 !important; + padding: 0 !important; + font-family: PingFangSC-Semibold; + font-size: 28rpx; + color: #ffffff !important; + letter-spacing: 0; + height: 50rpx !important; + width: 114rpx !important; + line-height: 50rpx !important; +} +.subtitle { + font-size: 26rpx; + color: #666; + font-weight: 100; +} +.coupons-info-manjian { + color: #999; + font-size: 26rpx; + line-height: 34rpx; + font-weight: 100; +} + +/**上拉加载更多**/ +.userinfo { + display: flex; + flex-direction: column; + align-items: center; +} + +.userinfo-avatar { + width: 128rpx; + height: 128rpx; + margin: 20rpx; + border-radius: 50%; +} + +.userinfo-nickname { + color: #aaa; +} + +.usermotto { + margin-top: 200px; +} + +/**/ + +scroll-view { + width: 100%; +} + +.item { + width: 90%; + height: 300rpx; + margin: 20rpx auto; + background: brown; + overflow: hidden; +} + +.item .img { + width: 430rpx; + margin-right: 20rpx; + float: left; +} + +.title { + font-size: 30rpx; + display: block; + margin: 30rpx auto; +} + +.description { + font-size: 26rpx; + line-height: 15rpx; +} diff --git a/dist/tab/index.wxss b/dist/tab/index.wxss index a4e8e83..9fc8784 100644 --- a/dist/tab/index.wxss +++ b/dist/tab/index.wxss @@ -33,7 +33,7 @@ } .i-tabs-tab-title-current { - color: #00C0FF + color: #00C0FF; } .i-tabs-tab-scroll { diff --git a/pages/addPark/addPark.wxss b/pages/addPark/addPark.wxss index d5776bc..b1879a0 100644 --- a/pages/addPark/addPark.wxss +++ b/pages/addPark/addPark.wxss @@ -142,7 +142,7 @@ line-height: 80rpx; } .addpark-back{ - font-size: 25rpx; + font-size: 30rpx; color: #5aadfb; float: right; margin: 25rpx 25rpx; diff --git a/pages/coupon/detail/index.js b/pages/coupon/detail/index.js index 270a16f..bb42b5d 100644 --- a/pages/coupon/detail/index.js +++ b/pages/coupon/detail/index.js @@ -1,15 +1,17 @@ -var config = require('../../../config/config.js'); -var app = getApp() -const Http = require("../../../utils/HttpBasics") +var config = require("../../../config/config.js"); +var app = getApp(); +const Http = require("../../../utils/HttpBasics"); +const util = require("../../../utils/util"); Page({ data: { data: {}, couponId: null, - orderId: '' + orderId: "", + day: "", + hour: "", + minute: "" }, onLoad(options) { - console.log("00000000000000----------"); - console.log(options); let that = this; wx.showLoading({ title: "加载中..." @@ -25,6 +27,32 @@ Page({ } }).then(res => { console.log(res); + //当前时间与优惠券下架时间做计算 + var startTime = util.fmtDate(res.data.sendEndDate); + console.log(startTime); + var s1 = new Date(startTime.replace(/-/g, "/")); + var s2 = new Date(); + var runTime = parseInt((s1.getTime() - s2.getTime()) / 1000); + var year = Math.floor(runTime / 86400 / 365); + var runTime = runTime % (86400 * 365); + var month = Math.floor(runTime / 86400 / 30); + var runTime = runTime % (86400 * 30); + var day = Math.floor(runTime / 86400); + var runTime = runTime % 86400; + var hour = Math.floor(runTime / 3600); + var runTime = runTime % 3600; + var minute = Math.floor(runTime / 60); + var runTime = runTime % 60; + var second = runTime; + console.log(year, month, day, hour, minute, second); + that.setData({ + year: year, + month: month, + day: day, + hour: hour, + minute: minute + }); + console.log(that.data.day); wx.hideLoading(); that.setData({ data: res.data, @@ -39,119 +67,121 @@ Page({ payOrderUpdate: (orderId, payOrderId, status, reason) => { // 支付成功 Http.post({ - url: config.api.payOrderUpdate, - data: { - payOrderId: payOrderId, - orderId: orderId, - status: status, - reason: reason - } - }) + url: config.api.payOrderUpdate, + data: { + payOrderId: payOrderId, + orderId: orderId, + status: status, + reason: reason + } + }) .then(res => { console.log("payOrderUpdate then", res); wx.showToast({ - title: '购买成功', + title: "购买成功", duration: 2500 - }) - }).catch(err => { - console.log("payOrderUpdate catch", err); + }); }) + .catch(err => { + console.log("payOrderUpdate catch", err); + }); }, - payment: (res) => { + payment: res => { var that = this; - var payOrderId = '' + res.data.out_trade_no; + var payOrderId = "" + res.data.out_trade_no; wx.requestPayment({ timeStamp: res.timeStamp, nonceStr: res.nonceStr, package: res.package, - signType: 'MD5', + signType: "MD5", paySign: res.paySign, - 'success': (res) => { - that.payOrderUpdate(that.data.orderId, payOrderId, 1) // 支付成功 + success: res => { + that.payOrderUpdate(that.data.orderId, payOrderId, 1); // 支付成功 console.log(res); - console.log('支付成功'); + console.log("支付成功"); wx.showToast({ - title: '购买成功', + title: "购买成功", duration: 2500 - }) + }); wx.navigateBack({ delta: 2 - }) + }); }, - 'fail': (res) => { - that.payOrderUpdate(that.data.orderId, payOrderId, 2) // 支付失败 - console.log(res) - console.log('支付失败'); + fail: res => { + that.payOrderUpdate(that.data.orderId, payOrderId, 2); // 支付失败 + console.log(res); + console.log("支付失败"); return; }, - 'complete': (res) => { + complete: res => { console.log(res); - console.log('支付完成'); + console.log("支付完成"); var url = this.data.url; - console.log('get url', url) - if (res.errMsg == 'requestPayment:ok') { + console.log("get url", url); + if (res.errMsg == "requestPayment:ok") { wx.showModal({ - title: '提示', - content: '支付成功' + title: "提示", + content: "支付成功" }); if (url) { setTimeout(function() { wx.redirectTo({ - url: '/pages' + url + url: "/pages" + url }); - }, 2000) + }, 2000); } else { setTimeout(() => { - wx.navigateBack() - }, 2000) + wx.navigateBack(); + }, 2000); } } else { wx.showModal({ - title: '错误提示', + title: "错误提示", content: res.errMsg }); } return; } - }) + }); }, orderFunc() { var that = this; wx.showLoading({ - title: '加载中...', - }) + title: "加载中..." + }); Http.post({ - url: config.api.checkPhoneStatus, - data: {} - }) + url: config.api.checkPhoneStatus, + data: {} + }) .then(res => { return Http.post({ url: config.api.orderSave, data: { couponId: that.data.couponId } - }) - }).catch(err => { - console.log(err) + }); + }) + .catch(err => { + console.log(err); if (err.code == 11005) { // 用户手机未授权 wx.redirectTo({ - url: '../../getphoneInfo/index?couponId=' + that.data.couponId, - }) + url: "../../getphoneInfo/index?couponId=" + that.data.couponId + }); } if (err.code == 11006) { // 用户手机已加密 wx.redirectTo({ - url: '../../phoneinput/phoneinput?couponId=' + that.data.couponId, - }) + url: "../../phoneinput/phoneinput?couponId=" + that.data.couponId + }); } }) .then(res => { if (res != "undefined") { - const orderId = '' + res.data.id; + const orderId = "" + res.data.id; that.setData({ orderId: orderId - }) + }); if (res.data.payment > 0) { // 支付金额不为0 Http.post({ @@ -160,25 +190,27 @@ Page({ orderId: orderId } }).then(res => { - console.log(res) - var payOrderId = '' + res.data.out_trade_no; + console.log(res); + var payOrderId = "" + res.data.out_trade_no; wx.hideLoading(); //payment(res); - that.payOrderUpdate(that.data.orderId, payOrderId, 1) // 支付成功 - }) + that.payOrderUpdate(that.data.orderId, payOrderId, 1); // 支付成功 + }); } else { // 免费券 - that.payOrderUpdate(orderId, "0", 1) // 支付成功 + that + .payOrderUpdate(orderId, "0", 1) // 支付成功 .then(res => { wx.showToast({ title: "支付成功", duration: 3000 - }) - }) + }); + }); } } - }).catch(err => { - console.log(err) }) - }, -}) \ No newline at end of file + .catch(err => { + console.log(err); + }); + } +}); diff --git a/pages/coupon/detail/index.wxml b/pages/coupon/detail/index.wxml index 703d42c..5222995 100644 --- a/pages/coupon/detail/index.wxml +++ b/pages/coupon/detail/index.wxml @@ -6,7 +6,7 @@ {{data.title}}限购{{data.useLimitQuantity}}件 - 剩余时间:2天12小时25分钟 + 剩余时间:{{day}}天{{hour}}小时{{minute}}分钟 剩余件数:{{data.remainInventory}}件 @@ -47,6 +47,6 @@ - + \ No newline at end of file diff --git a/pages/coupon/detail/index.wxss b/pages/coupon/detail/index.wxss index 286898a..f3bb1e9 100644 --- a/pages/coupon/detail/index.wxss +++ b/pages/coupon/detail/index.wxss @@ -1,211 +1,214 @@ @import "../../../app.wxss"; + .coupons { - width: 100%; - height: 100vh; - background: #f6f6f6; - position: relative; - display: flex; - flex-direction: column; - overflow: hidden; -} -.coupons-body{ + width: 100%; + background: #f6f6f6; + position: relative; + overflow: hidden; + padding-bottom: 120rpx; +} + +.coupons-body { flex: 1; - overflow: auto; + /* overflow: auto; */ } + .banner { - width: 100%; - height: 465rpx; + width: 100%; + height: 465rpx; } .banner image { - width: 100%; - height: 100%; + width: 100%; + height: 100%; } .coupons_info { - width: 92%; - height: 186rpx; - display: flex; - justify-content: space-between; - padding: 0 4%; - background: #fff; + width: 92%; + height: 186rpx; + display: flex; + justify-content: space-between; + padding: 0 4%; + background: #fff; } .coupons_info view { - display: flex; - flex-direction: column; + display: flex; + flex-direction: column; } .coupons_info view:nth-child(1) text { - font-size: 30rpx; - margin-top: 3%; + font-size: 30rpx; + margin-top: 3%; } .coupons_info view:nth-child(1) text:nth-child(1) text { - color: #ff3434; - font-size: 24rpx; - border: 1px solid #ff3434; - border-radius: 6rpx; - margin-left: 2%; - padding: 0 5rpx; + color: #ff3434; + font-size: 24rpx; + border: 1px solid #ff3434; + border-radius: 6rpx; + margin-left: 2%; + padding: 0 5rpx; } .coupons_info view:nth-child(1) text:nth-child(2), .coupons_info view:nth-child(1) text:nth-child(3) { - color: #b8b8b8; - font-size: 24rpx; - margin-top: 4%; + color: #b8b8b8; + font-size: 24rpx; + margin-top: 4%; } .coupons_info view:nth-child(1) text:nth-child(2) text, .coupons_info view:nth-child(1) text:nth-child(3) text { - color: #ff3434; - font-size: 24rpx; + color: #ff3434; + font-size: 24rpx; } .coupons_info view:nth-child(2) text:nth-child(1) { - font-size: 36rpx; - color: #ff3434; - margin-top: 40rpx; - font-weight: bold; + font-size: 36rpx; + color: #ff3434; + margin-top: 40rpx; + font-weight: bold; } .coupons_info view:nth-child(2) text:nth-child(2) { - font-size: 24rpx; - color: #b4b4b4; - text-decoration: line-through; - padding-left: 10rpx; - padding-top: 4rpx; + font-size: 24rpx; + color: #b4b4b4; + text-decoration: line-through; + padding-left: 10rpx; + padding-top: 4rpx; } .posi { - width: 92%; - display: flex; - flex-direction: column; - padding: 0 4%; - background: #fff; - margin-top: 2%; + width: 92%; + display: flex; + flex-direction: column; + padding: 0 4%; + background: #fff; + margin-top: 2%; } .posi>view:nth-child(2) { - width: 100%; - height: 87rpx; - display: flex; - justify-content: space-between; - border-top: 1px solid #f6f6f6; - line-height: 87rpx; + width: 100%; + height: 87rpx; + display: flex; + justify-content: space-between; + border-top: 1px solid #f6f6f6; + line-height: 87rpx; } .posi>view:nth-child(2) text:nth-child(1) { - font-size: 30rpx; - color: #a9a9a9; + font-size: 30rpx; + color: #a9a9a9; } .posi>view:nth-child(2) text:nth-child(2) { - font-size: 30rpx; - color: #a9a9a9; + font-size: 30rpx; + color: #a9a9a9; } .posi_logo { - width: 100%; - height: 156rpx; - display: flex; - margin-top: 30rpx; + width: 100%; + height: 156rpx; + display: flex; + margin-top: 30rpx; } .posi_logo view:nth-child(1) { - width: 126rpx; - height: 126rpx; - border-radius: 50%; - overflow: hidden; - flex: 2; + width: 126rpx; + height: 126rpx; + border-radius: 50%; + overflow: hidden; + flex: 2; } .posi_logo view:nth-child(1) image { - width: 100%; - height: 100%; + width: 100%; + height: 100%; } .posi_logo view:nth-child(2) { - display: flex; - flex-direction: column; - flex: 8; - padding-top: 20rpx; - padding-left: 30rpx; + display: flex; + flex-direction: column; + flex: 8; + padding-top: 20rpx; + padding-left: 30rpx; } .posi_logo view:nth-child(2) text:nth-child(1) { - font-size: 30rpx; + font-size: 30rpx; } .posi_logo view:nth-child(2) text:nth-child(2) { - font-size: 24rpx; - color: #b8b8b8; - padding-top: 10rpx; + font-size: 24rpx; + color: #b8b8b8; + padding-top: 10rpx; } .notes { - margin-top: 2%; + margin-top: 2%; } .notes view:nth-child(1) { - width: 92%; - height: 87rpx; - padding: 0 4%; - line-height: 87rpx; - background: #fff; - border-bottom: 1rpx solid #f5f5f5; - border-top: 1rpx solid #f5f5f5; + width: 92%; + height: 87rpx; + padding: 0 4%; + line-height: 87rpx; + background: #fff; + border-bottom: 1rpx solid #f5f5f5; + border-top: 1rpx solid #f5f5f5; } .notes view:nth-child(1) text { - font-size: 30rpx; - font-weight: bold; + font-size: 30rpx; + font-weight: bold; } .notes view:nth-child(2) { - width: 92%; - height: 400rpx; - padding: 0 4%; - background: #fff; - border-bottom: 1rpx solid #f5f5f5; - display: flex; - flex-direction: column; - padding-top: 2%; + width: 92%; + height: 400rpx; + padding: 0 4%; + background: #fff; + border-bottom: 1rpx solid #f5f5f5; + display: flex; + flex-direction: column; + padding-top: 2%; } .notes view:nth-child(2)>text { - font-size: 28rpx; - color: #A9A9A9; - line-height: 56rpx; + font-size: 28rpx; + color: #a9a9a9; + line-height: 56rpx; } .spot { - width: 12rpx; - height: 12rpx; - display: inline-block; - background: #A9A9A9; - margin-right: 16rpx; - position: relative; - bottom: 4rpx; - border-radius: 50%; + width: 12rpx; + height: 12rpx; + display: inline-block; + background: #a9a9a9; + margin-right: 16rpx; + position: relative; + bottom: 4rpx; + border-radius: 50%; } .buy-view { - width: 100%; - padding: 10rpx; - /* position: fixed; */ - /* bottom: 0; */ - background: #fff; - box-sizing: border-box; + background: #fff; + position: fixed; + padding-top: 10rpx; + height:98rpx; + bottom: 0rpx; + left: 0; + right: 0; } .buy { - /* width: 100%; */ - height: 88rpx; - background: #00C0FF; - color: #fff; - font-size: 36rpx; - line-height: 88rpx; - border-radius: 0; -} \ No newline at end of file + background: #00c0ff; + height: 88rpx; + width: 98%; + margin: 0 auto; + color: #fff; + font-size: 36rpx; + line-height: 88rpx; + border-radius: 6rpx; +} diff --git a/pages/couponorder/detail/index.js b/pages/couponorder/detail/index.js index 045d674..a22ea5f 100644 --- a/pages/couponorder/detail/index.js +++ b/pages/couponorder/detail/index.js @@ -30,7 +30,7 @@ Page({ }).then(res => { console.log(res); that.setData({ - data: res.data.data + data: res.data }); that.setData({ expiredTime: util.fmtDate(that.data.data.expiredTime), @@ -44,9 +44,9 @@ Page({ phone: function() { let that = this; console.log(that.data); - if (that.data.data.merchantLinkPhone) { + if (that.data.merchantLinkPhone) { wx.makePhoneCall({ - phoneNumber: that.data.data.merchantLinkPhone //仅为示例,并非真实的电话号码 + phoneNumber: that.data.merchantLinkPhone //仅为示例,并非真实的电话号码 }); } } diff --git a/pages/couponorder/detail/index.wxml b/pages/couponorder/detail/index.wxml index a9e842c..7ea2bac 100644 --- a/pages/couponorder/detail/index.wxml +++ b/pages/couponorder/detail/index.wxml @@ -1,4 +1,3 @@ - @@ -23,7 +22,7 @@ - + diff --git a/pages/couponorder/index/index.js b/pages/couponorder/index/index.js index 5454db9..9f4fa0d 100644 --- a/pages/couponorder/index/index.js +++ b/pages/couponorder/index/index.js @@ -2,7 +2,6 @@ const format = require("../../../utils/util.js"); const config = require("../../../config/config.js"); const app = getApp(); const Http = require("../../../utils/HttpBasics"); -//1535126400000 Page({ data: { tabs: [ @@ -24,11 +23,11 @@ Page({ } ], list: [], - current: "", - current_scroll: "1" + current: "0", + current_scroll: "0" }, onLoad() { - this.getList(1, 1); + this.getList(0, 0); }, //点击跳转到券详情页面 diff --git a/pages/couponorder/index/index.wxml b/pages/couponorder/index/index.wxml index 6279fd5..b8c726b 100644 --- a/pages/couponorder/index/index.wxml +++ b/pages/couponorder/index/index.wxml @@ -4,29 +4,29 @@ + 没有优惠券哦 - - - - - - - {{item.title}} + + + - - 有效期至: - {{item.expiredTime}} + + + {{item.title}} + + + 有效期至: + {{item.expiredTime}} + + 立即使用 + 查看 - 立即使用 - 查看 - \ No newline at end of file diff --git a/pages/index/coupons/index.js b/pages/index/coupons/index.js index c3312ba..9aeb8e3 100644 --- a/pages/index/coupons/index.js +++ b/pages/index/coupons/index.js @@ -1,14 +1,13 @@ // pages/index/sw/index.js -let config = require('../../../config/config.js') -let Http = require('../../../utils/HttpBasics') -let app = getApp() +let config = require("../../../config/config.js"); +let Http = require("../../../utils/HttpBasics"); +let app = getApp(); +// 请求数据 Component({ /** * 组件的属性列表 */ - properties: { - - }, + properties: {}, /** * 组件的初始数据 @@ -16,34 +15,45 @@ Component({ data: { tabs: [], list: [], - current: '1', - current_scroll: '1', + current: "0", + current_scroll: "0", + pageNum: 1, // 设置加载的第几次,默认是第一次 + pageSize: 10, //返回数据的个数 + searchLoading: false, //"上拉加载"的变量,默认false,隐藏 + searchLoadingComplete: false //“没有数据”的变量,默认false,隐藏 }, - /** * 组件的方法列表 */ methods: { - handleChange({ - detail - }) { + handleChange({ detail }) { this.setData({ current: detail.key }); }, - - handleChangeScroll({ - detail - }) { + handleChangeScroll({ detail }) { this.setData({ current_scroll: detail.key }); }, + //滚动到底部触发事件 + searchScrollLower() { + // let that = this; + console.log("00000000"); + // if(that.data.searchLoading && !that.data.searchLoadingComplete){ + // that.setData({ + // searchPageNum: that.data.searchPageNum+1, + // isFromSearch: false + // }); + // that.fetchSearchList(); + // } + } }, + ready() { - var that = this - app.couponListCallback = token =>{ - Http.setToken(token) + var that = this; + app.couponListCallback = token => { + Http.setToken(token); // business获取 Http.get({ url: config.api.businessList, @@ -52,29 +62,29 @@ Component({ pageSize: 10, type: 1 } - }) - .then(res => { - console.log(res) - that.setData({ - tabs: res.data.list - }) - }) + }).then(res => { + console.log(res); + that.setData({ + tabs: res.data.list + }); + }); + // 券list获取 Http.get({ url: config.api.couponList, data: { pageNum: 1, - pageSize: 10 + pageSize: 20 } }).then(res => { console.log(res); that.setData({ list: res.data.list - }) - }) - } + }); + }); + }; if (app.globalData.token && app.globalData.token != null) { - app.couponListCallback(app.globalData.token) + app.couponListCallback(app.globalData.token); } } -}) \ No newline at end of file +}); diff --git a/pages/index/coupons/index.wxml b/pages/index/coupons/index.wxml index 10f8049..beb1c0a 100644 --- a/pages/index/coupons/index.wxml +++ b/pages/index/coupons/index.wxml @@ -2,7 +2,7 @@ - - - + + + \ No newline at end of file diff --git a/pages/index/index.js b/pages/index/index.js index 29f9fe7..a981cac 100644 --- a/pages/index/index.js +++ b/pages/index/index.js @@ -1,29 +1,27 @@ -const Http = require("../../utils/HttpBasics") +const Http = require("../../utils/HttpBasics"); //获取应用实例 -const app = getApp() +const app = getApp(); Page({ data: { market: app.globalData.market, imgUrls: [ - 'http://img02.tooopen.com/images/20150928/tooopen_sy_143912755726.jpg', - 'http://img06.tooopen.com/images/20160818/tooopen_sy_175866434296.jpg', - 'http://img06.tooopen.com/images/20160818/tooopen_sy_175833047715.jpg' + "http://img02.tooopen.com/images/20150928/tooopen_sy_143912755726.jpg", + "http://img06.tooopen.com/images/20160818/tooopen_sy_175866434296.jpg", + "http://img06.tooopen.com/images/20160818/tooopen_sy_175833047715.jpg" ], swiperCurrent: 0, scrollTop: 0 }, - swiperChange: function (e) { + swiperChange: function(e) { this.setData({ swiperCurrent: e.detail.current - }) + }); }, /** - * 生命周期函数--监听页面初次渲染完成 - */ - onReady: function () { - - }, - onLoad: function (options) { + * 生命周期函数--监听页面初次渲染完成 + */ + onReady: function() {}, + onLoad: function(options) { var that = this; if (app.globalData.token && app.globalData.token != null) { console.log("index ++ " + app.globalData.token); @@ -32,29 +30,30 @@ Page({ // 所以此处加入 callback 以防止这种情况 app.tokenCallback = token => { console.log("index + " + token); - } + }; } wx.showLoading({ - title: '加载中', - }) + title: "加载中" + }); var scene = decodeURIComponent(options.scene); var that = this; - setTimeout(function () { - wx.hideLoading() - }, 2200) + setTimeout(function() { + wx.hideLoading(); + }, 2200); }, + // 用户点击右上角分享 - onShareAppMessage: function () { + onShareAppMessage: function() { return { - title: '富茂链客', - desc: '分享个小程序,希望你喜欢', - success: function (res) { + title: "富茂链客", + desc: "分享个小程序,希望你喜欢", + success: function(res) { wx.showToast({ title: "分享成功", duration: 1000, icon: "success" - }) + }); } - } + }; } -}) +}); diff --git a/pages/index/index.json b/pages/index/index.json index d879c4e..ee618b4 100644 --- a/pages/index/index.json +++ b/pages/index/index.json @@ -1,13 +1,13 @@ { "usingComponents": { - "c-banner":"../../components/banner/index", - "c-rushToBuy":"./rushToBuy/index", - "c-coupons":"./coupons/index" - }, - "enablePullDownRefresh":false, + "c-banner": "../../components/banner/index", + "c-rushToBuy": "./rushToBuy/index", + "c-coupons": "./coupons/index" + }, + "enablePullDownRefresh": false, "navigationBarBackgroundColor": "#ffffff", "navigationBarTextStyle": "black", "navigationBarTitleText": "首页", "backgroundColor": "#eeeeee", "backgroundTextStyle": "light" -} \ No newline at end of file +} diff --git a/pages/index/index.wxml b/pages/index/index.wxml index 3e9ab84..4580098 100644 --- a/pages/index/index.wxml +++ b/pages/index/index.wxml @@ -1,9 +1,9 @@ - + diff --git a/pages/index/rushToBuy/index.js b/pages/index/rushToBuy/index.js index 62f492b..0875c64 100644 --- a/pages/index/rushToBuy/index.js +++ b/pages/index/rushToBuy/index.js @@ -1,75 +1,73 @@ // pages/index/sw/index.js -let config = require('../../../config/config.js') -let Http = require('../../../utils/HttpBasics') -const app = getApp() +let config = require("../../../config/config.js"); +let Http = require("../../../utils/HttpBasics"); +const app = getApp(); Component({ - /** - * 组件的属性列表 - */ - properties: { + /** + * 组件的属性列表 + */ + properties: {}, - }, + /** + * 组件的初始数据 + */ + data: { + list: [ + // { + // img: "http://img02.tooopen.com/images/20150928/tooopen_sy_143912755726.jpg", + // name: "海鲜焗饭", + // time: "2天12小时25分钟", + // oPrice: "59.00", + // pPrice: "1.00", + // }, + // { + // img: "http://img06.tooopen.com/images/20160818/tooopen_sy_175866434296.jpg", + // name: "海鲜焗饭", + // time: "2天12小时25分钟", + // oPrice: "59.00", + // pPrice: "1.00", + // }, + // { + // img: "http://img02.tooopen.com/images/20150928/tooopen_sy_143912755726.jpg", + // name: "海鲜焗饭", + // time: "2天12小时25分钟", + // oPrice: "59.00", + // pPrice: "1.00", + // }, + // { + // img: "http://img06.tooopen.com/images/20160818/tooopen_sy_175866434296.jpg", + // name: "海鲜焗饭", + // time: "2天12小时25分钟", + // oPrice: "59.00", + // pPrice: "1.00", + // }, + ] + }, - /** - * 组件的初始数据 - */ - data: { - list: [ - // { - // img: "http://img02.tooopen.com/images/20150928/tooopen_sy_143912755726.jpg", - // name: "海鲜焗饭", - // time: "2天12小时25分钟", - // oPrice: "59.00", - // pPrice: "1.00", - // }, - // { - // img: "http://img06.tooopen.com/images/20160818/tooopen_sy_175866434296.jpg", - // name: "海鲜焗饭", - // time: "2天12小时25分钟", - // oPrice: "59.00", - // pPrice: "1.00", - // }, - // { - // img: "http://img02.tooopen.com/images/20150928/tooopen_sy_143912755726.jpg", - // name: "海鲜焗饭", - // time: "2天12小时25分钟", - // oPrice: "59.00", - // pPrice: "1.00", - // }, - // { - // img: "http://img06.tooopen.com/images/20160818/tooopen_sy_175866434296.jpg", - // name: "海鲜焗饭", - // time: "2天12小时25分钟", - // oPrice: "59.00", - // pPrice: "1.00", - // }, - ] - }, - - /** - * 组件的方法列表 - */ - methods: { - }, - ready() { - app.couponChannelListCallback = token => { - console.log("couponChannelList init"); - Http.setToken(token); - Http.get({ - url: config.api.couponChannelList, - data: { - pageNum: 1, - pageSize: 10 - } - }).then(res => { - this.setData({ - list: res.data.list - }) - }) - } - if (app.globalData.token && app.globalData.token != null) { - console.log("couponChannelList init 1"); - app.couponChannelListCallback(app.globalData.token) + /** + * 组件的方法列表 + */ + methods: {}, + ready() { + app.couponChannelListCallback = token => { + console.log("couponChannelList init"); + Http.setToken(token); + Http.get({ + url: config.api.couponChannelList, + data: { + pageNum: 1, + pageSize: 10 } - } -}) \ No newline at end of file + }).then(res => { + console.log(res); + this.setData({ + list: res.data.list + }); + }); + }; + if (app.globalData.token && app.globalData.token != null) { + console.log("couponChannelList init 1"); + app.couponChannelListCallback(app.globalData.token); + } + } +}); diff --git a/pages/index/rushToBuy/index.wxml b/pages/index/rushToBuy/index.wxml index cb30d3c..e193931 100644 --- a/pages/index/rushToBuy/index.wxml +++ b/pages/index/rushToBuy/index.wxml @@ -3,13 +3,12 @@ - + - {{item.name}} - {{item.time}} + {{item.subTitle}} - ¥{{item.pPrice}} - ¥{{item.oPrice}} + ¥{{item.salePriceStr}} + ¥{{item.salePriceStr}} diff --git a/pages/index/rushToBuy/index.wxss b/pages/index/rushToBuy/index.wxss index 373cf35..1a01bd6 100644 --- a/pages/index/rushToBuy/index.wxss +++ b/pages/index/rushToBuy/index.wxss @@ -4,12 +4,11 @@ } .index-rushToBuy-title { - font-size: 36rpx; + font-size: 32rpx; color: #000000; letter-spacing: 0.75rpx; padding-top: 20rpx; padding-left: 30rpx; - padding-bottom: 30rpx } .index-scroll-view { @@ -41,7 +40,7 @@ } .index-scroll-view .commodity-info { - padding: 20rpx; + padding:5rpx 20rpx; overflow: hidden; } @@ -58,14 +57,9 @@ line-height: 42rpx; } -.index-scroll-view .commodity-info-price { - padding-top: 11rpx; -} - .index-scroll-view .commodity-info-price-p { - font-size: 36rpx; + font-size: 30rpx; color: #FF3434; - letter-spacing: 0.96rpx; } .index-scroll-view .commodity-info-price-o { display: inline-block; diff --git a/pages/user/index.js b/pages/user/index.js index f195a88..d978115 100644 --- a/pages/user/index.js +++ b/pages/user/index.js @@ -1,72 +1,56 @@ Page({ - /** * 页面的初始数据 */ data: { - user:{ - avatar:'http://img02.tooopen.com/images/20150928/tooopen_sy_143912755726.jpg' + user: { + avatar: + "http://img02.tooopen.com/images/20150928/tooopen_sy_143912755726.jpg" } }, - navigateTo(){ + navigateTo() { console.log("object"); wx.navigateTo({ - url: `../login/index`, - }) + url: `../login/index` + }); }, /** * 生命周期函数--监听页面加载 */ - onLoad: function (options) { - - }, + onLoad: function(options) {}, /** * 生命周期函数--监听页面初次渲染完成 */ - onReady: function () { - - }, + onReady: function() {}, /** * 生命周期函数--监听页面显示 */ - onShow: function () { - - }, + onShow: function() {}, /** * 生命周期函数--监听页面隐藏 */ - onHide: function () { - - }, + onHide: function() {}, /** * 生命周期函数--监听页面卸载 */ - onUnload: function () { - - }, + onUnload: function() {}, /** * 页面相关事件处理函数--监听用户下拉动作 */ - onPullDownRefresh: function () { - - }, + onPullDownRefresh: function() {}, /** * 页面上拉触底事件的处理函数 */ - onReachBottom: function () { - - }, + onReachBottom: function() {}, /** * 用户点击右上角分享 */ - onShareAppMessage: function () { - - } -}) \ No newline at end of file + onShareAppMessage: function() {} +}); diff --git a/typings/wx.d.ts b/typings/wx.d.ts new file mode 100644 index 0000000..a2ffc2b --- /dev/null +++ b/typings/wx.d.ts @@ -0,0 +1,2705 @@ +// generate time:2017-08-23 21:12:06 +// Type definitions for wx app +// Definitions by: hellopao + +/************************************************ +* * +* 微信小程序 API * +* * +************************************************/ + +interface IAnimation { + /** + * 透明度,参数范围 0~1 + */ + opacity(value: number): IAnimation; + /** + * 颜色值 + */ + backgroundColor(color: string): IAnimation; + /** + * 长度值,如果传入 Number 则默认使用 px,可传入其他自定义单位的长度值 + */ + width(length: number): IAnimation; + /** + * 长度值,如果传入 Number 则默认使用 px,可传入其他自定义单位的长度值 + */ + height(length: number): IAnimation; + /** + * 长度值,如果传入 Number 则默认使用 px,可传入其他自定义单位的长度值 + */ + top(length: number): IAnimation; + /** + * 长度值,如果传入 Number 则默认使用 px,可传入其他自定义单位的长度值 + */ + left(length: number): IAnimation; + /** + * 长度值,如果传入 Number 则默认使用 px,可传入其他自定义单位的长度值 + */ + bottom(length: number): IAnimation; + /** + * 长度值,如果传入 Number 则默认使用 px,可传入其他自定义单位的长度值 + */ + right(length: number): IAnimation; + /** + * deg的范围-180~180,从原点顺时针旋转一个deg角度 + */ + rotate(deg: number): IAnimation; + /** + * deg的范围-180~180,在X轴旋转一个deg角度 + */ + rotateX(deg: number): IAnimation; + /** + * deg的范围-180~180,在Y轴旋转一个deg角度 + */ + rotateY(deg: number): IAnimation; + /** + * deg的范围-180~180,在Z轴旋转一个deg角度 + */ + rotateZ(deg: number): IAnimation; + /** + * 同transform-function rotate3d + */ + rotate3d(x: number, y: number, z: number, deg: number): IAnimation; + /** + * 一个参数时,表示在X轴、Y轴同时缩放sx倍数;两个参数时表示在X轴缩放sx倍数,在Y轴缩放sy倍数 + */ + scale(sx: number, sy?: number): IAnimation; + /** + * 在X轴缩放sx倍数 + */ + scaleX(sx: number): IAnimation; + /** + * 在Y轴缩放sy倍数 + */ + scaleY(sy: number): IAnimation; + /** + * 在Z轴缩放sy倍数 + */ + scaleZ(sz: number): IAnimation; + /** + * 在X轴缩放sx倍数,在Y轴缩放sy倍数,在Z轴缩放sz倍数 + */ + scale3d(sx: number, sy: number, sz: number): IAnimation; + /** + * 一个参数时,表示在X轴偏移tx,单位px;两个参数时,表示在X轴偏移tx,在Y轴偏移ty,单位px。 + */ + translate(tx: number, ty?: number): IAnimation; + /** + * 在X轴偏移tx,单位px + */ + translateX(tx: number): IAnimation; + /** + * 在Y轴偏移tx,单位px + */ + translateY(tx: number): IAnimation; + /** + * 在Z轴偏移tx,单位px + */ + translateZ(tx: number): IAnimation; + /** + * 在X轴偏移tx,在Y轴偏移ty,在Z轴偏移tz,单位px + */ + translate3d(tx: number, ty: number, tz: number): IAnimation; + /** + * 参数范围-180~180;一个参数时,Y轴坐标不变,X轴坐标延顺时针倾斜ax度;两个参数时,分别在X轴倾斜ax度,在Y轴倾斜ay度 + */ + skew(ax: number, ay?: number): IAnimation; + /** + * 参数范围-180~180;Y轴坐标不变,X轴坐标延顺时针倾斜ax度 + */ + skewX(ax: number): IAnimation; + /** + * 参数范围-180~180;X轴坐标不变,Y轴坐标延顺时针倾斜ay度 + */ + skewY(ay: number): IAnimation; + /** + * 同transform-function matrix + */ + matrix(a, b, c, d, tx, ty): IAnimation; + /** + * 同transform-function matrix3d + */ + matrix3d(): IAnimation; +} + +interface ICanvasContext { + /** + * 设置填充色, 如果没有设置 fillStyle,默认颜色为 black。 + */ + setFillStyle(color: string): void; + /** + * 设置边框颜色, 如果没有设置 fillStyle,默认颜色为 black。 + */ + setStrokeStyle(color: string): void; + /** + * 设置阴影 + */ + setShadow(offsetX: number, offsetY: number, blur: number, color: string): void; + /** + * 创建一个线性的渐变颜色。需要使用 addColorStop() 来指定渐变点,至少要两个。 + */ + createLinearGradient(x0: number, y0: number, x1: number, y1: number): void; + /** + * 创建一个圆形的渐变颜色。 起点在圆心,终点在圆环。 需要使用 addColorStop() 来指定渐变点,至少要两个。 + */ + createCircularGradient(x: number, y: number, r: number): void; + /** + * 创建一个颜色的渐变点。小于最小 stop 的部分会按最小 stop 的 color 来渲染,大于最大 stop 的部分会按最大 stop 的 color 来渲染。需要使用 addColorStop() 来指定渐变点,至少要两个。 + */ + addColorStop(stop: number, color: string): void; + /** + * 设置线条端点的样式 + */ + setLineCap(lineCap: 'butt' | 'round' | 'square'): void; + /** + * 设置两线相交处的样式 + */ + setLineJoin(lineJoin: 'bevel' | 'round' | 'miter'): void; + /** + * 设置线条宽度 + */ + setLineWidth(lineWidth: number): void; + /** + * 设置最大倾斜 + */ + setMiterLimit(miterLimit: number): void; + /** + * 添加一个矩形路径到当前路径。 + */ + rect(x: number, y: number, width: number, height: number): void; + /** + * 填充一个矩形。用 setFillStyle() 设置矩形的填充色,如果没设置默认是黑色。 + */ + fillRect(x: number, y: number, width: number, height: number): void; + /** + * 一个矩形(非填充)。用 setFillStroke() 设置矩形线条的颜色,如果没设置默认是黑色。 + */ + strokeRect(x: number, y: number, width: number, height: number): void; + /** + * 在给定的矩形区域内,清除画布上的像素 + */ + clearRect(x: number, y: number, width: number, height: number): void; + /** + * 对当前路径进行填充 + */ + fill(): void; + /** + * 对当前路径进行描边 + */ + stroke(): void; + /** + * 开始一个路径 + */ + beginPath(): void; + /** + * 关闭一个路径 + */ + closePath(): void; + /** + * 把路径移动到画布中的指定点,但不创建线条。 + */ + moveTo(x: number, y: number): void; + /** + * 添加一个新点,然后在画布中创建从该点到最后指定点的线条。 + */ + lineTo(x: number, y: number): void; + /** + * 添加一个弧形路径到当前路径,顺时针绘制。 + */ + arc(x: number, y: number, radius: number, startAngle: number, sweepAngle: number): void; + /** + * 创建二次方贝塞尔曲线 + */ + quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): void; + /** + * 创建三次方贝塞尔曲线 + */ + bezierCurveTo(cpx1: number, cpy1: number, cpx2: number, cpy2: number, x: number, y: number): void; + /** + * 对横纵坐标进行缩放 + */ + scale(scaleWidth: number/**横坐标缩放的倍数1 = 100%,0.5 = 50%,2 = 200%,依次类 */, scaleHeight: number/** 纵坐标轴缩放的倍数1 = 100%,0.5 = 50%,2 = 200%,依次类 */): void; + /** + * 对坐标轴进行顺时针旋转 + */ + rotate(deg: number/**degrees * Math.PI/180;degrees范围为0~360;旋转角度,以弧度计 */): void; + /** + * 对坐标原点进行缩放 + */ + translate(x: number/**水平坐标平移量 */, y: number/**竖直坐标平移量 */): void; + /** + * 在画布上绘制被填充的文本 + */ + fillText(text: string, x: number, y: number): void; + /** + * 设置字体大小 + */ + setFontSize(fontSize: number): void; + /** + * 在画布上绘制图像 + */ + drawImage(imageResource: string, x: number, y: number, width: number, height: number): void; + /** + * 设置全局画笔透明度。 + */ + setGlobalAlpha(alpha: number): void; + /** + * 保存当前坐标轴的缩放、旋转、平移信息 + */ + save(): void; + /** + * 恢复之前保存过的坐标轴的缩放、旋转、平移信息 + */ + restore(): void; + /** + * 进行绘图 + */ + draw(): void; +} + +interface IAudioContext { + /** + * 播放 + */ + play: () => void; + /** + * 暂停 + */ + pause: () => void; + /** + * 跳转到指定位置,单位 s + */ + seek: (position: number) => void; +} + +interface IVideoContext { + /** + * 播放 + */ + play: () => void; + /** + * 暂停 + */ + pause: () => void; + /** + * 跳转到指定位置,单位 s + */ + seek: (position: number) => void; + /** + * 发送弹幕,danmu 包含两个属性 text, color。 + */ + sendDanmu: (danmu: {text: string; color: string;}) => void; +} + +interface IMapContext { + /** + * 获取当前地图中心的经纬度,返回的是 gcj02 坐标系,可以用于 wx.openLocation + */ + getCenterLocation: (obj: { + /** + * 接口调用成功的回调函数 ,res = { longitude: "经度", latitude: "纬度"} + */ + success?: (res: {longitude: string; latitude: string}) => void; + /** + * 接口调用失败的回调函数 + */ + fail?: () => void; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: () => void; + }) => void; + /** + * 将地图中心移动到当前定位点,需要配合map组件的show-location使用 + */ + moveToLocation: () => void; +} + +interface Application { + setData: (obj: any) => void; +} + +interface AppConstructor { + new (): Application; + (opts: { + /** + * 生命周期函数--监听小程序初始化 + */ + onLaunch?: () => void; + /** + * 生命周期函数--监听小程序显示 + */ + onShow?: () => void; + /** + * 生命周期函数--监听小程序隐藏 + */ + onHide?: () => void; + + [key: string]: any; + }): Application; +} + +declare var App: AppConstructor; +declare function getApp(): Application; + +declare function getCurrentPages(): Page[]; + +interface Page { + setData: (obj: any) => void; +} + +interface PageConstructor { + new (): Page; + (opts: { + /** + * 页面的初始数据 + */ + data?: any; + /** + * 页面的初始数据 + */ + onLoad?: () => void; + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady?: () => void; + /** + * 生命周期函数--监听页面显示 + */ + onShow?: () => void; + /** + * 生命周期函数--监听页面隐藏 + */ + onHide?: () => void; + /** + * 生命周期函数--监听页面卸载 + */ + onUnload?: () => void; + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefreash?: () => void; + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom?: () => void; + /** + * 用户点击右上角分享 + */ + onShareAppMessage?: () => { + /** + * 分享标题, 默认值当前小程序名称 + */ + title: string; + /** + * 分享描述, 默认值当前小程序名称 + */ + desc: string; + /** + * 分享路径 默认值当前页面 path ,必须是以 / 开头的完整路径 + */ + path: string; + }; + + [key: string]: any; + }): Page; +} + +declare var Page: PageConstructor; + +declare var wx: { + // # 网络 # + + request(obj: { + /** + * 开发者服务器接口地址 + */ + url: string; + /** + * 请求的参数 + */ + data?: any | string; + /** + * 设置请求的 header , header 中不能设置 Referer + */ + header?: any; + /** + * 默认为 GET,有效值:OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT + */ + method?: string; + /** + * 默认为 json。如果设置了 dataType 为 json,则会尝试对响应的数据做一次 JSON.parse + */ + dataType?: string; + /** + * 收到开发者服务成功返回的回调函数,res = {data: '开发者服务器返回的内容'} + */ + success?: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + /** + * 将本地资源上传到开发者服务器。如页面通过 wx.chooseImage 等接口获取到一个本地资源的临时文件路径后,可通过此接口将本地资源上传到指定服务器。客户端发起一个 HTTPS POST 请求,其中 content-type 为 multipart/form-data 。 + */ + uploadFile(obj: { + /** + * 开发者服务器 url + */ + url: string; + /** + * 要上传文件资源的路径 + */ + filePath: string; + /** + * 文件对应的 key , 开发者在服务器端通过这个 key 可以获取到文件二进制内容 + */ + name: string; + /** + * HTTP 请求 Header , header 中不能设置 Referer + */ + header?: any; + /** + * HTTP 请求中其他额外的 form data + */ + formData?: any; + /** + * 接口调用成功的回调函数 + */ + success?: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + /** + * 下载文件资源到本地。客户端直接发起一个 HTTP GET 请求,返回文件的本地临时路径。 + */ + downloadFile(obj: { + /** + * 下载资源的 url + */ + url: string; + /** + * HTTP 请求 Header + */ + header?: any; + /** + * 下载成功后以 tempFilePath 的形式传给页面,res = {tempFilePath: '文件的临时路径'} + */ + success?: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + /** + * 创建一个 WebSocket 连接;一个微信小程序同时只能有一个 WebSocket 连接,如果当前已存在一个 WebSocket 连接,会自动关闭该连接,并重新创建一个 WebSocket 连接。 + */ + connectSocket(obj: { + /** + * 开发者服务器接口地址,必须是 wss 协议,且域名必须是后台配置的合法域名 + */ + url: string; + /** + * 请求的数据 + */ + data?: any; + /** + * HTTP Header , header 中不能设置 Referer + */ + header?: any; + /** + * 默认是GET,有效值: OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT + */ + method?: string; + /** + * 子协议数组 + */ + protocols?: string[]; + /** + * 接口调用成功的回调函数 + */ + success?: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + /** + * 监听WebSocket连接打开事件。 + */ + onSocketOpen(callback: Function): void; + + /** + * 监听WebSocket错误。 + */ + onSocketError(callback: Function): void; + + /** + * 通过 WebSocket 连接发送数据,需要先 wx.connectSocket,并在 wx.onSocketOpen 回调之后才能发送。 + */ + sendSocketMessage(obj: { + /** + * 需要发送的内容 + */ + data: undefined; + /** + * 接口调用成功的回调函数 + */ + success?: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + /** + * 监听WebSocket接受到服务器的消息事件。 + */ + onSocketMessage(callback: Function): void; + + /** + * 关闭WebSocket连接。 + */ + closeSocket(obj: { + /** + * 一个数字值表示关闭连接的状态号,表示连接被关闭的原因。如果这个参数没有被指定,默认的取值是1000 (表示正常连接关闭) + */ + code?: number; + /** + * 一个可读的字符串,表示连接被关闭的原因。这个字符串必须是不长于123字节的UTF-8 文本(不是字符) + */ + reason?: string; + /** + * 接口调用成功的回调函数 + */ + success?: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + /** + * 监听WebSocket关闭。 + */ + onSocketClose(callback: Function): void; + + // # 媒体 # + + /** + * 从本地相册选择图片或使用相机拍照。 + */ + chooseImage(obj: { + /** + * 最多可以选择的图片张数,默认9 + */ + count?: number; + /** + * original 原图,compressed 压缩图,默认二者都有 + */ + sizeType?: string[]; + /** + * album 从相册选图,camera 使用相机,默认二者都有 + */ + sourceType?: string[]; + /** + * 成功则返回图片的本地文件路径列表 tempFilePaths + */ + success: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + /** + * 预览图片。 + */ + previewImage(obj: { + /** + * 当前显示图片的链接,不填则默认为 urls 的第一张 + */ + current?: string; + /** + * 需要预览的图片链接列表 + */ + urls: string[]; + /** + * 接口调用成功的回调函数 + */ + success?: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + /** + * 获取图片信息 + */ + getImageInfo(obj: { + /** + * 图片的路径,可以是相对路径,临时文件路径,存储文件路径,网络图片路径 + */ + src: string; + /** + * 接口调用成功的回调函数 + */ + success?: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + saveImageToPhotosAlbum(obj: { + /** + * 图片文件路径,可以是临时文件路径也可以是永久文件路径,不支持网络图片路径 + */ + filePath: string; + /** + * 接口调用成功的回调函数 + */ + success?: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + /** + * 开始录音。当主动调用wx.stopRecord,或者录音超过1分钟时自动结束录音,返回录音文件的临时文件路径。当用户离开小程序时,此接口无法调用。 + */ + startRecord(obj: { + /** + * 录音成功后调用,返回录音文件的临时文件路径,res = {tempFilePath: '录音文件的临时路径'} + */ + success?: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + /** + * ​ 主动调用停止录音。 + */ + stopRecord(): void; + + /** + * 开始播放语音,同时只允许一个语音文件正在播放,如果前一个语音文件还没播放完,将中断前一个语音播放。 + */ + playVoice(obj: { + /** + * 需要播放的语音文件的文件路径 + */ + filePath: string; + /** + * 接口调用成功的回调函数 + */ + success?: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + /** + * 暂停正在播放的语音。再次调用wx.playVoice播放同一个文件时,会从暂停处开始播放。如果想从头开始播放,需要先调用 wx.stopVoice。 + */ + pauseVoice(): void; + + /** + * 结束播放语音。 + */ + stopVoice(): void; + + /** + * 获取后台音乐播放状态。 + */ + getBackgroundAudioPlayerState(obj: { + /** + * 接口调用成功的回调函数 + */ + success?: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + /** + * 使用后台播放器播放音乐,对于微信客户端来说,只能同时有一个后台音乐在播放。当用户离开小程序后,音乐将暂停播放;当用户点击“显示在聊天顶部”时,音乐不会暂停播放;当用户在其他小程序占用了音乐播放器,原有小程序内的音乐将停止播放。 + */ + playBackgroundAudio(obj: { + /** + * 音乐链接,目前支持的格式有 m4a, aac, mp3, wav + */ + dataUrl: string; + /** + * 音乐标题 + */ + title?: string; + /** + * 封面URL + */ + coverImgUrl?: string; + /** + * 接口调用成功的回调函数 + */ + success?: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + /** + * 暂停播放音乐。 + */ + pauseBackgroundAudio(): void; + + /** + * 控制音乐播放进度。 + */ + seekBackgroundAudio(obj: { + /** + * 音乐位置,单位:秒 + */ + position: number; + /** + * 接口调用成功的回调函数 + */ + success?: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + /** + * 停止播放音乐。 + */ + stopBackgroundAudio(): void; + + /** + * 监听音乐播放。 + */ + onBackgroundAudioPlay(callback: Function): void; + + /** + * 监听音乐暂停。 + */ + onBackgroundAudioPause(callback: Function): void; + + /** + * 监听音乐停止。 + */ + onBackgroundAudioStop(callback: Function): void; + + getBackgroundAudioManager(): void; + + /** + * 创建并返回 audio 上下文 audioContext 对象 + */ + createAudioContext(audioId: string): IAudioContext; + + /** + * 拍摄视频或从手机相册中选视频,返回视频的临时文件路径。 + */ + chooseVideo(obj: { + /** + * album 从相册选视频,camera 使用相机拍摄,默认为:['album', 'camera'] + */ + sourceType?: string[]; + /** + * 拍摄视频最长拍摄时间,单位秒。最长支持 60 秒 + */ + maxDuration?: number; + /** + * 默认调起的为前置还是后置摄像头。front: 前置,back: 后置,默认 back + */ + camera?: string; + /** + * 接口调用成功,返回视频文件的临时文件路径,详见返回参数说明 + */ + success?: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + saveVideoToPhotosAlbum(obj: { + /** + * 视频文件路径,可以是临时文件路径也可以是永久文件路径 + */ + filePath: string; + /** + * 接口调用成功的回调函数 + */ + success?: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + /** + * 创建并返回 video 上下文 videoContext 对象 + */ + createVideoContext(videoId: string): IVideoContext; + + // # 文件 # + + /** + * 保存文件到本地。 + */ + saveFile(obj: { + /** + * 需要保存的文件的临时路径 + */ + tempFilePath: string; + /** + * 返回文件的保存路径,res = {savedFilePath: '文件的保存路径'} + */ + success?: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + /** + * 获取本地已保存的文件列表 + */ + getSavedFileList(obj: { + /** + * 接口调用成功的回调函数,返回结果见success返回参数说明 + */ + success?: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + /** + * 获取本地文件的文件信息。此接口只能用于获取已保存到本地的文件,若需要获取临时文件信息,请使用 wx.getFileInfo 接口。 + */ + getSavedFileInfo(obj: { + /** + * 文件路径 + */ + filePath: string; + /** + * 接口调用成功的回调函数,返回结果见success返回参数说明 + */ + success?: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + /** + * 删除本地存储的文件 + */ + removeSavedFile(obj: { + /** + * 需要删除的文件路径 + */ + filePath: string; + /** + * 接口调用成功的回调函数 + */ + success?: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + /** + * 新开页面打开文档,支持格式:doc, xls, ppt, pdf, docx, xlsx, pptx + */ + openDocument(obj: { + /** + * 文件路径,可通过 downFile 获得 + */ + filePath: string; + /** + * 文件类型,指定文件类型打开文件,有效值 doc, xls, ppt, pdf, docx, xlsx, pptx + */ + fileType?: string; + /** + * 接口调用成功的回调函数 + */ + success?: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + getFileInfo(obj: { + /** + * 本地文件路径 + */ + filePath: string; + /** + * 计算文件摘要的算法,默认值 md5,有效值:md5,sha1 + */ + digestAlgorithm?: string; + /** + * 接口调用成功的回调函数 + */ + success?: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + // # 数据缓存 # + + /** + * 将数据存储在本地缓存中指定的 key 中,会覆盖掉原来该 key 对应的内容,这是一个异步接口。 + */ + setStorage(obj: { + /** + * 本地缓存中的指定的 key + */ + key: string; + /** + * 需要存储的内容 + */ + data: any; + /** + * 接口调用成功的回调函数 + */ + success?: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + /** + * 将 data 存储在本地缓存中指定的 key 中,会覆盖掉原来该 key 对应的内容,这是一个同步接口。 + */ + setStorageSync(key: string, data: any, ): void; + + /** + * 从本地缓存中异步获取指定 key 对应的内容。 + */ + getStorage(obj: { + /** + * 本地缓存中的指定的 key + */ + key: string; + /** + * 接口调用的回调函数,res = {data: key对应的内容} + */ + success: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + /** + * 从本地缓存中同步获取指定 key 对应的内容。 + */ + getStorageSync(key: string): void; + + /** + * 异步获取当前storage的相关信息 + */ + getStorageInfo(obj: { + /** + * 接口调用的回调函数,详见返回参数说明 + */ + success: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + /** + * 同步获取当前storage的相关信息 + */ + getStorageInfoSync(): void; + + /** + * 从本地缓存中异步移除指定 key 。 + */ + removeStorage(obj: { + /** + * 本地缓存中的指定的 key + */ + key: string; + /** + * 接口调用的回调函数 + */ + success: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + /** + * 从本地缓存中同步移除指定 key 。 + */ + removeStorageSync(key: string): void; + + /** + * 清理本地数据缓存。 + */ + clearStorage(): void; + + /** + * 同步清理本地数据缓存 + */ + clearStorageSync(): void; + + // # 位置 # + + /** + * 获取当前的地理位置、速度。当用户离开小程序后,此接口无法调用;当用户点击“显示在聊天顶部”时,此接口可继续调用。 + */ + getLocation(obj: { + /** + * 默认为 wgs84 返回 gps 坐标,gcj02 返回可用于wx.openLocation的坐标 + */ + type?: string; + /** + * 接口调用成功的回调函数,返回内容详见返回参数说明。 + */ + success: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + /** + * 打开地图选择位置 + */ + chooseLocation(obj: { + /** + * 接口调用成功的回调函数,返回内容详见返回参数说明。 + */ + success: Function; + /** + * 用户取消时调用 + */ + cancel?: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + /** + * ​ 使用微信内置地图查看位置 + */ + openLocation(obj: { + /** + * 纬度,范围为-90~90,负数表示南纬 + */ + latitude: number; + /** + * 经度,范围为-180~180,负数表示西经 + */ + longitude: number; + /** + * 缩放比例,范围5~18,默认为18 + */ + scale?: number; + /** + * 位置名 + */ + name?: string; + /** + * 地址的详细说明 + */ + address?: string; + /** + * 接口调用成功的回调函数 + */ + success?: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + /** + * 创建并返回 map 上下文 mapContext 对象 + */ + createMapContext(mapId: string): IMapContext; + + // # 设备 # + + /** + * 获取系统信息。 + */ + getSystemInfo(obj: { + /** + * 接口调用成功的回调 + */ + success: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + /** + * 获取系统信息同步接口 + */ + getSystemInfoSync(): void; + + /** + * 获取网络类型。 + */ + getNetworkType(obj: { + /** + * 接口调用成功,返回网络类型 networkType + */ + success: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + onNetworkStatusChange(callback: Function): void; + + setScreenBrightness(obj: { + /** + * 屏幕亮度值,范围 0~1,0 最暗,1 最亮 + */ + value: number; + /** + * 接口调用成功 + */ + success?: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + getScreenBrightness(obj: { + /** + * 接口调用成功 + */ + success?: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + vibrateLong(obj: { + /** + * 接口调用成功的回调函数 + */ + success?: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + vibrateShort(obj: { + /** + * 接口调用成功的回调函数 + */ + success?: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + /** + * 监听加速度数据,频率:5次/秒,接口调用后会自动开始监听,可使用 wx.stopAccelerometer 停止监听。 + */ + onAccelerometerChange(callback: Function): void; + + startAccelerometer(obj: { + /** + * 接口调用成功的回调函数 + */ + success?: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + stopAccelerometer(obj: { + /** + * 接口调用成功的回调函数 + */ + success?: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + /** + * 监听罗盘数据,频率:5次/秒,接口调用后会自动开始监听,可使用wx.stopCompass停止监听。 + */ + onCompassChange(callback: Function): void; + + startCompass(obj: { + /** + * 接口调用成功的回调函数 + */ + success?: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + stopCompass(obj: { + /** + * 接口调用成功的回调函数 + */ + success?: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + makePhoneCall(obj: { + /** + * 需要拨打的电话号码 + */ + phoneNumber: string; + /** + * 接口调用成功的回调 + */ + success?: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + /** + * 调起客户端扫码界面,扫码成功后返回对应的结果 + */ + scanCode(obj: { + /** + * 是否只能从相机扫码,不允许从相册选择图片 + */ + onlyFromCamera?: boolean; + /** + * 接口调用成功的回调函数,返回内容详见返回参数说明。 + */ + success?: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + setClipboardData(obj: { + /** + * 需要设置的内容 + */ + data: string; + /** + * 接口调用成功的回调函数 + */ + success?: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + getClipboardData(obj: { + /** + * 接口调用成功的回调函数 + */ + success?: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + openBluetoothAdapter(obj: { + /** + * 成功则返回成功初始化信息 + */ + success: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + closeBluetoothAdapter(obj: { + /** + * 成功则返回成功关闭模块信息 + */ + success: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + getBluetoothAdapterState(obj: { + /** + * 成功则返回本机蓝牙适配器状态 + */ + success: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + onBluetoothAdapterStateChange(callback: Function): void; + + startBluetoothDevicesDiscovery(obj: { + /** + * 蓝牙设备主 service 的 uuid 列表 + */ + services?: Array; + /** + * 是否允许重复上报同一设备, 如果允许重复上报,则onDeviceFound 方法会多次上报同一设备,但是 RSSI 值会有不同 + */ + allowDuplicatesKey?: boolean; + /** + * 上报设备的间隔,默认为0,意思是找到新设备立即上报,否则根据传入的间隔上报 + */ + interval?: number; + /** + * 成功则返回本机蓝牙适配器状态 + */ + success: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + stopBluetoothDevicesDiscovery(obj: { + /** + * 成功则返回本机蓝牙适配器状态 + */ + success: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + getBluetoothDevices(obj: { + /** + * 成功则返回本机蓝牙适配器状态 + */ + success: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + onBluetoothDeviceFound(callback: Function): void; + + getConnectedBluetoothDevices(obj: { + /** + * 蓝牙设备主 service 的 uuid 列表 + */ + services: Array; + /** + * 成功则返回本机蓝牙适配器状态 + */ + success: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + createBLEConnection(obj: { + /** + * 蓝牙设备 id,参考 getDevices 接口 + */ + deviceId: string; + /** + * 成功则返回本机蓝牙适配器状态 + */ + success: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + closeBLEConnection(obj: { + /** + * 蓝牙设备 id,参考 getDevices 接口 + */ + deviceId: string; + /** + * 成功则返回本机蓝牙适配器状态 + */ + success: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + getBLEDeviceServices(obj: { + /** + * 蓝牙设备 id,参考 getDevices 接口 + */ + deviceId: string; + /** + * 成功则返回本机蓝牙适配器状态 + */ + success: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + getBLEDeviceCharacteristics(obj: { + /** + * 蓝牙设备 id,参考 device 对象 + */ + deviceId: string; + /** + * 蓝牙服务 uuid + */ + serviceId: string; + /** + * 成功则返回本机蓝牙适配器状态 + */ + success: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + readBLECharacteristicValue(obj: { + /** + * 蓝牙设备 id,参考 device 对象 + */ + deviceId: string; + /** + * 蓝牙特征值对应服务的 uuid + */ + serviceId: string; + /** + * 蓝牙特征值的 uuid + */ + characteristicId: string; + /** + * 成功则返回本机蓝牙适配器状态 + */ + success: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + writeBLECharacteristicValue(obj: { + /** + * 蓝牙设备 id,参考 device 对象 + */ + deviceId: string; + /** + * 蓝牙特征值对应服务的 uuid + */ + serviceId: string; + /** + * 蓝牙特征值的 uuid + */ + characteristicId: string; + /** + * 蓝牙设备特征值对应的二进制值(注意:vConsole 无法打印出 ArrayBuffer 类型数据) + */ + value: undefined; + /** + * 成功则返回本机蓝牙适配器状态 + */ + success: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + notifyBLECharacteristicValueChange(obj: { + /** + * 蓝牙设备 id,参考 device 对象 + */ + deviceId: string; + /** + * 蓝牙特征值对应服务的 uuid + */ + serviceId: string; + /** + * 蓝牙特征值的 uuid + */ + characteristicId: string; + /** + * true: 启用 notify; false: 停用 notify + */ + state: boolean; + /** + * 成功则返回本机蓝牙适配器状态 + */ + success: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + onBLEConnectionStateChange(callback: Function): void; + + onBLECharacteristicValueChange(callback: Function): void; + + startBeaconDiscovery(obj: { + /** + * iBeacon设备广播的 uuids + */ + uuids: string[]; + /** + * 接口调用成功的回调函数 + */ + success?: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + stopBeaconDiscovery(obj: { + /** + * 接口调用成功的回调函数 + */ + success?: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + getBeacons(obj: { + /** + * 接口调用成功的回调函数 + */ + success?: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + onBeaconUpdate(callback: Function): void; + + onBeaconServiceChange(callback: Function): void; + + onUserCaptureScreen(callback: Function): void; + + addPhoneContact(obj: { + /** + * 头像本地文件路径 + */ + photoFilePath?: string; + /** + * 昵称 + */ + nickName?: string; + /** + * 姓氏 + */ + lastName?: string; + /** + * 中间名 + */ + middleName?: string; + /** + * 名字 + */ + firstName: string; + /** + * 备注 + */ + remark?: string; + /** + * 手机号 + */ + mobilePhoneNumber?: string; + /** + * 微信号 + */ + weChatNumber?: string; + /** + * 联系地址国家 + */ + addressCountry?: string; + /** + * 联系地址省份 + */ + addressState?: string; + /** + * 联系地址城市 + */ + addressCity?: string; + /** + * 联系地址街道 + */ + addressStreet?: string; + /** + * 联系地址邮政编码 + */ + addressPostalCode?: string; + /** + * 公司 + */ + organization?: string; + /** + * 职位 + */ + title?: string; + /** + * 工作传真 + */ + workFaxNumber?: string; + /** + * 工作电话 + */ + workPhoneNumber?: string; + /** + * 公司电话 + */ + hostNumber?: string; + /** + * 电子邮件 + */ + email?: string; + /** + * 网站 + */ + url?: string; + /** + * 工作地址国家 + */ + workAddressCountry?: string; + /** + * 工作地址省份 + */ + workAddressState?: string; + /** + * 工作地址城市 + */ + workAddressCity?: string; + /** + * 工作地址街道 + */ + workAddressStreet?: string; + /** + * 工作地址邮政编码 + */ + workAddressPostalCode?: string; + /** + * 住宅传真 + */ + homeFaxNumber?: string; + /** + * 住宅电话 + */ + homePhoneNumber?: string; + /** + * 住宅地址国家 + */ + homeAddressCountry?: string; + /** + * 住宅地址省份 + */ + homeAddressState?: string; + /** + * 住宅地址城市 + */ + homeAddressCity?: string; + /** + * 住宅地址街道 + */ + homeAddressStreet?: string; + /** + * 住宅地址邮政编码 + */ + homeAddressPostalCode?: string; + /** + * 接口调用成功 + */ + success?: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + // # 界面 # + + /** + * 显示消息提示框 + */ + showToast(obj: { + /** + * 提示的内容 + */ + title: string; + /** + * 图标,有效值 "success", "loading" + */ + icon?: string; + /** + * 自定义图标的本地路径,image 的优先级高于 icon + */ + image?: string; + /** + * 提示的延迟时间,单位毫秒,默认:1500 + */ + duration?: number; + /** + * 是否显示透明蒙层,防止触摸穿透,默认:false + */ + mask?: boolean; + /** + * 接口调用成功的回调函数 + */ + success?: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + showLoading(obj: { + /** + * 提示的内容 + */ + title: string; + /** + * 是否显示透明蒙层,防止触摸穿透,默认:false + */ + mask?: boolean; + /** + * 接口调用成功的回调函数 + */ + success?: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + /** + * 隐藏消息提示框 + */ + hideToast(): void; + + hideLoading(): void; + + /** + * ​显示模态弹窗 + */ + showModal(obj: { + /** + * 提示的标题 + */ + title: string; + /** + * 提示的内容 + */ + content: string; + /** + * 是否显示取消按钮,默认为 true + */ + showCancel?: boolean; + /** + * 取消按钮的文字,默认为"取消",最多 4 个字符 + */ + cancelText?: string; + /** + * 取消按钮的文字颜色,默认为"#000000" + */ + cancelColor?: undefined; + /** + * 确定按钮的文字,默认为"确定",最多 4 个字符 + */ + confirmText?: string; + /** + * 确定按钮的文字颜色,默认为"#3CC51F" + */ + confirmColor?: undefined; + /** + * 接口调用成功的回调函数 + */ + success?: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + /** + * ​显示操作菜单 + */ + showActionSheet(obj: { + /** + * 按钮的文字数组,数组长度最大为6个 + */ + itemList: undefined; + /** + * 按钮的文字颜色,默认为"#000000" + */ + itemColor?: undefined; + /** + * 接口调用成功的回调函数,详见返回参数说明 + */ + success?: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + setTopBarText(obj: { + /** + * 置顶栏文字内容 + */ + text: string; + /** + * 接口调用成功的回调函数 + */ + success?: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + /** + * 动态设置当前页面的标题。 + */ + setNavigationBarTitle(obj: { + /** + * 页面标题 + */ + title: string; + /** + * 接口调用成功的回调函数 + */ + success?: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + /** + * 在当前页面显示导航条加载动画。 + */ + showNavigationBarLoading(): void; + + /** + * 隐藏导航条加载动画。 + */ + hideNavigationBarLoading(): void; + + /** + * 保留当前页面,跳转到应用内的某个页面,使用wx.navigateBack可以返回到原页面。 + */ + navigateTo(obj: { + /** + * 需要跳转的应用内非 tabBar 的页面的路径 , 路径后可以带参数。参数与路径之间使用?分隔,参数键与参数值用=相连,不同参数用&分隔;如 'path?key=value&key2=value2' + */ + url: string; + /** + * 接口调用成功的回调函数 + */ + success?: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + /** + * 关闭当前页面,跳转到应用内的某个页面。 + */ + redirectTo(obj: { + /** + * 需要跳转的应用内非 tabBar 的页面的路径,路径后可以带参数。参数与路径之间使用?分隔,参数键与参数值用=相连,不同参数用&分隔;如 'path?key=value&key2=value2' + */ + url: string; + /** + * 接口调用成功的回调函数 + */ + success?: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + reLaunch(obj: { + /** + * 需要跳转的应用内页面路径 , 路径后可以带参数。参数与路径之间使用?分隔,参数键与参数值用=相连,不同参数用&分隔;如 'path?key=value&key2=value2',如果跳转的页面路径是 tabBar 页面则不能带参数 + */ + url: string; + /** + * 接口调用成功的回调函数 + */ + success?: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + /** + * 跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面 + */ + switchTab(obj: { + /** + * 需要跳转的 tabBar 页面的路径(需在 app.json 的 tabBar 字段定义的页面),路径后不能带参数 + */ + url: string; + /** + * 接口调用成功的回调函数 + */ + success?: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + /** + * 关闭当前页面,返回上一页面或多级页面。可通过 getCurrentPages()) 获取当前的页面栈,决定需要返回几层。 + */ + navigateBack(obj: { + /** + * 返回的页面数,如果 delta 大于现有页面数,则返回到首页。 + */ + delta?: number; + }): void; + + /** + * 创建一个动画实例animation。调用实例的方法来描述动画。最后通过动画实例的export方法导出动画数据传递给组件的animation属性。 + */ + createAnimation(obj: { + /** + * 400 + */ + duration?: number; + /** + * "linear" + */ + timingFunction?: string; + /** + * 0 + */ + delay?: number; + /** + * "50% 50% 0" + */ + transformOrigin?: string; + }): IAnimation; + + pageScrollTo(obj: { + /** + * 滚动到页面的目标位置(单位px) + */ + scrollTop: number; + }): void; + + /** + * 创建 canvas 绘图上下文(指定 canvasId).Tip: 需要指定 canvasId,该绘图上下文只作用于对应的 + */ + createCanvasContext(canvasId: string): ICanvasContext; + + /** + * 把当前画布的内容导出生成图片,并返回文件路径 + */ + canvasToTempFilePath(canvasId: string): void; + + startPullDownRefresh(obj: { + /** + * 接口调用成功的回调函数 + */ + success?: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + /** + * 停止当前页面下拉刷新。 + */ + stopPullDownRefresh(): void; + + // # WXML节点信息 # + + // # 第三方平台 # + + getExtConfig(obj: { + /** + * 返回第三方平台自定义的数据 + */ + success?: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + getExtConfigSync(): void; + + // # 开放接口 # + + /** + * 调用接口获取登录凭证(code)进而换取用户登录态信息,包括用户的唯一标识(openid) 及本次登录的 会话密钥(session_key)。用户数据的加解密通讯需要依赖会话密钥完成。 + */ + login(obj: { + /** + * 接口调用成功的回调函数 + */ + success?: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + /** + * 通过上述接口获得的用户登录态拥有一定的时效性。用户越久未使用小程序,用户登录态越有可能失效。反之如果用户一直在使用小程序,则用户登录态一直保持有效。具体时效逻辑由微信维护,对开发者透明。开发者只需要调用wx.checkSession接口检测当前用户登录态是否有效。登录态过期后开发者可以再调用wx.login获取新的用户登录态。 + */ + checkSession(obj: { + /** + * 接口调用成功的回调函数,登录态未过期 + */ + success?: Function; + /** + * 接口调用失败的回调函数,登录态已过期 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + authorize(obj: { + /** + * 需要获取权限的scope,详见 scope 列表 + */ + scope: string; + /** + * 接口调用成功的回调函数 + */ + success?: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + /** + * 获取用户信息,withCredentials 为 true 时需要先调用 wx.login 接口。 + */ + getUserInfo(obj: { + /** + * 是否带上登录态信息 + */ + withCredentials?: boolean; + /** + * 指定返回用户信息的语言,zh_CN 简体中文,zh_TW 繁体中文,en 英文 + */ + lang?: string; + /** + * 接口调用成功的回调函数 + */ + success?: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + /** + * 发起微信支付。 + */ + requestPayment(obj: { + /** + * 时间戳从1970年1月1日00:00:00至今的秒数,即当前的时间 + */ + timeStamp: string; + /** + * 随机字符串,长度为32个字符以下。 + */ + nonceStr: string; + /** + * 统一下单接口返回的 prepay_id 参数值,提交格式如:prepay_id=* + */ + package: string; + /** + * 签名算法,暂支持 MD5 + */ + signType: string; + /** + * 签名,具体签名方案参见小程序支付接口文档; + */ + paySign: string; + /** + * 接口调用成功的回调函数 + */ + success?: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + chooseAddress(obj: { + /** + * 返回用户选择的收货地址信息 + */ + success?: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + addCard(obj: { + /** + * 需要添加的卡券列表,列表内对象说明请参见请求对象说明 + */ + cardList: undefined; + /** + * 接口调用成功的回调函数 + */ + success?: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + openCard(obj: { + /** + * 需要打开的卡券列表,列表内参数详见openCard 请求对象说明 + */ + cardList: undefined; + /** + * 接口调用成功的回调函数 + */ + success?: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + openSetting(obj: { + /** + * 接口调用成功的回调函数,返回内容详见返回参数说明。 + */ + success?: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + getSetting(obj: { + /** + * 接口调用成功的回调函数,返回内容详见返回参数说明。 + */ + success?: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + getWeRunData(obj: { + /** + * 接口调用成功的回调函数 + */ + success?: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + navigateToMiniProgram(obj: { + /** + * 要打开的小程序 appId + */ + appId: string; + /** + * 打开的页面路径,如果为空则打开首页 + */ + path?: string; + /** + * 需要传递给目标小程序的数据,目标小程序可在 App.onLaunch(),App.onShow() 中获取到这份数据。详情 + */ + extraData?: any; + /** + * 要打开的小程序版本,有效值 develop(开发版),trial(体验版),release(正式版) ,仅在当前小程序为开发版或体验版时此参数有效;如果当前小程序是体验版或正式版,则打开的小程序必定是正式版。默认值 release + */ + envVersion?: string; + /** + * 接口调用成功的回调函数 + */ + success?: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + chooseInvoiceTitle(obj: { + /** + * 接口调用成功的回调函数 + */ + success?: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + checkIsSupportSoterAuthentication(obj: { + /** + * 接口调用成功的回调函数 + */ + success?: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + + // # 数据 # + + /** + * 自定义分析数据上报接口。使用前,需要在小程序管理后台自定义分析中新建事件,配置好事件名与字段。 + */ + reportAnalytics(eventName: string, data: string, ): void; + + // # 拓展接口 # + + arrayBufferToBase64(arrayBuffer: string): void; + + base64ToArrayBuffer(base64: string): void; + + // # 调试接口 # + + setEnableDebug(obj: { + /** + * 是否打开调试 + */ + enableDebug: boolean; + /** + * 接口调用成功的回调函数 + */ + success?: Function; + /** + * 接口调用失败的回调函数 + */ + fail?: Function; + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + complete?: Function; + }): void; + +} \ No newline at end of file