You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
234 lines
8.3 KiB
234 lines
8.3 KiB
<!DOCTYPE html> |
|
<html lang="en"> |
|
<head> |
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> |
|
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0"> |
|
<title>黑马点评</title> |
|
<!-- 引入样式 --> |
|
<link rel="stylesheet" href="./css/element.css"> |
|
|
|
<link href="./css/shop-detail.css" rel="stylesheet"> |
|
<link href="./css/main.css" rel="stylesheet"> |
|
|
|
<style type="text/css"> |
|
|
|
</style> |
|
</head> |
|
<body> |
|
<div id="app"> |
|
<div class="header"> |
|
<div class="header-back-btn" @click="goBack"><i class="el-icon-arrow-left"></i></div> |
|
<div class="header-title"></div> |
|
<div class="header-share">...</div> |
|
</div> |
|
<div class="top-bar"></div> |
|
<div class="shop-info-box"> |
|
<div class="shop-title">{{shop.name}}</div> |
|
<div class="shop-rate"> |
|
<el-rate |
|
disabled v-model="shop.score/10" |
|
text-color="#F63" |
|
show-score |
|
></el-rate> |
|
<span>{{shop.comments}}条</span> |
|
</div> |
|
<div class="shop-rate-info"> 口味:4.9 环境:4.8 服务:4.7 </div> |
|
<div class="shop-rank"> |
|
<img src="/imgs/bd.png" width="63" height="20" alt=""> |
|
<span>拱墅区好评榜第3名</span> |
|
<div><i class="el-icon-arrow-right"></i></div> |
|
</div> |
|
<div class="shop-images"> |
|
<div v-for="(s,i) in shop.images" :key="i"> |
|
<img :src="s" alt=""> |
|
</div> |
|
</div> |
|
<div class="shop-address"> |
|
<div><i class="el-icon-map-location"></i></div> |
|
<span>{{shop.address}}</span> |
|
<div style="width: 10px; flex-grow: 2; text-align: center; color: #e1e2e3">|</div> |
|
<div style="margin: 0 5px"><img src="https://p0.meituan.net/travelcube/bf684aa196c870810655e45b1e52ce843484.png@24w_16h_40q" alt=""></div> |
|
<div><img src="https://p0.meituan.net/travelcube/9277ace32123e0c9f59dedf4407892221566.png@24w_24h_40q" alt=""></div> |
|
</div> |
|
</div> |
|
<div class="shop-divider"></div> |
|
<div class="shop-open-time"> |
|
<span><i class="el-icon-watch"></i></span> |
|
<div>营业时间</div> |
|
<div>{{shop.openHours}}</div> |
|
<span class="line-right">查看详情 <i class="el-icon-arrow-right"></i></span> |
|
</div> |
|
<div class="shop-divider"></div> |
|
<div class="shop-voucher"> |
|
<div> |
|
<span class="voucher-icon">券</span> |
|
<span style="font-weight: bold;">代金券</span> |
|
</div> |
|
<div class="voucher-box" v-for="v in vouchers" :key="v.id" v-if="!isEnd(v)"> |
|
<div class="voucher-circle"> |
|
<div class="voucher-b"></div> |
|
<div class="voucher-b"></div> |
|
<div class="voucher-b"></div> |
|
</div> |
|
<div class="voucher-left"> |
|
<div class="voucher-title">{{v.title}}</div> |
|
<div class="voucher-subtitle">{{v.subTitle}}</div> |
|
<div class="voucher-price"><div>¥ {{util.formatPrice(v.payValue)}}</div> <span>{{(v.payValue*10)/v.actualValue}}折</span></div> |
|
</div> |
|
<div class="voucher-right"> |
|
<div v-if="v.type" class="seckill-box"> |
|
<div class="voucher-btn" :class="{'disable-btn': isNotBegin(v) || v.stock < 1}" @click="seckill(v)">限时抢购</div> |
|
<div class="seckill-stock">剩余 <span>{{v.stock}}</span> 张</div> |
|
<div class="seckill-time">{{formatTime(v)}}</div> |
|
</div> |
|
<div class="voucher-btn" v-else>抢购</div> |
|
</div> |
|
</div> |
|
</div> |
|
<div class="shop-divider"></div> |
|
<div class="shop-comments"> |
|
<div class="comments-head"> |
|
<div>网友评价 <span>(119)</span></div> |
|
<div><i class="el-icon-arrow-right"></i></div> |
|
</div> |
|
<div class="comment-tags"> |
|
<div class="tag">味道赞(19)</div> |
|
<div class="tag">牛肉赞(16)</div> |
|
<div class="tag">菜品不错(11)</div> |
|
<div class="tag">回头客(4)</div> |
|
<div class="tag">分量足(4)</div> |
|
<div class="tag">停车方便(3)</div> |
|
<div class="tag">海鲜棒(3)</div> |
|
<div class="tag">饮品赞(3)</div> |
|
<div class="tag">朋友聚餐(6)</div> |
|
</div> |
|
<div class="comment-list"> |
|
<div class="comment-box" v-for="i in 3" :key="i"> |
|
<div class="comment-icon"> |
|
<img src="https://p0.meituan.net/userheadpicbackend/57e44d6eba01aad0d8d711788f30a126549507.jpg%4048w_48h_1e_1c_1l%7Cwatermark%3D0" alt=""> |
|
</div> |
|
<div class="comment-info"> |
|
<div class="comment-user">叶小乙 <span>Lv5</span></div> |
|
<div style="display: flex;"> |
|
打分 |
|
<el-rate disabled v-model="4.5" ></el-rate> |
|
</div> |
|
<div style="padding: 5px 0; font-size: 14px"> |
|
某平台上买的券,价格可以当工作餐吃,虽然价格便宜,但是这家店一点都没有... |
|
</div> |
|
<div class="comment-images"> |
|
<img src="https://qcloud.dpfile.com/pc/6T7MfXzx7USPIkSy7jzm40qZSmlHUF2jd-FZUL6WpjE9byagjLlrseWxnl1LcbuSGybIjx5eX6WNgCPvcASYAw.jpg" alt=""> |
|
<img src="https://qcloud.dpfile.com/pc/sZ5q-zgglv4VXEWU71xCFjnLM_jUHq-ylq0GKivtrz3JksWQ1f7oBWZsxm1DWgcaGybIjx5eX6WNgCPvcASYAw.jpg" alt=""> |
|
<img src="https://qcloud.dpfile.com/pc/xZy6W4NwuRFchlOi43DVLPFsx7KWWvPqifE1JTe_jreqdsBYA9CFkeSm2ZlF0OVmGybIjx5eX6WNgCPvcASYAw.jpg" alt=""> |
|
<img src="https://qcloud.dpfile.com/pc/xZy6W4NwuRFchlOi43DVLPFsx7KWWvPqifE1JTe_jreqdsBYA9CFkeSm2ZlF0OVmGybIjx5eX6WNgCPvcASYAw.jpg" alt=""> |
|
</div> |
|
<div> |
|
浏览641 评论5 |
|
</div> |
|
</div> |
|
</div> |
|
<div style="display: flex; justify-content: space-between;padding: 15px 0; border-top: 1px solid #f1f1f1; margin-top: 10px;"> |
|
<div>查看全部119条评价</div> |
|
<div><i class="el-icon-arrow-right"></i></div> |
|
</div> |
|
</div> |
|
</div> |
|
<div class="shop-divider"></div> |
|
<div class="copyright"> |
|
copyright ©2021 hmdp.com |
|
</div> |
|
</div> |
|
<script src="./js/vue.js"></script> |
|
<script src="./js/axios.min.js"></script> |
|
<!-- 引入组件库 --> |
|
<script src="./js/element.js"></script> |
|
<script src="./js/common.js"></script> |
|
<script> |
|
|
|
const app = new Vue({ |
|
el: "#app", |
|
data: { |
|
util, |
|
shop: {}, |
|
vouchers: [] |
|
}, |
|
created() { |
|
// 获取参数 |
|
let shopId = util.getUrlParam("id"); |
|
// 查询酒店信息 |
|
this.queryShopById(shopId); |
|
// 查询优惠券信息 |
|
this.queryVoucher(shopId); |
|
}, |
|
methods: { |
|
goBack() { |
|
history.back(); |
|
}, |
|
queryShopById(shopId) { |
|
axios.get("/shop/" + shopId) |
|
.then(({data}) => { |
|
data.images = data.images.split(",") |
|
this.shop = data |
|
}) |
|
.catch(this.$message.error) |
|
}, |
|
queryVoucher(shopId) { |
|
axios.get("/voucher/list/" + shopId) |
|
.then(({data}) => { |
|
this.vouchers = data; |
|
}) |
|
.catch(this.$message.error) |
|
}, |
|
formatTime(v){ |
|
let b = new Date(v.beginTime); |
|
let e = new Date(v.endTime); |
|
return b.getMonth() + 1 + "月" + b.getDate() + "日 " |
|
+ b.getHours() + ":" + this.formatMinutes(b.getMinutes()) |
|
+ " ~ "/* + e.getMonth() + 1 + "月" + e.getDate() + "日 " */ |
|
+ e.getHours() + ":" + this.formatMinutes(e.getMinutes()); |
|
}, |
|
formatMinutes(m){ |
|
if(m < 10) m = "0" + m |
|
return m; |
|
}, |
|
isNotBegin(v){ |
|
return new Date(v.beginTime).getTime() > new Date().getTime(); |
|
}, |
|
isEnd(v){ |
|
return new Date(v.endTime).getTime() < new Date().getTime(); |
|
}, |
|
seckill(v){ |
|
if(!token){ |
|
this.$message.error("请先登录") |
|
// 未登录,跳转 |
|
setTimeout(() => { |
|
location.href = "/login.html" |
|
}, 200); |
|
return; |
|
} |
|
if(this.isNotBegin(v)){ |
|
this.$message.error("优惠券抢购尚未开始!") |
|
return; |
|
} |
|
if(this.isEnd(v)){ |
|
this.$message.error("优惠券抢购已经结束!") |
|
return; |
|
} |
|
if(v.stock < 1){ |
|
this.$message.error("库存不足,请刷新再试试!") |
|
return; |
|
} |
|
let id = v.id; |
|
// 秒杀抢购 |
|
axios.post("/voucher-order/seckill/" + id) |
|
.then(({data}) => { |
|
// 抢购成功,这里输出订单id,支付功能TODO |
|
this.$message.success("抢购成功,订单id:" + data) |
|
}) |
|
.catch(this.$message.error) |
|
} |
|
} |
|
}) |
|
</script> |
|
</body> |
|
</html> |