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