@ -0,0 +1,39 @@
|
||||
//app.js
|
||||
App({
|
||||
onLaunch: function () {
|
||||
// 展示本地存储能力
|
||||
var logs = wx.getStorageSync('logs') || []
|
||||
logs.unshift(Date.now())
|
||||
wx.setStorageSync('logs', logs)
|
||||
|
||||
// 登录
|
||||
wx.login({
|
||||
success: res => {
|
||||
// 发送 res.code 到后台换取 openId, sessionKey, unionId
|
||||
}
|
||||
})
|
||||
// 获取用户信息
|
||||
wx.getSetting({
|
||||
success: res => {
|
||||
if (res.authSetting['scope.userInfo']) {
|
||||
// 已经授权,可以直接调用 getUserInfo 获取头像昵称,不会弹框
|
||||
wx.getUserInfo({
|
||||
success: res => {
|
||||
// 可以将 res 发送给后台解码出 unionId
|
||||
this.globalData.userInfo = res.userInfo
|
||||
|
||||
// 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回
|
||||
// 所以此处加入 callback 以防止这种情况
|
||||
if (this.userInfoReadyCallback) {
|
||||
this.userInfoReadyCallback(res)
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
globalData: {
|
||||
userInfo: null
|
||||
}
|
||||
})
|
@ -0,0 +1,45 @@
|
||||
{
|
||||
"pages": [
|
||||
"pages/index/index",
|
||||
"pages/logs/logs",
|
||||
"pages/shouye/shouye",
|
||||
"pages/fenlei/fenlei",
|
||||
"pages/gouwu/gouwu",
|
||||
"pages/wode/wode"
|
||||
],
|
||||
"window": {
|
||||
"backgroundTextStyle": "light",
|
||||
"navigationBarBackgroundColor": "#fff",
|
||||
"navigationBarTitleText": "WeChat",
|
||||
"navigationBarTextStyle": "black"
|
||||
},
|
||||
"tabBar": {
|
||||
"selectedColor": "#f00",
|
||||
"list": [
|
||||
{
|
||||
"pagePath": "pages/index/index",
|
||||
"text": "首页",
|
||||
"iconPath": "pages/index/image/1.png",
|
||||
"selectedIconPath": "pages/index/image/2.png"
|
||||
},
|
||||
{
|
||||
"pagePath": "pages/fenlei/fenlei",
|
||||
"text": "分类",
|
||||
"iconPath": "pages/index/image/3.png",
|
||||
"selectedIconPath": "pages/index/image/4.png"
|
||||
},
|
||||
{
|
||||
"pagePath": "pages/gouwu/gouwu",
|
||||
"text": "购物车",
|
||||
"iconPath": "pages/index/image/5.png",
|
||||
"selectedIconPath": "pages/index/image/6.png"
|
||||
},
|
||||
{
|
||||
"pagePath": "pages/wode/wode",
|
||||
"text": "我的",
|
||||
"iconPath": "pages/index/image/7.png",
|
||||
"selectedIconPath": "pages/index/image/8.png"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
@ -0,0 +1,10 @@
|
||||
/**app.wxss**/
|
||||
.container {
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
padding: 200rpx 0;
|
||||
box-sizing: border-box;
|
||||
}
|
@ -0,0 +1,66 @@
|
||||
// pages/fenlei/fenlei.js
|
||||
Page({
|
||||
|
||||
/**
|
||||
* 页面的初始数据
|
||||
*/
|
||||
data: {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 生命周期函数--监听页面加载
|
||||
*/
|
||||
onLoad: function (options) {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 生命周期函数--监听页面初次渲染完成
|
||||
*/
|
||||
onReady: function () {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 生命周期函数--监听页面显示
|
||||
*/
|
||||
onShow: function () {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 生命周期函数--监听页面隐藏
|
||||
*/
|
||||
onHide: function () {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 生命周期函数--监听页面卸载
|
||||
*/
|
||||
onUnload: function () {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 页面相关事件处理函数--监听用户下拉动作
|
||||
*/
|
||||
onPullDownRefresh: function () {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 页面上拉触底事件的处理函数
|
||||
*/
|
||||
onReachBottom: function () {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 用户点击右上角分享
|
||||
*/
|
||||
onShareAppMessage: function () {
|
||||
|
||||
}
|
||||
})
|
@ -0,0 +1,3 @@
|
||||
{
|
||||
"usingComponents": {}
|
||||
}
|
@ -0,0 +1,2 @@
|
||||
<!--pages/fenlei/fenlei.wxml-->
|
||||
<text>pages/fenlei/fenlei.wxml</text>
|
@ -0,0 +1 @@
|
||||
/* pages/fenlei/fenlei.wxss */
|
@ -0,0 +1,3 @@
|
||||
{
|
||||
"usingComponents": {}
|
||||
}
|
@ -0,0 +1,74 @@
|
||||
<!--pages/gouwu/gouwu.wxml-->
|
||||
|
||||
<!-- 上部分 -->
|
||||
<view class='section section-good'>
|
||||
<checkbox-group bindchange="checkboxChange">
|
||||
<view class='good' wx:for='{{goodList}}' wx:for-item="good" wx:key="good.name">
|
||||
|
||||
<!--第一个盒子 -->
|
||||
<view class='good_title'>
|
||||
<view class='shangjia'></view>
|
||||
<view class='shanchu'>
|
||||
<view class='shanchu_trash' bindtap="deleteList"><image src='/pages/index/image/shanchu.png'></image></view>
|
||||
<!-- 删除 -->
|
||||
</view>
|
||||
</view>
|
||||
<!-- 第二个盒子 -->
|
||||
<view class='good_content'>
|
||||
<view class='good_checkbox'>
|
||||
<label class="checkbox">
|
||||
<checkbox value="{{good.isbn}}" checked="{{good.checked}}" hidden='hidden' />
|
||||
<icon type="circle" size="23" wx:if="{{!good.checked}}"></icon>
|
||||
<icon type="success" size="23" wx:if="{{good.checked}}"></icon>
|
||||
</label>
|
||||
</view>
|
||||
<view class='good_img'>
|
||||
<image class='cover' src='{{good.cover}}'></image>
|
||||
</view>
|
||||
<view class='content'>
|
||||
<view class='titles'>{{good.desc}}</view>
|
||||
</view>
|
||||
<view class='good_footer'>
|
||||
<view class='price'>¥{{good.price}}</view>
|
||||
<view class='stepper'>
|
||||
<view class='subtract {{good.count == 1 ? "disabled": ""}}' data-index='{{index}}' catchtap='subtracttap'>-</view>
|
||||
<input class='count' type='number' value='{{good.count}}'></input>
|
||||
<view class='add' data-index="{{index}}" catchtap='addtap'>+</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
</view>
|
||||
</checkbox-group>
|
||||
</view>
|
||||
|
||||
<!-- 底部 -->
|
||||
<view class='section-bottom'>
|
||||
<checkbox-group bindchange="selectalltap">
|
||||
<label class='checkbox-allcheck'>
|
||||
<checkbox value="{{!checkAll}}" checked="{{checkAll}}" hidden='hidden' />
|
||||
<icon type="circle" size="23" wx:if="{{!checkAll}}"></icon>
|
||||
<icon type="success" size="23" wx:if="{{checkAll}}"></icon>
|
||||
<text class='check-all-text'>全选</text>
|
||||
</label>
|
||||
</checkbox-group>
|
||||
<view class="total">
|
||||
<view class='totalCount'>已选择
|
||||
<text>{{totalCount}}</text>件商品
|
||||
</view>
|
||||
<view class='totalPrice'>总价:
|
||||
<text>¥{{totalPrice}}</text>
|
||||
</view>
|
||||
</view>
|
||||
<navigator url='../checkout/index'>
|
||||
<view class='btn {{totalCount > 0 ? "btn-primary" : "btn-default"}}'>去结算</view>
|
||||
</navigator>
|
||||
</view>
|
||||
|
||||
|
||||
|
||||
<!--如果购物车内没有数据,就显示没有数据-->
|
||||
<view class="cartList" hidden="{{!iscart}}">
|
||||
<image src="/assets/images/iconfont-cart-empty.png"/>
|
||||
<view>购物车什么都没有,赶快去购物吧</view>
|
||||
</view>
|
@ -0,0 +1,297 @@
|
||||
/* pages/gouwu/gouwu.wxss */
|
||||
page {
|
||||
|
||||
height: 100%;
|
||||
background: #fff;
|
||||
font-family: -apple-system-font, Arial, Helvetica, sans-serif;
|
||||
color: #333;
|
||||
font-size: 32rpx;
|
||||
line-height: 1.42857;
|
||||
}
|
||||
|
||||
.container {
|
||||
width: 100%;
|
||||
min-height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.section {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
padding-left: 30rpx;
|
||||
padding-right: 30rpx;
|
||||
margin-bottom: 30rpx;
|
||||
}
|
||||
|
||||
.section-good {
|
||||
margin-bottom: 100rpx;
|
||||
}
|
||||
|
||||
.good {
|
||||
float: left;
|
||||
width: 100%;
|
||||
height: 300rpx;
|
||||
margin-top: 20rpx;
|
||||
margin-bottom: 20rpx;
|
||||
border-bottom: 1px solid #ccc;
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
/* 第一个盒子 */
|
||||
.good .good_title {
|
||||
float:left;
|
||||
box-sizing:border-box;
|
||||
padding:0;
|
||||
width:100%;
|
||||
height:70rpx;
|
||||
line-height:70rpx;
|
||||
border-bottom:1px solid #ccc;
|
||||
}
|
||||
.good .good_title view:first-of-type {
|
||||
float: left;
|
||||
}
|
||||
.good .good_title view:last-of-type {
|
||||
float: right;
|
||||
}
|
||||
.good .good_title .shanchu .shanchu_trash {
|
||||
float: left;
|
||||
margin-top: 8rpx;
|
||||
width: 56rpx;
|
||||
height: 56rpx;
|
||||
}
|
||||
.good .good_title .shanchu .shanchu_trash image {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
/* 第二个盒子 */
|
||||
.good .good_content {
|
||||
box-sizing: border-box;
|
||||
float:left;
|
||||
width:100%;
|
||||
height:226rpx;
|
||||
background-color:#f5f5f5;
|
||||
}
|
||||
|
||||
|
||||
.good_content .good:last-child {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
.good_content .good_checkbox {
|
||||
float:left;
|
||||
width:70rpx;
|
||||
height:224rpx;
|
||||
line-height: 278rpx;
|
||||
}
|
||||
|
||||
|
||||
.good_content .checkbox {
|
||||
float: left;
|
||||
width: 48rpx;
|
||||
height: 48rpx;
|
||||
}
|
||||
|
||||
.good_content .good_img {
|
||||
float:left;
|
||||
margin-top:16rpx;
|
||||
width:215rpx;
|
||||
height:190rpx;
|
||||
}
|
||||
.good_content .good_img image {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.good_content .content {
|
||||
box-sizing: border-box;
|
||||
float:left;
|
||||
margin-top:16rpx;
|
||||
margin-left:20rpx;
|
||||
width:384rpx;
|
||||
height:90rpx;
|
||||
|
||||
}
|
||||
|
||||
.good_content .content .titles {
|
||||
float:left;
|
||||
text-overflow:ellipsis;
|
||||
overflow:hidden;
|
||||
font-size:15px;
|
||||
width:369rpx;
|
||||
height:86rpx;
|
||||
color:#000;
|
||||
line-height: 44rpx;
|
||||
}
|
||||
|
||||
.good_content .good_footer {
|
||||
box-sizing:border-box;
|
||||
float:left;
|
||||
margin-top:16rpx;
|
||||
margin-left:20rpx;
|
||||
width:354rpx;
|
||||
height:90rpx;
|
||||
}
|
||||
|
||||
.good_content .content .price {
|
||||
font-size: 36rpx;
|
||||
color: #e4452a;
|
||||
margin-top: 10rpx;
|
||||
}
|
||||
|
||||
.good_content .good .stepper {
|
||||
float: left;
|
||||
margin-top: 15rpx;
|
||||
margin-left: 60rpx;
|
||||
width: 162rpx;
|
||||
height: 50rpx;
|
||||
}
|
||||
|
||||
.good_content .good_footer .price {
|
||||
float: left;
|
||||
width: 30%;
|
||||
height:50rpx;
|
||||
margin-top:15rpx;
|
||||
color:#FF5501;
|
||||
font-size:17px;
|
||||
|
||||
}
|
||||
|
||||
.good_content .good_footer .stepper {
|
||||
float: left;
|
||||
margin-top: 10rpx;
|
||||
width: 50%;
|
||||
margin-left: 70rpx;
|
||||
}
|
||||
|
||||
|
||||
.good_content .stepper .add, .stepper .subtract {
|
||||
float: left;
|
||||
width: 50rpx;
|
||||
height: 50rpx;
|
||||
line-height: 50rpx;
|
||||
text-align: center;
|
||||
font-size: 28rpx;
|
||||
border: 1px solid #ccc;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.good_content .stepper .disabled {
|
||||
float: left;
|
||||
color: #eee;
|
||||
}
|
||||
|
||||
.good_content .stepper .count {
|
||||
float: left;
|
||||
width: 60rpx;
|
||||
height: 50rpx;
|
||||
line-height: 50rpx;
|
||||
/* border: 1px solid #ccc; */
|
||||
border-top: 1px solid #ccc;
|
||||
border-bottom: 1px solid #ccc;
|
||||
text-align: center;
|
||||
box-sizing: border-box;
|
||||
min-height: 1rem;
|
||||
font-size: 28rpx;
|
||||
}
|
||||
|
||||
|
||||
/*******底部******************************************** */
|
||||
.section-bottom {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
width: 100%;
|
||||
height: 100rpx;
|
||||
position: fixed;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
margin-bottom: 0;
|
||||
background-color: #fff;
|
||||
box-sizing: border-box;
|
||||
z-index: 99;
|
||||
}
|
||||
|
||||
.section-bottom .btn {
|
||||
width: 160rpx;
|
||||
height: 100rpx;
|
||||
line-height: 100rpx;
|
||||
text-align: center;
|
||||
color: #fdfffd;
|
||||
background-color: #fbb304;
|
||||
}
|
||||
|
||||
.section-bottom .btn-default {
|
||||
color: #363636;
|
||||
background-color: #eee;
|
||||
}
|
||||
|
||||
.section-bottom .btn-primary {
|
||||
color: #fdfffd;
|
||||
background-color: #e83632;
|
||||
}
|
||||
|
||||
.section-bottom .checkbox-allcheck {
|
||||
display: inline-block;
|
||||
margin-left: 30rpx;
|
||||
vertical-align: top;
|
||||
font-size: 0px;
|
||||
}
|
||||
|
||||
.section-bottom .check-all-text {
|
||||
display: inline-block;
|
||||
vertical-align: top;
|
||||
margin-left: 10rpx;
|
||||
height: 23px;
|
||||
line-height: 23px;
|
||||
font-size: 28rpx;
|
||||
}
|
||||
|
||||
.section-bottom .total {
|
||||
flex: 1;
|
||||
text-align: center;
|
||||
font-size: 26rpx;
|
||||
}
|
||||
|
||||
.total .totalCount {
|
||||
font-size: 26rpx;
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.total .totalPrice {
|
||||
display: inline-block;
|
||||
font-size: 26rpx;
|
||||
margin-left: 20rpx;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.total .totalCount text {
|
||||
color: #e4452a;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.total .totalPrice text {
|
||||
color: #e4452a;
|
||||
font-size: 36rpx;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
|
||||
/* 空购物车 */
|
||||
.cartList {
|
||||
padding: 100px 0 0 0;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
color: #999;
|
||||
}
|
||||
|
||||
.cartList image {
|
||||
width: 66px;
|
||||
height: 66px;
|
||||
margin-bottom: 20px;
|
||||
}
|
After Width: | Height: | Size: 4.0 KiB |
After Width: | Height: | Size: 4.9 KiB |
After Width: | Height: | Size: 9.1 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 5.7 KiB |
After Width: | Height: | Size: 7.6 KiB |
After Width: | Height: | Size: 6.5 KiB |
After Width: | Height: | Size: 8.5 KiB |
After Width: | Height: | Size: 40 KiB |
After Width: | Height: | Size: 5.1 KiB |
After Width: | Height: | Size: 4.0 KiB |
After Width: | Height: | Size: 6.3 KiB |
After Width: | Height: | Size: 36 KiB |
After Width: | Height: | Size: 13 KiB |
After Width: | Height: | Size: 2.3 KiB |
After Width: | Height: | Size: 5.3 KiB |
After Width: | Height: | Size: 9.9 KiB |
After Width: | Height: | Size: 3.8 KiB |
After Width: | Height: | Size: 10 KiB |
After Width: | Height: | Size: 4.0 KiB |
After Width: | Height: | Size: 45 KiB |
After Width: | Height: | Size: 4.5 KiB |
After Width: | Height: | Size: 6.0 KiB |
After Width: | Height: | Size: 8.2 KiB |
@ -0,0 +1,54 @@
|
||||
//index.js
|
||||
//获取应用实例
|
||||
const app = getApp()
|
||||
|
||||
Page({
|
||||
data: {
|
||||
motto: 'Hello World',
|
||||
userInfo: {},
|
||||
hasUserInfo: false,
|
||||
canIUse: wx.canIUse('button.open-type.getUserInfo')
|
||||
},
|
||||
//事件处理函数
|
||||
bindViewTap: function() {
|
||||
wx.navigateTo({
|
||||
url: '../logs/logs'
|
||||
})
|
||||
},
|
||||
onLoad: function () {
|
||||
if (app.globalData.userInfo) {
|
||||
this.setData({
|
||||
userInfo: app.globalData.userInfo,
|
||||
hasUserInfo: true
|
||||
})
|
||||
} else if (this.data.canIUse){
|
||||
// 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回
|
||||
// 所以此处加入 callback 以防止这种情况
|
||||
app.userInfoReadyCallback = res => {
|
||||
this.setData({
|
||||
userInfo: res.userInfo,
|
||||
hasUserInfo: true
|
||||
})
|
||||
}
|
||||
} else {
|
||||
// 在没有 open-type=getUserInfo 版本的兼容处理
|
||||
wx.getUserInfo({
|
||||
success: res => {
|
||||
app.globalData.userInfo = res.userInfo
|
||||
this.setData({
|
||||
userInfo: res.userInfo,
|
||||
hasUserInfo: true
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
getUserInfo: function(e) {
|
||||
console.log(e)
|
||||
app.globalData.userInfo = e.detail.userInfo
|
||||
this.setData({
|
||||
userInfo: e.detail.userInfo,
|
||||
hasUserInfo: true
|
||||
})
|
||||
}
|
||||
})
|
@ -0,0 +1,3 @@
|
||||
{
|
||||
"usingComponents": {}
|
||||
}
|
@ -0,0 +1,13 @@
|
||||
<!--index.wxml-->
|
||||
<view class="container">
|
||||
<view class="userinfo">
|
||||
<button wx:if="{{!hasUserInfo && canIUse}}" open-type="getUserInfo" bindgetuserinfo="getUserInfo"> 获取头像昵称 </button>
|
||||
<block wx:else>
|
||||
<image bindtap="bindViewTap" class="userinfo-avatar" src="{{userInfo.avatarUrl}}" mode="cover"></image>
|
||||
<text class="userinfo-nickname">{{userInfo.nickName}}</text>
|
||||
</block>
|
||||
</view>
|
||||
<view class="usermotto">
|
||||
<text class="user-motto">{{motto}}</text>
|
||||
</view>
|
||||
</view>
|
@ -0,0 +1,21 @@
|
||||
/**index.wxss**/
|
||||
.userinfo {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.userinfo-avatar {
|
||||
width: 128rpx;
|
||||
height: 128rpx;
|
||||
margin: 20rpx;
|
||||
border-radius: 50%;
|
||||
}
|
||||
|
||||
.userinfo-nickname {
|
||||
color: #aaa;
|
||||
}
|
||||
|
||||
.usermotto {
|
||||
margin-top: 200px;
|
||||
}
|
@ -0,0 +1,15 @@
|
||||
//logs.js
|
||||
const util = require('../../utils/util.js')
|
||||
|
||||
Page({
|
||||
data: {
|
||||
logs: []
|
||||
},
|
||||
onLoad: function () {
|
||||
this.setData({
|
||||
logs: (wx.getStorageSync('logs') || []).map(log => {
|
||||
return util.formatTime(new Date(log))
|
||||
})
|
||||
})
|
||||
}
|
||||
})
|
@ -0,0 +1,4 @@
|
||||
{
|
||||
"navigationBarTitleText": "查看启动日志",
|
||||
"usingComponents": {}
|
||||
}
|
@ -0,0 +1,6 @@
|
||||
<!--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>
|
@ -0,0 +1,8 @@
|
||||
.log-list {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
padding: 40rpx;
|
||||
}
|
||||
.log-item {
|
||||
margin: 10rpx;
|
||||
}
|
@ -0,0 +1,66 @@
|
||||
// pages/shouye/shouye.js
|
||||
Page({
|
||||
|
||||
/**
|
||||
* 页面的初始数据
|
||||
*/
|
||||
data: {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 生命周期函数--监听页面加载
|
||||
*/
|
||||
onLoad: function (options) {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 生命周期函数--监听页面初次渲染完成
|
||||
*/
|
||||
onReady: function () {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 生命周期函数--监听页面显示
|
||||
*/
|
||||
onShow: function () {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 生命周期函数--监听页面隐藏
|
||||
*/
|
||||
onHide: function () {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 生命周期函数--监听页面卸载
|
||||
*/
|
||||
onUnload: function () {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 页面相关事件处理函数--监听用户下拉动作
|
||||
*/
|
||||
onPullDownRefresh: function () {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 页面上拉触底事件的处理函数
|
||||
*/
|
||||
onReachBottom: function () {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 用户点击右上角分享
|
||||
*/
|
||||
onShareAppMessage: function () {
|
||||
|
||||
}
|
||||
})
|
@ -0,0 +1,3 @@
|
||||
{
|
||||
"usingComponents": {}
|
||||
}
|
@ -0,0 +1,2 @@
|
||||
<!--pages/shouye/shouye.wxml-->
|
||||
<text>pages/shouye/shouye.wxml</text>
|
@ -0,0 +1 @@
|
||||
/* pages/shouye/shouye.wxss */
|
@ -0,0 +1,52 @@
|
||||
// pages/wode/wode.js
|
||||
var app = getApp()
|
||||
Page({
|
||||
data: {
|
||||
userInfo: {},
|
||||
motto: 'Hello World',
|
||||
// orderItems
|
||||
orderItems: [
|
||||
{
|
||||
typeId: 0,
|
||||
name: '待付款',
|
||||
url: 'bill',
|
||||
imageurl: '/pages/index/image/fukuan.png',
|
||||
},
|
||||
{
|
||||
typeId: 1,
|
||||
name: '待发货',
|
||||
url: 'bill',
|
||||
imageurl: '/pages/index/image/fahuo.png',
|
||||
},
|
||||
{
|
||||
typeId: 2,
|
||||
name: '待收货',
|
||||
url: 'bill',
|
||||
imageurl: '/pages/index/image/shouhuo.png'
|
||||
},
|
||||
{
|
||||
typeId: 3,
|
||||
name: '待评价',
|
||||
url: 'bill',
|
||||
imageurl: '/pages/index/image/pingjia.png'
|
||||
}
|
||||
],
|
||||
},
|
||||
//事件处理函数
|
||||
toOrder: function () {
|
||||
wx.navigateTo({
|
||||
url: '../order/order'
|
||||
})
|
||||
},
|
||||
onLoad: function () {
|
||||
console.log('onLoad')
|
||||
var that = this
|
||||
//调用应用实例的方法获取全局数据
|
||||
app.getUserInfo(function (userInfo) {
|
||||
//更新数据
|
||||
that.setData({
|
||||
userInfo: userInfo
|
||||
})
|
||||
})
|
||||
}
|
||||
})
|
@ -0,0 +1,3 @@
|
||||
{
|
||||
"usingComponents": {}
|
||||
}
|
@ -0,0 +1,57 @@
|
||||
<!--pages/wode/wode.wxml-->
|
||||
|
||||
|
||||
|
||||
<view class="userinfo">
|
||||
<image class="userinfo-avatar" src="{{userInfo.avatarUrl}}" background-size="cover"></image>
|
||||
<text class="userinfo-nickname">{{userInfo.nickName}}</text>
|
||||
<image src="../../images/person/account_bg.png" class="account-bg">
|
||||
</image>
|
||||
</view>
|
||||
|
||||
<view class="separate"></view>
|
||||
|
||||
<view class="order" catchtap="toOrder">
|
||||
<text class="myorder-text">我的订单</text>
|
||||
<text class="myorderlook-text">查看全部订单</text>
|
||||
<image class="next-image" src="/pages/index/image/next.png"></image>
|
||||
</view>
|
||||
<view class="line"></view>
|
||||
|
||||
<view class="navs">
|
||||
<block wx:for-items="{{orderItems}}" wx:key="name">
|
||||
<view class="nav-item" catchtap="toOrder" data-type="{{item.name}}" data-typeid="{{item.typeId}}">
|
||||
<image src="{{item.imageurl}}" class="nav-image" />
|
||||
<text>{{item.name}}</text>
|
||||
</view>
|
||||
</block>
|
||||
</view>
|
||||
|
||||
<view class="separate"></view>
|
||||
<view class="person-list">
|
||||
<view class="list-item">
|
||||
<image class="item-image" src="/pages/index/image/wdshoucang.png"></image>
|
||||
<text class="item-text">我的收藏</text>
|
||||
</view>
|
||||
<view class="person-line"></view>
|
||||
<view class="list-item">
|
||||
<image class="item-image" src="/pages/index/image/shdz.png"></image>
|
||||
<text class="item-text">收货地址</text>
|
||||
</view>
|
||||
<view class="person-line"></view>
|
||||
<view class="list-item">
|
||||
<image class="item-image" src="/pages/index/image/wddd.png"></image>
|
||||
<text class="item-text">我的订单</text>
|
||||
</view>
|
||||
<view class="person-line"></view>
|
||||
<view class="list-item">
|
||||
<image class="item-image" src="/pages/index/image/wdpj.png"></image>
|
||||
<text class="item-text">我的评价</text>
|
||||
</view>
|
||||
<view class="person-line"></view>
|
||||
<view class="list-item">
|
||||
<image class="item-image" src="/pages/index/image/gywm.png"></image>
|
||||
<text class="item-text">关于我们</text>
|
||||
</view>
|
||||
</view>
|
||||
<view class="separate"></view>
|
@ -0,0 +1,96 @@
|
||||
/* pages/wode/wode.wxss */
|
||||
.userinfo {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
background: #f0145a;
|
||||
}
|
||||
.account-bg {
|
||||
width: 100%;
|
||||
height: 150rpx;
|
||||
}
|
||||
.userinfo-avatar {
|
||||
width: 108rpx;
|
||||
height: 108rpx;
|
||||
margin: 20rpx;
|
||||
border-radius: 50%;
|
||||
}
|
||||
.userinfo-nickname {
|
||||
color: #fff;
|
||||
}
|
||||
/* 订单 */
|
||||
.order {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
width: 100%;
|
||||
height: 90rpx;
|
||||
}
|
||||
.myorder-text {
|
||||
font-size: 30rpx;
|
||||
color: gray;
|
||||
margin: 20rpx;
|
||||
width: 40%;
|
||||
}
|
||||
.myorderlook-text {
|
||||
font-size: 30rpx;
|
||||
color: gray;
|
||||
position: relative;
|
||||
right: 20rpx;
|
||||
width: 60%;
|
||||
text-align: right;
|
||||
}
|
||||
.next-image {
|
||||
width: 20rpx;
|
||||
height: 25rpx;
|
||||
position: relative;
|
||||
right: 10rpx;
|
||||
}
|
||||
.navs {
|
||||
display: flex;
|
||||
}
|
||||
.nav-item {
|
||||
width: 25%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
flex-direction: column;
|
||||
padding: 20rpx;
|
||||
}
|
||||
.nav-item .nav-image {
|
||||
width: 40rpx;
|
||||
height: 40rpx;
|
||||
margin: 5rpx;
|
||||
}
|
||||
.nav-item text {
|
||||
margin-top: 20rpx;
|
||||
font-size: 25rpx;
|
||||
color: gray;
|
||||
}
|
||||
/* 列表 */
|
||||
.person-list {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: left;
|
||||
}
|
||||
.list-item {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
height: 80rpx;
|
||||
}
|
||||
.item-image {
|
||||
width: 40rpx;
|
||||
height: 40rpx;
|
||||
margin: 20rpx;
|
||||
}
|
||||
.item-text {
|
||||
color: gray;
|
||||
font-size: 25rpx;
|
||||
margin-left: 20rpx;
|
||||
}
|
||||
.person-line {
|
||||
width: 100%;
|
||||
height: 2rpx;
|
||||
background: lightgray;
|
||||
margin-left: 90rpx;
|
||||
}
|
@ -0,0 +1,40 @@
|
||||
{
|
||||
"description": "项目配置文件",
|
||||
"packOptions": {
|
||||
"ignore": []
|
||||
},
|
||||
"setting": {
|
||||
"urlCheck": true,
|
||||
"es6": true,
|
||||
"postcss": true,
|
||||
"minified": true,
|
||||
"newFeature": true,
|
||||
"autoAudits": false
|
||||
},
|
||||
"compileType": "miniprogram",
|
||||
"libVersion": "2.4.4",
|
||||
"appid": "wx18f06ad86d422b11",
|
||||
"projectname": "%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%BC%80%E5%8F%9111",
|
||||
"debugOptions": {
|
||||
"hidedInDevtools": []
|
||||
},
|
||||
"isGameTourist": false,
|
||||
"condition": {
|
||||
"search": {
|
||||
"current": -1,
|
||||
"list": []
|
||||
},
|
||||
"conversation": {
|
||||
"current": -1,
|
||||
"list": []
|
||||
},
|
||||
"game": {
|
||||
"currentL": -1,
|
||||
"list": []
|
||||
},
|
||||
"miniprogram": {
|
||||
"current": -1,
|
||||
"list": []
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,19 @@
|
||||
const formatTime = date => {
|
||||
const year = date.getFullYear()
|
||||
const month = date.getMonth() + 1
|
||||
const day = date.getDate()
|
||||
const hour = date.getHours()
|
||||
const minute = date.getMinutes()
|
||||
const second = date.getSeconds()
|
||||
|
||||
return [year, month, day].map(formatNumber).join('/') + ' ' + [hour, minute, second].map(formatNumber).join(':')
|
||||
}
|
||||
|
||||
const formatNumber = n => {
|
||||
n = n.toString()
|
||||
return n[1] ? n : '0' + n
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
formatTime: formatTime
|
||||
}
|