Browse Source

界面搭建

master
wuwenjie 5 years ago
commit
dafcb0cb47
52 changed files with 1352 additions and 0 deletions
  1. +34
    -0
      app.js
  2. +42
    -0
      app.json
  3. +17
    -0
      app.wxss
  4. +104
    -0
      pages/coupon/coupon.js
  5. +5
    -0
      pages/coupon/coupon.json
  6. +52
    -0
      pages/coupon/coupon.wxml
  7. +223
    -0
      pages/coupon/coupon.wxss
  8. +129
    -0
      pages/home/home.js
  9. +5
    -0
      pages/home/home.json
  10. +12
    -0
      pages/home/home.wxml
  11. +52
    -0
      pages/home/home.wxss
  12. +55
    -0
      pages/index/index.js
  13. +3
    -0
      pages/index/index.json
  14. +13
    -0
      pages/index/index.wxml
  15. +21
    -0
      pages/index/index.wxss
  16. +100
    -0
      pages/login/login.js
  17. +4
    -0
      pages/login/login.json
  18. +18
    -0
      pages/login/login.wxml
  19. +54
    -0
      pages/login/login.wxss
  20. +132
    -0
      pages/record/record.js
  21. +5
    -0
      pages/record/record.json
  22. +31
    -0
      pages/record/record.wxml
  23. +96
    -0
      pages/record/record.wxss
  24. +66
    -0
      pages/store/store.js
  25. +5
    -0
      pages/store/store.json
  26. +2
    -0
      pages/store/store.wxml
  27. +1
    -0
      pages/store/store.wxss
  28. +45
    -0
      project.config.json
  29. +7
    -0
      sitemap.json
  30. BIN
      static/coupon/01.png
  31. BIN
      static/coupon/Coupon1.png
  32. BIN
      static/coupon/bottomBg1.png
  33. BIN
      static/coupon/couponIcon.png
  34. BIN
      static/coupon/logo.png
  35. BIN
      static/coupon/symbolLeft.png
  36. BIN
      static/coupon/symbolRight.png
  37. BIN
      static/home/bg.jpg
  38. BIN
      static/home/logo.png
  39. BIN
      static/login/bg.jpg
  40. BIN
      static/login/logo.png
  41. BIN
      static/record/bg.jpg
  42. BIN
      static/record/down.png
  43. BIN
      static/record/head.png
  44. BIN
      static/record/icon1.png
  45. BIN
      static/record/up.png
  46. BIN
      static/tabBar/home0.png
  47. BIN
      static/tabBar/home1.png
  48. BIN
      static/tabBar/record0.png
  49. BIN
      static/tabBar/record1.png
  50. BIN
      static/tabBar/store0.png
  51. BIN
      static/tabBar/store1.png
  52. +19
    -0
      utils/util.js

+ 34
- 0
app.js View File

@@ -0,0 +1,34 @@
//app.js
App({
onLaunch: function () {
// 登录
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
}
})

+ 42
- 0
app.json View File

@@ -0,0 +1,42 @@
{
"pages": [
"pages/record/record",
"pages/coupon/coupon",
"pages/home/home",
"pages/login/login",
"pages/store/store"
],
"window": {
"backgroundTextStyle": "light",
"navigationBarBackgroundColor": "#fff",
"navigationBarTitleText": "老门框",
"navigationBarTextStyle": "black"
},
"tabBar": {
"color": "#666666",
"selectedColor": "#eb6100",
"backgroundColor": "#ffffff",
"borderStyle": "black",
"list": [
{
"pagePath": "pages/home/home",
"text": "核销大厅",
"iconPath": "static/tabBar/home0.png",
"selectedIconPath": "static/tabBar/home1.png"
},
{
"pagePath": "pages/store/store",
"text": "门店查询",
"iconPath": "static/tabBar/store0.png",
"selectedIconPath": "static/tabBar/store1.png"
},
{
"pagePath": "pages/record/record",
"text": "核销记录",
"iconPath": "static/tabBar/record0.png",
"selectedIconPath": "static/tabBar/record1.png"
}
]
},
"sitemapLocation": "sitemap.json"
}

+ 17
- 0
app.wxss View File

@@ -0,0 +1,17 @@
/**app.wxss**/
.container {
position: relative;
height: 100vh;
display: flex;
flex-direction: column;
align-items: center;
box-sizing: border-box;
}
image{
display: block;
}
/*防止父元素塌陷*/
.clearfix::before{
content: '';
display: table;
}

+ 104
- 0
pages/coupon/coupon.js View File

@@ -0,0 +1,104 @@
// pages/coupon/coupon.js
Page({

/**
* 页面的初始数据
*/
data: {
type:2,//1券码核销 2手机号核销
state:0,//核销未完成 1核销中 2核销已完成
totalNums:50,//总数量
nums:1,//核销数量
},
/**
* 核销
*/
writeOff:function(){
console.log('核销')
wx.switchTab({
url: '../record/record'
})
},
/**
* 添加优惠券
*/
addCoupon(){
if (this.data.nums+1<=this.data.totalNums){
this.setData({
nums:this.data.nums+1
})
}
},
/**
* 减少优惠券
*/
reduceCoupon(){
if (this.data.nums - 1 > 0) {
this.setData({
nums: this.data.nums - 1
})
}
},

/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
var code = options.code;
var pohone = options.phone;
if (code){//券码查询
console.log('券码查询')
}
if (pohone){//手机号查询
console.log('手机号查询')
}
},

/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {

},

/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
},

/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {

},

/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {

},

/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {

},

/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {

},

/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {

}
})

+ 5
- 0
pages/coupon/coupon.json View File

@@ -0,0 +1,5 @@
{
"usingComponents": {},
"navigationBarTitleText": "优惠券核销",
"disableScroll":true
}

+ 52
- 0
pages/coupon/coupon.wxml View File

@@ -0,0 +1,52 @@
<!--pages/coupon/coupon.wxml-->
<view class="container" style="background-color:#f6f6f6;">
<image class="couponImg" src="../../static/coupon/Coupon1.png"></image>
<view class="detailsBox shadow">
<image class="bottomBg" src="../../static/coupon/bottomBg1.png"></image>
<image class="decorate" src="../../static/coupon/01.png"></image>
<view class="detailsInfo">
<text class="txt1">80元抵100元优惠券</text>
<text class="txt2">购买时间:2020年02月25日</text>
</view>
<view class="detailsRight" wx:if="{{type==2}}">{{totalNums}}<text class="company">张</text>
</view>
<image class="logo" src="../../static/coupon/logo.png" wx:if="{{type==1}}"></image>
</view>
<view class="middleContent shadow">
<view id="couponCheck" class="relative clearfix" wx:if="{{type==1&&state!=2}}">
<image class="couponIcon" src="../../static/coupon/couponIcon.png"></image>
<text class="number">078657</text>
<view class="txt">此券有效</view>
</view>
<view id="couponDetails" class="relative clearfix" wx:if="{{type==1&&state==2}}">
<view class="title">核销详情</view>
<view class="detailsItem">
<view class="sign"></view>
<text class="itemTitle">券码</text>
<text class="itemContent">H0001</text>
</view>
<view class="detailsItem">
<view class="sign"></view>
<text class="itemTitle">类型</text>
<text class="itemContent">80元抵100元券</text>
</view>
<view class="detailsItem">
<view class="sign"></view>
<text class="itemTitle">时间</text>
<text class="itemContent">2020年02月25日</text>
</view>
<view class="state">核销成功</view>
</view>
<view id="vCodeBox" wx:if="{{type==2}}">
<input placeholder="输入短信验证码" placeholder-style="color:#FFFFFF;font-size:30rpx;"></input>
<view class="countBox">
<text>核销</text>
<view class="countContent">{{nums}}
<image class="symbolBox" src="../../static/coupon/symbolLeft.png" style="left:-1rpx;" bindtap="reduceCoupon"></image>
<image class="symbolBox" src="../../static/coupon/symbolRight.png" style="right:-1rpx;" bindtap="addCoupon"></image>
</view>
</view>
</view>
</view>
<button class="btn shadow" bindtap="writeOff">核销</button>
</view>

+ 223
- 0
pages/coupon/coupon.wxss View File

@@ -0,0 +1,223 @@
/* pages/coupon/coupon.wxss */
.relative {
position: relative;
width: 100%;
height: 100%;
}
.couponImg {
width: 750rpx;
height: 300rpx;
border-bottom-left-radius: 30rpx;
border-bottom-right-radius: 30rpx;
}
.shadow {
box-shadow: 0px 0px 20rpx 20rpx rgba(204, 204, 204, 0.2);
}
.detailsBox {
position: relative;
width: 100%;
height: 190rpx;
border-radius: 30rpx;
}
.detailsBox>.bottomBg {
width: 100%;
height: 100%;
}
.detailsBox>.decorate {
position: absolute;
top: -5rpx;
left: 28rpx;
width: 694rpx;
height: 10rpx;
}
.detailsBox>.detailsInfo {
position: absolute;
top: 0;
left: 0;
height: 100%;
width: 504rpx;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
.detailsBox>.detailsInfo>.txt1 {
color: #333;
font-size: 36rpx;
font-weight: bold;
font-family: SourceHanSansCN;
margin-bottom: 10rpx;
}
.detailsBox>.detailsInfo>.txt2 {
color: #999;
font-size: 24rpx;
font-weight: 500;
font-family: SourceHanSansCN;
margin-top: 10rpx;
}
.detailsBox>.detailsRight {
position: absolute;
top: 0;
left: 509rpx;
width: 241rpx;
height: 100%;
line-height: 190rpx;
text-align: center;
color: #eb6100;
font-size: 100rpx;
font-weight: bold;
}
.detailsBox>.detailsRight>.company {
color: #333;
font-size: 30rpx;
margin-left: 10rpx;
}
.detailsBox>.logo {
position: absolute;
right: 52rpx;
top: 40rpx;
width: 155rpx;
height: 110rpx;
}
.middleContent {
width: 750rpx;
background-color: #fff;
border-radius: 30rpx;
margin-top: 20rpx;
padding: 50rpx 0;
}
#couponCheck>.couponIcon {
width: 513rpx;
height: 200rpx;
margin: 0 auto;
}
#couponCheck>.number {
position: absolute;
top: 144rpx;
left: 470rpx;
color: #eb6100;
font-size: 30rpx;
font-weight: 700;
}
#couponCheck>.txt {
width: 100%;
text-align: center;
color: #eb6100;
font-size: 40rpx;
font-weight: 550;
margin-top: 50rpx;
}
#couponDetails>.title {
color: #333;
width: 100%;
text-align: center;
font-size: 30rpx;
font-weight: 550;
}
#couponDetails>.detailsItem {
height: 58rpx;
line-height: 58rpx;
padding-left: 32rpx;
}
#couponDetails>.detailsItem>.sign {
width: 20rpx;
height: 20rpx;
border-radius: 50%;
background-color: #eb6100;
display: inline-block;
}
#couponDetails>.detailsItem>.itemTitle {
color: #333;
font-size: 26rpx;
font-weight: 500;
padding-left: 17rpx;
}
#couponDetails>.detailsItem>.itemContent {
color: #666;
font-size: 22rpx;
font-weight: 400;
padding-left: 41rpx;
}
#couponDetails>.state {
text-align: center;
height: 38rpx;
line-height: 38rpx;
color: #eb6100;
font-size: 40rpx;
font-weight: 500;
margin-top: 49rpx;
}
.btn {
position: absolute;
bottom: 0;
width: 100%;
height: 98rpx;
border-radius: 0;
color: #fffefe;
font-size: 36rpx;
background: linear-gradient(-72deg, rgba(235, 97, 0, 1), rgba(255, 137, 42, 1));
}
#vCodeBox>input {
width: 600rpx;
height: 98rpx;
background-color: #d8d8d8;
margin: 0 auto;
border-radius: 49rpx;
padding: 0 41rpx;
box-sizing: border-box;
}
#vCodeBox>.countBox {
margin-top: 40rpx;
height: 44rpx;
font-size: 26rpx;
display: flex;
justify-content: center;
align-items: center;
}
#vCodeBox>.countBox>.countContent {
position: relative;
text-align: center;
height: 100%;
line-height: 44rpx;
width: 200rpx;
padding: 0 44rpx;
box-sizing: border-box;
background-color: #eee;
border: 2px solid rgba(238, 238, 238, 1);
border-radius: 6px;
display: inline-block;
margin-left: 25rpx;
}
#vCodeBox>.countBox>.countContent>.symbolBox{
position: absolute;
text-align: center;
width: 44rpx;
height: 44rpx;
top: -1rpx;
}

+ 129
- 0
pages/home/home.js View File

@@ -0,0 +1,129 @@
// pages/home/home.js
Page({

/**
* 页面的初始数据
*/
data: {
isQuerying:false,
},
/**
* 核销查询
*/
check: function(e) {
if (this.data.isQuerying){
return
}
var data = e.detail.value;
if (data.code == '' && data.phone == '') {
wx.showToast({
title: '请输入内容后再查询',
icon: 'none',
duration: 2000
})
} else if (data.code != '' && data.phone != '') {
wx.showToast({
title: '仅可选择一项查询',
icon: 'none',
duration: 2000
})
} else {
var type;
if(data.code!=''){//券码查询
type=1;
if(data.code.length!=6){
wx.showToast({
title: '券码格式错误',
icon: 'none',
duration: 2000
})
return
}
}
if(data.phone!=''){//手机号查询
type = 2;
if (data.phone.length != 11) {
wx.showToast({
title: '输入的手机号码有误',
icon: 'none',
duration: 2000
})
return
}
}
this.setData({
isQuerying:true
})
this.query(data,type);
}
},
query(data, type){
var key,value;
if (type == 1) {//券码查询
key='code';
value=data.code;
} else {//手机号查询
key = 'phone';
value = data.phone;
}
wx.navigateTo({
url: '../coupon/coupon?' + key+'='+value
})
},

/**
* 生命周期函数--监听页面加载
*/
onLoad: function(options) {

},

/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function() {

},

/**
* 生命周期函数--监听页面显示
*/
onShow: function() {

},

/**
* 生命周期函数--监听页面隐藏
*/
onHide: function() {

},

/**
* 生命周期函数--监听页面卸载
*/
onUnload: function() {

},

/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function() {

},

/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function() {

},

/**
* 用户点击右上角分享
*/
onShareAppMessage: function() {

}
})

+ 5
- 0
pages/home/home.json View File

@@ -0,0 +1,5 @@
{
"usingComponents": {},
"navigationBarTitleText":"核销大厅",
"disableScroll": true
}

+ 12
- 0
pages/home/home.wxml View File

@@ -0,0 +1,12 @@
<!--pages/home/home.wxml-->
<view class="container">
<image class="bg" src="../../static/home/bg.jpg" mode="aspectFill"></image>
<image class="logo" src="../../static/home/logo.png"></image>
<view class="fromBox">
<form bindsubmit="check">
<input name="code" maxlength="6" placeholder="请输入券码" placeholder-class="inputPlaceholder" style="margin-top:138rpx;" />
<input name="phone" maxlength="11" placeholder="手机号核销" placeholder-class="inputPlaceholder" type="number" />
<button class="query {{isQuerying?'select':''}}" form-type="submit">查询</button>
</form>
</view>
</view>

+ 52
- 0
pages/home/home.wxss View File

@@ -0,0 +1,52 @@
/* pages/home/home.wxss */
.bg {
position: absolute;
width: 100%;
height: 100%;
z-index: -1;
}
.logo {
width: 314rpx;
height: 221rpx;
margin-top: 74rpx;
}
.fromBox {
width: 600rpx;
height: 676rpx;
background-color: rgba(255, 255, 255, 0.9);
border-radius: 30rpx;
margin-top: 116rpx;
}
.fromBox input {
width: 522rpx;
height: 98rpx;
background-color: rgba(0, 0, 0, 0.28);
margin: 0 auto 40rpx auto;
border-radius: 49rpx;
padding: 0 34rpx;
box-sizing: border-box;
}
.inputPlaceholder {
color: #fff;
font-size: 30rpx;
}
.query {
width: 522rpx;
height: 98rpx;
background: linear-gradient(-72deg, rgba(235, 97, 0, 1), rgba(255, 137, 42, 1));
border-radius: 49rpx;
color: #ffffff;
text-align: center;
line-height: 98rpx;
box-sizing: border-box;
margin: 26rpx auto 0 auto;
}
.query.select{
background: #cccccc;
}

+ 55
- 0
pages/index/index.js View File

@@ -0,0 +1,55 @@
//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 () {
console.log(this.data.canIUse)
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
})
}
})

+ 3
- 0
pages/index/index.json View File

@@ -0,0 +1,3 @@
{
"usingComponents": {}
}

+ 13
- 0
pages/index/index.wxml View File

@@ -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>

+ 21
- 0
pages/index/index.wxss View File

@@ -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;
}

+ 100
- 0
pages/login/login.js View File

@@ -0,0 +1,100 @@
// pages/login/login.js
Page({

/**
* 页面的初始数据
*/
data: {
isLoginIng: false
},
/**
* 登录
*/
checkLogin(e) {
if (this.data.isLoginIng) {
return
}
var data = e.detail.value;
if (data.userName == '') {
wx.showToast({
title: '请先输入账号',
icon: 'none',
duration: 2000
})
} else if (data.password == '') {
wx.showToast({
title: '请先输入密码',
icon: 'none',
duration: 2000
})
} else {
this.setData({
isLoginIng: true
})
this.login(data);
}
},
login(data) {
setTimeout(function() {
wx.switchTab({
url: '../home/home'
})
}, 500)
},

/**
* 生命周期函数--监听页面加载
*/
onLoad: function(options) {

},

/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function() {

},

/**
* 生命周期函数--监听页面显示
*/
onShow: function() {

},

/**
* 生命周期函数--监听页面隐藏
*/
onHide: function() {

},

/**
* 生命周期函数--监听页面卸载
*/
onUnload: function() {

},

/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function() {

},

/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function() {

},

/**
* 用户点击右上角分享
*/
onShareAppMessage: function() {

}
})

+ 4
- 0
pages/login/login.json View File

@@ -0,0 +1,4 @@
{
"usingComponents": {},
"navigationBarTitleText": "登录"
}

+ 18
- 0
pages/login/login.wxml View File

@@ -0,0 +1,18 @@
<!--pages/login/login.wxml-->
<view class="container">
<image class="bg" src="../../static/login/bg.jpg" mode="aspectFill"></image>
<image class="logo" src="../../static/login/logo.png"></image>
<view class="fromBox">
<form bindsubmit="checkLogin">
<view class="item">
账号
<input name="userName"></input>
</view>
<view class="item">
密码
<input name="password" password></input>
</view>
<button class="btn {{isLoginIng?'select':''}}" form-type="submit">登录</button>
</form>
</view>
</view>

+ 54
- 0
pages/login/login.wxss View File

@@ -0,0 +1,54 @@
/* pages/login/login.wxss */
.bg {
position: absolute;
width: 100%;
height: 100%;
z-index: -1;
bottom: 0;
}
.logo {
width: 445rpx;
height: 486rpx;
}
.fromBox {
width: 583rpx;
margin: 56rpx auto 0 auto;
height: 300rpx;
}
.item {
position: relative;
height: 95rpx;
line-height: 95rpx;
margin-bottom: 19rpx;
font-size: 28rpx;
box-sizing: border-box;
color: #fff;
border-bottom: 2rpx solid #fff;
}
.item>input {
position: absolute;
height: 100%;
top: 1rpx;
left: 70rpx;
right: 0;
}
.btn {
width: 600rpx;
height: 98rpx;
line-height: 98rpx;
border-radius: 49rpx;
color: #ffffff;
font-size: 36rpx;
text-align: center;
margin-top: 111rpx;
background: linear-gradient(-72deg, rgba(235, 97, 0, 1), rgba(255, 137, 42, 1));
}
.btn.select{
background: #cccccc;
}

+ 132
- 0
pages/record/record.js View File

@@ -0,0 +1,132 @@
// pages/record/record.js
Page({

/**
* 页面的初始数据
*/
data: {
userName: '老门框内部操作',
userNo: '000001', //员工编号
showIndex: 1,
data: [{
time: '2020年02月25日',
no: 'H000001',
txt: '80抵100元券'
}, {
time: '2020年02月25日',
no: 'H000001',
txt: '80抵100元券'
}, {
time: '2020年02月25日',
no: 'H000001',
txt: '80抵100元券'
}, {
time: '2020年02月25日',
no: 'H000001',
txt: '80抵100元券'
}, {
time: '2020年02月25日',
no: 'H000001',
txt: '80抵100元券'
}, {
time: '2020年02月25日',
no: 'H000001',
txt: '80抵100元券'
}, {
time: '2020年02月25日',
no: 'H000001',
txt: '80抵100元券'
}, {
time: '2020年02月25日',
no: 'H000001',
txt: '80抵100元券'
}, {
time: '2020年02月25日',
no: 'H000001',
txt: '80抵100元券'
}, {
time: '2020年02月25日',
no: 'H000001',
txt: '80抵100元券'
}, {
time: '2020年02月25日',
no: 'H000001',
txt: '80抵100元券'
}, {
time: '2020年02月25日',
no: 'H000001',
txt: '80抵100元券'
}, {
time: '2020年02月25日',
no: 'H000001',
txt: '80抵100元券'
}],
},
panel: function(e) {
if (e.currentTarget.dataset.index != this.data.showIndex) {
this.setData({
showIndex: e.currentTarget.dataset.index
})
} else {
this.setData({
showIndex: 0
})
}
},

/**
* 生命周期函数--监听页面加载
*/
onLoad: function(options) {

},

/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function() {

},

/**
* 生命周期函数--监听页面显示
*/
onShow: function() {

},

/**
* 生命周期函数--监听页面隐藏
*/
onHide: function() {

},

/**
* 生命周期函数--监听页面卸载
*/
onUnload: function() {

},

/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function() {

},

/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function() {

},

/**
* 用户点击右上角分享
*/
onShareAppMessage: function() {

}
})

+ 5
- 0
pages/record/record.json View File

@@ -0,0 +1,5 @@
{
"usingComponents": {},
"navigationBarTitleText": "核销记录",
"disableScroll": true
}

+ 31
- 0
pages/record/record.wxml View File

@@ -0,0 +1,31 @@
<!--pages/record/record.wxml-->
<view class="container">
<image class="bg" src="../../static/record/bg.jpg"></image>
<view class="content">
<view class="headBox">
<image src="../../static/record/head.png" mode="aspectFill"></image>
</view>
<view class="userName">{{userName}}</view>
<view class="userNo">{{userNo}}</view>
<scroll-view id="collapseBox" scroll-y="true" class="collapseBox">
<view class="item">
<view class="title" data-index='1' catchtap='panel'>
<view class="title_0">
<image style="width:49rpx;height:30rpx;" src="../../static/record/icon1.png"></image>
</view>
<view class='title_1'>核销记录</view>
<view class="title_2">
<image src="../../static/record/{{showIndex == 1 ? 'up':'down'}}.png"></image>
</view>
</view>
<view class="details" wx:if="{{showIndex == 1}}" wx:for="{{data}}">
<text class="time">{{item.time}}</text>
<view class="infoBox">
<text>券码:{{item.no}}</text>
<text>{{item.txt}}</text>
</view>
</view>
</view>
</scroll-view>
</view>
</view>

+ 96
- 0
pages/record/record.wxss View File

@@ -0,0 +1,96 @@
/* pages/record/record.wxss */
.bg {
width: 750rpx;
height: 253rpx;
}
.content {
position: absolute;
width: 100%;
top: 253rpx;
bottom: 0;
background-color: #fff;
}
.headBox {
position: absolute;
top: -152rpx;
width: 200rpx;
height: 200rpx;
left: 50%;
transform: translateX(-50%);
border-radius: 50%;
overflow: hidden;
background-color: #fff;
}
.headBox>image {
width: 100%;
height: 100%;
}
.content>.userName {
color: #333;
font-size: 40rpx;
font-weight: bold;
text-align: center;
margin-top: 78rpx;
}
.content>.userNo{
text-align: center;
color: #666666;
font-size: 30rpx;
margin-top: 10rpx;
}
.content>.collapseBox{
width: 630rpx;
margin: 49rpx auto 0 auto;
padding-top: 30rpx;
border-top: 1rpx solid #CCCCCC;
height: calc(100vh - 530rpx);
}
.item{
margin: 10rpx auto;
}
.item>.title{
font-size: 30rpx;
height: 60rpx;
line-height: 60rpx;
display: flex;
}
.item>.title>.title_0{
width: 50rpx;
text-align: center;
display: flex;
align-items: center;
}
.item>.title>.title_1{
width: 520rpx;
color: #333333;
padding-left: 10rpx;
}
.item>.title>.title_2 {
width: 50rpx;
height: 60rpx;
text-align: center;
}
.item>.title>.title_2>image{
width: 34rpx;
height: 19rpx;
margin: 20.5rpx auto;
}
.item>.details{
margin: 10rpx auto;
}
.item>.details>.time{
color: #333333;
font-size: 24rpx;
}
.item>.details>.infoBox{
color: #999999;
font-size: 24rpx;
display: flex;
justify-content: space-between;
margin-top: 5rpx;
}

+ 66
- 0
pages/store/store.js View File

@@ -0,0 +1,66 @@
// pages/store/store.js
Page({

/**
* 页面的初始数据
*/
data: {

},

/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {

},

/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {

},

/**
* 生命周期函数--监听页面显示
*/
onShow: function () {

},

/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {

},

/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {

},

/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {

},

/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {

},

/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {

}
})

+ 5
- 0
pages/store/store.json View File

@@ -0,0 +1,5 @@
{
"usingComponents": {},
"navigationBarTitleText": "门店查询",
"disableScroll": true
}

+ 2
- 0
pages/store/store.wxml View File

@@ -0,0 +1,2 @@
<!--pages/store/store.wxml-->
<text>pages/store/store.wxml</text>

+ 1
- 0
pages/store/store.wxss View File

@@ -0,0 +1 @@
/* pages/store/store.wxss */

+ 45
- 0
project.config.json View File

@@ -0,0 +1,45 @@
{
"description": "项目配置文件",
"packOptions": {
"ignore": []
},
"setting": {
"urlCheck": true,
"es6": true,
"postcss": true,
"minified": true,
"newFeature": true,
"autoAudits": false,
"coverView": true,
"showShadowRootInWxmlPanel": true,
"scopeDataCheck": false
},
"compileType": "miniprogram",
"libVersion": "2.10.2",
"appid": "wxb83a175962c53ea6",
"projectname": "%E8%80%81%E9%97%A8%E6%A1%86",
"debugOptions": {
"hidedInDevtools": []
},
"isGameTourist": false,
"simulatorType": "wechat",
"simulatorPluginLibVersion": {},
"condition": {
"search": {
"current": -1,
"list": []
},
"conversation": {
"current": -1,
"list": []
},
"game": {
"currentL": -1,
"list": []
},
"miniprogram": {
"current": -1,
"list": []
}
}
}

+ 7
- 0
sitemap.json View File

@@ -0,0 +1,7 @@
{
"desc": "关于本文件的更多信息,请参考文档 https://developers.weixin.qq.com/miniprogram/dev/framework/sitemap.html",
"rules": [{
"action": "allow",
"page": "*"
}]
}

BIN
static/coupon/01.png View File

Before After
Width: 694  |  Height: 10  |  Size: 2.7KB

BIN
static/coupon/Coupon1.png View File

Before After
Width: 750  |  Height: 300  |  Size: 86KB

BIN
static/coupon/bottomBg1.png View File

Before After
Width: 750  |  Height: 190  |  Size: 2.0KB

BIN
static/coupon/couponIcon.png View File

Before After
Width: 513  |  Height: 200  |  Size: 5.6KB

BIN
static/coupon/logo.png View File

Before After
Width: 155  |  Height: 110  |  Size: 4.8KB

BIN
static/coupon/symbolLeft.png View File

Before After
Width: 44  |  Height: 44  |  Size: 322B

BIN
static/coupon/symbolRight.png View File

Before After
Width: 44  |  Height: 44  |  Size: 330B

BIN
static/home/bg.jpg View File

Before After
Width: 750  |  Height: 1334  |  Size: 575KB

BIN
static/home/logo.png View File

Before After
Width: 314  |  Height: 221  |  Size: 16KB

BIN
static/login/bg.jpg View File

Before After
Width: 750  |  Height: 1334  |  Size: 124KB

BIN
static/login/logo.png View File

Before After
Width: 445  |  Height: 486  |  Size: 11KB

BIN
static/record/bg.jpg View File

Before After
Width: 750  |  Height: 253  |  Size: 72KB

BIN
static/record/down.png View File

Before After
Width: 34  |  Height: 19  |  Size: 409B

BIN
static/record/head.png View File

Before After
Width: 200  |  Height: 200  |  Size: 19KB

BIN
static/record/icon1.png View File

Before After
Width: 49  |  Height: 30  |  Size: 571B

BIN
static/record/up.png View File

Before After
Width: 34  |  Height: 19  |  Size: 411B

BIN
static/tabBar/home0.png View File

Before After
Width: 39  |  Height: 40  |  Size: 1.3KB

BIN
static/tabBar/home1.png View File

Before After
Width: 39  |  Height: 40  |  Size: 1.3KB

BIN
static/tabBar/record0.png View File

Before After
Width: 40  |  Height: 34  |  Size: 724B

BIN
static/tabBar/record1.png View File

Before After
Width: 40  |  Height: 34  |  Size: 729B

BIN
static/tabBar/store0.png View File

Before After
Width: 40  |  Height: 39  |  Size: 827B

BIN
static/tabBar/store1.png View File

Before After
Width: 40  |  Height: 39  |  Size: 827B

+ 19
- 0
utils/util.js View File

@@ -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
}

Loading…
Cancel
Save