This commit is contained in:
whitechiina 2026-07-16 15:41:31 +08:00
parent 0e2701e575
commit cd98744baf
37 changed files with 7169 additions and 7167 deletions

View File

@ -685,7 +685,7 @@
&-right {
width: 225rpx;
height: 77rpx;
background: linear-gradient(-77deg, #4A6FE7, #83ACFF);
background: #0122A4;
box-shadow: 0 6rpx 8rpx 0 rgba(74, 111, 231, 0.2300);
border-radius: 48rpx;
text-align: center;

View File

@ -1,396 +1,396 @@
<template>
<view class="b-page-home">
<view class="content-top">
<view class="content-top-banner">
<image class="img" :src="qnyurl('banner-1.jpg','rx')" mode=""></image>
</view>
<!-- 地址/搜索/选择 -->
<view class="content-top-search">
<view class="content-top-search-area-search">
<navigator url="/pages/restaurant/arealist/arealist" hover-class="none">
<view class="content-top-search-area-search-text">
<!-- 第一次获取肯定是获取不到的主要是动态显示用户改变的地址 -->
{{UserArae1?UserArae1:UserArae2['city']}}
<view
style="width: 50rpx;height: 30rpx;display: flex;justify-content: center;align-items: center;">
<image style="width: 15rpx;height: 12rpx;" class="img" :src="qnyurl('xiala.jpg','rx')">
</image>
</view>
</view>
</navigator>
<u-search placeholder="输入门店名称查询" :showAction="false" v-model="keyword" @search="search">
</u-search>
</view>
<!-- 收藏项 -->
<!-- <view class="content-top-search-tabs">
<u-tabs @change="e=>{tabsconfig['index'] = e['index']}" :list="tabsconfig['list']"
:scrollable="tabsconfig['scrollable']" :lineColor="tabsconfig['lineColor']"
:lineWidth="tabsconfig['lineWidth']"></u-tabs>
</view> -->
</view>
</view>
<!-- 店铺列表 -->
<!-- 因为骨架屏的颜色和UI设置背景色冲突所以在没有列表元素时先将背景色设置为白色 -->
<view class="Store-List" :style="{height:`${height}rpx`,'background-color':'#F2F2F2'}">
<!-- 附近餐厅 -->
<view v-show="tabsconfig['index'] == 0">
<scroll-view scroll-y="true" class="scroll-Y" :style="{height:`${height}rpx`,'position': 'relative'}"
@scrolltolower="scrolltolower">
<!-- 骨架屏占位元素 -->
<template v-if="StoreList[0]['list']['length'] > 0">
<!-- 组件内部会获取到品牌类型,从而显示对应类型的店铺列表样式 -->
<view style="padding-bottom: 32rpx;" v-for="(item,index) in StoreList[0]['list']">
<!-- 店铺列表样式 -->
<b-shop-list-item :item="item" :key="index" @itemclick="SETSHOPDETAIL(item);eattypeShow = true">
</b-shop-list-item>
</view>
</template>
<template v-else>
<!-- 必须先确保scoll有高度 -->
<!-- 缺省图 -->
<view class="default" v-if="Show == 1">
<img class="img" :src="qnyurl('default.png','rx')" alt="">
<text>该地区暂无门店信息</text>
</view>
<!-- 加载中 -->
<b-load :show="Show == 2" position="absolute" background="transparent" width="79" height="80" color="#000000"></b-load>
</template>
<!-- <b-shop-load type="load" width="79" height="74" :show="loading"></b-shop-load> -->
</scroll-view>
</view>
</view>
<u-modal :show="eattypeShow" title="温馨提示" width="580rpx">
<template v-slot:default>
<view class="slot-content">
<view class="slot-content-Tips">
瑞幸咖啡点餐为<text class="text1">第三方提供的点餐服务</text>该服务与瑞幸官方无关有问题请联系在线客服
</view>
<view class="slot-content-Tips2">
<view>
优惠点餐不支持开发票!
</view>
<view>
出餐后不支持退款
</view>
</view>
</view>
</template>
<template v-slot:confirmButton>
<view class="confirmButton" @tap="InforPage">
我知道了
</view>
</template>
</u-modal>
</view>
</template>
<script>
import mixin from '@/static/js/mixin/mixin.js';
import restaurantmixins from '@/static/js/mixin/restaurantmixins.js';
//
import {
restaurantQueryAPI,
storeCollectionListAPI
} from '@/request/restaurant/index.js';
// vuex
import {
mapGetters,
mapMutations
} from 'vuex';
export default {
mixins: [mixin,restaurantmixins],
name: "b-page-home",
data() {
return {
//
eattypeShow: false,
eat_type: 'EAT_IN',
//
temporaryData: [],
//
CollectiontemporaryData: [],
// /
StoreList: [{
page: 1,
count: 0,
list: []
},
{
page: 1,
count: 0,
list: []
},
],
// scroll
height: 0,
//
keyword: '',
// tabs
tabsconfig: {
//
index: 0,
scrollable: false,
//
lineWidth: '40',
//
lineColor: "#C63836",
list: [{
name: '附近餐厅',
}, {
name: '我的关注',
}]
},
//
loading: true,
};
},
computed: {
tabindex() {
return this['tabsconfig']['index']
},
Show(){
console.log(this['StoreList'][0]['list']['length'],'length');
console.log(this['loading'],'loading');
//
if(this['StoreList'][0]['list']['length'] <= 0 && !this['loading'] && this['height'] > 0){
return 1;
};
//
if(this['loading'] && this['height'] > 0){
return 2
}
}
// islist(){
// return this['StoreList'][0]['list']['length'] <= 0;
// }
},
watch: {
GetCityCode(val) {
console.log(val, '监听器');
//
this['StoreList'][0]['list'] = [];
this.GetList();
},
tabindex(val) {
if (val == 1) {
console.log(this['StoreList'][1]['list']);
this['StoreList'][1]['list'] = [];
this.GetstoreCollectionList();
}
}
},
mounted() {
console.log('进入选店组件');
this.GetList();
},
methods: {
/**
* @搜索
* */
search() {
if (this['tabsconfig']['index'] == 0) {
this['StoreList'][0]['page'] = 1;
this['StoreList'][0]['list'] = [];
this.GetList();
return
}
this['StoreList'][1]['page'] = 1;
this['StoreList'][1]['list'] = [];
this.GetstoreCollectionList();
},
/**
* @获取餐厅列表
* */
GetList() {
let self = this;
this['loading'] = true;
// DOM
setTimeout(()=>{
self.initScrollView({
el: 'content-top',
}).then(eres => {
self['height'] = eres;
let parameters = {
brand_id: this['BrandInfor']['brand_id'],
city_code: this.GetCityCode,
address: this['keyword'],
}
restaurantQueryAPI(parameters).then(res => {
console.log(res,'ressssssss');
self['loading'] = false;
if (res['data']['data']['length'] <= 0) {
uni.showToast({
title: '该区域暂无数据',
icon: 'none'
});
return;
}
//
if (res['data']['data']['length'] > 0) {
//
self['StoreList'][0]['count'] = res['data']['count'];
//
self['temporaryData'] = res['data']['data'];
self['StoreList'][0]['page'] += 1;
//
self.arrObtain('temporaryData', 0);
} else {
console.log('没数1');
}
}).catch(err=>{
self['loading'] = false;
})
})
},1000)
},
/**
* @获取关注冽表
* */
GetstoreCollectionList() {
let parameters = {
brand_id: this['BrandInfor']['brand_id'],
address: this['keyword'],
}
storeCollectionListAPI(parameters).then(data => {
if (data['data']['length'] > 0) {
//
this['StoreList'][1]['count'] = data['data']['count'];
//
this['CollectiontemporaryData'] = data['data']['data'];
this['StoreList'][1]['page'] += 1;
//
this.arrObtain('CollectiontemporaryData', 1);
} else {
console.log('没数');
}
})
},
/**
* @进入餐厅
* */
InforPage(item) {
uni.navigateTo({
url: `/pages/restaurant/home/shop_home/shop_home?restaurant_id=${this['GetShopInfor']['restaurant_id']}`,
success: () => {
this['eattypeShow'] = false;
}
})
},
/**
* @scroll触底时间
* */
scrolltolower() {
//
uni.$u.debounce(() => {
// 0
if (this['tabsconfig']['index'] == 0 && this['temporaryData']['length'] > 0) {
this.arrObtain('temporaryData', 0);
} else {
this.arrObtain('CollectiontemporaryData', 1);
}
}, 800, true)
},
/**
* @获取数据前十个
* */
arrObtain(key, index) {
let arr = this[key].splice(0, 9);
this['StoreList'][index]['list'].push(...arr);
console.log(this['StoreList'][index]['list'], 'list');
}
}
}
</script>
<style lang="scss">
// //
.content-top {
width: 100%;
height: auto;
background-color: #ffffff;
&-banner {
width: 100%;
height: 314rpx;
.img {
width: 100%;
height: 100%;
}
}
&-search {
background-color: #ffffff;
padding: 32rpx;
&-area-search {
padding: 0 32rpx;
box-sizing: border-box;
display: flex;
align-items: center;
&-text {
font-size: $FONTSIZE28;
display: flex;
align-items: center;
.icon-youjiantou {
font-size: $FONTSIZE25;
color: #666666;
margin: 0 15rpx;
}
}
}
}
}
//
.Store-List {
padding: 0 32rpx;
}
//
.slot-content-Tips {
font-size: 30rpx;
line-height: 40rpx;
.text1 {
color: #DB9F5E;
}
}
.slot-content-Tips2 {
width: 100%;
background-color: #FFF9F3;
margin-top: 20rpx;
color: #FF7910;
font-size: 26rpx;
line-height: 49rpx;
padding: 15rpx 32rpx;
}
.confirmButton{
background: linear-gradient(-77deg, #4A6FE7, #83ACFF);
border-radius: 43px;
color: #ffffff;
font-size: 30rpx;
text-align: center;
line-height: 80rpx;
}
</style>
<template>
<view class="b-page-home">
<view class="content-top">
<view class="content-top-banner">
<image class="img" :src="qnyurl('banner-1.jpg','rx')" mode=""></image>
</view>
<!-- 地址/搜索/选择 -->
<view class="content-top-search">
<view class="content-top-search-area-search">
<navigator url="/pages/restaurant/arealist/arealist" hover-class="none">
<view class="content-top-search-area-search-text">
<!-- 第一次获取肯定是获取不到的主要是动态显示用户改变的地址 -->
{{UserArae1?UserArae1:UserArae2['city']}}
<view
style="width: 50rpx;height: 30rpx;display: flex;justify-content: center;align-items: center;">
<image style="width: 15rpx;height: 12rpx;" class="img" :src="qnyurl('xiala.jpg','rx')">
</image>
</view>
</view>
</navigator>
<u-search placeholder="输入门店名称查询" :showAction="false" v-model="keyword" @search="search">
</u-search>
</view>
<!-- 收藏项 -->
<!-- <view class="content-top-search-tabs">
<u-tabs @change="e=>{tabsconfig['index'] = e['index']}" :list="tabsconfig['list']"
:scrollable="tabsconfig['scrollable']" :lineColor="tabsconfig['lineColor']"
:lineWidth="tabsconfig['lineWidth']"></u-tabs>
</view> -->
</view>
</view>
<!-- 店铺列表 -->
<!-- 因为骨架屏的颜色和UI设置背景色冲突所以在没有列表元素时先将背景色设置为白色 -->
<view class="Store-List" :style="{height:`${height}rpx`,'background-color':'#F2F2F2'}">
<!-- 附近餐厅 -->
<view v-show="tabsconfig['index'] == 0">
<scroll-view scroll-y="true" class="scroll-Y" :style="{height:`${height}rpx`,'position': 'relative'}"
@scrolltolower="scrolltolower">
<!-- 骨架屏占位元素 -->
<template v-if="StoreList[0]['list']['length'] > 0">
<!-- 组件内部会获取到品牌类型,从而显示对应类型的店铺列表样式 -->
<view style="padding-bottom: 32rpx;" v-for="(item,index) in StoreList[0]['list']">
<!-- 店铺列表样式 -->
<b-shop-list-item :item="item" :key="index" @itemclick="SETSHOPDETAIL(item);eattypeShow = true">
</b-shop-list-item>
</view>
</template>
<template v-else>
<!-- 必须先确保scoll有高度 -->
<!-- 缺省图 -->
<view class="default" v-if="Show == 1">
<img class="img" :src="qnyurl('default.png','rx')" alt="">
<text>该地区暂无门店信息</text>
</view>
<!-- 加载中 -->
<b-load :show="Show == 2" position="absolute" background="transparent" width="79" height="80" color="#000000"></b-load>
</template>
<!-- <b-shop-load type="load" width="79" height="74" :show="loading"></b-shop-load> -->
</scroll-view>
</view>
</view>
<u-modal :show="eattypeShow" title="温馨提示" width="580rpx">
<template v-slot:default>
<view class="slot-content">
<view class="slot-content-Tips">
瑞幸咖啡点餐为<text class="text1">第三方提供的点餐服务</text>该服务与瑞幸官方无关有问题请联系在线客服
</view>
<view class="slot-content-Tips2">
<view>
优惠点餐不支持开发票!
</view>
<view>
出餐后不支持退款
</view>
</view>
</view>
</template>
<template v-slot:confirmButton>
<view class="confirmButton" @tap="InforPage">
我知道了
</view>
</template>
</u-modal>
</view>
</template>
<script>
import mixin from '@/static/js/mixin/mixin.js';
import restaurantmixins from '@/static/js/mixin/restaurantmixins.js';
//
import {
restaurantQueryAPI,
storeCollectionListAPI
} from '@/request/restaurant/index.js';
// vuex
import {
mapGetters,
mapMutations
} from 'vuex';
export default {
mixins: [mixin,restaurantmixins],
name: "b-page-home",
data() {
return {
//
eattypeShow: false,
eat_type: 'EAT_IN',
//
temporaryData: [],
//
CollectiontemporaryData: [],
// /
StoreList: [{
page: 1,
count: 0,
list: []
},
{
page: 1,
count: 0,
list: []
},
],
// scroll
height: 0,
//
keyword: '',
// tabs
tabsconfig: {
//
index: 0,
scrollable: false,
//
lineWidth: '40',
//
lineColor: "#C63836",
list: [{
name: '附近餐厅',
}, {
name: '我的关注',
}]
},
//
loading: true,
};
},
computed: {
tabindex() {
return this['tabsconfig']['index']
},
Show(){
console.log(this['StoreList'][0]['list']['length'],'length');
console.log(this['loading'],'loading');
//
if(this['StoreList'][0]['list']['length'] <= 0 && !this['loading'] && this['height'] > 0){
return 1;
};
//
if(this['loading'] && this['height'] > 0){
return 2
}
}
// islist(){
// return this['StoreList'][0]['list']['length'] <= 0;
// }
},
watch: {
GetCityCode(val) {
console.log(val, '监听器');
//
this['StoreList'][0]['list'] = [];
this.GetList();
},
tabindex(val) {
if (val == 1) {
console.log(this['StoreList'][1]['list']);
this['StoreList'][1]['list'] = [];
this.GetstoreCollectionList();
}
}
},
mounted() {
console.log('进入选店组件');
this.GetList();
},
methods: {
/**
* @搜索
* */
search() {
if (this['tabsconfig']['index'] == 0) {
this['StoreList'][0]['page'] = 1;
this['StoreList'][0]['list'] = [];
this.GetList();
return
}
this['StoreList'][1]['page'] = 1;
this['StoreList'][1]['list'] = [];
this.GetstoreCollectionList();
},
/**
* @获取餐厅列表
* */
GetList() {
let self = this;
this['loading'] = true;
// DOM
setTimeout(()=>{
self.initScrollView({
el: 'content-top',
}).then(eres => {
self['height'] = eres;
let parameters = {
brand_id: this['BrandInfor']['brand_id'],
city_code: this.GetCityCode,
address: this['keyword'],
}
restaurantQueryAPI(parameters).then(res => {
console.log(res,'ressssssss');
self['loading'] = false;
if (res['data']['data']['length'] <= 0) {
uni.showToast({
title: '该区域暂无数据',
icon: 'none'
});
return;
}
//
if (res['data']['data']['length'] > 0) {
//
self['StoreList'][0]['count'] = res['data']['count'];
//
self['temporaryData'] = res['data']['data'];
self['StoreList'][0]['page'] += 1;
//
self.arrObtain('temporaryData', 0);
} else {
console.log('没数1');
}
}).catch(err=>{
self['loading'] = false;
})
})
},1000)
},
/**
* @获取关注冽表
* */
GetstoreCollectionList() {
let parameters = {
brand_id: this['BrandInfor']['brand_id'],
address: this['keyword'],
}
storeCollectionListAPI(parameters).then(data => {
if (data['data']['length'] > 0) {
//
this['StoreList'][1]['count'] = data['data']['count'];
//
this['CollectiontemporaryData'] = data['data']['data'];
this['StoreList'][1]['page'] += 1;
//
this.arrObtain('CollectiontemporaryData', 1);
} else {
console.log('没数');
}
})
},
/**
* @进入餐厅
* */
InforPage(item) {
uni.navigateTo({
url: `/pages/restaurant/home/shop_home/shop_home?restaurant_id=${this['GetShopInfor']['restaurant_id']}`,
success: () => {
this['eattypeShow'] = false;
}
})
},
/**
* @scroll触底时间
* */
scrolltolower() {
//
uni.$u.debounce(() => {
// 0
if (this['tabsconfig']['index'] == 0 && this['temporaryData']['length'] > 0) {
this.arrObtain('temporaryData', 0);
} else {
this.arrObtain('CollectiontemporaryData', 1);
}
}, 800, true)
},
/**
* @获取数据前十个
* */
arrObtain(key, index) {
let arr = this[key].splice(0, 9);
this['StoreList'][index]['list'].push(...arr);
console.log(this['StoreList'][index]['list'], 'list');
}
}
}
</script>
<style lang="scss">
// //
.content-top {
width: 100%;
height: auto;
background-color: #ffffff;
&-banner {
width: 100%;
height: 314rpx;
.img {
width: 100%;
height: 100%;
}
}
&-search {
background-color: #ffffff;
padding: 32rpx;
&-area-search {
padding: 0 32rpx;
box-sizing: border-box;
display: flex;
align-items: center;
&-text {
font-size: $FONTSIZE28;
display: flex;
align-items: center;
.icon-youjiantou {
font-size: $FONTSIZE25;
color: #666666;
margin: 0 15rpx;
}
}
}
}
}
//
.Store-List {
padding: 0 32rpx;
}
//
.slot-content-Tips {
font-size: 30rpx;
line-height: 40rpx;
.text1 {
color: #DB9F5E;
}
}
.slot-content-Tips2 {
width: 100%;
background-color: #FFF9F3;
margin-top: 20rpx;
color: #FF7910;
font-size: 26rpx;
line-height: 49rpx;
padding: 15rpx 32rpx;
}
.confirmButton{
background: #0122A4;
border-radius: 43px;
color: #ffffff;
font-size: 30rpx;
text-align: center;
line-height: 80rpx;
}
</style>

View File

@ -195,7 +195,7 @@
height: 60rpx;
color: #ffffff;
font-size: 28rpx;
background: linear-gradient(-77deg, #4A6FE7, #83ACFF);
background: #0122A4;
border-radius: 30rpx;
text-align: center;
line-height: 60rpx;

View File

@ -329,7 +329,7 @@
&-right {
width: 254rpx;
height: 86rpx;
background: linear-gradient(-77deg, #4A6FE7, #83ACFF);
background: #0122A4;
box-shadow: 0 6rpx 8rpx 0 rgba(74, 111, 231, 0.2300);
border-radius: 43rpx;
text-align: center;

View File

@ -96,7 +96,7 @@
}
if (this['BrandInfor']['brand_id'] == 13) {
return {
'background': 'linear-gradient(-77deg, #4A6FE7, #83ACFF)'
'background': '#0122A4'
};
}
}

View File

@ -1,244 +1,244 @@
<template>
<view class="Store-List-Item" @tap="itemclick">
<!-- 肯德基店铺列表样式 -->
<template v-if="BrandInfor['brand_id'] == 1">
<view class="Store-List-Item-Top">
<view class="Store-List-Item-Top-Name">
{{item['restaurant_name']}}
</view>
<b-restaurant-state></b-restaurant-state>
<view class="Store-List-Item-Top-distance">
{{item['distance']}}m
</view>
</view>
<view class="Store-List-Item-Area">
{{item['restaurant_address']}}
</view>
</template>
<!-- 瑞幸 -->
<template v-if="BrandInfor['brand_id'] == 13">
<view class="Store-List-Item-Top-RX">
<view class="Store-List-Item-Top-RX-Left">
<view class="Store-List-Item-Top-RX-Left-Title">
{{item['restaurant_name']}}
</view>
<b-restaurant-state :item="item"></b-restaurant-state>
</view>
<view class="Store-List-Item-Top-RX-Right" @tap.stop="openLocation(item['latitude'],item['longitude'])">
<img class="img" :src="qnyurl('Navigation.png','rx')" alt="">
<view class="Store-List-Item-Top-RX-Right-distance">
{{item['distance']}}km
</view>
</view>
</view>
<view class="Store-List-Item-Area-RX">
<image class="img" :src="qnyurl('areaicon.png','rx')" mode=""></image>
<view class="Store-List-Item-Area-RX-text">
{{item['restaurant_address']}}
</view>
</view>
</template>
<!-- 停店遮罩 -->
<view class="state-stop" v-if="item['is_open'] == 0"></view>
<!-- 闭店弹框 -->
<u-modal :show="show" title=" " borderRadius="20">
<template v-slot:default>
<view class="RX-slot-content">
<image class="img" :src="qnyurl('closureimg.png','rx')" mode=""></image>
<view class="text">
抱歉该门店未营业
</view>
</view>
</template>
<template v-slot:confirmButton>
<view class="RX-confirmButton">
<view class="btn" @tap="show = false">
确定
</view>
</view>
</template>
</u-modal>
</view>
</template>
<script>
/**
* @店铺列表组件
* */
import {
mapGetters,
} from 'vuex';
import mixin from '@/static/js/mixin/mixin.js';
export default {
name: "b-shop-list-item",
mixins: [mixin],
props: {
item: {
type: Object,
default: () => {}
}
},
computed: {
...mapGetters({
// Id
BrandInfor: 'shopping/BrandInfor',
}),
},
data() {
return {
//
show: false
};
},
methods: {
itemclick() {
if (this['item']['is_open'] == 0) {
this['show'] = true;
return;
}
this.$emit('itemclick', this['item'])
}
}
}
</script>
<style lang="scss">
//
.state-stop {
width: 100%;
height: 100%;
background-color: rgba(255, 255, 255, 0.3);
position: absolute;
top: 0;
left: 0;
z-index: 100;
}
.Store-List-Item {
width: 100%;
height: auto;
background-color: #ffffff;
border-radius: 15rpx;
min-height: 155rpx;
padding: 32rpx;
margin-top: 20rpx;
position: relative;
//
&-Top {
display: flex;
align-items: flex-end;
margin-bottom: 30rpx;
&-Name {
font-size: $FONTSIZE30;
color: $THEMECOLOR4;
margin-right: 20rpx;
}
&-distance {
font-size: $FONTSIZE26;
color: $THEMECOLOR5;
flex: 1;
text-align: right;
}
}
&-Area {
font-size: $FONTSIZE26;
}
//
&-Top-RX {
display: flex;
justify-content: space-between;
margin-bottom: 30rpx;
&-Left {
font-size: $FONTSIZE30;
color: $THEMECOLOR4;
&-Title {
margin-bottom: 20rpx;
font-weight: 700;
}
}
&-Right {
display: flex;
flex-direction: column;
align-items: center;
color: $THEMECOLOR6;
font-size: 26rpx;
.img {
width: 64rpx;
height: 64rpx;
}
&-distance {
margin-top: 15rpx;
}
}
}
&-Area-RX {
color: #999999;
font-size: $FONTSIZE24;
padding-top: 22rpx;
border-top: 1rpx solid #EDEEF0;
display: flex;
justify-content: flex-start;
align-items: center;
&-text {
word-break: break-all;
display: -webkit-box;
-webkit-line-clamp: 1;
-webkit-box-orient: vertical;
overflow: hidden;
}
.img {
width: 22rpx;
height: 26rpx;
margin-right: 15rpx;
}
}
}
// //
// .slot-content {
// display: flex;
// flex-direction: column;
// align-items: center;
// .img {
// width: 196rpx;
// height: 169rpx;
// margin-bottom: 32rpx;
// }
// .text {
// font-size: 32rpx;
// color: #333333;
// }
// }
// .confirmButton {
// display: flex;
// justify-content: center;
// .btn {
// width: 470rpx;
// height: 86rpx;
// background: linear-gradient(-77deg, #4A6FE7, #83ACFF);
// border-radius: 43rpx;
// font-size: 30rpx;
// color: #ffffff;
// text-align: center;
// line-height: 86rpx;
// }
// }
</style>
<template>
<view class="Store-List-Item" @tap="itemclick">
<!-- 肯德基店铺列表样式 -->
<template v-if="BrandInfor['brand_id'] == 1">
<view class="Store-List-Item-Top">
<view class="Store-List-Item-Top-Name">
{{item['restaurant_name']}}
</view>
<b-restaurant-state></b-restaurant-state>
<view class="Store-List-Item-Top-distance">
{{item['distance']}}m
</view>
</view>
<view class="Store-List-Item-Area">
{{item['restaurant_address']}}
</view>
</template>
<!-- 瑞幸 -->
<template v-if="BrandInfor['brand_id'] == 13">
<view class="Store-List-Item-Top-RX">
<view class="Store-List-Item-Top-RX-Left">
<view class="Store-List-Item-Top-RX-Left-Title">
{{item['restaurant_name']}}
</view>
<b-restaurant-state :item="item"></b-restaurant-state>
</view>
<view class="Store-List-Item-Top-RX-Right" @tap.stop="openLocation(item['latitude'],item['longitude'])">
<img class="img" :src="qnyurl('Navigation.png','rx')" alt="">
<view class="Store-List-Item-Top-RX-Right-distance">
{{item['distance']}}km
</view>
</view>
</view>
<view class="Store-List-Item-Area-RX">
<image class="img" :src="qnyurl('areaicon.png','rx')" mode=""></image>
<view class="Store-List-Item-Area-RX-text">
{{item['restaurant_address']}}
</view>
</view>
</template>
<!-- 停店遮罩 -->
<view class="state-stop" v-if="item['is_open'] == 0"></view>
<!-- 闭店弹框 -->
<u-modal :show="show" title=" " borderRadius="20">
<template v-slot:default>
<view class="RX-slot-content">
<image class="img" :src="qnyurl('closureimg.png','rx')" mode=""></image>
<view class="text">
抱歉该门店未营业
</view>
</view>
</template>
<template v-slot:confirmButton>
<view class="RX-confirmButton">
<view class="btn" @tap="show = false">
确定
</view>
</view>
</template>
</u-modal>
</view>
</template>
<script>
/**
* @店铺列表组件
* */
import {
mapGetters,
} from 'vuex';
import mixin from '@/static/js/mixin/mixin.js';
export default {
name: "b-shop-list-item",
mixins: [mixin],
props: {
item: {
type: Object,
default: () => {}
}
},
computed: {
...mapGetters({
// Id
BrandInfor: 'shopping/BrandInfor',
}),
},
data() {
return {
//
show: false
};
},
methods: {
itemclick() {
if (this['item']['is_open'] == 0) {
this['show'] = true;
return;
}
this.$emit('itemclick', this['item'])
}
}
}
</script>
<style lang="scss">
//
.state-stop {
width: 100%;
height: 100%;
background-color: rgba(255, 255, 255, 0.3);
position: absolute;
top: 0;
left: 0;
z-index: 100;
}
.Store-List-Item {
width: 100%;
height: auto;
background-color: #ffffff;
border-radius: 15rpx;
min-height: 155rpx;
padding: 32rpx;
margin-top: 20rpx;
position: relative;
//
&-Top {
display: flex;
align-items: flex-end;
margin-bottom: 30rpx;
&-Name {
font-size: $FONTSIZE30;
color: $THEMECOLOR4;
margin-right: 20rpx;
}
&-distance {
font-size: $FONTSIZE26;
color: $THEMECOLOR5;
flex: 1;
text-align: right;
}
}
&-Area {
font-size: $FONTSIZE26;
}
//
&-Top-RX {
display: flex;
justify-content: space-between;
margin-bottom: 30rpx;
&-Left {
font-size: $FONTSIZE30;
color: $THEMECOLOR4;
&-Title {
margin-bottom: 20rpx;
font-weight: 700;
}
}
&-Right {
display: flex;
flex-direction: column;
align-items: center;
color: $THEMECOLOR6;
font-size: 26rpx;
.img {
width: 64rpx;
height: 64rpx;
}
&-distance {
margin-top: 15rpx;
}
}
}
&-Area-RX {
color: #999999;
font-size: $FONTSIZE24;
padding-top: 22rpx;
border-top: 1rpx solid #EDEEF0;
display: flex;
justify-content: flex-start;
align-items: center;
&-text {
word-break: break-all;
display: -webkit-box;
-webkit-line-clamp: 1;
-webkit-box-orient: vertical;
overflow: hidden;
}
.img {
width: 22rpx;
height: 26rpx;
margin-right: 15rpx;
}
}
}
// //
// .slot-content {
// display: flex;
// flex-direction: column;
// align-items: center;
// .img {
// width: 196rpx;
// height: 169rpx;
// margin-bottom: 32rpx;
// }
// .text {
// font-size: 32rpx;
// color: #333333;
// }
// }
// .confirmButton {
// display: flex;
// justify-content: center;
// .btn {
// width: 470rpx;
// height: 86rpx;
// background: #0122A4;
// border-radius: 43rpx;
// font-size: 30rpx;
// color: #ffffff;
// text-align: center;
// line-height: 86rpx;
// }
// }
</style>

File diff suppressed because it is too large Load Diff

View File

@ -1,396 +1,396 @@
<template>
<view class="b-page-home">
<view class="content-top">
<view class="content-top-banner">
<image class="img" :src="qnyurl('banner-1.jpg','rx')" mode=""></image>
</view>
<!-- 地址/搜索/选择 -->
<view class="content-top-search">
<view class="content-top-search-area-search">
<navigator url="/pages/restaurant/arealist/arealist" hover-class="none">
<view class="content-top-search-area-search-text">
<!-- 第一次获取肯定是获取不到的主要是动态显示用户改变的地址 -->
{{UserArae1?UserArae1:UserArae2}}
<view
style="width: 50rpx;height: 30rpx;display: flex;justify-content: center;align-items: center;">
<image style="width: 15rpx;height: 12rpx;" class="img" :src="qnyurl('xiala.jpg','rx')">
</image>
</view>
</view>
</navigator>
<u-search placeholder="输入门店名称查询" :showAction="false" v-model="keyword" @search="search">
</u-search>
</view>
<!-- 收藏项 -->
<!-- <view class="content-top-search-tabs">
<u-tabs @change="e=>{tabsconfig['index'] = e['index']}" :list="tabsconfig['list']"
:scrollable="tabsconfig['scrollable']" :lineColor="tabsconfig['lineColor']"
:lineWidth="tabsconfig['lineWidth']"></u-tabs>
</view> -->
</view>
</view>
<!-- 店铺列表 -->
<!-- 因为骨架屏的颜色和UI设置背景色冲突所以在没有列表元素时先将背景色设置为白色 -->
<view class="Store-List" :style="{height:`${height}rpx`,'background-color':'#F2F2F2'}">
<!-- 附近餐厅 -->
<view v-show="tabsconfig['index'] == 0">
<scroll-view scroll-y="true" class="scroll-Y" :style="{height:`${height}rpx`,'position': 'relative'}"
@scrolltolower="scrolltolower">
<!-- 骨架屏占位元素 -->
<template v-if="StoreList[0]['list']['length'] > 0">
<!-- 组件内部会获取到品牌类型,从而显示对应类型的店铺列表样式 -->
<view style="padding-bottom: 32rpx;" v-for="(item,index) in StoreList[0]['list']">
<!-- 店铺列表样式 -->
<b-shop-list-item :item="item" :key="index" @itemclick="this.SETSHOPDETAIL(item);eattypeShow = true">
</b-shop-list-item>
</view>
</template>
<template v-else>
<!-- 必须先确保scoll有高度 -->
<!-- 缺省图 -->
<view class="default" v-if="Show == 1">
<img class="img" :src="qnyurl('default.png','rx')" alt="">
<text>该地区暂无门店信息</text>
</view>
<!-- 加载中 -->
<b-load :show="Show == 2" position="absolute" background="transparent" width="79" height="80" color="#000000"></b-load>
</template>
<!-- <b-shop-load type="load" width="79" height="74" :show="loading"></b-shop-load> -->
</scroll-view>
</view>
</view>
<u-modal :show="eattypeShow" title="温馨提示" width="580rpx">
<template v-slot:default>
<view class="slot-content">
<view class="slot-content-Tips">
瑞幸咖啡点餐为<text class="text1">第三方提供的点餐服务</text>该服务与瑞幸官方无关有问题请联系在线客服
</view>
<view class="slot-content-Tips2">
<view>
优惠点餐不支持开发票!
</view>
<view>
出餐后不支持退款
</view>
</view>
</view>
</template>
<template v-slot:confirmButton>
<view class="confirmButton" @tap="InforPage">
我知道了
</view>
</template>
</u-modal>
</view>
</template>
<script>
import mixin from '@/static/js/mixin/mixin.js';
import restaurantmixins from '@/static/js/mixin/restaurantmixins.js';
//
import {
restaurantQueryAPI,
storeCollectionListAPI
} from '@/request/restaurant/index.js';
// vuex
import {
mapGetters,
mapMutations
} from 'vuex';
export default {
mixins: [mixin,restaurantmixins],
name: "b-page-home",
data() {
return {
//
eattypeShow: false,
eat_type: 'EAT_IN',
//
temporaryData: [],
//
CollectiontemporaryData: [],
// /
StoreList: [{
page: 1,
count: 0,
list: []
},
{
page: 1,
count: 0,
list: []
},
],
// scroll
height: 0,
//
keyword: '',
// tabs
tabsconfig: {
//
index: 0,
scrollable: false,
//
lineWidth: '40',
//
lineColor: "#C63836",
list: [{
name: '附近餐厅',
}, {
name: '我的关注',
}]
},
//
loading: true,
};
},
computed: {
tabindex() {
return this['tabsconfig']['index']
},
Show(){
console.log(this['StoreList'][0]['list']['length'],'length');
console.log(this['loading'],'loading');
//
if(this['StoreList'][0]['list']['length'] <= 0 && !this['loading'] && this['height'] > 0){
return 1;
};
//
if(this['loading'] && this['height'] > 0){
return 2
}
}
// islist(){
// return this['StoreList'][0]['list']['length'] <= 0;
// }
},
watch: {
GetCityCode(val) {
console.log(val, '监听器');
//
this['StoreList'][0]['list'] = [];
this.GetList();
},
tabindex(val) {
if (val == 1) {
console.log(this['StoreList'][1]['list']);
this['StoreList'][1]['list'] = [];
this.GetstoreCollectionList();
}
}
},
mounted() {
console.log('进入选店组件');
this.GetList();
},
methods: {
/**
* @搜索
* */
search() {
if (this['tabsconfig']['index'] == 0) {
this['StoreList'][0]['page'] = 1;
this['StoreList'][0]['list'] = [];
this.GetList();
return
}
this['StoreList'][1]['page'] = 1;
this['StoreList'][1]['list'] = [];
this.GetstoreCollectionList();
},
/**
* @获取餐厅列表
* */
GetList() {
let self = this;
this['loading'] = true;
// DOM
setTimeout(()=>{
self.initScrollView({
el: 'content-top',
}).then(eres => {
self['height'] = eres;
let parameters = {
brand_id: this['BrandInfor']['brand_id'],
city_code: this.GetCityCode,
address: this['keyword'],
}
restaurantQueryAPI(parameters).then(res => {
console.log(res,'ressssssss');
self['loading'] = false;
if (res['data']['data']['length'] <= 0) {
uni.showToast({
title: '该区域暂无数据',
icon: 'none'
});
return;
}
//
if (res['data']['data']['length'] > 0) {
//
self['StoreList'][0]['count'] = res['data']['count'];
//
self['temporaryData'] = res['data']['data'];
self['StoreList'][0]['page'] += 1;
//
self.arrObtain('temporaryData', 0);
} else {
console.log('没数1');
}
}).catch(err=>{
self['loading'] = false;
})
})
},1000)
},
/**
* @获取关注冽表
* */
GetstoreCollectionList() {
let parameters = {
brand_id: this['BrandInfor']['brand_id'],
address: this['keyword'],
}
storeCollectionListAPI(parameters).then(data => {
if (data['data']['length'] > 0) {
//
this['StoreList'][1]['count'] = data['data']['count'];
//
this['CollectiontemporaryData'] = data['data']['data'];
this['StoreList'][1]['page'] += 1;
//
this.arrObtain('CollectiontemporaryData', 1);
} else {
console.log('没数');
}
})
},
/**
* @进入餐厅
* */
InforPage(item) {
uni.navigateTo({
url: `/pages/restaurant/home/shop_home/shop_home?restaurant_id=${this['GetShopInfor']['restaurant_id']}`,
success: () => {
this['eattypeShow'] = false;
}
})
},
/**
* @scroll触底时间
* */
scrolltolower() {
//
uni.$u.debounce(() => {
// 0
if (this['tabsconfig']['index'] == 0 && this['temporaryData']['length'] > 0) {
this.arrObtain('temporaryData', 0);
} else {
this.arrObtain('CollectiontemporaryData', 1);
}
}, 800, true)
},
/**
* @获取数据前十个
* */
arrObtain(key, index) {
let arr = this[key].splice(0, 9);
this['StoreList'][index]['list'].push(...arr);
console.log(this['StoreList'][index]['list'], 'list');
}
}
}
</script>
<style lang="scss">
// //
.content-top {
width: 100%;
height: auto;
background-color: #ffffff;
&-banner {
width: 100%;
height: 314rpx;
.img {
width: 100%;
height: 100%;
}
}
&-search {
background-color: #ffffff;
padding: 32rpx;
&-area-search {
padding: 0 32rpx;
box-sizing: border-box;
display: flex;
align-items: center;
&-text {
font-size: $FONTSIZE28;
display: flex;
align-items: center;
.icon-youjiantou {
font-size: $FONTSIZE25;
color: #666666;
margin: 0 15rpx;
}
}
}
}
}
//
.Store-List {
padding: 0 32rpx;
}
//
.slot-content-Tips {
font-size: 30rpx;
line-height: 40rpx;
.text1 {
color: #DB9F5E;
}
}
.slot-content-Tips2 {
width: 100%;
background-color: #FFF9F3;
margin-top: 20rpx;
color: #FF7910;
font-size: 26rpx;
line-height: 49rpx;
padding: 15rpx 32rpx;
}
.confirmButton{
background: linear-gradient(-77deg, #4A6FE7, #83ACFF);
border-radius: 43px;
color: #ffffff;
font-size: 30rpx;
text-align: center;
line-height: 80rpx;
}
</style>
<template>
<view class="b-page-home">
<view class="content-top">
<view class="content-top-banner">
<image class="img" :src="qnyurl('banner-1.jpg','rx')" mode=""></image>
</view>
<!-- 地址/搜索/选择 -->
<view class="content-top-search">
<view class="content-top-search-area-search">
<navigator url="/pages/restaurant/arealist/arealist" hover-class="none">
<view class="content-top-search-area-search-text">
<!-- 第一次获取肯定是获取不到的主要是动态显示用户改变的地址 -->
{{UserArae1?UserArae1:UserArae2}}
<view
style="width: 50rpx;height: 30rpx;display: flex;justify-content: center;align-items: center;">
<image style="width: 15rpx;height: 12rpx;" class="img" :src="qnyurl('xiala.jpg','rx')">
</image>
</view>
</view>
</navigator>
<u-search placeholder="输入门店名称查询" :showAction="false" v-model="keyword" @search="search">
</u-search>
</view>
<!-- 收藏项 -->
<!-- <view class="content-top-search-tabs">
<u-tabs @change="e=>{tabsconfig['index'] = e['index']}" :list="tabsconfig['list']"
:scrollable="tabsconfig['scrollable']" :lineColor="tabsconfig['lineColor']"
:lineWidth="tabsconfig['lineWidth']"></u-tabs>
</view> -->
</view>
</view>
<!-- 店铺列表 -->
<!-- 因为骨架屏的颜色和UI设置背景色冲突所以在没有列表元素时先将背景色设置为白色 -->
<view class="Store-List" :style="{height:`${height}rpx`,'background-color':'#F2F2F2'}">
<!-- 附近餐厅 -->
<view v-show="tabsconfig['index'] == 0">
<scroll-view scroll-y="true" class="scroll-Y" :style="{height:`${height}rpx`,'position': 'relative'}"
@scrolltolower="scrolltolower">
<!-- 骨架屏占位元素 -->
<template v-if="StoreList[0]['list']['length'] > 0">
<!-- 组件内部会获取到品牌类型,从而显示对应类型的店铺列表样式 -->
<view style="padding-bottom: 32rpx;" v-for="(item,index) in StoreList[0]['list']">
<!-- 店铺列表样式 -->
<b-shop-list-item :item="item" :key="index" @itemclick="this.SETSHOPDETAIL(item);eattypeShow = true">
</b-shop-list-item>
</view>
</template>
<template v-else>
<!-- 必须先确保scoll有高度 -->
<!-- 缺省图 -->
<view class="default" v-if="Show == 1">
<img class="img" :src="qnyurl('default.png','rx')" alt="">
<text>该地区暂无门店信息</text>
</view>
<!-- 加载中 -->
<b-load :show="Show == 2" position="absolute" background="transparent" width="79" height="80" color="#000000"></b-load>
</template>
<!-- <b-shop-load type="load" width="79" height="74" :show="loading"></b-shop-load> -->
</scroll-view>
</view>
</view>
<u-modal :show="eattypeShow" title="温馨提示" width="580rpx">
<template v-slot:default>
<view class="slot-content">
<view class="slot-content-Tips">
瑞幸咖啡点餐为<text class="text1">第三方提供的点餐服务</text>该服务与瑞幸官方无关有问题请联系在线客服
</view>
<view class="slot-content-Tips2">
<view>
优惠点餐不支持开发票!
</view>
<view>
出餐后不支持退款
</view>
</view>
</view>
</template>
<template v-slot:confirmButton>
<view class="confirmButton" @tap="InforPage">
我知道了
</view>
</template>
</u-modal>
</view>
</template>
<script>
import mixin from '@/static/js/mixin/mixin.js';
import restaurantmixins from '@/static/js/mixin/restaurantmixins.js';
//
import {
restaurantQueryAPI,
storeCollectionListAPI
} from '@/request/restaurant/index.js';
// vuex
import {
mapGetters,
mapMutations
} from 'vuex';
export default {
mixins: [mixin,restaurantmixins],
name: "b-page-home",
data() {
return {
//
eattypeShow: false,
eat_type: 'EAT_IN',
//
temporaryData: [],
//
CollectiontemporaryData: [],
// /
StoreList: [{
page: 1,
count: 0,
list: []
},
{
page: 1,
count: 0,
list: []
},
],
// scroll
height: 0,
//
keyword: '',
// tabs
tabsconfig: {
//
index: 0,
scrollable: false,
//
lineWidth: '40',
//
lineColor: "#C63836",
list: [{
name: '附近餐厅',
}, {
name: '我的关注',
}]
},
//
loading: true,
};
},
computed: {
tabindex() {
return this['tabsconfig']['index']
},
Show(){
console.log(this['StoreList'][0]['list']['length'],'length');
console.log(this['loading'],'loading');
//
if(this['StoreList'][0]['list']['length'] <= 0 && !this['loading'] && this['height'] > 0){
return 1;
};
//
if(this['loading'] && this['height'] > 0){
return 2
}
}
// islist(){
// return this['StoreList'][0]['list']['length'] <= 0;
// }
},
watch: {
GetCityCode(val) {
console.log(val, '监听器');
//
this['StoreList'][0]['list'] = [];
this.GetList();
},
tabindex(val) {
if (val == 1) {
console.log(this['StoreList'][1]['list']);
this['StoreList'][1]['list'] = [];
this.GetstoreCollectionList();
}
}
},
mounted() {
console.log('进入选店组件');
this.GetList();
},
methods: {
/**
* @搜索
* */
search() {
if (this['tabsconfig']['index'] == 0) {
this['StoreList'][0]['page'] = 1;
this['StoreList'][0]['list'] = [];
this.GetList();
return
}
this['StoreList'][1]['page'] = 1;
this['StoreList'][1]['list'] = [];
this.GetstoreCollectionList();
},
/**
* @获取餐厅列表
* */
GetList() {
let self = this;
this['loading'] = true;
// DOM
setTimeout(()=>{
self.initScrollView({
el: 'content-top',
}).then(eres => {
self['height'] = eres;
let parameters = {
brand_id: this['BrandInfor']['brand_id'],
city_code: this.GetCityCode,
address: this['keyword'],
}
restaurantQueryAPI(parameters).then(res => {
console.log(res,'ressssssss');
self['loading'] = false;
if (res['data']['data']['length'] <= 0) {
uni.showToast({
title: '该区域暂无数据',
icon: 'none'
});
return;
}
//
if (res['data']['data']['length'] > 0) {
//
self['StoreList'][0]['count'] = res['data']['count'];
//
self['temporaryData'] = res['data']['data'];
self['StoreList'][0]['page'] += 1;
//
self.arrObtain('temporaryData', 0);
} else {
console.log('没数1');
}
}).catch(err=>{
self['loading'] = false;
})
})
},1000)
},
/**
* @获取关注冽表
* */
GetstoreCollectionList() {
let parameters = {
brand_id: this['BrandInfor']['brand_id'],
address: this['keyword'],
}
storeCollectionListAPI(parameters).then(data => {
if (data['data']['length'] > 0) {
//
this['StoreList'][1]['count'] = data['data']['count'];
//
this['CollectiontemporaryData'] = data['data']['data'];
this['StoreList'][1]['page'] += 1;
//
this.arrObtain('CollectiontemporaryData', 1);
} else {
console.log('没数');
}
})
},
/**
* @进入餐厅
* */
InforPage(item) {
uni.navigateTo({
url: `/pages/restaurant/home/shop_home/shop_home?restaurant_id=${this['GetShopInfor']['restaurant_id']}`,
success: () => {
this['eattypeShow'] = false;
}
})
},
/**
* @scroll触底时间
* */
scrolltolower() {
//
uni.$u.debounce(() => {
// 0
if (this['tabsconfig']['index'] == 0 && this['temporaryData']['length'] > 0) {
this.arrObtain('temporaryData', 0);
} else {
this.arrObtain('CollectiontemporaryData', 1);
}
}, 800, true)
},
/**
* @获取数据前十个
* */
arrObtain(key, index) {
let arr = this[key].splice(0, 9);
this['StoreList'][index]['list'].push(...arr);
console.log(this['StoreList'][index]['list'], 'list');
}
}
}
</script>
<style lang="scss">
// //
.content-top {
width: 100%;
height: auto;
background-color: #ffffff;
&-banner {
width: 100%;
height: 314rpx;
.img {
width: 100%;
height: 100%;
}
}
&-search {
background-color: #ffffff;
padding: 32rpx;
&-area-search {
padding: 0 32rpx;
box-sizing: border-box;
display: flex;
align-items: center;
&-text {
font-size: $FONTSIZE28;
display: flex;
align-items: center;
.icon-youjiantou {
font-size: $FONTSIZE25;
color: #666666;
margin: 0 15rpx;
}
}
}
}
}
//
.Store-List {
padding: 0 32rpx;
}
//
.slot-content-Tips {
font-size: 30rpx;
line-height: 40rpx;
.text1 {
color: #DB9F5E;
}
}
.slot-content-Tips2 {
width: 100%;
background-color: #FFF9F3;
margin-top: 20rpx;
color: #FF7910;
font-size: 26rpx;
line-height: 49rpx;
padding: 15rpx 32rpx;
}
.confirmButton{
background: #0122A4;
border-radius: 43px;
color: #ffffff;
font-size: 30rpx;
text-align: center;
line-height: 80rpx;
}
</style>

View File

@ -1,267 +1,267 @@
<template>
<view class="b-rx-shop-item">
<view class="b-rx-shop-item-commodity">
<image class="b-rx-shop-item-commodity-img" :src="item['product_img']" mode=""></image>
</view>
<view class="b-rx-shop-item-commodity-infor">
<!-- 商品标题 -->
<view class="b-rx-shop-item-commodity-infor-title b-rx-shop-item-commodity-infor-bottom">
{{item['product_name']}}
</view>
<!-- 补贴金额 -->
<view v-if="item['max_deduction'] > 0"
class="b-rx-shop-item-commodity-infor-discount b-rx-shop-item-commodity-infor-bottom">
最高补贴{{RetainDecimalPoint(item['max_deduction'])}}面额
</view>
<!-- 价格 -->
<view class="b-rx-shop-item-commodity-infor-original-price b-rx-shop-item-commodity-infor-bottom">
<text class="yang">原价:</text>
<text class="price">{{RetainDecimalPoint(item['pay_price'])}}</text>
</view>
<!-- 优惠补贴后的价格 -->
<view class="b-rx-shop-item-commodity-infor-price b-rx-shop-item-commodity-infor-bottom">
<text class="yang">补贴后价格:</text>
<text class="price">{{RetainDecimalPoint(item['pay_price'] - item['max_deduction'])}}</text>
</view>
<!-- 直接添加商品 -->
<!-- <view class="b-kfc-shop-item-commodity-infor-shopping-cart" v-if="shopCart['num'] > 0">
<image class="img" :src="qnyurl('reduce.png','rx')" mode=""
@tap="reducecommodity"></image>
<view class="num">
{{shopCart['num']}}
</view>
<image class="img" :src="qnyurl('add.png','rx')" mode="" @tap="GetCommodity"></image>
</view> -->
<!-- 需要选择规格 -->
<view class="b-rx-shop-item-commodity-infor-shopping-cart-sku" @tap="$u.debounce(GetCommodity, 800,true)">
<view class="b-rx-shop-item-commodity-infor-shopping-cart-sku-btn" :style="[Btnstyle]">
<u-badge v-if="NumValu > 0" :offset="[-6,-5]" max="99" absolute :value="NumValu"></u-badge>
选规格
</view>
</view>
</view>
</view>
</template>
<script>
/**
* @肯德基店铺商品组件
* */
//
import mixin from '@/static/js/mixin/mixin.js';
import restaurantmixins from '@/static/js/mixin/restaurantmixins.js';
//
import {
GetmenuDetailsAPI,
} from '@/common/api/restaurant.js';
import {
mapMutations
} from 'vuex'
export default {
mixins: [mixin, restaurantmixins],
name: "b-rx-shop-item",
props: {
item: {
type: Object,
default: () => {}
}
},
data() {
return {};
},
computed: {
//
shopCart: function() {
try {
return this['GetCartList'][this['item']['product_id']];
} catch (e) {
return 0
}
},
NumValu(){
try{
return this['GetCartList'][this['item']['product_id']]['num']
}catch(e){
return 0
}
},
//
Btnstyle() {
if (this['BrandInfor']['brand_id'] == 10) {
return {
'background': '#00AF66'
};
}
if (this['BrandInfor']['brand_id'] == 13) {
return {
'background': 'linear-gradient(-77deg, #4A6FE7, #83ACFF)'
};
}
}
},
methods: {
...mapMutations({
SetcommodityInfor: 'shopping/SETINFOR'
}),
//
GetCommodity() {
uni.showLoading({
title: '加载中...'
});
let parameters = {
brand_id: this['BrandInfor']['brand_id'],
restaurant_id: this['GetShopInfor']['restaurant_id'],
product_id: this['item']['product_id']
}
GetmenuDetailsAPI(parameters).then(res => {
uni.hideLoading();
//
res['num'] = 1;
this.SetcommodityInfor(res);
if (this['BrandInfor']['brand_id'] == 10) {
this['$parent']['$refs']['b-xbk-sku-popup']['show'] = true;
console.log(this['BrandInfor']['brand_id'],'执行1')
};
if (this['BrandInfor']['brand_id'] == 13) {
this['$parent']['$refs']['b-rx-sku-popup']['show'] = true;
console.log(this['BrandInfor']['brand_id'],'执行2')
}
})
}
}
}
</script>
<style lang="scss">
.b-rx-shop-item {
width: 100%;
height: auto;
display: flex;
justify-content: flex-start;
&-commodity {
width: 220rpx;
height: 195rpx;
max-width: 220rpx;
max-height: 195rpx;
min-width: 220rpx;
min-height: 195rpx;
border-radius: 10rpx;
overflow: hidden;
&-img {
width: 100%;
height: 100%;
}
}
&-commodity-infor {
flex: 1;
padding-left: 22rpx;
&-bottom {
margin-bottom: 15rpx;
}
&-title {
font-size: $FONTSIZE26;
color: $THEMECOLOR4;
}
&-discount {
background-color: #FFDADA;
border-radius: 50rpx;
color: $THEMECOLOR1;
font-size: $FONTSIZE22;
padding: 5rpx 15rpx;
display: inline-block;
}
&-original-price {
.yang {
font-size: $FONTSIZE22;
}
.price {
font-size: $FONTSIZE22;
}
}
&-price {
color: $THEMECOLOR1;
.yang {
font-size: $FONTSIZE22;
}
.price {
font-size: $FONTSIZE30;
}
}
&-shopping-cart {
flex: 1;
height: 60rpx;
display: flex;
justify-content: flex-end;
font-size: 36rpx;
align-items: center;
.num {
max-width: 100rpx;
min-width: 100rpx;
text-align: center;
}
.img {
width: 42rpx;
height: 42rpx;
}
}
&-shopping-cart-sku {
flex: 1;
height: 60rpx;
display: flex;
justify-content: flex-end;
font-size: 36rpx;
align-items: center;
&-btn {
width: 106rpx;
height: 50rpx;
position: relative;
border-radius: 25rpx;
color: #ffffff;
text-align: center;
line-height: 50rpx;
font-size: 24rpx;
}
}
}
}
.b-kfc-shop-item-commodity-infor-shopping-cart {
flex: 1;
height: 60rpx;
display: flex;
justify-content: flex-end;
font-size: 36rpx;
align-items: center;
.num {
max-width: 100rpx;
min-width: 100rpx;
text-align: center;
}
.img {
width: 42rpx;
height: 42rpx;
}
}
</style>
<template>
<view class="b-rx-shop-item">
<view class="b-rx-shop-item-commodity">
<image class="b-rx-shop-item-commodity-img" :src="item['product_img']" mode=""></image>
</view>
<view class="b-rx-shop-item-commodity-infor">
<!-- 商品标题 -->
<view class="b-rx-shop-item-commodity-infor-title b-rx-shop-item-commodity-infor-bottom">
{{item['product_name']}}
</view>
<!-- 补贴金额 -->
<view v-if="item['max_deduction'] > 0"
class="b-rx-shop-item-commodity-infor-discount b-rx-shop-item-commodity-infor-bottom">
最高补贴{{RetainDecimalPoint(item['max_deduction'])}}面额
</view>
<!-- 价格 -->
<view class="b-rx-shop-item-commodity-infor-original-price b-rx-shop-item-commodity-infor-bottom">
<text class="yang">原价:</text>
<text class="price">{{RetainDecimalPoint(item['pay_price'])}}</text>
</view>
<!-- 优惠补贴后的价格 -->
<view class="b-rx-shop-item-commodity-infor-price b-rx-shop-item-commodity-infor-bottom">
<text class="yang">补贴后价格:</text>
<text class="price">{{RetainDecimalPoint(item['pay_price'] - item['max_deduction'])}}</text>
</view>
<!-- 直接添加商品 -->
<!-- <view class="b-kfc-shop-item-commodity-infor-shopping-cart" v-if="shopCart['num'] > 0">
<image class="img" :src="qnyurl('reduce.png','rx')" mode=""
@tap="reducecommodity"></image>
<view class="num">
{{shopCart['num']}}
</view>
<image class="img" :src="qnyurl('add.png','rx')" mode="" @tap="GetCommodity"></image>
</view> -->
<!-- 需要选择规格 -->
<view class="b-rx-shop-item-commodity-infor-shopping-cart-sku" @tap="$u.debounce(GetCommodity, 800,true)">
<view class="b-rx-shop-item-commodity-infor-shopping-cart-sku-btn" :style="[Btnstyle]">
<u-badge v-if="NumValu > 0" :offset="[-6,-5]" max="99" absolute :value="NumValu"></u-badge>
选规格
</view>
</view>
</view>
</view>
</template>
<script>
/**
* @肯德基店铺商品组件
* */
//
import mixin from '@/static/js/mixin/mixin.js';
import restaurantmixins from '@/static/js/mixin/restaurantmixins.js';
//
import {
GetmenuDetailsAPI,
} from '@/common/api/restaurant.js';
import {
mapMutations
} from 'vuex'
export default {
mixins: [mixin, restaurantmixins],
name: "b-rx-shop-item",
props: {
item: {
type: Object,
default: () => {}
}
},
data() {
return {};
},
computed: {
//
shopCart: function() {
try {
return this['GetCartList'][this['item']['product_id']];
} catch (e) {
return 0
}
},
NumValu(){
try{
return this['GetCartList'][this['item']['product_id']]['num']
}catch(e){
return 0
}
},
//
Btnstyle() {
if (this['BrandInfor']['brand_id'] == 10) {
return {
'background': '#00AF66'
};
}
if (this['BrandInfor']['brand_id'] == 13) {
return {
'background': '#0122A4'
};
}
}
},
methods: {
...mapMutations({
SetcommodityInfor: 'shopping/SETINFOR'
}),
//
GetCommodity() {
uni.showLoading({
title: '加载中...'
});
let parameters = {
brand_id: this['BrandInfor']['brand_id'],
restaurant_id: this['GetShopInfor']['restaurant_id'],
product_id: this['item']['product_id']
}
GetmenuDetailsAPI(parameters).then(res => {
uni.hideLoading();
//
res['num'] = 1;
this.SetcommodityInfor(res);
if (this['BrandInfor']['brand_id'] == 10) {
this['$parent']['$refs']['b-xbk-sku-popup']['show'] = true;
console.log(this['BrandInfor']['brand_id'],'执行1')
};
if (this['BrandInfor']['brand_id'] == 13) {
this['$parent']['$refs']['b-rx-sku-popup']['show'] = true;
console.log(this['BrandInfor']['brand_id'],'执行2')
}
})
}
}
}
</script>
<style lang="scss">
.b-rx-shop-item {
width: 100%;
height: auto;
display: flex;
justify-content: flex-start;
&-commodity {
width: 220rpx;
height: 195rpx;
max-width: 220rpx;
max-height: 195rpx;
min-width: 220rpx;
min-height: 195rpx;
border-radius: 10rpx;
overflow: hidden;
&-img {
width: 100%;
height: 100%;
}
}
&-commodity-infor {
flex: 1;
padding-left: 22rpx;
&-bottom {
margin-bottom: 15rpx;
}
&-title {
font-size: $FONTSIZE26;
color: $THEMECOLOR4;
}
&-discount {
background-color: #FFDADA;
border-radius: 50rpx;
color: $THEMECOLOR1;
font-size: $FONTSIZE22;
padding: 5rpx 15rpx;
display: inline-block;
}
&-original-price {
.yang {
font-size: $FONTSIZE22;
}
.price {
font-size: $FONTSIZE22;
}
}
&-price {
color: $THEMECOLOR1;
.yang {
font-size: $FONTSIZE22;
}
.price {
font-size: $FONTSIZE30;
}
}
&-shopping-cart {
flex: 1;
height: 60rpx;
display: flex;
justify-content: flex-end;
font-size: 36rpx;
align-items: center;
.num {
max-width: 100rpx;
min-width: 100rpx;
text-align: center;
}
.img {
width: 42rpx;
height: 42rpx;
}
}
&-shopping-cart-sku {
flex: 1;
height: 60rpx;
display: flex;
justify-content: flex-end;
font-size: 36rpx;
align-items: center;
&-btn {
width: 106rpx;
height: 50rpx;
position: relative;
border-radius: 25rpx;
color: #ffffff;
text-align: center;
line-height: 50rpx;
font-size: 24rpx;
}
}
}
}
.b-kfc-shop-item-commodity-infor-shopping-cart {
flex: 1;
height: 60rpx;
display: flex;
justify-content: flex-end;
font-size: 36rpx;
align-items: center;
.num {
max-width: 100rpx;
min-width: 100rpx;
text-align: center;
}
.img {
width: 42rpx;
height: 42rpx;
}
}
</style>

View File

@ -1,244 +1,244 @@
<template>
<view class="Store-List-Item" @tap="itemclick">
<!-- 肯德基店铺列表样式 -->
<template v-if="BrandInfor['brand_id'] == 1">
<view class="Store-List-Item-Top">
<view class="Store-List-Item-Top-Name">
{{item['restaurant_name']}}
</view>
<b-restaurant-state></b-restaurant-state>
<view class="Store-List-Item-Top-distance">
{{item['distance']}}m
</view>
</view>
<view class="Store-List-Item-Area">
{{item['restaurant_address']}}
</view>
</template>
<!-- 瑞幸 -->
<template v-if="BrandInfor['brand_id'] == 13">
<view class="Store-List-Item-Top-RX">
<view class="Store-List-Item-Top-RX-Left">
<view class="Store-List-Item-Top-RX-Left-Title">
{{item['restaurant_name']}}
</view>
<b-restaurant-state :item="item"></b-restaurant-state>
</view>
<view class="Store-List-Item-Top-RX-Right" @tap.stop="openLocation(item['latitude'],item['longitude'])">
<img class="img" :src="qnyurl('Navigation.png','rx')" alt="">
<view class="Store-List-Item-Top-RX-Right-distance">
{{item['distance']}}km
</view>
</view>
</view>
<view class="Store-List-Item-Area-RX">
<image class="img" :src="qnyurl('areaicon.png','rx')" mode=""></image>
<view class="Store-List-Item-Area-RX-text">
{{item['restaurant_address']}}
</view>
</view>
</template>
<!-- 停店遮罩 -->
<view class="state-stop" v-if="item['is_open'] == 0"></view>
<!-- 闭店弹框 -->
<u-modal :show="show" title=" " borderRadius="20">
<template v-slot:default>
<view class="RX-slot-content">
<image class="img" :src="qnyurl('closureimg.png','rx')" mode=""></image>
<view class="text">
抱歉该门店未营业
</view>
</view>
</template>
<template v-slot:confirmButton>
<view class="RX-confirmButton">
<view class="btn" @tap="show = false">
确定
</view>
</view>
</template>
</u-modal>
</view>
</template>
<script>
/**
* @店铺列表组件
* */
import {
mapGetters,
} from 'vuex';
import mixin from '@/static/js/mixin/mixin.js';
export default {
name: "b-shop-list-item",
mixins: [mixin],
props: {
item: {
type: Object,
default: () => {}
}
},
computed: {
...mapGetters({
// Id
BrandInfor: 'shopping/BrandInfor',
}),
},
data() {
return {
//
show: false
};
},
methods: {
itemclick() {
if (this['item']['is_open'] == 0) {
this['show'] = true;
return;
}
this.$emit('itemclick', this['item'])
}
}
}
</script>
<style lang="scss">
//
.state-stop {
width: 100%;
height: 100%;
background-color: rgba(255, 255, 255, 0.3);
position: absolute;
top: 0;
left: 0;
z-index: 100;
}
.Store-List-Item {
width: 100%;
height: auto;
background-color: #ffffff;
border-radius: 15rpx;
min-height: 155rpx;
padding: 32rpx;
margin-top: 20rpx;
position: relative;
//
&-Top {
display: flex;
align-items: flex-end;
margin-bottom: 30rpx;
&-Name {
font-size: $FONTSIZE30;
color: $THEMECOLOR4;
margin-right: 20rpx;
}
&-distance {
font-size: $FONTSIZE26;
color: $THEMECOLOR5;
flex: 1;
text-align: right;
}
}
&-Area {
font-size: $FONTSIZE26;
}
//
&-Top-RX {
display: flex;
justify-content: space-between;
margin-bottom: 30rpx;
&-Left {
font-size: $FONTSIZE30;
color: $THEMECOLOR4;
&-Title {
margin-bottom: 20rpx;
font-weight: 700;
}
}
&-Right {
display: flex;
flex-direction: column;
align-items: center;
color: $THEMECOLOR6;
font-size: 26rpx;
.img {
width: 64rpx;
height: 64rpx;
}
&-distance {
margin-top: 15rpx;
}
}
}
&-Area-RX {
color: #999999;
font-size: $FONTSIZE24;
padding-top: 22rpx;
border-top: 1rpx solid #EDEEF0;
display: flex;
justify-content: flex-start;
align-items: center;
&-text {
word-break: break-all;
display: -webkit-box;
-webkit-line-clamp: 1;
-webkit-box-orient: vertical;
overflow: hidden;
}
.img {
width: 22rpx;
height: 26rpx;
margin-right: 15rpx;
}
}
}
// //
// .slot-content {
// display: flex;
// flex-direction: column;
// align-items: center;
// .img {
// width: 196rpx;
// height: 169rpx;
// margin-bottom: 32rpx;
// }
// .text {
// font-size: 32rpx;
// color: #333333;
// }
// }
// .confirmButton {
// display: flex;
// justify-content: center;
// .btn {
// width: 470rpx;
// height: 86rpx;
// background: linear-gradient(-77deg, #4A6FE7, #83ACFF);
// border-radius: 43rpx;
// font-size: 30rpx;
// color: #ffffff;
// text-align: center;
// line-height: 86rpx;
// }
// }
</style>
<template>
<view class="Store-List-Item" @tap="itemclick">
<!-- 肯德基店铺列表样式 -->
<template v-if="BrandInfor['brand_id'] == 1">
<view class="Store-List-Item-Top">
<view class="Store-List-Item-Top-Name">
{{item['restaurant_name']}}
</view>
<b-restaurant-state></b-restaurant-state>
<view class="Store-List-Item-Top-distance">
{{item['distance']}}m
</view>
</view>
<view class="Store-List-Item-Area">
{{item['restaurant_address']}}
</view>
</template>
<!-- 瑞幸 -->
<template v-if="BrandInfor['brand_id'] == 13">
<view class="Store-List-Item-Top-RX">
<view class="Store-List-Item-Top-RX-Left">
<view class="Store-List-Item-Top-RX-Left-Title">
{{item['restaurant_name']}}
</view>
<b-restaurant-state :item="item"></b-restaurant-state>
</view>
<view class="Store-List-Item-Top-RX-Right" @tap.stop="openLocation(item['latitude'],item['longitude'])">
<img class="img" :src="qnyurl('Navigation.png','rx')" alt="">
<view class="Store-List-Item-Top-RX-Right-distance">
{{item['distance']}}km
</view>
</view>
</view>
<view class="Store-List-Item-Area-RX">
<image class="img" :src="qnyurl('areaicon.png','rx')" mode=""></image>
<view class="Store-List-Item-Area-RX-text">
{{item['restaurant_address']}}
</view>
</view>
</template>
<!-- 停店遮罩 -->
<view class="state-stop" v-if="item['is_open'] == 0"></view>
<!-- 闭店弹框 -->
<u-modal :show="show" title=" " borderRadius="20">
<template v-slot:default>
<view class="RX-slot-content">
<image class="img" :src="qnyurl('closureimg.png','rx')" mode=""></image>
<view class="text">
抱歉该门店未营业
</view>
</view>
</template>
<template v-slot:confirmButton>
<view class="RX-confirmButton">
<view class="btn" @tap="show = false">
确定
</view>
</view>
</template>
</u-modal>
</view>
</template>
<script>
/**
* @店铺列表组件
* */
import {
mapGetters,
} from 'vuex';
import mixin from '@/static/js/mixin/mixin.js';
export default {
name: "b-shop-list-item",
mixins: [mixin],
props: {
item: {
type: Object,
default: () => {}
}
},
computed: {
...mapGetters({
// Id
BrandInfor: 'shopping/BrandInfor',
}),
},
data() {
return {
//
show: false
};
},
methods: {
itemclick() {
if (this['item']['is_open'] == 0) {
this['show'] = true;
return;
}
this.$emit('itemclick', this['item'])
}
}
}
</script>
<style lang="scss">
//
.state-stop {
width: 100%;
height: 100%;
background-color: rgba(255, 255, 255, 0.3);
position: absolute;
top: 0;
left: 0;
z-index: 100;
}
.Store-List-Item {
width: 100%;
height: auto;
background-color: #ffffff;
border-radius: 15rpx;
min-height: 155rpx;
padding: 32rpx;
margin-top: 20rpx;
position: relative;
//
&-Top {
display: flex;
align-items: flex-end;
margin-bottom: 30rpx;
&-Name {
font-size: $FONTSIZE30;
color: $THEMECOLOR4;
margin-right: 20rpx;
}
&-distance {
font-size: $FONTSIZE26;
color: $THEMECOLOR5;
flex: 1;
text-align: right;
}
}
&-Area {
font-size: $FONTSIZE26;
}
//
&-Top-RX {
display: flex;
justify-content: space-between;
margin-bottom: 30rpx;
&-Left {
font-size: $FONTSIZE30;
color: $THEMECOLOR4;
&-Title {
margin-bottom: 20rpx;
font-weight: 700;
}
}
&-Right {
display: flex;
flex-direction: column;
align-items: center;
color: $THEMECOLOR6;
font-size: 26rpx;
.img {
width: 64rpx;
height: 64rpx;
}
&-distance {
margin-top: 15rpx;
}
}
}
&-Area-RX {
color: #999999;
font-size: $FONTSIZE24;
padding-top: 22rpx;
border-top: 1rpx solid #EDEEF0;
display: flex;
justify-content: flex-start;
align-items: center;
&-text {
word-break: break-all;
display: -webkit-box;
-webkit-line-clamp: 1;
-webkit-box-orient: vertical;
overflow: hidden;
}
.img {
width: 22rpx;
height: 26rpx;
margin-right: 15rpx;
}
}
}
// //
// .slot-content {
// display: flex;
// flex-direction: column;
// align-items: center;
// .img {
// width: 196rpx;
// height: 169rpx;
// margin-bottom: 32rpx;
// }
// .text {
// font-size: 32rpx;
// color: #333333;
// }
// }
// .confirmButton {
// display: flex;
// justify-content: center;
// .btn {
// width: 470rpx;
// height: 86rpx;
// background: #0122A4;
// border-radius: 43rpx;
// font-size: 30rpx;
// color: #ffffff;
// text-align: center;
// line-height: 86rpx;
// }
// }
</style>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
// 星巴克
.RX-Cart {
// 星巴克
.RX-Cart {
box-shadow: 0px 0px 18px 0px rgba(0, 0, 0, 0.1);
background-color: white;
border-radius: 20rpx 20rpx 0 0;
@ -11,170 +11,170 @@
bottom: 0;
left: 0;
z-index: 10;
padding: 20rpx 32rpx;
&-left {
flex: 1;
height: 100rpx;
display: flex;
align-items: center;
&-img {
position: relative;
.img {
width: 65rpx;
height: 65rpx;
margin-right: 25rpx;
}
}
&-price {
color: #000000;
display: flex;
align-items: baseline;
.yang {
font-size: 26rpx;
}
.amount {
font-size: 50rpx;
}
}
}
&-right {
width: 225rpx;
height: 77rpx;
background: linear-gradient(-77deg, #4A6FE7, #83ACFF);
box-shadow: 0 6rpx 8rpx 0 rgba(74, 111, 231, 0.2300);
border-radius: 48rpx;
text-align: center;
color: #ffffff;
line-height: 77rpx;
}
}
.RX-Cart-Popup {
width: 100%;
// padding-bottom: calc();
height: 642rpx;
background-color: #ffffff;
.RX-Cart-Popup-top {
width: 100%;
height: 87rpx;
border-bottom: 1rpx solid rgba(0, 0, 0, 0.1);
padding: 0 32rpx;
display: flex;
justify-content: space-between;
align-items: center;
font-size: 26rpx;
.text {
color: #666666;
}
&-empty {
color: #666666;
display: flex;
align-items: center;
padding: 15rpx 0 15rpx 15rpx;
.img {
width: 29rpx;
height: 31rpx;
margin-right: 15rpx;
}
}
}
&-item {
width: 100%;
margin-bottom: 20rpx;
display: flex;
align-items: center;
justify-content: space-between;
padding: 32rpx;
box-sizing: border-box;
&-commodity {
display: flex;
&-img {
width: 120rpx;
height: 120rpx;
.img {
width: 100%;
height: 100%;
border-radius: 10rpx;
}
}
&-infor {
display: flex;
flex-direction: column;
justify-content: space-between;
padding-left: 22rpx;
&-name {
font-size: $FONTSIZE30;
max-width: 336rpx;
min-width: 336rpx;
word-break: break-all;
display: -webkit-box;
-webkit-line-clamp: 1;
-webkit-box-orient: vertical;
overflow: hidden;
}
&-sku {
color: #999999;
font-size: $FONTSIZE22;
}
&-money {
color: $THEMECOLOR1;
max-width: 115rpx;
min-width: 115rpx;
text-align: center;
color: #FF780F;
&-yang {
font-size: $FONTSIZE22;
}
&-price {
display: flex;
align-items: center;
font-size: $FONTSIZE30;
}
}
}
}
.quantity {
display: flex;
justify-content: space-between;
align-items: center;
font-size: $FONTSIZE36;
.num {
max-width: 100rpx;
min-width: 100rpx;
text-align: center;
}
.img {
width: 42rpx;
height: 42rpx;
}
}
}
padding: 20rpx 32rpx;
&-left {
flex: 1;
height: 100rpx;
display: flex;
align-items: center;
&-img {
position: relative;
.img {
width: 65rpx;
height: 65rpx;
margin-right: 25rpx;
}
}
&-price {
color: #000000;
display: flex;
align-items: baseline;
.yang {
font-size: 26rpx;
}
.amount {
font-size: 50rpx;
}
}
}
&-right {
width: 225rpx;
height: 77rpx;
background: #0122A4;
box-shadow: 0 6rpx 8rpx 0 rgba(74, 111, 231, 0.2300);
border-radius: 48rpx;
text-align: center;
color: #ffffff;
line-height: 77rpx;
}
}
.RX-Cart-Popup {
width: 100%;
// padding-bottom: calc();
height: 642rpx;
background-color: #ffffff;
.RX-Cart-Popup-top {
width: 100%;
height: 87rpx;
border-bottom: 1rpx solid rgba(0, 0, 0, 0.1);
padding: 0 32rpx;
display: flex;
justify-content: space-between;
align-items: center;
font-size: 26rpx;
.text {
color: #666666;
}
&-empty {
color: #666666;
display: flex;
align-items: center;
padding: 15rpx 0 15rpx 15rpx;
.img {
width: 29rpx;
height: 31rpx;
margin-right: 15rpx;
}
}
}
&-item {
width: 100%;
margin-bottom: 20rpx;
display: flex;
align-items: center;
justify-content: space-between;
padding: 32rpx;
box-sizing: border-box;
&-commodity {
display: flex;
&-img {
width: 120rpx;
height: 120rpx;
.img {
width: 100%;
height: 100%;
border-radius: 10rpx;
}
}
&-infor {
display: flex;
flex-direction: column;
justify-content: space-between;
padding-left: 22rpx;
&-name {
font-size: $FONTSIZE30;
max-width: 336rpx;
min-width: 336rpx;
word-break: break-all;
display: -webkit-box;
-webkit-line-clamp: 1;
-webkit-box-orient: vertical;
overflow: hidden;
}
&-sku {
color: #999999;
font-size: $FONTSIZE22;
}
&-money {
color: $THEMECOLOR1;
max-width: 115rpx;
min-width: 115rpx;
text-align: center;
color: #FF780F;
&-yang {
font-size: $FONTSIZE22;
}
&-price {
display: flex;
align-items: center;
font-size: $FONTSIZE30;
}
}
}
}
.quantity {
display: flex;
justify-content: space-between;
align-items: center;
font-size: $FONTSIZE36;
.num {
max-width: 100rpx;
min-width: 100rpx;
text-align: center;
}
.img {
width: 42rpx;
height: 42rpx;
}
}
}
}

File diff suppressed because it is too large Load Diff

View File

@ -337,7 +337,9 @@
}).then(res=>{
this.SETPHONE(res['data'].phone)
this.getCart();
})
});
this.getUserCard();
},
getCart() {
@ -391,7 +393,6 @@
//
this.computedOrder(this.FormInfor);
this.getUserCard();
},

View File

@ -344,7 +344,9 @@
}).then(res => {
this.SETPHONE(res['data'].phone)
this.getCart();
})
});
this.getUserCard();
},
getCart() {
@ -406,7 +408,6 @@
//
this.computedOrder(this.FormInfor);
this.getUserCard();
},
// 使

File diff suppressed because it is too large Load Diff

View File

@ -1,2 +1,2 @@
<!DOCTYPE html><html lang=zh-CN><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><title>在线点餐</title><script>var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') || CSS.supports('top: constant(a)'))
document.write('<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' + (coverSupport ? ', viewport-fit=cover' : '') + '" />')</script><script src="https://h5.dhcc.wang/api/apilink-native.min.js?v=20200701"></script><link rel=stylesheet href=/privilege/static/index.883130ca.css></head><body><noscript><strong>Please enable JavaScript to continue.</strong></noscript><div id=app></div><script src=/privilege/static/js/chunk-vendors.05bba68b.js></script><script src=/privilege/static/js/index.720c046e.js></script></body></html>
document.write('<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' + (coverSupport ? ', viewport-fit=cover' : '') + '" />')</script><script src="https://h5.dhcc.wang/api/apilink-native.min.js?v=20200701"></script><link rel=stylesheet href=/privilege/static/index.883130ca.css></head><body><noscript><strong>Please enable JavaScript to continue.</strong></noscript><div id=app></div><script src=/privilege/static/js/chunk-vendors.6763e5fb.js></script><script src=/privilege/static/js/index.36be406f.js></script></body></html>

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["pages-diy-shopping_cart-shopping_cart"],{"3ee3":function(t,i,e){"use strict";e("6a54"),Object.defineProperty(i,"__esModule",{value:!0}),i.default=void 0;var n={data:function(){return{loading:!0,swiperList:["https://cdn.uviewui.com/uview/swiper/swiper1.png","https://cdn.uviewui.com/uview/swiper/swiper2.png","https://cdn.uviewui.com/uview/swiper/swiper3.png"]}},mounted:function(){var t=this;setTimeout((function(){t["loading"]=!1}),2e3)}};i.default=n},7041:function(t,i,e){"use strict";e.r(i);var n=e("bc6d"),u=e("a8bb");for(var r in u)["default"].indexOf(r)<0&&function(t){e.d(i,t,(function(){return u[t]}))}(r);var s=e("828b"),a=Object(s["a"])(u["default"],n["b"],n["c"],!1,null,"32b3d7e1",null,!1,n["a"],void 0);i["default"]=a.exports},a8bb:function(t,i,e){"use strict";e.r(i);var n=e("3ee3"),u=e.n(n);for(var r in n)["default"].indexOf(r)<0&&function(t){e.d(i,t,(function(){return n[t]}))}(r);i["default"]=u.a},bc6d:function(t,i,e){"use strict";e.d(i,"b",(function(){return u})),e.d(i,"c",(function(){return r})),e.d(i,"a",(function(){return n}));var n={uSwiper:e("77c3").default},u=function(){var t=this.$createElement,i=this._self._c||t;return i("v-uni-view",{staticClass:"content"},[i("v-uni-view",{staticClass:"content-Swiper"},[i("u-swiper",{attrs:{list:this.swiperList,height:"585",loading:this.loading}})],1)],1)},r=[]}}]);

View File

@ -1 +0,0 @@
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["pages-diy-shopping_cart-shopping_cart"],{"3ee3":function(t,i,e){"use strict";e("6a54"),Object.defineProperty(i,"__esModule",{value:!0}),i.default=void 0;var n={data:function(){return{loading:!0,swiperList:["https://cdn.uviewui.com/uview/swiper/swiper1.png","https://cdn.uviewui.com/uview/swiper/swiper2.png","https://cdn.uviewui.com/uview/swiper/swiper3.png"]}},mounted:function(){var t=this;setTimeout((function(){t["loading"]=!1}),2e3)}};i.default=n},7041:function(t,i,e){"use strict";e.r(i);var n=e("bc6d9"),u=e("a8bb");for(var r in u)["default"].indexOf(r)<0&&function(t){e.d(i,t,(function(){return u[t]}))}(r);var s=e("828b"),a=Object(s["a"])(u["default"],n["b"],n["c"],!1,null,"32b3d7e1",null,!1,n["a"],void 0);i["default"]=a.exports},a8bb:function(t,i,e){"use strict";e.r(i);var n=e("3ee3"),u=e.n(n);for(var r in n)["default"].indexOf(r)<0&&function(t){e.d(i,t,(function(){return n[t]}))}(r);i["default"]=u.a},bc6d9:function(t,i,e){"use strict";e.d(i,"b",(function(){return u})),e.d(i,"c",(function(){return r})),e.d(i,"a",(function(){return n}));var n={uSwiper:e("77c3").default},u=function(){var t=this.$createElement,i=this._self._c||t;return i("v-uni-view",{staticClass:"content"},[i("v-uni-view",{staticClass:"content-Swiper"},[i("u-swiper",{attrs:{list:this.swiperList,height:"585",loading:this.loading}})],1)],1)},r=[]}}]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long