Sfoglia il codice sorgente

Initial Commit

master
Eddie 3 anni fa
commit
09ca9e7d09
50 ha cambiato i file con 1959 aggiunte e 0 eliminazioni
  1. +14
    -0
      .gitignore
  2. +30
    -0
      app.js
  3. +41
    -0
      app.json
  4. +63
    -0
      app.wxss
  5. +24
    -0
      cmponent/loading/loading.js
  6. +4
    -0
      cmponent/loading/loading.json
  7. +6
    -0
      cmponent/loading/loading.wxml
  8. +34
    -0
      cmponent/loading/loading.wxss
  9. BIN
     
  10. BIN
     
  11. BIN
     
  12. BIN
     
  13. BIN
     
  14. BIN
     
  15. BIN
     
  16. BIN
     
  17. BIN
     
  18. BIN
     
  19. BIN
     
  20. BIN
     
  21. BIN
     
  22. +271
    -0
      pages/detailContent/detailContent.js
  23. +4
    -0
      pages/detailContent/detailContent.json
  24. +54
    -0
      pages/detailContent/detailContent.wxml
  25. +159
    -0
      pages/detailContent/detailContent.wxss
  26. +134
    -0
      pages/index/index.js
  27. +4
    -0
      pages/index/index.json
  28. +36
    -0
      pages/index/index.wxml
  29. +89
    -0
      pages/index/index.wxss
  30. +97
    -0
      pages/pageBusiness/pageBusiness.js
  31. +4
    -0
      pages/pageBusiness/pageBusiness.json
  32. +62
    -0
      pages/pageBusiness/pageBusiness.wxml
  33. +103
    -0
      pages/pageBusiness/pageBusiness.wxss
  34. +74
    -0
      pages/pageInquire/pageInquire.js
  35. +4
    -0
      pages/pageInquire/pageInquire.json
  36. +10
    -0
      pages/pageInquire/pageInquire.wxml
  37. +35
    -0
      pages/pageInquire/pageInquire.wxss
  38. +106
    -0
      pages/pageSearch/pageSearch.js
  39. +4
    -0
      pages/pageSearch/pageSearch.json
  40. +35
    -0
      pages/pageSearch/pageSearch.wxml
  41. +60
    -0
      pages/pageSearch/pageSearch.wxss
  42. +108
    -0
      pages/pageSerchDetail/pageSerchDetail.js
  43. +4
    -0
      pages/pageSerchDetail/pageSerchDetail.json
  44. +29
    -0
      pages/pageSerchDetail/pageSerchDetail.wxml
  45. +45
    -0
      pages/pageSerchDetail/pageSerchDetail.wxss
  46. +71
    -0
      project.config.json
  47. +47
    -0
      project.private.config.json
  48. +7
    -0
      sitemap.json
  49. +49
    -0
      utils/pubic.js
  50. +38
    -0
      utils/serve.js

+ 14
- 0
.gitignore Vedi File

@@ -0,0 +1,14 @@
# Windows
[Dd]esktop.ini
Thumbs.db
$RECYCLE.BIN/

# macOS
.DS_Store
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes

# Node.js
node_modules/

+ 30
- 0
app.js Vedi File

@@ -0,0 +1,30 @@
App({

/**
* 当小程序初始化完成时,会触发 onLaunch(全局只触发一次)
*/
onLaunch: function () {
},

/**
* 当小程序启动,或从后台进入前台显示,会触发 onShow
*/
onShow: function (options) {
},

/**
* 当小程序从前台进入后台,会触发 onHide
*/
onHide: function () {
},

/**
* 当小程序发生脚本错误,或者 api 调用失败时,会触发 onError 并带上错误信息
*/
onError: function (msg) {
}
})

+ 41
- 0
app.json Vedi File

@@ -0,0 +1,41 @@
{
"usingComponents": {
"loading": "./cmponent/loading/loading"
},
"pages": [
"pages/index/index",
"pages/pageSearch/pageSearch",
"pages/pageSerchDetail/pageSerchDetail",
"pages/detailContent/detailContent",
"pages/pageInquire/pageInquire",
"pages/pageBusiness/pageBusiness"
],
"window": {
"backgroundTextStyle": "light",
"navigationBarBackgroundColor": "#fff",
"navigationBarTextStyle": "black",
"backgroundColor": "#F9F9F9"
},
"tabBar": {
"color": "#A3A3A3",
"selectedColor": "#F85E4C",
"backgroundColor": "#FFFFFF",
"borderStyle": "white",
"list": [
{
"pagePath": "pages/index/index",
"text": "配色查询 ",
"iconPath": "images/business2.png",
"selectedIconPath": "images/business.png"
},
{
"pagePath": "pages/pageBusiness/pageBusiness",
"text": "商务合作",
"iconPath": "images/index2.png",
"selectedIconPath": "images/index.png"
}
]
},
"style": "v2",
"sitemapLocation": "sitemap.json"
}

+ 63
- 0
app.wxss Vedi File

@@ -0,0 +1,63 @@
page {
background: #F9F9F9;
}


.head-box {
width: 100vw;
background: #FFF;
height: 85rpx;
padding: 0rpx 24rpx 16rpx 24rpx;
box-sizing: border-box;
}

.head-search {
width: 100%;
height: 100%;
background: #F9F9F9;
border-radius: 35rpx;
font-size: 28rpx;
color: #999999;
padding: 15rpx 0;
box-sizing: border-box;
}

.search-icon {
display: inline-block;
height: 36rpx;
width: 36rpx;
vertical-align: middle;
margin: 0 10rpx 0 20prx;
}

.head-input {
display: inline-block;
vertical-align: middle;
}

::-webkit-scrollbar{ width: 0;height: 0;color: transparent; }





.kong-box {
overflow: hidden;
width: 100%;
margin-top: 22.4%;
text-align: center;
}

.kongPng {
width: 48.53%;
margin-bottom: 40rpx;
}

.kongText {
color: #F85E4C;
font-size: 36rpx;
font-weight: 400;
}


+ 24
- 0
cmponent/loading/loading.js Vedi File

@@ -0,0 +1,24 @@
// cmponent/loading/loading.js
Component({
/**
* 组件的属性列表
*/
properties: {

},

/**
* 组件的初始数据
*/
data: {

},

/**
* 组件的方法列表
*/
methods: {
}
})

+ 4
- 0
cmponent/loading/loading.json Vedi File

@@ -0,0 +1,4 @@
{
"component": true,
"usingComponents": {}
}

+ 6
- 0
cmponent/loading/loading.wxml Vedi File

@@ -0,0 +1,6 @@
<view class="masked-box">
<view class="masked-loading">
<image src="/images/juhua.gif"></image>
<text>加载中···</text>
</view>
</view>

+ 34
- 0
cmponent/loading/loading.wxss Vedi File

@@ -0,0 +1,34 @@
/* cmponent/loading/loading.wxss */

.masked-box {
width: 100vw;
height: 100vh;
position: fixed;
top: 0;
left: 0;
bottom: 0;
right: 0;
}

.masked-loading {
width: 220rpx;
height: 220rpx;
position: absolute;
left: 0;
right: 0;
top: 0%;
bottom: 0;
margin: auto auto;
background:rgba(0, 0, 0, 0.2);
border-radius: 10rpx;
text-align: center;
color: rgb(238, 238, 238);
font-size: 28rpx;
}

.masked-loading image {
width: 80rpx;
height: 80rpx;
margin:40rpx auto 10rpx;
display: block;
}

BIN
Vedi File


BIN
Vedi File


BIN
Vedi File


BIN
Vedi File


BIN
Vedi File


BIN
Vedi File


BIN
Vedi File


BIN
Vedi File


BIN
Vedi File


BIN
Vedi File


BIN
Vedi File


BIN
Vedi File


BIN
Vedi File


+ 271
- 0
pages/detailContent/detailContent.js Vedi File

@@ -0,0 +1,271 @@
// pages/detailContent/detailContent.js
const utils = require('../../utils/serve')

Page({

/**
* 页面的初始数据
*/
data: {
searchData: [
],
isItem: 3,
gramNum: null,
paginate: null,
rightStatus: true,
leftStatus: true,
hLoading: true,
},

/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
this.initOn()
},
skipSearch: function () {
wx.navigateTo({
url: '/pages/pageSearch/pageSearch',
})
},


// 右滑翻页
onbolwerRight: function () {
console.log(this.data.searchData[this.data.searchData.length - 1])
this.setData({
hLoading: false
})


if (this.data.rightStatus) {
utils.http({
url: '/manicureApi/Index/finishedProduct',
method: 'GET',
data: {
id: this.data.searchData[this.data.searchData.length - 1].id,
type: 'right'
}
}).then(res => {
if (res.data.lists.length === 0) {
wx.showToast({
title: '已经到底啦~',
duration: 2000,
icon: 'none',
success: () => {
this.setData({
hLoading: true
})
}
})
return
}

if (res.data.lists.length >= 1 && res.data.lists.length === 20) {
this.data.rightStatus = true
} else {
this.data.rightStatus = false
}

this.setData({
searchData: this.data.searchData.concat(res.data.lists),
hLoading: true
})
})
} else {
wx.showToast({
title: '已经到低啦~',
duration: 2000,
icon: 'none',
success:()=>{
this.setData({
hLoading: true
})
}
})
}
},


// 左翻页
onbolwerLeft: function () {

this.setData({
hLoading: false
})

if (this.data.leftStatus) {
utils.http({
url: '/manicureApi/Index/finishedProduct',
method: 'GET',
data: {
id: this.data.searchData[0].id,
type: 'left'
}
}).then(res => {
if (res.data.lists.length >= 1 && res.data.lists.length === 20) {
this.data.leftStatus = true
} else {
this.data.leftStatus = false
}



this.setData({
searchData: res.data.lists.concat(this.data.searchData),
hLoading: true
})
})
} else {
wx.showToast({
title: '已经到顶了~',
duration: 2000,
icon: 'none',
success:()=>{
this.setData({
hLoading: true
})
}
})
}
},


onSwiperItem: function (ev) {
this.setData({
isItem: ev.detail.current
})
},



initOn: function (params) {
const eventChannel = this.getOpenerEventChannel()
eventChannel.on('acceptDataFromOpenerPage', (data, list, paginate, finData) => {

let isItem = 0;
for (let i = 0; i < list.length; i++) {
if (list[i].id === data.id) {
isItem = i
break
}
}

if (isItem <= 1) {
utils.http({
url: '/manicureApi/Index/finishedProduct',
method: 'GET',
data: {
id: list[0].id,
type: 'left'
}
}).then(res => {

if (res.data.lists.length >= 1 && res.data.lists.length === 20) {
this.data.leftStatus = true
} else {
this.data.leftStatus = false
}




this.setData({
searchData: res.data.lists.concat(list),
isItem: isItem + res.data.lists.length
}, () => {
this.data.paginate = paginate
this.data.finData = finData
})
})
} else {
this.setData({
searchData: list,
isItem: isItem
}, () => {
this.data.paginate = paginate
this.data.finData = finData
})
}
})
},

setSearchColor: function (ev) {

this.setData({
isItem: ev.currentTarget.dataset.index
})
},


skipInquire: function () {
utils.http({
url: '/manicureApi/Index/productDetail',
method: 'GET',
data: {
id: this.data.searchData[this.data.isItem].id,
num: this.data.gramNum,
}
}).then(res => {
console.log(res)
let data = JSON.stringify(res.data)
wx.navigateTo({
url: `/pages/pageInquire/pageInquire?data=${data}`,
})
})
},


onInputGram: function (ev) {
this.data.gramNum = ev.detail.value
},

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

},

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

},

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

},

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

},

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

},

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

},

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

}
})

+ 4
- 0
pages/detailContent/detailContent.json Vedi File

@@ -0,0 +1,4 @@
{
"usingComponents": {},
"navigationBarTitleText": "配色"
}

+ 54
- 0
pages/detailContent/detailContent.wxml Vedi File

@@ -0,0 +1,54 @@
<view class="head-box">
<view class="head-search" bindtap="skipSearch">
<i style="padding: 0 10rpx 0 20rpx">
<image class="search-icon" src="/images/search-icon.png"></image>
</i>
<input disabled class="head-input" placeholder="请输入" placeholder-style="color:#999999" />
</view>
</view>

<view class="body-box">
<!-- 美甲效果 -->
<view class="head-title">美甲效果</view>
<view class="swiper-box">
<swiper class="swiper" current="{{ isItem }}" bindchange="onSwiperItem">
<block wx:for="{{searchData}}" wx:key="index">
<swiper-item>
<view class="imageUrl-box">
<view class="itemTitle">色号:{{item.name}}</view>
<image class="imageUrl" src="{{ item.img }}"></image>
</view>
</swiper-item>
</block>
</swiper>
</view>
<view class="head-title">指甲色</view>

</view>

<!-- 指甲色 -->

<scroll-view class="scroll-view" scroll-x scroll-into-view="{{ 'i' + isItem }}" scroll-with-animation bindscrolltolower="onbolwerRight" bindscrolltoupper="onbolwerLeft">
<block wx:for="{{searchData}}" wx:key="index">
<view class="scroll-view-box" bindtap="setSearchColor" data-index="{{index}}" id="{{ 'i' + index}}">
<image src="{{item.img}}"></image>
<view class="{{ isItem === index ? 'itemColor' : 'itemTitle' }}" >{{item.name}}</view>
</view>
</block>
</scroll-view>


<view class="bottom-box">
<view class="input-box">
<input class="inputItem" type="number" placeholder="请输入要查询的克数" bindinput="onInputGram"/>
<view class="text-g">g</view>
</view>
<view class="button-box" bindtap="skipInquire">
<image src="/images/serch.png" class="serch-n" mode="widthFix"></image>
<text>查询</text>
</view>
</view>

<view hidden="{{ hLoading }}" >
<loading ></loading>
</view>

+ 159
- 0
pages/detailContent/detailContent.wxss Vedi File

@@ -0,0 +1,159 @@
/* pages/detailContent/detailContent.wxss */

.body-box {
padding: 0 24rpx;
width: 100%;
box-sizing: border-box;
}

.head-title {
height: 98rpx;
width: 100%;
line-height: 98rpx;
color: #333333;
font-size: 30rpx;
font-weight: 500;
}

.swiper-box {
width: 100%;
height: 539rpx;
border-radius: 16rpx;
overflow: hidden;
}

.swiper {
width: 100%;
height: 100%;
}

.imageUrl {
width: 100%;
height: 100%;
}

.imageUrl-box {
position: relative;
width: 100%;
height: 100%;
}

.swiper .itemTitle {
position: absolute;
z-index: 9;
bottom: 20rpx;
left: 0rpx;
right: 0rpx;
margin: 0 auto;
text-align: center;
color: #F85E4C;
font-size: 24rpx;
}

.scroll-view {
padding-left: 24rpx;
white-space: nowrap;
height: 209rpx;
width: 100%;
box-sizing: border-box;
}

.scroll-view-box {
display: inline-block;
width: 160rpx;
height: 209rpx;
border-radius: 16rpx;
margin-right: 16rpx;
overflow: hidden;
}





.scroll-view-box>image {
width: 160rpx;
height: 160rpx;
vertical-align: middle;
}

.scroll-view-box>.itemTitle {
text-align: center;
color: #333333;
width: 100%;
height: 49rpx;
line-height: 49rpx;
font-size: 24rpx;
background: #F1F1F1;
font-weight: 500;
}

.scroll-view-box>.itemColor {
text-align: center;
color: #FFF;
width: 100%;
height: 49rpx;
line-height: 49rpx;
font-size: 24rpx;
background: #F96956;
font-weight: 500;
}


.bottom-box {
width: 100%;
padding: 0 24rpx;
margin-top: 52rpx;
box-sizing: border-box;
}

.input-box {
width: 100%;
background-color: #FFF;
height: 88rpx;
border-radius: 16rpx;
vertical-align: middle;
position: relative;
text-align: center;
}

.inputItem {
display: inline-block;
height:100%;
color: #333333;
font-size: 30rpx;
font-weight: 500;
}


.text-g {
position: absolute;
color: #999999;
font-size: 30rpx;
line-height: 88rpx;
right: 30rpx;
top: 0;
}


.button-box {
width: 100%;
height: 88rpx;
line-height: 88rpx;
text-align: center;
color: #FFF;
margin-top: 24rpx;
background: #F85E4C;
box-shadow: 0rpx 4rpx 20rpx 0px #FFB9B1;
border-radius: 16rpx;
font-size: 24rpx;
font-weight: 500;
}

.serch-n {
width: 26rpx;
margin-right: 10rpx;
vertical-align: -4rpx;

}

+ 134
- 0
pages/index/index.js Vedi File

@@ -0,0 +1,134 @@
// pages/index/index.js
const utils = require('../../utils/serve')

Page({

/**
* 页面的初始数据
*/
data: {
swiperArr: [],
mainData: [],
paginate: null,
juhuaLoading: false,
},


skipSearch: function(){
wx.navigateTo({
url: '/pages/pageSearch/pageSearch',
})
},

skipSerchDetail: function(ev){
wx.navigateTo({
url: `/pages/pageSerchDetail/pageSerchDetail?param=${JSON.stringify(ev.currentTarget.dataset.param)}`,
})
},

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

init (){
utils.http({
url:'/manicureApi/Index/banner',
method:'GET',
}).then(res=>{
this.setData({
swiperArr: res.data
})
})

utils.http({
url:'/manicureApi/Index/colorList',
method:'GET',
}).then(res=>{
this.setData({
mainData: res.data.lists,
paginate: res.data.paginate
})
})
},

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

},

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

},

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

},

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

},

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

},

/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
if( this.data.mainData.length < this.data.paginate.total) {
wx.showLoading({
title: '加载中···',
mask: true,
})

// 加载更多
utils.http({
url:'/manicureApi/Index/colorList?p=2',
method:'GET',
}).then(res=>{
this.setData({
mainData: this.data.mainData.concat(res.data.lists)
},()=>{
wx.hideLoading()
})
})
} else {
wx.showToast({
title: '已经到底啦~',
duration: 3000,
icon: 'none',
})
}
},

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

}
})

+ 4
- 0
pages/index/index.json Vedi File

@@ -0,0 +1,4 @@
{
"usingComponents": {},
"navigationBarTitleText": "美甲"
}

+ 36
- 0
pages/index/index.wxml Vedi File

@@ -0,0 +1,36 @@
<view class="head-box">
<view class="head-search" bindtap="skipSearch">
<i style="padding: 0 10rpx 0 20rpx">
<image class="search-icon" src="/images/search-icon.png"></image>
</i>
<input disabled class="head-input" placeholder="搜索更多美甲产品" placeholder-style="color:#999999" />
</view>
</view>

<view class="swiper-box">
<swiper class="swiper" indicator-dots indicator-color="#D0D0D0" indicator-active-color="#F85E4C" autoplay circular>
<block wx:for="{{ swiperArr }}" wx:key="index">
<swiper-item>
<image class="imageUrl" src="{{ item.img }}"></image>
</swiper-item>
</block>
</swiper>
</view>

<view class="main-box">
<block wx:for="{{mainData}}" wx:key="index">
<view class="mainItem-box" bindtap="skipSerchDetail" data-param="{{item}}">
<view class="imageUrl-box">
<image class="imageUrl" src="{{item.img}}"></image>
</view>
<view class="item-title">{{item.name}}</view>
</view>
</block>
</view>
<block wx:if="{{ mainData.length < paginate.total }}">
<view class="juhua-box">
<image class="juhua" src="/images/juhua.gif"></image>
<text>加载中···</text>
</view>
</block>

+ 89
- 0
pages/index/index.wxss Vedi File

@@ -0,0 +1,89 @@


.swiper-box {
width: 100%;
padding: 20rpx 24rpx 16rpx;
box-sizing: border-box;
background:#FFF;
}

.swiper {
width: 100%;
height: 265rpx;
border-radius: 10rpx;
overflow: hidden;
}

.imageUrl {
width: 100%;
height: 100%;
}

.wx-swiper-dots.wx-swiper-dots-horizontal{
margin-left: 40%;
/* margin-bottom: 40rpx; */
}


.main-box {
padding: 0 24rpx;
width: 100%;
box-sizing: border-box;
margin-top: 16rpx;
}

.mainItem-box {
width: 223rpx;
height: 297rpx;
border-radius: 16rpx;
overflow: hidden;
display: inline-block;
margin: 0 16rpx 16rpx 0;
vertical-align: middle;
}

.mainItem-box:nth-child(3n){
margin-right: 0;
}



.imageUrl-box {
width: 223rpx;
height: 223rpx;
}


.imageUrl-box > .imageUrl {
width: 100%;
height: 100%
}


.item-title {
height: 74rpx;
color: #333333;
font-weight: 500;
font-size: 30rpx;
line-height: 74rpx;
text-align: center;
background:#F1F1F1;
}

.juhua-box {
text-align: center;
line-height: 30rpx;
font-size: 30rpx;
color: #333333;
padding: 10rpx 0;
}

.juhua {
width: 50rpx;
height: 50rpx;
vertical-align: middle;
margin-left: 6rpx;
}

+ 97
- 0
pages/pageBusiness/pageBusiness.js Vedi File

@@ -0,0 +1,97 @@
// pages/pageBusiness/pageBusiness.js
const utils = require('../../utils/serve')



Page({

/**
* 页面的初始数据
*/
data: {
swiperArr: [],
busData: null,
},

Clipboard: function (event) {
let value = event.currentTarget.dataset.value

wx.setClipboardData({
data: value,
})
},

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

init: function (params) {
utils.http({
url: '/manicureApi/Index/business',
method: 'GET',
}).then(res => {

this.setData({
swiperArr: res.data.list,
busData: {
businessWechat: res.data.businessWechat,
businessPhone: res.data.businessPhone,
businessAddress: res.data.businessAddress,
}
})
})
},

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

},

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

},

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

},

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

},

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

},

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

},

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

}
})

+ 4
- 0
pages/pageBusiness/pageBusiness.json Vedi File

@@ -0,0 +1,4 @@
{
"usingComponents": {},
"navigationBarTitleText": "商务合作"
}

+ 62
- 0
pages/pageBusiness/pageBusiness.wxml Vedi File

@@ -0,0 +1,62 @@
<view class="swiper-box">
<swiper class="swiper" autoplay circular>
<block wx:for="{{ swiperArr }}" wx:key="index">
<swiper-item>
<image class="imageUrl" src="{{ item.img }}"></image>
</swiper-item>
</block>
</swiper>
</view>



<view class="business-box">
<view class="title1">联系方式</view>

<view class="bus-list">
<view class="itemHead">
<image src="/images/dizhi.png" mode="widthFix"></image>
<text>办公地址</text>
</view>
<view class="itemCotnent">
<view class="itemLeft">{{ busData.businessAddress }}</view>
<view class="itemRihgt" bindtap="Clipboard" data-value="{{ busData.businessAddress }}">
<image src="/images/fuzhi.png" mode="widthFix"></image>
<text>复制</text>
</view>
</view>
</view>



<view class="bus-list">
<view class="itemHead">
<image src="/images/phone.png" mode="widthFix"></image>
<text>联系电话</text>
</view>
<view class="itemCotnent">
<view class="itemLeft">{{busData.businessPhone}}</view>
<view class="itemRihgt" bindtap="Clipboard" data-value="{{busData.businessPhone}}">
<image src="/images/fuzhi.png" mode="widthFix"></image>
<text>复制</text>
</view>
</view>
</view>



<view class="bus-list">
<view class="itemHead">
<image src="/images/weixin.png" mode="widthFix"></image>
<text>联系微信</text>
</view>
<view class="itemCotnent">
<view class="itemLeft">{{busData.businessWechat}}</view>
<view class="itemRihgt" bindtap="Clipboard" data-value="{{busData.businessWechat}}">
<image src="/images/fuzhi.png" mode="widthFix"></image>
<text>复制</text>
</view>
</view>
</view>

</view>

+ 103
- 0
pages/pageBusiness/pageBusiness.wxss Vedi File

@@ -0,0 +1,103 @@
/* pages/pageBusiness/pageBusiness.wxss */
page {
padding: 20rpx 24rpx 0;
box-sizing: border-box;
width: 100%;
}

.swiper-box {
width: 100%;
height: 300rpx;
box-sizing: border-box;
background: #FFF;

}

.swiper {
width: 100%;
height: 300rpx;
border-radius: 10rpx;
overflow: hidden;
}


.imageUrl {
width: 100%;
height: 100%;

}

.bus-list {
overflow: hidden;
margin-bottom: 20rpx;
}


.business-box {
width: 100%;
height: 493rpx;
background: #FFF;
margin-top: 24rpx;
border-radius: 16rpx;
overflow: hidden;
box-sizing: border-box;
padding: 0 16rpx;
}


.title1 {
font-weight: 500;
color: #333333;
font-size: 28rpx;
height: 88rpx;
line-height: 88rpx;
}

.itemHead {
font-size: 26rpx;
color: #666666;
font-weight: 500;
line-height: 26rpx;
margin-bottom: 20rpx;
vertical-align: middle;
overflow: hidden;
}

.itemHead>image {
width: 24rpx;
margin-right: 6rpx;
vertical-align: -1rpx;

}


.itemCotnent {
width: 100%;
height: 68rpx;
background: #F9F9F9;
border-radius: 6rpx;
vertical-align: middle;
line-height: 68rpx;
padding: 0 16rpx;
box-sizing: border-box;
}

.itemLeft {
float: left;
height: 100%;
font-size: 24rpx;
color: #333333;
}

.itemRihgt {
float: right;
height: 100%;
font-size: 22rpx;
color: #999999;
}

.itemRihgt > image {
width: 24rpx;
vertical-align: -3rpx;
margin-right: 10rpx;
}

+ 74
- 0
pages/pageInquire/pageInquire.js Vedi File

@@ -0,0 +1,74 @@
// pages/pageInquire/pageInquire.js
Page({

/**
* 页面的初始数据
*/
data: {
searchData: []
},

onItem: function(){
},


/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
console.log(options)
this.setData({
searchData: JSON.parse(options.data)
})
},

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

},

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

},

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

},

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

},

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

},

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

},

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

}
})

+ 4
- 0
pages/pageInquire/pageInquire.json Vedi File

@@ -0,0 +1,4 @@
{
"usingComponents": {},
"navigationBarTitleText": "配色查询"
}

+ 10
- 0
pages/pageInquire/pageInquire.wxml Vedi File

@@ -0,0 +1,10 @@
<block wx:for="{{searchData.infoList}}" wx:key="index">
<view class="view-box" bindtap="onItem">
<image class="imageUrl" src="{{item.img}}"></image>
<view class="item-title">{{item.colorName}}</view>
<view class="floatRight">
<text style="color:#F85E4C">{{item.unit}}</text>
<text style="color:#999999">g</text>
</view>
</view>
</block>

+ 35
- 0
pages/pageInquire/pageInquire.wxss Vedi File

@@ -0,0 +1,35 @@
/* pages/pageInquire/pageInquire.wxss */


.view-box {
width: 93.6%;
height: 158rpx;
background: linear-gradient(93deg, #FFFFFF 0%, #F1F1F1 100%);
border-radius: 16rpx;
margin: 16rpx auto;
overflow: hidden;
line-height: 158rpx;
}

.imageUrl {
width: 158rpx;
height: 158rpx;
vertical-align: middle;
display: inline-block;
}


.item-title {
height: 100%;
display: inline-block;
margin-left: 26rpx;
font-size: 30rpx;
font-weight: 500;
color: #333333;
}

.floatRight {
float: right;
height: 100%;
margin-right: 24rpx;
}

+ 106
- 0
pages/pageSearch/pageSearch.js Vedi File

@@ -0,0 +1,106 @@
// pages/pageSearch/pageSearch.js
const pubic = require('../../utils/pubic')
const utils = require('../../utils/serve')

Page({

/**
* 页面的初始数据
*/
data: {
isKong: false,
searchData: []
},
skipDetail: function (ev) {
let param = ev.currentTarget.dataset.param
wx.redirectTo({
url: '/pages/detailContent/detailContent',
success: res=> {
// 通过eventChannel向被打开页面传送数据
res.eventChannel.emit('acceptDataFromOpenerPage', param , this.data.searchData , this.data.paginate , this.data.finData)
}
})
},

onInput:pubic.Debounce(function(ev){
console.log(ev)
wx.showLoading({
title: '搜索中···',
mask: true,
})



utils.http({
url:'/manicureApi/Index/finishedProduct',
method:'GET',
data:{
name: ev.detail.value,
p: 1
}
}).then(res=>{
this.setData({
searchData: res.data.lists,
value : ev.detail.value
})
})
}),


/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
console.log(pubic)
},

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

},

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

},

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

},

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

},

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

},

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

},

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

}
})

+ 4
- 0
pages/pageSearch/pageSearch.json Vedi File

@@ -0,0 +1,4 @@
{
"usingComponents": {},
"navigationBarTitleText": "搜索"
}

+ 35
- 0
pages/pageSearch/pageSearch.wxml Vedi File

@@ -0,0 +1,35 @@
<view class="head-box">
<view class="head-search">
<i style="padding: 0 10rpx 0 20rpx">
<image class="search-icon" src="/images/search-icon.png"></image>
</i>
<input class="head-input" placeholder="搜索更多美甲产品" placeholder-style="color:#999999" bindinput="onInput" focus="{{ true }}"/>
</view>
</view>



<block wx:if="{{ searchData.length >= 1 }}">
<view class="serchData-body">
<view class="serchData-box">
<block wx:for="{{ searchData }}" wx:key="index">
<view class="searchData-item" bindtap="skipDetail" data-param="{{ item }}">
<view class="imageUrl-box">
<image src="{{item.img}}"></image>
</view>
<view class="title-box">{{ item.name }} </view>
<view class="you-box">
<image class="you-item" src="/images/you.png" mode="widthFix"></image>
</view>
</view>
</block>
</view>
</view>
</block>

<block wx:if="{{searchData.length === 0 && value.length >= 1}}">
<view class="kong-box">
<image class="kongPng" src="/images/kong.png" mode="widthFix"></image>
<view class="kongText">暂无该色号!</view>
</view>
</block>

+ 60
- 0
pages/pageSearch/pageSearch.wxss Vedi File

@@ -0,0 +1,60 @@



.serchData-body {
width: 100%;
box-sizing: border-box;
padding: 15rpx 24rpx 0;
}

.serchData-box {
padding: 0 20rpx 24rpx;
width: 100%;
background: #FFF;
box-sizing: border-box;
border-radius: 16rpx;
}


.searchData-item {
height: 109rpx;
line-height: 109rpx;
overflow: hidden;
border-bottom: 1rpx solid #f0efef;
}

.imageUrl-box {
display: inline-block;
width: 60rpx;
height: 60rpx;
line-height: 60rpx;
border-radius: 50%;
overflow: hidden;
box-sizing: border-box;
border: 1rpx solid #F1F1F1;
vertical-align: middle;
}

.imageUrl-box > image {
width: 60rpx;
height: 60rpx;
}

.title-box {
display: inline-block;
vertical-align: middle;
margin-left: 10rpx;
color: #333333;
font-weight: 400;
font-size: 28rpx;
}

.you-box {
float: right;
height: 100%;
}

.you-item {
width: 26rpx;
}

+ 108
- 0
pages/pageSerchDetail/pageSerchDetail.js Vedi File

@@ -0,0 +1,108 @@
// pages/pageSerchDetail/pageSerchDetail.js

const utils = require('../../utils/serve')


Page({

/**
* 页面的初始数据
*/
data: {
searchData: [],
paginate: null,
},
skipSearch: function(){
wx.navigateTo({
url: '/pages/pageSearch/pageSearch',
})
},

/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
this.init(JSON.parse(options.param))
wx.setNavigationBarTitle({
title: JSON.parse(options.param).name
})
},

init: function (params) {
utils.http({
url: '/manicureApi/Index/finishedProduct',
method: 'GET',
data: {
color_id: params.id,
}
}).then(res => {
this.setData({
searchData: res.data.lists,
},()=>{
this.data.paginate = res.data.paginate
this.data.finData = params
})
})
},


skipDetail: function (ev) {

let param = ev.currentTarget.dataset.param
wx.navigateTo({
url: '/pages/detailContent/detailContent',
success: res=> {
// 通过eventChannel向被打开页面传送数据
res.eventChannel.emit('acceptDataFromOpenerPage', param , this.data.searchData , this.data.paginate , this.data.finData)
}
})
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {

},

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

},

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

},

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

},

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

},

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

},

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

}
})

+ 4
- 0
pages/pageSerchDetail/pageSerchDetail.json Vedi File

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

+ 29
- 0
pages/pageSerchDetail/pageSerchDetail.wxml Vedi File

@@ -0,0 +1,29 @@
<view class="head-box">
<view class="head-search" bindtap="skipSearch">
<i style="padding: 0 10rpx 0 20rpx">
<image class="search-icon" src="/images/search-icon.png"></image>
</i>
<input disabled class="head-input" placeholder="搜索更多美甲产品" placeholder-style="color:#999999" />
</view>
</view>


<view class="detail-box">
<block wx:for="{{ searchData }}" wx:key="index">
<view class="detail-item" bindtap="skipDetail" data-param="{{ item }}">
<view class="itemHead">
<image lazy-load src="{{ item.img }}"></image>
</view>
<view class="item-title">{{ item.name }}</view>
</view>
</block>


<block wx:if="{{ searchData.length === 0 }}">
<view class="kong-box">
<image class="kongPng" src="/images/kong.png" mode="widthFix"></image>
<view class="kongText">暂无该色号!</view>
</view>
</block>

</view>

+ 45
- 0
pages/pageSerchDetail/pageSerchDetail.wxss Vedi File

@@ -0,0 +1,45 @@

.detail-box {
padding: 0rpx 24rpx;
margin-top: 24rpx;
box-sizing: border-box;
width: 100%;
}


.detail-item {
width: 160rpx;
height: 204rpx;
display: inline-block;
margin: 0 20rpx 24rpx 0;
border-radius: 9rpx;
overflow: hidden;
vertical-align: middle;
}

.detail-item:nth-child(4n) {
margin-right: 0;
}


.itemHead {
width: 100%;
height: 160rpx;
}

.itemHead > image {
width: 100%;
height: 100%;
display: inline-block;
vertical-align: middle;
}


.item-title {
text-align: center;
background: #F1F1F1;
color: #333333;
font-size: 20rpx;
line-height: 45rpx;
height: 45rpx;
}

+ 71
- 0
project.config.json Vedi File

@@ -0,0 +1,71 @@
{
"description": "项目配置文件",
"packOptions": {
"ignore": []
},
"setting": {
"urlCheck": false,
"es6": true,
"enhance": false,
"postcss": true,
"preloadBackgroundData": false,
"minified": true,
"newFeature": false,
"coverView": true,
"nodeModules": false,
"autoAudits": false,
"showShadowRootInWxmlPanel": true,
"scopeDataCheck": false,
"uglifyFileName": false,
"checkInvalidKey": true,
"checkSiteMap": true,
"uploadWithSourceMap": true,
"compileHotReLoad": false,
"useMultiFrameRuntime": true,
"useApiHook": true,
"useApiHostProcess": false,
"babelSetting": {
"ignore": [],
"disablePlugins": [],
"outputPath": ""
},
"enableEngineNative": false,
"bundle": false,
"useIsolateContext": true,
"useCompilerModule": true,
"userConfirmedUseCompilerModuleSwitch": false,
"userConfirmedBundleSwitch": false,
"packNpmManually": false,
"packNpmRelationList": [],
"minifyWXSS": true
},
"compileType": "miniprogram",
"libVersion": "2.15.0",
"appid": "wx518e1f26bfa0e1d3",
"projectname": "manicureLet",
"debugOptions": {
"hidedInDevtools": []
},
"scripts": {},
"isGameTourist": false,
"condition": {
"search": {
"list": []
},
"conversation": {
"list": []
},
"game": {
"list": []
},
"plugin": {
"list": []
},
"gamePlugin": {
"list": []
},
"miniprogram": {
"list": []
}
}
}

+ 47
- 0
project.private.config.json Vedi File

@@ -0,0 +1,47 @@
{
"setting": {},
"condition": {
"plugin": {
"list": []
},
"game": {
"list": []
},
"gamePlugin": {
"list": []
},
"miniprogram": {
"list": [
{
"name": "搜索",
"pathName": "pages/pageSearch/pageSearch",
"query": "",
"scene": null
},
{
"name": "搜索详情",
"pathName": "pages/pageSerchDetail/pageSerchDetail",
"query": "",
"scene": null
},
{
"name": "配色",
"pathName": "pages/detailContent/detailContent",
"query": "",
"scene": null
},
{
"name": "配色查询",
"pathName": "pages/pageInquire/pageInquire",
"query": "",
"scene": null
},
{
"name": "商务合作",
"pathName": "pages/pageBusiness/pageBusiness",
"scene": null
}
]
}
}
}

+ 7
- 0
sitemap.json Vedi File

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

+ 49
- 0
utils/pubic.js Vedi File

@@ -0,0 +1,49 @@
/**
* 函数防抖
* @param fn
* @param delay
* @returns {Function}
* @constructor
*/
export const Debounce = (fn, t) => {
let delay = t || 500;
let timer;
return function() {
let args = arguments;
if (timer) {
clearTimeout(timer);
}
timer = setTimeout(() => {
timer = null;
fn.apply(this, args);
}, delay);
}
};


/**
1. 函数节流
2. @param fn
3. @param interval
4. @returns {Function}
5. @constructor
*/
export const Throttle = (fn, t) => {
let last;
let timer;
let interval = t || 500;
return function() {
let args = arguments;
let now = +new Date();
if (last && now - last < interval) {
clearTimeout(timer);
timer = setTimeout(() => {
last = now;
fn.apply(this, args);
}, interval);
} else {
last = now;
fn.apply(this, args);
}
}
}

+ 38
- 0
utils/serve.js Vedi File

@@ -0,0 +1,38 @@

const HTTPS = 'http://manicure.cn'

export const http = function (param) {
let { url, data, method } = param
return new Promise((resolve, rejected) => {
wx.request({
url: `${HTTPS + url}`,
data: data,
method: method,
success: (result) => {
if (result.statusCode === 200) {
resolve(result.data)
return
}
if(result.statusCode === 500) {
wx.showToast({
title: `服务器错误:${result.statusCode}`,
duration: 2000,
icon: 'none',
})
}

},
fail: (res) => { },
complete: (res) => {
wx.hideLoading({
success: (res) => {},
})
},
})
})
}





Caricamento…
Annulla
Salva