wanmeiyizhan/pages/home/newIndex.vue
2025-05-08 11:21:54 +08:00

1547 lines
44 KiB
Vue

<template>
<view class="homeMain">
<view
class="minTopBox"
v-if="loginType === 'min'"
:style="{
height: menu.bottom + 8 + 'px',
}"
>
<view
class="topContent"
:style="{ paddingTop: menu.top + 'px', height: menu.height + 'px' }"
>
<image class="fixedIcon" src="/static/home/newFixed.svg" />
<view class="selectServiceBox" @click="handleGoServiceList(1)">
<span class="serviceName">{{
serverPart.SERVERPART_NAME || ""
}}</span>
<image class="serviceIcon" src="/static/home/newExpendIcon.svg" />
</view>
<view class="searchBox" @click="handleGoServiceList(2)">
<image class="searchIcon" src="/static/home/newSearch.svg" />
<span class="searchText">搜索周边</span>
</view>
</view>
</view>
<view
class="appTopBox"
v-else
:style="{
height: menu.top + 50 + 'px',
}"
>
<view class="topContent" :style="{ paddingTop: menu.top + 'px' }">
<image class="fixedIcon" src="/static/home/newFixed.svg" />
<view class="selectServiceBox" @click="handleGoServiceList(1)">
<span class="serviceName">{{
serverPart.SERVERPART_NAME || ""
}}</span>
<image class="serviceIcon" src="/static/home/newExpendIcon.svg" />
</view>
<view class="searchBox" @click="handleGoServiceList(2)">
<image class="searchIcon" src="/static/home/newSearch.svg" />
<span class="searchText">搜索周边</span>
</view>
</view>
</view>
<view class="newContent">
<view class="topBanner">
<image
class="bannerImg"
src="https://eshangtech.com/wanmeiyizhanImg/home/wanmeiyizhanNewIndex.png"
/>
</view>
<view style="box-sizing: border-box; padding: 0 32rpx">
<!-- :style="{ marginTop: menu.bottom + 8 + 'px' }" -->
<view class="funBox">
<view
class="funItem"
v-for="(item, index) in funList"
:key="index"
:style="{ marginBottom: index <= 3 ? '32rpx' : '' }"
@click="handleGoFun(item)"
>
<image class="funItemIcon" :src="item.src" />
<span class="funItemText">{{ item.label || "" }}</span>
</view>
</view>
<scroll-view :scroll-x="true" class="tabBox">
<view class="tabList">
<view
class="tabItem"
v-for="(item, index) in tabList"
:key="index"
@click="handleChangeTab(item)"
>
<view
:class="
selectTab === item.value ? 'title selectTitle' : 'title'
"
>{{ item.label || "" }}
</view>
<view
:class="selectTab === item.value ? 'desc selectDesc' : 'desc'"
>{{ item.desc || "" }}
</view>
</view>
</view>
</scroll-view>
<view
v-if="chaegeBoxList && chaegeBoxList.length > 0"
style="background-color: #fff; margin-top: 24rpx"
>
<ChargeBox
:showType="'horizontal'"
:serviceAreaList="chaegeBoxList"
pageType="scanCode"
:showStore="true"
:comeForm="'home'"
:showPadding="true"
/>
</view>
<view class="carouselBox" @click="handleGoDiscovery" v-if="showBanner">
<swiper
class="swiperBox"
scroll-x="true"
autoplay="true"
circular="true"
@change="swiperChange($event, 'currentBan')"
:current="currentBan"
>
<swiper-item v-for="(image, i) in bannerList" :key="i">
<image class="swiperImg" :src="image"></image>
</swiper-item>
</swiper>
</view>
<!-- 驿站美食 -->
<view class="foodBox">
<view class="foodTop">
<view class="topLeft">
<!-- <image class="foodTopIcon" /> -->
<span class="stationFood">驿站美食</span>
<span class="foodDesc">提前点餐 无需排队</span>
</view>
<view class="topRight" @click="handleGoFoodOrder">
<span class="moreText">查看更多</span>
<image class="rightArrow" src="/static/home/newRightRow.svg" />
</view>
</view>
<scroll-view :scroll-x="true" class="foodContent">
<view class="foodList">
<view
class="foodItemNew"
v-for="(item, index) in foodList"
:key="index"
@click="handleGoFoodShop(item)"
>
<view class="shopName">{{ item.MERCHANTS_NAME || "" }}</view>
<!-- <view class="foodSrc" :style="{ backgroundImage: `url(${item.IMAGE_URL})` }"></view> -->
<view class="foodSrcBox">
<image
class="foodSrc"
lazy-load="true"
:src="item.IMAGE_URL"
/>
<!-- mode="aspectFit" -->
</view>
<view class="foodDetail">
<view class="foodName">{{ item.COMMODITY_NAME }}</view>
<!-- <view class="foodInfo">月售249 仅剩13份</view> -->
<view class="priceBox">
<view class="priceLeft">
<span class="price">
<span class="priceUnit">¥</span>
{{ item.COMMODITY_RETAILPRICE }}
</span>
<!-- <span class="priceOld">¥20.5</span> -->
</view>
<view class="priceRight">
进店
<!-- <image
class="addBtn"
src="/static/home/addShopButton.svg"
/> -->
</view>
</view>
</view>
</view>
</view>
</scroll-view>
</view>
<!-- 皖美特产 -->
<view class="productBox">
<view class="foodTop">
<view class="topLeft">
<!-- <image class="foodTopIcon" /> -->
<span class="stationFood">皖美农品</span>
<span class="foodDesc">本地特产 特色农品</span>
</view>
<view class="topRight" @click="handleGoFoodOrder">
<span class="moreText">查看更多</span>
<image class="rightArrow" src="/static/home/newRightRow.svg" />
</view>
</view>
<scroll-view :scroll-x="true" class="foodContent">
<view class="foodList">
<!-- AllProductsList -->
<view
class="foodItemNew"
v-for="(item, index) in AllProductsList"
:key="index"
@click="handleGoFoodShop(item)"
>
<!-- <view class="foodSrc" :style="{ backgroundImage: `url(${item.IMAGE_URL})` }"></view> -->
<view class="foodSrcBox">
<image
class="foodSrc"
lazy-load="true"
:src="item.IMAGE_URL"
/>
<!-- mode="aspectFit" -->
</view>
<view class="foodDetail">
<view class="foodName">{{ item.COMMODITY_NAME }}</view>
<!-- <view class="foodInfo">月售249 仅剩13份</view> -->
<view class="priceBox">
<view class="priceLeft">
<span class="price">
<span class="priceUnit">¥</span>
{{ item.COMMODITY_RETAILPRICE }}
</span>
<!-- <span class="priceOld">¥20.5</span> -->
</view>
<view class="priceRight">
进店
<!-- <image
class="addBtn"
src="/static/home/addShopButton.svg"
/> -->
</view>
</view>
</view>
</view>
</view>
</scroll-view>
</view>
</view>
<!-- 附近景点 -->
<!-- <view class="nearBox">
<view class="nearTabBox">
<view :class="selectNear === item.value ? 'nearTabItem selectNearTab' : 'nearTabItem'"
v-for="(item, index) in nearTabBox" :key="index">
{{ item.label || "" }}
</view>
</view>
</view> -->
</view>
<tabbar :page="'/pages/home/newIndex'" />
<CustomLoading
:visible="isLoading"
v-if="isLoading"
@update:visible="(val) => (isLoading = val)"
/>
</view>
</template>
<script>
import { mapGetters, mapMutations } from "vuex";
import tabbar from "../../components/tabbar.vue";
import CustomLoading from "../../components/customLoading.vue";
import ChargeBox from "../../components/chargeBox.vue";
import {
handleGetUserPointInfo,
handleGetNearThreeService,
} from "../../utils/publicMethods";
export default {
components: { tabbar, CustomLoading, ChargeBox },
data() {
return {
menu: {}, // 拿到用户手机尺寸
loginType: "", // 登录平台
funList: [
{ label: "扫码充电", value: 1, src: "/static/home/scanCode.png" },
{ label: "我要加油", value: 2, src: "/static/home/getOil.png" },
{ label: "线上点餐", value: 3, src: "/static/home/onlineFood.png" },
{ label: "出行导航", value: 4, src: "/static/home/mapHelp.png" },
{ label: "道路救援", value: 5, src: "/static/home/roadHelp.png" },
{
label: "失物招领",
value: 6,
src: "/static/home/newLostAndFound.png",
},
{ label: "我要修车", value: 7, src: "/static/home/helpCar.png" },
{ label: "投诉建议", value: 8, src: "/static/home/NewSuggestIcon.png" },
], // 可以跳转的功能列表
tabList: [
{ label: "驿达推荐", desc: "推荐精选", value: 1 },
{ label: "皖美地图", desc: "请跟我走", value: 2 },
{ label: "皖美会员", desc: "会员特权", value: 3 },
], // tab的功能列表
selectTab: 1, // 选中的功能列表
chaegeBoxList: [], // 服务区名称列表
bannerList: [
// "https://eshangtech.com/ShopICO/yifu/banner/banner1.png",
// "https://eshangtech.com/ShopICO/yifu/banner/banner2.png",
// "https://eshangtech.com/ShopICO/yifu/banner/banner3.png",
"https://eshangtech.com/wanmeiyizhanImg/home/activityNo1.png",
"https://eshangtech.com/wanmeiyizhanImg/home/activityNo2.png",
"https://eshangtech.com/wanmeiyizhanImg/home/activityNo3.png",
], // 轮播框内容
currentBan: 1, // 当前的轮播框 显示内容
nearTabBox: [{ label: "玩乐推荐", value: 1 }],
selectNear: 1, //附近景点的tab选择
seatInfo: {}, // 经纬度信息
isLoading: false, // 加载效果
nearPart: {}, // 最近的服务区
serverPart: {}, // 当前的服务区
foodList: [], // 当前服务区的食品详情
AllProductsList: [], // 农品内容
showBanner: false,
};
},
computed: {
...mapGetters({
user: "user",
canIuse: "canIuse",
provinceCode: "provinceCode",
severList: "severList",
}),
},
async onLoad() {
// await getApp().globalData.initReady;
// 获取手机参数对页面进行适配 主要是用于拿到胶囊的位置
let systemInfo = uni.getSystemInfoSync();
let type = uni.getStorageSync("loginType");
this.loginType = type;
console.log("this.loginTypethis.loginType", this.loginType);
if (type === "min") {
this.menu = uni.getMenuButtonBoundingClientRect();
} else {
this.menu = systemInfo.safeArea;
}
await this.handleOnLoad();
},
async onShow() {
this.showBanner = true;
// await getApp().globalData.initReady;
let type = uni.getStorageSync("loginType");
if (type !== "min") {
uni.hideTabBar({
animation: false,
});
}
// 当前服务区
let currentService = uni.getStorageSync("currentService");
if (this.serverPart && currentService) {
if (this.serverPart.ServerPart_Name !== currentService.SERVERPART_NAME) {
this.handleOnShowUpdate(currentService);
}
}
this.isLoading = false;
},
onHide() {
this.showBanner = true;
},
// 下拉刷新
async onPullDownRefresh() {
this.isLoading = true;
uni.setStorageSync("seatInfo", null);
uni.setStorageSync("currentService", null);
uni.setStorageSync("nearService", null);
uni.setStorageSync("nearThreeList", null);
uni.setStorageSync("allServiceList", null);
await this.handleOnLoad();
let allServiceList = uni.getStorageSync("allServiceList");
let currentService = uni.getStorageSync("currentService");
this.chaegeBoxList = [];
this.$forceUpdate();
console.log("allServiceListallServiceListallServiceList", allServiceList);
if (allServiceList && allServiceList.length > 0) {
allServiceList.forEach((item) => {
if (item.SERVERPART_NAME === currentService.SERVERPART_NAME) {
this.serverPart = item;
}
});
}
let _this = this;
setTimeout(() => {
_this.chaegeBoxList = [_this.serverPart.SERVERPART_NAME];
uni.stopPullDownRefresh();
}, 500);
this.isLoading = false;
},
onHide() {
this.isLoading = false;
this.$forceUpdate();
},
methods: {
...mapMutations({
setArea: "setHomeServer",
setServerPart: "discoveryServerPart",
setSeverList: "severList",
setprovinceCode: "setprovinceCode",
setInvitedCode: "setInvitedCode",
setOwnerUnitId: "setOwnerUnitId",
}),
// onshow需要更新得内容
async handleOnShowUpdate(currentService) {
this.isLoading = true;
let allServiceList = uni.getStorageSync("allServiceList");
this.chaegeBoxList = [];
this.$forceUpdate();
console.log("allServiceListallServiceListallServiceList", allServiceList);
if (allServiceList && allServiceList.length > 0) {
allServiceList.forEach((item) => {
if (item.SERVERPART_NAME === currentService.SERVERPART_NAME) {
this.serverPart = item;
}
});
}
// 拿到当前服务区的点餐数据
await this.handleGetCurrentService();
let _this = this;
setTimeout(() => {
_this.chaegeBoxList = [_this.serverPart.SERVERPART_NAME];
}, 500);
this.isLoading = false;
this.$forceUpdate();
},
// 跳转精选活动
handleGoDiscovery() {
uni.switchTab({
url: "/pages/discovery/index",
});
},
// 跳转到对应的食品门店 点餐页面
handleGoFoodShop(item) {
console.log("item", item);
if (this.user.MEMBERSHIP_MOBILEPHONE) {
let id = item.SERVERPARTSHOP_IDS.split(",")[0];
uni.navigateTo({
url: `/pages/shopPages/shop/index?id=${id}&mid=${item.MERCHANTS_ID}&province=${item.PROVINCE_CODE}&buyType=${item.SCANCODE_ORDER}`,
});
} else {
let id = item.SERVERPARTSHOP_IDS.split(",")[0];
uni.navigateTo({
url: `/pages/shopPages/shop/index?id=${id}&mid=${item.MERCHANTS_ID}&province=${item.PROVINCE_CODE}&buyType=${item.SCANCODE_ORDER}`,
});
this.isLogin = true;
}
},
// 轮播框的图片切换
swiperChange(e, name) {
// this[name] = e.mp.detail.current;
this.currentBan = e.mp.detail.current;
},
// 切换tab
handleChangeTab(obj) {
// this.selectTab = obj.value
if (obj.value === 2) {
// 出行导航
uni.navigateTo({
url: "/pages/scanCodeCharge/travelNavigation",
});
} else if (obj.value === 3) {
// 跳转会员权益页面
uni.navigateTo({
url: "/pages/memberBenefits/index",
});
}
},
async handleOnLoad() {
this.isLoading = true;
// 拿到经纬度信息
let seatInfo = await handleGetUserPointInfo();
this.seatInfo = seatInfo;
// 拿到几个需要的服务区的数据
let serviceInfo = await handleGetNearThreeService();
console.log("serviceInfo", serviceInfo);
this.nearPart = serviceInfo.currentService;
this.serverPart = serviceInfo.currentService;
// this.chaegeBoxList = [serviceInfo.nearThreeList[0]]
console.log("this.serverPart", this.serverPart);
// 拿到当前服务区的点餐数据
await this.handleGetCurrentService();
this.isLoading = false;
this.$forceUpdate();
},
// 拿到当前服务区的点餐数据
async handleGetCurrentService() {
// const data = await this.$api.getCoop({
// action_type: "GetSellerList",
// showSales: 1,
// showCoupon: 1,
// showComment: 1,
// serverpartId: this.serverPart.SERVERPART_ID,
// provinceCode: this.serverPart.ProvinceCode || "340000",
// showGoods: 1,
// pageSize: 9999,
// pageIndex: 1,
// });
// let list = data.Data.List;
const data = await this.$api.$javaGet2("/third-party/getMerchantsList", {
serverpartId: this.serverPart.SERVERPART_ID,
});
let list = data.Result_Data.List;
console.log("首页点餐数据", list);
// 因为要显示具体商品 但是商品的内容 又在item的 GoodsList 里面 是一个数据 那么就将要显示的商品拆出来
let shopList = [];
let productsList = [];
if (list && list.length > 0) {
list.forEach((item) => {
if (item.GOODSLIST && item.GOODSLIST.length > 0) {
item.GOODSLIST.forEach((subItem) => {
let obj = JSON.parse(JSON.stringify(item));
obj = {
...obj,
...subItem,
};
shopList.push(obj);
});
}
if (item.MERCHANTS_ID === 927) {
if (item.GOODSLIST && item.GOODSLIST.length > 0) {
item.GOODSLIST.forEach((subItem) => {
let obj = JSON.parse(JSON.stringify(item));
obj = {
...obj,
...subItem,
};
productsList.push(obj);
});
}
}
});
}
this.foodList = shopList;
this.AllProductsList = productsList;
},
// 跳转点餐页面
handleGoFoodOrder() {
// 线上点餐
uni.navigateTo({
url: "/pages/reservationOrder/index",
});
},
// 跳转修改服务区的列表页面
handleGoServiceList(value) {
// 当value为1 的时候 表示会回到该页面
if (value === 1) {
uni.navigateTo({ url: "/pages/newMap/index/index" });
} else {
uni.navigateTo({ url: "/pages/newMap/index/index?comeForm=home" });
}
},
// 中间的八个功能点击的跳转
handleGoFun(obj) {
let _this = this;
if (obj.value === 1) {
// 扫码充电
if (this.loginType === "min") {
uni.navigateTo({ url: "/pages/scanCodeCharge/mapIndex" });
} else {
uni.navigateTo({ url: "/pages/scanCodeCharge/mapIndexAPP" });
}
} else if (obj.value === 2) {
// 我要加油
uni.navigateTo({ url: "/pages/scanCodeCharge/oilIndex" });
} else if (obj.value === 3) {
// 线上点餐
uni.navigateTo({
url: "/pages/reservationOrder/index",
});
} else if (obj.value === 4) {
// 出行导航
uni.navigateTo({
url: "/pages/scanCodeCharge/travelNavigation",
});
} else if (obj.value === 5) {
// 道路救援
if (_this.loginType === "min") {
uni.navigateTo({ url: "/pages/clickRescue/index" });
} else {
uni.navigateTo({ url: "/pages/clickRescue/index" });
}
} else if (obj.value === 6) {
// 失物招领
uni.navigateTo({
url: "/pages/contact/index",
});
} else if (obj.value === 7) {
// 我要修车
uni.navigateTo({
url: "/pages/clickRescue/carMaintenance",
});
} else if (obj.value === 8) {
// 投诉建议
if (!this.user.MEMBERSHIP_ID) {
let _this = this;
uni.showModal({
title: "温馨提示",
content: "请您授权登录后再操作。",
success(res) {
if (res.confirm) {
if (_this.loginType === "min") {
uni.navigateTo({ url: "/pages/register/index" });
} else {
uni.navigateTo({ url: "/pages/login/index" });
}
}
},
});
return;
}
if (_this.loginType === "min") {
uni.navigateTo({
url: "/pages/complaintFeedback/index",
});
} else {
uni.navigateTo({
url: "/pages/complaintFeedback/index",
});
}
}
},
},
};
</script>
<style lang="less" scoped>
.homeMain {
width: 100vw;
min-height: 100vh;
box-sizing: border-box;
padding-bottom: env(safe-area-inset-bottom);
padding-bottom: constant(safe-area-inset-bottom);
position: relative;
.minTopBox {
width: 100%;
position: fixed;
top: 0;
left: 0;
z-index: 3;
background-image: url("https://eshangtech.com/wanmeiyizhanImg/home/wanmeiyizhanNewIndex.png");
background-repeat: no-repeat;
background-size: 100% 400rpx;
.topContent {
width: 100%;
display: flex;
align-items: center;
padding: 0 32rpx;
.fixedIcon {
width: 36rpx;
height: 36rpx;
margin-right: 8rpx;
}
.selectServiceBox {
width: 180rpx;
height: 100%;
display: flex;
align-items: center;
.serviceName {
max-width: 150rpx;
display: inline-block;
white-space: noWrap;
text-overflow: ellipsis;
overflow: hidden;
font-family: "PingFang SC";
font-weight: 400;
font-size: 30rpx;
color: #ffffff;
line-height: 42rpx;
text-align: left;
font-style: normal;
text-transform: none;
}
.serviceIcon {
width: 20rpx;
height: 10rpx;
margin-left: 8rpx;
}
}
.searchBox {
width: 274rpx;
height: 60rpx;
background-color: rgba(255, 255, 255, 0.7);
border-radius: 14rpx 14rpx 14rpx 14rpx;
border: 1rpx solid rgba(0, 0, 0, 0);
display: flex;
align-items: center;
box-sizing: border-box;
padding: 9rpx 20rpx;
margin-left: 14rpx;
.searchIcon {
width: 32rpx;
height: 32rpx;
margin-right: 6rpx;
}
.searchText {
font-family: "PingFang SC";
font-weight: 400;
font-size: 30rpx;
color: #959fb0;
line-height: 42rpx;
text-align: left;
font-style: normal;
text-transform: none;
}
}
}
}
.appTopBox {
width: 100%;
position: fixed;
top: 0;
left: 0;
z-index: 3;
background-image: url("https://eshangtech.com/wanmeiyizhanImg/home/wanmeiyizhanNewIndex.png");
background-repeat: no-repeat;
background-size: 100% 400rpx;
.topContent {
width: 100%;
display: flex;
align-items: center;
padding: 0 32rpx;
.fixedIcon {
width: 36rpx;
height: 36rpx;
margin-right: 8rpx;
}
.selectServiceBox {
width: 180rpx;
display: flex;
align-items: center;
.serviceName {
max-width: 150rpx;
display: inline-block;
white-space: noWrap;
text-overflow: ellipsis;
overflow: hidden;
font-family: "PingFang SC";
font-weight: 400;
font-size: 30rpx;
color: #ffffff;
line-height: 42rpx;
text-align: left;
font-style: normal;
text-transform: none;
}
.serviceIcon {
width: 20rpx;
height: 10rpx;
margin-left: 8rpx;
}
}
.searchBox {
width: 274rpx;
height: 60rpx;
background-color: rgba(255, 255, 255, 0.7);
border-radius: 14rpx 14rpx 14rpx 14rpx;
border: 1rpx solid rgba(0, 0, 0, 0);
display: flex;
align-items: center;
box-sizing: border-box;
padding: 9rpx 20rpx;
margin-left: 14rpx;
.searchIcon {
width: 32rpx;
height: 32rpx;
margin-right: 6rpx;
}
.searchText {
font-family: "PingFang SC";
font-weight: 400;
font-size: 30rpx;
color: #959fb0;
line-height: 42rpx;
text-align: left;
font-style: normal;
text-transform: none;
}
}
}
}
.newContent {
width: 100vw;
box-sizing: border-box;
// padding: 0 32rpx 180rpx;
padding: 0 0 140rpx;
// position: absolute;
background-color: #f5f6f8;
// z-index: 2;
// top: 0;
// left: 0;
.topBanner {
width: 100%;
height: 400rpx;
// position: absolute;
// z-index: 1;
// top: 0;
// left: 0;
.bannerImg {
width: 100%;
height: 100%;
}
}
.funBox {
width: 100%;
box-sizing: border-box;
margin-top: 32rpx;
padding: 32rpx;
background-color: rgba(255, 255, 255, 0.8);
box-shadow: 0rpx 3rpx 8rpx 1rpx rgba(67, 29, 0, 0.15);
border-radius: 24rpx;
// margin-top: 360rpx;
display: flex;
flex-wrap: wrap;
// position: relative;
// z-index: 2;
.funItem {
width: 25%;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
.funItemIcon {
width: 80rpx;
height: 80rpx;
margin-bottom: 12rpx;
}
.funItemText {
font-family: "PingFang SC";
font-weight: 500;
font-size: 24rpx;
color: #2f3339;
line-height: 33rpx;
text-align: left;
font-style: normal;
text-transform: none;
}
}
}
.tabBox {
width: 100%;
margin-top: 32rpx;
.tabList {
width: 100%;
height: 100%;
display: flex;
align-items: center;
flex-wrap: nowrap;
.tabItem {
display: inline-block;
width: 160rpx;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
.title {
font-family: "PingFang SC";
font-weight: bold;
font-size: 28rpx;
color: #333333;
line-height: 40rpx;
text-align: left;
font-style: normal;
text-transform: none;
}
.desc {
font-family: "PingFang SC";
font-weight: 500;
font-size: 22rpx;
color: #9299a7;
line-height: 30rpx;
text-align: center;
font-style: normal;
text-transform: none;
margin-top: 6rpx;
}
.selectTitle {
font-family: "PingFang SC";
font-weight: bold;
font-size: 32rpx;
color: #333333;
line-height: 45rpx;
text-align: left;
font-style: normal;
text-transform: none;
}
.selectDesc {
font-family: "PingFang SC";
font-weight: 500;
font-size: 22rpx;
color: #ffffff;
line-height: 30rpx;
text-align: center;
font-style: normal;
text-transform: none;
padding: 6rpx 16rpx;
background: linear-gradient(269deg, #3a82fd 0%, #80aeff 100%);
border-radius: 20rpx 20rpx 20rpx 20rpx;
}
}
}
}
.carouselBox {
width: 100%;
height: 300rpx;
margin-top: 20rpx;
.swiperBox {
width: 100%;
height: 100%;
.swiperImg {
width: 100%;
height: 100%;
}
}
}
.foodBox {
width: 100%;
box-sizing: border-box;
background-color: #fff;
border-radius: 16rpx;
margin-top: 32rpx;
.foodTop {
width: 100%;
display: flex;
align-items: center;
justify-content: space-between;
background: linear-gradient(180deg, #d7effd 0%, #ffffff 100%);
box-shadow: 0rpx 8rpx 12rpx 1rpx rgba(176, 223, 238, 0.07),
inset 0rpx 3rpx 6rpx 1rpx #ffffff;
box-sizing: border-box;
padding: 16rpx 16rpx 8rpx;
.topLeft {
display: flex;
align-items: center;
.foodTopIcon {
width: 200rpx;
height: 70rpx;
}
.stationFood {
font-family: "PingFang SC";
font-weight: 600;
font-size: 30rpx;
color: #000;
margin-left: 16rpx;
}
.foodDesc {
font-family: "PingFang SC";
font-weight: 400;
font-size: 24rpx;
color: #7ba3fd;
line-height: 42rpx;
text-align: center;
font-style: normal;
text-transform: none;
padding: 4rpx 14rpx;
border-radius: 22rpx 22rpx 22rpx 0rpx;
border: 1rpx solid #7799fd;
margin-left: 16rpx;
}
}
.topRight {
display: flex;
align-items: center;
.moreText {
font-family: "PingFang SC";
font-weight: 400;
font-size: 24rpx;
color: #9299a7;
line-height: 33rpx;
text-align: right;
font-style: normal;
text-transform: none;
}
.rightArrow {
width: 30rpx;
height: 30rpx;
}
}
}
.foodContent {
width: 100%;
.foodList {
width: 100%;
// height: 370rpx;
display: flex;
align-items: center;
flex-wrap: nowrap;
box-sizing: border-box;
padding: 10rpx 0 22rpx;
.foodItem {
width: 280rpx;
// height: 370rpx;
box-sizing: border-box;
padding: 24rpx;
.foodSrcBox {
width: 200rpx;
height: 200rpx;
background-color: #f5f5f5;
border-radius: 8rpx;
overflow: hidden;
.foodSrc {
width: 200rpx;
height: 200rpx;
background-repeat: no-repeat;
// margin-bottom: 16rpx;
}
}
.foodSrc {
width: 200rpx;
height: 200rpx;
background-repeat: no-repeat;
// margin-bottom: 16rpx;
}
.foodDetail {
width: 100%;
margin-top: 16rpx;
.foodName {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
font-family: "PingFang SC";
font-weight: 400;
font-size: 28rpx;
color: #050505;
line-height: 30rpx;
text-align: left;
font-style: normal;
margin-bottom: 8rpx;
}
.foodInfo {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
font-family: "PingFang SC";
font-weight: 400;
font-size: 24rpx;
color: #a8aab0;
line-height: 30rpx;
text-align: left;
font-style: normal;
}
.priceBox {
display: flex;
align-items: center;
justify-content: space-between;
margin-top: 16rpx;
.priceLeft {
.price {
font-family: "DINAlternate";
font-weight: 500;
font-size: 35rpx;
color: #ff790d;
line-height: 52rpx;
text-align: center;
font-style: normal;
text-transform: none;
.priceUnit {
font-family: "PingFang SC";
font-weight: 500;
font-size: 22rpx;
color: #ff790d;
line-height: 30rpx;
text-align: center;
font-style: normal;
text-transform: none;
}
}
.priceOld {
font-family: "PingFang SC";
font-weight: 400;
font-size: 20rpx;
color: #a8aab0;
line-height: 30rpx;
text-align: center;
font-style: normal;
text-decoration-line: line-through;
margin-left: 8rpx;
}
}
.priceRight {
width: 40rpx;
height: 40rpx;
.addBtn {
width: 40rpx;
height: 40rpx;
}
}
}
}
}
.foodItemNew {
box-sizing: border-box;
padding: 16rpx 26rpx;
box-shadow: 0rpx 0rpx 5rpx 0rpx rgba(0, 0, 0, 0.1);
border-radius: 16rpx;
margin-right: 16rpx;
.shopName {
font-family: "PingFang SC";
font-weight: 500;
font-size: 28rpx;
color: #000c04;
line-height: 30rpx;
display: inline-block;
width: 240rpx;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.foodSrcBox {
margin-top: 16rpx;
width: 218rpx;
height: 218rpx;
border-radius: 12rpx;
overflow: hidden;
.foodSrc {
width: 100%;
height: 100%;
}
}
.foodDetail {
margin-top: 20rpx;
.foodName {
font-family: "PingFang SC";
font-weight: 500;
font-size: 28rpx;
color: #000c04;
line-height: 30rpx;
display: inline-block;
width: 240rpx;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.priceBox {
width: 100%;
display: flex;
align-items: center;
justify-content: space-between;
.priceLeft {
.price {
font-family: "PingFang SC";
font-weight: 600;
font-size: 30rpx;
color: #ff6800;
line-height: 30rpx;
.priceUnit {
font-family: "PingFang SC";
font-weight: 500;
font-size: 20rpx;
color: #ff6800;
line-height: 30rpx;
}
}
}
.priceRight {
font-family: "PingFang SC";
font-weight: 500;
font-size: 24rpx;
color: #ffffff;
line-height: 30rpx;
padding: 6rpx 16rpx;
background-color: #01c553;
border-radius: 32rpx;
}
}
}
}
}
}
}
.productBox {
width: 100%;
box-sizing: border-box;
background-color: #fff;
border-radius: 16rpx;
margin-top: 32rpx;
.foodTop {
width: 100%;
// height: 70rpx;
display: flex;
align-items: center;
justify-content: space-between;
background: linear-gradient(#e9ecff 0%, #f9faff 100%);
box-shadow: 0rpx 8rpx 12rpx 1rpx rgba(176, 223, 238, 0.07),
inset 0rpx 3rpx 6rpx 1rpx #ffffff;
box-sizing: border-box;
padding: 16rpx 16rpx 8rpx;
.topLeft {
display: flex;
align-items: center;
.foodTopIcon {
width: 200rpx;
height: 70rpx;
}
.stationFood {
font-family: "PingFang SC";
font-weight: 600;
font-size: 30rpx;
color: #000;
margin-left: 16rpx;
}
.foodDesc {
font-family: "PingFang SC";
font-weight: 400;
font-size: 24rpx;
color: #998cea;
line-height: 42rpx;
text-align: center;
font-style: normal;
text-transform: none;
padding: 4rpx 14rpx;
border-radius: 22rpx 22rpx 22rpx 0rpx;
border: 1rpx solid #998cea;
margin-left: 16rpx;
}
}
.topRight {
display: flex;
align-items: center;
.moreText {
font-family: "PingFang SC";
font-weight: 400;
font-size: 24rpx;
color: #9299a7;
line-height: 33rpx;
text-align: right;
font-style: normal;
text-transform: none;
}
.rightArrow {
width: 30rpx;
height: 30rpx;
}
}
}
.foodContent {
width: 100%;
.foodList {
width: 100%;
// height: 370rpx;
display: flex;
align-items: center;
flex-wrap: nowrap;
padding: 10rpx 0 22rpx;
.foodItem {
width: 280rpx;
box-sizing: border-box;
padding: 24rpx;
.foodSrc {
width: 200rpx;
height: 200rpx;
margin-bottom: 16rpx;
}
.foodDetail {
width: 100%;
margin-top: 16rpx;
.foodName {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
font-family: "PingFang SC";
font-weight: 400;
font-size: 28rpx;
color: #050505;
line-height: 30rpx;
text-align: left;
font-style: normal;
margin-bottom: 8rpx;
}
.foodInfo {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
font-family: "PingFang SC";
font-weight: 400;
font-size: 24rpx;
color: #a8aab0;
line-height: 30rpx;
text-align: left;
font-style: normal;
}
.priceBox {
display: flex;
align-items: center;
justify-content: space-between;
margin-top: 16rpx;
.priceLeft {
.price {
font-family: "DINAlternate";
font-weight: 500;
font-size: 35rpx;
color: #ff790d;
line-height: 52rpx;
text-align: center;
font-style: normal;
text-transform: none;
.priceUnit {
font-family: "PingFang SC";
font-weight: 500;
font-size: 22rpx;
color: #ff790d;
line-height: 30rpx;
text-align: center;
font-style: normal;
text-transform: none;
}
}
.priceOld {
font-family: "PingFang SC";
font-weight: 400;
font-size: 20rpx;
color: #a8aab0;
line-height: 30rpx;
text-align: center;
font-style: normal;
text-decoration-line: line-through;
margin-left: 8rpx;
}
}
.priceRight {
width: 40rpx;
height: 40rpx;
.addBtn {
width: 40rpx;
height: 40rpx;
}
}
}
}
}
.foodItemNew {
box-sizing: border-box;
padding: 16rpx 26rpx;
box-shadow: 0rpx 0rpx 5rpx 0rpx rgba(0, 0, 0, 0.1);
border-radius: 16rpx;
margin-right: 16rpx;
.shopName {
font-family: "PingFang SC";
font-weight: 500;
font-size: 28rpx;
color: #000c04;
line-height: 30rpx;
display: inline-block;
width: 240rpx;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.foodSrcBox {
margin-top: 16rpx;
width: 218rpx;
height: 218rpx;
border-radius: 12rpx;
overflow: hidden;
.foodSrc {
width: 100%;
height: 100%;
}
}
.foodDetail {
margin-top: 20rpx;
.foodName {
font-family: "PingFang SC";
font-weight: 500;
font-size: 28rpx;
color: #000c04;
line-height: 30rpx;
display: inline-block;
width: 240rpx;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.priceBox {
width: 100%;
display: flex;
align-items: center;
justify-content: space-between;
.priceLeft {
.price {
font-family: "PingFang SC";
font-weight: 600;
font-size: 30rpx;
color: #ff6800;
line-height: 30rpx;
.priceUnit {
font-family: "PingFang SC";
font-weight: 500;
font-size: 20rpx;
color: #ff6800;
line-height: 30rpx;
}
}
}
.priceRight {
font-family: "PingFang SC";
font-weight: 500;
font-size: 24rpx;
color: #ffffff;
line-height: 30rpx;
padding: 6rpx 16rpx;
background-color: #01c553;
border-radius: 32rpx;
}
}
}
}
}
}
}
.nearBox {
width: 100%;
box-sizing: border-box;
padding: 25rpx 32rpx;
background-color: #fff;
border-radius: 16rpx 16rpx 16rpx 16rpx;
margin-top: 20rpx;
.nearTabBox {
display: flex;
align-items: center;
.nearTabItem {
font-family: "PingFang SC";
font-weight: 500;
font-size: 34rpx;
color: #5f5f5f;
line-height: 45rpx;
text-align: center;
font-style: normal;
text-transform: none;
}
.selectNearTab {
font-family: "PingFang SC";
font-weight: bold;
font-size: 34rpx;
color: #141b1a;
line-height: 45rpx;
text-align: center;
font-style: normal;
text-transform: none;
position: relative;
z-index: 2;
}
}
}
}
}
</style>