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.
1404 lines
35 KiB
1404 lines
35 KiB
<template>
|
|
<!-- 首页 -->
|
|
<div class="index">
|
|
<div class="wrapper">
|
|
<!-- 分类 -->
|
|
<div class="category acea-row row-middle" @mouseleave="leave()">
|
|
<div class="sort">
|
|
<div
|
|
class="item acea-row row-between-wrapper"
|
|
:class="index === current ? 'bg-color' : ''"
|
|
v-for="(item, index) in categoryList"
|
|
:key="index"
|
|
@mouseenter="enter(item, index)"
|
|
>
|
|
<div class="name line1">{{ item.category_name }}</div>
|
|
<div class="iconfont icon-you"></div>
|
|
</div>
|
|
</div>
|
|
<div class="sortCon" v-if="seen">
|
|
<!--<div class="title">-->
|
|
<!--<span class="font-color">{{ categoryCurrent.cate_name }}</span>-->
|
|
<!--</div>-->
|
|
<div class="erSort acea-row row-top">
|
|
<div
|
|
@click="goCate(v, i)"
|
|
class="item acea-row row-middle"
|
|
v-for="(v, i) in categoryCurrent"
|
|
:key="i"
|
|
>
|
|
<div class="pictrue">
|
|
<img v-lazy="imgUrl + v.sku_image" v-if="v.sku_image" />
|
|
<img src="~assets/images/no_sort.jpg" alt v-else />
|
|
</div>
|
|
<div class="name line1">{{ v.sku_name }}</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<!--轮播分类-->
|
|
<div class="slider-banner banner">
|
|
<el-carousel trigger="click" height="380px">
|
|
<el-carousel-item
|
|
:setActiveItem="index"
|
|
v-for="(item, index) in swiperData"
|
|
:key="index"
|
|
>
|
|
<div class="bannerImg">
|
|
<img :src="imgUrl + item.adv_image" />
|
|
</div>
|
|
</el-carousel-item>
|
|
</el-carousel>
|
|
|
|
<!-- <client-only>
|
|
<div v-swiper:mySwiper="swiperOption">
|
|
<div class="swiper-wrapper">
|
|
<a
|
|
class="swiper-slide"
|
|
v-for="(item, index) in swiperData"
|
|
:key="index"
|
|
v-if="index < 10"
|
|
@click="jumpTap(item.url)"
|
|
>
|
|
<img :src="item.image" />
|
|
</a>
|
|
</div>
|
|
<div
|
|
class="swiper-pagination paginationBanner"
|
|
slot="pagination"
|
|
></div>
|
|
<div class="swiper-button-prev" slot="pagination"></div>
|
|
<div class="swiper-button-next" slot="pagination"></div>
|
|
</div>
|
|
</client-only>-->
|
|
</div>
|
|
<!-- 抽奖 -->
|
|
<div class="zbcx">
|
|
<div class="titleMgs">
|
|
<img src="~assets/images/msg.png" alt />
|
|
<span>消息</span>
|
|
</div>
|
|
<ul v-if="msglist.length">
|
|
<li @click="goDetails(topMsg.id)">
|
|
<p :style="{ color: 'var(--themeColor)' }">
|
|
<i>【置顶】 {{ topMsg.title }}</i>
|
|
</p>
|
|
</li>
|
|
<li
|
|
v-for="(item, index) in msglist"
|
|
:key="index"
|
|
@click="clickMore(item.id, false)"
|
|
>
|
|
<div style="overflow: hidden; white-space: nowrap; text-overflow: ellipsis">
|
|
{{ item.type_name }}【{{
|
|
$dayjs(item.create_time * 1000).format("MM-DD HH:mm")
|
|
}}】
|
|
</div>
|
|
</li>
|
|
<li class="more" @click="clickMore(undefined, true)" v-if="msglist.length > 2">
|
|
查看更多
|
|
<i class="el-icon-arrow-right"></i>
|
|
</li>
|
|
</ul>
|
|
<div class="cjlq">
|
|
<div @click="goLuckDraw">
|
|
<img src="~assets/images/cj.png" alt srcset />
|
|
<p>抽奖转盘</p>
|
|
</div>
|
|
<div @click="goCoupon">
|
|
<img src="~assets/images/lq.png" alt srcset />
|
|
<p>领券中心</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="qd" @click="clickQd">
|
|
<img src="~assets/images/qdbtm.png" alt />
|
|
</div>
|
|
</div>
|
|
|
|
<!--首发新品-->
|
|
<div class="newGoods wrapper_1200" v-loading="Goodsloading">
|
|
<div class="publicTitle acea-row row-between-wrapper">
|
|
<div class="title acea-row row-middle">
|
|
<ul>
|
|
<li
|
|
v-for="(item, index) in typeList"
|
|
:key="index"
|
|
@click="clickType(item.typeId)"
|
|
>
|
|
<span>{{ item.title }}</span>
|
|
<div class="bgc" v-if="typeI == item.typeId"></div>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
<!-- <nuxt-link
|
|
:to="{ path: '/goods_list', query: { type: 3 } }"
|
|
class="more acea-row row-center-wrapper"
|
|
>
|
|
更多<span class="iconfont icon-you"></span>
|
|
</nuxt-link>-->
|
|
</div>
|
|
<div v-if="newGoods.length">
|
|
<!-- newGoods -->
|
|
<div v-if="!(typeI == 5)" class="list acea-row row-middle">
|
|
<div
|
|
class="item"
|
|
v-for="(item, index) in newGoods"
|
|
:key="index"
|
|
@click="goDetail(item.goods_id)"
|
|
style="min-height: 400px"
|
|
>
|
|
<div class="pictrue">
|
|
<img
|
|
v-lazy="imgUrl + item.goods_image.split(',')[0]"
|
|
v-if="item.goods_image"
|
|
/>
|
|
<img src="~assets/images/no_goods.jpg" alt v-else />
|
|
<div class="newTag" v-show="typeI == '2'">新品</div>
|
|
</div>
|
|
<div style="padding: 0 15px">
|
|
<div class="name line1">{{ item.goods_name }}</div>
|
|
|
|
<div class="kc">
|
|
<span>库存:{{ item.goods_stock }}</span>
|
|
<span> 起订:{{ item.min_buy }} </span>
|
|
</div>
|
|
<div class="kc">
|
|
<span>产地:{{ item.address }}</span>
|
|
</div>
|
|
<div class="kc">
|
|
<span>生产企业:{{ item.business }} </span>
|
|
</div>
|
|
<div class="kc">
|
|
<span>执行标准:{{ item.execu_content.title }}</span>
|
|
</div>
|
|
|
|
<div class="jbq" @click.stop.prevent v-if="userInfo.show_price">
|
|
<el-input-number
|
|
v-if="item.goods_stock"
|
|
v-model="item.num"
|
|
size="mini"
|
|
@keyup.native="number_change($event)"
|
|
:min="0"
|
|
></el-input-number>
|
|
<div class="noStock" v-else>库存不足</div>
|
|
</div>
|
|
|
|
<div class="stock" v-if="userInfo.show_price">
|
|
<p>
|
|
<span>{{ showPrice(item) }}</span>
|
|
/{{ item.unit }}
|
|
</p>
|
|
|
|
<img
|
|
v-if="item.goods_stock"
|
|
@click.stop.prevent="addCart(item)"
|
|
src="~assets/images/card.png"
|
|
alt
|
|
/>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div v-if="typeI == 5" class="list acea-row row-middle">
|
|
<div
|
|
class="item"
|
|
v-for="(item, index) in newGoods"
|
|
:key="index"
|
|
@click="goPackageDetails(item.bl_id)"
|
|
style="height: 350px"
|
|
>
|
|
<div class="pictrue">
|
|
<img v-lazy="imgUrl + item.image" v-if="item.image" />
|
|
<img src="~assets/images/no_goods.jpg" alt v-else />
|
|
</div>
|
|
<div style="padding: 0 15px">
|
|
<div class="name line1">{{ item.bl_name }}</div>
|
|
<!-- <div class="package">
|
|
<span>规格:20g+12g+40g+56g</span>
|
|
</div> -->
|
|
<div class="kc">
|
|
<div v-if="item.shipping_fee_type == 0">运费:自费</div>
|
|
<div v-if="item.shipping_fee_type == 1">运费:包邮</div>
|
|
<!-- <span>
|
|
起订:{{ item.min_buy }}
|
|
{{item.unit}}
|
|
</span> -->
|
|
</div>
|
|
<!-- <div class="jbq" @click.stop.prevent>
|
|
<el-input-number
|
|
v-model="item.num"
|
|
size="mini"
|
|
@keyup.native="number_change($event)"
|
|
:min="item.min_buy"
|
|
></el-input-number>
|
|
</div> -->
|
|
|
|
<div class="stock" v-if="userInfo.show_price">
|
|
<p>
|
|
<span>¥{{ item.bl_price }}</span>
|
|
<!-- /{{ item.unit }} -->
|
|
</p>
|
|
<div class="originalPrice">原价¥{{ item.goods_money }}</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="nothing" v-if="!newGoods.length">
|
|
<img src="@/assets/images/noGoods.png" />
|
|
暂无商品,去看点别的吧
|
|
</div>
|
|
</div>
|
|
|
|
<!-- 分页 -->
|
|
<Page
|
|
@currentChange="currentChange"
|
|
:total="total"
|
|
:currentPage="pagequery.page"
|
|
:pageSize="pagequery.limit"
|
|
v-if="newGoods.length"
|
|
></Page>
|
|
<!-- 签到 -->
|
|
|
|
<Sign
|
|
:signVisible.sync="signVisible"
|
|
v-if="signVisible"
|
|
:Signloading.sync="Signloading"
|
|
></Sign>
|
|
<!-- 下拉加载更多 -->
|
|
<!-- <div
|
|
class="loadingicon acea-row row-center-wrapper"
|
|
v-if="classifyList.length && classifyList.length >= limit"
|
|
>
|
|
<span class="loading iconfont icon-jiazai" v-if="!pullRefreshss"></span
|
|
>{{ title }}
|
|
</div>-->
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
import Setting from "~/setting";
|
|
import Sign from "@/components/sign.vue";
|
|
import countDown from "@/components/countDown";
|
|
export default {
|
|
name: "index",
|
|
auth: false,
|
|
components: {
|
|
countDown,
|
|
Sign,
|
|
},
|
|
data() {
|
|
return {
|
|
imgUrl: Setting.uplodBaseURL,
|
|
signVisible: false,
|
|
Signloading: false,
|
|
isSignin: localStorage.getItem("token") ? true : false,
|
|
userInfo: {},
|
|
isSign: false,
|
|
Goodsloading: false,
|
|
num: 0,
|
|
typeI: 1,
|
|
pagequery: { page: 1, limit: 8 },
|
|
total: 0,
|
|
|
|
typeList: [
|
|
{ title: "为你推荐", typeId: 1 },
|
|
{ title: "新品首发", typeId: 2 },
|
|
{ title: "套餐组合", typeId: 5 },
|
|
],
|
|
seen: false,
|
|
current: -1,
|
|
swiperData: [],
|
|
categoryList: [],
|
|
categoryCurrent: [],
|
|
datatime: 0,
|
|
dataStatus: 0,
|
|
currentTime: "00:00",
|
|
seckillList: [],
|
|
boutiqueOne: {},
|
|
boutiqueTwo: [],
|
|
newGoods: [],
|
|
classifyList: [], //初始数据代码
|
|
pullRefreshss: true,
|
|
page: 1, //代表页面的初始页数
|
|
limit: 8,
|
|
scollY: null, // 离底部距离有多少
|
|
pageTotal: 0, //总页数
|
|
title: "下拉加载更多",
|
|
swiperOption: {
|
|
pagination: {
|
|
el: ".paginationBanner",
|
|
clickable: true,
|
|
},
|
|
navigation: {
|
|
nextEl: ".swiper-button-next",
|
|
prevEl: ".swiper-button-prev",
|
|
},
|
|
autoplay: {
|
|
disableOnInteraction: false,
|
|
delay: 5000,
|
|
},
|
|
loop: true,
|
|
speed: 1000,
|
|
observer: true,
|
|
observeParents: true,
|
|
},
|
|
swiperScroll: {
|
|
navigation: {
|
|
nextEl: ".swiper-button-next",
|
|
prevEl: ".swiper-button-prev",
|
|
},
|
|
freeMode: true,
|
|
freeModeMomentum: false,
|
|
slidesPerView: "auto",
|
|
observer: true,
|
|
observeParents: true,
|
|
},
|
|
typeI: 0,
|
|
//消息
|
|
msglist: [],
|
|
// 置顶消息
|
|
topMsg: [],
|
|
};
|
|
},
|
|
async asyncData({ app }) {
|
|
let [bannerMsg, commodityMsg, commodityTree] = await Promise.all([
|
|
app.$axios.post("/adv/advhomepcbannerlist"), //轮播图
|
|
app.$axios.post("/goodssku/pagecomponents", {
|
|
page: 1,
|
|
page_size: 8,
|
|
cate_name: 1,
|
|
province_name: "成都",
|
|
}), //为你推荐
|
|
app.$axios.post("/goodscategory/tree"), //商品分类
|
|
// app.$axios.post("/notice/page"), //公告
|
|
]);
|
|
commodityMsg.data.list.forEach((item) => {
|
|
item["num"] = 0;
|
|
});
|
|
console.log(bannerMsg);
|
|
return {
|
|
swiperData: bannerMsg.data.data,
|
|
newGoods: [],
|
|
total: [],
|
|
newGoods: commodityMsg.data.list,
|
|
total: commodityMsg.data.count,
|
|
categoryList: commodityTree.data,
|
|
};
|
|
},
|
|
watch: {
|
|
"$store.state.typeI"(newVal, oldVal) {
|
|
this.typeI = newVal;
|
|
//对数据执行操作
|
|
// console.log(newVal, oldVal, "--");
|
|
},
|
|
},
|
|
fetch({ store }) {
|
|
store.commit("isHeader", true);
|
|
store.commit("isFooter", true);
|
|
},
|
|
head() {
|
|
return {
|
|
title: "首页-" + this.$store.state.titleCon,
|
|
};
|
|
},
|
|
created() {
|
|
this.getNoticeList();
|
|
// this.getCopyright();
|
|
this.getIsSign();
|
|
this.getTopMsg();
|
|
// 已登录
|
|
if (this.isSignin) {
|
|
this.userInfo = JSON.parse(localStorage.getItem("userInfo"));
|
|
}
|
|
},
|
|
mounted() {},
|
|
beforeDestroy() {
|
|
window.onscroll = null;
|
|
},
|
|
methods: {
|
|
getCopyright() {
|
|
this.msglist = [];
|
|
this.$axios.post("/config/copyright").then((res) => {
|
|
console.log(res, "copyright");
|
|
});
|
|
},
|
|
getNoticeList() {
|
|
this.msglist = [];
|
|
this.$axios.post("/notice/typelists").then((res) => {
|
|
this.msglist = res.data;
|
|
});
|
|
},
|
|
getTopMsg() {
|
|
this.$axios.post(`/notice/lists`).then((res) => {
|
|
this.topMsg = res.data[0];
|
|
});
|
|
},
|
|
// 是否已签到
|
|
getIsSign() {
|
|
this.$axios
|
|
.post(`/membersignin/issign`)
|
|
.then((res) => {
|
|
// true 已签到 false 未签到
|
|
this.isSign = res.data ? true : false;
|
|
})
|
|
.catch((err) => {});
|
|
},
|
|
// 点击签到
|
|
clickQd() {
|
|
// 未签到 点击签到
|
|
if (!this.isSign) {
|
|
this.$axios
|
|
.post(`/membersignin/signin`)
|
|
.then((res) => {
|
|
this.$message.success("签到成功");
|
|
|
|
this.signVisible = true;
|
|
})
|
|
.catch((err) => {
|
|
this.$message.error(err);
|
|
});
|
|
}
|
|
// 已签到
|
|
else {
|
|
this.signVisible = true;
|
|
}
|
|
},
|
|
number_change(e) {
|
|
e.target.value = e.target.value.replace(/[^0-9]/g, "");
|
|
},
|
|
addCart(row) {
|
|
if (row.num < row.min_buy) {
|
|
this.$message({
|
|
message: "最少不低于起订数量",
|
|
type: "warning",
|
|
});
|
|
} else if (row.num == 0) {
|
|
this.$message({
|
|
message: "至少添加一件商品",
|
|
type: "warning",
|
|
});
|
|
} else {
|
|
let { num, sku_id } = { ...row };
|
|
let obj = { num, sku_id };
|
|
this.$axios
|
|
.post(`/cart/add`, obj)
|
|
.then((res) => {
|
|
this.$message({
|
|
message: "成功添加购物车",
|
|
type: "success",
|
|
offset: 100,
|
|
});
|
|
})
|
|
.catch((err) => {
|
|
this.$message.error(err);
|
|
});
|
|
}
|
|
},
|
|
|
|
clickType(i) {
|
|
if (this.typeI != i) {
|
|
this.pagequery.page = 1;
|
|
}
|
|
this.typeI = i;
|
|
this.$store.commit("typeIndex", i);
|
|
this.newGoods = [];
|
|
this.Goodsloading = true;
|
|
this.$axios
|
|
.post(`/goodssku/pagecomponents`, {
|
|
page: this.pagequery.page,
|
|
page_size: this.pagequery.limit,
|
|
cate_name: !i ? 1 : i,
|
|
province_name: "成都",
|
|
})
|
|
.then((res) => {
|
|
res.data.list.forEach((item) => {
|
|
item["num"] = 0;
|
|
});
|
|
this.newGoods = res.data.list;
|
|
this.total = res.data.count;
|
|
this.Goodsloading = false;
|
|
console.log(this.newGoods);
|
|
})
|
|
.catch((err) => {
|
|
this.$message.error(err);
|
|
this.Goodsloading = false;
|
|
});
|
|
},
|
|
// 分页
|
|
currentChange(e) {
|
|
this.pagequery.page = e;
|
|
this.clickType(this.typeI);
|
|
},
|
|
jumpTap(url) {
|
|
url = url === undefined ? "" : url;
|
|
if (url.indexOf("http") != -1) {
|
|
location.href = url;
|
|
} else {
|
|
this.$router.push({ path: url });
|
|
}
|
|
},
|
|
|
|
goCate() {
|
|
this.$router.push({
|
|
path: "/goods_cate",
|
|
query: {
|
|
current: this.current,
|
|
},
|
|
});
|
|
},
|
|
|
|
// 移入商品分类列表时显示分类下商品
|
|
enter(item, index) {
|
|
this.seen = true;
|
|
this.current = index;
|
|
let { category_id } = { ...item };
|
|
let obj = {
|
|
category_id,
|
|
page: this.page,
|
|
page_size: this.limit,
|
|
};
|
|
this.$axios
|
|
.post(`/goodssku/page`, obj)
|
|
.then((res) => {
|
|
this.categoryCurrent = res.data.list;
|
|
})
|
|
.catch((err) => {
|
|
this.$message.error(err);
|
|
});
|
|
},
|
|
leave() {
|
|
this.seen = false;
|
|
this.current = -1;
|
|
},
|
|
getClassifyList() {
|
|
let _this = this,
|
|
currentPage = { page: this.page, limit: this.limit };
|
|
_this.$axios
|
|
.get("/pc/get_category_product", {
|
|
params: currentPage,
|
|
})
|
|
.then(function (res) {
|
|
_this.pageTotal = res.data.count;
|
|
// 请求完成后,把得到的数据拼接到当前dom里面
|
|
_this.classifyList = _this.classifyList.concat(res.data.list);
|
|
})
|
|
.catch(function (err) {
|
|
_this.$message.error(err);
|
|
});
|
|
},
|
|
// 下拉加载ajax
|
|
pullRefresh: function () {
|
|
let _this = this;
|
|
window.onscroll = function () {
|
|
_this.scrollChange();
|
|
};
|
|
},
|
|
scrollChange: function () {
|
|
var _this = this;
|
|
this.scollY =
|
|
this.comsys.getScrollTop() +
|
|
this.comsys.getWindowHeight() -
|
|
this.comsys.getScrollHeight();
|
|
// 把下拉刷新置为false,防止多次请求
|
|
if (this.scollY >= -50) {
|
|
if (this.page > Math.ceil(this.pageTotal / this.limit)) {
|
|
this.title = "已没有更多数据";
|
|
this.pullRefreshss = true;
|
|
return false;
|
|
}
|
|
if (!this.pullRefreshss) {
|
|
return false;
|
|
}
|
|
_this.pullRefreshss = false;
|
|
this.title = "正在加载中....";
|
|
// 加页码数
|
|
this.page++;
|
|
_this.getClassifyList();
|
|
} else {
|
|
// 其他时候把下拉刷新置为true
|
|
_this.pullRefreshss = true;
|
|
this.title = "下拉加载更多";
|
|
}
|
|
},
|
|
goDetail: function (id) {
|
|
this.$router.push({ path: `/goods_detail/${id}` });
|
|
},
|
|
goPackageDetails(id) {
|
|
this.$router.push({
|
|
path: `/packageDetails`,
|
|
query: {
|
|
id,
|
|
isSeckill: false,
|
|
isCollage: false,
|
|
isSetMeal: true,
|
|
},
|
|
});
|
|
},
|
|
goSeckillDetail: function (id, productId, time, status) {
|
|
this.$router.push({
|
|
path: "/goods_seckill_detail",
|
|
query: { id: id, productId: productId, time: time, status: status },
|
|
});
|
|
},
|
|
goDetails(id) {
|
|
this.$router.push({
|
|
path: "/message_details",
|
|
query: { id },
|
|
});
|
|
},
|
|
clickMore(id, isMore) {
|
|
console.log(id, isMore);
|
|
// 查看更多公告类型
|
|
if (isMore) {
|
|
this.$router.push({
|
|
path: "/noticeType",
|
|
});
|
|
}
|
|
// 查询公告类型
|
|
else {
|
|
this.$router.push({
|
|
path: "/message",
|
|
query: {
|
|
id,
|
|
},
|
|
});
|
|
}
|
|
},
|
|
|
|
goLuckDraw() {
|
|
this.$router.push({
|
|
path: "/luck_draw",
|
|
});
|
|
},
|
|
goCoupon() {
|
|
this.$router.push({
|
|
path: "/coupon",
|
|
});
|
|
},
|
|
showPrice(data) {
|
|
let price = data.price;
|
|
if (data.discount_price && parseFloat(data.discount_price) < parseFloat(price))
|
|
price = data.discount_price;
|
|
if (data.member_price && parseFloat(data.member_price) < parseFloat(price))
|
|
price = data.member_price;
|
|
return price;
|
|
},
|
|
},
|
|
};
|
|
</script>
|
|
|
|
<style scoped lang="scss">
|
|
.index {
|
|
.publicTitle {
|
|
margin-top: 60px;
|
|
ul {
|
|
display: flex;
|
|
align-items: center;
|
|
li {
|
|
margin-right: 70px;
|
|
position: relative;
|
|
cursor: pointer;
|
|
span {
|
|
font-size: 22px;
|
|
font-family: PingFangSC-Medium, PingFang SC;
|
|
font-weight: 500;
|
|
color: #333333;
|
|
line-height: 40px;
|
|
}
|
|
.bgc {
|
|
position: absolute;
|
|
bottom: 2px;
|
|
right: -3px;
|
|
z-index: -1;
|
|
width: 100px;
|
|
height: 12px;
|
|
background: linear-gradient(90deg, rgba(0, 224, 253, 0) 0%, #91e5ff 100%);
|
|
}
|
|
}
|
|
}
|
|
|
|
.more {
|
|
width: 58px;
|
|
height: 24px;
|
|
border: 1px solid #c6c6c6;
|
|
color: #818181;
|
|
font-size: 12px;
|
|
cursor: pointer;
|
|
.iconfont {
|
|
font-size: 10px;
|
|
}
|
|
}
|
|
}
|
|
.wrapper {
|
|
width: 1200px;
|
|
display: flex;
|
|
|
|
height: 380px;
|
|
margin: 0 auto;
|
|
position: relative;
|
|
.qd {
|
|
width: 60px;
|
|
height: 60px;
|
|
background: #00c594;
|
|
border: 1px solid rgba(255, 255, 255, 0.54);
|
|
border-radius: 100%;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
position: absolute;
|
|
bottom: -30px;
|
|
right: 380px;
|
|
z-index: 999;
|
|
img {
|
|
width: 30px;
|
|
height: 30px;
|
|
}
|
|
}
|
|
cursor: pointer;
|
|
.banner {
|
|
width: 800px;
|
|
height: 100%;
|
|
.bannerImg {
|
|
width: 100%;
|
|
img {
|
|
width: 100%;
|
|
height: 380px;
|
|
}
|
|
}
|
|
img {
|
|
width: 100%;
|
|
height: 100%;
|
|
}
|
|
}
|
|
|
|
.category {
|
|
z-index: 9;
|
|
height: 380px;
|
|
// position: absolute;
|
|
// top: 0;
|
|
// left: 50%;
|
|
// height: 100%;
|
|
// transform: translateX(-50%);
|
|
}
|
|
.sort {
|
|
width: 230px;
|
|
height: 100%;
|
|
overflow-y: scroll;
|
|
// background-color: rgba(0, 0, 0, 0.4);
|
|
background-color: #fff;
|
|
|
|
padding: 14px 0;
|
|
.item {
|
|
height: 39px;
|
|
padding: 0 21px;
|
|
.name {
|
|
width: 150px;
|
|
font-size: 16px;
|
|
font-family: PingFangSC-Medium, PingFang SC;
|
|
font-weight: 500;
|
|
color: #222222;
|
|
}
|
|
.iconfont {
|
|
font-size: 10px;
|
|
color: #999;
|
|
}
|
|
}
|
|
}
|
|
::-webkit-scrollbar {
|
|
width: 5px;
|
|
height: 5px;
|
|
}
|
|
::-webkit-scrollbar-thumb {
|
|
border-radius: 10px;
|
|
background-color: var(--themeColor);
|
|
}
|
|
::-webkit-scrollbar-track {
|
|
background-color: #ffffff;
|
|
}
|
|
.sortCon {
|
|
position: absolute;
|
|
left: 230px;
|
|
|
|
width: 710px;
|
|
height: 100%;
|
|
background-color: #fff;
|
|
box-shadow: 5px 1px 10px rgba(0, 0, 0, 0.2);
|
|
border: 1px solid #f2f2f2;
|
|
border-left: 0;
|
|
border-right: 0;
|
|
padding: 0 5px 20px 29px;
|
|
.title {
|
|
padding-bottom: 8px;
|
|
border-bottom: 1px solid #f1f1f1;
|
|
.font-color {
|
|
padding-bottom: 8px;
|
|
font-size: 16px;
|
|
border-bottom: 2px solid #e93323;
|
|
}
|
|
}
|
|
.erSort {
|
|
overflow-x: hidden;
|
|
overflow-y: auto;
|
|
max-height: 400px;
|
|
.item {
|
|
margin-top: 30px;
|
|
width: 25%;
|
|
|
|
&:hover {
|
|
.name {
|
|
color: #e93323;
|
|
}
|
|
}
|
|
.name {
|
|
color: #282828;
|
|
margin-left: 14px;
|
|
width: 82px;
|
|
}
|
|
.pictrue {
|
|
width: 50px;
|
|
height: 50px;
|
|
img {
|
|
width: 100%;
|
|
height: 100%;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
.zbcx {
|
|
width: 260px;
|
|
min-height: 250px;
|
|
background: #ffffff;
|
|
border-radius: 5px;
|
|
margin-left: 30px;
|
|
margin-top: 10px;
|
|
padding: 5px 10px;
|
|
box-shadow: 0px 0px 10px 0px rgba(102, 102, 102, 0.2);
|
|
.titleMgs {
|
|
display: flex;
|
|
align-items: center;
|
|
margin-bottom: 20px;
|
|
img {
|
|
width: 15px;
|
|
height: 18px;
|
|
margin-right: 6px;
|
|
}
|
|
span {
|
|
font-size: 16px;
|
|
font-family: PingFangSC-Medium, PingFang SC;
|
|
font-weight: 500;
|
|
color: #222222;
|
|
line-height: 22px;
|
|
}
|
|
}
|
|
ul {
|
|
.notice {
|
|
width: 1200px;
|
|
height: 100%;
|
|
left: 50%;
|
|
transform: translate(-50%);
|
|
position: absolute;
|
|
z-index: 2;
|
|
padding: 0;
|
|
}
|
|
.notice /deep/ .el-card__body {
|
|
padding: 0;
|
|
}
|
|
/*使文字和公告图片在一行*/
|
|
.notice_item {
|
|
background-color: #fff;
|
|
display: flex;
|
|
flex-direction: row;
|
|
align-items: center;
|
|
}
|
|
.notice_item img {
|
|
width: 40px;
|
|
}
|
|
|
|
li {
|
|
font-size: 14px;
|
|
font-family: PingFangSC-Regular, PingFang SC;
|
|
font-weight: 400;
|
|
color: #666666;
|
|
line-height: 20px;
|
|
margin-bottom: 10px;
|
|
cursor: pointer;
|
|
}
|
|
.more {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
font-size: 14px;
|
|
margin: 10px 0 5px;
|
|
font-family: PingFangSC-Regular, PingFang SC;
|
|
font-weight: 400;
|
|
color: #666666;
|
|
line-height: 20px;
|
|
cursor: pointer;
|
|
.el-icon-arrow-right {
|
|
font-size: 16px;
|
|
}
|
|
}
|
|
}
|
|
.cjlq {
|
|
border-top: 1px solid #efefef;
|
|
margin-top: 2px;
|
|
margin-bottom: 10px;
|
|
padding-top: 17px;
|
|
display: flex;
|
|
justify-content: space-between;
|
|
div {
|
|
cursor: pointer;
|
|
}
|
|
img {
|
|
width: 88px;
|
|
height: 88px;
|
|
}
|
|
p {
|
|
font-size: 16px;
|
|
font-family: PingFangSC-Medium, PingFang SC;
|
|
font-weight: 500;
|
|
color: #222222;
|
|
line-height: 22px;
|
|
text-align: center;
|
|
margin-top: 15px;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
.seckill {
|
|
margin-top: 30px;
|
|
.header {
|
|
background: url("../assets/images/skillBg.jpg") no-repeat;
|
|
background-size: 100% 100%;
|
|
width: 208px;
|
|
height: 266px;
|
|
color: #fff;
|
|
text-align: center;
|
|
padding: 44px 0;
|
|
font-size: 16px;
|
|
.title {
|
|
font-size: 28px;
|
|
font-weight: bold;
|
|
}
|
|
.timeCurrent {
|
|
margin-top: 20px;
|
|
span {
|
|
font-weight: bold;
|
|
}
|
|
}
|
|
.lines {
|
|
width: 17px;
|
|
height: 2px;
|
|
background: #ffffff;
|
|
margin: 10px auto 0 auto;
|
|
}
|
|
.tip {
|
|
margin-top: 10px;
|
|
}
|
|
.time {
|
|
margin-top: 20px;
|
|
}
|
|
}
|
|
.seckillList {
|
|
width: 992px;
|
|
height: 266px;
|
|
background-color: #fff;
|
|
position: relative;
|
|
.item {
|
|
cursor: pointer;
|
|
display: inline-block;
|
|
width: 248px;
|
|
min-height: 345px;
|
|
position: relative;
|
|
padding: 21px 0;
|
|
.picTxt {
|
|
width: 164px;
|
|
margin: 0 auto;
|
|
}
|
|
& ~ .item:before {
|
|
content: " ";
|
|
position: absolute;
|
|
width: 1px;
|
|
height: 98px;
|
|
background-color: #f4f4f4;
|
|
top: 50%;
|
|
margin-top: -49px;
|
|
}
|
|
.pictrue {
|
|
width: 164px;
|
|
height: 164px;
|
|
margin: 0 auto;
|
|
img {
|
|
width: 100%;
|
|
height: 100%;
|
|
}
|
|
}
|
|
.name {
|
|
color: #282828;
|
|
text-align: center;
|
|
width: 164px;
|
|
margin: 10px auto 0 auto;
|
|
}
|
|
.money {
|
|
text-align: center;
|
|
width: 164px;
|
|
margin: 12px auto 0 auto;
|
|
.font-color {
|
|
font-weight: bold;
|
|
font-size: 16px;
|
|
}
|
|
.y_money {
|
|
color: #a3a3a3;
|
|
text-decoration: line-through;
|
|
margin-left: 6px;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
.boutique {
|
|
.list {
|
|
margin-top: 14px;
|
|
.oneItem {
|
|
padding: 28px;
|
|
width: 586px;
|
|
height: 250px;
|
|
background: url("../assets/images/boutique1.jpg") no-repeat;
|
|
background-size: 100% 100%;
|
|
cursor: pointer;
|
|
&:hover {
|
|
box-shadow: 0 3px 20px rgba(0, 0, 0, 0.06);
|
|
}
|
|
.text {
|
|
width: 310px;
|
|
.name {
|
|
font-size: 18px;
|
|
color: #282828;
|
|
}
|
|
.info {
|
|
font-size: 16px;
|
|
color: #a3a3a3;
|
|
margin-top: 8px;
|
|
}
|
|
.money {
|
|
margin-top: 26px;
|
|
.font-color {
|
|
font-size: 20px;
|
|
font-weight: bold;
|
|
}
|
|
.y_money {
|
|
color: #a3a3a3;
|
|
margin-left: 12px;
|
|
text-decoration: line-through;
|
|
}
|
|
}
|
|
}
|
|
.pictrue {
|
|
width: 194px;
|
|
height: 194px;
|
|
img {
|
|
width: 100%;
|
|
height: 100%;
|
|
}
|
|
}
|
|
}
|
|
.item {
|
|
width: 287px;
|
|
height: 250px;
|
|
background: url("../assets/images/boutique2.jpg") no-repeat;
|
|
background-size: 100% 100%;
|
|
padding: 28px;
|
|
position: relative;
|
|
margin-left: 20px;
|
|
cursor: pointer;
|
|
&:hover {
|
|
box-shadow: 0 3px 20px rgba(0, 0, 0, 0.06);
|
|
}
|
|
|
|
.name {
|
|
font-size: 18px;
|
|
}
|
|
.font-color {
|
|
font-size: 20px;
|
|
font-weight: bold;
|
|
margin-top: 12px;
|
|
}
|
|
.y_money {
|
|
color: #a3a3a3;
|
|
text-decoration: line-through;
|
|
margin-top: 4px;
|
|
}
|
|
.pictrue {
|
|
width: 130px;
|
|
height: 130px;
|
|
position: absolute;
|
|
right: 28px;
|
|
bottom: 28px;
|
|
img {
|
|
width: 100%;
|
|
height: 100%;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
.newGoods {
|
|
.list {
|
|
margin-top: -10px;
|
|
.item {
|
|
width: 260px;
|
|
background-color: #fff;
|
|
cursor: pointer;
|
|
margin: 40px 53px 0px 0;
|
|
box-shadow: 0px 0px 10px 0px rgba(102, 102, 102, 0.2);
|
|
border-radius: 8px;
|
|
overflow: hidden;
|
|
box-sizing: border-box;
|
|
&:hover {
|
|
box-shadow: 0 3px 20px rgba(0, 0, 0, 0.06);
|
|
}
|
|
|
|
.pictrue {
|
|
width: 100%;
|
|
height: 202px;
|
|
position: relative;
|
|
img {
|
|
width: 100%;
|
|
height: 100%;
|
|
}
|
|
.newTag {
|
|
color: white;
|
|
width: 60px;
|
|
height: 30px;
|
|
line-height: 30px;
|
|
text-align: center;
|
|
background: #ff7d02;
|
|
position: absolute;
|
|
top: 0px;
|
|
left: 0px;
|
|
border-bottom-right-radius: 15px;
|
|
}
|
|
}
|
|
.package {
|
|
width: 230px;
|
|
height: 30px;
|
|
background: #d8f6ff;
|
|
border-radius: 3px;
|
|
line-height: 30px;
|
|
span {
|
|
width: 142px;
|
|
height: 17px;
|
|
font-size: 12px;
|
|
font-family: PingFangSC-Regular, PingFang SC;
|
|
font-weight: 400;
|
|
color: #222222;
|
|
padding-left: 10px;
|
|
}
|
|
}
|
|
.name {
|
|
margin-top: 10px;
|
|
font-size: 16px;
|
|
font-family: PingFangSC-Medium, PingFang SC;
|
|
font-weight: 500;
|
|
color: #222222;
|
|
line-height: 28px;
|
|
}
|
|
.kc {
|
|
margin-top: 10px;
|
|
|
|
span {
|
|
font-size: 13px;
|
|
font-family: PingFangSC-Regular, PingFang SC;
|
|
font-weight: 400;
|
|
color: #666666;
|
|
line-height: 20px;
|
|
margin-right: 20px;
|
|
}
|
|
}
|
|
.jbq {
|
|
margin-top: 10px;
|
|
|
|
/deep/ .el-input-number {
|
|
.el-input-number__decrease {
|
|
width: 26px;
|
|
height: 26px;
|
|
border: none;
|
|
border-radius: 16px;
|
|
background: #d8f6ff;
|
|
.el-icon-minus {
|
|
color: var(--themeColor);
|
|
font-weight: 900;
|
|
}
|
|
}
|
|
.el-input-number__increase {
|
|
width: 26px;
|
|
height: 26px;
|
|
border: none;
|
|
border-radius: 16px;
|
|
background: var(--themeColor);
|
|
.el-icon-plus {
|
|
color: #fff;
|
|
font-weight: 900;
|
|
}
|
|
}
|
|
.el-input {
|
|
.el-input__inner {
|
|
border: none;
|
|
}
|
|
}
|
|
}
|
|
.noStock {
|
|
color: #666666;
|
|
height: 28px;
|
|
font-size: 13px;
|
|
font-family: PingFangSC-Regular, PingFang SC;
|
|
}
|
|
}
|
|
.stock {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
margin: 10px 0;
|
|
img {
|
|
width: 24px;
|
|
height: 24px;
|
|
}
|
|
|
|
p {
|
|
font-size: 12px;
|
|
font-family: PingFangSC-Medium, PingFang SC;
|
|
font-weight: 500;
|
|
color: #999;
|
|
span {
|
|
font-size: 18px;
|
|
font-family: PingFangSC-Medium, PingFang SC;
|
|
font-weight: 500;
|
|
color: #ff1d1d;
|
|
|
|
line-height: 25px;
|
|
}
|
|
}
|
|
.originalPrice {
|
|
color: #999999;
|
|
text-decoration: line-through;
|
|
}
|
|
}
|
|
}
|
|
.item:nth-of-type(4n) {
|
|
margin-right: 0px;
|
|
}
|
|
}
|
|
}
|
|
.classify {
|
|
width: 1250px;
|
|
.list {
|
|
margin-top: 30px;
|
|
.title {
|
|
.name {
|
|
font-size: 22px;
|
|
color: #333333;
|
|
font-weight: bold;
|
|
}
|
|
.more {
|
|
width: 58px;
|
|
height: 24px;
|
|
border: 1px solid #c6c6c6;
|
|
font-size: 12px;
|
|
color: #818181;
|
|
margin-right: 50px;
|
|
cursor: pointer;
|
|
.iconfont {
|
|
font-size: 10px;
|
|
}
|
|
}
|
|
}
|
|
.itemOne {
|
|
width: 468px;
|
|
height: 340px;
|
|
margin: 20px 20px 0 0;
|
|
cursor: pointer;
|
|
&:hover {
|
|
box-shadow: 0 3px 20px rgba(0, 0, 0, 0.06);
|
|
}
|
|
|
|
img {
|
|
width: 100%;
|
|
height: 100%;
|
|
}
|
|
}
|
|
.item {
|
|
width: 224px;
|
|
height: 340px;
|
|
background-color: #fff;
|
|
padding: 16px;
|
|
margin: 20px 20px 0 0;
|
|
cursor: pointer;
|
|
&:hover {
|
|
box-shadow: 0 3px 20px rgba(0, 0, 0, 0.06);
|
|
}
|
|
|
|
.pictrue {
|
|
width: 192px;
|
|
height: 192px;
|
|
img {
|
|
width: 100%;
|
|
height: 100%;
|
|
}
|
|
}
|
|
.money {
|
|
margin-top: 12px;
|
|
.font-color {
|
|
font-size: 22px;
|
|
font-weight: bold;
|
|
}
|
|
.y_money {
|
|
color: #aaaaaa;
|
|
font-size: 12px;
|
|
text-decoration: line-through;
|
|
margin-left: 8px;
|
|
}
|
|
.label {
|
|
width: 20px;
|
|
height: 20px;
|
|
background: linear-gradient(
|
|
330deg,
|
|
rgba(231, 85, 67, 0.15) 0%,
|
|
rgba(244, 103, 83, 0.15) 100%
|
|
);
|
|
font-size: 12px;
|
|
text-align: center;
|
|
line-height: 20px;
|
|
}
|
|
}
|
|
.name {
|
|
margin-top: 8px;
|
|
color: #5a5a5a;
|
|
height: 37px;
|
|
}
|
|
.payment {
|
|
font-size: 12px;
|
|
color: #aaaaaa;
|
|
margin-top: 10px;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
.nothing {
|
|
padding-top: 200px;
|
|
padding-bottom: 150px;
|
|
font-size: 16px;
|
|
text-align: center;
|
|
color: #969696;
|
|
|
|
img {
|
|
margin: 0 auto;
|
|
}
|
|
}
|
|
}
|
|
</style>
|
|
|