提交源代码“

首次提交
git
git commit -m 首次提交,提交源代码“
上级 658e73d8

要显示的变更太多。

To preserve performance only 1000 of 1000+ files are displayed.
# 云开发 quickstart
这是云开发的快速启动指引,其中演示了如何上手使用云开发的三大基础能力:
- 数据库:一个既可在小程序前端操作,也能在云函数中读写的 JSON 文档型数据库
- 文件存储:在小程序前端直接上传/下载云端文件,在云开发控制台可视化管理
- 云函数:在云端运行的代码,微信私有协议天然鉴权,开发者只需编写业务逻辑代码
## 参考文档
- [云开发文档](https://developers.weixin.qq.com/miniprogram/dev/wxcloud/basis/getting-started.html)
App({
onLaunch: function () {
// 展示本地存储能力
var logs = wx.getStorageSync('logs') || []
logs.unshift(Date.now())
wx.setStorageSync('logs', logs);
// this.overShare();
},
onShow: function (options) {
console.log(options);
// if (options.scene == 1028) { // TODO 暂时写死用于测试当前用户是会员并且从卡包进入小程序,小程序发布后则直接从options.query获取card_id和code
// options.query = {
// card_id: 'p1uoyw6ScJsvTlFSHqVsEXcCIpCc', // 测试时需要测试人员在nbr插入会员卡数据
// code: '003454947843' //
// };
// console.log('app.js->option.query:->' + JSON.stringify(options.query));
// } else if (options.scene == 1007) {// TODO 暂时写死用于测试当前用于不是会员并且从好友分享进入小程序,小程序发布后则直接从options.query获取card_id和code
// options.query = {
// card_id: 'p1uoyw6NFBFdiHK8mk84tPBkqqbc', // 测试时需要测试人员在nbr插入会员卡数据
// code: ''
// };
// console.log('app.js->option.query:->' + JSON.stringify(options.query));
// }else{ // TODO 用于通过微信下滑搜索途径进入小程序
// options.query = {
// card_id: '',
// code: '' //
// };
// console.log('app.js->option.query:->' + JSON.stringify(options.query));
// }
let resultScene = this.sceneInfo(options, options.scene);
console.log('resultScene:->' + resultScene);
},
//场景值判断
sceneInfo: function (options, scene) {
var result = [];
switch (scene) {
case 1001:
result.push(scene, "发现栏小程序主入口");
//
// wx.setStorage({ // 把card_id写入缓存
// key: 'storageVipCardID',
// data: options.query.card_id
// });
// wx.setStorage({ // 把code写入缓存
// key: 'storageCode',
// data: options.query.code
// });
break;
case 1005:
result.push(scene, "顶部搜索框的搜索结果页");
break;
case 1006:
result.push(scene, "发现栏小程序主入口搜索框的搜索结果页");
break;
case 1007:
result.push(scene, "单人聊天会话中的小程序消息卡片");
//
wx.setStorage({ // 把card_id写入缓存
key: 'storageVipCardID',
data: options.query.card_id
});
wx.setStorage({ // 把code写入缓存
key: 'storageCode',
data: options.query.code
});
break;
case 1008:
result.push(scene, "群聊会话中的小程序消息卡片");
break;
case 1011:
result.push(scene, "扫描二维码");
break;
case 1012:
result.push(scene, "长按图片识别二维码");
break;
case 1014:
result.push(scene, "手机相册选取二维码");
break;
case 1017:
result.push(scene, "前往体验版的入口页");
break;
case 1019:
result.push(scene, "微信钱包");
break;
case 1020:
result.push(scene, "公众号profile页相关小程序列表");
break;
case 1022:
result.push(scene, "聊天顶部置顶小程序入口");
break;
case 1023:
result.push(scene, "安卓系统桌面图标");
break;
case 1024:
result.push(scene, "小程序profile页");
break;
case 1025:
result.push(scene, "扫描一维码");
break;
case 1026:
result.push(scene, "附近小程序列表");
break;
case 1027:
result.push(scene, "顶部搜索框搜索结果页“使用过的小程序”列表");
break;
case 1028:
result.push(scene, "我的卡包");
// 因为小程序还没有发布,暂时把"scene=1001"当做是从我的卡包进入小程序
wx.setStorage({ // 把card_id写入缓存
key: 'storageVipCardID',
data: options.query.card_id
});
wx.setStorage({ // 把code写入缓存
key: 'storageCode',
data: options.query.code
});
break;
case 1029:
result.push(scene, "卡券详情页");
// 因为小程序还没有发布,暂时把"scene=1001"当做是从卡券详情页进入小程序
wx.setStorage({ // 把card_id写入缓存
key: 'storageVipCardID',
data: options.query.card_id
});
wx.setStorage({ // 把code写入缓存
key: 'storageCode',
data: options.query.code
});
break;
case 1031:
result.push(scene, "长按图片识别一维码");
break;
case 1032:
result.push(scene, "手机相册选取一维码");
break;
case 1034:
result.push(scene, "微信支付完成页");
break;
case 1035:
result.push(scene, "公众号自定义菜单");
break;
case 1036:
result.push(scene, "App分享消息卡片");
break;
case 1037:
result.push(scene, "小程序打开小程序");
break;
case 1038:
result.push(scene, "从另一个小程序返回");
break;
case 1039:
result.push(scene, "摇电视");
break;
case 1042:
result.push(scene, "添加好友搜索框的搜索结果页");
break;
case 1044:
result.push(scene, "带shareTicket的小程序消息卡片");
break;
case 1047:
result.push(scene, "扫描小程序码");
break;
case 1048:
result.push(scene, "长按图片识别小程序码");
break;
case 1049:
result.push(scene, "手机相册选取小程序码");
break;
case 1052:
result.push(scene, "卡券的适用门店列表");
break;
case 1053:
result.push(scene, "搜一搜的结果页");
break;
case 1054:
result.push(scene, "顶部搜索框小程序快捷入口");
break;
case 1056:
result.push(scene, "音乐播放器菜单");
break;
case 1058:
result.push(scene, "公众号文章");
break;
case 1059:
result.push(scene, "体验版小程序绑定邀请页");
break;
case 1064:
result.push(scene, "微信连Wifi状态栏");
break;
case 1067:
result.push(scene, "公众号文章广告");
break;
case 1068:
result.push(scene, "附近小程序列表广告");
break;
case 1072:
result.push(scene, "二维码收款页面");
break;
case 1073:
result.push(scene, "客服消息列表下发的小程序消息卡片");
break;
case 1074:
result.push(scene, "公众号会话下发的小程序消息卡片");
break;
case 1089:
result.push(scene, "微信聊天主界面下拉");
break;
case 1090:
result.push(scene, "长按小程序右上角菜单唤出最近使用历史");
break;
case 1092:
result.push(scene, "城市服务入口");
break;
default:
result.push(scene, "未知入口");
break;
}
return result;
}, // 其中只有在传递 1020、1035、1036、1037、1038、1043 这几个场景值时,才会返回referrerInfo.appId
//
globalData: {
userInfo: null,
header: {
// 'content-type': 'application/x-www-form-urlencoded',
'content-Type': 'application/json;charset=UTF-8',
// 'content-type': 'application/json', // 默认值
'X-Requested-With': 'XMLHttpRequest',
'cookie': ''
},
openid: '',
phone: '',
unionID: '',
authSetting: {},
version: '', // 微信版本号
terminal: '', // 操作系统版本
accessToken: '' //小程序的Token
},
//session过期后重新登录
afreshLogin: function (loginUrl) {
console.log("session过期了");
wx.showModal({
title: '提示',
content: '登录过期,将自动重新登录',
showCancel: false,
success (res) {
if (res.confirm) {
wx.reLaunch({
url: loginUrl,
fail: function () {
wx.showToast({
title: '重新登录失败,请重新进入小程序',
icon: 'none',
duration: 2000,
mask: true
})
}
})
}
},
fail (res) {
wx.showToast({
title: '登录过期,请重新进入小程序',
icon: 'none',
duration: 2000,
mask: true
})
}
})
}
})
\ No newline at end of file
{
"pages": [
"pages/login/login",
"pages/index/index",
"pages/details/selectShop/selectShop",
"pages/details/myCoupon/myCoupon",
"pages/details/myCoupon/details/details",
"pages/details/vipCardSn/vipCardSn",
"pages/details/bonusShop/bonusShop",
"pages/details/coupon/coupon",
"pages/details/coupon/details/details",
"pages/details/userCenter/userCenter",
"pages/details/retailtrade/retailtrade",
"pages/details/bonusHistory/bonusHistory",
"pages/logs/logs"
],
"window": {
"backgroundTextStyle": "light",
"navigationBarBackgroundColor": "#F2F2F2",
"navigationBarTitleText": "WeChat",
"navigationBarTextStyle": "black"
},
"networkTimeout": {
"request": 2000000,
"connectSocket": 20000,
"uploadFile": 20000,
"downloadFile": 20000
},
"sitemapLocation": "sitemap.json",
"navigateToMiniProgramAppIdList": [
"wxeb490c6f9b154ef9"
]
}
\ No newline at end of file
/**app.wxss**/
.container {
height: 100%;
display: flex;
flex-direction: column;
align-items: center;
justify-content: space-between;
/* padding: 200rpx 0; */
box-sizing: border-box;
}
<?xml version="1.0" encoding="UTF-8"?>
<svg width="32px" height="31px" viewBox="0 0 32 31" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 59.1 (86144) - https://sketch.com -->
<title>bill</title>
<desc>Created with Sketch.</desc>
<g id="iOS" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="(登录前)首页" transform="translate(-171.000000, -392.000000)">
<g id="组件/菜单/按钮菜单" transform="translate(5.000000, 378.000000)">
<g id="图标" transform="translate(159.000000, 13.000000)">
<g id="icon/积分商城" transform="translate(7.000000, 1.000000)">
<g id="bill">
<path d="M10.6666667,17.5445238 C10.6666667,19.390396 11.6831942,21.0960523 13.3333333,22.0189885 C14.9834724,22.9419246 17.0165276,22.9419246 18.6666667,22.0189885 C20.3168058,21.0960523 21.3333333,19.390396 21.3333333,17.5445238 C21.3333333,14.6910526 18.9455187,12.3778571 16,12.3778571 C13.0544813,12.3778571 10.6666667,14.6910526 10.6666667,17.5445238 L10.6666667,17.5445238 Z" id="风格颜色" fill="#07C160"></path>
<path d="M16,16.7916667 C15.8989685,16.7928598 15.8021184,16.7526497 15.7333333,16.6809524 L13.8819048,14.887381 C13.7295238,14.7397619 13.7295238,14.5109524 13.8819048,14.3633333 C14.0342857,14.2157143 14.2704762,14.2157143 14.4228572,14.3633333 L16,15.8985714 L17.5771428,14.3707143 C17.7295238,14.2230953 17.9657143,14.2230953 18.1180953,14.3707143 C18.2704762,14.5183333 18.2704762,14.7471429 18.1180953,14.8947619 L16.2666667,16.6883333 C16.2129905,16.7384551 16.1457416,16.7718446 16.0735372,16.7851627 L16,16.7916667 Z" id="路径" fill-opacity="0.9" fill="#000000"></path>
<path d="M18.4685714,17.7069048 L13.5238095,17.7069048 C13.3104762,17.7069048 13.1428572,17.5445238 13.1428572,17.3378571 C13.1428572,17.1311905 13.3104762,16.9688095 13.5238095,16.9688095 L18.4685714,16.9688095 C18.6819048,16.9688095 18.8495238,17.1311905 18.8495238,17.3378571 C18.8495238,17.5445238 18.6819047,17.7069048 18.4685714,17.7069048 Z" id="路径" fill-opacity="0.9" fill="#000000"></path>
<path d="M16,16.0535714 C16.2133333,16.0535714 16.3809524,16.2159524 16.3809524,16.422619 L16.3808572,18.813494 L18.4685714,18.8140476 C18.6819048,18.8140476 18.8495238,18.9764286 18.8495238,19.1830952 C18.8495238,19.3897619 18.6819047,19.5521429 18.4685714,19.5521429 L16.3808572,19.5516815 L16.3809524,21.1169048 C16.3809524,21.3235715 16.2133333,21.4859524 16,21.4859524 C15.7866667,21.4859524 15.6190476,21.3235714 15.6190476,21.1169048 L15.6188572,19.5516815 L13.5238095,19.5521429 C13.3104762,19.5521429 13.1428572,19.3897619 13.1428572,19.1830952 C13.1428572,18.9764285 13.3104762,18.8140476 13.5238095,18.8140476 L15.6188572,18.813494 L15.6190476,16.422619 C15.6190476,16.2159524 15.7866667,16.0535714 16,16.0535714 Z" id="路径" fill-opacity="0.9" fill="#000000"></path>
<path d="M8.60952381,3.68125 C8.9333141,3.68125 9.19047619,3.93037579 9.19047619,4.24404761 C9.19047619,4.55771943 8.93331407,4.80684523 8.60952381,4.80684523 L5.33333334,4.80684523 C4.81140934,4.80684523 4.39047619,5.21462421 4.39047619,5.7202381 L4.38957144,7.79919048 L27.6085714,7.79919048 L27.6095238,5.7202381 C27.6095238,5.21462422 27.1885907,4.80684523 26.6666667,4.80684523 L23.2152381,4.80684523 C22.8914478,4.80684523 22.6342857,4.55771944 22.6342857,4.24404761 C22.6342857,3.9303758 22.8914478,3.68125 23.2152381,3.68125 L26.6666667,3.68125 C27.2248842,3.68125 27.7602386,3.89607134 28.1549581,4.27845579 C28.5496775,4.66084023 28.7714286,5.17946483 28.7714286,5.7202381 L28.7714286,25.73 C28.7714286,26.8616963 27.8298513,27.776369 26.6666667,27.776369 L5.33333334,27.776369 C4.17090545,27.776369 3.22857144,26.863483 3.22857144,25.737381 L3.22857144,5.7202381 C3.22857144,4.59413607 4.17090544,3.68125 5.33333334,3.68125 L8.60952381,3.68125 Z M27.6085714,8.92519048 L4.38957144,8.92519048 L4.39047619,25.73 C4.39047619,26.2356139 4.81140934,26.6433929 5.33333334,26.6433929 L26.6666667,26.6433929 C27.1885907,26.6433929 27.6095238,26.2356139 27.6095238,25.73 L27.6085714,8.92519048 Z M16,10.9680952 C19.7409524,10.9680952 22.7885714,13.9204762 22.7885714,17.5445238 C22.7885714,19.3011905 22.08,20.9545238 20.8,22.1945238 C20.6933333,22.2978571 20.5257143,22.3347619 20.3885714,22.2757143 C20.2514286,22.2166667 20.152381,22.0838095 20.1523809,21.9361905 L20.1523809,19.8547619 C20.1523809,19.6480952 20.32,19.4857143 20.5333333,19.4857143 C20.7466667,19.4857143 20.9142857,19.6480953 20.9142857,19.8547619 L20.9142857,20.932381 C21.6420115,19.94374 22.0310885,18.7587707 22.0266667,17.5445238 C22.0266667,14.3264286 19.3219048,11.7061905 16,11.7061905 C12.6780952,11.7061905 9.97333334,14.3264286 9.97333334,17.5445238 C9.97333334,20.762619 12.6780952,23.3828571 16,23.3828571 C16.2133333,23.3828571 16.3809524,23.5452381 16.3809524,23.7519048 C16.3809524,23.9585715 16.2133333,24.1209524 16,24.1209524 C12.2590476,24.1209524 9.21142856,21.1685714 9.21142856,17.5445238 C9.21142856,13.9204762 12.2590476,10.9680952 16,10.9680952 Z M20.5485714,1.94119048 C21.3866667,1.94119048 22.0723809,2.60547619 22.0723809,3.41738097 L22.0723809,4.89357142 C22.0723809,5.7088489 21.3901482,6.3697619 20.5485714,6.3697619 C19.7104762,6.3697619 19.0247619,5.70547619 19.0247619,4.89357142 L19.0247619,3.41738097 C19.0247619,2.60547619 19.7104762,1.94119048 20.5485714,1.94119048 Z M11.2761905,1.94119048 C12.1142857,1.94119048 12.8,2.60547619 12.8,3.41738097 L12.8,4.89357142 C12.8,5.71285713 12.1219048,6.3697619 11.2761905,6.3697619 C10.4380952,6.3697619 9.75238094,5.70547619 9.75238094,4.89357142 L9.75238094,3.41738097 C9.75238094,2.60547619 10.4380952,1.94119048 11.2761905,1.94119048 Z M20.5485714,2.67928571 C20.1295238,2.67928571 19.7866667,3.01142858 19.7866667,3.41738097 L19.7866667,4.89357142 C19.7866667,5.29952381 20.1295238,5.63166668 20.5485714,5.63166668 C20.9676191,5.63166668 21.3104762,5.29952381 21.3104762,4.89357142 L21.3104762,3.41738097 C21.3104762,3.01142858 20.967619,2.67928571 20.5485714,2.67928571 Z M11.2761905,2.67928571 C10.8571428,2.67928571 10.5142857,3.01142858 10.5142857,3.41738097 L10.5142857,4.89357142 C10.5142857,5.29952381 10.8571429,5.63166668 11.2761905,5.63166668 C11.6952381,5.63166668 12.0380953,5.29952381 12.0380953,4.89357142 L12.0380953,3.41738097 C12.0380953,3.01142858 11.7028572,2.67928571 11.2761905,2.67928571 Z M17.8819047,3.68125 C18.205695,3.68125 18.4628572,3.93037579 18.4628572,4.24404761 C18.4628572,4.55771944 18.205695,4.80684523 17.8819047,4.80684523 L13.9428572,4.80684523 C13.6190669,4.80684523 13.3619047,4.55771944 13.3619047,4.24404761 C13.3619047,3.93037579 13.6190669,3.68125 13.9428572,3.68125 L17.8819047,3.68125 Z" id="骨架" fill-opacity="0.9" fill="#000000"></path>
</g>
</g>
</g>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="360px" height="96px" viewBox="0 0 360 96" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 59.1 (86144) - https://sketch.com -->
<title>积分明细</title>
<desc>Created with Sketch.</desc>
<defs>
<rect id="path-1" x="0" y="0" width="375" height="96"></rect>
</defs>
<g id="iOS-最新版本" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="积分明细">
<mask id="mask-2" fill="white">
<use xlink:href="#path-1"></use>
</mask>
<g id="蒙版" fill-rule="nonzero"></g>
<g id="编组" opacity="0.100000001" mask="url(#mask-2)" fill="#FFFFFF" fill-rule="nonzero">
<g transform="translate(128.000000, 33.500000) rotate(-90.000000) translate(-128.000000, -33.500000) translate(29.000000, -134.000000)" id="路径">
<path d="M70.5,0.5 C70.5,0.5 70.5,18.4057426 70.5,31.1295583 C70.5,38.821286 74.5873044,45.9136582 81.2037696,49.7720086 C101.753201,61.6841972 144.70377,86.594906 144.70377,86.594906 L70.5,129.636116 C70.5,129.636116 70.5,129.636116 70.5,129.648602 C70.5,138.526554 75.2195946,146.717745 82.8748222,151.175451 C90.5300498,155.608183 99.969239,155.608183 107.624467,151.175451 C131.967639,137.040652 163.514403,118.747826 186.79623,105.249843 C193.435277,101.403979 197.5,94.2991203 197.5,86.6073926 C197.5,78.915665 193.412696,71.8108062 186.79623,67.9649423 C143.123044,42.6296901 70.5,0.5 70.5,0.5 Z"></path>
<path d="M197.5,51.5 C197.5,51.5 197.5,72.9474072 197.5,88.1729724 C197.5,97.3860846 192.593298,105.896248 184.650406,110.502804 C151.170978,129.871279 63.8804871,180.393832 63.8804871,180.393832 L197.5,257.733123 L197.5,257.733123 C197.5,268.367088 191.86136,278.193411 182.67146,283.517872 C173.48156,288.827376 162.150062,288.827376 152.960162,283.517872 C112.107128,259.871881 52.2236824,225.218016 13.3495941,202.723664 C5.40670153,198.117108 0.5,189.606944 0.5,180.393832 C0.5,171.18072 5.40670153,162.685513 13.3495941,158.078957 C77.1096051,121.181639 197.5,51.5 197.5,51.5 Z" transform="translate(99.000000, 169.500000) rotate(-180.000000) translate(-99.000000, -169.500000) "></path>
<path d="M167.960914,203.491011 C173.746215,200.169663 180.879714,200.169663 186.665015,203.491011 C192.450317,206.821714 196,212.968546 196,219.620597 L196,219.620597 L111.882742,268 L196,316.379403 L196,316.379403 C196,323.031454 192.450317,329.178286 186.665015,332.508989 C180.879714,335.830337 173.746215,335.830337 167.960914,332.508989 C142.242775,317.717298 104.544454,296.039658 80.0891825,281.968371 C75.0889072,279.086752 72,273.76324 72,268 C72,262.23676 75.0889072,256.922604 80.0891825,254.040984 C104.544454,239.969698 142.242775,218.292058 167.960914,203.491011 Z"></path>
</g>
</g>
<g id="3.通用组件/彩色版/金币" opacity="0.300000012" mask="url(#mask-2)">
<g transform="translate(255.000000, 32.000000)" id="资源-6">
<g transform="translate(0.492188, 0.375000)">
<circle id="椭圆形" fill="#FFFFFF" fill-rule="nonzero" opacity="0.400000006" cx="52.1842443" cy="52.1842443" r="52.0752698"></circle>
<circle id="椭圆形" fill="#FFFFFF" fill-rule="nonzero" opacity="0.5" cx="51.8791157" cy="51.8791157" r="41.3699401"></circle>
<g id="编组" transform="translate(37.138098, 26.262849)" fill="#FFFFFF" fill-rule="nonzero">
<path d="M6.98786165,6.63757682e-09 C7.33556601,6.63757682e-09 7.65387697,0.194905578 7.81164782,0.504522804 L15.1043784,14.794 L22.3968848,0.504522804 C22.5371255,0.229307492 22.8042128,0.0447285492 23.1060381,0.00710872614 L23.220671,6.63757682e-09 L28.5354205,6.63757682e-09 C28.8569879,6.63757682e-09 29.1554647,0.166928943 29.3235368,0.440871933 C29.4916089,0.714814923 29.5051179,1.05635696 29.3592066,1.34270026 L29.3592066,1.34270026 L22.4833784,14.82 L28.6254359,14.8205288 C29.2467563,14.8205288 29.7504359,15.3242085 29.7504359,15.9455288 L29.7504359,21.1348531 C29.7504359,21.7561734 29.2467563,22.2598531 28.6254359,22.2598531 L18.6493784,22.259 L18.6493784,29.582 L28.6254359,29.5829379 C29.2467563,29.5829379 29.7504359,30.0866175 29.7504359,30.7079379 L29.7504359,35.8972621 C29.7504359,36.5185825 29.2467563,37.0222621 28.6254359,37.0222621 L18.6493784,37.022 L18.6495693,50.9186874 C18.6495693,51.4290557 18.2332319,51.8427909 17.7196537,51.8427909 L12.1401605,51.8427909 C11.6265824,51.8427909 11.210245,51.4290557 11.210245,50.9186874 L11.2093784,37.022 L1.23437835,37.0222621 C0.61305801,37.0222621 0.109378353,36.5185825 0.109378353,35.8972621 L0.109378353,30.7079379 C0.109378353,30.0866175 0.61305801,29.5829379 1.23437835,29.5829379 L11.2093784,29.582 L11.2093784,22.259 L1.23437835,22.2598531 C0.61305801,22.2598531 0.109378353,21.7561734 0.109378353,21.1348531 L0.109378353,15.9455288 C0.109378353,15.3242085 0.61305801,14.8205288 1.23437835,14.8205288 L7.72337835,14.82 L0.849325965,1.34270026 C0.703414745,1.05635696 0.71692368,0.714814923 0.884995779,0.440871933 C1.05306788,0.166928943 1.35154472,6.63757682e-09 1.67311214,6.63757682e-09 L6.98786165,6.63757682e-09 Z" id="形状结合"></path>
</g>
</g>
</g>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="375px" height="96px" viewBox="0 0 375 96" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 59.1 (86144) - https://sketch.com -->
<title>积分商城</title>
<desc>Created with Sketch.</desc>
<defs>
<rect id="path-1" x="0" y="0" width="375" height="96"></rect>
</defs>
<g id="iOS-最新版本" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="积分商城">
<mask id="mask-2" fill="white">
<use xlink:href="#path-1"></use>
</mask>
<g id="蒙版" fill-rule="nonzero"></g>
<g id="编组" opacity="0.1" mask="url(#mask-2)" fill="#FFFFFF" fill-rule="nonzero">
<g transform="translate(128.000000, 33.500000) rotate(-90.000000) translate(-128.000000, -33.500000) translate(29.000000, -134.000000)" id="路径">
<path d="M70.5,0.5 C70.5,0.5 70.5,18.4057426 70.5,31.1295583 C70.5,38.821286 74.5873044,45.9136582 81.2037696,49.7720086 C101.753201,61.6841972 144.70377,86.594906 144.70377,86.594906 L70.5,129.636116 C70.5,129.636116 70.5,129.636116 70.5,129.648602 C70.5,138.526554 75.2195946,146.717745 82.8748222,151.175451 C90.5300498,155.608183 99.969239,155.608183 107.624467,151.175451 C131.967639,137.040652 163.514403,118.747826 186.79623,105.249843 C193.435277,101.403979 197.5,94.2991203 197.5,86.6073926 C197.5,78.915665 193.412696,71.8108062 186.79623,67.9649423 C143.123044,42.6296901 70.5,0.5 70.5,0.5 Z"></path>
<path d="M197.5,51.5 C197.5,51.5 197.5,72.9474072 197.5,88.1729724 C197.5,97.3860846 192.593298,105.896248 184.650406,110.502804 C151.170978,129.871279 63.8804871,180.393832 63.8804871,180.393832 L197.5,257.733123 L197.5,257.733123 C197.5,268.367088 191.86136,278.193411 182.67146,283.517872 C173.48156,288.827376 162.150062,288.827376 152.960162,283.517872 C112.107128,259.871881 52.2236824,225.218016 13.3495941,202.723664 C5.40670153,198.117108 0.5,189.606944 0.5,180.393832 C0.5,171.18072 5.40670153,162.685513 13.3495941,158.078957 C77.1096051,121.181639 197.5,51.5 197.5,51.5 Z" transform="translate(99.000000, 169.500000) rotate(-180.000000) translate(-99.000000, -169.500000) "></path>
<path d="M167.960914,203.491011 C173.746215,200.169663 180.879714,200.169663 186.665015,203.491011 C192.450317,206.821714 196,212.968546 196,219.620597 L196,219.620597 L111.882742,268 L196,316.379403 L196,316.379403 C196,323.031454 192.450317,329.178286 186.665015,332.508989 C180.879714,335.830337 173.746215,335.830337 167.960914,332.508989 C142.242775,317.717298 104.544454,296.039658 80.0891825,281.968371 C75.0889072,279.086752 72,273.76324 72,268 C72,262.23676 75.0889072,256.922604 80.0891825,254.040984 C104.544454,239.969698 142.242775,218.292058 167.960914,203.491011 Z"></path>
</g>
</g>
<path d="M301.975,60.80675 L301.975,52.16 C301.975,50.96525 301.00975,50 299.815,50 L254.185,50 C252.99025,50 252.025,50.96525 252.025,52.16 L252.025,60.80675 C250.89775,60.87425 250,61.8125 250,62.96 L250,71.84975 C250,73.49675 250.324,75.0965 250.972,76.60175 C251.26225,77.29025 251.62,77.93825 252.025,78.5525 L252.025,101.84 C252.025,103.028 252.99025,104 254.185,104 L299.815,104 C301.00975,104 301.975,103.03475 301.975,101.84 L301.975,78.5525 C302.38675,77.93825 302.73775,77.2835 303.028,76.60175 C303.66925,75.0965 304,73.49675 304,71.84975 L304,62.96 C304,61.8125 303.10225,60.87425 301.975,60.80675 Z M257,56 L297,56 L297,61 L257,61 L257,56 Z M281,100 L273,100 L273,92 L281,92 L281,100 Z M296.973172,98 L285.571429,98 L285.571429,89.1139702 C285.571429,87.9583293 284.612341,87.0246759 283.425218,87.0246759 L270.547954,87.0246759 C269.360832,87.0246759 268.401744,87.9583293 268.401744,89.1139702 L268.401744,98 L257,98 L257,82.1866539 C257.1945,82.2780605 257.395708,82.3694671 257.603622,82.4478157 C259.099262,83.0615458 260.688799,83.3684109 262.325285,83.3684109 C263.961771,83.3684109 265.544601,83.0615458 267.046948,82.4478157 C267.972502,82.0691311 268.8444,81.5859818 269.642522,81.0048968 C269.655936,80.9983677 269.669349,80.9983677 269.682763,81.0048968 C270.480885,81.5859818 271.346076,82.0691311 272.278337,82.4478157 C273.773977,83.0615458 275.363514,83.3684109 277,83.3684109 C278.636486,83.3684109 280.219316,83.0615458 281.721663,82.4478157 C282.647217,82.0691311 283.519115,81.5859818 284.317237,81.0048968 C284.330651,80.9983677 284.344064,80.9983677 284.357478,81.0048968 C285.1556,81.5859818 286.020791,82.0691311 286.953052,82.4478157 C288.448692,83.0615458 290.038229,83.3684109 291.674715,83.3684109 C293.311201,83.3684109 294.894031,83.0615458 296.396378,82.4478157 C296.597586,82.3629381 296.798793,82.2780605 297,82.1866539 L297,98 L296.973172,98 Z M300,71.419 C300,75.605 296.63872,79 292.502287,79 C289.703506,79 287.261433,77.453 285.971799,75.157 C285.772866,74.807 285.416159,74.59 285.018293,74.59 L284.977134,74.59 C284.586128,74.59 284.222561,74.807 284.023628,75.157 C282.740854,77.453 280.29878,79 277.5,79 C274.708079,79 272.272866,77.46 270.983232,75.171 C270.777439,74.814 270.407012,74.59 270.002287,74.59 C269.597561,74.59 269.220274,74.814 269.021341,75.171 C267.724848,77.46 265.289634,79 262.497713,79 C258.36128,79 255,75.605 255,71.419 L255,65.035 C255,65.014 255.01372,65 255.034299,65 L299.965701,65 C299.98628,65 300,65.014 300,65.035 L300,71.419 L300,71.419 Z" id="形状" fill="#FFFFFF" fill-rule="nonzero" opacity="0.100000001" mask="url(#mask-2)"></path>
<path d="M352.052547,6.91002073 L334.797839,26.4975371 L365.49594,59.6048291 L396.210447,26.4740985 L379.130505,6.91002073 L352.052547,6.91002073 Z M351.311398,2.00000093 L379.87308,2.00000093 C380.780434,2.00000093 381.642848,2.39135444 382.237051,3.0724926 L401.232281,24.8355316 C402.279448,26.0351586 402.252341,27.8271415 401.169508,28.9955172 L367.798565,64.9956932 C367.205736,65.6357785 366.371127,66.0000009 365.496653,66.0000009 C364.622112,66.0000009 363.787518,65.6363466 363.194741,64.9956932 L329.829505,29.0047505 C328.744532,27.8328236 328.720992,26.0344484 329.776005,24.8355316 L348.955987,3.05970794 C349.551402,2.38545801 350.409694,1.99931008 351.311398,2.00000093 Z M365.496653,40.1131977 L376.224403,28.2461942 L380.467996,32.0503401 L365.496653,48.6114439 L350.52531,32.0496299 L354.768903,28.2454839 L365.496653,40.1131977 Z" id="形状" fill="#FFFFFF" fill-rule="nonzero" opacity="0.1" mask="url(#mask-2)"></path>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="375px" height="96px" viewBox="0 0 375 96" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 59.1 (86144) - https://sketch.com -->
<title>我的优惠券/领券中心</title>
<desc>Created with Sketch.</desc>
<defs>
<rect id="path-1" x="0" y="0" width="375" height="96"></rect>
</defs>
<g id="iOS-最新版本" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="我的优惠券/领券中心">
<mask id="mask-2" fill="white">
<use xlink:href="#path-1"></use>
</mask>
<g id="蒙版" fill-rule="nonzero"></g>
<g id="3.通用组件/彩色版/票据" opacity="0.400000006" mask="url(#mask-2)">
<g transform="translate(273.000000, 19.000000)" id="资源-12">
<g transform="translate(0.476426, 0.759679)">
<g id="资源-11">
<g id="分组-2" transform="translate(16.028151, 4.315271)">
<rect id="矩形-copy" fill="#FFFFFF" fill-rule="nonzero" opacity="0.200000003" x="-5.68434189e-13" y="0.117128796" width="98.4852819" height="49.3543756" rx="3.69880407"></rect>
<rect id="矩形-copy-2" fill="#FFFFFF" fill-rule="nonzero" opacity="0.200000003" x="39.4539101" y="12.4464757" width="44.231532" height="4.93173876" rx="1.23293469"></rect>
<rect id="矩形-copy-3" fill="#FFFFFF" fill-rule="nonzero" opacity="0.200000003" x="39.4539101" y="32.1734307" width="24.8128106" height="4.93173876" rx="1.23293469"></rect>
<rect id="矩形-copy-4" fill="#FFFFFF" fill-rule="nonzero" opacity="0.200000003" x="39.4539101" y="22.3099532" width="44.231532" height="4.93173876" rx="1.23293469"></rect>
<rect id="矩形-copy-5" fill="#FFFFFF" fill-rule="nonzero" opacity="0.200000003" x="6.16467345" y="12.4464757" width="19.726955" height="19.726955" rx="2.46586938"></rect>
<line x1="32.1333604" y1="12.4464757" x2="32.1333604" y2="44.5551774" id="路径-copy" stroke="#FFFFFF" stroke-width="0.770584181" stroke-linecap="round" stroke-linejoin="round"></line>
</g>
<rect id="矩形" fill="#FFFFFF" fill-rule="nonzero" opacity="0.5" x="0" y="34.5221713" width="98.4852819" height="49.3543756" rx="3.69880407"></rect>
<rect id="矩形" fill="#FFFFFF" fill-rule="nonzero" opacity="0.5" x="39.4539101" y="46.8515182" width="44.231532" height="4.93173876" rx="1.23293469"></rect>
<rect id="矩形" fill="#FFFFFF" fill-rule="nonzero" opacity="0.5" x="39.4539101" y="66.5784733" width="24.8128106" height="4.93173876" rx="1.23293469"></rect>
<rect id="矩形" fill="#FFFFFF" fill-rule="nonzero" opacity="0.5" x="39.4539101" y="56.7149957" width="44.231532" height="4.93173876" rx="1.23293469"></rect>
<rect id="矩形" fill="#FFFFFF" fill-rule="nonzero" opacity="0.5" x="6.16467345" y="46.8515182" width="19.726955" height="19.726955" rx="2.46586938"></rect>
<line x1="32.1333604" y1="46.8515182" x2="32.1333604" y2="78.9602199" id="路径" stroke="#FFFFFF" stroke-width="0.770584181" stroke-linecap="round" stroke-linejoin="round"></line>
</g>
</g>
</g>
</g>
<g id="编组" opacity="0.1" mask="url(#mask-2)" fill="#FFFFFF" fill-rule="nonzero">
<g transform="translate(139.000000, 10.500000) rotate(-90.000000) translate(-139.000000, -10.500000) translate(40.000000, -157.000000)" id="路径">
<path d="M70.5,0.5 C70.5,0.5 70.5,18.4057426 70.5,31.1295583 C70.5,38.821286 74.5873044,45.9136582 81.2037696,49.7720086 C101.753201,61.6841972 144.70377,86.594906 144.70377,86.594906 L70.5,129.636116 C70.5,129.636116 70.5,129.636116 70.5,129.648602 C70.5,138.526554 75.2195946,146.717745 82.8748222,151.175451 C90.5300498,155.608183 99.969239,155.608183 107.624467,151.175451 C131.967639,137.040652 163.514403,118.747826 186.79623,105.249843 C193.435277,101.403979 197.5,94.2991203 197.5,86.6073926 C197.5,78.915665 193.412696,71.8108062 186.79623,67.9649423 C143.123044,42.6296901 70.5,0.5 70.5,0.5 Z"></path>
<path d="M197.5,51.5 C197.5,51.5 197.5,72.9474072 197.5,88.1729724 C197.5,97.3860846 192.593298,105.896248 184.650406,110.502804 C151.170978,129.871279 63.8804871,180.393832 63.8804871,180.393832 L197.5,257.733123 L197.5,257.733123 C197.5,268.367088 191.86136,278.193411 182.67146,283.517872 C173.48156,288.827376 162.150062,288.827376 152.960162,283.517872 C112.107128,259.871881 52.2236824,225.218016 13.3495941,202.723664 C5.40670153,198.117108 0.5,189.606944 0.5,180.393832 C0.5,171.18072 5.40670153,162.685513 13.3495941,158.078957 C77.1096051,121.181639 197.5,51.5 197.5,51.5 Z" transform="translate(99.000000, 169.500000) rotate(-180.000000) translate(-99.000000, -169.500000) "></path>
<path d="M167.960914,203.491011 C173.746215,200.169663 180.879714,200.169663 186.665015,203.491011 C192.450317,206.821714 196,212.968546 196,219.620597 L196,219.620597 L111.882742,268 L196,316.379403 L196,316.379403 C196,323.031454 192.450317,329.178286 186.665015,332.508989 C180.879714,335.830337 173.746215,335.830337 167.960914,332.508989 C142.242775,317.717298 104.544454,296.039658 80.0891825,281.968371 C75.0889072,279.086752 72,273.76324 72,268 C72,262.23676 75.0889072,256.922604 80.0891825,254.040984 C104.544454,239.969698 142.242775,218.292058 167.960914,203.491011 Z"></path>
</g>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="32px" height="31px" viewBox="0 0 32 31" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 59.1 (86144) - https://sketch.com -->
<title>coupon_center</title>
<desc>Created with Sketch.</desc>
<g id="iOS" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="(登录前)首页" transform="translate(-262.000000, -302.000000)">
<g id="组件/菜单/按钮菜单" transform="translate(5.000000, 288.000000)">
<g id="图标" transform="translate(239.000000, 13.000000)">
<g id="icon/积分商城" transform="translate(18.000000, 1.000000)">
<g id="coupon_center" transform="translate(0.000000, 0.000000)">
<path d="M29.0633622,5.27134929 C30.0601736,5.59658473 30.7277057,6.50632225 30.7171783,7.5252311 L30.7171783,12.299704 C30.1429862,12.2963541 29.5761751,12.4250993 29.0633622,12.675351 L29.0633622,5.27134929 Z M29.0633622,19.3543541 C29.5750368,19.6090936 30.1418901,19.7423548 30.7171783,19.7431487 L30.7171783,24.5194999 C30.7258781,25.5378525 30.0590306,26.4466569 29.0633622,26.7733817 L29.0633622,19.3543541 Z" id="风格颜色2" fill="#07C160"></path>
<path d="M13.1785849,9.37717065 L15.939469,13.426645 C15.9673079,13.4659667 16.0133646,13.4894687 16.0625842,13.4894687 C16.1118038,13.4894687 16.1578606,13.4659667 16.1856995,13.426645 L18.9465835,9.37717065 C18.9732538,9.33695193 19.0193872,9.31283257 19.0687294,9.31329279 L21.461237,9.31329279 C21.5157014,9.3137715 21.5654614,9.34330028 21.590628,9.3900944 C21.6157946,9.43688853 21.6122627,9.49331512 21.5814441,9.53682061 L18.1807484,14.2624594 C18.1497352,14.3062429 18.1463722,14.3630846 18.1720186,14.410014 C18.1976651,14.4569433 18.2480816,14.4862033 18.3028943,14.4859694 L20.3522303,14.4859694 C20.4336097,14.4859694 20.4995808,14.5498789 20.4995808,14.6287152 L20.4995808,16.4412119 C20.4995878,16.5193205 20.4347904,16.5829299 20.3541691,16.5839577 L17.4284851,16.6008618 C17.3471056,16.6008618 17.2811345,16.6647713 17.2811345,16.7436077 L17.2811345,17.7728804 C17.2811345,17.8517167 17.3471056,17.9156262 17.4284851,17.9156262 L20.3522303,17.9156262 C20.3913101,17.9156262 20.4287892,17.9306655 20.4564228,17.9574355 C20.4840564,17.9842055 20.4995808,18.0205135 20.4995808,18.0583721 L20.4995808,19.8840163 C20.4985199,19.9621182 20.4328585,20.0248907 20.3522303,20.0248839 L17.4304239,20.0248839 C17.3913441,20.0248839 17.3538649,20.0399232 17.3262313,20.0666932 C17.2985977,20.0934633 17.2830734,20.1297712 17.2830734,20.1676298 L17.2830734,22.5811615 C17.2830734,22.6190201 17.267549,22.6553281 17.2399154,22.6820981 C17.2122818,22.7088681 17.1748026,22.7239074 17.1357228,22.7239074 L14.9875068,22.7239074 C14.948427,22.7239074 14.9109479,22.7088681 14.8833143,22.6820981 C14.8556807,22.6553281 14.8401563,22.6190201 14.8401563,22.5811615 L14.8401563,20.1676298 C14.8401563,20.1297712 14.8246319,20.0934633 14.7969983,20.0666932 C14.7693647,20.0399232 14.7318856,20.0248839 14.6928058,20.0248839 L11.7845712,20.0248839 C11.7039429,20.0248907 11.6382815,19.9621182 11.6372206,19.8840163 L11.6372206,18.0583721 C11.6372206,18.0205135 11.652745,17.9842055 11.6803786,17.9574355 C11.7080122,17.9306655 11.7454914,17.9156262 11.7845712,17.9156262 L14.6928058,17.9156262 C14.7741852,17.9156262 14.8401563,17.8517167 14.8401563,17.7728804 L14.8401563,16.7436077 C14.840675,16.7059229 14.8255842,16.6696082 14.7982578,16.6427828 C14.7709314,16.6159574 14.7336484,16.6008585 14.6947446,16.6008618 L11.78651,16.5839577 C11.7063252,16.5819456 11.6421131,16.5189107 11.6410983,16.4412119 L11.6410983,14.6287152 C11.6410983,14.5498789 11.7070693,14.4859694 11.7884488,14.4859694 L13.8222742,14.4859694 C13.8767386,14.4855086 13.9264985,14.4559798 13.9516651,14.4091856 C13.9768317,14.3623915 13.9732999,14.3059649 13.9424812,14.2624594 L10.5417856,9.53682061 C10.5113142,9.49386825 10.5074291,9.43824202 10.5316502,9.39170476 C10.5558712,9.3451675 10.6043481,9.31511724 10.658115,9.31329279 L13.0545003,9.31329279 C13.1044378,9.31254135 13.1512886,9.33665305 13.1785849,9.37717065 L13.1785849,9.37717065 Z" id="风格颜色1" fill="#07C160"></path>
<path d="M24.5226386,26.3168065 C24.8407546,26.3168065 25.0986385,26.5666315 25.0986385,26.8748064 C25.0986385,27.1829812 24.8407546,27.4328063 24.5226386,27.4328063 L22.7059614,27.4328063 C22.3878455,27.4328063 22.1299615,27.1829812 22.1299615,26.8748064 C22.1299615,26.5666315 22.3878455,26.3168065 22.7059614,26.3168065 L24.5226386,26.3168065 Z M5.97004081,4.60441176 C6.28815678,4.60441176 6.54604072,4.85423684 6.54604072,5.16241168 C6.54604072,5.47058652 6.28815678,5.72041159 5.97004081,5.72041159 L3.71667676,5.72038138 C2.71225545,5.73809399 1.91207502,6.53992016 1.92776422,7.51583991 L1.92776422,11.7765337 C4.07296803,12.1041857 5.66768395,13.8978432 5.66768395,16.0176699 C5.66768395,18.1374968 4.07296762,19.9311546 1.92776339,20.2588062 L1.92774132,24.5223442 C1.91206601,25.495805 2.7120539,26.2981996 3.71325079,26.3168065 L20.9455101,26.3168065 C21.2636261,26.3168065 21.52151,26.5666315 21.52151,26.8748064 C21.52151,27.1829812 21.2636261,27.4328063 20.9455101,27.4328063 L3.71064463,27.4328063 C2.07013886,27.4107833 0.757375341,26.1068156 0.775397977,24.5194999 L0.775397977,19.1851488 L1.35176431,19.1851488 C3.0922831,19.1851488 4.51187643,17.7653959 4.51187643,16.018609 C4.51187643,14.2729858 3.09345888,12.857704 1.35176431,12.857704 L0.775397977,12.857704 L0.775397977,7.51786481 C0.757380931,5.92878913 2.07052661,4.62533893 3.71325079,4.60441176 L5.97004081,4.60441176 Z M28.3014048,4.60441176 L28.4723545,4.61112489 C30.0331077,4.71556927 31.2566469,5.98351505 31.2392573,7.51583991 L31.2392573,12.857704 L30.6628913,12.857704 C28.9207165,12.857704 27.5008403,14.2771724 27.5008403,16.0242437 C27.5008403,17.7713151 28.9207165,19.1907835 30.6628913,19.1907835 L31.2392573,19.1907835 L31.2392573,24.5234898 C31.2538394,26.1104936 29.9420731,27.4107824 28.3014048,27.4328063 L26.3470711,27.4328063 C26.0289552,27.4328063 25.7710712,27.1829812 25.7710712,26.8748064 C25.7710712,26.5666315 26.0289552,26.3168065 26.3470711,26.3168065 L28.2978008,26.3168399 C29.3026017,26.2981996 30.1025896,25.495805 30.0868913,24.5194999 L30.0868913,20.2588061 C27.9416875,19.9311541 26.3469716,18.1374966 26.3469716,16.0176699 C26.3469716,13.897843 27.9416879,12.1041852 30.0868922,11.7765336 L30.0869142,7.51299616 C30.1025805,6.53992016 29.3024001,5.73809399 28.3014048,5.72041159 L8.37805906,5.72041159 C8.05994309,5.72041159 7.80205915,5.47058652 7.80205915,5.16241168 C7.80205915,4.85423684 8.05994309,4.60441176 8.37805906,4.60441176 L28.3014048,4.60441176 Z M13.0545003,8.9376342 C13.2342103,8.9376342 13.4021704,9.0241639 13.5023684,9.16868658 L16.0616148,12.9251562 L18.6228001,9.16868658 C18.7218947,9.02394613 18.8894456,8.93714292 19.0687294,8.9376342 L21.461237,8.9376342 C21.6611892,8.93559906 21.8455239,9.04209269 21.9386899,9.21349712 C22.0318558,9.38490154 22.0181882,9.59239697 21.9032887,9.75093938 L18.7643342,14.1103224 L20.3522303,14.1103224 C20.6477662,14.1103224 20.8873454,14.3424148 20.8873454,14.6287152 L20.8873454,16.4412119 C20.886282,16.7270845 20.6473246,16.9585745 20.3522303,16.9596047 L17.6650215,16.9746306 L17.6650215,17.538101 L20.3522303,17.538101 C20.6477662,17.538101 20.8873454,17.7701934 20.8873454,18.0564938 L20.8873454,19.8821381 C20.887863,20.0197775 20.8316512,20.1519243 20.7311852,20.2492507 C20.6307192,20.3465771 20.4943097,20.4010323 20.3522303,20.4005309 L17.670838,20.4005309 L17.670838,22.5811615 C17.670838,22.7186479 17.6144599,22.8505031 17.5141064,22.9477206 C17.4137528,23.0449381 17.2776442,23.0995544 17.1357228,23.0995544 L14.9875068,23.0995544 C14.6924125,23.0985242 14.4534551,22.8670342 14.4523917,22.5811615 L14.4523917,20.4005309 L11.7884488,20.4005309 C11.4936684,20.4005328 11.2544017,20.169583 11.2533336,19.8840163 L11.2533336,18.0583721 C11.2543971,17.7724994 11.4933545,17.5410094 11.7884488,17.5399792 L14.4523917,17.5399792 L14.4523917,16.9765088 L11.7845712,16.9614829 C11.4909922,16.9584043 11.2543764,16.7275096 11.2533336,16.4430901 L11.2533336,14.6287152 C11.2543971,14.3428426 11.4933545,14.1113526 11.7884488,14.1103224 L13.3608343,14.1103224 L10.2238186,9.75093938 C10.1112006,9.59322496 10.0976606,9.38816515 10.188618,9.21783573 C10.2795754,9.0475063 10.4601687,8.93973734 10.658115,8.9376342 L13.0545003,8.9376342 Z M12.9265379,9.68895763 L11.1234325,9.68895763 L14.2604482,14.0464624 C14.3745458,14.2047754 14.3883659,14.4113995 14.2963113,14.5826526 C14.2042567,14.7539057 14.0215836,14.8614061 13.8222742,14.8616164 L12.0288629,14.8616164 L12.0288629,16.2083107 L14.6966834,16.2252149 C14.8380908,16.2257121 14.9735026,16.2806079 15.0731292,16.3778256 C15.1727557,16.4750433 15.2284361,16.6066192 15.2279209,16.7436077 L15.2279209,17.7728804 C15.2268575,18.058753 14.9879001,18.290243 14.6928058,18.2912732 L12.0288629,18.2912732 L12.0288629,19.649237 L14.6928058,19.649237 C14.9879001,19.6502671 15.2268575,19.8817571 15.2279209,20.1676298 L15.2279209,22.3482604 L16.8953087,22.3482604 L16.8953087,20.1676298 C16.8963721,19.8817571 17.1353296,19.6502671 17.4304239,19.649237 L20.113755,19.649237 L20.113755,18.2912732 L17.4304239,18.2912732 C17.1353296,18.290243 16.8963722,18.058753 16.8953087,17.7728804 L16.8953087,16.7436077 C16.8953068,16.4580391 17.1337066,16.2262495 17.4284851,16.2252149 L20.113755,16.2083107 L20.113755,14.8616164 L18.3028943,14.8616164 C18.1043046,14.8606103 17.922749,14.752765 17.8317603,14.5817594 C17.7385605,14.4109352 17.7528157,14.2037899 17.8685979,14.0464624 L21.0036748,9.68895763 L19.1986305,9.68895763 L16.5075441,13.6332508 C16.409011,13.7788871 16.2413623,13.8666249 16.0616148,13.8666249 C15.8818673,13.8666249 15.7142186,13.7788871 15.6156855,13.6332508 L12.9265379,9.68895763 Z" id="骨架" fill-opacity="0.9" fill="#000000"></path>
</g>
</g>
</g>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="110px" height="131px" viewBox="0 0 110 131" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 59.1 (86144) - https://sketch.com -->
<title>首页-会员面板</title>
<desc>Created with Sketch.</desc>
<defs>
<rect id="path-1" x="0" y="0" width="351" height="131" rx="4"></rect>
</defs>
<g id="iOS-最新版本" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="首页-会员面板" transform="translate(-241.000000, 0.000000)">
<g id="编组-3">
<g id="编组-2备份">
<g id="编组">
<mask id="mask-2" fill="white">
<use xlink:href="#path-1"></use>
</mask>
<g id="蒙版" fill-rule="nonzero"></g>
<g opacity="0.1" mask="url(#mask-2)" fill="#FFFFFF" id="路径">
<g transform="translate(241.000000, -39.000000)">
<path d="M43,0 C43,0 43,10.9294793 43,18.6959642 C43,23.3909148 45.5103129,27.7200251 49.5739687,30.0751221 C62.1948791,37.3461983 88.5739687,52.5514362 88.5739687,52.5514362 L43,78.8233434 C43,78.8233434 43,78.8233434 43,78.8309651 C43,84.2499747 45.8986486,89.2497922 50.6002845,91.9707295 C55.3019203,94.6764235 61.0992176,94.6764235 65.8008535,91.9707295 C80.7517781,83.3429956 100.126956,72.1772444 114.426031,63.9382158 C118.503556,61.5907405 121,57.2540085 121,52.5590578 C121,47.8641072 118.489687,43.5273752 114.426031,41.1798999 C87.6031294,25.7155251 43,0 43,0 Z"></path>
<path d="M121,31 C121,31 121,44.1774324 121,53.5321229 C121,59.1927215 117.986239,64.4214237 113.10761,67.251723 C92.5441035,79.151845 38.9291317,110.193244 38.9291317,110.193244 L121,157.711029 L121,157.711029 C121,164.244609 117.536673,170.281968 111.892115,173.553353 C106.247557,176.815549 99.2876015,176.815549 93.6430439,173.553353 C68.5505711,159.025096 31.7693684,137.733527 7.89239026,123.912844 C3.01376084,121.082545 0,115.853843 0,110.193244 C0,104.532646 3.01376084,99.3131328 7.89239026,96.4828335 C47.0546305,73.8128713 121,31 121,31 Z" transform="translate(60.500000, 103.500000) rotate(-180.000000) translate(-60.500000, -103.500000) "></path>
<path d="M102.814754,123.52435 C106.360584,121.491883 110.732728,121.491883 114.278558,123.52435 C117.824388,125.562541 120,129.324036 120,133.394694 L120,133.394694 L68.4442609,163 L120,192.605306 L120,192.605306 C120,196.675964 117.824388,200.437459 114.278558,202.47565 C110.732728,204.508117 106.360584,204.508117 102.814754,202.47565 C87.0520231,193.424018 63.9466006,180.158597 48.957886,171.547809 C45.8932012,169.78443 44,166.526759 44,163 C44,159.473241 45.8932012,156.221295 48.957886,154.457916 C63.9466006,145.847129 87.0520231,132.581707 102.814754,123.52435 Z"></path>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="32px" height="31px" viewBox="0 0 32 31" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 59.1 (86144) - https://sketch.com -->
<title>info</title>
<desc>Created with Sketch.</desc>
<g id="iOS" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="(登录前)首页" transform="translate(-50.000000, -392.000000)">
<g id="组件/菜单/按钮菜单" transform="translate(5.000000, 378.000000)">
<g id="图标" transform="translate(27.000000, 13.000000)">
<g id="icon/积分商城" transform="translate(18.000000, 1.000000)">
<g id="info">
<path d="M16.2144687,1.7921875 C17.510817,1.7921875 18.7691586,2.03835459 19.9537781,2.52375116 C21.0976566,2.99246636 22.1250191,3.66346142 23.0069704,4.51782092 C23.8888999,5.37215937 24.5815525,6.36744267 25.0653685,7.47560409 C25.5664483,8.62322007 25.8205625,9.84223784 25.8205625,11.0980908 C25.8205625,12.8802094 25.2987393,14.6123894 24.3115371,16.1070434 C23.6491198,17.1099681 22.7978698,17.9781661 21.8038147,18.6676665 C23.8649163,19.325724 25.775497,20.3165544 27.3042374,21.5255881 C29.1560023,22.9901474 30.2236562,24.6023093 30.2236562,25.9632266 C30.2236562,26.4047569 29.9727921,26.7659375 29.545984,27.0574489 C29.2680982,27.2472459 29.0039583,27.3636599 28.6174144,27.5011151 C27.8585476,27.7710111 26.7836105,28.0027817 25.4202318,28.191346 C22.939831,28.5344075 19.6099256,28.7231348 16.0420312,28.7231348 C12.4743343,28.7231348 9.14436908,28.5343962 6.66383052,28.1913459 C5.30048353,28.0027817 4.22554699,27.7710112 3.46665529,27.5011177 C3.08014877,27.3636757 2.81596611,27.2472389 2.53807755,27.0574369 C2.11127056,26.7659213 1.86040625,26.4047438 1.86040625,25.9632266 C1.86040625,24.5809307 2.95592366,22.9470652 4.85596021,21.4658787 C6.43524107,20.2347238 8.40337167,19.2383245 10.5198218,18.5929231 L10.2023978,18.3563104 C9.37020144,17.7088832 8.6534176,16.9310627 8.0825787,16.0536643 C7.11812594,14.5715998 6.60834375,12.8579249 6.60834375,11.0981211 C6.60834375,9.84224911 6.86245346,8.62326064 7.36353749,7.47563487 C7.84738591,6.36747196 8.54003736,5.37219039 9.42193207,4.51785489 C10.3038298,3.66348569 11.331219,2.99247843 12.4751276,2.52378165 C13.6597635,2.03836064 14.9181044,1.7921875 16.2144687,1.7921875 Z M16.2144687,3.11065625 C11.6682286,3.11065625 7.96934375,6.69396014 7.96934375,11.0981211 C7.96934375,14.0459907 9.60754449,16.7070116 12.2654257,18.1111972 L12.5258025,18.24313 L13.866979,18.8942969 L13.4573439,18.9837044 C11.750468,19.3562496 10.0852953,19.9663989 8.57667369,20.7532546 C7.52129062,21.2485104 6.55169378,21.8362771 5.70919596,22.4930598 C4.17903472,23.6859213 3.22953095,25.0187885 3.20120283,25.8771779 C3.24137037,25.9442258 3.42216661,26.0698668 3.83239618,26.2254838 C4.51250569,26.4834774 5.59693815,26.724976 7.16971322,26.9279511 C9.55068766,27.235216 12.7022382,27.4046055 16.0420625,27.4046055 C19.3820943,27.4046055 22.5335849,27.2352271 24.9144111,26.9279512 L25.4764172,26.8511347 C27.5371579,26.5527165 28.5319165,26.2120311 28.8264249,25.9398762 L28.8608979,25.9047755 L28.8601884,25.8854391 L28.9278143,25.7943145 L28.9171937,25.6518895 C28.6607094,23.356188 24.272357,20.2215172 19.2746089,19.0492611 L18.5348507,18.8861905 L19.8024142,18.2916573 C22.6311861,16.9648467 24.4595625,14.1406861 24.4595625,11.0981211 C24.4595625,6.69393447 20.7607137,3.11065625 16.2144687,3.11065625 Z" id="骨架" fill-opacity="0.9" fill="#000000"></path>
<ellipse id="风格颜色" fill="#07C160" cx="16.25" cy="10.8984375" rx="6" ry="5.8125"></ellipse>
</g>
</g>
</g>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="64px" height="64px" viewBox="0 0 64 64" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 59.1 (86144) - https://sketch.com -->
<title>已使用</title>
<desc>Created with Sketch.</desc>
<defs>
<circle id="path-1" cx="32" cy="32" r="32"></circle>
</defs>
<g id="组件" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" opacity="0.5">
<g id="组件/优惠券/状态版本2">
<g id="编组-3">
<g id="编组-2" transform="translate(6.000000, 20.000000)">
<text id="已过期" font-family="PingFangSC-Semibold, PingFang SC" font-size="12" font-weight="500" line-spacing="20" fill="#BDBDBD">
<tspan x="8.5" y="13">已过期</tspan>
</text>
<g id="编组" transform="translate(10.000000, 19.000000)" stroke="#BDBDBD">
<circle id="椭圆形" cx="17" cy="1" r="1.5"></circle>
<line x1="34" y1="1" x2="23" y2="1" id="路径-2"></line>
<line x1="11" y1="1" x2="0" y2="1" id="路径-2备份"></line>
</g>
</g>
<g id="椭圆形备份">
<mask id="mask-2" fill="white">
<use xlink:href="#path-1"></use>
</mask>
<circle stroke="#BDBDBD" cx="32" cy="32" r="31.5"></circle>
<path d="M32.5,60 C47.6878306,60 60,47.6878306 60,32.5 C60,17.3121694 47.6878306,5 32.5,5 C17.3121694,5 5,17.3121694 5,32.5" stroke="#BDBDBD" stroke-dasharray="3,3" mask="url(#mask-2)" transform="translate(32.500000, 32.500000) rotate(45.000000) translate(-32.500000, -32.500000) "></path>
</g>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="32px" height="31px" viewBox="0 0 32 31" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 59.1 (86144) - https://sketch.com -->
<title>points</title>
<desc>Created with Sketch.</desc>
<defs>
<path d="M4.978125,12.8355728 C5.146875,12.8775908 5.284375,12.9709643 5.353125,13.0923499 C5.609375,13.2510848 5.8875,13.3934794 6.184375,13.5148649 L5.93125,13.9397143 L6.221875,13.5312053 C6.928125,13.8113258 7.753125,13.9560547 8.678125,13.9560547 C9.875,13.9537204 11.040625,13.6409191 11.9625,13.0783438 C12.190625,12.9382836 12.515625,12.9382836 12.74375,13.0783438 C13.659375,13.6362505 14.825,13.944383 16.025,13.951386 C17.2,13.944383 18.353125,13.6339161 19.265625,13.0760095 C19.49375,12.9359493 19.821875,12.9359493 20.05,13.0760095 C20.971875,13.6385848 22.146875,13.9490517 23.353125,13.9490517 C24.290625,13.9467173 25.13125,13.7949854 25.840625,13.5055276 C26.140625,13.384142 26.41875,13.2394131 26.675,13.0806782 C26.74375,12.9709643 26.86875,12.8869282 27.021875,12.8449101 C27.996875,12.1189312 28.5625,11.1315065 28.5625,10.0810547 L3.459375,10.0927264 C3.459375,11.1361752 4.021875,12.1165969 4.978125,12.8355728 Z" id="path-1"></path>
</defs>
<g id="iOS" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="(登录前)首页" transform="translate(-80.000000, -302.000000)">
<g id="组件/菜单/按钮菜单" transform="translate(5.000000, 288.000000)">
<g id="图标" transform="translate(57.000000, 13.000000)">
<g id="icon/积分商城" transform="translate(18.000000, 1.000000)">
<g id="points">
<path d="M5.403125,26.4922852 C5.403125,27.2430664 6.034375,27.8545898 6.809375,27.8545898 L25.2125,27.8545898 C25.9875,27.8545898 26.61875,27.2430664 26.61875,26.4922852 L5.403125,26.4922852 Z M4.978125,13.6533203 C5.146875,13.7078125 5.284375,13.8289062 5.353125,13.9863281 C5.609375,14.1921875 5.8875,14.3768555 6.184375,14.5342773 L5.93125,15.0852539 L6.221875,14.5554687 C6.928125,14.91875 7.753125,15.1064453 8.678125,15.1064453 C9.875,15.103418 11.040625,14.6977539 11.9625,13.9681641 C12.190625,13.7865234 12.515625,13.7865234 12.74375,13.9681641 C13.659375,14.6916992 14.825,15.0913086 16.025,15.1003906 C17.2,15.0913086 18.353125,14.6886719 19.265625,13.9651367 C19.49375,13.7834961 19.821875,13.7834961 20.05,13.9651367 C20.971875,14.6947266 22.146875,15.0973633 23.353125,15.0973633 C24.290625,15.0943359 25.13125,14.8975586 25.840625,14.522168 C26.140625,14.3647461 26.41875,14.1770508 26.675,13.9711914 C26.74375,13.8289062 26.86875,13.7199219 27.021875,13.6654297 C27.996875,12.7239258 28.5625,11.4433594 28.5625,10.0810547 L3.459375,10.0961914 C3.459375,11.4494141 4.021875,12.7208984 4.978125,13.6533203 Z" id="风格颜色1" fill="#07C160"></path>
<g id="风格颜色1">
<use fill="#07C160" xlink:href="#path-1"></use>
<use fill-opacity="0.1" fill="#000000" xlink:href="#path-1"></use>
</g>
<path d="M24.609375,1.93447266 C25.671875,1.93447266 26.628125,2.54902344 27.04375,3.49658203 C27.271875,4.01425781 27.621875,4.77412109 27.99375,5.57333984 C29.66875,9.18193359 29.803125,9.56035156 29.8000514,10.0810547 C29.8000514,11.7884766 29.08125,13.3899414 27.859375,14.5524414 L27.859375,14.5524414 L27.859375,26.4922852 C27.859375,27.9060547 26.671875,29.0564453 25.2125,29.0564453 L25.2125,29.0564453 L6.809375,29.0564453 C5.35,29.0564453 4.1625,27.9060547 4.1625,26.4922852 L4.1625,26.4922852 L4.1625,14.5675781 C2.94375,13.4111328 2.221875,11.8066406 2.21875,10.0931641 C2.21875,9.56943359 2.35625,9.18798828 4.06875,5.57636719 L4.06875,5.57636719 L4.1,5.50976562 C4.471875,4.72568359 4.821875,3.98398437 5.046875,3.47539062 C5.18125,3.17265625 5.54375,3.03339844 5.859375,3.16357422 C6.171875,3.29375 6.315625,3.64492187 6.18125,3.95068359 C5.953125,4.46533203 5.596875,5.21308594 5.221875,6.00927734 L5.221875,6.00927734 L5.190625,6.07587891 C3.784375,9.04873047 3.4625,9.79951172 3.4625,10.0871094 C3.4625,11.4433594 4.025,12.7148437 4.98125,13.6472656 C5.15,13.7017578 5.2875,13.8228516 5.35625,13.9802734 C5.6125,14.1861328 5.8875,14.3708008 6.1875,14.5282227 L6.1875,14.5282227 L5.93775,15.0704727 L6.225,14.5494141 C6.85277778,14.8750217 7.57438272,15.0571108 8.37664609,15.0935552 L8.68125,15.1003906 C9.875,15.0973633 11.04375,14.6916992 11.965625,13.9621094 C12.190625,13.7834961 12.51875,13.7834961 12.746875,13.9621094 C13.6625,14.6856445 14.828125,15.0882812 16.028125,15.0943359 C17.203125,15.0822266 18.35625,14.6826172 19.26875,13.959082 C19.496875,13.7804687 19.825,13.7774414 20.053125,13.959082 C20.978125,14.6886719 22.15,15.0913086 23.35625,15.0913086 C24.29375,15.0882812 25.13125,14.8945312 25.84375,14.5161133 C26.14375,14.3556641 26.421875,14.1709961 26.678125,13.9651367 C26.746875,13.8228516 26.871875,13.7138672 27.025,13.659375 C27.99375,12.7239258 28.559375,11.4433594 28.559375,10.0810547 C28.5625,9.79042969 28.246875,9.04570312 26.871875,6.08496094 C26.4875,5.25546875 26.134375,4.48955078 25.903125,3.96279297 C25.684375,3.46025391 25.175,3.13330078 24.609375,3.13330078 L24.609375,3.13330078 L13.390625,3.13330078 C13.05,3.13330078 12.771875,2.86386719 12.771875,2.53388672 C12.771875,2.20390625 13.05,1.93447266 13.390625,1.93447266 L13.390625,1.93447266 Z M19.665625,15.1760742 C18.60625,15.8875 17.334375,16.284082 16.034375,16.2931641 C14.7125,16.2871094 13.428125,15.8935547 12.3625,15.1791016 C11.290625,15.9026367 10.003125,16.2992187 8.684375,16.3022461 C7.553125,16.3022461 6.53125,16.0691406 5.64375,15.6120117 L5.64375,15.6120117 L5.571875,15.5726562 C5.515625,15.5423828 5.459375,15.509082 5.403125,15.4757812 L5.403125,15.4757812 L5.403125,26.4922852 C5.403125,27.2430664 6.034375,27.8545898 6.809375,27.8545898 L6.809375,27.8545898 L25.209375,27.8545898 C25.9875,27.8545898 26.61875,27.2430664 26.621875,26.4922852 L26.621875,26.4922852 L26.621875,15.4666992 C26.5625,15.5 26.50625,15.5363281 26.44375,15.5696289 C25.55,16.0449219 24.5125,16.2871094 23.3625,16.2931641 C22.034375,16.2931641 20.740625,15.8996094 19.665625,15.1760742 Z M11.53125,1.93447266 C11.875,1.93447266 12.15,2.20390625 12.15,2.53388672 C12.15,2.86386719 11.871875,3.13330078 11.53125,3.13330078 L11.53125,3.13330078 L11.11875,3.13330078 C10.778125,3.13330078 10.5,2.86386719 10.5,2.53388672 C10.5,2.20390625 10.778125,1.93447266 11.11875,1.93447266 L11.11875,1.93447266 Z" id="骨架" fill-opacity="0.9" fill="#000000"></path>
</g>
</g>
</g>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="32px" height="31px" viewBox="0 0 32 31" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 59.1 (86144) - https://sketch.com -->
<title>points_info</title>
<desc>Created with Sketch.</desc>
<g id="iOS" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="(登录前)首页" transform="translate(-292.000000, -392.000000)">
<g id="组件/菜单/按钮菜单" transform="translate(5.000000, 378.000000)">
<g id="图标" transform="translate(269.000000, 13.000000)">
<g id="icon/积分商城" transform="translate(18.000000, 1.000000)">
<g id="points_info">
<path d="M8.09904762,16.3192857 C8.09890176,18.1652521 9.11539745,19.8710559 10.7655964,20.7940799 C12.4157954,21.7171039 14.4489665,21.7171039 16.0991655,20.7940799 C17.7493645,19.8710559 18.7658601,18.1652521 18.7657143,16.3192857 C18.7658601,14.4733193 17.7493645,12.7675155 16.0991655,11.8444915 C14.4489665,10.9214675 12.4157954,10.9214675 10.7655964,11.8444915 C9.11539745,12.7675155 8.09890176,14.4733193 8.09904762,16.3192857 Z" id="风格颜色" fill="#07C160"></path>
<path d="M13.4323809,10.075 C15.1542857,10.075 16.7695238,10.7245238 17.9885714,11.9054762 C18.1409524,12.0530952 18.1409524,12.2819048 17.9885714,12.4295238 C17.8361905,12.5771428 17.6,12.5771428 17.4476191,12.4295238 C16.3850229,11.3948073 14.9390024,10.8153359 13.4323809,10.8204762 C10.3009524,10.8204762 7.74857141,13.2930952 7.74857144,16.3266667 C7.74857147,19.3602381 10.3009524,21.8328572 13.4323809,21.8328571 C13.6457143,21.8328571 13.8133333,21.9952381 13.8133333,22.2019048 C13.8133334,22.4085715 13.6457143,22.5635714 13.4323809,22.5635714 C9.88190475,22.5635714 6.98666666,19.7661905 6.98666666,16.3192857 C6.98666666,12.8797619 9.87428572,10.075 13.4323809,10.075 Z M13.2952381,13.3964286 C13.5085714,13.3964286 13.6761905,13.5588095 13.6761905,13.7654762 L13.6761905,16.3192857 C13.6761905,16.5259524 13.5009524,16.6883333 13.2952381,16.6883333 L10.0419047,16.6883333 C9.82857141,16.6883333 9.66095237,16.5259524 9.66095237,16.3192857 C9.66095237,16.1126191 9.82857144,15.9502381 10.0419047,15.9502381 L12.9142857,15.9502381 L12.9142857,13.7654762 C12.9142857,13.5588095 13.0819048,13.3964286 13.2952381,13.3964286 Z" id="时钟" fill-opacity="0.9" fill="#000000"></path>
<path d="M23.0247619,12.6343452 C27.6702884,12.6343452 31.3390476,14.4960221 31.3390476,16.9466667 L31.3390476,25.9145238 C31.3390476,28.3589833 27.6680736,30.2194643 23.0247619,30.2194643 C18.3792354,30.2194643 14.7104762,28.3577874 14.7104762,25.9071429 L14.7104762,16.9466667 C14.7104762,14.4960222 18.3792354,12.6343452 23.0247619,12.6343452 Z M23.0247619,27.0216667 C19.894006,27.0216667 17.2288778,26.1649705 15.8715922,24.8775766 L15.8723809,25.9145238 C15.8723809,27.5992006 19.1381851,29.10125 23.0247619,29.10125 C26.8241563,29.10125 30.0215315,27.6744188 30.1716336,26.034854 L30.1771428,25.9145238 L30.1779316,24.8775766 C28.820646,26.1649704 26.1555178,27.0216667 23.0247619,27.0216667 Z M6.04190475,2.71434523 C6.36569503,2.71434523 6.62285711,2.963471 6.62285716,3.27714284 C6.6228572,3.5908147 6.36569506,3.83994048 6.04190475,3.83994048 L2.76571428,3.83994048 C2.24379028,3.83994048 1.82285713,4.24771947 1.82285716,4.75333332 L1.82195238,6.82528571 L25.0409524,6.82528571 L25.0419048,4.75333332 C25.0419048,4.24771945 24.6209716,3.83994046 24.0990476,3.83994048 L20.6476191,3.83994048 C20.3238288,3.83994048 20.0666667,3.59081469 20.0666667,3.27714287 C20.0666667,2.96347105 20.3238288,2.71434523 20.6476191,2.71434523 L24.0990476,2.71434523 C24.6572652,2.71434523 25.1926196,2.92916657 25.587339,3.31155101 C25.9820585,3.69393546 26.2038095,4.21256006 26.2038095,4.75333332 L26.2038095,11.8907143 C26.2038095,12.1989744 25.9446604,12.4535119 25.6228572,12.4535119 C25.2990669,12.4535119 25.0419048,12.2043861 25.0419048,11.8907143 L25.0409524,7.95028571 L1.82195238,7.95028571 L1.82285716,24.7630952 C1.82285716,25.2687091 2.2437903,25.6764881 2.76571428,25.6764881 L13.7295238,25.6764881 C14.0533141,25.6764881 14.3104762,25.9256139 14.3104762,26.2392857 C14.3104762,26.5529575 14.0533141,26.8020833 13.7295238,26.8020833 L2.76571428,26.8020833 C2.20749672,26.8020833 1.67214229,26.587262 1.27742286,26.2048775 C0.882703439,25.8224931 0.660952375,25.3038685 0.660952375,24.7630952 L0.660952375,4.75333332 C0.660952375,3.62723129 1.60328638,2.71434523 2.76571428,2.71434523 L6.04190475,2.71434523 Z M23.0247619,24.0102381 C19.894006,24.0102381 17.2288778,23.1535419 15.8715922,21.8661481 L15.8721395,23.6697443 C16.6512049,25.1463532 19.6115879,26.2835714 23.0247619,26.2835714 C26.4394934,26.2835714 29.4010205,25.1453151 30.1784494,23.6677227 L30.1779316,21.8661481 C28.820646,23.1535419 26.1555178,24.0102381 23.0247619,24.0102381 Z M23.0247619,21.0578571 C19.894006,21.0578571 17.2288778,20.2011609 15.8715922,18.9137671 L15.8720506,20.6581473 C16.6509798,22.1348382 19.6114581,23.2721429 23.0247619,23.2721429 C26.4396102,23.2721429 29.4012231,22.1392294 30.1785292,20.6584684 L30.1779316,18.9137671 C28.820646,20.2011609 26.1555178,21.0578571 23.0247619,21.0578571 Z M23.0247619,13.7599405 C19.2307226,13.7599405 16.0282473,15.1913152 15.8778993,16.826661 L15.8723809,16.9466667 L15.8720506,17.7131473 C16.6509798,19.1898382 19.6114581,20.3271429 23.0247619,20.3271429 C26.4396102,20.3271429 29.4012231,19.1942294 30.1785292,17.7134684 L30.1771428,16.9466667 C30.1771428,15.2619899 26.9113387,13.7599405 23.0247619,13.7599405 Z M19.1662202,15.5232496 C19.253326,15.7018293 19.1811836,15.9152227 19.0019047,16.0092857 C18.3923809,16.2897619 18.0190476,16.6292857 17.9961905,16.9319048 C17.9733333,17.2419048 18.3314286,17.522381 18.5523809,17.662619 C19.6038095,18.3416666 21.7447619,18.7107143 23.8704762,18.5852381 C24.0718809,18.586469 24.2377901,18.7387986 24.2498529,18.933563 C24.2619157,19.1283275 24.1159984,19.2987819 23.9161905,19.3233333 C23.6190476,19.3233333 23.3142857,19.3380952 23.0095238,19.3380952 C21.0209524,19.3380952 19.1695238,18.9395238 18.1257143,18.2678571 C17.3409524,17.7585714 17.2114286,17.2271428 17.2342857,16.8728571 C17.2647619,16.4595238 17.5390476,15.8542857 18.6742857,15.337619 C18.8631313,15.2631691 19.0791143,15.3446698 19.1662202,15.5232496 Z M27.9161905,15.6180952 C28.7009524,16.1273809 28.8304762,16.6588095 28.8076191,17.0130952 C28.7771429,17.4264285 28.5028572,18.0316666 27.3676191,18.5483333 C27.3142857,18.5852381 27.2533333,18.592619 27.2,18.592619 C27.0552381,18.592619 26.9180953,18.5114285 26.8571428,18.3785714 C26.7670184,18.1930796 26.8487972,17.9719147 27.04,17.8840476 C27.6495238,17.6035714 28.0228572,17.2640476 28.0457143,16.9614286 C28.0685714,16.6514286 27.7104762,16.3709524 27.4895238,16.2307143 C26.4380952,15.5516667 24.3047619,15.1826191 22.1714286,15.3080952 C21.9700238,15.3068643 21.8041147,15.1545348 21.7920519,14.9597703 C21.779989,14.7650059 21.9259064,14.5945514 22.1257143,14.57 C24.4495238,14.4297619 26.72,14.8357143 27.9161905,15.6180952 Z M8.70857144,0.97428571 C9.54666669,0.97428571 10.2323809,1.63857142 10.2323809,2.45047619 L10.2323809,3.92666668 C10.2323809,4.74194414 9.55014818,5.40285713 8.70857144,5.40285713 C7.87047619,5.40285713 7.18476191,4.73857142 7.18476191,3.92666668 L7.18476191,2.45047619 C7.18476191,1.63857142 7.87047619,0.97428571 8.70857144,0.97428571 Z M17.9809524,0.97428571 C18.8190476,0.97428571 19.5047619,1.63857142 19.5047619,2.45047619 L19.5047619,3.92666668 C19.5047619,4.73857145 18.8190476,5.40285713 17.9809524,5.40285713 C17.1428571,5.40285713 16.4571428,4.73857142 16.4571428,3.92666668 L16.4571428,2.45047619 C16.4571428,1.63857142 17.1428571,0.97428571 17.9809524,0.97428571 Z M8.70857144,1.71238097 C8.28952381,1.71238097 7.94666666,2.04452384 7.94666666,2.45047619 L7.94666666,3.92666668 C7.94666666,4.33261906 8.28952381,4.6647619 8.70857144,4.6647619 C9.12761906,4.6647619 9.47047619,4.33261903 9.47047619,3.92666668 L9.47047619,2.45047619 C9.47047619,2.04452381 9.13523809,1.71238097 8.70857144,1.71238097 Z M17.9809524,1.71238097 C17.5619048,1.71238097 17.2190476,2.04452384 17.2190476,2.45047619 L17.2190476,3.92666668 C17.2190476,4.33261906 17.5619048,4.6647619 17.9809524,4.6647619 C18.4,4.6647619 18.7428572,4.33261903 18.7428572,3.92666668 L18.7428572,2.45047619 C18.7428572,2.04452381 18.4,1.71238097 17.9809524,1.71238097 Z M15.3142857,2.71434523 C15.638076,2.71434523 15.8952381,2.96347102 15.8952381,3.27714287 C15.8952381,3.59081471 15.638076,3.83994048 15.3142857,3.83994048 L11.3752381,3.83994048 C11.0514478,3.83994048 10.7942857,3.59081469 10.7942857,3.27714287 C10.7942857,2.96347105 11.0514478,2.71434523 11.3752381,2.71434523 L15.3142857,2.71434523 Z" id="骨架" fill-opacity="0.9" fill="#000000"></path>
</g>
</g>
</g>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="346px" height="96px" viewBox="0 0 346 96" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 59.1 (86144) - https://sketch.com -->
<title>历史订单</title>
<desc>Created with Sketch.</desc>
<defs>
<rect id="path-1" x="0" y="0" width="375" height="96"></rect>
</defs>
<g id="iOS-最新版本" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="历史订单">
<mask id="mask-2" fill="white">
<use xlink:href="#path-1"></use>
</mask>
<g id="蒙版" fill-rule="nonzero"></g>
<g id="3.通用组件/彩色版/账单" opacity="0.300000012" mask="url(#mask-2)">
<g transform="translate(264.000000, 16.000000)" id="资源-4">
<g transform="translate(0.335938, 0.078125)">
<path d="M3.41254661,95.7532086 L6.78350497,99.1813814 L10.1972068,95.7532086 L13.5681652,99.1813814 L16.981867,95.7532086 L20.3528254,99.1813814 L23.7642168,95.7532086 L27.1351751,99.1813814 L30.548877,95.7532086 L33.9198353,99.1813814 L37.3323819,95.7532086 L40.7033403,99.1813814 L44.1158869,95.7532086 L47.4868453,99.1813814 L50.9005471,95.7532086 L54.2703502,99.1813814 L57.6840521,95.7532086 L61.0550104,99.1813814 L64.467557,95.7532086 L67.8385154,99.1813814 L71.2522172,95.7532086 L74.6277965,99.1825364 L78.0357222,95.7532086 L81.328125,99.1028383 L81.328125,2.77210737 C81.328125,1.24111474 80.0868122,0 78.5555753,0 L2.77254972,0 C1.24131279,0 0,1.24111474 0,2.77210737 L0,99.7265625 L0,99.7265625 L0,99.1825364 L3.41254661,95.7532086 Z" id="路径" fill="#FFFFFF" fill-rule="nonzero" opacity="0.300000012"></path>
<rect id="矩形" fill="#FFFFFF" fill-rule="nonzero" x="14.765625" y="33.28125" width="51.796875" height="3.75" rx="1.02272727"></rect>
<path d="M2.77254972,0 L78.5555753,0 C80.0868122,0 81.328125,1.25919914 81.328125,2.8125 L81.328125,3.75 L0,3.75 L0,2.8125 C0,1.25919914 1.24131279,0 2.77254972,0 Z" id="路径" fill="#FFFFFF" fill-rule="nonzero"></path>
<rect id="矩形" fill="#FFFFFF" fill-rule="nonzero" x="14.765625" y="41.015625" width="51.796875" height="3.75" rx="1.02272727"></rect>
<rect id="矩形" fill="#FFFFFF" fill-rule="nonzero" x="14.765625" y="48.75" width="51.796875" height="3.75" rx="1.02272727"></rect>
<path d="M7.35255682,74.53125 L23.2333807,74.53125 C23.669717,74.53125 24.0234375,74.8849705 24.0234375,75.3213068 L24.0234375,75.3818182 C24.0234375,75.8181545 23.669717,76.171875 23.2333807,76.171875 L7.35255682,76.171875 C6.91622049,76.171875 6.5625,75.8181545 6.5625,75.3818182 L6.5625,75.3213068 C6.5625,74.8849705 6.91622049,74.53125 7.35255682,74.53125 Z" id="矩形" fill="#FFFFFF" fill-rule="nonzero" transform="translate(15.292969, 75.351562) rotate(90.000000) translate(-15.292969, -75.351562) "></path>
<path d="M10.7509943,74.296875 L26.6318182,74.296875 C27.0681545,74.296875 27.421875,74.6505955 27.421875,75.0869318 L27.421875,75.9677557 C27.421875,76.404092 27.0681545,76.7578125 26.6318182,76.7578125 L10.7509943,76.7578125 C10.314658,76.7578125 9.9609375,76.404092 9.9609375,75.9677557 L9.9609375,75.0869318 C9.9609375,74.6505955 10.314658,74.296875 10.7509943,74.296875 Z" id="矩形" fill="#FFFFFF" fill-rule="nonzero" transform="translate(18.691406, 75.527344) rotate(90.000000) translate(-18.691406, -75.527344) "></path>
<path d="M27.6259943,74.296875 L43.5068182,74.296875 C43.9431545,74.296875 44.296875,74.6505955 44.296875,75.0869318 L44.296875,75.9677557 C44.296875,76.404092 43.9431545,76.7578125 43.5068182,76.7578125 L27.6259943,76.7578125 C27.189658,76.7578125 26.8359375,76.404092 26.8359375,75.9677557 L26.8359375,75.0869318 C26.8359375,74.6505955 27.189658,74.296875 27.6259943,74.296875 Z" id="矩形" fill="#FFFFFF" fill-rule="nonzero" transform="translate(35.566406, 75.527344) rotate(90.000000) translate(-35.566406, -75.527344) "></path>
<path d="M20.8291193,74.296875 L36.7099432,74.296875 C37.1462795,74.296875 37.5,74.6505955 37.5,75.0869318 L37.5,75.9677557 C37.5,76.404092 37.1462795,76.7578125 36.7099432,76.7578125 L20.8291193,76.7578125 C20.392783,76.7578125 20.0390625,76.404092 20.0390625,75.9677557 L20.0390625,75.0869318 C20.0390625,74.6505955 20.392783,74.296875 20.8291193,74.296875 Z" id="矩形" fill="#FFFFFF" fill-rule="nonzero" transform="translate(28.769531, 75.527344) rotate(90.000000) translate(-28.769531, -75.527344) "></path>
<path d="M13.8867188,74.8828125 L30.0585938,74.8828125 C30.4145585,74.8828125 30.703125,75.171379 30.703125,75.5273438 C30.703125,75.8833085 30.4145585,76.171875 30.0585938,76.171875 L13.8867188,76.171875 C13.530754,76.171875 13.2421875,75.8833085 13.2421875,75.5273438 C13.2421875,75.171379 13.530754,74.8828125 13.8867188,74.8828125 Z" id="矩形" fill="#FFFFFF" fill-rule="nonzero" transform="translate(21.972656, 75.527344) rotate(90.000000) translate(-21.972656, -75.527344) "></path>
<rect id="矩形" fill="#FFFFFF" fill-rule="nonzero" transform="translate(25.371094, 75.527344) rotate(90.000000) translate(-25.371094, -75.527344) " x="16.640625" y="74.8828125" width="17.4609375" height="1.2890625" rx="0.64453125"></rect>
<path d="M24.0820312,74.8828125 L40.2539062,74.8828125 C40.609871,74.8828125 40.8984375,75.171379 40.8984375,75.5273438 C40.8984375,75.8833085 40.609871,76.171875 40.2539062,76.171875 L24.0820312,76.171875 C23.7260665,76.171875 23.4375,75.8833085 23.4375,75.5273438 C23.4375,75.171379 23.7260665,74.8828125 24.0820312,74.8828125 Z" id="矩形" fill="#FFFFFF" fill-rule="nonzero" transform="translate(32.167969, 75.527344) rotate(90.000000) translate(-32.167969, -75.527344) "></path>
<path d="M30.5273438,75.234375 L47.4023438,75.234375 C47.5641459,75.234375 47.6953125,75.3655416 47.6953125,75.5273438 C47.6953125,75.6891459 47.5641459,75.8203125 47.4023438,75.8203125 L30.5273438,75.8203125 C30.3655416,75.8203125 30.234375,75.6891459 30.234375,75.5273438 C30.234375,75.3655416 30.3655416,75.234375 30.5273438,75.234375 Z" id="矩形" fill="#FFFFFF" fill-rule="nonzero" transform="translate(38.964844, 75.527344) rotate(90.000000) translate(-38.964844, -75.527344) "></path>
<path d="M34.3056818,74.53125 L50.1865057,74.53125 C50.622842,74.53125 50.9765625,74.8849705 50.9765625,75.3213068 L50.9765625,75.3818182 C50.9765625,75.8181545 50.622842,76.171875 50.1865057,76.171875 L34.3056818,76.171875 C33.8693455,76.171875 33.515625,75.8181545 33.515625,75.3818182 L33.515625,75.3213068 C33.515625,74.8849705 33.8693455,74.53125 34.3056818,74.53125 Z" id="矩形" fill="#FFFFFF" fill-rule="nonzero" transform="translate(42.246094, 75.351562) rotate(90.000000) translate(-42.246094, -75.351562) "></path>
<path d="M37.7041193,74.296875 L53.5849432,74.296875 C54.0212795,74.296875 54.375,74.6505955 54.375,75.0869318 L54.375,75.9677557 C54.375,76.404092 54.0212795,76.7578125 53.5849432,76.7578125 L37.7041193,76.7578125 C37.267783,76.7578125 36.9140625,76.404092 36.9140625,75.9677557 L36.9140625,75.0869318 C36.9140625,74.6505955 37.267783,74.296875 37.7041193,74.296875 Z" id="矩形" fill="#FFFFFF" fill-rule="nonzero" transform="translate(45.644531, 75.527344) rotate(90.000000) translate(-45.644531, -75.527344) "></path>
<path d="M54.5791193,74.296875 L70.4599432,74.296875 C70.8962795,74.296875 71.25,74.6505955 71.25,75.0869318 L71.25,75.9677557 C71.25,76.404092 70.8962795,76.7578125 70.4599432,76.7578125 L54.5791193,76.7578125 C54.142783,76.7578125 53.7890625,76.404092 53.7890625,75.9677557 L53.7890625,75.0869318 C53.7890625,74.6505955 54.142783,74.296875 54.5791193,74.296875 Z" id="矩形" fill="#FFFFFF" fill-rule="nonzero" transform="translate(62.519531, 75.527344) rotate(90.000000) translate(-62.519531, -75.527344) "></path>
<path d="M47.8994318,74.296875 L63.7802557,74.296875 C64.216592,74.296875 64.5703125,74.6505955 64.5703125,75.0869318 L64.5703125,75.9677557 C64.5703125,76.404092 64.216592,76.7578125 63.7802557,76.7578125 L47.8994318,76.7578125 C47.4630955,76.7578125 47.109375,76.404092 47.109375,75.9677557 L47.109375,75.0869318 C47.109375,74.6505955 47.4630955,74.296875 47.8994318,74.296875 Z" id="矩形" fill="#FFFFFF" fill-rule="nonzero" transform="translate(55.839844, 75.527344) rotate(90.000000) translate(-55.839844, -75.527344) "></path>
<path d="M40.9570312,74.8828125 L57.1289062,74.8828125 C57.484871,74.8828125 57.7734375,75.171379 57.7734375,75.5273438 C57.7734375,75.8833085 57.484871,76.171875 57.1289062,76.171875 L40.9570312,76.171875 C40.6010665,76.171875 40.3125,75.8833085 40.3125,75.5273438 C40.3125,75.171379 40.6010665,74.8828125 40.9570312,74.8828125 Z" id="矩形" fill="#FFFFFF" fill-rule="nonzero" transform="translate(49.042969, 75.527344) rotate(90.000000) translate(-49.042969, -75.527344) "></path>
<path d="M44.3554688,74.8828125 L60.5273438,74.8828125 C60.8833085,74.8828125 61.171875,75.171379 61.171875,75.5273438 C61.171875,75.8833085 60.8833085,76.171875 60.5273438,76.171875 L44.3554688,76.171875 C43.999504,76.171875 43.7109375,75.8833085 43.7109375,75.5273438 C43.7109375,75.171379 43.999504,74.8828125 44.3554688,74.8828125 Z" id="矩形" fill="#FFFFFF" fill-rule="nonzero" transform="translate(52.441406, 75.527344) rotate(90.000000) translate(-52.441406, -75.527344) "></path>
<path d="M51.1523438,74.8828125 L67.3242188,74.8828125 C67.6801835,74.8828125 67.96875,75.171379 67.96875,75.5273438 C67.96875,75.8833085 67.6801835,76.171875 67.3242188,76.171875 L51.1523438,76.171875 C50.796379,76.171875 50.5078125,75.8833085 50.5078125,75.5273438 C50.5078125,75.171379 50.796379,74.8828125 51.1523438,74.8828125 Z" id="矩形" fill="#FFFFFF" fill-rule="nonzero" transform="translate(59.238281, 75.527344) rotate(90.000000) translate(-59.238281, -75.527344) "></path>
<path d="M57.4804688,75.234375 L74.3554688,75.234375 C74.5172709,75.234375 74.6484375,75.3655416 74.6484375,75.5273438 C74.6484375,75.6891459 74.5172709,75.8203125 74.3554688,75.8203125 L57.4804688,75.8203125 C57.3186666,75.8203125 57.1875,75.6891459 57.1875,75.5273438 C57.1875,75.3655416 57.3186666,75.234375 57.4804688,75.234375 Z" id="矩形" fill="#FFFFFF" fill-rule="nonzero" transform="translate(65.917969, 75.527344) rotate(90.000000) translate(-65.917969, -75.527344) "></path>
<path d="M38.8364717,21.4443191 C38.5562835,21.23803 38.3085554,20.9910811 38.1015,20.711659 C37.8237155,20.3430177 37.6385258,19.7386309 37.5227822,19.0729965 C36.9799449,19.0071265 36.5586384,18.4778547 36.5586384,17.834177 C36.5586384,17.2817929 36.8688311,16.8137687 37.2993972,16.6508269 C37.2831931,16.034884 37.2993972,15.6107732 37.2993972,15.6107732 C37.3063841,14.5532855 37.8362085,13.5675368 38.7149409,12.9771259 C38.7149409,12.9771259 39.6281576,11.9532508 42.4627175,11.9532508 L42.4627175,12.8141842 C43.4836356,13.3763415 44.1216186,14.444453 44.1317396,15.6084619 C44.1317396,15.6084619 44.1456288,16.0568407 44.1317396,16.6970515 C44.5375658,16.9301801 44.7824904,17.3668895 44.7694866,17.834177 C44.7694866,18.4339413 44.4025795,18.9354783 43.9141417,19.0533511 C43.792611,19.7270748 43.6074213,20.3395509 43.3273219,20.711659 C43.0962088,21.0278129 42.81189,21.3015184 42.4870236,21.5205897 L42.4870236,22.8483917 C43.2586938,23.1194387 44.014529,23.433489 44.7509677,23.7890625 C47.7551317,21.9603351 49.1738228,18.3593425 48.2225971,14.9771992 C47.2713713,11.5950559 44.182555,9.2578125 40.6640625,9.2578125 C37.14557,9.2578125 34.0567537,11.5950559 33.1055279,14.9771992 C32.1543022,18.3593425 33.5729933,21.9603351 36.5771573,23.7890625 C37.313596,23.433489 38.0694312,23.1194387 38.8411014,22.8483917 L38.8364717,21.4443191 Z" id="路径" fill="#FFFFFF" fill-rule="nonzero" opacity="0.539999962"></path>
<path d="M44.7467186,23.8140919 C44.0112169,23.4576583 43.2563433,23.1428484 42.4856548,22.8711456 L42.4856548,21.5401318 C42.8101079,21.3205305 43.094065,21.046163 43.324884,20.7292443 C43.6046271,20.3562361 43.7872693,19.7422784 43.9109573,19.066925 C44.3987737,18.9510839 44.765214,18.4460169 44.765214,17.8448017 C44.776999,17.3794052 44.5345781,16.9446107 44.1329022,16.7107177 C44.1513976,16.0689581 44.1329022,15.6194948 44.1329022,15.6194948 C44.1222279,14.4503725 43.4820819,13.37825 42.4590677,12.816141 L42.4590677,11.953125 C39.6281141,11.953125 38.7160592,12.9794769 38.7160592,12.9794769 C37.8384448,13.5713159 37.3092945,14.5594492 37.3023164,15.6194948 C37.3023164,15.6194948 37.2884448,16.0469483 37.3023164,16.6620644 C36.8722981,16.8254003 36.5625,17.2945566 36.5625,17.8482769 C36.5625,18.4935117 36.9832706,19.0240638 37.5254172,19.0900932 C37.6467934,19.7573377 37.8305915,20.3643449 38.1033988,20.7327195 C38.3101908,21.0128175 38.5576036,21.2603638 38.8374354,21.4671519 L38.8374354,22.8699872 C38.0667469,23.14169 37.3118733,23.4564999 36.5763716,23.8129335 C39.083162,25.3436055 42.2329924,25.3436055 44.7397829,23.8129335 L44.7467186,23.8140919 Z" id="路径" fill="#FFFFFF" fill-rule="nonzero"></path>
</g>
</g>
</g>
<g id="编组" opacity="0.100000001" mask="url(#mask-2)" fill="#FFFFFF" fill-rule="nonzero">
<g transform="translate(139.000000, 10.500000) rotate(-90.000000) translate(-139.000000, -10.500000) translate(40.000000, -157.000000)" id="路径">
<path d="M70.5,0.5 C70.5,0.5 70.5,18.4057426 70.5,31.1295583 C70.5,38.821286 74.5873044,45.9136582 81.2037696,49.7720086 C101.753201,61.6841972 144.70377,86.594906 144.70377,86.594906 L70.5,129.636116 C70.5,129.636116 70.5,129.636116 70.5,129.648602 C70.5,138.526554 75.2195946,146.717745 82.8748222,151.175451 C90.5300498,155.608183 99.969239,155.608183 107.624467,151.175451 C131.967639,137.040652 163.514403,118.747826 186.79623,105.249843 C193.435277,101.403979 197.5,94.2991203 197.5,86.6073926 C197.5,78.915665 193.412696,71.8108062 186.79623,67.9649423 C143.123044,42.6296901 70.5,0.5 70.5,0.5 Z"></path>
<path d="M197.5,51.5 C197.5,51.5 197.5,72.9474072 197.5,88.1729724 C197.5,97.3860846 192.593298,105.896248 184.650406,110.502804 C151.170978,129.871279 63.8804871,180.393832 63.8804871,180.393832 L197.5,257.733123 L197.5,257.733123 C197.5,268.367088 191.86136,278.193411 182.67146,283.517872 C173.48156,288.827376 162.150062,288.827376 152.960162,283.517872 C112.107128,259.871881 52.2236824,225.218016 13.3495941,202.723664 C5.40670153,198.117108 0.5,189.606944 0.5,180.393832 C0.5,171.18072 5.40670153,162.685513 13.3495941,158.078957 C77.1096051,121.181639 197.5,51.5 197.5,51.5 Z" transform="translate(99.000000, 169.500000) rotate(-180.000000) translate(-99.000000, -169.500000) "></path>
<path d="M167.960914,203.491011 C173.746215,200.169663 180.879714,200.169663 186.665015,203.491011 C192.450317,206.821714 196,212.968546 196,219.620597 L196,219.620597 L111.882742,268 L196,316.379403 L196,316.379403 C196,323.031454 192.450317,329.178286 186.665015,332.508989 C180.879714,335.830337 173.746215,335.830337 167.960914,332.508989 C142.242775,317.717298 104.544454,296.039658 80.0891825,281.968371 C75.0889072,279.086752 72,273.76324 72,268 C72,262.23676 75.0889072,256.922604 80.0891825,254.040984 C104.544454,239.969698 142.242775,218.292058 167.960914,203.491011 Z"></path>
</g>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="358px" height="96px" viewBox="0 0 358 96" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 59.1 (86144) - https://sketch.com -->
<title>选择商家</title>
<desc>Created with Sketch.</desc>
<defs>
<rect id="path-1" x="0" y="0" width="375" height="96"></rect>
</defs>
<g id="iOS-最新版本" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="选择商家">
<mask id="mask-2" fill="white">
<use xlink:href="#path-1"></use>
</mask>
<g id="蒙版" fill-rule="nonzero"></g>
<g id="编组" opacity="0.1" mask="url(#mask-2)" fill="#FFFFFF" fill-rule="nonzero">
<g transform="translate(128.000000, 33.500000) rotate(-90.000000) translate(-128.000000, -33.500000) translate(29.000000, -134.000000)" id="路径">
<path d="M70.5,0.5 C70.5,0.5 70.5,18.4057426 70.5,31.1295583 C70.5,38.821286 74.5873044,45.9136582 81.2037696,49.7720086 C101.753201,61.6841972 144.70377,86.594906 144.70377,86.594906 L70.5,129.636116 C70.5,129.636116 70.5,129.636116 70.5,129.648602 C70.5,138.526554 75.2195946,146.717745 82.8748222,151.175451 C90.5300498,155.608183 99.969239,155.608183 107.624467,151.175451 C131.967639,137.040652 163.514403,118.747826 186.79623,105.249843 C193.435277,101.403979 197.5,94.2991203 197.5,86.6073926 C197.5,78.915665 193.412696,71.8108062 186.79623,67.9649423 C143.123044,42.6296901 70.5,0.5 70.5,0.5 Z"></path>
<path d="M197.5,51.5 C197.5,51.5 197.5,72.9474072 197.5,88.1729724 C197.5,97.3860846 192.593298,105.896248 184.650406,110.502804 C151.170978,129.871279 63.8804871,180.393832 63.8804871,180.393832 L197.5,257.733123 L197.5,257.733123 C197.5,268.367088 191.86136,278.193411 182.67146,283.517872 C173.48156,288.827376 162.150062,288.827376 152.960162,283.517872 C112.107128,259.871881 52.2236824,225.218016 13.3495941,202.723664 C5.40670153,198.117108 0.5,189.606944 0.5,180.393832 C0.5,171.18072 5.40670153,162.685513 13.3495941,158.078957 C77.1096051,121.181639 197.5,51.5 197.5,51.5 Z" transform="translate(99.000000, 169.500000) rotate(-180.000000) translate(-99.000000, -169.500000) "></path>
<path d="M167.960914,203.491011 C173.746215,200.169663 180.879714,200.169663 186.665015,203.491011 C192.450317,206.821714 196,212.968546 196,219.620597 L196,219.620597 L111.882742,268 L196,316.379403 L196,316.379403 C196,323.031454 192.450317,329.178286 186.665015,332.508989 C180.879714,335.830337 173.746215,335.830337 167.960914,332.508989 C142.242775,317.717298 104.544454,296.039658 80.0891825,281.968371 C75.0889072,279.086752 72,273.76324 72,268 C72,262.23676 75.0889072,256.922604 80.0891825,254.040984 C104.544454,239.969698 142.242775,218.292058 167.960914,203.491011 Z"></path>
</g>
</g>
<g id="3.通用组件/彩色版/地图" opacity="0.200000003" mask="url(#mask-2)">
<g transform="translate(261.000000, 14.000000)" id="资源-23">
<g transform="translate(0.621094, 0.621094)">
<rect id="矩形" fill="#FFFFFF" fill-rule="nonzero" opacity="0.5" x="0" y="29.5175781" width="95.8740234" height="66.3564453" rx="2.25"></rect>
<polygon id="路径" fill="#FFFFFF" fill-rule="nonzero" opacity="0.400000006" points="0 47.8789062 18.4775391 62.6317213 0 84.7177734"></polygon>
<path d="M0,33.3229888 L35.5344319,62.4052734 L64.8457031,29.4013672 L2.76380194,29.4013672 C1.23739628,29.4013672 0,30.6407341 0,32.1695707 L0,33.3229888 Z" id="路径" fill="#FFFFFF" fill-rule="nonzero" opacity="0.400000006"></path>
<path d="M65.8281227,83.1668678 C62.6374494,87.8941465 60.8262155,92.6214251 59.8486328,95.8740234 L92.9943279,95.8740234 C94.5205583,95.8740234 95.7578125,94.6351114 95.7578125,93.1068359 L95.7578125,66.4726562 C89.0793913,66.9338542 83.1275364,68.6552754 78.0185442,71.616166 C73.2262013,74.3902715 69.1247295,78.2781699 65.8281227,83.1668678 Z" id="路径" fill="#FFFFFF" fill-rule="nonzero" opacity="0.400000006"></path>
<path d="M74.430686,65.1703683 C68.6608475,68.50785 63.7447331,73.1446478 59.8159893,78.9553185 C55.3860714,85.5082912 53.2488808,92.0382467 52.2949219,95.7578125 L59.9438751,95.7578125 C60.9220286,92.5123993 62.7343201,87.7973433 65.9268566,83.0742312 C69.2253884,78.1946028 73.3292552,74.3139172 78.1243965,71.5403549 C83.236372,68.587259 89.1917025,66.8667297 95.8740234,66.4098399 L95.8740234,59.0351562 C87.8598468,59.508158 80.6659827,61.5670389 74.430686,65.1703683 Z" id="路径" fill="#FFFFFF" fill-rule="nonzero"></path>
<path d="M22.0800781,81.1152344 C13.9674784,81.1150526 7.37563425,87.6549924 7.32128906,95.7578125 L36.8388672,95.7578125 C36.784522,87.6549924 30.1926778,81.1150526 22.0800781,81.1152344 L22.0800781,81.1152344 Z" id="路径" fill="#597EF7" fill-rule="nonzero"></path>
<path d="M79.1396484,31.2922168 C79.1396484,14.0262158 65.1706243,0.0265374492 47.92834,0 C30.8943765,-0.0264610861 16.8873943,13.7439409 16.6226773,30.7979479 C16.4783826,39.2899989 19.7993717,47.4737986 25.8187158,53.4594303 L25.7818856,53.4594303 L45.9913022,75.2349154 C46.5159803,75.8003464 47.2528353,76.1205575 48.0237625,76.1181641 C48.7946897,76.1157437 49.5295351,75.790938 50.0506798,75.2222418 L69.9781152,53.4594303 L69.9412851,53.4594303 C75.838176,47.594228 79.1497358,39.6136519 79.1396484,31.2922168 Z" id="路径" fill="#FFFFFF" fill-rule="nonzero" opacity="0.5"></path>
<circle id="椭圆形" fill="#FFFFFF" fill-rule="nonzero" cx="47.9370117" cy="31.6674805" r="18.8842773"></circle>
</g>
</g>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="64px" height="64px" viewBox="0 0 64 64" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 59.1 (86144) - https://sketch.com -->
<title>已使用</title>
<desc>Created with Sketch.</desc>
<defs>
<circle id="path-1" cx="32" cy="32" r="32"></circle>
</defs>
<g id="组件" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" opacity="0.5">
<g id="组件/优惠券/状态版本2">
<g id="编组-3">
<g id="编组-2" transform="translate(6.000000, 20.000000)">
<text id="已使用" font-family="PingFangSC-Semibold, PingFang SC" font-size="12" font-weight="500" line-spacing="20" fill="#BDBDBD">
<tspan x="8.5" y="13">已使用</tspan>
</text>
<g id="编组" transform="translate(10.000000, 19.000000)" stroke="#BDBDBD">
<circle id="椭圆形" cx="17" cy="1" r="1.5"></circle>
<line x1="34" y1="1" x2="23" y2="1" id="路径-2"></line>
<line x1="11" y1="1" x2="0" y2="1" id="路径-2备份"></line>
</g>
</g>
<g id="椭圆形备份">
<mask id="mask-2" fill="white">
<use xlink:href="#path-1"></use>
</mask>
<circle stroke="#BDBDBD" cx="32" cy="32" r="31.5"></circle>
<path d="M32.5,60 C47.6878306,60 60,47.6878306 60,32.5 C60,17.3121694 47.6878306,5 32.5,5 C17.3121694,5 5,17.3121694 5,32.5" stroke="#BDBDBD" stroke-dasharray="3,3" mask="url(#mask-2)" transform="translate(32.500000, 32.500000) rotate(45.000000) translate(-32.500000, -32.500000) "></path>
</g>
</g>
</g>
</g>
</svg>
\ No newline at end of file
// pages/details/bonusHistory/bonusHistory.js
const app = getApp();
var api = require('../../../utils/api.js');
var error = require('../../../utils/error.js');
var storage = require('../../../utils/storage.js');
Page({
/**
* 页面的初始数据
*/
data: {
showThis:true,
httpHeader: {},
vipInfo: {},
bonusHistoryList: [],
bonusHistoryRNParams: { 'vipName': '', 'vipMobile': '', 'pageIndex': 1 }
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
this.setData({
httpHeader: wx.getStorageSync(storage.NBR_Session),
vipInfo: wx.getStorageSync(storage.DEFAULT_VIP_INFO)
});
this.data.bonusHistoryRNParams.vipID = this.data.vipInfo.ID;
this.setData({
bonusHistoryRNParams: this.data.bonusHistoryRNParams
});
this.bonusHistoryRN(this.data.bonusHistoryRNParams);
console.log(this.data.vipInfo)
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
let that = this
//查询会员卡属性
wx.request({
url: api.vipCardR1,
method: api.GET,
header: that.data.httpHeader,
data: { 'ID': 1 }, //目前每个公司or门店只有一种会员卡默认传1
success(res) {
console.log(res);
if (res.header.sessionStatus == "timeOut") {
app.afreshLogin('../login/login');
} else {
if (res.data.ERROR != error.EC_NoError) {
wx.showToast({
title: '查询会员卡属性失败',
icon: 'none'
})
return;
}
var vipCardInfo = res.data.object;
var vipCardBackground = vipCardInfo.backgroundColor.split(";")
that.setData({ vipCardBackground: "linear-gradient(180deg,rgba(" + vipCardBackground[0] + ",1) 0%,rgba(" + vipCardBackground[1] + ",1) 100%)" });
}
},
fail(res) {
console.log(res);
wx.showToast({
title: '查询会员卡属性失败',
icon: 'none'
})
}
});
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
this.data.bonusHistoryRNParams.pageIndex = 1;
this.onLoad();
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
console.log("发送上拉触底事件");
this.bonusHistoryRN(this.data.bonusHistoryRNParams);
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
},
//查询积分明细
bonusHistoryRN: function (params) {
console.log(params)
wx.showLoading({
title: '加载中,请稍等',
mask: true
})
let that = this;
wx.request({
url: api.bonusHistoryRN,
method: api.POST,
header: {
'content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
'X-Requested-With': 'XMLHttpRequest',
'cookie': that.data.httpHeader.cookie
},
data: params,
success(res) {
console.log(res);
if (res.header.sessionStatus == "timeOut") {
app.afreshLogin('../../login/login');
return;
}
if (res.data.ERROR != error.EC_NoError) {
wx.showToast({
title: '查询积分明细失败,请重试',
icon: 'none'
})
return;
}
if (res.data.objectList.length > 0) {
for (var i = 0; i < res.data.objectList.length; i++) {
res.data.objectList[i].createDatetime = res.data.objectList[i].createDatetime.substring(0, res.data.objectList[i].createDatetime.length - 4);
}
if (that.data.bonusHistoryRNParams.pageIndex > 1) {
console.log("拼接数组")
that.setData({
bonusHistoryList: that.data.bonusHistoryList.concat(res.data.objectList)
});
console.log(that.data.bonusHistoryList)
} else {
console.log("初始数组")
that.setData({
bonusHistoryList: res.data.objectList
});
console.log(that.data.bonusHistoryList)
}
that.data.bonusHistoryRNParams.pageIndex = that.data.bonusHistoryRNParams.pageIndex + 1;
that.setData({
bonusHistoryRNParams: that.data.bonusHistoryRNParams
});
} else {
if (that.data.bonusHistoryRNParams.pageIndex == 1) {
that.setData({
showThis: false,
});
wx.showToast({
title: '暂无积分明细',
icon: 'none'
})
} else {
wx.showToast({
title: '已到最底了',
icon: 'none'
})
}
}
},
fail(res) {
console.log(res);
wx.showToast({
title: '查询积分明细失败,请重试',
icon: 'none'
})
},
complete(res) {
wx.hideLoading();
}
})
}
})
\ No newline at end of file
{
"usingComponents": {},
"navigationBarTitleText": "积分明细",
"enablePullDownRefresh": true
}
\ No newline at end of file
<!--pages/details/bonusHistory/bonusHistory.wxml-->
<view class="container">
<view class="head" style="background: {{ vipCardBackground }}">
<image src="../../../images/bonusHistory.svg" class="background"></image>
<text>可用积分</text>
<view>{{vipInfo.bonus}}</view>
</view>
<view class="page-body">
<view class="none" hidden='{{showThis}}'>
<text>暂无记录</text>
</view>
<view class="bonusHistory">
<block wx:for="{{bonusHistoryList}}" wx:key="*this">
<view class="detail">
<view class="detail-left">
<text class="reason">{{item.remark}}</text>
<text class="dateTime">{{item.createDatetime}}</text>
</view>
<view class="detail-right">
<view wx:if="{{item.addedBonus >= 0}}"><text>+{{item.addedBonus}}</text></view>
<view wx:elif="{{item.addedBonus < 0}}"><text>{{item.addedBonus}}</text></view>
</view>
<text class="allBonus">积分: {{vipInfo.bonus}}</text>
</view>
</block>
</view>
</view>
</view>
\ No newline at end of file
/* pages/details/bonusHistory/bonusHistory.wxss */
page{
background:rgba(248,248,248,1);
}
button::after{
border: none;
}
.page-body{
width: 100%;
}
.bonusHistory{
padding-top: 16rpx;
}
.head{
width: 100%;
height: 170rpx;
}
.head text{
position: absolute;
font-size: 25rpx;
margin-top:43rpx ;
margin-left: 38rpx;
color: #fff;
}
.head .background{
position: absolute;
height: 796rpx;
width: 635rpx;
margin-left: 90rpx;
margin-top: -312rpx;
}
.head view{
position: absolute;
font-size: 60rpx;
margin-left: 35rpx;
color: #fff;
margin-top: 70rpx;
}
.none{
display: flex;
justify-content: center;
width: 110px;
margin-left: 35%;
margin-top: 60%;
border: 1px solid gray;
border-color: gainsboro;
border-radius: 20rpx;
}
.bonusHistory{
position: relative;
margin: 10rpx 8rpx;
height: 1220rpx;
overflow:scroll;
}
.bonusHistory .detail{
display: flex;
height: 170rpx;
font-size: 34rpx;
background-color: #fff;
border-bottom: 5rpx solid #E5E5E5;
}
.bonusHistory .detail .detail-left{
display: flex;
flex-direction: column;
justify-content: center;
padding-left: 30rpx;
flex-grow: 1;
}
.bonusHistory .detail .detail-left .dateTime{
font-size: 26rpx;
color: #888;
margin-top: 12rpx;
}
.bonusHistory .detail .detail-left .reason{
font-size: 33rpx;
font-weight: 500;
margin-top: 12rpx;
}
.bonusHistory .detail .detail-right{
display: flex;
flex-direction: row-reverse;
align-items: center;
padding-right: 24rpx;
margin-top: -8rpx;
flex-grow: 1;
}
.bonusHistory .detail .detail-right view{
color: #7F7F7F;
}
.bonusHistory .detail .detail-right text{
color: #00BFA5;
margin-right: 12rpx;
}
.allBonus{
position: absolute;
margin-top: 108rpx;
margin-left: 570rpx;
font-size: 28rpx;
color: #BDBDBD;
}
\ No newline at end of file
// pages/details/bonusShop/bonusShop.js
const app = getApp();
var api = require('../../../utils/api.js');
var error = require('../../../utils/error.js');
var storage = require('../../../utils/storage.js');
var util = require('../../../utils/util.js');
Page({
/**
* 页面的初始数据
*/
data: {
showThis:true,
httpHeader: {},
vipInfo: {},
couponList: {},
couponRNParams: { "posID": -2, "bonus": 1, "type": -1, "pageIndex": 1 }
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
this.setData({
httpHeader: wx.getStorageSync(storage.NBR_Session)
});
this.couponRN(this.data.couponRNParams);
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
this.setData({
vipInfo: wx.getStorageSync(storage.DEFAULT_VIP_INFO)
});
let that = this
//查询会员卡属性
wx.request({
url: api.vipCardR1,
method: api.GET,
header: that.data.httpHeader,
data: { 'ID': 1 }, //目前每个公司or门店只有一种会员卡默认传1
success(res) {
console.log(res);
if (res.header.sessionStatus == "timeOut") {
app.afreshLogin('../login/login');
} else {
if (res.data.ERROR != error.EC_NoError) {
wx.showToast({
title: '查询会员卡属性失败',
icon: 'none'
})
return;
}
var vipCardInfo = res.data.object;
var vipCardBackground = vipCardInfo.backgroundColor.split(";")
that.setData({ vipCardBackground: "linear-gradient(180deg,rgba(" + vipCardBackground[0] + ",1) 0%,rgba(" + vipCardBackground[1] + ",1) 100%)" });
}
},
fail(res) {
console.log(res);
wx.showToast({
title: '查询会员卡属性失败',
icon: 'none'
})
}
});
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
this.data.couponRNParams.pageIndex = 1;
this.onLoad();
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
console.log("发送上拉触底事件");
this.couponRN(this.data.couponRNParams);
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
},
//查询优惠券并显示
couponRN: function (params) {
wx.showLoading({
title: '加载中,请稍等',
mask: true
})
let that = this;
wx.request({
url: api.couponRN,
method: api.GET,
header: that.data.httpHeader,
data: params,
success(res) {
console.log(res);
if (res.header.sessionStatus == "timeOut") {
app.afreshLogin('../../login/login');
return;
}
if (res.data.ERROR != error.EC_NoError) {
wx.showToast({
title: '查询优惠券失败,请重试',
icon: 'none'
})
return;
}
if (res.data.objectList.length > 0) {
for (var i = 0; i < res.data.objectList.length; i++) {
res.data.objectList[i].beginDateTime = res.data.objectList[i].beginDateTime.substring(0, res.data.objectList[i].beginDateTime.length - 4);
res.data.objectList[i].endDateTime = res.data.objectList[i].endDateTime.substring(0, res.data.objectList[i].endDateTime.length - 4);
}
if (that.data.couponRNParams.pageIndex > 1) {
console.log("拼接数组")
that.setData({
couponList: that.data.couponList.concat(res.data.objectList)
});
console.log(that.data.couponList)
} else {
console.log("初始数组")
that.setData({
couponList: res.data.objectList
});
console.log(that.data.couponList)
}
that.data.couponRNParams.pageIndex = that.data.couponRNParams.pageIndex + 1;
that.setData({
couponRNParams: that.data.couponRNParams
});
} else {
if (that.data.couponRNParams.pageIndex == 1) {
that.setData({
showThis: false,
});
wx.showToast({
title: '暂无优惠券',
icon: 'none'
})
} else {
wx.showToast({
title: '已到最底了',
icon: 'none'
})
}
}
},
fail(res) {
console.log(res);
wx.showToast({
title: '查询优惠券失败,请重试',
icon: 'none'
})
},
complete(res) {
wx.hideLoading();
}
})
},
//查看优惠券详情
couponDetails: function (e) {
console.log(e);
wx.showLoading({
title: '跳转中,请稍等',
mask: true
})
wx.navigateTo({
url: '../../details/coupon/details/details?info=' + JSON.stringify(e.currentTarget.dataset.info) + '&ifShow=false&code=',
success: function (res) {
console.log("进入优惠券详情页成功");
},
fail: function (res) {
console.log("进入优惠券详情页失败");
},
complete: function (res) {
wx.hideLoading();
}
})
},
//兑换优惠券
getCoupon: function (e) {
console.log(e);
let that = this;
if (that.data.vipInfo.bonus > e.currentTarget.dataset.info.bonus) {
wx.request({
url: api.getCoupon,
method: api.POST,
header: {
'content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
'X-Requested-With': 'XMLHttpRequest',
'cookie': that.data.httpHeader.cookie
},
data: { "vipID": that.data.vipInfo.ID, "couponID": e.currentTarget.dataset.info.ID },
success(res) {
console.log(res);
if (res.header.sessionStatus == "timeOut") {
app.afreshLogin('../../login/login');
return;
}
if (res.data.ERROR != error.EC_NoError) {
wx.showToast({
title: res.data.msg == "" ? '兑换优惠券失败,请重试' : res.data.msg,
icon: 'none'
})
return;
}
wx.showToast({
title: '兑换优惠券成功',
icon: 'none',
success: function () {
that.data.vipInfo.bonus = that.data.vipInfo.bonus - e.currentTarget.dataset.info.bonus;
that.setData({
vipInfo: that.data.vipInfo
});
util.writeStorage(storage.DEFAULT_VIP_INFO, that.data.vipInfo); //将vipInfo放入缓存
wx.showLoading({
title: '跳转中,请稍等',
mask: true
})
wx.navigateTo({
url: '../../details/coupon/details/details?info=' + JSON.stringify(e.currentTarget.dataset.info) + '&ifShow=true&code=' + res.data.object.SN,
success: function (res) {
console.log("进入优惠券详情页成功");
},
fail: function (res) {
console.log("进入优惠券详情页失败");
},
complete: function (res) {
wx.hideLoading();
}
})
}
})
},
fail(res) {
console.log(res);
wx.showToast({
title: '兑换优惠券失败,请重试',
icon: 'none'
})
}
})
} else {
wx.showToast({
title: '积分不足',
icon: 'none'
})
}
}
})
\ No newline at end of file
{
"usingComponents": {},
"navigationBarTitleText": "积分商城",
"enablePullDownRefresh": true
}
\ No newline at end of file
<!--pages/details/bonusShop/bonusShop.wxml-->
<view class="container">
<view class="page-body">
<view class="head" style="background: {{ vipCardBackground }}">
<image src="../../../images/bonusShop.svg" class="background"></image>
<text>可用积分</text>
<view>{{vipInfo.bonus}}</view>
</view>
<view class="none" hidden='{{showThis}}'>
<text>暂无商品</text>
</view>
<view class="main">
<block wx:for="{{couponList}}" wx:key="*this">
<view class="couponInfo" bindtap="couponDetails" data-info="{{item}}">
<view class="couponInfo-amount">
<view wx:if="{{item.type == 0}}">¥<text>{{item.reduceAmount}}</text></view>
<view wx:elif="{{item.type == 1}}"><text>{{item.discount * 10}}</text>折</view>
<text wx:if="{{item.leastAmount == 0}}">无门槛券</text>
<text wx:elif="{{item.leastAmount > 0}}">满{{item.leastAmount}}可用</text>
</view>
<view class="couponInfo-introduction">
<text>{{item.title}}</text>
<text>{{item.beginDateTime}}</text>
<text>至</text>
<text>{{item.endDateTime}}</text>
</view>
<view class="collectCoupon">
<view data-info="{{item}}">消耗积分:{{item.bonus}}</view>
<button class="exchangeCoupon" catchtap="getCoupon" data-info="{{item}}">立即兑换></button>
</view>
</view>
</block>
</view>
</view>
</view>
/* pages/details/bonusShop/bonusShop.wxss */
page{
background:rgba(248,248,248,1);
}
button::after{
border: none;
}
.page-body{
width: 100%;
}
.none{
display: flex;
justify-content: center;
width: 110px;
margin-left: 35%;
margin-top: 50%;
border: 1px solid gray;
border-color: gainsboro;
border-radius: 20rpx;
}
.head{
width: 100%;
height: 170rpx;
}
.head text{
position: absolute;
font-size: 25rpx;
margin-top:43rpx ;
margin-left: 38rpx;
color: #fff;
}
.head .background{
position: absolute;
height: 796rpx;
width: 635rpx;
margin-left: 90rpx;
margin-top: -312rpx;
}
.head view{
position: absolute;
font-size: 60rpx;
margin-left: 35rpx;
color: #fff;
margin-top: 70rpx;
}
.main{
padding: 0 16rpx;
margin-bottom: 30rpx;
position: relative;
margin: 10rpx 8rpx;
height: 1350rpx;
overflow:scroll;
}
.main .couponInfo{
display: flex;
height: 260rpx;
font-size: 28rpx;
color: #000;
border-radius: 8rpx;
background-color: #fff;
margin-top: 20rpx;
}
.main .couponInfo .couponInfo-amount{
position: absolute;
width: 240rpx;
flex-grow: 1;
display: flex;
color: red;
margin-left: 67%;
flex-direction: column;
align-items: center;
justify-content: center;
}
.main .couponInfo .couponInfo-amount view{
font-weight: bold;
}
.main .couponInfo .couponInfo-amount view text{
font-size: 80rpx;
}
.main .couponInfo .couponInfo-introduction{
position: absolute;
margin-top: 30rpx;
margin-left: -50rpx;
flex-grow: 5;
width: 368rpx;
text-align: center;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}
.main .couponInfo .couponInfo-introduction text{
font-size: 22rpx;
line-height: 36rpx;
}
.main .couponInfo .couponInfo-introduction text:first-child{
font-size: 30rpx;
font-weight: 600;
margin-bottom: 10rpx;
}
.coupon-tab .couponInfo .couponInfo-introduction text:nth-last-child(1){
font-size: 22rpx;
color: #eee;
margin-top: 13rpx;
}
.coupon-tab .couponInfo .couponInfo-introduction text:nth-last-child(2){
font-size: 22rpx;
color: #eee;
margin-top: 13rpx;
margin-left: 50rpx;
}
.coupon-tab .couponInfo .couponInfo-introduction text:nth-last-child(3){
font-size: 22rpx;
color: #eee;
margin-top: 13rpx;
}
.main .couponInfo .couponInfo-introduction button{
width: 300rpx;
height: 56rpx;
font-size: 34rpx;
line-height: 56rpx;
font-weight: bold;
position: absolute;
right: 18rpx;
bottom: 20rpx;
}
.collectCoupon{
padding-top: 10rpx;
z-index: 111;
margin-top: 190rpx;
margin-bottom: 10rpx;
border-top: 1px dashed gainsboro;
background-color: #fff;
}
.collectCoupon view{
margin-top: 5rpx;
margin-left: 10px;
}
.collectCoupon button{
float: right;
overflow: hidden;
font-size: 35rpx;
margin-left: 480rpx;
margin-top: -57rpx;
color: red;
background-color: transparent;
}
// pages/details/coupon/coupon.js
const app = getApp();
var api = require('../../../utils/api.js');
var error = require('../../../utils/error.js');
var storage = require('../../../utils/storage.js');
Page({
/**
* 页面的初始数据
*/
data: {
showThis:true,
background: ["../../../images/swiper1.png", "../../../images/swiper2.png", "../../../images/swiper3.png"], //轮播图
currentIndex: -1, //当前选择的tab选项索引值
httpHeader: {},
vipInfo: {},
couponList: [],
couponRNParams: { "posID": -2, "bonus": 0, "type": -1, "pageIndex": 1 }
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
this.setData({
httpHeader: wx.getStorageSync(storage.NBR_Session),
vipInfo: wx.getStorageSync(storage.DEFAULT_VIP_INFO)
});
this.couponRN(this.data.couponRNParams);
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
let that = this;
console.log(this.data.couponList)
//查询会员卡属性
wx.request({
url: api.vipCardR1,
method: api.GET,
header: that.data.httpHeader,
data: { 'ID': 1 }, //目前每个公司or门店只有一种会员卡默认传1
success(res) {
console.log(res);
if (res.header.sessionStatus == "timeOut") {
app.afreshLogin('../login/login');
} else {
if (res.data.ERROR != error.EC_NoError) {
wx.showToast({
title: '查询会员卡属性失败',
icon: 'none'
})
return;
}
var vipCardInfo = res.data.object;
var vipCardBackground = vipCardInfo.backgroundColor.split(";")
that.setData({ vipCardBackground: "linear-gradient(180deg,rgba(" + vipCardBackground[0] + ",1) 0%,rgba(" + vipCardBackground[1] + ",1) 100%)" });
}
},
fail(res) {
console.log(res);
wx.showToast({
title: '查询会员卡属性失败',
icon: 'none'
})
}
});
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
this.data.couponRNParams.pageIndex = 1;
this.onLoad();
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
console.log("发送上拉触底事件");
this.couponRN(this.data.couponRNParams);
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
},
// 用户点击领券中心的tab选项
tabClick: function (e) {
console.log(e);
if (this.data.currentIndex != e.currentTarget.dataset.click) {
this.setData({
currentIndex: e.currentTarget.dataset.click
});
this.data.couponRNParams.pageIndex = 1;
this.data.couponRNParams.type = e.currentTarget.dataset.click;
this.setData({
couponRNParams: this.data.couponRNParams
});
this.couponRN(this.data.couponRNParams);
}
},
//查询优惠券并显示
couponRN: function (params) {
wx.showLoading({
title: '加载中,请稍等',
mask: true
})
let that = this;
wx.request({
url: api.couponRN,
method: api.GET,
header: that.data.httpHeader,
data: params,
success(res) {
console.log(res);
if (res.header.sessionStatus == "timeOut") {
app.afreshLogin('../../login/login');
return;
}
if (res.data.ERROR != error.EC_NoError) {
wx.showToast({
title: '查询优惠券失败,请重试',
icon: 'none'
})
return;
}
if (res.data.objectList.length > 0) {
for (var i = 0; i < res.data.objectList.length; i++) {
res.data.objectList[i].beginDateTime = res.data.objectList[i].beginDateTime.substring(0, res.data.objectList[i].beginDateTime.length - 4);
res.data.objectList[i].endDateTime = res.data.objectList[i].endDateTime.substring(0, res.data.objectList[i].endDateTime.length - 4);
}
if (that.data.couponRNParams.pageIndex > 1) {
that.setData({
showThis: true,
});
console.log("拼接数组")
that.setData({
couponList: that.data.couponList.concat(res.data.objectList)
});
console.log(that.data.couponList)
} else {
that.setData({
showThis: true,
});
console.log("初始数组")
that.setData({
couponList: res.data.objectList
});
console.log(that.data.couponList)
}
that.data.couponRNParams.pageIndex = that.data.couponRNParams.pageIndex + 1;
that.setData({
couponRNParams: that.data.couponRNParams
});
} else {
if (that.data.couponRNParams.pageIndex == 1) {
that.setData({
showThis: false,
});
that.setData({
couponList: []
});
} else {
wx.showToast({
title: '已到最底了',
icon: 'none'
})
}
}
},
fail(res) {
console.log(res);
wx.showToast({
title: '查询优惠券失败,请重试',
icon: 'none'
})
},
complete(res) {
wx.hideLoading();
}
})
},
//跳转到积分商城
toBonusShop: function (e) {
console.log("toBonusShop")
wx.navigateTo({
url: '../bonusShop/bonusShop',
fail: function () {
wx.showToast({
title: '跳转积分商城失败,请重试',
icon: 'fail',
});
}
});
},
//查看优惠券详情
couponDetails: function (e) {
console.log(e);
wx.showLoading({
title: '跳转中,请稍等',
mask: true
})
wx.navigateTo({
url: '../../details/coupon/details/details?info=' + JSON.stringify(e.currentTarget.dataset.info) + '&ifShow=false&code=',
success: function (res) {
console.log("进入优惠券详情页成功");
},
fail: function (res) {
console.log("进入优惠券详情页失败");
},
complete: function (res) {
wx.hideLoading();
}
})
},
//领取优惠券
getCoupon: function (e) {
console.log(e);
let that = this;
wx.request({
url: api.getCoupon,
method: api.POST,
header: {
'content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
'X-Requested-With': 'XMLHttpRequest',
'cookie': that.data.httpHeader.cookie
},
data: { "vipID": that.data.vipInfo.ID, "couponID": e.currentTarget.dataset.info.ID },
success(res) {
console.log(res);
if (res.header.sessionStatus == "timeOut") {
app.afreshLogin('../../login/login');
return;
}
if (res.data.ERROR != error.EC_NoError) {
wx.showToast({
title: res.data.msg == "" ? '领取优惠券失败,请重试' : res.data.msg,
icon: 'none'
})
return;
}
wx.showToast({
title: '领取优惠券成功',
icon: 'none',
success: function () {
wx.showLoading({
title: '跳转中,请稍等',
mask: true
})
wx.navigateTo({
url: '../../details/coupon/details/details?info=' + JSON.stringify(e.currentTarget.dataset.info) + '&ifShow=true&code=' + res.data.object.SN,
success: function (res) {
console.log("进入优惠券详情页成功");
},
fail: function (res) {
console.log("进入优惠券详情页失败");
},
complete: function (res) {
wx.hideLoading();
}
})
}
})
},
fail(res) {
console.log(res);
wx.showToast({
title: '领取优惠券失败,请重试',
icon: 'none'
})
}
})
}
})
\ No newline at end of file
{
"usingComponents": {},
"navigationBarTitleText": "领券中心",
"enablePullDownRefresh": true
}
\ No newline at end of file
<!--pages/details/coupon/coupon.wxml-->
<view class="container">
<view class="page-body">
<view class="head" style="background: {{ vipCardBackground }}">
<image src="../../../images/coupon.svg" class="background"></image>
<text>领券中心</text>
</view>
<view class="coupon-tab">
<view class="title">
<view class="{{-1 == currentIndex ? 'title-selected' : ''}}" bindtap="tabClick" data-click="-1">全部</view>
<view class="{{1 == currentIndex ? 'title-selected' : ''}}" bindtap="tabClick" data-click="1">折扣券</view>
<view class="{{0 == currentIndex ? 'title-selected' : ''}}" bindtap="tabClick" data-click="0">现金券</view>
</view>
<view class="none" hidden='{{showThis}}'>
<text>暂无优惠券</text>
</view>
<view class="main">
<block wx:for="{{couponList}}" wx:key="*this">
<view class="couponInfo">
<view class="couponInfo-amount" bindtap="couponDetails" data-info="{{item}}">
<view wx:if="{{item.type == 0}}">¥
<text>{{item.reduceAmount}}</text>
</view>
<view wx:elif="{{item.type == 1}}">
<text>{{item.discount * 10}}</text>折</view>
<text wx:if="{{item.leastAmount == 0}}">无门槛券</text>
<text wx:elif="{{item.leastAmount > 0}}">满{{item.leastAmount}}可用</text>
</view>
<view class="couponInfo-introduction" bindtap="couponDetails" data-info="{{item}}">
<text>{{item.title}}</text>
<text>{{item.beginDateTime}}</text>
<text>至</text>
<text>{{item.endDateTime}}</text>
</view>
</view>
<view class="collectCoupon">
<button bindtap="getCoupon" data-info="{{item}}">立即领券 ></button>
</view>
</block>
</view>
</view>
</view>
<view class="foot" style="background: {{ vipCardBackground }}" bindtap="toBonusShop">到积分商城兑换更多优惠券</view>
</view>
\ No newline at end of file
/* pages/details/coupon/coupon.wxss */
page{
background:rgba(248,248,248,1);
}
button::after{
border: none;
}
.page-body{
width: 100%;
}
.picture-swiper{
width: 100%;
margin-top: 16rpx;
}
.none{
display: flex;
justify-content: center;
width: 110px;
margin-left: 35%;
margin-top: 50%;
border: 1px solid gray;
border-color: gainsboro;
border-radius: 20rpx;
}
.head{
width: 100%;
height: 170rpx;
display: flex;
align-content: center;
}
.head text{
position: absolute;
font-size: 40rpx;
margin-left: 40rpx;
color: #fff;
font-weight: 500;
margin-top: 75rpx;
}
.head .background{
z-index: 1;
position: absolute;
height: 796rpx;
width: 635rpx;
margin-left: 90rpx;
margin-top: -312rpx;
}
.coupon-tab .title{
z-index: 99;
display: flex;
font-size: 34rpx;
line-height: 100rpx;
background-color: #fff;
}
.coupon-tab .title view{
z-index: 99;
flex-grow: 1;
text-align: center;
}
.coupon-tab .title .title-selected{
border-bottom: 6rpx solid #07C160;
}
.coupon-tab .main{
position: relative;
margin: 10rpx 8rpx;
height: 1050rpx;
overflow:scroll;
padding-bottom: 100px;
}
.coupon-tab .couponInfo{
display: flex;
height: 220rpx;
font-size: 28rpx;
border-radius: 8rpx;
background-color: #fff;
}
.coupon-tab .couponInfo .couponInfo-amount{
position: absolute;
flex-grow: 2.5;
width: 240rpx;
text-align: center;
color: #FA5151;
display: flex;
flex-direction: column;
justify-content: center;
margin-top: 30rpx;
margin-left: 500rpx;
}
.coupon-tab .couponInfo .couponInfo-amount view{
font-weight: bold;
}
.coupon-tab .couponInfo .couponInfo-amount view text{
font-size: 80rpx;
}
.coupon-tab .couponInfo .couponInfo-introduction{
position: absolute;
margin-top: 30rpx;
margin-left: -50rpx;
flex-grow: 5;
width: 368rpx;
text-align: center;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}
.coupon-tab .couponInfo .couponInfo-introduction text:first-child{
width: 308rpx;
font-weight: bold;
line-height: 36rpx;
}
.coupon-tab .couponInfo .couponInfo-introduction text:nth-last-child(1){
font-size: 22rpx;
color: #888;
margin-top: 13rpx;
}
.coupon-tab .couponInfo .couponInfo-introduction text:nth-last-child(2){
font-size: 22rpx;
color: #888;
margin-top: 13rpx;
}
.coupon-tab .couponInfo .couponInfo-introduction text:nth-last-child(3){
font-size: 22rpx;
color: #888;
margin-top: 13rpx;
}
.collectCoupon{
border-top: 1px dashed gainsboro;
background-color: #fff;
margin-bottom: 20rpx;
}
.collectCoupon button{
font-size: 30rpx;
color: red;
background-color: #fff;
margin-left: 500rpx;
}
.foot{
display: flex;
justify-content: center;
align-items: center;
position: fixed;
bottom: 0rpx;
width: 100%;
height: 100rpx;
color: #fff;
}
\ No newline at end of file
// pages/details/coupon/details/details.js
const app = getApp();
var api = require('../../../../utils/api.js');
var error = require('../../../../utils/error.js');
var miniprogramBarcode = require('../../../../utils/wxbarcode.js');
var storage = require('../../../../utils/storage.js');
var util = require('../../../../utils/util.js');
Page({
/**
* 页面的初始数据
*/
data: {
httpHeader: {},
serverURL: "",
companyInfo: {},
vipInfo: {},
couponDetails: {},
showCouponCode: false,
couponCode: ""
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
console.log(options);
this.setData({
httpHeader: wx.getStorageSync(storage.NBR_Session),
serverURL: api.server,
companyInfo: wx.getStorageSync(storage.DEFAULT_Company),
vipInfo: wx.getStorageSync(storage.DEFAULT_VIP_INFO),
couponDetails: JSON.parse(options.info),
showCouponCode: JSON.parse(options.ifShow),
couponCode: options.code
});
miniprogramBarcode.barcode('couponCode', options.code, 616, 156);
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
},
//积分兑换优惠券
bonusExchangeCoupon: function () {
let that = this;
if (that.data.vipInfo.bonus > that.data.couponDetails.bonus) {
wx.request({
url: api.getCoupon,
method: api.POST,
header: {
'content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
'X-Requested-With': 'XMLHttpRequest',
'cookie': that.data.httpHeader.cookie
},
data: { "vipID": that.data.vipInfo.ID, "couponID": that.data.couponDetails.ID },
success(res) {
console.log(res);
if (res.header.sessionStatus == "timeOut") {
app.afreshLogin('../../../login/login');
return;
}
if (res.data.ERROR != error.EC_NoError) {
wx.showToast({
title: res.data.msg == "" ? '兑换优惠券失败,请重试' : res.data.msg,
icon: 'none'
})
return;
}
wx.showToast({
title: '兑换优惠券成功',
icon: 'none',
success: function () {
that.data.vipInfo.bonus = that.data.vipInfo.bonus - that.data.couponDetails.bonus;
that.setData({
vipInfo: that.data.vipInfo,
showCouponCode: true,
couponCode: res.data.object.SN
});
miniprogramBarcode.barcode('couponCode', res.data.object.SN, 616, 156);
util.writeStorage(storage.DEFAULT_VIP_INFO, that.data.vipInfo);
}
})
},
fail(res) {
console.log(res);
wx.showToast({
title: '兑换优惠券失败,请重试',
icon: 'none'
})
}
})
} else {
wx.showToast({
title: '积分不足',
icon: 'none'
})
}
},
//领取优惠券
getCoupon: function () {
let that = this;
wx.request({
url: api.getCoupon,
method: api.POST,
header: {
'content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
'X-Requested-With': 'XMLHttpRequest',
'cookie': that.data.httpHeader.cookie
},
data: { "vipID": that.data.vipInfo.ID, "couponID": that.data.couponDetails.ID },
success(res) {
console.log(res);
if (res.header.sessionStatus == "timeOut") {
app.afreshLogin('../../../login/login');
return;
}
if (res.data.ERROR != error.EC_NoError) {
wx.showToast({
title: res.data.msg == "" ? '领取优惠券失败,请重试' : res.data.msg,
icon: 'none'
})
return;
}
wx.showToast({
title: '领取优惠券成功',
icon: 'none',
success: function () {
that.setData({
showCouponCode: true,
couponCode: res.data.object.SN
});
miniprogramBarcode.barcode('couponCode', res.data.object.SN, 616, 156);
}
})
},
fail(res) {
console.log(res);
wx.showToast({
title: '领取优惠券失败,请重试',
icon: 'none'
})
}
})
}
})
\ No newline at end of file
{
"usingComponents": {},
"navigationBarTitleText": "优惠券详情"
}
\ No newline at end of file
<!--pages/details/coupon/details/details.wxml-->
<view class="container">
<view class="page-body">
<view class="couponDetails">
<view class="head">
<text class="title">{{couponDetails.title}}</text>
<text class="amount" wx:if="{{couponDetails.type == 0}}">¥<text>{{couponDetails.reduceAmount}}</text></text>
<text class="amount" wx:elif="{{couponDetails.type == 1}}"><text>{{couponDetails.discount * 10}}</text>折</text>
<text class="usingThreshold" wx:if="{{couponDetails.leastAmount == 0}}">无门槛券</text>
<text class="usingThreshold" wx:elif="{{couponDetails.leastAmount > 0}}">满{{couponDetails.leastAmount}}可用</text>
</view>
<view class="middle">
<view class="couponCodeArea" wx:if="{{showCouponCode}}">
<text>付款时展示该券码给收银员,即可享用优惠</text>
<canvas canvas-id="couponCode"></canvas>
<text class="couponCode">{{couponCode}}</text>
</view>
<button bindtap="bonusExchangeCoupon" wx:if="{{!showCouponCode && couponDetails.bonus > 0}}">{{couponDetails.bonus}}积分兑换并使用优惠券</button>
<button bindtap="getCoupon" wx:elif="{{!showCouponCode && couponDetails.bonus == 0}}">领取并使用优惠券</button>
</view>
<view class="foot">
<view>
<text>使用日期</text>
<text>{{couponDetails.beginDateTime}}至{{couponDetails.endDateTime}}</text>
</view>
<view>
<text>适用门店</text>
<text>全部门店</text>
</view>
<view>
<text>适用商品</text>
<text wx:if="{{couponDetails.scope == 0}}">全部商品可用</text>
<text wx:elif="{{couponDetails.scope == 1}}">部分商品可用</text>
</view>
<view>
<text>使用须知</text>
<text>{{couponDetails.description}}</text>
</view>
</view>
</view>
</view>
</view>
/* pages/details/coupon/details/details.wxss */
page{
background:rgba(248,248,248,1);
}
button::after{
border: none;
}
.page-body{
width: 100%;
}
.couponDetails{
margin: 70rpx 8rpx 0 8rpx;
background-color: #fff;
border-radius: 8rpx;
}
.couponDetails .head{
display: flex;
flex-direction: column;
align-items: center;
}
/* .couponDetails .head image{
width: 100rpx;
height: 100rpx;
margin-top: -50rpx;
margin-bottom: 18rpx;
} */
.couponDetails .head .title{
width: 590rpx;
font-size: 34rpx;
text-align: center;
}
.couponDetails .head .amount{
font-size: 28rpx;
color: #FA5151;
font-weight: bold;
}
.couponDetails .head .amount text{
font-size: 80rpx;
}
.couponDetails .head .usingThreshold{
font-size: 28rpx;
color: #888;
}
.couponDetails .middle{
display: flex;
flex-direction: column;
justify-content: center;
height: 430rpx;
margin: 40rpx 20rpx;
border-top: 1rpx dashed #E5E5E5;
border-bottom: 1rpx dashed #E5E5E5;
}
.couponDetails .middle .couponCodeArea{
display: flex;
flex-direction: column;
align-items: center;
color: #888;
font-size: 26rpx;
}
.couponDetails .middle .couponCodeArea .couponCode{
letter-spacing:8rpx;
word-spacing: 8rpx;
}
.couponDetails .middle .couponCodeArea text{
padding: 20rpx 0;
}
.couponDetails .middle .couponCodeArea canvas{
width: 616rpx;
height: 156rpx;
}
.couponDetails .middle button{
width: 496rpx;
height: 80rpx;
font-size: 34rpx;
color: #fff;
line-height: 80rpx;
background-color: #07C160;
border-radius: 8rpx;
margin-bottom: 20rpx;
}
.couponDetails .foot{
font-size: 26rpx;
padding: 0 20rpx 30rpx 20rpx;
}
.couponDetails .foot view{
display: flex;
margin-bottom: 20rpx;
}
.couponDetails .foot view text:first-child{
width: 110rpx;
color: #888;
flex-grow: 0;
}
.couponDetails .foot view text:last-child{
width: 280rpx;
color: #000;
margin-left: 16rpx;
flex-grow: 1;
}
.couponDetails .foot view:last-child text:last-child{
word-wrap: break-word;
}
// pages/details/myCoupon/details/details.js
var api = require('../../../../utils/api.js');
var miniprogramBarcode = require('../../../../utils/wxbarcode.js');
var storage = require('../../../../utils/storage.js');
Page({
/**
* 页面的初始数据
*/
data: {
serverURL: "",
companyInfo: {},
couponDetails: {}
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
console.log(options);
this.setData({
serverURL: api.server,
companyInfo: wx.getStorageSync(storage.DEFAULT_Company),
couponDetails: JSON.parse(options.info)
});
miniprogramBarcode.barcode('couponCode', this.data.couponDetails.SN, 616, 156);
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
}
})
\ No newline at end of file
{
"usingComponents": {},
"navigationBarTitleText": "优惠券详情"
}
\ No newline at end of file
<!--pages/details/myCoupon/details/details.wxml-->
<view class="container">
<view class="page-body">
<view class="myCouponDetails">
<view class="head">
<image src="{{companyInfo.logo ? serverURL + companyInfo.logo : '../../../../images/points.svg'}}"></image>
<text class="title">{{couponDetails.title}}</text>
<text class="amount" wx:if="{{couponDetails.type == 0}}">¥<text>{{couponDetails.reduceAmount}}</text></text>
<text class="amount" wx:elif="{{couponDetails.type == 1}}"><text>{{couponDetails.discount * 10}}</text>折</text>
<text class="usingThreshold" wx:if="{{couponDetails.leastAmount == 0}}">无门槛券</text>
<text class="usingThreshold" wx:elif="{{couponDetails.leastAmount > 0}}">满{{couponDetails.leastAmount}}可用</text>
</view>
<view class="middle">
<view class="couponCodeArea">
<text>付款时展示该券码给收银员,即可享用优惠</text>
<canvas canvas-id="couponCode"></canvas>
<text>{{couponDetails.SN}}</text>
</view>
<button style="background-color: {{couponDetails.color}}" wx:if="{{couponDetails.status == '已过期'}}">已过期</button>
<button style="background-color: {{couponDetails.color}}" wx:elif="{{couponDetails.status == '已使用'}}">已使用</button>
</view>
<view class="foot">
<view>
<text>使用日期</text>
<text>{{couponDetails.beginDateTime}}至{{couponDetails.endDateTime}}</text>
</view>
<view>
<text>适用门店</text>
<text>全部门店</text>
</view>
<view>
<text>适用商品</text>
<text wx:if="{{couponDetails.scope == 0}}">全部商品可用</text>
<text wx:elif="{{couponDetails.scope == 1}}">部分商品可用</text>
</view>
<view>
<text>使用须知</text>
<text>{{couponDetails.description}}</text>
</view>
</view>
</view>
</view>
</view>
/* pages/details/myCoupon/details/details.wxss */
page{
background:rgba(248,248,248,1);
}
button::after{
border: none;
}
.page-body{
width: 100%;
}
.myCouponDetails{
margin: 70rpx 8rpx 0 8rpx;
background-color: #fff;
border-radius: 8rpx;
}
.myCouponDetails .head{
display: flex;
flex-direction: column;
align-items: center;
}
.myCouponDetails .head image{
width: 100rpx;
height: 100rpx;
margin-top: -50rpx;
margin-bottom: 18rpx;
}
.myCouponDetails .head .title{
width: 590rpx;
font-size: 34rpx;
text-align: center;
}
.myCouponDetails .head .amount{
font-size: 28rpx;
color: #FA5151;
font-weight: bold;
}
.myCouponDetails .head .amount text{
font-size: 80rpx;
}
.myCouponDetails .head .usingThreshold{
font-size: 28rpx;
color: #888;
}
.myCouponDetails .middle{
display: flex;
flex-direction: column;
justify-content: center;
height: 430rpx;
margin: 40rpx 20rpx;
border-top: 1rpx dashed #E5E5E5;
border-bottom: 1rpx dashed #E5E5E5;
}
.myCouponDetails .middle .couponCodeArea{
display: flex;
flex-direction: column;
align-items: center;
color: #888;
font-size: 26rpx;
}
.myCouponDetails .middle .couponCodeArea text{
padding: 20rpx 0;
}
.myCouponDetails .middle .couponCodeArea canvas{
width: 616rpx;
height: 156rpx;
}
.myCouponDetails .middle button{
width: 496rpx;
height: 80rpx;
font-size: 34rpx;
color: #fff;
line-height: 80rpx;
background-color: #07C160;
border-radius: 8rpx;
margin-bottom: 20rpx;
}
.myCouponDetails .foot{
font-size: 26rpx;
padding: 0 20rpx 30rpx 20rpx;
}
.myCouponDetails .foot view{
display: flex;
margin-bottom: 20rpx;
}
.myCouponDetails .foot view text:first-child{
width: 110rpx;
color: #888;
flex-grow: 0;
}
.myCouponDetails .foot view text:last-child{
width: 280rpx;
color: #000;
margin-left: 16rpx;
flex-grow: 1;
}
.myCouponDetails .foot view:last-child text:last-child{
word-wrap: break-word;
}
\ No newline at end of file
// pages/details/myCoupon/myCoupon.js
const app = getApp();
var api = require('../../../utils/api.js');
var error = require('../../../utils/error.js');
var storage = require('../../../utils/storage.js');
Page({
/**
* 页面的初始数据
*/
data: {
currentIndex: 0,
httpHeader: {},
vipInfo: {},
myCouponList: [],
myCouponRNParams: { "vipID": "", "subStatus": 0, "pageIndex": 1 },
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
this.setData({
httpHeader: wx.getStorageSync(storage.NBR_Session),
vipInfo: wx.getStorageSync(storage.DEFAULT_VIP_INFO)
});
this.data.myCouponRNParams.vipID = this.data.vipInfo.ID;
console.log(this.data.myCouponRNParams);
this.setData({
myCouponRNParams: this.data.myCouponRNParams
});
this.myCouponRN(this.data.myCouponRNParams);
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
let that = this;
console.log(this.data.couponList)
//查询会员卡属性
wx.request({
url: api.vipCardR1,
method: api.GET,
header: that.data.httpHeader,
data: { 'ID': 1 }, //目前每个公司or门店只有一种会员卡默认传1
success(res) {
console.log(res);
if (res.header.sessionStatus == "timeOut") {
app.afreshLogin('../login/login');
} else {
if (res.data.ERROR != error.EC_NoError) {
wx.showToast({
title: '查询会员卡属性失败',
icon: 'none'
})
return;
}
var vipCardInfo = res.data.object;
var vipCardBackground = vipCardInfo.backgroundColor.split(";")
that.setData({ vipCardBackground: "linear-gradient(180deg,rgba(" + vipCardBackground[0] + ",1) 0%,rgba(" + vipCardBackground[1] + ",1) 100%)" });
}
},
fail(res) {
console.log(res);
wx.showToast({
title: '查询会员卡属性失败',
icon: 'none'
})
}
});
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
this.data.myCouponRNParams.pageIndex = 1;
this.onLoad();
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
console.log("发送上拉触底事件");
this.myCouponRN(this.data.myCouponRNParams);
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
},
// 用户点击我的优惠券的tab选项
tabClick: function (e) {
console.log(e);
if (this.data.currentIndex != e.currentTarget.dataset.click) {
this.setData({
currentIndex: e.currentTarget.dataset.click
});
this.data.myCouponRNParams.pageIndex = 1;
this.data.myCouponRNParams.subStatus = e.currentTarget.dataset.click;
this.setData({
myCouponRNParams: this.data.myCouponRNParams
});
console.log(this.data.myCouponRNParams);
this.myCouponRN(this.data.myCouponRNParams);
}
},
//查询优惠券并显示
myCouponRN: function (params) {
wx.showLoading({
title: '加载中,请稍等',
mask: true
})
let that = this;
wx.request({
url: api.myCouponRN,
method: api.POST,
header: {
'content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
'X-Requested-With': 'XMLHttpRequest',
'cookie': that.data.httpHeader.cookie
},
data: params,
success(res) {
console.log(res);
if (res.header.sessionStatus == "timeOut") {
app.afreshLogin('../../login/login');
return;
}
if (res.data.ERROR != error.EC_NoError) {
wx.showToast({
title: '查询我的优惠券失败,请重试',
icon: 'none'
})
return;
}
if (res.data.objectList.length > 0) {
var couponList = res.data.objectList2;
var couponCodeList = res.data.objectList;
var dataList = [];
for (var i = 0; i < couponCodeList.length; i++) {
var indexObject = {};
var show = true ;
var notUsed = true;
indexObject.thisUseStatus = show;
indexObject.thisDueStatus = show;
indexObject.SN = couponCodeList[i].SN;
if (params.subStatus == 1) {
indexObject.status = "未使用";
indexObject.color = "#FA5151";
} else if (params.subStatus == 2) {
indexObject.status = "已使用";
indexObject.color = "#eee";
indexObject.thisUseStatus = !show;
} else if (params.subStatus == 3) {
indexObject.status = "已过期";
indexObject.color = "#eee";
} else {
if (couponCodeList[i].status == 0) {
indexObject.status = "未使用";
indexObject.color = "#FA5151";
} else if (couponCodeList[i].status == 1) {
indexObject.status = "已使用";
indexObject.color = "#eee";
indexObject.thisUseStatus = !show;
} else {
indexObject.status = "未知状态";
indexObject.color = "#eee";
}
}
for (var j = 0; j < couponList.length; j++) {
if (couponCodeList[i].couponID == couponList[j].ID) {
indexObject.title = couponList[j].title;
indexObject.type = couponList[j].type;
indexObject.reduceAmount = couponList[j].reduceAmount;
indexObject.discount = couponList[j].discount;
indexObject.leastAmount = couponList[j].leastAmount;
indexObject.scope = couponList[j].scope;
indexObject.description = couponList[j].description;
indexObject.beginDateTime = couponList[j].beginDateTime.substring(0, couponList[j].beginDateTime.length - 4);
indexObject.endDateTime = couponList[j].endDateTime.substring(0, couponList[j].endDateTime.length - 4);
var nowTime = new Date().getTime();
var couponTime = new Date(indexObject.endDateTime).getTime();
if (nowTime > couponTime) {
indexObject.status = "已过期";
indexObject.color = "#eee";
indexObject.thisDueStatus = !show;
}
dataList[i] = indexObject;
}
}
}
if (that.data.myCouponRNParams.pageIndex > 1) {
console.log("拼接数组")
that.setData({
myCouponList: that.data.myCouponList.concat(dataList)
});
console.log(that.data.myCouponList)
} else {
console.log("初始数组")
that.setData({
myCouponList: dataList
});
console.log(that.data.myCouponList)
}
that.data.myCouponRNParams.pageIndex = that.data.myCouponRNParams.pageIndex + 1;
that.setData({
myCouponRNParams: that.data.myCouponRNParams
});
} else {
if (that.data.myCouponRNParams.pageIndex == 1) {
wx.showToast({
title: '暂无优惠券,请前往领券中心领取',
icon: 'none'
})
that.setData({
myCouponList: []
});
} else {
wx.showToast({
title: '已到最底了',
icon: 'none'
})
}
}
},
fail(res) {
console.log(res);
wx.showToast({
title: '查询我的优惠券失败,请重试',
icon: 'none'
})
},
complete(res) {
wx.hideLoading();
}
})
},
//跳转到积分商城
toBonusShop: function (e) {
console.log("toBonusShop")
wx.navigateTo({
url: '../bonusShop/bonusShop',
fail: function () {
wx.showToast({
title: '跳转积分商城失败,请重试',
icon: 'fail',
});
}
});
},
//查看优惠券详情
myCouponDetails: function (e) {
console.log(e);
wx.showLoading({
title: '跳转中,请稍等',
mask: true
})
wx.navigateTo({
url: '../../details/myCoupon/details/details?info=' + JSON.stringify(e.currentTarget.dataset.info),
success: function (res) {
console.log("进入优惠券详情页成功");
},
fail: function (res) {
console.log("进入优惠券详情页失败");
},
complete: function (res) {
wx.hideLoading();
}
})
}
})
\ No newline at end of file
{
"usingComponents": {},
"navigationBarTitleText": "我的优惠券",
"enablePullDownRefresh": true
}
\ No newline at end of file
<!--pages/details/myCoupon/myCoupon.wxml-->
<view class="container">
<view class="page-body">
<view class="head" style="background: {{ vipCardBackground }}">
<image src="../../../images/coupon.svg" class="background"></image>
<text>我的优惠券</text>
</view>
<view class="coupon-tab">
<view class="title">
<view class="{{0 == currentIndex ? 'title-selected' : ''}}" bindtap="tabClick" data-click="0">全部</view>
<view class="{{1 == currentIndex ? 'title-selected' : ''}}" bindtap="tabClick" data-click="1">未使用</view>
<view class="{{2 == currentIndex ? 'title-selected' : ''}}" bindtap="tabClick" data-click="2">已使用</view>
<view class="{{3 == currentIndex ? 'title-selected' : ''}}" bindtap="tabClick" data-click="3">已过期</view>
</view>
<view class="main">
<block wx:for="{{myCouponList}}" wx:key="*this">
<view class="couponInfo" bindtap="myCouponDetails" data-info="{{item}}" >
<image src="../../../images/overdue.svg" class="overdue" hidden='{{item.thisDueStatus}}' ></image>
<image src="../../../images/used.svg" class="used" hidden='{{item.thisUseStatus}}'></image>
<view class="couponInfo-amount" style="background-color: {{item.color}}">
<view wx:if="{{item.type == 0}}">¥<text>{{item.reduceAmount}}</text></view>
<view wx:elif="{{item.type == 1}}"><text>{{item.discount * 10}}</text>折</view>
<text wx:if="{{item.leastAmount == 0}}">无门槛券</text>
<text wx:elif="{{item.leastAmount > 0}}">满{{item.leastAmount}}可用</text>
</view>
<view class="couponInfo-introduction">
<text>{{item.title}}</text>
<text>{{item.beginDateTime}}</text>
<text>至</text>
<text>{{item.endDateTime}}</text>
</view>
</view>
</block>
</view>
</view>
</view>
<view class="foot" style="background: {{ vipCardBackground }}" bindtap="toBonusShop">到积分商城兑换更多优惠券</view>
</view>
/* pages/details/myCoupon/myCoupon.wxss */
page{
background:rgba(248,248,248,1);
}
button::after{
border: none;
}
.page-body{
width: 100%;
}
.coupon-tab .title{
display: flex;
font-size: 28rpx;
line-height: 100rpx;
background-color: #fff;
}
.head{
width: 100%;
height: 170rpx;
display: flex;
align-content: center;
}
.head text{
position: absolute;
font-size: 40rpx;
margin-left: 40rpx;
color: #fff;
font-weight: 500;
margin-top: 75rpx;
}
.head .background{
position: absolute;
height: 796rpx;
width: 635rpx;
margin-left: 90rpx;
margin-top: -312rpx;
}
.coupon-tab .title view{
z-index: 99;
flex-grow: 1;
text-align: center;
}
.coupon-tab .title .title-selected{
z-index: 99;
border-bottom: 6rpx solid #07C160;
}
.coupon-tab .main{
position: relative;
margin: 10rpx 8rpx;
height: 1050rpx;
overflow:scroll;
}
.coupon-tab .couponInfo{
display: flex;
height: 220rpx;
font-size: 28rpx;
border-radius: 8rpx;
background-color: #fff;
margin-bottom: 15rpx;
}
.coupon-tab .couponInfo .couponInfo-amount{
position: absolute;
border-radius: 0 10rpx 10rpx 0;
flex-grow: 2.5;
height: 220rpx;
width: 240rpx;
text-align: center;
background-color: #FA5151;
color: #fff;
display: flex;
flex-direction: column;
justify-content: center;
margin-left: 485rpx;
}
.coupon-tab .couponInfo .couponInfo-amount view{
font-weight: bold;
}
.coupon-tab .couponInfo .couponInfo-amount view text{
font-size: 80rpx;
}
.coupon-tab .couponInfo .couponInfo-introduction{
position: absolute;
margin-top: 30rpx;
margin-left: -50rpx;
flex-grow: 5;
width: 368rpx;
text-align: center;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}
.used{
position: absolute;
height: 140rpx;
width: 140rpx;
margin-left: 370rpx;
margin-top: 60rpx;
}
.overdue{
position: absolute;
height: 140rpx;
width: 140rpx;
margin-left: 370rpx;
margin-top: 60rpx;
}
.coupon-tab .couponInfo .couponInfo-introduction text:first-child{
width: 308rpx;
font-weight: bold;
line-height: 36rpx;
}
.coupon-tab .couponInfo .couponInfo-introduction text:nth-last-child(1){
font-size: 22rpx;
color: #888;
margin-top: 13rpx;
}
.coupon-tab .couponInfo .couponInfo-introduction text:nth-last-child(2){
font-size: 22rpx;
color: #888;
margin-top: 13rpx;
}
.coupon-tab .couponInfo .couponInfo-introduction text:nth-last-child(3){
font-size: 22rpx;
color: #888;
margin-top: 13rpx;
}
.collectCoupon{
border-top: 1px dashed gainsboro;
background-color: #fff;
margin-bottom: 20rpx;
}
.collectCoupon button{
font-size: 30rpx;
color: red;
background-color: #fff;
margin-left: 500rpx;
}
.foot{
display: flex;
justify-content: center;
align-items: center;
position: fixed;
bottom: 0rpx;
width: 100%;
height: 100rpx;
color: #fff;
}
\ No newline at end of file
// pages/details/retailtrade/retailtrade.js
const app = getApp();
var api = require('../../../utils/api.js');
var error = require('../../../utils/error.js');
var storage = require('../../../utils/storage.js');
Page({
/**
* 页面的初始数据
*/
data: {
showThis:true,
httpHeader: {},
vipInfo: {},
retailtradeList: [],
retailtradeRNParams: { 'pageIndex': 1, 'queryKeyword': '' }
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
var timeStart = this.getStartTime();
var timeEnd = this.getEndtTime()
console.log(timeEnd)
this.setData({
httpHeader: wx.getStorageSync(storage.NBR_Session),
vipInfo: wx.getStorageSync(storage.DEFAULT_VIP_INFO)
});
this.data.retailtradeRNParams.vipID = this.data.vipInfo.ID;
this.data.retailtradeRNParams.datetimeStart = timeStart;
this.data.retailtradeRNParams.datetimeEnd = timeEnd;
this.setData({
retailtradeRNParams: this.data.retailtradeRNParams
});
this.retailtradeRN(this.data.retailtradeRNParams);
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
let that = this
//查询会员卡属性
wx.request({
url: api.vipCardR1,
method: api.GET,
header: that.data.httpHeader,
data: { 'ID': 1 }, //目前每个公司or门店只有一种会员卡默认传1
success(res) {
console.log(res);
if (res.header.sessionStatus == "timeOut") {
app.afreshLogin('../login/login');
} else {
if (res.data.ERROR != error.EC_NoError) {
wx.showToast({
title: '查询会员卡属性失败',
icon: 'none'
})
return;
}
var vipCardInfo = res.data.object;
var vipCardBackground = vipCardInfo.backgroundColor.split(";")
that.setData({ vipCardBackground: "linear-gradient(180deg,rgba(" + vipCardBackground[0] + ",1) 0%,rgba(" + vipCardBackground[1] + ",1) 100%)" });
}
},
fail(res) {
console.log(res);
wx.showToast({
title: '查询会员卡属性失败',
icon: 'none'
})
}
});
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
this.data.retailtradeRNParams.pageIndex = 1;
this.onLoad();
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
console.log("发送上拉触底事件");
this.retailtradeRN(this.data.retailtradeRNParams);
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
},
//获取当月开始时间并转换格式
getStartTime:function () {
var dateTime = new Date()
var year = dateTime.getFullYear();
var month = dateTime.getMonth() + 1;
var day = '01';
var hour = '00';
var minute = '00';
var second = '00';
var timeSpanStr = year + '/' + month + '/' + day + ' ' + hour + ':' + minute + ':' + second;
return timeSpanStr;
},
//获取当月结束时间并转换格式
getEndtTime: function () {
var dateTime = new Date()
var year = dateTime.getFullYear();
var month = dateTime.getMonth() + 1;
var day = new Date(year, month, 0).getDate();
var hour = '23';
var minute = '59';
var second = '59';
var timeSpanStr = year + '/' + month + '/' + day + ' ' + hour + ':' + minute + ':' + second;
return timeSpanStr;
},
//查询零售单
retailtradeRN: function (params) {
console.log(params)
wx.showLoading({
title: '加载中,请稍等',
mask: true
})
let that = this;
wx.request({
url: api.retailtradeRN,
method: api.POST,
header: {
'content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
'X-Requested-With': 'XMLHttpRequest',
'cookie': that.data.httpHeader.cookie
},
data: params,
success(res) {
console.log(res);
if (res.header.sessionStatus == "timeOut") {
app.afreshLogin('../../login/login');
return;
}
if (res.data.ERROR != error.EC_NoError) {
wx.showToast({
title: '查询零售单失败,请重试',
icon: 'none'
})
return;
}
if (res.data.objectList.length > 0) {
for (var i = 0; i < res.data.objectList.length; i++) {
res.data.objectList[i].saleDatetime = res.data.objectList[i].saleDatetime.substring(0, res.data.objectList[i].saleDatetime.length - 4);
}
if (that.data.retailtradeRNParams.pageIndex > 1) {
console.log("拼接数组")
that.setData({
retailtradeList: that.data.retailtradeList.concat(res.data.objectList)
});
console.log(that.data.retailtradeList)
} else {
console.log("初始数组")
that.setData({
retailtradeList: res.data.objectList
});
console.log(that.data.retailtradeList)
}
that.data.retailtradeRNParams.pageIndex = that.data.retailtradeRNParams.pageIndex + 1;
that.setData({
retailtradeRNParams: that.data.retailtradeRNParams
});
} else {
if (that.data.retailtradeRNParams.pageIndex == 1) {
that.setData({
showThis: false,
});
wx.showToast({
title: '暂无零售单',
icon: 'none'
})
} else {
wx.showToast({
title: '已到最底了',
icon: 'none'
})
}
}
},
fail(res) {
console.log(res);
wx.showToast({
title: '查询零售单失败,请重试',
icon: 'none'
})
},
complete(res) {
wx.hideLoading();
}
})
}
})
\ No newline at end of file
{
"usingComponents": {},
"navigationBarTitleText": "历史订单",
"enablePullDownRefresh": true
}
\ No newline at end of file
<!--pages/details/retailtrade/retailtrade.wxml-->
<view class="container">
<view class="page-body">
<view class="head" style="background: {{ vipCardBackground }}" >
<image src="../../../images/retailtrade.svg" class="background"></image>
<text>历史订单</text>
</view>
<view class="none" hidden='{{showThis}}'>
<text>暂无记录</text>
</view>
<view class="retailtradeList">
<block wx:for="{{retailtradeList}}" wx:key="*this">
<view class="retailtradeInfo">
<view class="retailtradeInfo-head">
<text>{{item.saleDatetime}}</text>
<view>合计:<text id="amount">¥{{item.amount}}</text></view>
</view>
<view class="retailtradeInfo-foot">
<text class="retailtradeInfo-status">完成</text>
<text decode="{{true}}">共&nbsp;&nbsp;{{item.listSlave1.length}}&nbsp;&nbsp;件商品</text>
</view>
</view>
</block>
</view>
</view>
</view>
/* pages/details/retailtrade/retailtrade.wxss */
page{
background:rgba(248,248,248,1);
}
button::after{
border: none;
}
.page-body{
width: 100%;
}
.none{
display: flex;
justify-content: center;
width: 110px;
margin-left: 35%;
margin-top: 60%;
border: 1px solid gray;
border-color: gainsboro;
border-radius: 20rpx;
}
.head{
width: 100%;
height: 170rpx;
display: flex;
align-content: center;
}
.head text{
position: absolute;
font-size: 40rpx;
margin-left: 40rpx;
color: #fff;
font-weight: 500;
margin-top: 75rpx;
}
.head .background{
position: absolute;
height: 786rpx;
width: 635rpx;
margin-left: 90rpx;
margin-top: -301rpx;
}
.retailtradeList{
margin: 10rpx 10rpx;
position: relative;
height: 1230rpx;
overflow:scroll;
}
.retailtradeList .retailtradeInfo{
height: 160rpx;
font-size: 32rpx;
padding: 10rpx;
background-color: #fff;
border-bottom: 5rpx solid #E5E5E5;
display: flex;
flex-direction: column;
justify-content: space-between;
}
.retailtradeList .retailtradeInfo .retailtradeInfo-head, .retailtradeList .retailtradeInfo .retailtradeInfo-foot{
display: flex;
justify-content: space-between;
}
.retailtradeInfo-head {
margin-top: 30rpx;
color: #BDBDBD;
}
#amount{
color: #00BFA5;
font-size: 38rpx;
}
.retailtradeInfo-foot{
margin-bottom: 30rpx;
}
.retailtradeList .retailtradeInfo .retailtradeInfo-foot text:nth-last-child(1){
font-size: 28rpx;
color: #BDBDBD;
}
.retailtradeInfo-status{
color: #00BFA5;
font-size: 28rpx;
}
.retailtradeList .retailtradeInfo .retailtradeInfo-foot view text{
color:#00BFA5;
}
\ No newline at end of file
// pages/details/selectShop/selectShop.js
const app = getApp();
var api = require('../../../utils/api.js');
var error = require('../../../utils/error.js');
var storage = require('../../../utils/storage.js');
var util = require('../../../utils/util.js');
Page({
/**
* 页面的初始数据
*/
data: {
httpHeader: {},
shopList: {},
companyInfo: {},
isOnlyOne:false,
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
this.setData({
httpHeader: wx.getStorageSync(storage.NBR_Session),
companyInfo: wx.getStorageSync(storage.DEFAULT_Company),
shopList: wx.getStorageSync(storage.VIP_CompanyList),
companyAddressList: wx.getStorageSync(storage.Company_Address)
});
if (wx.getStorageSync(storage.VIP_CompanyList) == '' || wx.getStorageSync(storage.VIP_CompanyList) == undefined){
this.setData({
isOnlyOne: true
});
}else{
this.setData({
isOnlyOne: false
});
}
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
let that = this;
console.log(this.data.couponList)
//查询会员卡属性
wx.request({
url: api.vipCardR1,
method: api.GET,
header: that.data.httpHeader,
data: { 'ID': 1 }, //目前每个公司or门店只有一种会员卡默认传1
success(res) {
console.log(res);
if (res.header.sessionStatus == "timeOut") {
app.afreshLogin('../login/login');
} else {
if (res.data.ERROR != error.EC_NoError) {
wx.showToast({
title: '查询会员卡属性失败',
icon: 'none'
})
return;
}
var vipCardInfo = res.data.object;
var vipCardBackground = vipCardInfo.backgroundColor.split(";")
that.setData({ vipCardBackground: "linear-gradient(180deg,rgba(" + vipCardBackground[0] + ",1) 0%,rgba(" + vipCardBackground[1] + ",1) 100%)" });
}
},
fail(res) {
console.log(res);
wx.showToast({
title: '查询会员卡属性失败',
icon: 'none'
})
}
});
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
//一家商家的时候
isOnlyOne: function(){
wx.reLaunch({
url: '../../index/index',
fail: function () {
wx.showToast({
title: '切换公司失败',
icon: 'fail',
});
}
});
},
//点击切换商家
switchShop: function (e) {
var that = this;
var id = e.currentTarget.dataset.id;
var shopList = that.data.shopList;
var shop = shopList[id];
var companyId = shop.ID;
console.log(companyId);
wx.request({
url: api.selectMyCompany,
method: api.POST,
header: {
'content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
'X-Requested-With': 'XMLHttpRequest',
'cookie': that.data.httpHeader.cookie
},
data: { "ID": companyId },
success(res) {
if (res.header.sessionStatus == "timeOut") {
app.afreshLogin('../../login/login');
return;
};
console.log(res);
if (res.data.ERROR != error.EC_NoError) {
wx.showToast({
title: '切换公司失败',
icon: 'none'
})
console.log('切换公司失败!ERROR:' + res.data.ERROR + ',msg:' + res.data.msg);
return;
}
util.writeStorage(storage.DEFAULT_Company, shop);
util.writeStorage(storage.DEFAULT_VIP_INFO, res.data.object2);
wx.reLaunch({
url: '../../index/index',
fail: function () {
wx.showToast({
title: '切换公司失败',
icon: 'fail',
});
}
});
},
fail(res) {
console.log(res);
wx.showToast({
title: '切换公司失败',
icon: 'none'
})
}
});
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
},
})
\ No newline at end of file
{
"usingComponents": {},
"navigationBarTitleText": "选择商家"
}
\ No newline at end of file
<view>
<view class="head" style="background: {{ vipCardBackground }}" >
<image src="../../../images/selectShop.svg" class="background"></image>
<text>选择商家</text>
</view>
<view class="shop-item">
<text class="info">常用门店</text>
<view class="shop-detail">
<text>{{ companyInfo.brandName }}</text>
<text class="state">营业中</text>
<view class="phoneNumber">📲 : 15854320895</view>
<view class="address">💒: {{companyAddressList[0].address}}</view>
</view>
<text class="info">附近门店</text>
<view class="shop-detail" bindtap="switchShop" data-id='{{index}}' wx:for="{{shopList}}" wx:key="key" wx:if = "{{shopList}}">
<view>
<text>{{item.brandName}}</text>
<text class="state">营业中</text>
<view class="phoneNumber">📲 : 15854320895</view>
<view class="address">💒: {{companyAddressList[0].address}}</view>
</view>
<!-- <text>这里是门店的名称</text> -->
</view>
<view class="shop-detail" wx:if = '{{isOnlyOne == true}}' bindtap="isOnlyOne">
<text>{{ companyInfo.brandName }}</text>
<text class="state">营业中</text>
<view class="phoneNumber">📲 : 15854320895</view>
<view class="address">💒: {{companyAddressList[0].address}}</view>
</view>
</view>
</view>
\ No newline at end of file
/* pages/details/selectShop/selectShop.wxss */
page{
background:#F8F8F8;
}
.head{
width: 100%;
height: 170rpx;
display: flex;
align-content: center;
}
.head text{
position: absolute;
font-size: 40rpx;
margin-left: 40rpx;
color: #fff;
font-weight: 500;
margin-top: 75rpx;
}
.head .background{
position: absolute;
height: 796rpx;
width: 635rpx;
margin-left: 90rpx;
margin-top: -312rpx;
}
.shop-item{
margin-top: 20px;
position: relative;
margin: 10rpx 8rpx;
height: 1050rpx;
overflow:scroll;
}
.shop-item .info{
color: rgb(134, 131, 131);
font-size: 38rpx;
font-weight: 530;
margin-left: 18rpx;
margin-top: 38rpx;
}
.shop-item .shop-detail{
width: 95%;
height: 180rpx;
margin: 10px auto;
background: #F8F8F8;
margin-top: 15rpx;
border-bottom: 2rpx solid #ADADAD;
}
.shop-item .shop-detail text{
margin-top: 25rpx;
font-weight: 500;
margin-left: 16rpx;
letter-spacing:5rpx;
}
.shop-item .shop-detail .state{
font-size:20rpx;
padding: 3rpx;
letter-spacing: 1.5rpx;
border: 1rpx solid rgba(4, 245, 245, 0.966);
background-color: rgba(210, 244, 247, 0.836);
}
.phoneNumber{
margin-top: 15rpx;
margin-left: 10rpx;
font-size: 26rpx;
font-weight: 400;
color: rgba(173, 173, 173, 1)
}
.address{
margin-top: 10rpx;
margin-left: 10rpx;
font-size: 26rpx;
font-weight: 400;
color: rgba(173, 173, 173, 1)
}
\ No newline at end of file
// pages/details/userCenter/userCenter.js
const app = getApp();
var api = require('../../../utils/api.js');
var error = require('../../../utils/error.js');
var storage = require('../../../utils/storage.js');
var util = require('../../../utils/util.js');
Page({
/**
* 页面的初始数据
*/
data: {
httpHeader: {},
userInfo: {},
vipInfo: {},
toUpdateVip: true
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
console.log(options);
let theUserInfo = wx.getStorageSync(storage.DEFAULT_VIP_INFO);
let theBirthday = theUserInfo.birthday.slice(0,10);
theUserInfo.birthday = theBirthday;
console.log(theUserInfo);
this.setData({
httpHeader: wx.getStorageSync(storage.NBR_Session),
userInfo: wx.getStorageSync(storage.WX_USER_Info),
vipInfo: theUserInfo
});
console.log(this.data.vipInfo);
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
let that = this;
console.log(this.data.couponList)
//查询会员卡属性
wx.request({
url: api.vipCardR1,
method: api.GET,
header: that.data.httpHeader,
data: { 'ID': 1 }, //目前每个公司or门店只有一种会员卡默认传1
success(res) {
console.log(res);
if (res.header.sessionStatus == "timeOut") {
app.afreshLogin('../login/login');
} else {
if (res.data.ERROR != error.EC_NoError) {
wx.showToast({
title: '查询会员卡属性失败',
icon: 'none'
})
return;
}
var vipCardInfo = res.data.object;
var vipCardBackground = vipCardInfo.backgroundColor.split(";")
that.setData({ vipCardBackground: "linear-gradient(180deg,rgba(" + vipCardBackground[0] + ",1) 0%,rgba(" + vipCardBackground[1] + ",1) 100%)" });
}
},
fail(res) {
console.log(res);
wx.showToast({
title: '查询会员卡属性失败',
icon: 'none'
})
}
});
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
},
checkVipName: function (e) {
console.log(e);
if (e.detail.value.length < 2 || e.detail.value.length > 32) {
wx.showToast({
title: '昵称需要至少2个字符且最大支持32个字符',
icon: 'none'
})
this.setData({ toUpdateVip: false });
} else {
this.data.vipInfo.name = e.detail.value;
this.setData({
vipInfo: this.data.vipInfo,
toUpdateVip: true
});
}
},
bindDateChange: function (e) {
console.log(e);
this.data.vipInfo.birthday = e.detail.value.replace(/-/g, '/');
this.setData({ vipInfo: this.data.vipInfo });
console.log(this.data.vipInfo.birthday);
},
updateVipInfo: function () {
let that = this;
console.log(that.data.vipInfo)
console.log(that.data.httpHeader)
wx.request({
url: api.vipUpdate,
method: api.POST,
header: {
'content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
'X-Requested-With': 'XMLHttpRequest',
'cookie': that.data.httpHeader.cookie
},
data: {
'ID': that.data.vipInfo.ID,
'birthday': that.data.vipInfo.birthday == "" ? '1970/1/1 01:01:01' : that.data.vipInfo.birthday,
'category': that.data.vipInfo.category
}, //在小程序只允许修改昵称和生日
success(res) {
console.log(res);
if (res.header.sessionStatus == "timeOut") {
app.afreshLogin('../../login/login');
return;
}
if (res.data.ERROR != error.EC_NoError) {
wx.showToast({
title: '修改会员信息失败,请重试',
icon: 'none'
})
return;
}
wx.showToast({
title: '修改会员信息成功',
icon: 'none'
})
//将修改后的会员信息放入缓存中
util.writeStorage(storage.DEFAULT_VIP_INFO, that.data.vipInfo);
console.log(wx.getStorageSync(storage.DEFAULT_VIP_INFO));
},
fail(res) {
console.log(res);
wx.showToast({
title: '修改会员信息失败,请重试',
icon: 'none'
})
}
})
}
})
\ No newline at end of file
{
"usingComponents": {},
"navigationBarTitleText": "我的资料"
}
\ No newline at end of file
<!--pages/details/userCenter/userCenter.wxml-->
<view class="container">
<view class="page-body">
<form class="userInfo">
<view class="userInfo-item">
<label>头像</label>
<image src="{{ userInfo.avatarUrl }}"></image>
</view>
<view class="userInfo-item">
<label>昵称</label>
<input value="{{ vipInfo.name }}" maxlength="32" bindblur="checkVipName" disabled="true"/>
</view>
<text class="vipName-tips" wx:if="{{ !toUpdateVip }}">昵称需要至少2个字符且最大支持32个字符</text>
<view class="userInfo-item">
<label>手机</label>
<text>{{ vipInfo.mobile }}</text>
</view>
<view class="userInfo-item">
<label>性别</label>
<text>{{ vipInfo.sex == 0 ? "女" : "男" }}</text>
</view>
<view class="userInfo-item">
<label>生日</label>
<picker mode="date" value="{{ vipInfo.birthday }}" bindchange="bindDateChange">
<text>{{ vipInfo.birthday}}</text>
<view></view>
</picker>
</view>
<view class="userInfo-item">
<label>版本</label>
<text>v1.0.0</text>
</view>
<button disabled="{{ !toUpdateVip }}" bindtap="updateVipInfo" style="background: {{ vipCardBackground }}">保存</button>
</form>
</view>
</view>
/* pages/details/userCenter/userCenter.wxss */
page{
background:rgba(248,248,248,1);
}
button::after{
border: none;
}
.page-body{
width: 100%;
}
.userInfo{
font-size: 34rpx;
}
.userInfo .userInfo-item{
display: flex;
align-items: center;
height: 120rpx;
margin-top: 10rpx;
padding: 0 30rpx 0 32rpx;
background-color: #fff;
position: relative;
}
.userInfo .userInfo-item:first-child{
height: 160rpx;
}
.userInfo .userInfo-item image{
width: 100rpx;
height: 100rpx;
border-radius: 50%;
background-color: thistle;
position: absolute;
right: 62rpx;
}
.userInfo .userInfo-item text{
color: #7F7F7F;
position: absolute;
right: 62rpx;
}
.userInfo .userInfo-item input{
color: #7F7F7F;
text-align: right;
position: absolute;
right: 62rpx;
}
.userInfo .userInfo-item picker text{
top: 40rpx;
}
.userInfo .userInfo-item picker view{
top: 49rpx;
}
.userInfo .userInfo-item view{
height: 20rpx;
width: 20rpx;
border-top: 4rpx solid #999;
border-right: 4rpx solid #999;
transform: rotate(45deg);
text-align: center;
position: absolute;
right: 32rpx;
margin-top: 4rpx;
}
.userInfo button{
width: 368rpx;
height: 80rpx;
line-height: 80rpx;
color: #fff;
background-color: #07C160;
margin-top: 40rpx;
}
.userInfo .vipName-tips{
display: block;
font-size: 28rpx;
color: red;
text-align: center;
}
\ No newline at end of file
// pages/details/vipCardSn/vipCardSn.js
var miniprogramBarcode = require('../../../utils/wxbarcode.js');
Page({
/**
* 页面的初始数据
*/
data: {
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
miniprogramBarcode.barcode('largeVipCardSn', '123456789', 734, 222);
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
}
})
\ No newline at end of file
{
"usingComponents": {},
"navigationBarTitleText": "会员条码"
}
\ No newline at end of file
<!--pages/details/vipCardSn/vipCardSn.wxml-->
<view class="container">
<view class="page-body">
<view class="vipCardSn-area">
<text>付款前出示会员码,以获得积分及优惠</text>
<canvas canvas-id="largeVipCardSn"></canvas>
</view>
</view>
</view>
/* pages/details/vipCardSn/vipCardSn.wxss */
page{
background:rgba(248,248,248,1);
}
button::after{
border: none;
}
.page-body{
width: 100%;
}
.vipCardSn-area{
display: flex;
flex-direction: column;
align-items: center;
}
.vipCardSn-area text{
font-size: 30rpx;
color: #7F7F7F;
margin-top: 52rpx;
}
.vipCardSn-area canvas{
width: 734rpx;
height: 222rpx;
margin: 32rpx 8rpx 52rpx;
}
\ No newline at end of file
//index.js
//获取应用实例
const app = getApp();
var api = require('../../utils/api.js');
var error = require('../../utils/error.js');
var miniprogramBarcode = require('../../utils/wxbarcode.js');
var storage = require('../../utils/storage.js');
var util = require('../../utils/util.js');
Page({
data: {
httpHeader: {},
userInfo: {},
companyInfo: {},
vipInfo: {},
vipCardBackgroundImg: "../../images/default_brand_logo.png" // 默认门店招牌图片
},
onLoad: function (options) {
let that = this;
console.log(options)
console.log(wx.getStorageSync(storage.DEFAULT_VIP_INFO))
this.setData({
httpHeader: wx.getStorageSync(storage.NBR_Session),
userInfo: wx.getStorageSync(storage.WX_USER_Info),
companyInfo: wx.getStorageSync(storage.DEFAULT_Company),
vipInfo: wx.getStorageSync(storage.DEFAULT_VIP_INFO)
});
console.log(this.data.vipInfo.vipCardSN)
miniprogramBarcode.barcode('vipCardSn', this.data.vipInfo.vipCardSN, 614, 156);
console.log(this.data.httpHeader)
console.log(this.data.userInfo)
},
onShow: function () {
let that = this;
// wx.showLoading({
// title: "C" + that.data.companyInfo.brandName,
// mask: true
// })
// setTimeout(() => {
// wx.hideLoading();
// }, 3000);
// let that = this;
// var obj = wx.getLaunchOptionsSync()
// console.log('启动小程序的参数', obj);
// if (obj.scene == 1047 || obj.scene == 1031 || obj.scene == 1032) { //判断是否是扫码登录
// if (obj.query.scene == undefined || obj.query.scene.trim() == "") { //判断扫的二维码是否有参数,如果无就登陆668866虚拟门店
// that.setData({
// compangSN: 668866,
// });
// } else {
// var str = obj.query.scene;
// var compangSn = str.slice(13);
// that.setData({
// compangSN: compangSn,
// scene: obj.scene,
// });
// }
// } else {
// if (wx.getStorageSync(storage.DEFAULT_Company).SN) {
// that.setData({
// compangSN: wx.getStorageSync(storage.DEFAULT_Company).SN,
// });
// } else {
// that.setData({
// compangSN: '668866',
// });
// }
// }
//查询会员卡属性
wx.request({
url: api.vipCardR1,
method: api.GET,
header: that.data.httpHeader,
data: { 'ID': 1 }, //目前每个公司or门店只有一种会员卡默认传1
success(res) {
console.log(res);
if (res.header.sessionStatus == "timeOut") {
app.afreshLogin('../login/login');
} else {
if (res.data.ERROR != error.EC_NoError) {
wx.showToast({
title: '查询会员卡属性失败',
icon: 'none'
})
return;
}
var vipCardInfo = res.data.object;
var vipCardBackground = vipCardInfo.backgroundColor.split(";")
that.setData({ vipCardBackground: "linear-gradient(180deg,rgba(" + vipCardBackground[0] + ",1) 0%,rgba(" + vipCardBackground[1] + ",1) 100%)" });
}
},
fail(res) {
console.log(res);
wx.showToast({
title: '查询会员卡属性失败',
icon: 'none'
})
}
});
//查看会员拥有的优惠券数量
wx.request({
url: api.couponTotal,
method: api.POST,
header: {
'content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
'X-Requested-With': 'XMLHttpRequest',
'cookie': that.data.httpHeader.cookie
},
data: { 'vipID': that.data.vipInfo.ID },
success(res) {
console.log(res);
if (res.header.sessionStatus == "timeOut") {
console.log("session过期,第一个请求会触发返回登录页的函数。");
} else {
if (res.data.ERROR != error.EC_NoError) {
wx.showToast({
title: '查询拥有的优惠券数量失败',
icon: 'none'
})
return;
}
that.setData({
couponTotal: res.data.count
});
}
},
fail(res) {
console.log(res);
wx.showToast({
title: '查询拥有的优惠券数量失败',
icon: 'none'
})
}
});
//更新会员信息
wx.request({
url: api.vipR1,
method: api.GET,
header: that.data.httpHeader,
data: { 'ID': that.data.vipInfo.ID },
success(res) {
console.log(res);
if (res.header.sessionStatus == "timeOut") {
console.log("session过期,第一个请求会触发返回登录页的函数。");
} else {
if (res.data.ERROR != error.EC_NoError) {
wx.showToast({
title: '更新会员信息失败',
icon: 'none'
})
return;
}
util.writeStorage(storage.DEFAULT_VIP_INFO, res.data.vip);
that.setData({
vipInfo: wx.getStorageSync(storage.DEFAULT_VIP_INFO)
});
}
},
fail(res) {
console.log(res);
wx.showToast({
title: '更新会员信息失败',
icon: 'none'
})
}
});
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
// let that = this;
// let card_id = wx.getStorageSync('storageVipCardID')
// return {
// title: '测试好友分享',
// path: '/pages/login/login?card_id=' + card_id,
// // imageUrl: '../../images/name.png',
// success: function(res){
// // 转发成功
// wx.showToast({
// title: '分享成功',
// icon: 'success',
// duration: 2000
// });
// },
// fail: function(res){
// // 转发失败
// wx.showToast({
// title: '分享失败',
// icon: 'fail',
// duration: 2000
// });
// }
// };
// console.log(path);
},
//查看我的优惠券
myCouponRN: function () {
console.log("couponRN")
wx.navigateTo({
url: '../details/myCoupon/myCoupon',
fail: function () {
wx.showToast({
title: '查看我的优惠券失败,请重试',
icon: 'fail',
});
}
});
},
//查看积分明细
mybonusRN: function (e) {
console.log("bonusRn")
wx.navigateTo({
url: '../details/bonusHistory/bonusHistory',
fail: function () {
wx.showToast({
title: '查看积分明细失败,请重试',
icon: 'fail',
});
}
});
},
/**
* 选择商家
*/
selectShop: function (e) {
wx.navigateTo({
url: '../details/selectShop/selectShop',
fail: function () {
console.log("进入商家选择页面失败"); //TODO 考虑刷新页面
}
});
}
})
\ No newline at end of file
{
"usingComponents": {},
"navigationBarTitleText": "首页"
}
\ No newline at end of file
<!-- <image class='site-img' data-id="{{item.deviceId}}" src="../../images/bxb.png" catchtap='navmap'></image> -->
<view class="shopBrand">
<image src="{{ vipCardBackgroundImg }}"></image>
</view>
<view class="vipCard" style="background: {{ vipCardBackground }}">
<view class="compangName" bindtap="selectShop">
<text>{{companyInfo.brandName}}</text>
<text>⇌</text>
</view>
<view class="vipCard-head">
<image src="../../images/index.svg" class="background"></image>
<image src="{{ userInfo.avatarUrl }}" class="userImg"></image>
<text>{{ vipInfo.name }}</text>
</view>
</view>
<view class="vipCardSn-area">
<text>付款前出示会员码,以获得积分及优惠</text>
<canvas canvas-id="vipCardSn"></canvas>
<text>{{vipInfo.vipCardSN}}</text>
</view>
<view class="vipBonus">
<view class="vipCard-foot">
<view bindtap="mybonusRN">
<text>{{ vipInfo.bonus }}</text>
<text>会员积分 ></text>
</view>
<view bindtap="myCouponRN">
<text>{{couponTotal}}</text>
<text>优惠券 ></text>
</view>
</view>
</view>
<view class="btn-area">
<view>
<navigator url="../details/bonusShop/bonusShop">
<image src="../../images/points.png"></image>
<text>积分商城</text>
</navigator>
<navigator url="../details/coupon/coupon">
<image src="../../images/bill.png"></image>
<text>领券中心</text>
</navigator>
<navigator url="../details/retailtrade/retailtrade">
<image src="../../images/coupon_center.png"></image>
<text>当月账单</text>
</navigator>
<navigator url="../details/bonusHistory/bonusHistory">
<image src="../../images/points_info.png"></image>
<text>积分明细</text>
</navigator>
</view>
<view>
<navigator url="../details/userCenter/userCenter">
<image src="../../images/info.png"></image>
<text>我的资料</text>
</navigator>
</view>
</view>
\ No newline at end of file
page {
background:#F5F5F5;
}
button::after{
border: none;
}
/* .site-img{
height: 155rpx;
} */
.shopBrand{
width: 100%;
height: 400rpx;
text-align: center;
/* border-bottom-left-radius: 10%;
border-bottom-right-radius: 10%; */
}
.shopBrand image{
height: 100%;
width: 100%;
/* border-bottom-left-radius: 10%;
border-bottom-right-radius: 10%; */
}
.compangName{
position: absolute;
margin-left: 60rpx;
margin-top: 30rpx;
}
.vipCard .compangName text{
color: #fff;
font-size: 48rpx;
}
.vipCard .compangName text:last-child{
font-weight: bold;
font-size: 30rpx;
color: gainsboro;
}
.vipCard{
position: relative;
height: 300rpx;
width: 92%;
font-size: 34rpx;
margin: -100rpx 8rpx 0rpx 8rpx;
margin-left: 4%;
}
.vipCard-head{
padding-top: 90rpx;
display: flex;
flex-direction: column;
align-items: center;
color: #fff;
margin-top:33rpx;
}
.vipCard-head .background{
position: absolute;
height: 300rpx;
width: 600rpx;
margin-left: 215rpx;
margin-top: -85rpx;
}
.vipCard-head .userImg{
width: 100rpx;
height: 100rpx;
border-radius: 50%;
background-color: #fff;
margin-left: -500rpx;
margin-top: 50rpx;
}
.vipCard-head text:last-child{
margin-top: -70rpx;
margin-left: -160rpx;
}
.vipCard-foot{
position: absolute;
display: flex;
align-items: center;
justify-content: center;
color:rgb(19, 1, 1);
margin-top: 100rpx;
}
.vipCard-foot view{
display: flex;
flex-direction: column;
text-align: center;
margin-top: -70rpx;
font-size:50rpx;
}
.vipCard-foot view:first-child{
border-right: 2px solid #eee;
padding-right: 100rpx;
}
.vipCard-foot view:last-child{
padding-top: -20rpx;
padding-left: 100rpx;
}
.vipCard-foot view text:first-child{
margin-top: -15rpx;
}
.vipCard-foot view text:last-child{
font-size: 28rpx;
margin-top: -5rpx;
padding-left: 16rpx;
}
.vipCardSn-area{
display: flex;
width: 92%;
margin-left: 4%;
flex-direction: column;
align-items: center;
justify-content: center;
color: #888;
font-size: 22rpx;
margin-top: 20rpx;
padding: 50rpx 0 28rpx;
background-color: #fff;
}
.vipCardSn-area text:last-child{
letter-spacing:8rpx;
}
.vipCardSn-area canvas{
height: 156rpx;
margin: 20rpx 0;
}
.vipBonus{
display: flex;
flex-direction: column;
align-items: center;
width: 92%;
margin-left: 4%;
height: 150rpx;
margin-top: 20rpx;
margin-bottom: 20rpx;
background-color: #fff;
}
.btn-area{
height: 300rpx;
width:92%;
margin-left: 4%;
}
.btn-area view{
display: flex;
background-color: #fff;
}
.btn-area view navigator{
display: flex;
flex-direction: column;
flex-grow: 1;
font-size: 24rpx;
/* border-right: 1rpx solid rgba(0, 0, 0, 0.5); */
margin: 20rpx 20rpx;
}
.btn-area view navigator text{
margin-left: 15rpx;
}
.btn-area view navigator:last-child{
border: none;
}
.btn-area view navigator image{
width: 64rpx;
height: 62rpx;
margin: 0 30rpx;
}
此差异已折叠。
{
"usingComponents": {},
"navigationBarTitleText": "博销宝"
}
\ No newline at end of file
<view class="shopBrand">
<image src="../../images/login.png"></image>
</view>
<view class="vipCard" style="background: #2196F3">
<view class="compangName" >
<text>请登录后选择门店</text>
</view>
<view class="vipCard-head">
<image src="../../images/index.svg" class="background"></image>
<image src="../../images/login.jpg" class="userInfo"></image>
<button open-type="getUserInfo" lang="zh_CN" bindgetuserinfo="onGetUserInfo">登录 / 注册</button>
</view>
</view>
<view class="vipBonus">
<view class="vipCard-foot">
<view>
<text>***</text>
<text>积分 ></text>
</view>
<view bindtap="myCouponRN">
<text>***</text>
<text>优惠券 ></text>
</view>
</view>
</view>
<view class="btn-area">
<view>
<navigator bindtap="noLoginTip">
<image src="../../images/points.png"></image>
<text>积分商城</text>
</navigator>
<navigator bindtap="noLoginTip">
<image src="../../images/bill.png"></image>
<text>领券中心</text>
</navigator>
<navigator bindtap="noLoginTip">
<image src="../../images/coupon_center.png"></image>
<text>当月账单</text>
</navigator>
<navigator bindtap="noLoginTip">
<image src="../../images/points_info.png"></image>
<text>积分明细</text>
</navigator>
</view>
<view>
<navigator bindtap="noLoginTip">
<image src="../../images/info.png"></image>
<text>我的资料</text>
</navigator>
</view>
</view>
<view class="toGetPhoneNumberShade" wx:if="{{ showModal }}" catchtap="closeModal"></view>
<view class="toGetPhoneNumber" wx:if="{{ showModal }}">
<view>
<image src="../../images/points.png"></image>
<text wx:if="{{ showShopName }}">商家名称</text>
<button open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber">微信用户快捷登录</button>
</view>
</view>
此差异已折叠。
//logs.js
const util = require('../../utils/util.js');
const storage = require('../../utils/storage.js');
Page({
data: {
logs: []
},
onLoad: function () {
this.setData({
logs: (wx.getStorageSync('logs') || []).map(log => {
return util.formatTime(new Date(log))
})
})
}
})
{
"navigationBarTitleText": "查看启动日志",
"usingComponents": {}
}
\ No newline at end of file
<!--logs.wxml-->
<view class="container log-list">
<block wx:for="{{logs}}" wx:for-item="log">
<text class="log-item">{{index + 1}}. {{log}}</text>
</block>
</view>
.log-list {
display: flex;
flex-direction: column;
padding: 40rpx;
}
.log-item {
margin: 10rpx;
}
{
"description": "项目配置文件",
"packOptions": {
"ignore": []
},
"setting": {
"urlCheck": false,
"es6": true,
"postcss": true,
"minified": true,
"newFeature": true,
"coverView": true,
"autoAudits": false,
"showShadowRootInWxmlPanel": true,
"scopeDataCheck": false,
"uglifyFileName": true,
"checkInvalidKey": true,
"checkSiteMap": true,
"uploadWithSourceMap": true,
"babelSetting": {
"ignore": [],
"disablePlugins": [],
"outputPath": ""
}
},
"compileType": "miniprogram",
"libVersion": "2.4.3",
"appid": "wxefae1406a5f3fe5b",
"projectname": "mp",
"debugOptions": {
"hidedInDevtools": []
},
"isGameTourist": false,
"simulatorType": "wechat",
"simulatorPluginLibVersion": {},
"condition": {
"search": {
"current": -1,
"list": []
},
"conversation": {
"current": -1,
"list": []
},
"plugin": {
"current": -1,
"list": []
},
"game": {
"currentL": -1,
"list": []
},
"gamePlugin": {
"current": -1,
"list": []
},
"miniprogram": {
"current": -1,
"list": []
}
}
}
\ No newline at end of file
{
"desc": "关于本文件的更多信息,请参考文档 https://developers.weixin.qq.com/miniprogram/dev/framework/sitemap.html",
"rules": [{
"action": "allow",
"page": "*"
}]
}
\ No newline at end of file
此差异已折叠。
此差异已折叠。
// 会员卡的cardID
const newMember = 'p1uoyw6yrDKXQdirwQNGoAUhNM_k'; // 跳转型
// 优惠券的cardID
module.exports = {
newMember: newMember
}
\ No newline at end of file
// TODO 错误码
const EC_NoError = 'EC_NoError';
const EC_NoSuchData = 'EC_NoSuchData';
const EC_BusinessLogicNotDefined = 'EC_BusinessLogicNotDefined';
module.exports = {
EC_NoError: EC_NoError,
EC_NoSuchData: EC_NoSuchData,
EC_BusinessLogicNotDefined: EC_BusinessLogicNotDefined
}
\ No newline at end of file
此差异已折叠。
此差异已折叠。
此差异已折叠。
var barcode = require('./barcode');
function convert_length(length) {
return Math.round(wx.getSystemInfoSync().windowWidth * length / 750);
}
function barc(id, code, width, height) {
barcode.code128(wx.createCanvasContext(id), code, convert_length(width), convert_length(height))
}
module.exports = {
barcode: barc
}
\ No newline at end of file
此差异已折叠。
此差异已折叠。
此差异已折叠。
eclipse.preferences.version=1
org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册