发现及检测报告产品推荐
This commit is contained in:
@@ -30,6 +30,9 @@ import site from "./interfaces/site"
|
||||
// 个人中心
|
||||
import user from "./interfaces/user"
|
||||
|
||||
// 发现
|
||||
import found from "./interfaces/found"
|
||||
|
||||
export default {
|
||||
auth,
|
||||
file,
|
||||
@@ -39,5 +42,6 @@ export default {
|
||||
order,
|
||||
recruit,
|
||||
site,
|
||||
user
|
||||
user,
|
||||
found
|
||||
}
|
||||
23
api/interfaces/found.js
Normal file
23
api/interfaces/found.js
Normal file
@@ -0,0 +1,23 @@
|
||||
/*
|
||||
* zdx
|
||||
* 发现接口
|
||||
*/
|
||||
|
||||
import { req } from "../request"
|
||||
|
||||
// 产品首页
|
||||
const foundIndex = (data) => req({
|
||||
url: "discover/lists",
|
||||
data:data
|
||||
})
|
||||
|
||||
// 收藏 subscribe favorite 点赞
|
||||
const foundSubscribeFavorite = (discover,type) => req({
|
||||
url: `discover/${discover}/${type}`
|
||||
})
|
||||
|
||||
|
||||
export default ({
|
||||
foundIndex,
|
||||
foundSubscribeFavorite
|
||||
})
|
||||
@@ -12,8 +12,8 @@ import {updToken} from './updateToken'
|
||||
// wx6bd4fcc040bfa025 水感应 正式appid
|
||||
// wx9ae0c63d0c58caeb 测试appid 三猿
|
||||
// wx3056ec23196eaf02 水感应 测试
|
||||
const api = "https://api.shui.shuiganying.com/api/" // 正式环境
|
||||
// const api = "https://shuitest.shuiganying.com/api/" // 测试环境
|
||||
// const api = "https://api.shui.shuiganying.com/api/" // 正式环境
|
||||
const api = "https://shuitest.shuiganying.com/api/" // 测试环境
|
||||
const header = {
|
||||
"Accept" : "application/json"
|
||||
}
|
||||
|
||||
1
app.js
1
app.js
@@ -17,7 +17,6 @@ App({
|
||||
this.globalData.isOfficial = true
|
||||
} else {
|
||||
this.globalData.isOfficial = false
|
||||
|
||||
}
|
||||
|
||||
// 检查用户登录状态
|
||||
|
||||
8
app.json
8
app.json
@@ -47,7 +47,9 @@
|
||||
"pages/order/refund/refund",
|
||||
"pages/order/refundForm/refundForm",
|
||||
"pages/order/refundInfo/refundInfo",
|
||||
"pages/order/refundWrite/refundWrite"
|
||||
"pages/order/refundWrite/refundWrite",
|
||||
"pages/beautify/coach",
|
||||
"pages/found/index"
|
||||
],
|
||||
"window": {
|
||||
"backgroundTextStyle": "light",
|
||||
@@ -70,8 +72,8 @@
|
||||
"selectedIconPath": "/static/tabBarIcon/tabBar_selected_01.png"
|
||||
},
|
||||
{
|
||||
"pagePath": "pages/recruit/index",
|
||||
"text": "体验官",
|
||||
"pagePath": "pages/found/index",
|
||||
"text": "发现",
|
||||
"iconPath": "/static/tabBarIcon/tabBar_04.png",
|
||||
"selectedIconPath": "/static/tabBarIcon/tabBar_selected_04.png"
|
||||
},
|
||||
|
||||
BIN
pages/.DS_Store
vendored
Normal file
BIN
pages/.DS_Store
vendored
Normal file
Binary file not shown.
BIN
pages/beautify/.DS_Store
vendored
Normal file
BIN
pages/beautify/.DS_Store
vendored
Normal file
Binary file not shown.
357
pages/beautify/coach.js
Normal file
357
pages/beautify/coach.js
Normal file
@@ -0,0 +1,357 @@
|
||||
// pages/beautify/coach.wxss.js
|
||||
Page({
|
||||
data: {
|
||||
videos: [{
|
||||
id: 1,
|
||||
cover: 'https://cdn.shuiganying.com/images/2023/11/14/236a3949c2c0794de850617d4204a159.png',
|
||||
url: 'https://sns-video-bd.xhscdn.com/stream/110/258/01e524b445288836010370038b176a34a1_258.mp4',
|
||||
steps: [{
|
||||
title: '第一步:在右脸颊处缓慢向上打圈,反复两次',
|
||||
startTime: 0, // 开始时间
|
||||
startCountDown: 3, // 开始倒计时(暂时先可不给)
|
||||
endTime: 7, // 自定义第一段截止到
|
||||
},
|
||||
{
|
||||
title: '第二步:在右脸颊处缓慢向上打圈,反复3次',
|
||||
startTime: 8,
|
||||
startCountDown: 11, // 开始倒计时
|
||||
endTime: 15, // 自定义 20s
|
||||
},
|
||||
{
|
||||
title: '第三步:在右脸颊处缓慢向上打圈,反复4次',
|
||||
startTime: 16,
|
||||
startCountDown: 18, // 开始倒计时
|
||||
endTime: 20, // 自定义 20s
|
||||
}
|
||||
],
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
cover: 'https://cdn.shuiganying.com/images/2023/11/14/0835381c22b00f574afb34d319cce442.png',
|
||||
url: 'https://sns-video-bd.xhscdn.com/stream/110/258/01e524b445288836010370038b176a34a1_258.mp4',
|
||||
steps: [{
|
||||
title: '第一步:在右脸颊处缓慢向上打圈,反复两次',
|
||||
startTime: 0,
|
||||
startCountDown: 3, // 开始倒计时
|
||||
endTime: 7, // 自定义第一段截止到
|
||||
},
|
||||
{
|
||||
title: '第二步:在右脸颊处缓慢向上打圈,反复3次',
|
||||
startTime: 8,
|
||||
startCountDown: 11, // 开始倒计时
|
||||
endTime: 15, // 自定义 20s
|
||||
},
|
||||
{
|
||||
title: '第三步:在右脸颊处缓慢向上打圈,反复4次',
|
||||
startTime: 16,
|
||||
startCountDown: 18, // 开始倒计时
|
||||
endTime: 20, // 自定义 20s
|
||||
}
|
||||
],
|
||||
},
|
||||
{
|
||||
id: 3,
|
||||
cover: 'https://cdn.shuiganying.com/images/2023/11/14/0835381c22b00f574afb34d319cce442.png',
|
||||
url: 'https://sns-video-bd.xhscdn.com/stream/110/258/01e524b445288836010370038b176a34a1_258.mp4',
|
||||
steps: [{
|
||||
title: '第一步:在右脸颊处缓慢向上打圈,反复两次',
|
||||
startTime: 0,
|
||||
startCountDown: 3, // 开始倒计时
|
||||
endTime: 7, // 自定义第一段截止到
|
||||
},
|
||||
{
|
||||
title: '第二步:在右脸颊处缓慢向上打圈,反复3次',
|
||||
startTime: 8,
|
||||
startCountDown: 11, // 开始倒计时
|
||||
endTime: 15, // 自定义 20s
|
||||
},
|
||||
{
|
||||
title: '第三步:在右脸颊处缓慢向上打圈,反复4次',
|
||||
startTime: 16,
|
||||
startCountDown: 18, // 开始倒计时
|
||||
endTime: 20, // 自定义 20s
|
||||
}
|
||||
],
|
||||
},
|
||||
{
|
||||
id: 4,
|
||||
cover: 'https://cdn.shuiganying.com/images/2023/11/14/236a3949c2c0794de850617d4204a159.png',
|
||||
url: 'https://sns-video-bd.xhscdn.com/stream/110/258/01e524b445288836010370038b176a34a1_258.mp4',
|
||||
steps: [{
|
||||
title: '第一步:在右脸颊处缓慢向上打圈,反复两次',
|
||||
startTime: 0,
|
||||
startCountDown: 3, // 开始倒计时
|
||||
endTime: 7, // 自定义第一段截止到
|
||||
},
|
||||
{
|
||||
title: '第二步:在右脸颊处缓慢向上打圈,反复3次',
|
||||
startTime: 8,
|
||||
startCountDown: 11, // 开始倒计时
|
||||
endTime: 15, // 自定义 20s
|
||||
},
|
||||
{
|
||||
title: '第三步:在右脸颊处缓慢向上打圈,反复4次',
|
||||
startTime: 16,
|
||||
startCountDown: 18, // 开始倒计时
|
||||
endTime: 20, // 自定义 20s
|
||||
}
|
||||
],
|
||||
}
|
||||
],
|
||||
selectVideoItem: {
|
||||
id: 0, // 默认id是否为0
|
||||
playedState: false, // 当前是否是正在播放播放状态
|
||||
muted: false, // 静音状态
|
||||
stepsCount: 0, // 默认分几个步骤
|
||||
currentSteps: 0, // 当前默认是第几步
|
||||
currentTime: 0, // 当前总时长
|
||||
remainingTime: 0, // 播放时间
|
||||
},
|
||||
videoContext: null,
|
||||
seeAllVideo: true,
|
||||
openCamera:false, // 是否打开摄像头
|
||||
|
||||
// 是否显示摄像头
|
||||
isCamera: false
|
||||
},
|
||||
|
||||
onShow(){
|
||||
wx.getSetting({
|
||||
success:(res)=> {
|
||||
let authSetting = res.authSetting
|
||||
this.setData({
|
||||
isCamera: authSetting['scope.camera'] == true?true:false,
|
||||
openCamera:authSetting['scope.camera'] == true?true:false
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
onReady(res) {
|
||||
this.videoContext = wx.createVideoContext('myVideo')
|
||||
},
|
||||
// 视频更新事件
|
||||
videoTimeupdated(e) {
|
||||
let selectVideoItem = this.data.selectVideoItem
|
||||
let currentTimeEnd = selectVideoItem.steps[selectVideoItem.currentSteps].endTime
|
||||
let {
|
||||
currentTime
|
||||
} = e.detail
|
||||
if (currentTime > currentTimeEnd && selectVideoItem.currentSteps < selectVideoItem.stepsCount) {
|
||||
selectVideoItem.currentSteps++
|
||||
}
|
||||
// 第一次初始化
|
||||
// let startCountDown = selectVideoItem.steps[selectVideoItem.currentSteps].startCountDown
|
||||
// if(!selectVideoItem.remainingTime &&selectVideoItem.currentSteps!=this.data.selectVideoItem.currentSteps){
|
||||
// let remainingTime=parseInt(currentTimeEnd - startCountDown) >=10 ? parseInt(currentTimeEnd -startCountDown):'0' + parseInt(currentTimeEnd -startCountDown)
|
||||
// selectVideoItem.remainingTime = remainingTime
|
||||
// }
|
||||
// 递减
|
||||
// if (currentTime >= startCountDown) {
|
||||
let remainingTime = parseInt(currentTimeEnd - currentTime) >= 10 ? parseInt(currentTimeEnd - currentTime) : '0' + parseInt(currentTimeEnd - currentTime)
|
||||
selectVideoItem.remainingTime = remainingTime
|
||||
// }
|
||||
this.setData({
|
||||
selectVideoItem: selectVideoItem
|
||||
})
|
||||
console.log('视频更新事件', selectVideoItem.currentSteps)
|
||||
},
|
||||
// 视频播放结束事件
|
||||
videoEnded() {
|
||||
console.log('视频播放结束事件')
|
||||
// 完成弹窗 重置基础数据
|
||||
|
||||
this.setData({
|
||||
selectVideoItem: {
|
||||
id: 0
|
||||
},
|
||||
seeAllVideo: true,
|
||||
})
|
||||
},
|
||||
// 点击全部视频
|
||||
allVideoTab() {
|
||||
this.setData({
|
||||
seeAllVideo: !this.data.seeAllVideo
|
||||
})
|
||||
},
|
||||
// 点击暂停视频
|
||||
videoPauseTab() {
|
||||
console.log('暂停')
|
||||
let selectVideoItem = this.data.selectVideoItem
|
||||
selectVideoItem.playedState = false
|
||||
this.setData({
|
||||
selectVideoItem: selectVideoItem
|
||||
})
|
||||
this.videoContext.pause()
|
||||
},
|
||||
// 点击播放视频
|
||||
videoPlayTab() {
|
||||
console.log('播放')
|
||||
let selectVideoItem = this.data.selectVideoItem
|
||||
selectVideoItem.playedState = true
|
||||
selectVideoItem.muted = false
|
||||
this.setData({
|
||||
selectVideoItem: selectVideoItem
|
||||
})
|
||||
this.videoContext.play()
|
||||
},
|
||||
// 轮播图切换
|
||||
swiperChange(e) {
|
||||
console.log(e.detail)
|
||||
},
|
||||
// 选择视频教程-点击
|
||||
selectVideo(e) {
|
||||
let item = e.currentTarget.dataset.item
|
||||
console.log(this.data.selectVideoItem.id, item.id)
|
||||
if (this.data.selectVideoItem.id == item.id) return
|
||||
|
||||
|
||||
item.playedState = false
|
||||
item.stepsCount = item.steps.length
|
||||
item.currentSteps = 0
|
||||
this.setData({
|
||||
selectVideoItem: item,
|
||||
seeAllVideo: false,
|
||||
})
|
||||
// 处理弹窗,且最后在处理视频播放
|
||||
setTimeout(() => {
|
||||
this.doPlay(0)
|
||||
}, 300);
|
||||
},
|
||||
// 播放视频
|
||||
doPlay(position) {
|
||||
console.log(position)
|
||||
this.videoContext.seek(position)
|
||||
let selectVideoItem = this.data.selectVideoItem
|
||||
selectVideoItem.playedState = true
|
||||
this.setData({
|
||||
selectVideoItem: selectVideoItem
|
||||
})
|
||||
// 播放视频
|
||||
this.videoContext.play()
|
||||
},
|
||||
// 静音非经营处理
|
||||
mutedTab(e) {
|
||||
console.log(e)
|
||||
let type = e.target.dataset.type
|
||||
console.log(type)
|
||||
let selectVideoItem = this.data.selectVideoItem
|
||||
if (type == 'open') {
|
||||
selectVideoItem.muted = false
|
||||
|
||||
} else {
|
||||
selectVideoItem.muted = true
|
||||
}
|
||||
this.setData({
|
||||
selectVideoItem: selectVideoItem
|
||||
})
|
||||
},
|
||||
// 上一段,下一段切换
|
||||
preTab(e) {
|
||||
let type = e.target.dataset.type
|
||||
let selectVideoItem = this.data.selectVideoItem
|
||||
if (type == 'prev') {
|
||||
if (selectVideoItem.currentSteps == 0) {
|
||||
wx.showToast({
|
||||
title: '已经是第一步',
|
||||
icon: 'none',
|
||||
mask: true
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
if (selectVideoItem.currentSteps > 0) {
|
||||
selectVideoItem.currentSteps--
|
||||
let startTime = selectVideoItem.steps[selectVideoItem.currentSteps].startTime
|
||||
this.videoContext.pause()
|
||||
this.videoContext.seek(startTime)
|
||||
this.videoContext.play()
|
||||
selectVideoItem.playedState = true
|
||||
this.setData({
|
||||
selectVideoItem:selectVideoItem
|
||||
})
|
||||
}
|
||||
|
||||
} else {
|
||||
if (selectVideoItem.currentSteps == 3) {
|
||||
wx.showToast({
|
||||
title: '已经是最后一步',
|
||||
icon: 'none',
|
||||
mask: true
|
||||
})
|
||||
return
|
||||
}
|
||||
if (selectVideoItem.currentSteps < 3) {
|
||||
selectVideoItem.currentSteps++
|
||||
let startTime = selectVideoItem.steps[selectVideoItem.currentSteps].startTime
|
||||
this.videoContext.pause()
|
||||
this.videoContext.seek(startTime)
|
||||
this.videoContext.play()
|
||||
selectVideoItem.playedState = true
|
||||
this.setData({
|
||||
selectVideoItem:selectVideoItem
|
||||
})
|
||||
}
|
||||
}
|
||||
},
|
||||
openMirror(){
|
||||
if(this.data.openCamera){
|
||||
this.setData({
|
||||
openCamera:!this.data.openCamera
|
||||
})
|
||||
return
|
||||
}
|
||||
console.log(11)
|
||||
wx.getSetting({
|
||||
success:(res)=> {
|
||||
let authSetting = res.authSetting
|
||||
console.log(res)
|
||||
if(!authSetting['scope.camera'] || authSetting['scope.camera'] == undefined){
|
||||
wx.showModal({
|
||||
title: '温馨提示',
|
||||
content: '若不授权使用摄像头,将无法使用镜子功能!',
|
||||
cancelText: '不授权',
|
||||
cancelColor: '#999',
|
||||
confirmText: '授权',
|
||||
confirmColor: '#1ba9ba',
|
||||
success:(res)=> {
|
||||
if (res.confirm) {//允许打开授权页面
|
||||
//调起客户端小程序设置界面,返回用户设置的操作结果
|
||||
if(authSetting['scope.camera'] == undefined){
|
||||
wx.authorize({
|
||||
scope: 'scope.camera',
|
||||
success: () => {
|
||||
// 用户已经同意小程序使用摄像头
|
||||
this.setData({
|
||||
openCamera:true
|
||||
})
|
||||
},
|
||||
})
|
||||
}else{
|
||||
wx.openSetting({
|
||||
success:(res)=> {
|
||||
res.authSetting = {
|
||||
"scope.camera": true
|
||||
}
|
||||
this.setData({
|
||||
openCamera:true
|
||||
})
|
||||
},
|
||||
})
|
||||
}
|
||||
} else if (res.cancel) {//拒绝打开授权页面
|
||||
this.setData({
|
||||
openCamera:false
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
}else{
|
||||
this.setData({
|
||||
openCamera:!this.data.openCamera
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
4
pages/beautify/coach.json
Normal file
4
pages/beautify/coach.json
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"usingComponents": {},
|
||||
"navigationBarTitleText": "美肤教程"
|
||||
}
|
||||
49
pages/beautify/coach.wxml
Normal file
49
pages/beautify/coach.wxml
Normal file
@@ -0,0 +1,49 @@
|
||||
<view class="coach">
|
||||
<image class="coach-top-covers" src="https://cdn.shuiganying.com/images/2023/11/14/2479e438889445fe4a96199d5a839d20.png" mode="widthFix"/>
|
||||
<view class="coach-mirror" wx:if="{{!openCamera}}" catch:tap="openMirror">
|
||||
<image src="https://cdn.shuiganying.com/images/2023/11/14/645ff37d945dc409761df73bb2ce73cd.png" mode="widthFix"/> 镜子
|
||||
</view>
|
||||
<view class="coach-camera" wx:if="{{openCamera}}">
|
||||
<view class="coach-close" catch:tap="openMirror">X</view>
|
||||
<camera device-position="front" wx:if="{{isCamera}}" flash="off"></camera>
|
||||
</view>
|
||||
<view class="coach-avatar">
|
||||
<image src="https://cdn.shuiganying.com/images/2023/11/14/0835381c22b00f574afb34d319cce442.png" mode="aspectFill"/> 张三一
|
||||
</view>
|
||||
<view class="coach-top">
|
||||
<view class="coach-top-video">
|
||||
<image class="coach-top-cover" wx:if="{{!selectVideoItem.url}}" src="https://cdn.shuiganying.com/images/2023/11/14/aee3a9b218b03f848e90a2093d2ec815.png" mode="widthFix"/>
|
||||
<video id="myVideo" controls="{{false}}" muted='{{selectVideoItem.muted}}' bindtimeupdate="videoTimeupdated" bindended='videoEnded' show-center-play-btn="{{false}}" class="coach-top-cover" wx:if="{{selectVideoItem.url}}" src="{{selectVideoItem.url}}"></video>
|
||||
<view class="coach-top-text" wx:if="{{selectVideoItem.id==0}}">请在下方选择视频</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="coach-bottom">
|
||||
<view class="steps-cont" wx:if="{{selectVideoItem.id != 0}}">
|
||||
<view class="steps-time">00:{{selectVideoItem.remainingTime}}</view>
|
||||
<view class="steps-title">{{selectVideoItem.steps[selectVideoItem.currentSteps].title}}</view>
|
||||
</view>
|
||||
|
||||
<block wx:if="{{seeAllVideo}}">
|
||||
<swiper class="coach-swiper" display-multiple-items='3' bindchange='swiperChange'>
|
||||
<swiper-item class="coach-swiper-item" wx:for="{{videos}}" wx:key="item" catch:tap="selectVideo" data-item="{{item}}">
|
||||
<image class="coach-swiper-item-cover" src="{{item.cover}}" mode="aspectFill"/>
|
||||
<view class="coach-swiper-item-cover-active" wx:if="{{item.id == selectVideoItem.id}}"></view>
|
||||
</swiper-item>
|
||||
</swiper>
|
||||
</block>
|
||||
|
||||
<view class="video-control" wx:if="{{selectVideoItem.id!=0}}">
|
||||
<image catch:tap="mutedTab" data-type='close' wx:if="{{!selectVideoItem.muted}}" class="source" src="https://cdn.shuiganying.com/images/2023/11/13/267603acf95fa978764417d7598aa8b0.png" mode="widthFix"/>
|
||||
<image catch:tap="mutedTab" data-type='open' wx:if="{{selectVideoItem.muted}}" src="https://cdn.shuiganying.com/images/2023/11/13/37fecae5af2faa01f5baba9c1c01affe.png" mode="widthFix"/>
|
||||
<view class="source-right">
|
||||
<image catch:tap="preTab" data-type='prev' class="prev" src="https://cdn.shuiganying.com/images/2023/11/13/4aaa5694a48601a6a2e199143cbdb565.png" mode="widthFix"/>
|
||||
<image class="play" wx:if="{{!selectVideoItem.playedState}}" catch:tap="videoPlayTab" src="https://cdn.shuiganying.com/images/2023/11/13/e6402d0956059d7c3ac467d8995649fb.png" mode="widthFix"/>
|
||||
<image class="play" wx:if="{{selectVideoItem.playedState}}" catch:tap="videoPauseTab" src="https://cdn.shuiganying.com/images/2023/11/13/585e0a8c57cb2824a132c1eefde23370.png" mode="widthFix"/>
|
||||
<image catch:tap="preTab" data-type='next' class="next" src="https://cdn.shuiganying.com/images/2023/11/13/4aaa5694a48601a6a2e199143cbdb565.png" mode="widthFix"/>
|
||||
<view class="all-video" catch:tap="allVideoTab">{{!seeAllVideo?'全部视频':'隐藏'}}</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
</view>
|
||||
212
pages/beautify/coach.wxss
Normal file
212
pages/beautify/coach.wxss
Normal file
@@ -0,0 +1,212 @@
|
||||
/* pages/beautify/coach.wxss.wxss */
|
||||
.coach{
|
||||
position: relative;
|
||||
background-color: #f9f0ed;
|
||||
}
|
||||
.coach-top-covers{
|
||||
width: 100%;
|
||||
height: 100rpx;
|
||||
}
|
||||
/* 顶部图片展示 */
|
||||
.coach-top{
|
||||
/* height: 100vh; */
|
||||
width: 100vw;
|
||||
background-color: #f9f0ed;
|
||||
position: relative;
|
||||
z-index: 0;
|
||||
/* padding-bottom: 40vh; */
|
||||
padding-top: 0rpx;
|
||||
position: relative;
|
||||
top: -30rpx;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.coach-avatar{
|
||||
position: absolute;
|
||||
left: 30rpx;
|
||||
top: 70rpx;
|
||||
z-index: 100;
|
||||
border-radius: 30rpx;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
justify-content: flex-start;
|
||||
box-sizing: border-box;
|
||||
color: #111;
|
||||
font-size: 30rpx;
|
||||
font-weight: bold;
|
||||
}
|
||||
.coach-avatar image{
|
||||
width: 100rpx;
|
||||
height: 100rpx;
|
||||
border-radius: 100rpx;
|
||||
margin-right: 20rpx;
|
||||
}
|
||||
.coach-camera{
|
||||
position: absolute;
|
||||
right: 20rpx;
|
||||
top: 60rpx;
|
||||
z-index: 100;
|
||||
border-radius: 30rpx;
|
||||
border: solid 10rpx #FF898F;
|
||||
}
|
||||
.coach .coach-close{
|
||||
width: 50rpx;
|
||||
height: 40rpx;
|
||||
background-color: #FF898F;
|
||||
text-align: center;
|
||||
color: #FFF;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
z-index: 1;
|
||||
border-radius: 0 20rpx 0 20rpx;
|
||||
}
|
||||
.coach-camera camera{
|
||||
width: 220rpx;
|
||||
height: 260rpx;
|
||||
border-radius: 20rpx;
|
||||
position: relative;
|
||||
/* z-index: 99; */
|
||||
transform: rotateY(360deg);
|
||||
}
|
||||
.coach-mirror{
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
justify-content: flex-end;
|
||||
box-sizing: border-box;
|
||||
position: absolute;
|
||||
right: 30rpx;
|
||||
top: 60rpx;
|
||||
border:solid 1rpx #FF898F;
|
||||
border-radius: 40rpx;
|
||||
padding: 10rpx 30rpx;
|
||||
font-size: 30rpx;
|
||||
color: #111111;
|
||||
}
|
||||
.coach-mirror image{
|
||||
width: 30rpx;
|
||||
height: 30rpx;
|
||||
/* transform: rotate(30deg); */
|
||||
margin-right: 4rpx;
|
||||
}
|
||||
|
||||
.coach-top-video{
|
||||
width: 78vw;
|
||||
height: 720rpx;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
box-sizing: border-box;
|
||||
font-size: 30rpx;
|
||||
color: #222;
|
||||
}
|
||||
.coach-top-cover{
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
.coach-top-text{
|
||||
margin-top: 40rpx;
|
||||
font-size: 32rpx;
|
||||
color: #111;
|
||||
font-weight: bold;
|
||||
}
|
||||
/* 底部视频列表 */
|
||||
|
||||
.coach-bottom{
|
||||
width: 100vw;
|
||||
background-color: white;
|
||||
/* position: fixed; */
|
||||
/* bottom: 0; */
|
||||
/* left: 0; */
|
||||
z-index: 1;
|
||||
}
|
||||
.coach-swiper{
|
||||
padding-top: 40rpx;
|
||||
padding-left: 20rpx;
|
||||
padding-bottom: 20rpx;
|
||||
height: 200rpx;
|
||||
}
|
||||
|
||||
.coach-swiper-item{
|
||||
position: relative;
|
||||
}
|
||||
.coach-swiper-item-cover{
|
||||
width: calc(100% - 20rpx);
|
||||
height: 160rpx;
|
||||
margin-right: 20rpx;
|
||||
border-radius: 20rpx;
|
||||
position: relative;
|
||||
}
|
||||
.coach-swiper-item-cover-active{
|
||||
width: calc(100% - 20rpx);
|
||||
height: 160rpx;
|
||||
background-color: rgba(0, 0, 0, 0.1);
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
z-index: 1;
|
||||
border-radius: 20rpx;
|
||||
}
|
||||
|
||||
/* 声音播放控制按钮 */
|
||||
.video-control{
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
box-sizing: border-box;
|
||||
padding: 20rpx 0 60rpx 30rpx;
|
||||
/* display: none; */
|
||||
}
|
||||
.video-control image{
|
||||
width: 44rpx;
|
||||
height: 44rpx;
|
||||
padding: 10rpx;
|
||||
}
|
||||
.video-control .source-right{
|
||||
flex:1;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
justify-content: flex-end;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.video-control .source-right .play{
|
||||
width: 100rpx;
|
||||
height: 100rpx;
|
||||
padding: 0 40rpx;
|
||||
}
|
||||
.video-control .source-right .next{
|
||||
transform: rotate(180deg);
|
||||
}
|
||||
.video-control .source-right .all-video{
|
||||
min-width: 120rpx;
|
||||
text-align:center;
|
||||
margin-left: 40rpx;
|
||||
margin-right: 30rpx;
|
||||
border-radius: 40rpx;
|
||||
border: solid 1rpx #FF898F;
|
||||
color: #FF898F;
|
||||
padding: 10rpx 20rpx;
|
||||
font-size: 26rpx;
|
||||
}
|
||||
|
||||
|
||||
/* 倒计时和分布展示 */
|
||||
|
||||
.steps-cont{
|
||||
font-size: 28rpx;
|
||||
color: #000;
|
||||
padding: 30rpx;
|
||||
}
|
||||
.steps-time{
|
||||
font-size: 70rpx;
|
||||
font-weight: bold;
|
||||
margin-bottom: 10rpx;
|
||||
}
|
||||
66
pages/beautify2/coach.js
Normal file
66
pages/beautify2/coach.js
Normal file
@@ -0,0 +1,66 @@
|
||||
// pages/beautify2/coach.js
|
||||
Page({
|
||||
|
||||
/**
|
||||
* 页面的初始数据
|
||||
*/
|
||||
data: {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 生命周期函数--监听页面加载
|
||||
*/
|
||||
onLoad(options) {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 生命周期函数--监听页面初次渲染完成
|
||||
*/
|
||||
onReady() {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 生命周期函数--监听页面显示
|
||||
*/
|
||||
onShow() {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 生命周期函数--监听页面隐藏
|
||||
*/
|
||||
onHide() {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 生命周期函数--监听页面卸载
|
||||
*/
|
||||
onUnload() {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 页面相关事件处理函数--监听用户下拉动作
|
||||
*/
|
||||
onPullDownRefresh() {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 页面上拉触底事件的处理函数
|
||||
*/
|
||||
onReachBottom() {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 用户点击右上角分享
|
||||
*/
|
||||
onShareAppMessage() {
|
||||
|
||||
}
|
||||
})
|
||||
2
pages/beautify2/coach.wxml
Normal file
2
pages/beautify2/coach.wxml
Normal file
@@ -0,0 +1,2 @@
|
||||
<!--pages/beautify2/coach.wxml-->
|
||||
<text>pages/beautify2/coach.wxml</text>
|
||||
132
pages/found/index.js
Normal file
132
pages/found/index.js
Normal file
@@ -0,0 +1,132 @@
|
||||
Page({
|
||||
data: {
|
||||
page : 1,
|
||||
has_more: true,
|
||||
lists : [],
|
||||
share_id: '',
|
||||
loading : true,
|
||||
},
|
||||
|
||||
onLoad(e){
|
||||
this.setData({
|
||||
share_id : e.share_id || ''
|
||||
})
|
||||
getApp().globalData.inviteText = e.invite || ''
|
||||
this.getList()
|
||||
},
|
||||
|
||||
onHide(){
|
||||
if(this.data.share_id){
|
||||
this.setData({
|
||||
share_id:''
|
||||
})
|
||||
}
|
||||
},
|
||||
onShow(){
|
||||
if( this.data.lists.length>0 && this.data.share_id){
|
||||
this.setData({
|
||||
page:1,
|
||||
has_more:true,
|
||||
lists:[]
|
||||
})
|
||||
this.getList()
|
||||
}
|
||||
},
|
||||
getList(){
|
||||
let params = {
|
||||
page:this.data.page,
|
||||
share_id:this.data.share_id
|
||||
}
|
||||
wx.$api.found.foundIndex(params).then(res => {
|
||||
let lists = this.data.lists
|
||||
if(this.data.page == 1){lists = []}
|
||||
lists = this.data.lists.concat(res.data.data)
|
||||
|
||||
this.setData({
|
||||
lists : lists,
|
||||
has_more: res.data.page.has_more,
|
||||
})
|
||||
|
||||
this.setData({
|
||||
loading:false
|
||||
})
|
||||
setTimeout(()=>{
|
||||
wx.hideLoading()
|
||||
wx.stopPullDownRefresh()
|
||||
},3000)
|
||||
}).catch(err=>{
|
||||
wx.showToast({
|
||||
title: err.message,
|
||||
icon :'none',
|
||||
mask :true,
|
||||
duration:2000
|
||||
})
|
||||
})
|
||||
},
|
||||
onPullDownRefresh(){
|
||||
this.setData({
|
||||
page:1,
|
||||
has_more:true,
|
||||
lists:[],
|
||||
loading:true
|
||||
})
|
||||
this.getList()
|
||||
},
|
||||
onReachBottom(){
|
||||
if(this.data.has_more){
|
||||
this.setData({
|
||||
page:this.data.page +1
|
||||
})
|
||||
this.getList()
|
||||
wx.showLoading({
|
||||
title: '疯狂加载中..',
|
||||
})
|
||||
}else{
|
||||
wx.showToast({
|
||||
title: '没有更多',
|
||||
icon:'none',
|
||||
mask:true,
|
||||
duration:2000
|
||||
})
|
||||
}
|
||||
},
|
||||
// 预览图片
|
||||
preImg(e){
|
||||
let current = e.currentTarget.dataset.idx
|
||||
console.log(current)
|
||||
let urls = e.currentTarget.dataset.urls
|
||||
wx.previewImage({
|
||||
urls,
|
||||
current:urls[current]
|
||||
})
|
||||
},
|
||||
// 收藏
|
||||
doSubscribeFavorite(e){
|
||||
let index= e.currentTarget.dataset.index
|
||||
let type = e.currentTarget.dataset.type
|
||||
let item = this.data.lists[index]
|
||||
let lists = this.data.lists
|
||||
wx.$api.found.foundSubscribeFavorite(item.id,type).then(res => {
|
||||
lists[index].is[`${type}`] = res.data.res
|
||||
lists[index].count[`${type}`] = res.data.count
|
||||
this.setData({
|
||||
lists:lists
|
||||
})
|
||||
}).catch(err=>{
|
||||
wx.showToast({
|
||||
title: err.message,
|
||||
icon :'none',
|
||||
mask :true,
|
||||
duration:2000
|
||||
})
|
||||
})
|
||||
},
|
||||
onShareAppMessage(e){
|
||||
let {describe,id,share_cover}= e.target.dataset.obj
|
||||
return {
|
||||
title : describe,
|
||||
imageUrl: share_cover,
|
||||
path : "/pages/found/index?share_id=" + id + '&invite=' + wx.getStorageSync("invite")
|
||||
}
|
||||
},
|
||||
})
|
||||
9
pages/found/index.json
Normal file
9
pages/found/index.json
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"usingComponents": {},
|
||||
"navigationBarTitleText": "发现",
|
||||
"navigationBarTextStyle": "white",
|
||||
"navigationBarBackgroundColor": "#5283ea",
|
||||
"enablePullDownRefresh": true,
|
||||
"backgroundTextStyle": "dark",
|
||||
"backgroundColor": "#eeeeee"
|
||||
}
|
||||
60
pages/found/index.wxml
Normal file
60
pages/found/index.wxml
Normal file
@@ -0,0 +1,60 @@
|
||||
<view class="pack-center pages-hint grey" wx:if="{{loading}}">
|
||||
<image src="/static/icons/loadingGif.gif"></image>
|
||||
<view>疯狂加载中</view>
|
||||
</view>
|
||||
|
||||
|
||||
<block wx:else>
|
||||
<view class="found" wx:for="{{lists}}" wx:key="id">
|
||||
<!-- 用户 -->
|
||||
<view class="avatar">
|
||||
<view class="avatar-left">
|
||||
<image class="cover" src="{{item.user.avatar ? item.user.avatar: '/static/imgs/userHead.png'}}" mode="aspectFill"/>
|
||||
<view>{{item.user.name || '未知用户'}}</view>
|
||||
</view>
|
||||
<view>{{item.created_at}}</view>
|
||||
</view>
|
||||
|
||||
<!-- 文字描述-->
|
||||
<view class="des">{{item.describe}}</view>
|
||||
|
||||
<!-- 主图或视频 -->
|
||||
<view class="cont">
|
||||
<!-- 图片汇总 -->
|
||||
<block wx:if="{{item.type == 'pictures'}}">
|
||||
<view class="cont-img-list" wx:if="{{item.pictures.length == 1}}">
|
||||
<block wx:for="{{item.pictures}}" wx:key='idx' wx:for-index="idx" wx:for-item="it">
|
||||
<image catch:tap="preImg" data-idx="{{idx}}" data-urls='{{item.pictures}}' wx:key="it" src="{{it}}" mode="widthFix"/>
|
||||
</block>
|
||||
</view>
|
||||
<view class="cont-img-list2" wx:if="{{item.pictures.length == 2}}">
|
||||
<block wx:for="{{item.pictures}}" wx:key='idx' wx:for-index="idx" wx:for-item="it">
|
||||
<image catch:tap="preImg" data-idx="{{idx}}" data-urls='{{item.pictures}}' wx:key="it" src="{{it}}" mode="aspectFill"/>
|
||||
</block>
|
||||
</view>
|
||||
<view class="cont-img-list" wx:if="{{item.pictures.length>=3}}">
|
||||
<block wx:for="{{item.pictures}}" wx:key='idx' wx:for-index="idx" wx:for-item="it">
|
||||
<image catch:tap="preImg" data-idx="{{idx}}" data-urls='{{item.pictures}}' wx:key="it" src="{{it}}" mode="aspectFill"/>
|
||||
</block>
|
||||
</view>
|
||||
</block>
|
||||
<!-- 视频汇总 -->
|
||||
<block wx:if="{{item.type == 'video' && item.video!=null}}">
|
||||
<video class="cont-video" src="{{item.video}}" id='myVideo{{item.id}}'/>
|
||||
</block>
|
||||
</view>
|
||||
|
||||
<!-- 点赞 收藏 分享 -->
|
||||
<view class="footer">
|
||||
<view class="footer-item" catch:tap="doSubscribeFavorite" data-type='favorite' data-index='{{index}}'>
|
||||
<image src="{{!item.is.favorite?'/static/imgs/icon_un_zan@2x.png':'/static/imgs/icon_zaned@2x.png'}}" mode="widthFix" />{{!item.is.favorite?'点赞':item.count.favorite}}
|
||||
</view>
|
||||
<view class="footer-item" catch:tap="doSubscribeFavorite" data-type='subscribe' data-index='{{index}}'>
|
||||
<image src="{{!item.is.subscribe?'/static/imgs/icon_un_shou@2x.png':'/static/imgs/icon_shoued@2x.png'}}" mode="widthFix" />{{!item.is.subscribe?'收藏':item.count.subscribe}}
|
||||
</view>
|
||||
<button class="footer-item" open-type="share" hover-class="none" data-obj='{{item}}'>
|
||||
<image style="width:28rpx;" src="/static/imgs/icon_share@2x.png" mode="widthFix" />分享
|
||||
</button>
|
||||
</view>
|
||||
</view>
|
||||
</block>
|
||||
126
pages/found/index.wxss
Normal file
126
pages/found/index.wxss
Normal file
@@ -0,0 +1,126 @@
|
||||
page {
|
||||
background-color: #f9f9f9;
|
||||
padding-bottom: 80rpx;
|
||||
}
|
||||
.found{
|
||||
background-color: #fff;
|
||||
width: 100vw;
|
||||
border-radius: 10rpx;
|
||||
box-sizing: border-box;
|
||||
margin-bottom: 20rpx;
|
||||
}
|
||||
.avatar{
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
box-sizing: border-box;
|
||||
font-size: 28rpx;
|
||||
font-family: PingFang SC;
|
||||
font-weight: 400;
|
||||
color: #999999;
|
||||
padding: 30rpx;
|
||||
}
|
||||
.avatar-left {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
justify-content:flex-start;
|
||||
box-sizing: border-box;
|
||||
font-size: 36rpx;
|
||||
font-weight: bold;
|
||||
color: #111111;
|
||||
}
|
||||
.avatar-left .cover{
|
||||
width: 80rpx;
|
||||
height: 80rpx;
|
||||
border-radius: 50%;
|
||||
margin-right: 30rpx;
|
||||
border: solid 10rpx rgba(224, 222, 222, 0.1);
|
||||
}
|
||||
|
||||
.des{
|
||||
font-size: 30rpx;
|
||||
font-family: PingFang SC;
|
||||
font-weight: 400;
|
||||
color: #111111;
|
||||
padding: 0 30rpx 30rpx 30rpx;
|
||||
}
|
||||
|
||||
.cont{
|
||||
padding:0 30rpx 10rpx 30rpx;
|
||||
}
|
||||
.cont-img-list{
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
justify-content: flex-start;
|
||||
box-sizing: border-box;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
.cont-img-list image{
|
||||
margin-right: 20rpx;
|
||||
margin-bottom: 20rpx;
|
||||
border-radius: 10rpx;
|
||||
width: calc(100vw/3 - 20px);
|
||||
height: calc(100vw/3 - 20px);
|
||||
}
|
||||
|
||||
.cont-img-list2{
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
justify-content: flex-start;
|
||||
box-sizing: border-box;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
.cont-img-list2 image{
|
||||
margin-right: 20rpx;
|
||||
margin-bottom: 20rpx;
|
||||
border-radius: 10rpx;
|
||||
width: calc(100vw/2.2 - 20px);
|
||||
height: calc(100vw/2.2 - 20px);
|
||||
}
|
||||
|
||||
.cont-video{
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.footer{
|
||||
border-top: solid 1rpx #eee;
|
||||
font-size: 28rpx!important;
|
||||
font-family: PingFang SC;
|
||||
font-weight: 400!important;
|
||||
color: #666666;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
justify-content: space-around;
|
||||
box-sizing: border-box;
|
||||
padding: 20rpx 30rpx;
|
||||
}
|
||||
|
||||
.footer-item{
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
box-sizing: border-box;
|
||||
padding: 20rpx 20rpx;
|
||||
flex: 1;
|
||||
background-color: #fff!important;
|
||||
}
|
||||
.footer-item image{
|
||||
width: 32rpx;
|
||||
height: 32rpx;
|
||||
margin-right: 10rpx;
|
||||
}
|
||||
.footer button{
|
||||
font-size: 28rpx;
|
||||
color: #666666;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
.footer button:after {
|
||||
border: none;
|
||||
}
|
||||
@@ -16,6 +16,12 @@
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 美肤教练 -->
|
||||
<!-- <navigator hover-class="none" url="/pages/beautify/coach" class="nurse" style="padding-bottom: 0!important;">
|
||||
<image class="nurse-img" mode="widthFix" src="https://cdn.shuiganying.com/images/2023/11/15/d7f1911c95307c29ea7904bde0f437a8.png"></image>
|
||||
</navigator> -->
|
||||
|
||||
|
||||
<!-- 使用场景 -->
|
||||
<view class="scene">
|
||||
<view class="sceneCont">
|
||||
@@ -35,6 +41,8 @@
|
||||
</view>
|
||||
</view>
|
||||
|
||||
|
||||
|
||||
<!-- 必Buy推荐 -->
|
||||
<view class="goods">
|
||||
<view class="goodsTilte">必Buy推荐</view>
|
||||
|
||||
@@ -35,7 +35,8 @@ Page({
|
||||
progress: 100, // 进度条的宽度,这里的单位是px,所以在wxml文件中要改为rpx
|
||||
precent: 50, // 这个是百分比
|
||||
|
||||
refertoStatus: false
|
||||
refertoStatus: false,
|
||||
suggest : {} // 推荐方案
|
||||
},
|
||||
|
||||
onLoad(options) {
|
||||
@@ -72,7 +73,9 @@ Page({
|
||||
zoneArea : (res.data.skin_analyze.result.result.oily_intensity.t_zone.area * 100).toFixed(1),
|
||||
leftcheekArea : (res.data.skin_analyze.result.result.oily_intensity.left_cheek.area * 100).toFixed(1),
|
||||
rightcheekArea : (res.data.skin_analyze.result.result.oily_intensity.right_cheek.area * 100).toFixed(1),
|
||||
suggest:res.data.suggest
|
||||
})
|
||||
console.log(res)
|
||||
}).catch(err => { })
|
||||
},
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
|
||||
<view class="seeCont">
|
||||
<!-- 皮肤概况 -->
|
||||
<view class="survey">
|
||||
<view class="survey" >
|
||||
<view class="survey-title">
|
||||
<text>皮肤概况</text>
|
||||
</view>
|
||||
@@ -85,7 +85,7 @@
|
||||
</view>
|
||||
|
||||
<!-- 衰老分析 -->
|
||||
<view class="module">
|
||||
<view class="module" >
|
||||
<view class="module-title">衰老分析</view>
|
||||
<view class="old">
|
||||
<view class="oldTop">
|
||||
@@ -149,7 +149,7 @@
|
||||
</view>
|
||||
|
||||
<!-- 眼袋 -->
|
||||
<view class="module">
|
||||
<view class="module" >
|
||||
<view class="module-title">眼袋</view>
|
||||
<view class="old">
|
||||
<view class="oldTop">
|
||||
@@ -169,7 +169,7 @@
|
||||
</view>
|
||||
|
||||
<!-- 黑眼圈 -->
|
||||
<view class="module">
|
||||
<view class="module" >
|
||||
<view class="module-title">黑眼圈</view>
|
||||
<view class="old">
|
||||
<view class="oldTop">
|
||||
@@ -189,7 +189,7 @@
|
||||
</view>
|
||||
|
||||
<!-- 敏感度分析 -->
|
||||
<view class="module">
|
||||
<view class="module" >
|
||||
<view class="module-title">敏感度分析</view>
|
||||
<view class="module-flex">
|
||||
<view class="module-flex-cont">
|
||||
@@ -279,7 +279,7 @@
|
||||
</view>
|
||||
|
||||
<!-- 黑头分析 -->
|
||||
<view class="module">
|
||||
<view class="module" >
|
||||
<view class="module-title">黑头分析</view>
|
||||
<view class="module-flex">
|
||||
<view class="module-flex-cont">
|
||||
@@ -315,8 +315,6 @@
|
||||
</view>
|
||||
</view>
|
||||
|
||||
|
||||
|
||||
<!-- 痤疮色素性分析 -->
|
||||
<view class="module">
|
||||
<view class="module-title">色素性分析</view>
|
||||
@@ -376,6 +374,31 @@
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 使用水感应喷雾最佳方案 -->
|
||||
<view class="addvice" wx:if="{{suggest}}">
|
||||
<view class="addvice-title">使用水感应喷雾最佳方案</view>
|
||||
<view class="addvice-item">
|
||||
<image src="{{suggest.cover}}" mode="aspectFill"/>
|
||||
<view class="cont">
|
||||
<view class="tilte">{{suggest.title}}</view>
|
||||
<view class="des">{{suggest.description}}</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 推荐产品 -->
|
||||
<view class="addvice-goods" wx:if="{{suggest}}">
|
||||
<image src="{{suggest.goods.cover}}" mode="aspectFill"/>
|
||||
<view class="cont">
|
||||
<view class="tilte">{{suggest.goods.name}}</view>
|
||||
<view class="des">{{suggest.goods.description}}</view>
|
||||
<view class="price">
|
||||
<view class="count">¥<span>{{suggest.goods.price.price}}</span></view>
|
||||
<navigator hover-class="none" class="btn" url="/pages/mall/details/details?id={{suggest.goods.goods_id}}">BUY</navigator>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 按钮 -->
|
||||
@@ -385,7 +408,7 @@
|
||||
</view>
|
||||
<view class="footer-flex" wx:else>
|
||||
<navigator hover-class="none" url="../share/share" class="footer-flex-btn footer-flex-share">邀请好友</navigator>
|
||||
<navigator hover-class="none" url="/pages/mall/index" open-type="switchTab" class="footer-flex-btn">产品推荐</navigator>
|
||||
<navigator hover-class="none" url="/pages/mall/index" open-type="switchTab" class="footer-flex-btn">更多产品</navigator>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
@@ -251,6 +251,121 @@ page {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.addvice{
|
||||
width: 100%;
|
||||
background-color: white;
|
||||
margin-top: 30rpx;
|
||||
border-radius: 15rpx;
|
||||
padding: 30rpx;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.addvice-title{
|
||||
font-size: 36rpx;
|
||||
font-weight: bold;
|
||||
color: #111111;
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
padding: 0 2rpx;
|
||||
}
|
||||
.addvice-title::before{
|
||||
content: "";
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
height: 20rpx;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
background-color: rgba(60, 125, 255, 0.2);
|
||||
}
|
||||
|
||||
.addvice-item{
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: flex-start;
|
||||
justify-content: flex-start;
|
||||
box-sizing: border-box;
|
||||
font-size: 28rpx;
|
||||
font-family: PingFang SC;
|
||||
font-weight: 400;
|
||||
color: #666666;
|
||||
margin-top: 40rpx;
|
||||
}
|
||||
.addvice-item image{
|
||||
width: 80rpx;
|
||||
height: 80rpx;
|
||||
margin-top: 20rpx;
|
||||
}
|
||||
.addvice-item .cont{
|
||||
flex: 1;
|
||||
margin-left: 40rpx;
|
||||
}
|
||||
|
||||
.addvice-item .cont .tilte{
|
||||
font-size: 32rpx;
|
||||
font-family: PingFang SC;
|
||||
font-weight: 400;
|
||||
color: #111111;
|
||||
margin-bottom: 12rpx;
|
||||
}
|
||||
|
||||
.addvice-goods{
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
justify-content:flex-start;
|
||||
box-sizing: border-box;
|
||||
background-color: white;
|
||||
margin-top: 30rpx;
|
||||
border-radius: 15rpx;
|
||||
padding: 30rpx;
|
||||
}
|
||||
.addvice-goods image{
|
||||
width: 160rpx;
|
||||
height: 160rpx;
|
||||
}
|
||||
|
||||
.addvice-goods .cont{
|
||||
flex: 1;
|
||||
margin-left: 30rpx;
|
||||
font-size: 32rpx;
|
||||
font-weight: 500;
|
||||
color: #000000;
|
||||
}
|
||||
.addvice-goods .des{
|
||||
font-size: 28rpx;
|
||||
font-weight: 400;
|
||||
color: #999999;
|
||||
margin-top: 15rpx;
|
||||
}
|
||||
.addvice-goods .price{
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
box-sizing: border-box;
|
||||
font-size: 28rpx;
|
||||
font-weight: bold;
|
||||
color: #000000;
|
||||
margin-top: 14rpx;
|
||||
}
|
||||
|
||||
.addvice-goods .price .count span{
|
||||
font-size: 40rpx;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.addvice-goods .price .btn{
|
||||
width: 120rpx;
|
||||
height: 60rpx;
|
||||
background: #3C7DFF;
|
||||
border-radius: 30rpx;
|
||||
font-size: 30rpx;
|
||||
font-weight: bold;
|
||||
color: #FFFFFF;
|
||||
line-height: 60rpx;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
/* 公共模块 */
|
||||
.module {
|
||||
background-color: #ffffff;
|
||||
|
||||
@@ -1,9 +1,5 @@
|
||||
{
|
||||
"description": "项目配置文件,详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html",
|
||||
"packOptions": {
|
||||
"ignore": [],
|
||||
"include": []
|
||||
},
|
||||
"setting": {
|
||||
"bundle": false,
|
||||
"userConfirmedBundleSwitch": false,
|
||||
@@ -24,8 +20,6 @@
|
||||
"nodeModules": false,
|
||||
"enhance": true,
|
||||
"useMultiFrameRuntime": true,
|
||||
"useApiHook": true,
|
||||
"useApiHostProcess": true,
|
||||
"showShadowRootInWxmlPanel": true,
|
||||
"packNpmManually": false,
|
||||
"enableEngineNative": false,
|
||||
@@ -41,15 +35,18 @@
|
||||
"useStaticServer": true,
|
||||
"checkInvalidKey": true,
|
||||
"disableUseStrict": false,
|
||||
"useCompilerPlugins": false
|
||||
"useCompilerPlugins": false,
|
||||
"ignoreUploadUnusedFiles": true
|
||||
},
|
||||
"compileType": "miniprogram",
|
||||
"libVersion": "2.17.0",
|
||||
"appid": "wx6bd4fcc040bfa025",
|
||||
"projectname": "miniprogram-92",
|
||||
"condition": {},
|
||||
"editorSetting": {
|
||||
"tabIndent": "insertSpaces",
|
||||
"tabSize": 4
|
||||
}
|
||||
},
|
||||
"packOptions": {
|
||||
"ignore": [],
|
||||
"include": []
|
||||
},
|
||||
"appid": "wx9ae0c63d0c58caeb"
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"description": "项目私有配置文件。此文件中的内容将覆盖 project.config.json 中的相同字段。项目的改动优先同步到此文件中。详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html",
|
||||
"projectname": "%E6%B0%B4%E6%84%9F%E5%BA%94",
|
||||
"projectname": "%E6%B0%B4%E6%84%9F%E5%BA%94%E5%B0%8F%E7%A8%8B%E5%BA%8F%EF%BC%88%E7%94%A8%E6%88%B7%E7%AB%AF%EF%BC%89",
|
||||
"setting": {
|
||||
"compileHotReLoad": true,
|
||||
"urlCheck": true
|
||||
@@ -8,6 +8,41 @@
|
||||
"condition": {
|
||||
"miniprogram": {
|
||||
"list": [
|
||||
{
|
||||
"name": "",
|
||||
"pathName": "pages/report/detail/detail",
|
||||
"query": "image_id=273",
|
||||
"launchMode": "default",
|
||||
"scene": null
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"pathName": "pages/found/index",
|
||||
"query": "share_id=1&invite=12",
|
||||
"launchMode": "default",
|
||||
"scene": null
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"pathName": "pages/beautify2/coach",
|
||||
"query": "",
|
||||
"launchMode": "default",
|
||||
"scene": null
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"pathName": "pages/beautify/coach",
|
||||
"query": "",
|
||||
"launchMode": "default",
|
||||
"scene": null
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"pathName": "pages/mall/index",
|
||||
"query": "",
|
||||
"launchMode": "default",
|
||||
"scene": null
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"pathName": "pages/recruit/poster/poster",
|
||||
|
||||
BIN
static/imgs/icon_share@2x.png
Normal file
BIN
static/imgs/icon_share@2x.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 717 B |
BIN
static/imgs/icon_shoued@2x.png
Normal file
BIN
static/imgs/icon_shoued@2x.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.7 KiB |
BIN
static/imgs/icon_un_shou@2x.png
Normal file
BIN
static/imgs/icon_un_shou@2x.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.1 KiB |
BIN
static/imgs/icon_un_zan@2x.png
Normal file
BIN
static/imgs/icon_un_zan@2x.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 869 B |
BIN
static/imgs/icon_zaned@2x.png
Normal file
BIN
static/imgs/icon_zaned@2x.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.4 KiB |
Reference in New Issue
Block a user