1.对接肯德基 兴星巴克页面接口

yj-dev
杨杰 2 years ago
parent 7fbd4b23df
commit 3fbcbb518c
  1. 20
      App.vue
  2. 10
      Utils/Api.js
  3. 25
      components/cartcontrol.vue
  4. 402
      components/city-select/city-select.vue
  5. 36
      components/city-select/citySelect.js
  6. 22
      components/shopcart.vue
  7. 89
      components/swiperNavBar.vue
  8. 224
      member-Recharge/home/home.vue
  9. 184
      member-Recharge/rec-confirmation/rec-confirmation.vue
  10. 46
      pages.json
  11. 5
      pages/tabBar/home/home.vue
  12. 13
      pages/tabBar/user/user.vue
  13. 78
      qianzhu-KFC/buffet-order/buffet-order.vue
  14. 157
      qianzhu-KFC/confirmOrder/confirmOrder.vue
  15. 12
      qianzhu-KFC/home/home.vue
  16. 435
      qianzhu-KFC/menu-list/menu-list.vue
  17. 41
      qianzhu-KFC/order-details/order-details.vue
  18. BIN
      qianzhu-KFC/static/imgs/blueplus.png
  19. BIN
      qianzhu-KFC/static/imgs/buffstu1.png
  20. BIN
      qianzhu-KFC/static/imgs/collectionlv.png
  21. BIN
      qianzhu-KFC/static/imgs/locabtn.png
  22. BIN
      qianzhu-KFC/static/imgs/skicon.png
  23. BIN
      qianzhu-KFC/static/imgs/wreduce.png
  24. 117
      qianzhu-Starbucks/changeRegin/changeRegin.vue
  25. 83
      qianzhu-Starbucks/home/home.vue
  26. BIN
      qianzhu-Starbucks/static/imgs/sk1.png
  27. BIN
      qianzhu-Starbucks/static/imgs/skhome.png
  28. 8
      subPages/rechargeDetails/rechargeDetails.vue
  29. 15
      uni.scss

@ -5,15 +5,15 @@
// brestUrl: 'http://192.168.3.4:9302/brest',
// imgUrl: 'https://192.168.3.4:9301/filesystem/',
//
url: 'https://hsg.dctpay.com/crest',
imgUrl: 'https://hsg.dctpay.com/filesystem/',
brestUrl : 'https://hsg.dctpay.com/brest',
imageWxImg:'https://hsg.dctpay.com/filesystem/wxApplets/',
// url: 'https://hsg.dctpay.com/crest',
// imgUrl: 'https://hsg.dctpay.com/filesystem/',
// brestUrl : 'https://hsg.dctpay.com/brest',
// imageWxImg:'https://hsg.dctpay.com/filesystem/wxApplets/',
//
// url: 'https://hsgcs.dctpay.com/crest',
// brestUrl : 'https://hsgcs.dctpay.com/brest',
// imgUrl: 'https://hsgcs.dctpay.com/filesystem/',
// imageWxImg:'https://hsgcs.dctpay.com/filesystem/wxApplets/',
url: 'https://hsgcs.dctpay.com/crest',
brestUrl : 'https://hsgcs.dctpay.com/brest',
imgUrl: 'https://hsgcs.dctpay.com/filesystem/',
imageWxImg:'https://hsgcs.dctpay.com/filesystem/wxApplets/',
userInfo: "",
brestUserInfo : '',
bresthighAgent:'',
@ -37,7 +37,9 @@
//
accountId:'',
//
accountType:''
accountType:'',
//
distinguishid:''
},
onLaunch: function() {
},

@ -326,6 +326,16 @@ export const getTPigCinemaToken = params => {
return POST('GET', `${base}/tPig/getTPigCinemaToken`, params).then(res => res.data);
}
//星巴克
//门店列表
export const getStarbucksStore = params => {
return POST('GET', `${base}/highThirdParty/getStarbucksStore`, params).then(res => res.data);
}
export const getStarbucksProducts = params => {
return POST('GET', `${base}/highThirdParty/getStarbucksProducts`, params).then(res => res.data);
}
export const qzOrderToPay = params => {
return POST('POST', `${base}/order/qzOrderToPay`, params).then(res => res.data);
}

@ -2,37 +2,42 @@
<view style="display: flex;flex-direction: row;height: 27px;">
<view class="food-control">
<view class="cont" style="margin-top: 2px;" @click="decreaseCart(food)" v-show="food.count>0">
<image src="../qianzhu-KFC/static/imgs/reduce.png" mode="" style="width: 22px;height: 22px;"></image>
<image src="../qianzhu-KFC/static/imgs/wreduce.png" mode="" style="width: 26px;height: 26px;"></image>
</view>
<!-- <text style="padding: 0 4px;" v-show="food.count>0">{{food.count}}</text> -->
<input type="number" maxlength="3"
style="margin: 0 2px;width: 36px;padding: 0 1px;border-radius: 3px;" v-show="food.count>0"
v-model="food.count" @input="inputCart(food)"/>
<input type="number" maxlength="3" style="margin: 0 2px;width: 36px;padding: 3px 1px;border-radius: 3px;"
v-show="food.count>0" v-model="food.count" @input="inputCart(food)" />
</view>
<view style="flex: 1;margin-top: 2px; " class="cont" @click="addCart(food)">
<image src="../qianzhu-KFC/static/imgs/plus.png" style="width: 22px;height: 22px;color: #CCCCCC;" mode=""></image>
<image src="../qianzhu-KFC/static/imgs/plus.png" v-if="typeid == 1" style="width: 26px;height: 26px;color: #CCCCCC;"></image>
<image src="../qianzhu-KFC/static/imgs/blueplus.png" v-if="typeid == 2" style="width: 26px;height: 26px;color: #CCCCCC;">
</image>
</view>
</view>
</template>
<script>
// import Vue from 'vue'
let app = getApp();
export default {
props: {
food: {
type: Object,
type: Object
}
},
data() {
return {
typeid: app.globalData.distinguishid //
};
},
onLoad() {
},
methods: {
addCart: function(item) {
this.$emit('add',item)
this.$emit('add', item)
},
decreaseCart(item) {
this.$emit('dec',item)
this.$emit('dec', item)
},
inputCart(item) {
this.fcount = item.count
@ -58,8 +63,8 @@
}
.cont {
width: 22px;
height: 22px;
width: 26px;
height: 26px;
box-sizing: border-box;
border-radius: 50%;
text-align: center;

@ -0,0 +1,402 @@
<template>
<!-- 城市选择-->
<view class="city-select">
<scroll-view :scroll-top="scrollTop" scroll-y="true" class="city-select-main" id="city-select-main"
:scroll-into-view="toView">
<!-- 预留搜索-->
<view class="city-serach" v-if="isSearch"><input @input="keyInput" :placeholder="placeholder"
class="city-serach-input" /></view>
<!-- 当前定位城市 -->
<view class="hot-title" v-if="activeCity && !serachCity">当前定位城市</view>
<view class="hot-city" v-if="activeCity && !serachCity">
<view class="hot-item" @click="cityTrigger(activeCity)">{{ activeCity[formatName] }}</view>
</view>
<!-- 热门城市 -->
<!-- <view class="hot-title" v-if="hotCity.length > 0 && !serachCity">热门城市</view>
<view class="hot-city" v-if="hotCity.length > 0 && !serachCity">
<template v-for="(item, index) in hotCity">
<view :key="index" @click="cityTrigger(item, 'hot')" class="hot-item">{{ item[formatName] }}</view>
</template>
</view> -->
<!-- 城市列表(搜索前) -->
<view class="citys" v-if="!serachCity">
<view v-for="(city, index) in sortItems" :key="index" v-show="city.isCity" class="citys-row">
<view class="citys-item-letter" :id="'city-letter-' + (city.name === '#' ? '0' : city.name)">
{{ city.name }}</view>
<view class="citys-item" v-for="(item, inx) in city.citys" :key="inx" @click="cityTrigger(item)">
{{ item.cityName }}</view>
</view>
</view>
<!-- 城市列表(搜索后) -->
<view class="citys" v-if="serachCity">
<view v-for="(item, index) in searchDatas" :key="index" class="citys-row">
<view class="citys-item" :key="inx" @click="cityTrigger(item)">{{ item.name }}</view>
</view>
</view>
</scroll-view>
<!-- 城市选择索引-->
<view class="city-indexs-view" v-if="!serachCity">
<view class="city-indexs">
<view v-for="(cityIns, index) in handleCity" class="city-indexs-text" v-show="cityIns.isCity"
:key="index" @click="cityindex(cityIns.forName)">
{{ cityIns.name }}
</view>
</view>
</view>
</view>
</template>
<script>
import citySelect from './citySelect.js';
export default {
props: {
//
placeholder: {
type: String,
default: '请输入城市名称'
},
//
formatName: {
type: String,
default: 'cityName'
},
//
activeCity: {
type: Object,
default: () => null
},
//
hotCity: {
type: Array,
default: () => []
},
//
obtainCitys: {
type: Array,
default: () => []
},
//
isSearch: {
type: Boolean,
default: true
}
},
data() {
return {
toView: 'city-letter-Find', //
scrollTop: 0, //scroll-view
cityindexs: [], //
activeCityIndex: '', //
handleCity: [], //
serachCity: '', //
cityData: []
};
},
computed: {
/**
* @desc 城市列表排序
* @return Array
*/
sortItems() {
for (let index = 0; index < this.handleCity.length; index++) {
if (this.handleCity[index].isCity) {
let cityArr = this.handleCity[index].citys;
cityArr = cityArr.sort(function(a, b) {
var value1 = a.unicode;
var value2 = b.unicode;
return value1 - value2;
});
}
}
return this.handleCity;
},
/**
* @desc 搜索后的城市列表
* @return Array
*/
searchDatas() {
var searchData = [];
for (let i = 0; i < this.cityData.length; i++) {
if (this.cityData[i][this.formatName].indexOf(this.serachCity) !== -1) {
searchData.push({
oldData: this.cityData[i],
name: this.cityData[i][this.formatName]
});
}
}
return searchData;
}
},
created() {
//
this.cityData = this.obtainCitys;
this.initializationCity();
this.buildCityindexs();
},
watch: {
obtainCitys(newData) {
this.updateCitys(newData);
}
},
methods: {
/**
* @desc 初始化
*/
updateCitys(data) {
if (data && data.length) {
this.cityData = data;
this.initializationCity();
this.buildCityindexs();
}
},
/**
* @desc 监听输入框的值
*/
keyInput(event) {
this.serachCity = event.detail.value;
},
/**
* @desc 初始化城市数据
* @return undefind
*/
initializationCity() {
this.handleCity = [];
const cityLetterArr = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q',
'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '#'
];
for (let index = 0; index < cityLetterArr.length; index++) {
this.handleCity.push({
name: cityLetterArr[index],
isCity: false, //
citys: [], //
forName: 'city-letter-' + (cityLetterArr[index] == '#' ? '0' : cityLetterArr[
index]) //label
});
}
},
/**
* @desc 得到城市的首字母
* @param str String
*/
getLetter(str) {
return citySelect.getFirstLetter(str[0]);
},
/**
* @desc 构建城市索引
* @return undefind
*/
buildCityindexs() {
this.cityindexs = [];
for (let i = 0; i < this.cityData.length; i++) {
//
const cityLetter = this.getLetter(this.cityData[i][this.formatName]).firstletter;
// unicode
const unicode = this.getLetter(this.cityData[i][this.formatName]).unicode;
const index = this.cityIndexPosition(cityLetter);
if (this.cityindexs.indexOf(cityLetter) === -1) {
this.handleCity[index].isCity = true;
this.cityindexs.push(cityLetter);
}
this.handleCity[index].citys.push({
cityName: this.cityData[i][this.formatName],
unicode: unicode,
oldData: this.cityData[i]
});
}
},
/**
* @desc 滑动到城市索引所在的地方
* @param id String 城市索引
*/
cityindex(id) {
this.toView = id;
// //
// const query = uni.createSelectorQuery().in(this)
// var that = this
// that.scrollTop = 0
// //(::)
// setTimeout(() => {
// query
// .select('#city-letter-' + (id === '#' ? '0' : id))
// .boundingClientRect(data => {
// // console.log("" + JSON.stringify(data));
// // console.log("" + data.top);
// data ? (that.scrollTop = data.top) : void 0
// })
// .exec()
// }, 0)
},
/**
* @desc 获取城市首字母的unicode
* @param letter String 城市索引
*/
cityIndexPosition(letter) {
if (!letter) {
return '';
}
const ACode = 65;
return letter === '#' ? 26 : letter.charCodeAt(0) - ACode;
},
/** @desc
* @param Object
*/
cityTrigger(item) {
//
this.$emit('cityClick', item.oldData ? item.oldData : item);
}
}
};
</script>
<style lang="scss">
//vw
@function vww($number) {
@return ($number / 375) * 750+rpx;
}
view {
box-sizing: border-box;
}
.city-serach {
width: 100%;
color: #4a4a4a;
padding: 0 vww(10);
&-input {
margin: 20rpx 0;
height: 80rpx;
line-height: 80rpx;
font-size: 28rpx;
padding: 0 25rpx;
background-color: white;
border-radius: 25px;
}
}
.city-select-main {
position: relative;
// overflow: scroll;
// -webkit-overflow-scrolling: touch;
width: 100%;
height: 100%;
background: #f6f5fa;
// overflow-y: auto;
}
.city-select {
position: relative;
width: 100vw;
height: 100vh;
background: #f6f5fa;
//
.hot-title {
padding-left: vww(23);
width: 100vw;
font-size: 14px;
line-height: vww(40);
color: #9b9b9b;
}
.hot-city {
padding-left: vww(23);
padding-right: vww(20);
overflow: hidden;
width: 100vw;
.hot-item {
float: left;
padding: 0 vww(5);
margin-right: vww(16);
margin-bottom: vww(6);
overflow: hidden;
width: vww(100);
height: vww(38);
font-size: 14px;
text-align: center;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 1;
line-height: vww(38);
color: #4a4a4a;
background: #fff;
border-radius: 5px;
border: 1px solid #ebebf0;
&:nth-child(3n) {
margin-right: 0;
}
}
.hot-hidden {
display: none;
margin-right: 0;
}
}
.citys {
.citys-row {
padding-left: vww(18);
width: 100%;
font-size: 14px;
background: #fff;
.citys-item-letter {
margin-left: vww(-18);
padding-left: vww(18);
margin-top: -1px;
width: 100vw;
line-height: vww(30);
color: #9b9b9b;
background: #f6f5fa;
border-top: none;
}
.citys-item {
width: 100%;
line-height: vww(50);
color: #4a4a4a;
border-bottom: 1px solid #ebebf0;
&:last-child {
border: none;
}
}
}
}
.city-indexs-view {
position: absolute;
right: 0;
top: 0;
z-index: 999;
display: flex;
width: vww(20);
height: 100%;
text-align: center;
.city-indexs {
width: vww(20);
text-align: center;
vertical-align: middle;
align-self: center;
.city-indexs-text {
margin-bottom: vww(10);
width: vww(20);
font-size: 12px;
color: #4d8cfd;
&:last-child {
margin-bottom: 0;
}
}
}
}
}
</style>

File diff suppressed because one or more lines are too long

@ -4,17 +4,21 @@
<view class="cartBottom">
<view class="carIcon" @click="toggleList">
<view class="iconBox" :class="getAllCount ? 'active' : '' ">
<text class="allcount" v-if="getAllCount">{{getAllCount}}</text>
<image src="../qianzhu-KFC/static/imgs/kfcicon.png" mode="" class="img"></image>
<text class="allcount" style="background-color: #f01414;" v-if="getAllCount && typeid == 1">{{getAllCount}}</text>
<text class="allcount backcorf2f6" v-if="getAllCount && typeid == 2">{{getAllCount}}</text>
<image src="../qianzhu-KFC/static/imgs/kfcicon.png" mode="widthFix" v-if="typeid == 1" class="img"></image>
<image src="../qianzhu-KFC/static/imgs/skicon.png" mode="widthFix" v-if="typeid == 2" class="img"></image>
</view>
</view>
<view class="middle" @click="toggleList">
<text class="price" :class="getAllCount ? 'active': ''">{{getAllPrice}}</text>
<text class="deliveryPrice" style="font-size: 12px;">免配送费|支持自取</text>
</view>
<view class="BtnRight" @click="buyList">
<view class="BtnRight" style="background-color: #c72a20;" v-if="typeid == 1" @click="buyList">
选好了
</view>
<view class="BtnRight backcorf2f6" v-if="typeid == 2" @click="buyList">
选好了
<!-- <button :type="buyType" style="border-radius: 20rpx;" :disabled="buyDis" @click="buyList"></button> -->
</view>
</view>
<!-- 选择的商品 -->
@ -28,7 +32,7 @@
<scroll-view scroll-y style="max-height: 280px;">
<view class="list">
<view class="list-text alijusstart" v-for="(item,index) in getList" :key="index">
<view class="width40">
<view class="width30">
<image src="../qianzhu-KFC/static/imgs/kfc1.png" mode="widthFix" class="width100"></image>
</view>
<view class="width30 fotlt">
@ -51,6 +55,7 @@
<script>
import cartcontrol from '@/components/cartcontrol.vue'
// import {mul} from '@/utils/lib'
let app = getApp();
export default {
props: {
buyType: 'default',
@ -62,6 +67,7 @@
data() {
return {
isShowList: false,
typeid: app.globalData.distinguishid
};
},
components: {
@ -144,7 +150,7 @@
// }
uni.navigateTo({
// url:'/qianzhu-KFC/confirmOrder/confirmOrder'
url:'/qianzhu-KFC/order-details/order-details'
url: '/qianzhu-KFC/order-details/order-details'
})
},
delShopcart() {
@ -217,7 +223,6 @@
line-height: 16px;
font-weight: 400;
border-radius: 10px;
background-color: #f01414;
color: #ffffff;
}
@ -233,7 +238,7 @@
}
.carIcon .active {
background-color: #00a0dc;
background-color: #141d27;
}
.middle {
@ -248,7 +253,6 @@
border-radius: 26px;
margin: 18rpx;
z-index: 99999;
background-color: #c72a20;
color: #fff;
text-align: center;
line-height: 36px;

@ -0,0 +1,89 @@
<template>
<!--组件-->
<scroll-view scroll-x='false' scroll-with-animation
:scroll-into-view=" 'tab-' + scrollIntoView"
:style="{ height:currentSwiperHeight + 'rpx' }">
<view class="swiperTab" v-for="(item,index) in swiperTabList" :key='index'
:style="{ width:currentSwiperWidth,lineHeight:currentSwiperHeight + 'rpx' }"
:id=" 'tab-' + index " @tap="CurrentTab(index,item)">
<!--导航标题-->
<text :style="{ color:swiperTabIdx == index ? swiperCurrentColor:swiperColor, fontSize:swiperCurrentSize }">
{{ item }}
</text>
<!--导航标题-->
<!--线条-->
<view class="swiperLine" v-show="currentSwiperLineShow">
<view class="swiperLineActive"
:class="[ swiperTabIdx == index && currentSwiperLineAnimatie ?'currentLine':'' ]"
:style="{
width:currentSwiperLineActiveWidth,
height:currentSwiperLineActiveHeight,
background:currentSwiperLineActiveBg
}" v-if=" swiperTabIdx == index ">
</view>
</view>
<!--线条-->
</view>
</scroll-view>
</template>
<script>
export default{
data(){
return{
}
},
onLoad() { },
props:{
scrollIntoView:{ type:Number },//
swiperTabList:{ type:Array },//
swiperTabIdx:{ type:Number },//
swiperCurrentSize:{ type:String },//
swiperColor:{ type:String },//
swiperCurrentColor:{ type:String },//
currentSwiperWidth:{ type:String },// % upx rpx px
currentSwiperHeight:{ type:Number },// rpx px
currentSwiperLineShow:{ type:Boolean },//线
currentSwiperLineActiveWidth:{ type:String },//线
currentSwiperLineActiveHeight:{ type:String },//线
currentSwiperLineActiveBg:{ type:String },//线
currentSwiperLineAnimatie:{ type:Number },//线
},
methods:{
CurrentTab:function (index,item){
this.$emit('change',index,item);
},
}
}
</script>
<style>
.swiperHead scroll-view{
display: flex;
flex-direction: row;
flex-wrap: nowrap;
white-space: nowrap;
}
.swiperTab{
display: inline-flex;
flex-direction: column;
text-align: center;
position: relative;
}
.swiperLine{ position: absolute;bottom: 10upx;left: 0;width: 100%;z-index: 10; }
.swiperLineActive{ margin: 0 auto;border-radius: 30upx; }
@keyframes currentLine{
0%{
transform: scale(0.5);
}
100%{
transform: scale(1);
}
}
.currentLine{ animation:currentLine 300ms forwards; }
</style>

@ -0,0 +1,224 @@
<template>
<view>
<view class="swiperMain">
<view class="swiperHead">
<!--组件-->
<swiperNavBar :scrollIntoView="scrollIntoView" :swiperTabList='swiperTabList'
:swiperTabIdx='swiperTabIdx' :currentSwiperWidth='currentSwiperWidth'
:currentSwiperHeight='currentSwiperHeight' :swiperCurrentSize='swiperCurrentSize'
:swiperColor='swiperColor' :swiperCurrentColor='swiperCurrentColor'
:currentSwiperLineShow="currentSwiperLineShow"
:currentSwiperLineActiveWidth="currentSwiperLineActiveWidth"
:currentSwiperLineActiveHeight="currentSwiperLineActiveHeight"
:currentSwiperLineActiveBg="currentSwiperLineActiveBg"
:currentSwiperLineAnimatie="currentSwiperLineAnimatie" v-if=" swiperTabList.length > 1 "
@change="CurrentTab">
</swiperNavBar>
<!--组件-->
</view>
<!--内容-->
<view class="swiperCont" :style="{ paddingTop:currentSwiperHeight + 'rpx' }">
<swiper class="swiper" :style="{ height:mainHeight + 'px' }" :current="swiperTabIdx"
@change="SwiperChange">
<swiper-item class="swiperItem" v-for="(item,index) in swiperTabList" :key='index'>
<!-- {{ item }} -->
<view class="contsitem" v-for="(item,index) in productList" :key='index'
:class="[producval == item ? 'activecol' : 'contsitem']" @click="changepro(item)">
<view class="title">连续包月</view>
<view class="price">¥<text style="font-size: 24px;">12.2</text></view>
<view class="fgprice">¥12.2</view>
</view>
</swiper-item>
</swiper>
<view class="subbtn" @click="jumpcom()">提交</view>
</view>
</view>
</view>
</template>
<script>
import swiperNavBar from '../../components/swiperNavBar.vue';
export default {
data() {
return {
//
scrollIntoView: 0, //
swiperTabList: ['腾讯视频', '爱奇艺视频', '优酷视频', '酷狗音乐', 'QQ音乐', '芒果TV'], //
swiperTabIdx: 0,
swiperCurrentSize: '26rpx', //
swiperColor: '#333333', //
swiperCurrentColor: '#1D63FF', //
currentSwiperWidth: '23%', // % upx rpx px
currentSwiperHeight: 100, // rpx px
mainHeight: 200, //
currentSwiperLineShow: true, //线 线.swiperLinecss
currentSwiperLineActiveBg: '#1D63FF', //线
currentSwiperLineActiveWidth: '30rpx', //线 upx rpx px
currentSwiperLineActiveHeight: '6rpx', //线 upx rpx px
currentSwiperLineAnimatie: 300, //线
productList: [1, 2, 3, 4, 5, 6, 7, 8],
producval: '1'
// paddingTop .swiperCont .swipercss
// =
}
},
onLoad() {
},
components: {
swiperNavBar
},
onReady() {
this.mainHeight = uni.getSystemInfoSync().windowHeight; //使
console.log(this.mainHeight)
},
methods: {
//tab
CurrentTab: function(index, item) {
this.swiperTabIdx = index;
this.scrollIntoView = Math.max(0, index - 1);
//console.log(index + '----' + item)
},
//
SwiperChange: function(e) {
//console.log(e)
//console.log(e.detail)
console.log(e.detail.current);
this.swiperTabIdx = e.detail.current;
this.scrollIntoView = Math.max(0, e.detail.current - 1);
},
//
changepro(item) {
this.producval = item;
},
//
jumpcom(){
uni.navigateTo({
url:'../rec-confirmation/rec-confirmation'
})
}
}
}
</script>
<style lang="scss">
page {
background: #F8F8F8;
}
.swiperMain {
width: 100%;
}
.swiperHead {
position: fixed;
top: 0;
z-index: 10;
width: 100%;
background: #FFFFFF;
}
.swiperHead scroll-view {
display: flex;
flex-direction: row;
flex-wrap: nowrap;
white-space: nowrap;
}
.swiperTab {
display: inline-flex;
flex-direction: column;
text-align: center;
}
.swiperCont {
width: 100%;
padding-top: 70rpx;
background-color: #f0f0f0;
}
/* #ifdef H5 */
.swiperHead {
position: fixed;
top: 44px;
z-index: 10;
width: 100%;
background: #FFFFFF;
}
/* #endif */
.swiper {
width: 100%;
height: 400rpx;
}
.swiperItem {
overflow: auto;
background: #ffffff;
text-align: center;
color: #333333;
font-size: 30upx;
}
.contsitem {
width: 20%;
height: 110px;
border-radius: 5px;
margin-top: 20px;
display: inline-block;
text-align: center;
margin-left: 4%;
background-color: #f0f0f0;
float: left;
}
.title {
color: #333333;
font-size: 14px;
padding-top: 15px;
}
.price {
font-size: 14px;
padding-top: 5px;
font-weight: bold;
color: #caba60;
}
.fgprice {
color: #999999;
text-decoration: line-through;
font-size: 14px;
}
.activecol {
background-color: #edd076;
}
.swiperItem image {
width: 100%;
height: 100%;
display: block;
}
.subbtn {
width: 80%;
height: 45px;
line-height: 45px;
margin-left: 10%;
background-color: #1D63FF;
color: #FFFFFF;
border-radius: 20px;
margin-top: 80px;
position: absolute;
bottom: 40px;
text-align: center;
}
</style>

@ -0,0 +1,184 @@
<template>
<view>
<view class="concont width94 mart10 backcorfff height45 alijusstart paddtop5 paddbotm5">
<input class="width100 padleft15 " placeholder="请输入充值手机号" />
</view>
<view class="concont width94 mart10 backcorfff">
<view class="width94 paddtop10 font14 fcor333">
充值详情
</view>
<view class="width100 bor-botm1 mart10 marb10"></view>
<view class="width100 ">
<view class="width100 alijusstart paddbotm15 mart10 bor-botm1">
<view class="width10">
</view>
<view class="width50 font14 fcor333 fontwig6">腾讯一月会员</view>
<view class="width20 font12 fcor999">x1</view>
<view class="width20">
<view class="width100 fcor333 font13">¥16.8</view>
<view class="width100 fcor999 font13" style="text-decoration: line-through;">¥17.8</view>
</view>
</view>
<view class="width90 fotrt height50 font13 fcor999">
<text class="fcor333 fontwig6" style="margin: 0px 5px;"> 1 </text> 小计:
<text class="font16 colorc3 fontwig6 margle"> ¥16.8</text>
</view>
</view>
</view>
<view class="width94 concont mart10 backcorfff">
<view class="width92 alijusstart paddtop20">
<view class="width30 fcor333 fontwig6 font16">
积分抵扣
</view>
<view class="cj-slider">
<view class="flleft fotct font14 fcor666" style="width: 15%;">0</view>
<cj-slider style="width: 60%; float:left;" v-model="priceValue" :min="0" :max="availIntegal"
:step="1" :blockWidth="40" @end="blockEnd" />
<view class="flright fotrt font14 fcor666" style="width: 25%;">{{availIntegal}}</view>
</view>
</view>
<view class="width94 line1 mart15 marb5"></view>
<view class="height50 width100 backcorfff">
<view class="width70 flleft fcor666 font16 text1" style="padding-left: 4%;">
抵扣金额
</view>
<view class="width20 flright fotrt paddtright10 font15 fcor666 alijun" style="align-items: center;">
¥{{priceValue[1] / 100}}
</view>
</view>
<view class="height50 width100">
<view class="width100 flleft fcor333 fontwig6 font16" style="padding-left: 4%;">
支付方式
<!-- :
<text class="jfrecharge" style="background-color: #c72a20;" v-if="typeid == 1" @click="jumpdeposits">积分充值</text>
<text class="jfrecharge backcorf2f6" v-if="typeid == 2" @click="jumpdeposits">积分充值</text> -->
</view>
</view>
<view class="height50 width100" @tap="paytype='weixin'">
<view class="width50 flleft fcor333 font16" style="padding-left: 4%;">
微信支付
</view>
<view class="width40 flright fotrt paddtright10 font15 fontwig6 fcor666 alijun"
style="align-items: center;">
<radio :checked="paytype=='weixin'" color="#c72a20" />
</view>
</view>
<view class="height50 width100" @tap="paytype='gonghuika'">
<view class="width70 flleft fcor333 font16 text1" style="padding-left: 4%;">
汇联通工会卡<text class="font14 fcor666 margle">可用余额: 13.1</text>
</view>
<view class="width20 flright fotrt paddtright10 font15 fontwig6 fcor666 alijun"
style="align-items: center;">
<radio :checked="paytype=='gonghuika'" @click="changeRiado()" color="#c72a20" />
</view>
</view>
</view>
<!-- <view class="concont width94 mart10 backcorfff">
<view class="width94 alijusstart paddtop10 font14 fcor666">
<view class="width40">联系电话</view>
<input class="width60 fotrt" placeholder="请输入联系人手机号"/>
</view>
<view class="width94 font12 fcor999 mart5 paddbotm10">经用于接收取餐码,请正确填写</view>
</view>
-->
<view class="footbtn width100 height50 backcor33">
<view class="width94 alijusstart">
<view class="width70 fcorfff">
合计: ¥<text class="font16 fontwig6" style="margin: 0px 6px;">16.8</text> <text class="font12">已省¥1.7</text>
</view>
<view class="width30 fotrt">
<view class="btnpay fotct font13 fcorfff" style="background-color: #c72a20;">去支付</view>
</view>
</view>
</view>
</view>
</template>
<script>
import cjSlider from '@/components/cj-slider/cj-slider.vue';
let app = getApp();
export default {
components: {
cjSlider
},
data() {
return {
orderList: [1, 2, 3, 4, 5],
sttypeid: 1,
paytype: '', //
priceValue: [0, 2000], //
availIntegal: '2000', //
}
},
methods: {
//
changedissr(item) {
this.sttypeid = item;
},
//
blockEnd() {
this.payPrice = this.priceValue[1];
if (this.payPrice == 0) {
this.isUse = false;
this.paytype = '';
} else {
this.isUse = true;
}
},
}
}
</script>
<style lang="scss">
page {
background-color: #f0f0f0;
}
.headsbg {
border-radius: 0 0 30px 30px;
}
.concont {
border-radius: 12px;
}
.jfrecharge {
padding: 3px 20rpx;
color: #fff;
margin-left: 50%;
justify-content: center;
align-items: center;
font-size: 30rpx;
border-radius: 40rpx;
}
.footbtn {
bottom: 0px;
position: fixed;
}
.btnpay {
width: 90px;
border-radius: 22px;
height: 36px;
line-height: 36px;
}
.takemode {
width: 48%;
border-radius: 5px;
border: 1px solid #999999;
}
.aftermode {
background-color: #faf1f1;
color: #c72a20;
}
.cj-slider {
width: 100%;
align-items: center;
display: flex;
}
</style>

@ -461,7 +461,7 @@
"navigationBarTextStyle": "white"
}
}
],
],
"subpackages": [{
"root": "subPages",
"pages": [{
@ -814,8 +814,50 @@
"enablePullDownRefresh": false
}
}
]
}, {
"root": "qianzhu-Starbucks",
"pages": [{
"path": "home/home",
"style": {
"enablePullDownRefresh": false,
"navigationBarTitleText": "星巴克",
"backgroundTextStyle": "light",
"navigationBarBackgroundColor": "#ffffff",
"navigationBarTextStyle": "black"
}
}, {
"path": "changeRegin/changeRegin",
"style": {
"navigationBarTitleText": "城市选择",
"enablePullDownRefresh": false
}
}]
}],
},{
"root": "member-Recharge",
"pages": [{
"path": "home/home",
"style": {
"enablePullDownRefresh": false,
"navigationBarTitleText": "会员充值",
"backgroundTextStyle": "light",
"navigationBarBackgroundColor": "#ffffff",
"navigationBarTextStyle": "black"
}
},{
"path" : "rec-confirmation/rec-confirmation",
"style" :
{
"navigationBarTitleText": "确认订单",
"enablePullDownRefresh": false
}
}]
}
],
"globalStyle": {
"navigationBarTextStyle": "black",
"navigationBarTitleText": "",

@ -378,7 +378,7 @@
methods: {
jumpcdx() {
location.href =
'https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxa075e8509802f826&redirect_uri=https%3A%2F%2Fhsg.dctpay.com%2FhsgH5%2Findex.html%23%2F&response_type=code&scope=snsapi_base&state=1#wechat_redirect';
'https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxa075e8509802f826&redirect_uri=https%3A%2F%2Fhsgcs.dctpay.com%2FhsgH5%2Findex.html%23%2F&response_type=code&scope=snsapi_base&state=1#wechat_redirect';
},
//
getCmsContentcmsContent() {
@ -742,7 +742,8 @@
})
} else if (item.title == '电影票') {
uni.navigateTo({
url: '/pages/tabBar/order/order?id=2'
// url: '/pages/tabBar/order/order?id=2'
url:'/qianzhu-Starbucks/home/home'
})
} else if (item.title == '话费充值') {
uni.navigateTo({

@ -65,8 +65,9 @@
<view class="title">话费充值</view>
<view class="list">
<view class="box" v-for="(row,index) in huafeiList" :key="index" @tap="toOrdehuafeirList(index)">
<uni-badge style="width: 20px;position: absolute; left: 15%;" v-if="row.text == '待支付' && rechargeOrderNum "
:text="rechargeOrderNum" type="error" size="normal"></uni-badge>
<uni-badge style="width: 20px;position: absolute; left: 15%;"
v-if="row.text == '待支付' && rechargeOrderNum " :text="rechargeOrderNum" type="error"
size="normal"></uni-badge>
<view class="img">
<view class="icon" :class="row.icon"></view>
</view>
@ -160,7 +161,7 @@
textnum: '',
textSend: '',
therrNum: '',
rechargeOrderNum:'', //
rechargeOrderNum: '', //
headerTop: null,
statusTop: null,
showHeader: true,
@ -242,8 +243,12 @@
url: '../../login/login?id=2',
text: '代理商登录',
img: 'user/renw.png'
},
{
url: '/member-Recharge/home/home',
text: '充值会员',
img: 'user/bank.png'
}
// ,
// {
// url: '/pages/user/Charge/Charge',

@ -1,17 +1,21 @@
<template>
<view>
<view class="width100 height120 headsbg backcorfff" @click="jumpupadess('add')">
<view class="width100 height120 headsbg backcorfff">
<view class="height20"></view>
<view class="width100 fotct font18 fcor666">自助餐厅,不支持外卖</view>
<image src="../static/imgs/buffstu.png" mode="widthFix" class="width100"></image>
<image src="../static/imgs/buffstu.png" v-if="typeid == 1" mode="widthFix" class="width100"></image>
<image src="../static/imgs/buffstu1.png" v-if="typeid == 2" mode="widthFix" class="width100"></image>
</view>
<view class="input-box mart20 width90">
<view class="input-box mart20 width90" v-if="typeid == 1">
<view class="fcor333 font14 alijusstart" style="width: 100px;padding-left: 10px;" @click="jumpregin()">上海
<image src="../../static/img/downj.png" mode="widthFix" class="icon12 margle"></image>
</view>
<input placeholder="请输入关键字搜索" placeholder-style="color:#c0c0c0;" />
<view class="icon search"></view>
</view>
<view class="mart20 width80 alijusstart fotct marb20">
<!-- <view class="mart20 width80 alijusstart fotct marb20" v-if="typeid == 1">
<view class="width50 fcor333 font16" :class="collection == 1?'colorc8':'fcor333'" @click="changestu(1)">附近餐厅
<text class="bufbtn" :class="collection == 1?'backgrdc8':'backcor33'">97</text>
</view>
@ -19,44 +23,90 @@
收藏的餐厅
<text class="bufbtn" :class="collection == 2?'backgrdc8':'backcor33'">0</text>
</view>
</view>
</view> -->
<view class="mart10 width90 height90 borderrs backcorfff" v-for="(item,index) in kcfShopList" :key="index"
<view class="width100 height40"></view>
<!-- <view class="mart20 width80 alijusstart fotct marb20" v-if="typeid == 2">
<view class="width50 fcor333 font16" :class="collection == 1?'color2f6f43':'fcor333'" @click="changestu(1)">
附近餐厅
<text class="bufbtn" :class="collection == 1?'backcorf2f6':'backcor33'">255</text>
</view>
<view class="width50 fcor333 font16" :class="collection == 2?'color2f6f43':'fcor333'" @click="changestu(2)">
收藏的餐厅
<text class="bufbtn" :class="collection == 2?'backcorf2f6':'backcor33'">0</text>
</view>
</view> -->
<view class="mart10 width90 borderrs backcorfff" v-for="(item,index) in kcfShopList" :key="index"
@click="jumpmenulist()">
<view class="paddtop10 width90 alijusstart">
<view class="width80p font16 fcor333 fontwig6">时代天街</view>
<view class="width80p font16 fcor333 fontwig6">{{item.name}}</view>
<view class="width20 fotrt">
<!-- <image mode="widthFix" class="icon20" src="../static/imgs/nocollection.png"></image> -->
<image mode="widthFix" class="icon20" src="../static/imgs/collection.png"></image>
<!-- <image mode="widthFix" class="icon20" v-if="typeid == 1" src="../static/imgs/collection.png">
</image> -->
<!-- <image mode="widthFix" class="icon20" v-if="typeid == 2" src="../static/imgs/collectionlv.png">
</image> -->
</view>
</view>
<view class="width90 mart5 font12 fcor999">前门西大街正阳市场1号楼中部</view>
<view class="width90 mart5 alijusstart">
<image class="icon15" src="../static/imgs/location.png" mode="widthFix"></image>
<text class="margle font14 fcor666">0.2km</text>
<view class="width90 mart5 font12 fcor999">{{item.address}}</view>
<view class="width90 mart5 alijusstart paddbotm10">
<image class="icon15" src="../static/imgs/location.png" v-if="typeid == 1" mode="widthFix"></image>
<image class="icon15" src="../static/imgs/locabtn.png" v-if="typeid == 2" mode="widthFix"></image>
<text class="margle font14 fcor666 ">{{(item.distance / 1000).toFixed(2)}}km</text>
</view>
</view>
</view>
</template>
<script>
import {
getStarbucksStore
} from '../../Utils/Api.js';
let app = getApp();
export default {
data() {
return {
collection: 1, //
kcfShopList: [1, 2, 3, 4, 5, 6, 7, 8, 9] //
kcfShopList: [], //
typeid: app.globalData.distinguishid //
}
},
onLoad() {
this.getStarbucksStore();
},
methods: {
//
changestu(item) {
this.collection = item;
},
//
jumpregin() {
uni.navigateTo({
url: '../../qianzhu-Starbucks/changeRegin/changeRegin'
})
},
//
jumpmenulist() {
uni.navigateTo({
url: '../menu-list/menu-list'
})
},
//
getStarbucksStore() {
uni.showLoading({
title:'加载中...'
})
let datas = {
lat: app.globalData.latitude,
lon: app.globalData.longitude
}
getStarbucksStore(datas).then(res => {
uni.hideLoading();
if (res.return_code == '000000') {
this.kcfShopList = res.return_data;
}
})
}
}
}
@ -115,10 +165,10 @@
}
input {
padding-left: 28upx;
height: 28upx;
font-size: 28upx;
width: 100%;
padding-left: 10px;
}
}
</style>

@ -3,15 +3,25 @@
<view class="width100 height120 headsbg backcorfff fotct">
<view class="height20"></view>
<view class="width100 font18 fcor666">时代天街</view>
<image src="../static/imgs/location.png" mode="widthFix" class="icon20 mart5"></image>
<image src="../static/imgs/location.png" v-if="typeid == 1" mode="widthFix" class="icon20 mart5"></image>
<image src="../static/imgs/locabtn.png" v-if="typeid == 2" mode="widthFix" class="icon20 mart5"></image>
<view class="width100 mart5 font12 fcor666">时代天街时代天街时代天街时代天街</view>
</view>
<view class="width96 mart20 colorc3 font12 fotct">
<view class="width96 mart20 colorc3 font12 fotct" v-if="typeid == 1">
:约5分钟后取餐,请尽快到餐厅取餐哦
</view>
<view class="concont width94 mart10 backcorfff height45 alijusstart" v-if="typeid == 2">
<view class="width25 font14 paddleft10 fcor333">
餐品详情
</view>
<view class="color2f6f43 font14">
3-10分钟出单请凭取餐口令到店取餐
</view>
</view>
<view class="concont width94 mart10 backcorfff">
<view class="width94 paddtop10 font14">
<view class="width94 paddtop10 font14 fcor333">
餐品详情
</view>
<view class="width100 bor-botm1 mart10 marb10"></view>
@ -28,21 +38,84 @@
</view>
</view>
<view class="width90 fotrt height50 font13 fcor999">
<text class="fcor333 fontwig6" style="margin: 0px 5px;"> 1 </text> 小计: <text
class="font16 colorc3 fontwig6 margle"> ¥16.8</text>
<text class="fcor333 fontwig6" style="margin: 0px 5px;"> 1 </text> 小计:
<text class="font16 colorc3 fontwig6 margle" v-if="typeid == 1"> ¥16.8</text>
<text class="font16 color2f6f43 fontwig6 margle" v-if="typeid == 2"> ¥16.8</text>
</view>
</view>
</view>
<view class="width94 concont mart10 backcorfff">
<view class="width92 alijusstart paddtop20">
<view class="width30 fcor333 fontwig6 font16">
积分抵扣
</view>
<view class="cj-slider">
<view class="flleft fotct font14 fcor666" style="width: 15%;">0</view>
<cj-slider style="width: 60%; float:left;" v-model="priceValue" :min="0"
:max="availIntegal" :step="1" :blockWidth="40"
@end="blockEnd" />
<view class="flright fotrt font14 fcor666" style="width: 25%;">{{availIntegal}}</view>
</view>
</view>
<view class="width94 line1 mart15 marb5"></view>
<view class="height50 width100 backcorfff">
<view class="width70 flleft fcor666 font16 text1" style="padding-left: 4%;">
抵扣金额
</view>
<view class="width20 flright fotrt paddtright10 font15 fcor666 alijun"
style="align-items: center;">
¥{{priceValue[1] / 100}}
</view>
</view>
<view class="height50 width100">
<view class="width100 flleft fcor333 fontwig6 font16" style="padding-left: 4%;">
支付方式
<!-- :
<text class="jfrecharge" style="background-color: #c72a20;" v-if="typeid == 1" @click="jumpdeposits">积分充值</text>
<text class="jfrecharge backcorf2f6" v-if="typeid == 2" @click="jumpdeposits">积分充值</text> -->
</view>
</view>
<!-- <view class="height50 width100"
@tap="paytype='jinbi'">
<view class="width70 flleft fcor333 font16 text1" style="padding-left: 4%;">
积分支付<text class="font14 fcor666 margle">可用积分: 20000</text>
</view>
<view class="width20 flright fotrt paddtright10 font15 fontwig6 fcor666 alijun"
style="align-items: center;">
<radio :checked="paytype=='jinbi'" v-if="typeid == 1" color="#c72a20" />
<radio :checked="paytype=='jinbi'" v-if="typeid == 2" color="#2f6f43" />
</view>
</view> -->
<view class="height50 width100" @tap="paytype='weixin'">
<view class="width50 flleft fcor333 font16" style="padding-left: 4%;">
微信支付
</view>
<view class="width40 flright fotrt paddtright10 font15 fontwig6 fcor666 alijun"
style="align-items: center;">
<radio :checked="paytype=='weixin'" v-if="typeid == 1" color="#c72a20" />
<radio :checked="paytype=='weixin'" v-if="typeid == 2" color="#2f6f43" />
</view>
</view>
<view class="height50 width100" @tap="paytype='gonghuika'">
<view class="width70 flleft fcor333 font16 text1" style="padding-left: 4%;">
汇联通工会卡<text class="font14 fcor666 margle">可用余额: 13.1</text>
</view>
<view class="width20 flright fotrt paddtright10 font15 fontwig6 fcor666 alijun"
style="align-items: center;">
<radio :checked="paytype=='gonghuika'" v-if="typeid == 1" @click="changeRiado()" color="#c72a20" />
<radio :checked="paytype=='gonghuika'" v-if="typeid == 2" @click="changeRiado()" color="#2f6f43" />
</view>
</view>
</view>
<view class="concont width94 mart10 backcorfff">
<view class="width94 alijusstart paddtop10 font14 fcor666">
<view class="width50">联系电话</view>
<view class="width50 fotrt">15583658692</view>
<view class="width40">联系电话</view>
<input class="width60 fotrt" placeholder="请输入联系人手机号"/>
</view>
<view class="width94 font12 fcor999 mart5 paddbotm10">经用于接收取餐码,请正确填写</view>
</view>
<view class="concont width94 mart20 backcorfff marb100">
<view class="concont width94 mart20 backcorfff marb100" v-if="typeid == 1">
<view class="width94 paddtop10 font14 fcor333 fontwig6">
就餐方式
</view>
@ -57,6 +130,30 @@
</view>
</view>
</view>
<view class="concont width94 mart20 backcorfff marb100 font13" v-if="typeid == 2">
<view class="width94 alijusstart paddtop10 font14">
<view class="width50 fcor333">购买须知</view>
<!-- <view ></view> -->
<radio-group class="width50 fotrt alijusend font14" @change="radioChange" style="transform: scale(0.77)">
<radio v-if="typeid == 1" color="#c72a20" />
<radio v-if="typeid == 2" color="#2f6f43" />
<text>已读</text>
<!-- <text>未读</text> -->
</radio-group>
</view>
<view class="fcor666 width94 mart10">
1.本平台商品为折扣商品,<text class="fontwig6 fcoreb5">付款后订单不可取消!!!不可退换!!!</text>请准确核对信息确认后购买
</view>
<view class="fcor666 width94 mart10">
2.出餐是由平台入驻的商家提供咖啡代点服务,若出餐失败,将会在两小时内自动退款
</view>
<view class="fcor666 width94 mart10">
3.购买成功后,将会以推送消息的方式提醒您购买成功,请查看短信或者到订单详情页查看取餐口令,凭取餐口令可到门店取餐
</view>
<view class="fcor666 width94 mart10 paddbotm20">
4.如遇出餐失败配送失败等任何平台方原因导致的订单异常请及时联系在线客服处理
</view>
</view>
<view class="footbtn width100 height50 backcor33">
@ -65,7 +162,8 @@
合计: ¥<text class="font16 fontwig6" style="margin: 0px 6px;">16.8</text> <text class="font12">已省 ¥1.7</text>
</view>
<view class="width30 fotrt">
<view class="btnpay fotct font13 fcorfff">去支付</view>
<view class="btnpay fotct font13 fcorfff" style="background-color: #c72a20;" v-if="typeid == 1">去支付</view>
<view class="btnpay fotct font13 fcorfff backcorf2f6" v-if="typeid == 2">去支付</view>
</view>
</view>
</view>
@ -73,18 +171,37 @@
</template>
<script>
import cjSlider from '@/components/cj-slider/cj-slider.vue';
let app = getApp();
export default {
components: {
cjSlider
},
data() {
return {
orderList: [1, 2, 3, 4, 5],
sttypeid:1
sttypeid:1,
paytype: '', //
typeid: app.globalData.distinguishid ,//
priceValue: [0, 2000], //
availIntegal: '2000', //
}
},
methods: {
//
changedissr(item){
this.sttypeid = item;
}
},
//
blockEnd() {
this.payPrice = this.priceValue[1];
if (this.payPrice == 0) {
this.isUse = false;
this.paytype = '';
} else {
this.isUse = true;
}
},
}
}
</script>
@ -101,6 +218,15 @@
.concont {
border-radius: 12px;
}
.jfrecharge {
padding: 3px 20rpx;
color: #fff;
margin-left: 50%;
justify-content: center;
align-items: center;
font-size: 30rpx;
border-radius: 40rpx;
}
.footbtn{
bottom: 0px;
@ -108,7 +234,6 @@
}
.btnpay{
width: 90px;
background-color: #c72a20;
border-radius: 22px;
height: 36px;
line-height: 36px;
@ -122,4 +247,10 @@
background-color: #faf1f1;
color: #c72a20;
}
.cj-slider {
width: 100%;
align-items: center;
display: flex;
}
</style>

@ -6,7 +6,7 @@
<view class="fcor666 font20"><text class="fcor333 fontwig6 ">KFC</text>在线点餐</view>
<view class="c62a1e font28 mart10 fontwig6">5折起</view>
<image class="width80p mart20" mode="widthFix" src="../static/imgs/kfc1.png"></image>
<view class="mart15 width90 height30 border-15 fcorfff backcorf062 font13" @click="jumpbuffert()">
<view class="mart20 width80 height30 border-15 fcorfff backcorf062 font13" @click="jumpbuffert()">
立即点餐(堂食/外带)
</view>
</view>
@ -20,13 +20,14 @@
</view> -->
</view>
<view class="foots fotct marb20">
<view class="width90 mart30 colorbe font14"> 本产品为第三方代点餐/代配送服务</view>
<view class="width90 mart5 colorbe font14"> 即第三方代点餐一切商业行为与肯德基无关</view>
<view class="width90 mart30 colorbe font12"> 本产品为第三方代点餐/代配送服务</view>
<view class="width90 mart5 colorbe font12"> 即第三方代点餐一切商业行为与肯德基无关</view>
</view>
</view>
</template>
<script>
let app = getApp();
export default {
data() {
return {
@ -35,9 +36,10 @@
},
methods: {
//
jumpbuffert(){
jumpbuffert() {
app.globalData.distinguishid = 1;
uni.navigateTo({
url:'../buffet-order/buffet-order'
url: '../buffet-order/buffet-order?typeid=1'
})
},
//

@ -17,14 +17,15 @@
<view v-for="item in flist" :key="item.id" class="f-item" :class="{active: item.id === currentId}"
@click="tabtap(item)">
<view class="width100 fotct">
<image src="../static/imgs/menu1.png" mode="widthFix" class="icon45"></image>
<image :src="item.ext2" mode="widthFix" class="icon45"></image>
</view>
<view class="width100" style="margin-top: -30px;">
<view class="width100 fotct" style="margin-top: -30px;">
{{item.name}}
</view>
</view>
</scroll-view>
<scroll-view scroll-with-animation scroll-y class="right-aside" @scroll="asideScroll"
:scroll-top="tabScrollTop">
<view v-for="item in slist" :key="item.id" :id="'main-'+item.id">
@ -34,40 +35,111 @@
<text class="promotion_mixg1 backcor33 marglerig"></text>
{{item.name}}
</view>
<view @click="navToList(item.id, titem.id)" v-if="titem.pid === item.id" class="t-list mart10"
v-for="titem in tlist" :id="'main-'+item.id" :key="titem.id">
<view v-if="titem.ext1 == item.id" class="t-list mart10" v-for="titem in tlist" :key="titem.id">
<view class="paddtop10 width94 font16 fcor333 fotrt fontwig6 text2">
香辣鸡腿堡
{{titem.name}}
</view>
<view class="width94 alijun mart5">
<view class="width60">
<image src="../static/imgs/prod1.png" mode="widthFix" class="width100"></image>
</view>
<view class="width40 fotrt">
<view class="width100 font12 colorc3">¥<text class="font18 fontwig6 margle">16.8</text>
<image :src="titem.defaultImage" mode="widthFix" class="qzgoodsimg"></image>
<view class="width50 fotrt">
<view class="width100 font12 colorc3" v-if="typeid == 1">¥<text
class="font18 fontwig6 margle">{{titem.salesTallPrice}}</text>
</view>
<view class="width100 font14 mart5 colorc3">已减¥1.7</view>
<view class="width100 font14 mart5 fcor999" style="text-decoration: line-through;">原价¥18.5
<view class="width100 font12 color2f6f43" v-if="typeid == 2">¥<text
class="font18 fontwig6 margle">{{titem.salesTallPrice}}</text>
</view>
<view class="width100 font14 mart5 colorc3" v-if="typeid == 1">
已减¥{{(titem.marketTallPrice - titem.salesTallPrice).toFixed(2)}}</view>
<view class="width100 font14 mart5 color2f6f43" v-if="typeid == 2">
已减¥{{(titem.marketTallPrice - titem.salesTallPrice).toFixed(2)}}</view>
<view class="width100 font14 mart5 fcor999" style="text-decoration: line-through;">
原价¥{{titem.marketTallPrice}}
</view>
<view class="mart10 icon-click fotrt">
<image class="btn-reduce" mode="widthFix" src="../static/imgs/reduce.png"></image>
<view class="num">1</view>
<image class="btn-plus" mode="widthFix" src="../static/imgs/plus.png"></image>
<!-- <image class="btn-reduce" mode="widthFix" src="../static/imgs/reduce.png"></image> -->
<!-- <view class="num fcorfff" style="background: #d90209;">1</view> -->
<image class="btn-plus" mode="widthFix" v-if="typeid == 1" @click="showPopup()"
src="../static/imgs/plus.png"></image>
<image class="btn-plus" mode="widthFix" v-if="typeid == 2" @click="showPopup()"
src="../static/imgs/blueplus.png"></image>
</view>
<!--
<view class="mart10 icon-click fotrt" v-if="typeid == 2">
<image class="btn-plus" mode="widthFix" @click="showPopup()"
src="../static/imgs/blueplus.png"></image>
</view> -->
</view>
</view>
</view>
</view>
</scroll-view>
<shopcart :goods="goods" @add="addCart" @dec="decreaseCart" @input="inputCart" @delAll="delAll"></shopcart>
<!-- 弹窗选择规格 -->
<wybPopup ref="popup" type="bottom" width="500" height="1000" scrollY="true" radius="6" :showCloseIcon="true">
<image mode="widthFix" class="width40w mart40" src="../static/imgs/prod1.png"></image>
<view class="width100 line1 mart10"></view>
<view class="mart20 width90 font18 fontwig6 fcor333">产品名字</view>
<view class="width90 mart10">
<view class="fcor333 font16 fontwig6">杯型</view>
<view class="mart10 width30 fotct height30 fcor666 font12 typecage" v-for="(item,index) in list"
:key="index">
中杯
</view>
</view>
<view class="width90 mart10">
<view class="fcor333 font16 fontwig6">温度</view>
<view class="mart10 width30 fotct height30 fcor666 font12 typecage" v-for="(item,index) in list"
:key="index">
特别热
</view>
</view>
<view class="width90 mart10">
<view class="fcor333 font16 fontwig6">牛奶</view>
<view class="mart10 width30 fotct height30 fcor666 font12 typecage" v-for="(item,index) in list"
:key="index">
燕麦奶
</view>
</view>
<view class="height30"></view>
<view class="wybfot width100">
<view class="height50 pricefot alijusstart ">
<view class="width50 margle10">
¥<text class="font24 fontwig6 fcor333 margle">35.9</text>
</view>
<view class="icon-click">
<image class="btn-reduce" mode="widthFix" src="../static/imgs/wreduce.png"></image>
<view class="num fcor333">1</view>
<image class="btn-plus" mode="widthFix" v-if="typeid == 1" @click="showPopup()"
src="../static/imgs/plus.png"></image>
<image class="btn-plus" mode="widthFix" v-if="typeid == 2" @click="showPopup()"
src="../static/imgs/blueplus.png"></image>
</view>
</view>
<view class="width100 height50 fotct fcorfff" style="background-color: #c72a20;" v-if="typeid == 1"
@click="close()">
加入购物车</view>
<view class="width100 height50 backcorf2f6 fotct fcorfff" v-if="typeid == 2" @click="close()">加入购物车
</view>
</view>
</wybPopup>
</view>
</template>
<script>
import shopcart from '../../components/shopcart.vue';
import wybPopup from '../../components/wyb-popup/wyb-popup.vue';
import {
getStarbucksProducts
} from '../../Utils/Api.js';
let app = getApp();
export default {
components: {
shopcart
shopcart,
wybPopup
},
data() {
return {
@ -382,269 +454,55 @@
},
],
cateList: [{
id: 1,
name: '手机数码'
},
{
id: 2,
name: '礼品鲜花'
},
{
id: 3,
name: '男装女装'
},
{
id: 4,
name: '母婴用品'
},
{
id: 5,
pid: 1,
name: '手机通讯'
},
{
id: 6,
pid: 1,
name: '运营商'
},
{
id: 8,
pid: 5,
name: '全面屏手机',
picture: '/static/temp/cate2.jpg'
},
{
id: 9,
pid: 5,
name: '游戏手机',
picture: '/static/temp/cate3.jpg'
},
{
id: 10,
pid: 5,
name: '老人机',
picture: '/static/temp/cate1.jpg'
},
{
id: 11,
pid: 5,
name: '拍照手机',
picture: '/static/temp/cate4.jpg'
},
{
id: 12,
pid: 5,
name: '女性手机',
picture: '/static/temp/cate5.jpg'
},
{
id: 14,
pid: 6,
name: '合约机',
picture: '/static/temp/cate1.jpg'
},
{
id: 15,
pid: 6,
name: '选好卡',
picture: '/static/temp/cate4.jpg'
},
{
id: 16,
pid: 6,
name: '办套餐',
picture: '/static/temp/cate5.jpg'
},
{
id: 17,
pid: 2,
name: '礼品',
},
{
id: 18,
pid: 2,
name: '鲜花',
},
{
id: 19,
pid: 17,
name: '公益摆件',
picture: '/static/temp/cate7.jpg'
},
{
id: 20,
pid: 17,
name: '创意礼品',
picture: '/static/temp/cate8.jpg'
},
{
id: 21,
pid: 18,
name: '鲜花',
picture: '/static/temp/cate9.jpg'
},
{
id: 22,
pid: 18,
name: '每周一花',
picture: '/static/temp/cate10.jpg'
},
{
id: 23,
pid: 18,
name: '卡通花束',
picture: '/static/temp/cate11.jpg'
},
{
id: 24,
pid: 18,
name: '永生花',
picture: '/static/temp/cate12.jpg'
},
{
id: 25,
pid: 3,
name: '男装'
},
{
id: 26,
pid: 3,
name: '女装'
},
{
id: 27,
pid: 25,
name: '男士T恤',
picture: '/static/temp/cate13.jpg'
},
{
id: 28,
pid: 25,
name: '男士外套',
picture: '/static/temp/cate14.jpg'
},
{
id: 29,
pid: 26,
name: '裙装',
picture: '/static/temp/cate15.jpg'
},
{
id: 30,
pid: 26,
name: 'T恤',
picture: '/static/temp/cate16.jpg'
},
{
id: 31,
pid: 26,
name: '上装',
picture: '/static/temp/cate15.jpg'
},
{
id: 32,
pid: 26,
name: '下装',
picture: '/static/temp/cate16.jpg'
},
{
id: 33,
pid: 4,
name: '奶粉',
},
{
id: 34,
pid: 4,
name: '营养辅食',
},
{
id: 35,
pid: 4,
name: '童装',
},
{
id: 39,
pid: 4,
name: '喂养用品',
},
{
id: 36,
pid: 33,
name: '有机奶粉',
picture: '/static/temp/cate17.jpg'
},
{
id: 37,
pid: 34,
name: '果泥/果汁',
picture: '/static/temp/cate18.jpg'
},
{
id: 39,
pid: 34,
name: '面条/粥',
picture: '/static/temp/cate20.jpg'
},
{
id: 42,
pid: 35,
name: '婴童衣橱',
picture: '/static/temp/cate19.jpg'
},
{
id: 43,
pid: 39,
name: '吸奶器',
picture: '/static/temp/cate21.jpg'
},
{
id: 44,
pid: 39,
name: '儿童餐具',
picture: '/static/temp/cate22.jpg'
},
{
id: 45,
pid: 39,
name: '牙胶安抚',
picture: '/static/temp/cate23.jpg'
},
{
id: 46,
pid: 39,
name: '围兜',
picture: '/static/temp/cate24.jpg'
},
]
cateList: [],
typeid: app.globalData.distinguishid, //
list: [1, 2, 3, 4, 5]
}
},
onLoad() {
this.loadData();
this.getStarbucksProducts();
},
methods: {
//
getStarbucksProducts() {
uni.showLoading({
title: '加载中...'
})
getStarbucksProducts().then(res => {
uni.hideLoading();
if (res.return_code == '000000') {
this.cateList = res.return_data;
this.loadData();
}
})
},
async loadData() {
let list = await this.cateList;
list.forEach(item => {
if (!item.pid) {
this.flist.push(item); //pidid, pidpid=0
} else if (!item.picture) {
if (!item.categoryName) {
this.flist.push(item); //pidid, pidn=0
}
if (!item.defaultImage) {
this.slist.push(item); //2
} else {
}
if (item.categoryName && item.defaultImage) {
this.tlist.push(item); //3
}
})
this.currentId = this.flist[0].id;
},
//
tabtap(item) {
if (!this.sizeCalcState) {
this.calcSize();
}
this.currentId = item.id;
let index = this.slist.findIndex(sitem => sitem.pid == item.id);
let index = this.slist.findIndex(sitem => sitem.id == item.id);
this.tabScrollTop = this.slist[index].top;
// if(this.tabScrollTop == undefined ){
// this.tabScrollTop = 1420;
// }
},
//
asideScroll(e) {
@ -654,7 +512,7 @@
let scrollTop = e.detail.scrollTop;
let tabs = this.slist.filter(item => item.top <= scrollTop).reverse();
if (tabs.length > 0) {
this.currentId = tabs[0].pid;
this.currentId = tabs[0].id;
}
},
//tab
@ -665,6 +523,7 @@
view.fields({
size: true
}, data => {
let a = 20;
item.top = h;
h += data.height;
item.bottom = h;
@ -677,16 +536,23 @@
},
decreaseCart(item) {
},
showPopup() {
this.$refs.popup.show();
},
inputCart(item) {},
//
delAll() {
},
//
close() {
this.$refs.popup.hide();
},
//
navToList(){
navToList() {
uni.navigateTo({
url:'../kfc-details/kfc-details'
url: '../kfc-details/kfc-details'
})
}
}
@ -727,6 +593,7 @@
width: 80px;
height: 100%;
// margin-top: 85px;
margin-bottom: 55px;
background-color: #fff;
}
@ -752,6 +619,7 @@
overflow: hidden;
// margin-top: 85px;
padding-left: 20upx;
margin-bottom: 60px;
}
.s-item {
@ -786,29 +654,34 @@
}
.qzgoodsimg {
margin-top: -10px;
width: 120px;
}
.icon-click {
position: absolute;
// position: absolute;
height: 28px;
right: 6%;
}
.btn-reduce {
position: absolute;
left: 0px;
top: 0;
// position: absolute;
// left: 0px;
// top: 0;
width: 28px;
height: 28px;
z-index: 1;
// z-index: 1;
}
.btn-plus {
position: absolute;
right: 0px;
top: 0;
// position: absolute;
// right: 0px;
// top: 0;
width: 28px;
height: 28px;
z-index: 1;
// z-index: 1;
}
.num {
@ -816,15 +689,31 @@
height: 28px;
line-height: 28px;
font-weight: 600;
color: #fff;
background: #d90209;
border-radius: 18px;
}
.typecage {
margin-left: 2.5%;
border-radius: 3px;
border: 1px solid #333333;
display: inline-block;
}
.footbtn {
height: 50px;
background-color: #000000;
display: flex;
bottom: 0px;
}
.pricefot {
border-radius: 15px 15px 0 0;
box-shadow: 0px 5px 20px #333333;
}
.wybfot {
position: fixed;
bottom: 0px;
}
</style>

@ -2,7 +2,9 @@
<view>
<view class="width100 height220 headsbg backcorfff fotct">
<view class="height20"></view>
<view class="headstu"></view>
<view class="headstu font18 fontwig6">
{{countdownm}}:{{countdowns}}
</view>
<view class="width100 font18 colorc72 mart5">待支付</view>
<view class="width100 font14 fcor666 mart5">若超时未支付,订单将自动取消</view>
<view class="stubtn mart15">立即支付</view>
@ -76,13 +78,46 @@
data() {
return {
orderList: [1],
sttypeid: 1
sttypeid: 1,
countdownh: '',
countdownm: '',
countdowns: '',
timer: null, //
}
},
onLoad() {
this.timer = setInterval(() => {
this.showtime()
})
},
onUnload() {
clearInterval(this.timer);
},
methods: {
//
changedissr(item) {
this.sttypeid = item;
},
//
showtime() {
var nowtime = new Date(), //
endtime = new Date("2022/7/5"); //
var lefttime = endtime.getTime() - nowtime.getTime(), //
leftd = Math.floor(lefttime / (1000 * 60 * 60 * 24)), //
lefth = Math.floor((lefttime / (1000 * 60 * 60) % 24) + leftd * 24) < 10 ? "0" + Math.floor((lefttime /
(1000 * 60 * 60) % 24) + leftd * 24) : Math.floor((lefttime / (1000 * 60 * 60) % 24) + leftd *
24), //
leftm = Math.floor(lefttime / (1000 * 60) % 60) < 10 ? "0" + Math.floor(lefttime / (1000 * 60) % 60) :
Math.floor(lefttime / (1000 * 60) % 60), //
lefts = Math.floor(lefttime / 1000 % 60) < 10 ? "0" + Math.floor(lefttime / 1000 % 60) : Math.floor(
lefttime / 1000 % 60); //
this.countdownh = lefth //
this.countdownm = leftm //
this.countdowns = lefts //
// 00:00:00
if (lefttime < 0) {
this.countdownh = this.countdownm = this.countdowns = "00"
}
}
}
}
@ -96,6 +131,8 @@
.headstu {
width: 80px;
height: 80px;
line-height: 80px;
text-align: center;
border-radius: 50%;
background-color: #faf1f1;
color: #c72a20;

Binary file not shown.

After

Width:  |  Height:  |  Size: 691 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 613 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 649 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

@ -0,0 +1,117 @@
<template>
<view>
<city-select @cityClick="cityClick" :formatName="formatName" :activeCity="activeCity" :hotCity="hotCity"
:obtainCitys="obtainCitys" :isSearch="true" ref="citys"></city-select>
</view>
</template>
<script>
import citySelect from '@/components/city-select/city-select.vue'
export default {
data() {
return {
//
formatName: 'cityName',
//
activeCity: {
id: 1,
cityName: '南京市'
},
//
hotCity: [{
id: 0,
cityName: '南京市'
},
{
id: 1,
cityName: '南京市'
}
],
//
obtainCitys: [{
"cityInitial": "N",
"cityName": "内江市",
"provinceCode": "510000",
"cityCode": "511000000000",
"provinceName": "四川省",
"cityId": 528
},
{
"cityInitial": "L",
"cityName": "乐山市",
"provinceCode": "510000",
"cityCode": "511100000000",
"provinceName": "四川省",
"cityId": 141
},
{
"cityInitial": "N",
"cityName": "南充市",
"provinceCode": "510000",
"cityCode": "511300000000",
"provinceName": "四川省",
"cityId": 130
},
{
"cityInitial": "M",
"cityName": "眉山市",
"provinceCode": "510000",
"cityCode": "511400000000",
"provinceName": "四川省",
"cityId": 228
},
{
"cityInitial": "Y",
"cityName": "宜宾市",
"provinceCode": "510000",
"cityCode": "511500000000",
"provinceName": "四川省",
"cityId": 144
},
{
"cityInitial": "G",
"cityName": "广安市",
"provinceCode": "510000",
"cityCode": "511600000000",
"provinceName": "四川省",
"cityId": 5
}
]
}
},
components: {
citySelect
},
onLoad() {
this.activeCity = {
id: 1,
cityName: '南京市',
cityCode: 110100
}
//
this.hotCity = [{
id: 0,
cityName: '南京市',
cityCode: 110100
},
{
id: 1,
cityName: '北京市',
cityCode: 110102
}
]
},
methods: {
cityClick(item) {
uni.showToast({
icon: 'none',
title: 'item: ' + JSON.stringify(item),
duration: 2000
})
}
}
}
</script>
<style></style>

@ -0,0 +1,83 @@
<template>
<view>
<image mode="widthFix" class="width100 imgs" src="../static/imgs/skhome.png"></image>
<view class="width94 heads alijusstart">
<view class="width48 backcorfff height280 fotct paddtop15">
<view class="fcor333 fontwig6 font20">星专享</view>
<view class="color2f6f43 font16 mart10">低至8折</view>
<image class="width80p mart20" mode="widthFix" src="../static/imgs/sk1.png"></image>
<view class="mart20 width80 height30 border-15 fcorfff backcorf2f6 font13" @click="jumpbuffert()">
立即点餐(堂食/外带)
</view>
</view>
</view>
<view class="foots fotct marb20">
<view class="width90 mart30 colorbe font12"> 本产品为第三方代点餐/代配送服务</view>
<view class="width90 mart5 colorbe font12"> 即第三方代点餐一切商业行为与星巴克无关</view>
</view>
</view>
</template>
<script>
let app = getApp();
export default {
data() {
return {
}
},
methods: {
//
jumpbuffert() {
app.globalData.distinguishid = 2;
uni.navigateTo({
url: '/qianzhu-KFC/buffet-order/buffet-order'
})
},
//
jumpaddress() {
uni.navigateTo({
url: '../address/address'
})
}
}
}
</script>
<style lang="scss">
page {
background-color: #f0f0f0;
}
.imgs {
position: absolute;
}
.width48 {
width: 60%;
margin-left: 20%;
border-radius: 30rpx;
}
.margitle {
margin-left: 4%;
}
.heads {
position: relative;
top: 440rpx;
}
.border-15 {
border-radius: 30rpx;
}
.colorbe {
color: #beac7c;
}
.foots {
position: relative;
top: 450rpx;
}
</style>

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 159 KiB

@ -68,6 +68,14 @@
充值失败
</view>
</view>
<view class="row" >
<view class="left">
充值手机 :
</view>
<view class="right">
{{recinfo.rechargeContent}}
</view>
</view>
<view class="row" v-if="recinfo.orderPrice">
<view class="left">
订单总额 :

@ -244,6 +244,14 @@ $uni-font-size-paragraph:30upx;
.color32 {
color: #32649d;
}
.color2f6f43 {
color: #2f6f43;
}
.backcorf2f6 {
background-color: #2f6f43;
}
/* 背景颜色 */
.backcor9 {
background-color: #f6f6f6;
@ -680,6 +688,9 @@ $uni-font-size-paragraph:30upx;
padding-right: 10px;
}
.paddbotm5 {
padding-bottom: 5px;
}
.paddbotm10 {
padding-bottom: 10px;
}
@ -809,3 +820,7 @@ $uni-font-size-paragraph:30upx;
.icon15 {
width: 15px;
}
.icon12 {
width: 12px;
}
Loading…
Cancel
Save