|
|
<template>
|
|
|
<view class="content">
|
|
|
<view class="detailTop">
|
|
|
<image class="banner" mode="scaleToFill" :src="info.poster[0]"></image>
|
|
|
</view>
|
|
|
|
|
|
<view class="toptitle">
|
|
|
<view class="h3">{{info.name}}</view>
|
|
|
<view class="dataGroup">
|
|
|
<view class="dataCol">
|
|
|
<image mode="heightFix" src="../../static/icon_liulan@2x.png"></image>
|
|
|
<text class="bot">1334</text>
|
|
|
</view>
|
|
|
<view class="dataCol">
|
|
|
<image mode="heightFix" src="../../static/icon_liked@2x.png"></image>
|
|
|
<text class="bot">收藏</text>
|
|
|
</view>
|
|
|
</view>
|
|
|
<view class="normalPrice">
|
|
|
<view class="price" v-if="price.selling_price > 0">
|
|
|
¥<text class="big">{{price.selling_price}}</text>
|
|
|
<text class="small">¥{{price.original_price}}</text>
|
|
|
</view>
|
|
|
<view class="price" v-else>
|
|
|
<text class="big">免费</text>
|
|
|
</view>
|
|
|
<view class="r_info">
|
|
|
<view class="shareMoney" v-if="price.shared_price > 0"><text>分享金</text> {{price.shared_price}}元
|
|
|
</view>
|
|
|
<view class="leaveNum">剩余 50</view>
|
|
|
</view>
|
|
|
</view>
|
|
|
<view class="shareIntro" v-if="price.shared_price > 0">
|
|
|
<view class="title">分享金</view>
|
|
|
<view class="detail">其他用户通过您分享的页面购买并服务完成后, 您可获得<text class="font_red">¥{{price.shared_price}}</text>分享金
|
|
|
</view>
|
|
|
</view>
|
|
|
<view class="tags">
|
|
|
<text class="txt" v-for="(item, idx) in info.label" :key="idx">{{item}}</text>
|
|
|
</view>
|
|
|
</view>
|
|
|
<view class="summary">
|
|
|
<view class="tit">
|
|
|
<text>简介</text>
|
|
|
</view>
|
|
|
<view class="wrap" v-if="type == 1">
|
|
|
<view class="item">
|
|
|
<view class="iconfont icon-clock2"></view>
|
|
|
<view class="grey-txt">活动时间</view>
|
|
|
<view class="black-txt">{{info.start_at}}</view>
|
|
|
</view>
|
|
|
<view class="item">
|
|
|
<view class="iconfont icon-duorenyonghu"></view>
|
|
|
<view class="grey-txt">适合人群</view>
|
|
|
<view class="black-txt">{{info.crowd}}</view>
|
|
|
</view>
|
|
|
<!-- <view class="item">
|
|
|
<view class="iconfont icon-jishishalou"></view>
|
|
|
<view class="grey-txt">服务时长</view>
|
|
|
<view class="black-txt">2小时</view>
|
|
|
</view> -->
|
|
|
</view>
|
|
|
<view class="wrap" v-else>
|
|
|
<view class="item">
|
|
|
<view class="iconfont icon-aixin"></view>
|
|
|
<view class="grey-txt">服务方式</view>
|
|
|
<view class="black-txt">{{info.way == 1 ? '上门' : '到店'}}服务</view>
|
|
|
</view>
|
|
|
<view class="item">
|
|
|
<view class="iconfont icon-clock2"></view>
|
|
|
<view class="grey-txt">有效期限</view>
|
|
|
<view class="black-txt">{{info.validity == -1 ? '永久' : `${info.validity}天`}}</view>
|
|
|
</view>
|
|
|
<!-- <view class="item">
|
|
|
<view class="iconfont icon-duorenyonghu"></view>
|
|
|
<view class="grey-txt">适合人群</view>
|
|
|
<view class="black-txt">孕妈妈</view>
|
|
|
</view> -->
|
|
|
<view class="item">
|
|
|
<view class="iconfont icon-jishishalou"></view>
|
|
|
<view class="grey-txt">服务时长</view>
|
|
|
<view class="black-txt">{{info.time_length}}小时</view>
|
|
|
</view>
|
|
|
</view>
|
|
|
</view>
|
|
|
<view class="shops">
|
|
|
<!-- <view class="shop">
|
|
|
<image class="pic" src="../../static/shop-logo.png"></image>
|
|
|
<view class="infos">
|
|
|
<view class="name">时光印记店(石路店)</view>
|
|
|
<view class="starts">
|
|
|
<view class="iconfont icon-star"></view>
|
|
|
<view class="iconfont icon-star"></view>
|
|
|
<view class="iconfont icon-star"></view>
|
|
|
<view class="iconfont icon-star"></view>
|
|
|
<view class="iconfont icon-star"></view>
|
|
|
</view>
|
|
|
<view class="txt">商户简介商户简介商户简介商户简介商户简介</view>
|
|
|
<view class="reply">
|
|
|
<text>历史评价</text>
|
|
|
<text class="iconfont icon-right"></text>
|
|
|
</view>
|
|
|
</view>
|
|
|
</view> -->
|
|
|
<view class="shop" v-for="item in info.sponsor" :key="item.id">
|
|
|
<image class="pic" :src="item.logo"></image>
|
|
|
<view class="infos">
|
|
|
<view class="name">{{item.sponsor_name}}</view>
|
|
|
<view class="date-txt">
|
|
|
<!-- 周一至周日 09:00-18:00 -->
|
|
|
</view>
|
|
|
<view class="txt">{{item.sponsor_des}}</view>
|
|
|
</view>
|
|
|
</view>
|
|
|
</view>
|
|
|
<view class="details">
|
|
|
<view class="detail">
|
|
|
<view class="tit">商品详情</view>
|
|
|
<view class="txts">
|
|
|
<rich-text :nodes="info.content"></rich-text>
|
|
|
<!-- <text class="txt">*主题亲子服饰一套(一家三口)</text>
|
|
|
<text class="txt">*免费妈妈妆面造型一次</text>
|
|
|
<text class="txt">*含妈妈假睫毛一副</text>
|
|
|
<text class="txt">*拍摄不低于40张</text>
|
|
|
<text class="txt">*赠送16寸放大照片一副(同底)</text>
|
|
|
<text class="txt">*赠送10寸拉米娜摆台一副(同底)</text>
|
|
|
<text class="txt">*赠送6寸冲印单片3张(同底)</text>
|
|
|
<text class="txt">*赠送底片5张(U盘自拷或者发邮箱)</text> -->
|
|
|
</view>
|
|
|
</view>
|
|
|
<!-- <view class="detail">
|
|
|
<view class="tit">注意事项</view>
|
|
|
<view class="txts">
|
|
|
<text class="txt">*本次活动针对0-12岁宝宝</text>
|
|
|
<text class="txt">*每户家庭限领1份,此优惠活动不与公司其他活动同享</text>
|
|
|
</view>
|
|
|
<image mode="widthFix" src="../../static/690x400.png"></image>
|
|
|
</view> -->
|
|
|
</view>
|
|
|
<!--为您精选-->
|
|
|
<view class="introBox">
|
|
|
<view class="normal_tit">为您精选</view>
|
|
|
<view class="intro_row">
|
|
|
<view class="row_col" v-for="item in recommends" :key="item.id">
|
|
|
<view class="imgOuter">
|
|
|
<image mode="aspectFill" src="../../static/rishang.png"></image>
|
|
|
<view class="date">2018/11/25 14:00</view>
|
|
|
</view>
|
|
|
<view class="title">孕期保健Q&A</view>
|
|
|
<view class="subTit">苏州·园区星海街188号园区星海街188号</view>
|
|
|
<view class="price"><text class="font_red">免费</text>130人参与</view>
|
|
|
</view>
|
|
|
<!-- <view class="row_col">
|
|
|
<view class="imgOuter">
|
|
|
<image mode="aspectFill" src="../../static/rishang.png"></image>
|
|
|
<view class="date">2018/11/25 14:00</view>
|
|
|
</view>
|
|
|
<view class="title">孕期保健Q&A</view>
|
|
|
<view class="subTit">苏州·园区星海街188号园区星海街188号</view>
|
|
|
<view class="price"><text class="font_red">免费</text></view>
|
|
|
</view> -->
|
|
|
</view>
|
|
|
</view>
|
|
|
<!--底部导航-->
|
|
|
<view class="footer">
|
|
|
<view class="menuLink">
|
|
|
<navigator url="../active/active" open-type="switchTab">
|
|
|
<view class="menuCol">
|
|
|
<text class="iconfont icon-home"></text>
|
|
|
<text>首页</text>
|
|
|
</view>
|
|
|
</navigator>
|
|
|
<view class="menuCol">
|
|
|
<text class="iconfont icon-Share"></text>
|
|
|
<text>分享</text>
|
|
|
</view>
|
|
|
<view class="menuCol">
|
|
|
<text class="iconfont icon-Icon_customerservice"></text>
|
|
|
<text>客服</text>
|
|
|
</view>
|
|
|
</view>
|
|
|
<view class="buyBtn">立即购买</view>
|
|
|
</view>
|
|
|
</view>
|
|
|
</template>
|
|
|
<script>
|
|
|
let sysInfo = uni.getSystemInfoSync();
|
|
|
let SCREEN_WIDTH = sysInfo.screenWidth
|
|
|
let SCREEN_HEIGHT = sysInfo.screenHeight;
|
|
|
let WindowHeight = sysInfo.windowHeight;
|
|
|
|
|
|
let windowWidth = sysInfo.windowWidth;
|
|
|
import {
|
|
|
weixin
|
|
|
} from '../../../../utils/weixin.js';
|
|
|
export default {
|
|
|
data() {
|
|
|
const currentDate = this.getDate({
|
|
|
format: true
|
|
|
})
|
|
|
return {
|
|
|
id: "",
|
|
|
info: {},
|
|
|
dataList: [],
|
|
|
form: {
|
|
|
product_type: "product",
|
|
|
product_id: "",
|
|
|
due_date: "",
|
|
|
phone: '',
|
|
|
member_name: ""
|
|
|
},
|
|
|
openid: "",
|
|
|
showPop: false,
|
|
|
|
|
|
cardActive: 0,
|
|
|
img: '',
|
|
|
user_info: {
|
|
|
promotion: ''
|
|
|
},
|
|
|
shareBtnDisplay: 'none',
|
|
|
// 动态的宽高
|
|
|
cropperW: SCREEN_WIDTH,
|
|
|
cropperH: SCREEN_HEIGHT,
|
|
|
packages: [],
|
|
|
sharePath: "",
|
|
|
scare: 1,
|
|
|
shareHeight: 500,
|
|
|
imgAvatar: "",
|
|
|
poster: ""
|
|
|
}
|
|
|
},
|
|
|
onShareAppMessage() {
|
|
|
return {
|
|
|
title: this.info.name,
|
|
|
path: "packages/packageBuy/pages/shopDetail/shopDetail?id=" + this.info.id + "promotion_id=" + this
|
|
|
.user_info.id,
|
|
|
imageUrl: this.img
|
|
|
}
|
|
|
},
|
|
|
onLoad(options) {
|
|
|
var that = this;
|
|
|
this.id = options.id;
|
|
|
weixin.getOpenidInfo(info => {
|
|
|
that.user_info = info.user_info
|
|
|
}, false)
|
|
|
this.openid = that.user_info.openid;
|
|
|
this.form.member_name = that.user_info.name;
|
|
|
this.form.phone = that.user_info.phone;
|
|
|
this.loadInfo();
|
|
|
this.loadPage();
|
|
|
this.form.product_id = options.id;
|
|
|
|
|
|
if (options.promotion_id) {
|
|
|
uni.setStorageSync("base_promotion_id", options.promotion_id)
|
|
|
}
|
|
|
},
|
|
|
methods: {
|
|
|
getPoster: function() {
|
|
|
var that = this;
|
|
|
uni.getImageInfo({
|
|
|
src: that.info.poster_url, // 头像
|
|
|
success: res => {
|
|
|
that.poster = res.path;
|
|
|
that.getAvatar();
|
|
|
}
|
|
|
});
|
|
|
},
|
|
|
getAvatar: function() {
|
|
|
let userProfile = uni.getStorageSync('user_profile');
|
|
|
|
|
|
if (!weixin.isNull(userProfile)) {
|
|
|
console.log(userProfile.avatarUrl)
|
|
|
console.log(this.imgAvatar)
|
|
|
uni.getImageInfo({
|
|
|
src: userProfile.avatarUrl, // 头像
|
|
|
success: rlogo => {
|
|
|
this.imgAvatar = rlogo.path;
|
|
|
console.log(this.imgAvatar)
|
|
|
this.draw();
|
|
|
}
|
|
|
});
|
|
|
} else {
|
|
|
this.imgAvatar = "../../static/avatar.jpg";
|
|
|
console.log(this.imgAvatar)
|
|
|
this.draw();
|
|
|
}
|
|
|
},
|
|
|
shareOpen() {
|
|
|
uni.showLoading({
|
|
|
title: '加载中'
|
|
|
});
|
|
|
var that = this;
|
|
|
this.$refs.shareCode.open();
|
|
|
this.getPoster();
|
|
|
},
|
|
|
draw: function() {
|
|
|
var that = this;
|
|
|
uni.request({
|
|
|
url: this.baseUrl + '/api/member/get-wxa-qrcode',
|
|
|
method: 'GET',
|
|
|
data: {
|
|
|
path: 'packages/packageBuy/pages/shopDetail/shopDetail',
|
|
|
scene: 'id=' + this.info.id + '&promotion_id=' + this.user_info.id
|
|
|
},
|
|
|
success: r => {
|
|
|
if (r.data.status === 1) {
|
|
|
uni.getImageInfo({
|
|
|
src: this.baseUrl + r.data.data, // 二维码
|
|
|
success: res => {
|
|
|
var ctx = uni.createCanvasContext('firstCanvas')
|
|
|
|
|
|
|
|
|
var w = SCREEN_WIDTH * 0.8;
|
|
|
var h = this.shareHeight * this.scare;
|
|
|
// ctx.fillStyle = '#fff';
|
|
|
// ctx.fillRect(0, 0, 214, 342);
|
|
|
console.log(1)
|
|
|
ctx.drawImage('../../static/bg_haibao@2x.jpg', 0, 0,
|
|
|
w, h
|
|
|
); //(SCREEN_HEIGHT - 50 - SCREEN_WIDTH * 0.8 * 1.65) /2, SCREEN_WIDTH * 0.8, SCREEN_WIDTH * 0.8 * 1.5);
|
|
|
|
|
|
ctx.drawImage('../../static/bg_haibao1.png', 20, 30 + 40,
|
|
|
w -
|
|
|
40, h - 100);
|
|
|
/* SCREEN_WIDTH *
|
|
|
0.15, (SCREEN_HEIGHT - SCREEN_WIDTH * 0.6 * 1.65) /
|
|
|
2, SCREEN_WIDTH * 0.695, SCREEN_WIDTH * 0.6 * 1.5); */
|
|
|
|
|
|
ctx.drawImage(this.poster, 20, 30 + 40,
|
|
|
w -
|
|
|
40, (h - 60 - 60) * 0.5);
|
|
|
/* SCREEN_WIDTH * 0.15, (SCREEN_HEIGHT - SCREEN_WIDTH *
|
|
|
0.6 * 1.65) /
|
|
|
2, SCREEN_WIDTH * 0.695, SCREEN_WIDTH * 0.695 / 1.6); */
|
|
|
|
|
|
ctx.font = "22rpx bold";
|
|
|
// 设置颜色
|
|
|
ctx.fillStyle = "#fff";
|
|
|
// 绘制文字(参数:要写的字,x坐标,y坐标)
|
|
|
ctx.fillText("优孕课堂福利专享", 20, 50);
|
|
|
|
|
|
ctx.font = "16rpx bold";
|
|
|
// 设置颜色
|
|
|
ctx.fillStyle = "#000";
|
|
|
// 绘制文字(参数:要写的字,x坐标,y坐标)
|
|
|
ctx.fillText("专享福利", 40, (h + 50) * 0.5 + 20);
|
|
|
|
|
|
ctx.font = "14rpx bold";
|
|
|
// 设置颜色
|
|
|
ctx.fillStyle = "#3377b7";
|
|
|
// 绘制文字(参数:要写的字,x坐标,y坐标)
|
|
|
|
|
|
let packagesFirst = this.info
|
|
|
ctx.fillText("¥" + packagesFirst.price + "" + packagesFirst
|
|
|
.name, 40, (h + 50) * 0.5 + 20 + 30);
|
|
|
|
|
|
|
|
|
let user_info = uni.getStorageSync("user_info_yunyubang");
|
|
|
|
|
|
let userProfile = uni.getStorageSync('user_profile');
|
|
|
|
|
|
var img = this.imgAvatar;
|
|
|
uni.getImageInfo({
|
|
|
src: userProfile.avatarUrl, // 头像
|
|
|
success: rlogo => {
|
|
|
img = rlogo.path;
|
|
|
|
|
|
}
|
|
|
});
|
|
|
that.circleImg(ctx,
|
|
|
img,
|
|
|
40, h - 60 - w * 0.15,
|
|
|
w * 0.15 / 2);
|
|
|
|
|
|
ctx.font = "12rpx normal";
|
|
|
// 设置颜色
|
|
|
ctx.fillStyle = "#000";
|
|
|
// 绘制文字(参数:要写的字,x坐标,y坐标)
|
|
|
if (!weixin.isNull(this.user_info.name))
|
|
|
ctx.fillText(this.user_info.name,
|
|
|
40, h - 40);
|
|
|
else
|
|
|
ctx.fillText("",
|
|
|
40, h - 40);
|
|
|
|
|
|
|
|
|
this.circleImg(ctx, res.path, w - 40 - w * 0.2, h - 40 -
|
|
|
w *
|
|
|
0.2, w * 0.2 / 2);
|
|
|
|
|
|
console.log(2)
|
|
|
ctx.draw(),
|
|
|
// r: 半径
|
|
|
setTimeout(() => {
|
|
|
uni.canvasToTempFilePath({
|
|
|
canvasId: 'firstCanvas',
|
|
|
fileType: 'jpg',
|
|
|
success: (res) => {
|
|
|
|
|
|
console.log(3)
|
|
|
this.shareBtnDisplay =
|
|
|
'flex'
|
|
|
uni.hideLoading();
|
|
|
this.img = this.info
|
|
|
.poster;
|
|
|
this.sharePath = res
|
|
|
.tempFilePath;
|
|
|
},
|
|
|
})
|
|
|
}, 100)
|
|
|
}
|
|
|
})
|
|
|
} else {
|
|
|
uni.hideLoading()
|
|
|
this.$refs.shareCode.close()
|
|
|
this.alert(r.data.msg)
|
|
|
}
|
|
|
}
|
|
|
})
|
|
|
|
|
|
},
|
|
|
circleImg: function(ctx, img, x, y, r) {
|
|
|
ctx.save()
|
|
|
var d = 2 * r;
|
|
|
var cx = x + r;
|
|
|
var cy = y + r;
|
|
|
ctx.arc(cx, cy, r, 0, 2 * Math.PI);
|
|
|
|
|
|
ctx.clip();
|
|
|
ctx.drawImage(img, x, y, d, d);
|
|
|
ctx.restore();
|
|
|
},
|
|
|
shareClose() {
|
|
|
this.$refs.shareCode.close()
|
|
|
},
|
|
|
open() {
|
|
|
this.$refs.popup.open('top')
|
|
|
|
|
|
},
|
|
|
close() {
|
|
|
this.$refs.popup.close()
|
|
|
},
|
|
|
//保存图片时,h5端不能直接保存,只能通过预览长按保存
|
|
|
save() {
|
|
|
|
|
|
let _this = this;
|
|
|
// #ifdef H5
|
|
|
uni.previewImage({
|
|
|
urls: [_this.sharePath]
|
|
|
})
|
|
|
// #endif
|
|
|
// #ifdef APP-PLUS||MP-WEIXIN
|
|
|
uni.saveImageToPhotosAlbum({
|
|
|
filePath: _this.sharePath,
|
|
|
success: function() {
|
|
|
_this.$refs.shareCode.close()
|
|
|
_this.alert('保存成功')
|
|
|
}
|
|
|
});
|
|
|
// #endif
|
|
|
},
|
|
|
|
|
|
getDate(type) {
|
|
|
const date = new Date();
|
|
|
let year = date.getFullYear();
|
|
|
let month = date.getMonth() + 1;
|
|
|
let day = date.getDate();
|
|
|
|
|
|
if (type === 'start') {
|
|
|
year = year - 60;
|
|
|
} else if (type === 'end') {
|
|
|
year = year + 2;
|
|
|
}
|
|
|
month = month > 9 ? month : '0' + month;
|
|
|
day = day > 9 ? day : '0' + day;
|
|
|
return `${year}-${month}-${day}`;
|
|
|
},
|
|
|
bindDateChange: function(e) {
|
|
|
this.form.due_date = e.target.value
|
|
|
},
|
|
|
toBuy() {
|
|
|
let user_info = weixin.getUserInfoCache();
|
|
|
if (weixin.isNull(this.form.member_name) || weixin.isNull(this.form.due_date) || weixin.isNull(this.form
|
|
|
.phone)) {
|
|
|
this.showPop = true;
|
|
|
|
|
|
|
|
|
if (weixin.isNull(this.form.member_name)) {
|
|
|
this.alert('请输入宝妈姓名')
|
|
|
return
|
|
|
}
|
|
|
if (weixin.isNull(this.form.due_date)) {
|
|
|
this.alert('请选择预产日期')
|
|
|
return
|
|
|
}
|
|
|
|
|
|
if (weixin.isNull(this.form.phone)) {
|
|
|
this.alert('请填写手机号')
|
|
|
return
|
|
|
}
|
|
|
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
this.toDoBuy();
|
|
|
|
|
|
},
|
|
|
toDoBuy: function() {
|
|
|
var that = this;
|
|
|
weixin.request({
|
|
|
api: '/api/member/order-add',
|
|
|
method: 'POST',
|
|
|
data: this.form,
|
|
|
utilSuccess: r => {
|
|
|
if (parseFloat(r.data.total) == 0) {
|
|
|
uni.navigateTo({
|
|
|
url: '../buyMemberSuccess/buyMemberSuccess?id=' +
|
|
|
this.form.product_id
|
|
|
})
|
|
|
|
|
|
} else {
|
|
|
weixin.request({
|
|
|
api: '/api/member/order-payment',
|
|
|
method: 'GET',
|
|
|
data: {
|
|
|
order_id: r.data.id,
|
|
|
openid: this.openid
|
|
|
},
|
|
|
utilSuccess: res => {
|
|
|
|
|
|
weixin.getOpenidInfo(() => {}, true);
|
|
|
setTimeout(function() {
|
|
|
uni.hideLoading();
|
|
|
that.showPop = false;
|
|
|
}, 100);
|
|
|
try {
|
|
|
let payParams = JSON.parse(res.jsApiParameters)
|
|
|
payParams.provider = 'wxpay'
|
|
|
payParams.success = result => {
|
|
|
uni.navigateTo({
|
|
|
url: '../buyMemberSuccess/buyMemberSuccess?id=' +
|
|
|
this.form.product_id
|
|
|
})
|
|
|
}
|
|
|
payParams.fail = result => {
|
|
|
console.log(result);
|
|
|
}
|
|
|
wx.requestPayment(payParams);
|
|
|
|
|
|
} catch (err) {
|
|
|
console.log(err)
|
|
|
} finally {
|
|
|
// finallyCode - 无论 try / catch 结果如何都会执行的代码块
|
|
|
}
|
|
|
},
|
|
|
utilFail: res => {
|
|
|
uni.showToast({
|
|
|
title: res
|
|
|
})
|
|
|
console.log(res);
|
|
|
}
|
|
|
})
|
|
|
}
|
|
|
},
|
|
|
utilFail: r => {
|
|
|
uni.showToast({
|
|
|
title: r
|
|
|
})
|
|
|
console.log(r);
|
|
|
}
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
gotoDetail: function(e) {
|
|
|
var id = e.currentTarget.dataset.id
|
|
|
uni.navigateTo({
|
|
|
url: "../shopDetail/shopDetail?id=" + id
|
|
|
})
|
|
|
},
|
|
|
loadInfo: function() {
|
|
|
weixin.request({
|
|
|
api: '/api/member/get-product/' + this.id,
|
|
|
method: 'GET',
|
|
|
utilSuccess: r => {
|
|
|
//r.data.poster = this.baseUrl + r.data.poster;
|
|
|
this.info = r.data;
|
|
|
this.info.poster = (weixin.isNull(this.info.poster) ? "../../static/750x500.jpg" :
|
|
|
this.info.poster_url)
|
|
|
},
|
|
|
utilFail: r => {
|
|
|
console.log(r);
|
|
|
}
|
|
|
})
|
|
|
},
|
|
|
loadPage: function() {
|
|
|
var that = this;
|
|
|
weixin.request({
|
|
|
bindThis: that,
|
|
|
api: '/api/member/get-products',
|
|
|
customLoading: false,
|
|
|
data: {
|
|
|
page: 1,
|
|
|
page_size: 3,
|
|
|
sort_name:'sortnumber',
|
|
|
sort_type:"ASC"
|
|
|
},
|
|
|
utilSuccess: function(r) {
|
|
|
var res = r.data.data;
|
|
|
|
|
|
for (var m of res) {
|
|
|
m.created_at = m.created_at.split("T")[0] + " " + m.created_at.split("T")[1]
|
|
|
.split(".")[0]
|
|
|
}
|
|
|
|
|
|
that.dataList = res;
|
|
|
},
|
|
|
utilFail: function(res) {
|
|
|
util.alert(res);
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
|
|
|
}
|
|
|
}
|
|
|
</script>
|
|
|
<style lang="scss" scoped>
|
|
|
.footer {
|
|
|
width: 100%;
|
|
|
height: 112rpx;
|
|
|
background: #FFFFFF;
|
|
|
box-shadow: 0px -1rpx 0px 0px #DEDEDE;
|
|
|
padding: 0 30rpx;
|
|
|
box-sizing: border-box;
|
|
|
display: flex;
|
|
|
justify-content: space-between;
|
|
|
align-items: center;
|
|
|
position: fixed;
|
|
|
bottom: 0;
|
|
|
left: 0;
|
|
|
|
|
|
.menuLink {
|
|
|
display: flex;
|
|
|
justify-content: flex-start;
|
|
|
align-items: center;
|
|
|
color: #333;
|
|
|
|
|
|
.menuCol {
|
|
|
margin: 0 30rpx;
|
|
|
font-size: 20rpx;
|
|
|
|
|
|
text {
|
|
|
display: block;
|
|
|
}
|
|
|
|
|
|
.iconfont {
|
|
|
font-size: 36rpx;
|
|
|
margin-bottom: 6rpx;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
.buyBtn {
|
|
|
width: 220rpx;
|
|
|
height: 72rpx;
|
|
|
background: linear-gradient(90deg, #FF7E95 0%, #FF447B 100%);
|
|
|
border-radius: 36rpx;
|
|
|
font-size: 28rpx;
|
|
|
font-weight: 500;
|
|
|
text-align: center;
|
|
|
line-height: 72rpx;
|
|
|
color: #fff;
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
.content {
|
|
|
display: flex;
|
|
|
flex-direction: column;
|
|
|
align-items: center;
|
|
|
justify-content: center;
|
|
|
background: #F6F6F6;
|
|
|
padding-bottom: 132rpx;
|
|
|
}
|
|
|
|
|
|
.detailTop {
|
|
|
width: 750rpx;
|
|
|
|
|
|
.banner {
|
|
|
display: block;
|
|
|
width: 100%;
|
|
|
height: 500rpx;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
.infoTop {
|
|
|
position: relative;
|
|
|
width: 100%;
|
|
|
height: 88rpx;
|
|
|
background: #FF97AA;
|
|
|
|
|
|
.price {
|
|
|
position: absolute;
|
|
|
left: 0;
|
|
|
bottom: 0;
|
|
|
width: 400rpx;
|
|
|
height: 124rpx;
|
|
|
border-radius: 0 40rpx 0 0;
|
|
|
color: #fff;
|
|
|
|
|
|
.priceBg {
|
|
|
display: block;
|
|
|
width: 100%;
|
|
|
height: 124rpx;
|
|
|
position: absolute;
|
|
|
top: 0;
|
|
|
left: 0;
|
|
|
z-index: 9;
|
|
|
}
|
|
|
|
|
|
.two-price {
|
|
|
display: inline-block;
|
|
|
margin-top: 22rpx;
|
|
|
margin-left: 20rpx;
|
|
|
font-size: 24rpx;
|
|
|
line-height: 56rpx;
|
|
|
position: relative;
|
|
|
z-index: 10;
|
|
|
|
|
|
.large {
|
|
|
font-size: 56rpx;
|
|
|
}
|
|
|
|
|
|
.del {
|
|
|
display: inline-block;
|
|
|
margin-left: 10rpx;
|
|
|
text-decoration: line-through;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
.surplus {
|
|
|
display: inline-block;
|
|
|
width: 102rpx;
|
|
|
height: 32rpx;
|
|
|
line-height: 32rpx;
|
|
|
background: rgba(51, 51, 51, 0.2);
|
|
|
border-radius: 16rpx;
|
|
|
font-size: 24rpx;
|
|
|
text-align: center;
|
|
|
margin-left: 20rpx;
|
|
|
position: relative;
|
|
|
z-index: 10;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
.times {
|
|
|
position: absolute;
|
|
|
top: 13rpx;
|
|
|
right: 30rpx;
|
|
|
display: flex;
|
|
|
align-items: center;
|
|
|
color: #fff;
|
|
|
font-size: 24rpx;
|
|
|
|
|
|
.djs {
|
|
|
padding-right: 10rpx;
|
|
|
}
|
|
|
|
|
|
.num {
|
|
|
display: inline-block;
|
|
|
margin-left: 8rpx;
|
|
|
margin-right: 8rpx;
|
|
|
padding: 5rpx;
|
|
|
background: #333333;
|
|
|
border-radius: 4rpx;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
.toptitle {
|
|
|
width: 100%;
|
|
|
background: #fff;
|
|
|
border-radius: 24rpx 24rpx 0;
|
|
|
margin-top: -20rpx;
|
|
|
padding: 30rpx;
|
|
|
box-sizing: border-box;
|
|
|
position: relative;
|
|
|
z-index: 20;
|
|
|
|
|
|
.h3 {
|
|
|
display: inline-block;
|
|
|
font-size: 36rpx;
|
|
|
font-weight: 500;
|
|
|
color: #333333;
|
|
|
}
|
|
|
|
|
|
.dataGroup {
|
|
|
position: absolute;
|
|
|
top: 30rpx;
|
|
|
right: 30rpx;
|
|
|
|
|
|
.dataCol {
|
|
|
display: inline-block;
|
|
|
margin-left: 20rpx;
|
|
|
|
|
|
image {
|
|
|
display: block;
|
|
|
width: 34rpx;
|
|
|
height: 34rpx;
|
|
|
margin: 0 auto;
|
|
|
}
|
|
|
|
|
|
.bot {
|
|
|
display: block;
|
|
|
font-size: 20rpx;
|
|
|
width: 60rpx;
|
|
|
text-align: center;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
.tags {
|
|
|
.txt {
|
|
|
padding: 8rpx;
|
|
|
background: rgba(255, 177, 62, 0.1);
|
|
|
border-radius: 4rpx;
|
|
|
font-size: 20rpx;
|
|
|
color: #FF7E4C;
|
|
|
display: inline-block;
|
|
|
margin-right: 10rpx;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
.normalPrice {
|
|
|
display: flex;
|
|
|
justify-content: space-between;
|
|
|
align-items: flex-end;
|
|
|
align-content: flex-end;
|
|
|
font-size: 24rpx;
|
|
|
color: #999;
|
|
|
|
|
|
.price {
|
|
|
flex: 1;
|
|
|
color: #FF578A;
|
|
|
|
|
|
.big {
|
|
|
font-size: 56rpx;
|
|
|
font-weight: 500;
|
|
|
margin-right: 10rpx;
|
|
|
}
|
|
|
|
|
|
.small {
|
|
|
color: #999;
|
|
|
text-decoration: line-through;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
.r_info {
|
|
|
flex: 1;
|
|
|
display: flex;
|
|
|
justify-content: flex-end;
|
|
|
align-items: center;
|
|
|
|
|
|
.leaveNum {
|
|
|
margin-left: 24rpx;
|
|
|
}
|
|
|
|
|
|
.shareMoney {
|
|
|
max-width: 136rpx;
|
|
|
height: 28rpx;
|
|
|
border: 2rpx solid #FF578A;
|
|
|
border-radius: 4rpx;
|
|
|
line-height: 28rpx;
|
|
|
font-size: 20rpx;
|
|
|
margin-right: 10rpx;
|
|
|
padding-right: 10rpx;
|
|
|
color: #FF578A;
|
|
|
display: flex;
|
|
|
flex-direction: flex-start;
|
|
|
|
|
|
text {
|
|
|
background: #FF578A;
|
|
|
color: #fff;
|
|
|
padding: 0 10rpx;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
.shareIntro {
|
|
|
display: flex;
|
|
|
border-top: 1rpx solid #DEE4E7;
|
|
|
justify-content: space-between;
|
|
|
align-items: center;
|
|
|
align-content: center;
|
|
|
font-size: 28rpx;
|
|
|
color: #666;
|
|
|
padding: 25rpx 0;
|
|
|
margin-top: 25rpx;
|
|
|
|
|
|
.title {
|
|
|
width: 90rpx;
|
|
|
padding: 0 8rpx;
|
|
|
height: 32rpx;
|
|
|
line-height: 32rpx;
|
|
|
background: #FF578A;
|
|
|
border-radius: 6rpx;
|
|
|
font-size: 20rpx;
|
|
|
color: #fff;
|
|
|
margin-right: 32rpx;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
.summary {
|
|
|
width: 100%;
|
|
|
margin-top: 15rpx;
|
|
|
background: #fff;
|
|
|
padding-bottom: 40rpx;
|
|
|
|
|
|
.tit {
|
|
|
line-height: 32rpx;
|
|
|
font-size: 32rpx;
|
|
|
font-weight: 500;
|
|
|
color: #333333;
|
|
|
margin-top: 35rpx;
|
|
|
margin-left: 30rpx;
|
|
|
}
|
|
|
|
|
|
.wrap {
|
|
|
margin-top: 40rpx;
|
|
|
width: 100%;
|
|
|
display: flex;
|
|
|
align-items: center;
|
|
|
justify-content: space-around;
|
|
|
|
|
|
.item {
|
|
|
width: 270rpx;
|
|
|
|
|
|
.iconfont {
|
|
|
text-align: center;
|
|
|
font-size: 34rpx;
|
|
|
color: #FF578A;
|
|
|
}
|
|
|
|
|
|
.grey-txt {
|
|
|
text-align: center;
|
|
|
font-size: 24rpx;
|
|
|
color: #999999;
|
|
|
margin: 10rpx auto;
|
|
|
}
|
|
|
|
|
|
.black-txt {
|
|
|
text-align: center;
|
|
|
font-size: 24rpx;
|
|
|
color: #333333;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
.shops {
|
|
|
background: #fff;
|
|
|
margin-top: 10rpx;
|
|
|
padding: 15rpx 30rpx;
|
|
|
box-sizing: border-box;
|
|
|
|
|
|
.shop {
|
|
|
box-sizing: border-box;
|
|
|
padding: 25rpx 0;
|
|
|
border-bottom: 1rpx solid #EAEAEA;
|
|
|
|
|
|
.pic {
|
|
|
width: 120rpx;
|
|
|
height: 120rpx;
|
|
|
display: inline-block;
|
|
|
}
|
|
|
|
|
|
.infos {
|
|
|
position: relative;
|
|
|
width: 540rpx;
|
|
|
margin-left: 24rpx;
|
|
|
display: inline-block;
|
|
|
vertical-align: top;
|
|
|
|
|
|
.name {
|
|
|
font-size: 32rpx;
|
|
|
font-weight: 500;
|
|
|
color: #333333;
|
|
|
line-height: 32rpx;
|
|
|
}
|
|
|
|
|
|
.starts {
|
|
|
margin: 20rpx 0;
|
|
|
height: 20rpx;
|
|
|
line-height: 20rpx;
|
|
|
|
|
|
.iconfont {
|
|
|
color: #FF578A;
|
|
|
font-size: 20rpx;
|
|
|
display: inline-block;
|
|
|
margin-right: 7rpx;
|
|
|
height: 100%;
|
|
|
line-height: 20rpx;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
.txt {
|
|
|
font-size: 24rpx;
|
|
|
color: #666666;
|
|
|
line-height: 24rpx;
|
|
|
}
|
|
|
|
|
|
.reply {
|
|
|
position: absolute;
|
|
|
top: 45rpx;
|
|
|
right: 0;
|
|
|
font-size: 24rpx;
|
|
|
color: #666666;
|
|
|
line-height: 24rpx;
|
|
|
|
|
|
.iconfont {
|
|
|
padding-left: 7rpx;
|
|
|
font-size: 24rpx;
|
|
|
color: #999;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
.date-txt {
|
|
|
font-size: 24rpx;
|
|
|
color: #666666;
|
|
|
line-height: 24rpx;
|
|
|
margin: 20rpx 0;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
.shop:last-child {
|
|
|
border-bottom: 0;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
.details {
|
|
|
margin-top: 10rpx;
|
|
|
padding: 0 30rpx 30rpx 30rpx;
|
|
|
background: #fff;
|
|
|
width: 100%;
|
|
|
box-sizing: border-box;
|
|
|
|
|
|
.tit {
|
|
|
font-size: 32rpx;
|
|
|
font-weight: 500;
|
|
|
color: #333333;
|
|
|
line-height: 32rpx;
|
|
|
margin-top: 30rpx;
|
|
|
}
|
|
|
|
|
|
.txts {
|
|
|
margin-top: 33rpx;
|
|
|
font-size: 28rpx;
|
|
|
|
|
|
.txt {
|
|
|
display: block;
|
|
|
font-size: 28rpx;
|
|
|
color: #333333;
|
|
|
line-height: 45rpx;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
image {
|
|
|
width: 100%;
|
|
|
margin-top: 30rpx;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
.introBox {
|
|
|
width: 710rpx;
|
|
|
margin: 20rpx auto 0 auto;
|
|
|
border-radius: 16rpx;
|
|
|
background: #fff;
|
|
|
padding: 0 35rpx;
|
|
|
box-sizing: border-box;
|
|
|
}
|
|
|
|
|
|
.intro_row {
|
|
|
display: flex;
|
|
|
justify-content: space-between;
|
|
|
width: 100%;
|
|
|
}
|
|
|
|
|
|
.row_col {
|
|
|
width: 310rpx;
|
|
|
border-radius: 8rpx;
|
|
|
padding-bottom: 20rpx;
|
|
|
|
|
|
.imgOuter {
|
|
|
width: 310rpx;
|
|
|
height: 230rpx;
|
|
|
position: relative;
|
|
|
|
|
|
image {
|
|
|
width: 310rpx;
|
|
|
height: 230rpx;
|
|
|
border-radius: 8rpx 8rpx 0 0;
|
|
|
}
|
|
|
|
|
|
.date {
|
|
|
background-color: rgba(0, 0, 0, 0.3);
|
|
|
font-size: 20rpx;
|
|
|
color: #fff;
|
|
|
line-height: 32rrpx;
|
|
|
padding: 0 8rpx;
|
|
|
border-radius: 5rpx;
|
|
|
position: absolute;
|
|
|
left: 20rpx;
|
|
|
bottom: 20rpx;
|
|
|
font-weight: 500;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
.title {
|
|
|
width: 100%;
|
|
|
font-size: 28rpx;
|
|
|
color: #333;
|
|
|
font-weight: 500;
|
|
|
overflow: hidden;
|
|
|
white-space: nowrap;
|
|
|
text-overflow: ellipsis;
|
|
|
padding-top: 20rpx;
|
|
|
}
|
|
|
|
|
|
.subTit {
|
|
|
width: 100%;
|
|
|
font-size: 22rpx;
|
|
|
color: #333;
|
|
|
font-weight: 400;
|
|
|
overflow: hidden;
|
|
|
white-space: nowrap;
|
|
|
text-overflow: ellipsis;
|
|
|
padding-top: 10rpx;
|
|
|
}
|
|
|
|
|
|
.price {
|
|
|
margin-top: 20rpx;
|
|
|
font-size: 22rpx;
|
|
|
color: #999;
|
|
|
|
|
|
text {
|
|
|
font-size: 32rpx;
|
|
|
font-weight: 400;
|
|
|
padding-right: 15rpx;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
</style>
|