@ -0,0 +1,31 @@
|
||||
/* |
||||
* Eslint config file |
||||
* Documentation: https://eslint.org/docs/user-guide/configuring/
|
||||
* Install the Eslint extension before using this feature. |
||||
*/ |
||||
module.exports = { |
||||
env: { |
||||
es6: true, |
||||
browser: true, |
||||
node: true, |
||||
}, |
||||
ecmaFeatures: { |
||||
modules: true, |
||||
}, |
||||
parserOptions: { |
||||
ecmaVersion: 2018, |
||||
sourceType: 'module', |
||||
}, |
||||
globals: { |
||||
wx: true, |
||||
App: true, |
||||
Page: true, |
||||
getCurrentPages: true, |
||||
getApp: true, |
||||
Component: true, |
||||
requirePlugin: true, |
||||
requireMiniProgram: true, |
||||
}, |
||||
// extends: 'eslint:recommended',
|
||||
rules: {}, |
||||
} |
@ -0,0 +1,59 @@
|
||||
// app.js
|
||||
App({ |
||||
onLaunch() { |
||||
// 展示本地存储能力
|
||||
const logs = wx.getStorageSync('logs') || [] |
||||
logs.unshift(Date.now()) |
||||
wx.setStorageSync('logs', logs) |
||||
|
||||
// 登录
|
||||
|
||||
}, |
||||
login(loginInfo){ |
||||
wx.login({ |
||||
success: res => { |
||||
// 发送 res.code 到后台换取 openId, sessionKey, unionId
|
||||
|
||||
} |
||||
}) |
||||
}, |
||||
http(methods,url,params){ |
||||
var header = { |
||||
'content-type': 'application/json', |
||||
'Authorization' : wx.getStorageSync('token') || '' |
||||
}; |
||||
return new Promise((resolve,reject)=>{ |
||||
wx.showLoading({ |
||||
title: '正在加载中...', |
||||
}) |
||||
wx.request({ |
||||
url: this.globalData.baseUrl + url, |
||||
method: methods, |
||||
header: header, |
||||
data: params || {}, |
||||
success: res=> { |
||||
wx.hideLoading(); |
||||
if(!res.data.success && res.data.status == 401){ |
||||
// console.log('登陆失效')
|
||||
wx.navigateTo({ |
||||
url: '/pages/login/index', |
||||
}) |
||||
} |
||||
resolve(res); |
||||
}, |
||||
fail: err=> { |
||||
wx.hideLoading(); |
||||
wx.showToast({ |
||||
title: '服务器错误,请稍后再试!', |
||||
icon : 'none' |
||||
}) |
||||
reject(err) |
||||
} |
||||
}) |
||||
}) |
||||
}, |
||||
globalData: { |
||||
baseURL : 'http://192.168.0.114:8092/api/', |
||||
// baseURL : 'https://cloud.api.cyjyyjy.com/api/',
|
||||
} |
||||
}) |
@ -0,0 +1,19 @@
|
||||
{ |
||||
"pages":[ |
||||
|
||||
"pages/home/index", |
||||
"pages/goodsList/index", |
||||
"pages/login/index", |
||||
"pages/goodsDetail/index", |
||||
"pages/companyInfo/index", |
||||
"pages/index/index" |
||||
], |
||||
"window":{ |
||||
"backgroundTextStyle":"light", |
||||
"navigationBarBackgroundColor": "#fff", |
||||
"navigationBarTitleText": "Weixin", |
||||
"navigationBarTextStyle":"black" |
||||
}, |
||||
"style": "v2", |
||||
"sitemapLocation": "sitemap.json" |
||||
} |
@ -0,0 +1,95 @@
|
||||
view, |
||||
scroll-view, |
||||
swiper, |
||||
button, |
||||
input, |
||||
textarea, |
||||
label, |
||||
navigator, |
||||
image { |
||||
-webkit-box-sizing: border-box; |
||||
box-sizing: border-box; |
||||
} |
||||
image{ |
||||
/* border-radius: 8rpx; */ |
||||
} |
||||
/* layout */ |
||||
.acea-row-nowrap { |
||||
display: flex; |
||||
/* 辅助类 */ |
||||
} |
||||
.acea-row { |
||||
display: flex; |
||||
flex-wrap: wrap; |
||||
/* 辅助类 */ |
||||
} |
||||
.acea-row.row-middle,.acea-row-nowrap.row-middle{ |
||||
align-items: center; |
||||
} |
||||
.acea-row.row-top,.acea-row-nowrap.row-top { |
||||
align-items: flex-start; |
||||
} |
||||
.acea-row.row-bottom { |
||||
align-items: flex-end; |
||||
} |
||||
.acea-row.row-center,.acea-row-nowrap.row-center { |
||||
justify-content: center; |
||||
} |
||||
.acea-row.row-right,.acea-row-nowrap.row-right { |
||||
justify-content: flex-end; |
||||
} |
||||
.acea-row.row-left,.acea-row-nowrap.row-left { |
||||
justify-content: flex-start; |
||||
} |
||||
.acea-row.row-between,.acea-row-nowrap.row-between { |
||||
justify-content: space-between; |
||||
} |
||||
.acea-row.row-around, .acea-row-nowrap.row-around{ |
||||
justify-content: space-around; |
||||
} |
||||
.acea-row.row-column-around,.acea-row-nowrap.row-column-around { |
||||
flex-direction: column; |
||||
justify-content: space-around; |
||||
} |
||||
.acea-row.row-column { |
||||
flex-direction: column; |
||||
} |
||||
.acea-row.row-column-between,.acea-row-nowrap.row-column-between { |
||||
flex-direction: column; |
||||
justify-content: space-between; |
||||
} |
||||
/* 上下左右垂直居中 */ |
||||
.acea-row.row-center-wrapper,.acea-row-nowrap.row-center-wrapper { |
||||
align-items: center; |
||||
justify-content: center; |
||||
} |
||||
/* 上下两边居中对齐 */ |
||||
.acea-row.row-between-wrapper,.acea-row-nowrap.row-between-wrapper { |
||||
align-items: center; |
||||
justify-content: space-between; |
||||
} |
||||
.line1{ |
||||
overflow:hidden; |
||||
text-overflow:ellipsis; |
||||
white-space:nowrap; |
||||
width: 100%; |
||||
} |
||||
.line2{ |
||||
word-break:break-all; |
||||
display:-webkit-box; |
||||
-webkit-line-clamp:2; |
||||
-webkit-box-orient:vertical; |
||||
overflow:hidden; |
||||
} |
||||
.submit-btn{ |
||||
width: 318rpx; |
||||
height: 68rpx; |
||||
background: linear-gradient(274deg, #EE7F7B 0%, #EB5750 100%); |
||||
border-radius: 34rpx; |
||||
text-align: center; |
||||
line-height: 68rpx; |
||||
font-size: 36rpx; |
||||
color: #fff; |
||||
font-weight: 500; |
||||
margin: 60rpx auto; |
||||
} |
After Width: | Height: | Size: 403 KiB |
After Width: | Height: | Size: 91 KiB |
After Width: | Height: | Size: 392 KiB |
After Width: | Height: | Size: 626 B |
After Width: | Height: | Size: 625 KiB |
After Width: | Height: | Size: 649 KiB |
After Width: | Height: | Size: 531 B |
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 653 B |
After Width: | Height: | Size: 647 B |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 12 KiB |
@ -0,0 +1,70 @@
|
||||
// pages/companyInfo/index.js
|
||||
Page({ |
||||
|
||||
/** |
||||
* 页面的初始数据 |
||||
*/ |
||||
data: { |
||||
|
||||
}, |
||||
|
||||
/** |
||||
* 生命周期函数--监听页面加载 |
||||
*/ |
||||
onLoad: function (options) { |
||||
|
||||
}, |
||||
toList(){ |
||||
wx.navigateTo({ |
||||
url: '/pages/goodsList/index', |
||||
}) |
||||
}, |
||||
/** |
||||
* 生命周期函数--监听页面初次渲染完成 |
||||
*/ |
||||
onReady: function () { |
||||
|
||||
}, |
||||
|
||||
/** |
||||
* 生命周期函数--监听页面显示 |
||||
*/ |
||||
onShow: function () { |
||||
|
||||
}, |
||||
|
||||
/** |
||||
* 生命周期函数--监听页面隐藏 |
||||
*/ |
||||
onHide: function () { |
||||
|
||||
}, |
||||
|
||||
/** |
||||
* 生命周期函数--监听页面卸载 |
||||
*/ |
||||
onUnload: function () { |
||||
|
||||
}, |
||||
|
||||
/** |
||||
* 页面相关事件处理函数--监听用户下拉动作 |
||||
*/ |
||||
onPullDownRefresh: function () { |
||||
|
||||
}, |
||||
|
||||
/** |
||||
* 页面上拉触底事件的处理函数 |
||||
*/ |
||||
onReachBottom: function () { |
||||
|
||||
}, |
||||
|
||||
/** |
||||
* 用户点击右上角分享 |
||||
*/ |
||||
onShareAppMessage: function () { |
||||
|
||||
} |
||||
}) |
@ -0,0 +1,4 @@
|
||||
{ |
||||
"usingComponents": {}, |
||||
"navigationBarTitleText": "公司信息" |
||||
} |
@ -0,0 +1,22 @@
|
||||
<!--pages/companyInfo/index.wxml--> |
||||
<view class="companyInfo-page"> |
||||
<view class="top-bg"><image src="../../images/company-info.png"></image></view> |
||||
<view class="content-box"> |
||||
<view class="title-box"> |
||||
<image src="../../images/title1.png"></image> |
||||
</view> |
||||
<view class="introduse-box"> |
||||
<text>深圳市瑞梦思时代科技有限公司,瑞蓢国际集团旗下全资子公司,以能量家居系统、智慧健康睡眠生态系统为主打的核心品牌。当前旗下产品包括“重塑本元”、“吉祥卧”床垫,“少年强”青少年床垫,旅行垫,魔术减负能量背包等。\n</text> |
||||
<text>瑞梦思以“专注每一天,健康每一夜”为目标,为人们研发贯穿生活各方面的能量家居产品,让每个家庭,每个人都能从源头开始防患于未然,远离亚健康,享受真正健康轻松的幸福生活。</text> |
||||
</view> |
||||
<view class="title-box"> |
||||
<image src="../../images/title2.png"></image> |
||||
</view> |
||||
<view class="list-box acea-row row-between"> |
||||
<view class="item"><image src="../../images/jixiang.png" mode="aspectFill"></image></view> |
||||
<view class="item"><image src="../../images/jixiang.png" mode="aspectFill"></image></view> |
||||
<view class="item"><image src="../../images/jixiang.png" mode="aspectFill"></image></view> |
||||
</view> |
||||
</view> |
||||
<view class="submit-btn" bindtap="toList">更多商品</view> |
||||
</view> |
@ -0,0 +1,48 @@
|
||||
/* pages/companyInfo/index.wxss */ |
||||
.companyInfo-page{ |
||||
width: 100%; |
||||
} |
||||
.top-bg{ |
||||
width: 100%; |
||||
height: 578rpx; |
||||
} |
||||
.top-bg image{ |
||||
width: 100%; |
||||
height: 100%; |
||||
} |
||||
.content-box{ |
||||
width: 100%; |
||||
padding: 0 40rpx; |
||||
} |
||||
.title-box{ |
||||
width: 100%; |
||||
height: 92rpx; |
||||
} |
||||
.title-box image{ |
||||
width: 100%; |
||||
height: 100%; |
||||
} |
||||
.introduse-box{ |
||||
padding: 12rpx 0; |
||||
color: #0B204C; |
||||
font-size: 24rpx; |
||||
line-height: 34rpx; |
||||
font-weight: 500; |
||||
text-indent: 1em; |
||||
} |
||||
.list-box{ |
||||
width: 100%; |
||||
margin-top: 32rpx; |
||||
} |
||||
.item{ |
||||
width: 200rpx; |
||||
height: 152rpx; |
||||
} |
||||
.item image{ |
||||
width: 100%; |
||||
height: 100%; |
||||
border-radius: 8rpx; |
||||
} |
||||
.submit-btn{ |
||||
margin: 60rpx auto; |
||||
} |
@ -0,0 +1,75 @@
|
||||
// pages/goodsDetail/index.js
|
||||
Page({ |
||||
|
||||
/** |
||||
* 页面的初始数据 |
||||
*/ |
||||
data: { |
||||
|
||||
}, |
||||
|
||||
/** |
||||
* 生命周期函数--监听页面加载 |
||||
*/ |
||||
onLoad: function (options) { |
||||
|
||||
}, |
||||
toHome(){ |
||||
wx.navigateTo({ |
||||
url: '/pages/home/index', |
||||
}) |
||||
}, |
||||
toList(){ |
||||
wx.navigateTo({ |
||||
url: '/pages/goodsList/index', |
||||
}) |
||||
}, |
||||
/** |
||||
* 生命周期函数--监听页面初次渲染完成 |
||||
*/ |
||||
onReady: function () { |
||||
|
||||
}, |
||||
|
||||
/** |
||||
* 生命周期函数--监听页面显示 |
||||
*/ |
||||
onShow: function () { |
||||
|
||||
}, |
||||
|
||||
/** |
||||
* 生命周期函数--监听页面隐藏 |
||||
*/ |
||||
onHide: function () { |
||||
|
||||
}, |
||||
|
||||
/** |
||||
* 生命周期函数--监听页面卸载 |
||||
*/ |
||||
onUnload: function () { |
||||
|
||||
}, |
||||
|
||||
/** |
||||
* 页面相关事件处理函数--监听用户下拉动作 |
||||
*/ |
||||
onPullDownRefresh: function () { |
||||
|
||||
}, |
||||
|
||||
/** |
||||
* 页面上拉触底事件的处理函数 |
||||
*/ |
||||
onReachBottom: function () { |
||||
|
||||
}, |
||||
|
||||
/** |
||||
* 用户点击右上角分享 |
||||
*/ |
||||
onShareAppMessage: function () { |
||||
|
||||
} |
||||
}) |
@ -0,0 +1,4 @@
|
||||
{ |
||||
"usingComponents": {}, |
||||
"navigationBarTitleText": "商品详情" |
||||
} |
@ -0,0 +1,55 @@
|
||||
<!--pages/goodsDetail/index.wxml--> |
||||
<view class="detail-page"> |
||||
<view class="swiper-box"> |
||||
<swiper> |
||||
<block> |
||||
<swiper-item> |
||||
<view class="swiper-item"> |
||||
<image src="../../images/jixiang.png" mode="widthFix"></image> |
||||
</view> |
||||
</swiper-item> |
||||
</block> |
||||
</swiper> |
||||
</view> |
||||
<view class="goods-info-box acea-row row-between"> |
||||
<view class="info-l-box"> |
||||
<view class="name line1">瑞梦思·布胡斯智能床垫</view> |
||||
<view class="price"><text class="fz20">¥</text>129000-289000</view> |
||||
<view class="old-price">原价:¥<text class="row-line">99999</text></view> |
||||
</view> |
||||
<view class="info-r-box"> |
||||
<view>销量:999+</view> |
||||
<button open-type="share" class="share-btn acea-row row-center-wrapper"> |
||||
<image src="../../images/share.png"></image> |
||||
<text>分享</text> |
||||
</button> |
||||
</view> |
||||
</view> |
||||
<view class="title-box acea-row row-center row-middle"> |
||||
<view class="row-line"></view> |
||||
<view class="title">产商品情</view> |
||||
<view class="row-line"></view> |
||||
</view> |
||||
<view class="produce-detail"> |
||||
<image src="../../images/jixiang.png" mode="widthFix"></image> |
||||
<image src="../../images/jixiang.png" mode="widthFix"></image> |
||||
<image src="../../images/chongsu.png" mode="widthFix"></image> |
||||
<image src="../../images/chongsu.png" mode="widthFix"></image> |
||||
</view> |
||||
<view class="footer-box acea-row row-between-wrapper"> |
||||
<view class="icons-box acea-row"> |
||||
<view class="home" bindtap="toHome"> |
||||
<image src="../../images/home.png"></image> |
||||
<text>首页</text> |
||||
</view> |
||||
<view class="home" bindtap="toList"> |
||||
<image src="../../images/list.png"></image> |
||||
<text>商品列表</text> |
||||
</view> |
||||
</view> |
||||
<view class="submit-btn">立即咨询</view> |
||||
</view> |
||||
<view class="mask-box"> |
||||
|
||||
</view> |
||||
</view> |
@ -0,0 +1,121 @@
|
||||
/* pages/goodsDetail/index.wxss */ |
||||
.detail-page{ |
||||
min-height: 100vh; |
||||
padding-bottom: 180rpx; |
||||
background: #F7F7F7; |
||||
} |
||||
.swiper-box{ |
||||
width: 100%; |
||||
height: 500rpx; |
||||
} |
||||
.swiper-box swiper{ |
||||
width: 100%; |
||||
height: 100%; |
||||
} |
||||
.swiper-item image{ |
||||
width: 100%; |
||||
height: 100%; |
||||
} |
||||
|
||||
.goods-info-box{ |
||||
width: 670rpx; |
||||
height: 216rpx; |
||||
background: #fff; |
||||
border-radius: 12rpx; |
||||
margin: 32rpx auto; |
||||
padding: 24rpx 0 24rpx 24rpx; |
||||
} |
||||
.info-l-box{ |
||||
width: 420rpx; |
||||
} |
||||
.info-l-box .name{ |
||||
color: #202020; |
||||
font-size: 32rpx; |
||||
font-weight: 500; |
||||
} |
||||
.price{ |
||||
font-size: 52rpx; |
||||
color: #EB554D; |
||||
font-weight: 500; |
||||
line-height: 74rpx; |
||||
margin: 8rpx 0; |
||||
} |
||||
.fz20{ |
||||
font-size: 24rpx; |
||||
} |
||||
.old-price{ |
||||
font-size: 24rpx; |
||||
color: #B9B9B9; |
||||
} |
||||
.old-price .row-line{ |
||||
text-decoration: line-through; |
||||
} |
||||
|
||||
.info-r-box{ |
||||
font-size: 24rpx; |
||||
color: #B9B9B9; |
||||
} |
||||
.share-btn{ |
||||
width: 102rpx !important; |
||||
height: 48rpx !important; |
||||
padding: 0; |
||||
margin: 0 !important; |
||||
background: #EB554D; |
||||
border-radius: 28rpx 0px 0px 28rpx; |
||||
font-size: 22rpx; |
||||
color: #fff; |
||||
margin-top: 20rpx !important; |
||||
margin-left: 28rpx !important; |
||||
} |
||||
.share-btn image{ |
||||
width: 23rpx; |
||||
height: 27rpx; |
||||
margin-right: 6rpx; |
||||
} |
||||
|
||||
.title-box{ |
||||
margin: 40rpx auto 44rpx; |
||||
} |
||||
.title-box .row-line{ |
||||
width: 58rpx; |
||||
height: 2rpx; |
||||
background: #000; |
||||
} |
||||
.title-box .title{ |
||||
font-size: 28rpx; |
||||
color: #000; |
||||
margin: 0 18rpx; |
||||
font-weight: 500; |
||||
} |
||||
.produce-detail{ |
||||
width: 100%; |
||||
} |
||||
.produce-detail image{ |
||||
width: 100%; |
||||
} |
||||
|
||||
.footer-box{ |
||||
width: 100%; |
||||
height: 160rpx; |
||||
background: #fff; |
||||
position: fixed; |
||||
bottom: 0; |
||||
left: 0; |
||||
padding: 38rpx 40rpx 38rpx 92rpx; |
||||
} |
||||
.home{ |
||||
display: flex; |
||||
flex-direction: column; |
||||
align-items: center; |
||||
justify-content: center; |
||||
font-size: 22rpx; |
||||
color: #202020; |
||||
margin-right: 76rpx; |
||||
} |
||||
.home image{ |
||||
width: 48rpx; |
||||
height: 48rpx; |
||||
} |
||||
.submit-btn{ |
||||
margin: 0; |
||||
} |
@ -0,0 +1,70 @@
|
||||
// pages/goodsList/index.js
|
||||
Page({ |
||||
|
||||
/** |
||||
* 页面的初始数据 |
||||
*/ |
||||
data: { |
||||
|
||||
}, |
||||
|
||||
/** |
||||
* 生命周期函数--监听页面加载 |
||||
*/ |
||||
onLoad: function (options) { |
||||
|
||||
}, |
||||
toDetail(e){ |
||||
wx.navigateTo({ |
||||
url: '/pages/goodsDetail/index', |
||||
}) |
||||
}, |
||||
/** |
||||
* 生命周期函数--监听页面初次渲染完成 |
||||
*/ |
||||
onReady: function () { |
||||
|
||||
}, |
||||
|
||||
/** |
||||
* 生命周期函数--监听页面显示 |
||||
*/ |
||||
onShow: function () { |
||||
|
||||
}, |
||||
|
||||
/** |
||||
* 生命周期函数--监听页面隐藏 |
||||
*/ |
||||
onHide: function () { |
||||
|
||||
}, |
||||
|
||||
/** |
||||
* 生命周期函数--监听页面卸载 |
||||
*/ |
||||
onUnload: function () { |
||||
|
||||
}, |
||||
|
||||
/** |
||||
* 页面相关事件处理函数--监听用户下拉动作 |
||||
*/ |
||||
onPullDownRefresh: function () { |
||||
|
||||
}, |
||||
|
||||
/** |
||||
* 页面上拉触底事件的处理函数 |
||||
*/ |
||||
onReachBottom: function () { |
||||
|
||||
}, |
||||
|
||||
/** |
||||
* 用户点击右上角分享 |
||||
*/ |
||||
onShareAppMessage: function () { |
||||
|
||||
} |
||||
}) |
@ -0,0 +1,4 @@
|
||||
{ |
||||
"usingComponents": {}, |
||||
"navigationBarTitleText": "商品列表" |
||||
} |
@ -0,0 +1,16 @@
|
||||
<!--pages/goodsList/index.wxml--> |
||||
<view class="goodsList-page"> |
||||
<view class="goods-list"> |
||||
<view class="goods-item acea-row" wx:for="{{3}}" :key="index" bindtap="toDetail" data-id="id"> |
||||
<image src="../../images/jixiang.png" mode="aspectFill"></image> |
||||
<view class="goods-info"> |
||||
<view class="name line2">瑞梦思·夏季新款独家定制款独家定制智能款独家定制智能智能床垫</view> |
||||
<view class="desc">高级智能床垫·安心休息</view> |
||||
<view class="price"> |
||||
<text class="s-word">¥</text> |
||||
<text>129000</text> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
@ -0,0 +1,48 @@
|
||||
/* pages/goodsList/index.wxss */ |
||||
.goodsList-page{ |
||||
width: 100%; |
||||
min-height: 100vh; |
||||
background: #F7F7F7; |
||||
} |
||||
.goods-list{ |
||||
width: 100%; |
||||
padding: 40rpx; |
||||
} |
||||
.goods-item{ |
||||
width: 100%; |
||||
height: 226rpx; |
||||
background: #fff; |
||||
border-radius: 12rpx; |
||||
padding: 24rpx 32rpx; |
||||
margin-bottom: 20rpx; |
||||
} |
||||
.goods-item image{ |
||||
width: 178rpx; |
||||
height: 178rpx; |
||||
border-radius: 8rpx; |
||||
margin-right: 32rpx; |
||||
} |
||||
.goods-info{ |
||||
width: calc(100% - 210rpx); |
||||
display: flex; |
||||
flex-direction: column; |
||||
justify-content: space-between; |
||||
} |
||||
.name{ |
||||
color: #202020; |
||||
font-size: 28rpx; |
||||
line-height: 40rpx; |
||||
font-weight: 500; |
||||
} |
||||
.desc{ |
||||
font-size: 22rpx; |
||||
color: #a4a4a4; |
||||
} |
||||
.price{ |
||||
font-size: 36rpx; |
||||
color: #EB554D; |
||||
font-weight: 500; |
||||
} |
||||
.price .s-word{ |
||||
font-size: 24rpx; |
||||
} |
@ -0,0 +1,89 @@
|
||||
// pages/home/index.js
|
||||
Page({ |
||||
|
||||
/** |
||||
* 页面的初始数据 |
||||
*/ |
||||
data: { |
||||
authorize: false, |
||||
canIUseGetUserProfile: false |
||||
}, |
||||
|
||||
/** |
||||
* 生命周期函数--监听页面加载 |
||||
*/ |
||||
onLoad: function (options) { |
||||
|
||||
}, |
||||
getUserInfoProfile(){ |
||||
wx.getUserProfile({ |
||||
lang: 'zh_CN', |
||||
desc: '需要获取您的信息用来展示', |
||||
success: res => { |
||||
console.log(res) |
||||
uni.showLoading({ |
||||
title: '登录中', |
||||
}) |
||||
|
||||
}, |
||||
}) |
||||
}, |
||||
toDetial(){ |
||||
wx.navigateTo({ |
||||
url: '/pages/goodsDetail/index', |
||||
}) |
||||
}, |
||||
toCompany(){ |
||||
wx.navigateTo({ |
||||
url: '/pages/companyInfo/index', |
||||
}) |
||||
}, |
||||
/** |
||||
* 生命周期函数--监听页面初次渲染完成 |
||||
*/ |
||||
onReady: function () { |
||||
|
||||
}, |
||||
|
||||
/** |
||||
* 生命周期函数--监听页面显示 |
||||
*/ |
||||
onShow: function () { |
||||
|
||||
}, |
||||
|
||||
/** |
||||
* 生命周期函数--监听页面隐藏 |
||||
*/ |
||||
onHide: function () { |
||||
|
||||
}, |
||||
|
||||
/** |
||||
* 生命周期函数--监听页面卸载 |
||||
*/ |
||||
onUnload: function () { |
||||
|
||||
}, |
||||
|
||||
/** |
||||
* 页面相关事件处理函数--监听用户下拉动作 |
||||
*/ |
||||
onPullDownRefresh: function () { |
||||
|
||||
}, |
||||
|
||||
/** |
||||
* 页面上拉触底事件的处理函数 |
||||
*/ |
||||
onReachBottom: function () { |
||||
|
||||
}, |
||||
|
||||
/** |
||||
* 用户点击右上角分享 |
||||
*/ |
||||
onShareAppMessage: function () { |
||||
|
||||
} |
||||
}) |
@ -0,0 +1,4 @@
|
||||
{ |
||||
"usingComponents": {}, |
||||
"navigationStyle": "custom" |
||||
} |
@ -0,0 +1,51 @@
|
||||
<!--pages/home/index.wxml--> |
||||
<view class="home-page"> |
||||
<view class="top-box"> |
||||
<image src="../../images/index-top.png"></image> |
||||
</view> |
||||
<view class="company-info-box acea-row-nowrap" bindtap="toCompany"> |
||||
<image src="../../images/company-bg.png" class="info-bg"></image> |
||||
<view class="info-box acea-row-nowrap row-between"> |
||||
<image src="../../images/logo.png"></image> |
||||
<view class="introduce-box acea-row row-column-between"> |
||||
<view class="name">深圳市瑞梦思时代科技有限公司</view> |
||||
<view class="desc">瑞蓢国际集团旗下全资子公司,以能量家居系统、智慧健康睡眠生态系统为主打的核心品牌。</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view class="goods-list-box"> |
||||
<view class="title-box acea-row row-center row-middle"> |
||||
<view class="row-line"></view> |
||||
<view class="title">商品介绍</view> |
||||
<view class="row-line"></view> |
||||
</view> |
||||
<view class="goods-item" bindtap="toDetial"> |
||||
<image src="../../images/jixiang.png" mode="widthFix"></image> |
||||
</view> |
||||
<view class="goods-item"> |
||||
<image src="../../images/chongsu.png" mode="widthFix"></image> |
||||
</view> |
||||
</view> |
||||
<view class="form-box"> |
||||
<view class="tips-box acea-row row-middle"> |
||||
<image src="../../images/tip-icon.png"></image> |
||||
<text>输入姓名电话立即咨询!</text> |
||||
</view> |
||||
<view class="form"> |
||||
<image src="../../images/company-bg.png" class="info-bg"></image> |
||||
<view class="inp-box"> |
||||
<view class="inp-item acea-row row-middle"> |
||||
<text class="label">您的姓名:</text> |
||||
<input type="text" placeholder="请输入您的姓名" /> |
||||
</view> |
||||
<view class="inp-item acea-row row-middle"> |
||||
<text class="label">您的电话:</text> |
||||
<input type="text" placeholder="请输入您的电话" /> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<button class="submit-btn" wx:if="canIUseGetUserProfile" bindtap="getUserInfoProfile">立即咨询</button> |
||||
<button class="submit-btn" wx:else open-type="getUserInfo" bindtap="getUserInfo">立即咨询</button> |
||||
<view class="submit-btn">立即咨询</view> |
||||
</view> |
||||
</view> |
@ -0,0 +1,124 @@
|
||||
/* pages/home/index.wxss */ |
||||
|
||||
.top-box{ |
||||
width: 100%; |
||||
height: 874rpx; |
||||
} |
||||
.top-box image{ |
||||
width: 100%; |
||||
height: 100%; |
||||
} |
||||
|
||||
.company-info-box{ |
||||
width: 670rpx; |
||||
height: 268rpx; |
||||
position: relative; |
||||
margin: -124rpx auto 0; |
||||
} |
||||
.company-info-box .info-bg{ |
||||
width: 100%; |
||||
height: 100%; |
||||
position: absolute; |
||||
} |
||||
|
||||
.info-box{ |
||||
width: 100%; |
||||
position: absolute; |
||||
top: 0; |
||||
z-index: 2; |
||||
padding: 44rpx 20rpx 42rpx 40rpx; |
||||
} |
||||
.info-box image{ |
||||
width: 150rpx; |
||||
height: 182rpx; |
||||
} |
||||
.introduce-box{ |
||||
width: 440rpx; |
||||
} |
||||
.introduce-box .name{ |
||||
font-size: 30rpx; |
||||
color: #514E4E; |
||||
font-weight: 600; |
||||
} |
||||
.introduce-box .desc{ |
||||
font-size: 24rpx; |
||||
color: #8A8A8A; |
||||
} |
||||
|
||||
.goods-list-box{ |
||||
width: 100%; |
||||
margin-top: 48rpx; |
||||
} |
||||
.title-box{ |
||||
margin-bottom: 30rpx; |
||||
} |
||||
.row-line{ |
||||
width: 108rpx; |
||||
height: 2rpx; |
||||
background: #959595; |
||||
} |
||||
.title-box .title{ |
||||
font-size: 32rpx; |
||||
color: #959595; |
||||
margin: 0 18rpx; |
||||
font-weight: 500; |
||||
} |
||||
.goods-item{ |
||||
width: 100%; |
||||
margin-bottom: 16rpx; |
||||
} |
||||
.goods-item image{ |
||||
width: 100%; |
||||
} |
||||
|
||||
.form-box{ |
||||
width: 100%; |
||||
padding: 80rpx 40rpx; |
||||
position: relative; |
||||
} |
||||
.tips-box{ |
||||
font-size: 24rpx; |
||||
color: #1D1D1D; |
||||
margin-bottom: 32rpx; |
||||
} |
||||
.tips-box image{ |
||||
width: 24.5rpx; |
||||
height: 24.5rpx; |
||||
margin: 2rpx 4rpx 0 0 ; |
||||
} |
||||
.form{ |
||||
width: 100%; |
||||
height: 232rpx; |
||||
font-size: 24rpx; |
||||
color: #1D1D1D; |
||||
position: relative; |
||||
} |
||||
.form .info-bg{ |
||||
width: 100%; |
||||
height: 232rpx; |
||||
position: absolute; |
||||
} |
||||
.inp-box{ |
||||
width: 100%; |
||||
position: absolute; |
||||
z-index: 3; |
||||
padding: 48rpx 130rpx; |
||||
} |
||||
.inp-item{ |
||||
width: 100%; |
||||
height: 50rpx; |
||||
border: 2rpx solid #1D1D1D; |
||||
border-radius: 8rpx; |
||||
padding: 0rpx 30rpx; |
||||
margin-bottom: 40rpx; |
||||
} |
||||
.inp-item input{ |
||||
width: 60%; |
||||
} |
||||
.label{ |
||||
margin-right: 4rpx; |
||||
} |
||||
.submit-btn{ |
||||
width: 318rpx !important; |
||||
padding: 0 !important; |
||||
} |
@ -0,0 +1,50 @@
|
||||
// index.js
|
||||
// 获取应用实例
|
||||
const app = getApp() |
||||
|
||||
Page({ |
||||
data: { |
||||
motto: 'Hello World', |
||||
userInfo: {}, |
||||
hasUserInfo: false, |
||||
canIUse: wx.canIUse('button.open-type.getUserInfo'), |
||||
canIUseGetUserProfile: false, |
||||
// canIUseOpenData: wx.canIUse('open-data.type.userAvatarUrl') && wx.canIUse('open-data.type.userNickName' // 如需尝试获取用户信息可改为false
|
||||
canIUseOpenData: false |
||||
}, |
||||
// 事件处理函数
|
||||
bindViewTap() { |
||||
wx.navigateTo({ |
||||
url: '../logs/logs' |
||||
}) |
||||
}, |
||||
onLoad() { |
||||
console.log(wx.getUserProfile) |
||||
if (wx.getUserProfile) { |
||||
this.setData({ |
||||
canIUseGetUserProfile: true |
||||
}) |
||||
} |
||||
}, |
||||
getUserProfile(e) { |
||||
// 推荐使用wx.getUserProfile获取用户信息,开发者每次通过该接口获取用户个人信息均需用户确认,开发者妥善保管用户快速填写的头像昵称,避免重复弹窗
|
||||
wx.getUserProfile({ |
||||
desc: '展示用户信息', // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写
|
||||
success: (res) => { |
||||
console.log(res) |
||||
this.setData({ |
||||
userInfo: res.userInfo, |
||||
hasUserInfo: true |
||||
}) |
||||
} |
||||
}) |
||||
}, |
||||
getUserInfo(e) { |
||||
// 不推荐使用getUserInfo获取用户信息,预计自2021年4月13日起,getUserInfo将不再弹出弹窗,并直接返回匿名的用户个人信息
|
||||
console.log(e) |
||||
this.setData({ |
||||
userInfo: e.detail.userInfo, |
||||
hasUserInfo: true |
||||
}) |
||||
} |
||||
}) |
@ -0,0 +1,23 @@
|
||||
<!--index.wxml--> |
||||
<view class="container"> |
||||
<view class="userinfo"> |
||||
<block wx:if="{{canIUseOpenData}}"> |
||||
<view class="userinfo-avatar" bindtap="bindViewTap"> |
||||
<open-data type="userAvatarUrl"></open-data> |
||||
</view> |
||||
<open-data type="userNickName"></open-data> |
||||
</block> |
||||
<block wx:elif="{{!hasUserInfo}}"> |
||||
<button wx:if="{{canIUseGetUserProfile}}" bindtap="getUserProfile"> 获取头像昵称 </button> |
||||
<button wx:elif="{{canIUse}}" open-type="getUserInfo" bindgetuserinfo="getUserInfo"> 获取头像昵称 </button> |
||||
<view wx:else> 请使用1.4.4及以上版本基础库 </view> |
||||
</block> |
||||
<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,19 @@
|
||||
/**index.wxss**/ |
||||
.userinfo { |
||||
display: flex; |
||||
flex-direction: column; |
||||
align-items: center; |
||||
color: #aaa; |
||||
} |
||||
|
||||
.userinfo-avatar { |
||||
overflow: hidden; |
||||
width: 128rpx; |
||||
height: 128rpx; |
||||
margin: 20rpx; |
||||
border-radius: 50%; |
||||
} |
||||
|
||||
.usermotto { |
||||
margin-top: 200px; |
||||
} |
@ -0,0 +1,167 @@
|
||||
// pages/login/index.js
|
||||
const app = getApp() |
||||
Page({ |
||||
/** |
||||
* 页面的初始数据 |
||||
*/ |
||||
data: { |
||||
login: false, |
||||
canIUseGetUserProfilefalse: false, |
||||
}, |
||||
|
||||
/** |
||||
* 生命周期函数--监听页面加载 |
||||
*/ |
||||
onLoad: function (options) { |
||||
let userInfo = wx.getStorageSync('userInfo') |
||||
if (wx.getUserProfile) { |
||||
this.setData({ |
||||
canIUseGetUserProfile: true |
||||
}) |
||||
} |
||||
wx.login({ |
||||
success: res => { |
||||
// 发送 res.code 到后台换取 openId, sessionKey, unionId
|
||||
this.setData({ |
||||
code: res.code |
||||
}) |
||||
} |
||||
}) |
||||
}, |
||||
setUserInfo(){ |
||||
|
||||
}, |
||||
getUserProfile(e) { |
||||
// 推荐使用wx.getUserProfile获取用户信息,开发者每次通过该接口获取用户个人信息均需用户确认,开发者妥善保管用户快速填写的头像昵称,避免重复弹窗
|
||||
wx.getUserProfile({ |
||||
desc: '展示用户信息', // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写
|
||||
success: (response) => { |
||||
wx.showLoading({ |
||||
title: '登陆中...', |
||||
}) |
||||
let data = { |
||||
code: this.data.code, |
||||
iv: response.iv, |
||||
encryptedData:response.encryptedData, |
||||
spread: 0, |
||||
login_type: 0 |
||||
} |
||||
app.http('POST','wxapp/auth',data).then( |
||||
result =>{ |
||||
if(result.data.success){ |
||||
wx.hideLoading() |
||||
wx.setStorageSync('token', 'Bearer '+ result.data.data.token) |
||||
wx.setStorageSync('userInfo', result.data.data.user) |
||||
wx.showToast({ |
||||
title: '授权成功!', |
||||
duration: 1500 |
||||
}) |
||||
if(!result.data.data.user.phone){ |
||||
this.setData({ |
||||
login: true |
||||
}) |
||||
} else{ |
||||
setTimeout(()=>{ |
||||
wx.navigateBack({ |
||||
delta: 1, |
||||
}) |
||||
},1500) |
||||
} |
||||
|
||||
} else{ |
||||
wx.showToast({ |
||||
title: result.data.msg, |
||||
icon : 'none' |
||||
}) |
||||
} |
||||
}
|
||||
) |
||||
} |
||||
}) |
||||
}, |
||||
getPhoneNumber(e) { |
||||
if(e.detail.errMsg == 'getPhoneNumber:ok'){ |
||||
app.http('post','wxapp/binding', |
||||
{encryptedData: e.detail.encryptedData, |
||||
iv: e.detail.iv |
||||
}).then((res)=>{ |
||||
if(res.data.success){ |
||||
app.getInfo(); |
||||
wx.showToast({ |
||||
title: res.data.msg, |
||||
duration: 1500 |
||||
}) |
||||
setTimeout(()=>{ |
||||
wx.navigateBack({ |
||||
delta: 1, |
||||
}) |
||||
},1500) |
||||
} else{ |
||||
wx.showToast({ |
||||
title: res.data.msg, |
||||
icon: 'none', |
||||
duration: 2000 |
||||
}) |
||||
setTimeout(()=>{ |
||||
wx.navigateBack({ |
||||
delta: 1, |
||||
}) |
||||
},2000) |
||||
} |
||||
}) |
||||
} |
||||
}, |
||||
back(){ |
||||
wx.navigateBack({ |
||||
delta: 1, |
||||
}) |
||||
}, |
||||
/** |
||||
* 生命周期函数--监听页面初次渲染完成 |
||||
*/ |
||||
onReady: function () { |
||||
|
||||
}, |
||||
|
||||
/** |
||||
* 生命周期函数--监听页面显示 |
||||
*/ |
||||
onShow: function () { |
||||
|
||||
}, |
||||
|
||||
/** |
||||
* 生命周期函数--监听页面隐藏 |
||||
*/ |
||||
onHide: function () { |
||||
|
||||
}, |
||||
|
||||
/** |
||||
* 生命周期函数--监听页面卸载 |
||||
*/ |
||||
onUnload: function () { |
||||
|
||||
}, |
||||
|
||||
/** |
||||
* 页面相关事件处理函数--监听用户下拉动作 |
||||
*/ |
||||
onPullDownRefresh: function () { |
||||
|
||||
}, |
||||
|
||||
/** |
||||
* 页面上拉触底事件的处理函数 |
||||
*/ |
||||
onReachBottom: function () { |
||||
|
||||
}, |
||||
|
||||
/** |
||||
* 用户点击右上角分享 |
||||
*/ |
||||
onShareAppMessage: function () { |
||||
|
||||
} |
||||
}) |
@ -0,0 +1,4 @@
|
||||
{ |
||||
"usingComponents": {}, |
||||
"navigationBarTitleText": "授权登录" |
||||
} |
@ -0,0 +1,17 @@
|
||||
<!--pages/login/index.wxml--> |
||||
<view class="authorization"> |
||||
<open-data class="user-avatar" type="userAvatarUrl"></open-data> |
||||
<open-data class="user-name" type="userNickName"></open-data> |
||||
<view class="login-notice">为了提供更优质的服务,需要您授权基本信息</view> |
||||
<button class="wx-btn" bindtap='getUserProfile' wx:if="{{!login && canIUseGetUserProfile}}"> |
||||
<text>微信授权登录</text> |
||||
</button> |
||||
<button open-type="getPhoneNumber" class="wx-btn" bindgetphonenumber="getPhoneNumber" wx:if="{{login}}"> |
||||
<text>绑定手机号</text> |
||||
</button> |
||||
<view class="login-notice" wx:if="{{!login && !canIUseGetUserProfile}}">请升级微信版本后再授权</view> |
||||
<button class="wx-btn btn" bindtap="back"> |
||||
<text>暂不授权</text> |
||||
</button> |
||||
|
||||
</view> |
@ -0,0 +1,46 @@
|
||||
/* pages/login/index.wxss */ |
||||
.authorization { |
||||
height: 100vh; |
||||
display: flex; |
||||
flex-direction: column; |
||||
align-items: center; |
||||
box-sizing: border-box; |
||||
padding-top: 190rpx; |
||||
} |
||||
|
||||
.user-avatar { |
||||
width: 192rpx; |
||||
height: 192rpx; |
||||
border-radius: 50%; |
||||
overflow: hidden; |
||||
} |
||||
.user-name{ |
||||
margin: 40rpx 0; |
||||
} |
||||
.login-notice{ |
||||
font-size: 28rpx; |
||||
font-weight: 500; |
||||
line-height: 40rpx; |
||||
color: #000; |
||||
padding-bottom: 90rpx; |
||||
} |
||||
|
||||
.authorization .wx-btn { |
||||
width: 640rpx !important; |
||||
height: 86rpx!important; |
||||
background: linear-gradient(274deg, #EE7F7B 0%, #EB5750 100%); |
||||
border-radius: 60rpx!important; |
||||
text-align: center!important; |
||||
line-height: 86rpx!important; |
||||
margin-bottom: 36rpx!important; |
||||
display: flex!important; |
||||
align-items: center!important; |
||||
justify-content: center!important; |
||||
color: #fff; |
||||
font-weight: 500 !important; |
||||
} |
||||
.authorization .btn{ |
||||
background: #fff !important; |
||||
border: 4rpx solid #EE7F7B; |
||||
color: #EE7F7B !important; |
||||
} |
@ -0,0 +1,74 @@
|
||||
{ |
||||
"description": "项目配置文件", |
||||
"packOptions": { |
||||
"ignore": [ |
||||
{ |
||||
"type": "file", |
||||
"value": ".eslintrc.js" |
||||
} |
||||
] |
||||
}, |
||||
"setting": { |
||||
"bundle": false, |
||||
"userConfirmedBundleSwitch": false, |
||||
"urlCheck": true, |
||||
"scopeDataCheck": false, |
||||
"coverView": true, |
||||
"es6": true, |
||||
"postcss": true, |
||||
"compileHotReLoad": false, |
||||
"lazyloadPlaceholderEnable": false, |
||||
"preloadBackgroundData": false, |
||||
"minified": true, |
||||
"autoAudits": false, |
||||
"newFeature": false, |
||||
"uglifyFileName": false, |
||||
"uploadWithSourceMap": true, |
||||
"useIsolateContext": true, |
||||
"nodeModules": false, |
||||
"enhance": true, |
||||
"useMultiFrameRuntime": true, |
||||
"useApiHook": true, |
||||
"useApiHostProcess": true, |
||||
"showShadowRootInWxmlPanel": true, |
||||
"packNpmManually": false, |
||||
"enableEngineNative": false, |
||||
"packNpmRelationList": [], |
||||
"minifyWXSS": true, |
||||
"showES6CompileOption": false, |
||||
"minifyWXML": true |
||||
}, |
||||
"compileType": "miniprogram", |
||||
"libVersion": "2.19.4", |
||||
"appid": "wxdb1f3c2997df014a", |
||||
"projectname": "%E7%91%9E%E6%A2%A6%E6%80%9D%E5%B0%8F%E7%A8%8B%E5%BA%8F", |
||||
"debugOptions": { |
||||
"hidedInDevtools": [] |
||||
}, |
||||
"scripts": {}, |
||||
"staticServerOptions": { |
||||
"baseURL": "", |
||||
"servePath": "" |
||||
}, |
||||
"isGameTourist": false, |
||||
"condition": { |
||||
"search": { |
||||
"list": [] |
||||
}, |
||||
"conversation": { |
||||
"list": [] |
||||
}, |
||||
"game": { |
||||
"list": [] |
||||
}, |
||||
"plugin": { |
||||
"list": [] |
||||
}, |
||||
"gamePlugin": { |
||||
"list": [] |
||||
}, |
||||
"miniprogram": { |
||||
"list": [] |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,7 @@
|
||||
{ |
||||
"desc": "关于本文件的更多信息,请参考文档 https://developers.weixin.qq.com/miniprogram/dev/framework/sitemap.html", |
||||
"rules": [{ |
||||
"action": "allow", |
||||
"page": "*" |
||||
}] |
||||
} |
@ -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 |
||||
} |