套餐
This commit is contained in:
@@ -207,7 +207,7 @@
|
|||||||
</template>
|
</template>
|
||||||
<scroll-view class="u-m-t-32" scroll-x="true" v-if="index==goods.sel">
|
<scroll-view class="u-m-t-32" scroll-x="true" v-if="index==goods.sel">
|
||||||
<view class=" u-flex no-wrap ">
|
<view class=" u-flex no-wrap ">
|
||||||
<view class="u-flex u-m-r-20 ">
|
<view class="u-flex u-m-r-20 " v-if="!item.isGift">
|
||||||
<button class="tag" hover-class="hover-class"
|
<button class="tag" hover-class="hover-class"
|
||||||
@tap="showModel('discount',index)">单品打折</button>
|
@tap="showModel('discount',index)">单品打折</button>
|
||||||
</view>
|
</view>
|
||||||
|
|||||||
@@ -3,10 +3,11 @@
|
|||||||
|
|
||||||
<up-image :src="data.coverImg" mode="aspectFill" :width="img.width" :height="img.height"></up-image>
|
<up-image :src="data.coverImg" mode="aspectFill" :width="img.width" :height="img.height"></up-image>
|
||||||
<!-- <image lazy-load class="img" :src="data.coverImg" mode="aspectFill" :style="computedImgStyle()"></image> -->
|
<!-- <image lazy-load class="img" :src="data.coverImg" mode="aspectFill" :style="computedImgStyle()"></image> -->
|
||||||
<view class="info u-flex u-row-between u-col-top u-flex-col" @tap="emitEvent('add')">
|
<view class="info u-flex u-row-between u-col-top u-flex-col" >
|
||||||
<view>
|
<view>
|
||||||
<view>
|
<view>
|
||||||
<text class="u-line-2">{{data.name}}</text>
|
<text class="u-line-2">{{data.name}}
|
||||||
|
</text>
|
||||||
</view>
|
</view>
|
||||||
<view class="u-font-32 font-bold u-m-t-16">
|
<view class="u-font-32 font-bold u-m-t-16">
|
||||||
¥{{data.price}}
|
¥{{data.price}}
|
||||||
@@ -14,7 +15,7 @@
|
|||||||
</view>
|
</view>
|
||||||
<view class="u-flex">
|
<view class="u-flex">
|
||||||
<template v-if="!isSellout">
|
<template v-if="!isSellout">
|
||||||
<template v-if="!data.isDan">
|
<template v-if="!data.isDan||data.groupType==1">
|
||||||
<button class="btn" hover-class="btn-hover-class" @tap="emitEvent('chooseGuige')">选规格</button>
|
<button class="btn" hover-class="btn-hover-class" @tap="emitEvent('chooseGuige')">选规格</button>
|
||||||
</template>
|
</template>
|
||||||
<template v-else>
|
<template v-else>
|
||||||
|
|||||||
174
pagesCreateOrder/index/components/taocanModel.vue
Normal file
174
pagesCreateOrder/index/components/taocanModel.vue
Normal file
@@ -0,0 +1,174 @@
|
|||||||
|
<template>
|
||||||
|
<my-model ref="model" borderRadius="12" :title="datas.title">
|
||||||
|
<template #desc>
|
||||||
|
<scroll-view scroll-y="true" style="height: 50vh;" class="u-p-30 guigeModel">
|
||||||
|
<view class="u-m-b-40" v-for="(item,index) in datas.skus" :key="index">
|
||||||
|
<view class="u-text-left">
|
||||||
|
<view class="color-333">{{item.title}} <text
|
||||||
|
style="color:#999">({{item.count}}选{{item.number}})</text> </view>
|
||||||
|
</view>
|
||||||
|
<view class="u-flex u-m-t-20 u-flex-wrap">
|
||||||
|
<view class="item" @tap="chooseSkd(skd,item.number)" :class="{active:skd.select==true}"
|
||||||
|
v-for="(skd,skdIndex) in item.goods" :key="skdIndex">
|
||||||
|
{{skd.proName}}
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</scroll-view>
|
||||||
|
</template>
|
||||||
|
<template #btn>
|
||||||
|
<view class="u-p-30 border-top ">
|
||||||
|
<view class="u-flex u-p-b-30 u-row-between">
|
||||||
|
<view class="price">
|
||||||
|
<text>¥</text>
|
||||||
|
<text>{{datas.price}}</text>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="u-m-t-10">
|
||||||
|
<my-button @tap="confirm">添加</my-button>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
</my-model>
|
||||||
|
<uni-popup ref="popup" type="message">
|
||||||
|
<uni-popup-message type="info" message="请选择套餐" :duration="2000"></uni-popup-message>
|
||||||
|
</uni-popup>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import {
|
||||||
|
computed,
|
||||||
|
getCurrentInstance,
|
||||||
|
reactive,
|
||||||
|
ref,
|
||||||
|
watch
|
||||||
|
} from 'vue';
|
||||||
|
import util from '../util.js';
|
||||||
|
import infobox from '@/commons/utils/infoBox.js'
|
||||||
|
import myModel from '@/components/my-components/my-model.vue'
|
||||||
|
import myButton from '@/components/my-components/my-button.vue'
|
||||||
|
import {
|
||||||
|
onShow,
|
||||||
|
} from '@dcloudio/uni-app';
|
||||||
|
const props = defineProps({
|
||||||
|
goodsData: {
|
||||||
|
type: Object,
|
||||||
|
default: () => {}
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
let datas = reactive({
|
||||||
|
item: "",
|
||||||
|
title: "",
|
||||||
|
price: "",
|
||||||
|
skus: [],
|
||||||
|
selectData: [],
|
||||||
|
// 几选几,的和
|
||||||
|
selectNumber: 0,
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
// const selSku = computed(() => {
|
||||||
|
// return props.skus.reduce((prve, cur) => {
|
||||||
|
// prve.push(cur.sel)
|
||||||
|
// return prve
|
||||||
|
// }, []).join()
|
||||||
|
// })
|
||||||
|
|
||||||
|
|
||||||
|
// const goods = computed(() => {
|
||||||
|
// return props.skuMap[selSku.value]
|
||||||
|
// })
|
||||||
|
watch(() => props.goodsData, (newval) => {
|
||||||
|
datas.item = newval
|
||||||
|
datas.title = newval.name
|
||||||
|
datas.price = newval.price
|
||||||
|
datas.skus = newval.proGroupVo
|
||||||
|
datas.skus.forEach(ele => {
|
||||||
|
datas.selectNumber += ele.number
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
const emits = defineEmits(['confirm', 'updateSku'])
|
||||||
|
let number = ref(1)
|
||||||
|
|
||||||
|
function chooseSkd(skd, number) {
|
||||||
|
if (datas.selectData.includes(skd.proId)) {
|
||||||
|
skd.select = false
|
||||||
|
let indexs = datas.selectData.indexOf(skd.proId)
|
||||||
|
datas.selectData.splice(indexs, 1)
|
||||||
|
} else {
|
||||||
|
if (datas.selectData.length < number) {
|
||||||
|
skd.select = true
|
||||||
|
datas.selectData.push(skd.proId)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const model = ref(null)
|
||||||
|
|
||||||
|
function open() {
|
||||||
|
model.value.open()
|
||||||
|
}
|
||||||
|
|
||||||
|
function close() {
|
||||||
|
model.value.close()
|
||||||
|
}
|
||||||
|
const instance = getCurrentInstance();
|
||||||
|
|
||||||
|
function confirm() {
|
||||||
|
console.log(datas.selectData.length)
|
||||||
|
console.log(datas.selectNumber,'调试1111')
|
||||||
|
if (datas.selectData.length == datas.selectNumber) {
|
||||||
|
emits('confirm', datas.selectData,datas.item)
|
||||||
|
close()
|
||||||
|
} else {
|
||||||
|
instance.ctx.$refs.popup.open()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
defineExpose({
|
||||||
|
open,
|
||||||
|
close
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss">
|
||||||
|
.border-top {}
|
||||||
|
|
||||||
|
.icon {
|
||||||
|
width: 40rpx;
|
||||||
|
height: 40rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.guigeModel {
|
||||||
|
.item {
|
||||||
|
color: #666;
|
||||||
|
font-size: 24rpx;
|
||||||
|
padding: 4rpx 28rpx;
|
||||||
|
border: 1px solid #E5E5E5;
|
||||||
|
border-radius: 8rpx;
|
||||||
|
margin-right: 20rpx;
|
||||||
|
margin-bottom: 20rpx;
|
||||||
|
transition: all .2s ease-in-out;
|
||||||
|
|
||||||
|
&.active {
|
||||||
|
border-color: $my-main-color;
|
||||||
|
color: $my-main-color;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.disabled {
|
||||||
|
color: #ccc;
|
||||||
|
border-color: #eee;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.price {
|
||||||
|
color: #EB4F4F;
|
||||||
|
}
|
||||||
|
|
||||||
|
.border-top {
|
||||||
|
border-top: 1px solid #E5E5E5;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -105,7 +105,6 @@
|
|||||||
@add="searchGoodsUpdate(goodsItem,goodsIndex,true)"
|
@add="searchGoodsUpdate(goodsItem,goodsIndex,true)"
|
||||||
@reduce="searchGoodsUpdate(goodsItem,goodsIndex,false)"
|
@reduce="searchGoodsUpdate(goodsItem,goodsIndex,false)"
|
||||||
:index="goodsItem.goodsIndex" :data="goodsItem"></list-goods-item>
|
:index="goodsItem.goodsIndex" :data="goodsItem"></list-goods-item>
|
||||||
|
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<my-img-empty v-if="!searchResult.length" tips="未搜索到相关商品"></my-img-empty>
|
<my-img-empty v-if="!searchResult.length" tips="未搜索到相关商品"></my-img-empty>
|
||||||
@@ -120,7 +119,8 @@
|
|||||||
<my-car :isCreateOrderToDetail="isCreateOrderToDetail" @updateNumber="carsNumberChange" :user="data.vipUser"
|
<my-car :isCreateOrderToDetail="isCreateOrderToDetail" @updateNumber="carsNumberChange" :user="data.vipUser"
|
||||||
:masterId="data.masterId" :table="data.table" :data="cars" @clear="onClearCart"></my-car>
|
:masterId="data.masterId" :table="data.table" :data="cars" @clear="onClearCart"></my-car>
|
||||||
</view>
|
</view>
|
||||||
|
<!-- 套餐选择规格 -->
|
||||||
|
<taocanModel ref="taocanModelRef" @confirm="taocanConfirm" :goodsData="selGoods"></taocanModel>
|
||||||
<!-- 选择规格 -->
|
<!-- 选择规格 -->
|
||||||
<guige-model @update-sku="updateSkuSel" @confirm="guigeConfirm" ref="chooseGuigeModel" :goodsData="selGoods"
|
<guige-model @update-sku="updateSkuSel" @confirm="guigeConfirm" ref="chooseGuigeModel" :goodsData="selGoods"
|
||||||
:title="guigeModelData.title" :sku-map="guigeModelData.chooseGoods.skuMap"
|
:title="guigeModelData.title" :sku-map="guigeModelData.chooseGoods.skuMap"
|
||||||
@@ -150,6 +150,7 @@
|
|||||||
import util from './util.js';
|
import util from './util.js';
|
||||||
import color from '@/commons/color.js';
|
import color from '@/commons/color.js';
|
||||||
import guigeModel from './components/guige'
|
import guigeModel from './components/guige'
|
||||||
|
import taocanModel from './components/taocanModel.vue'
|
||||||
import listGoodsItem from './components/list-goods-item.vue'
|
import listGoodsItem from './components/list-goods-item.vue'
|
||||||
import mySurcharge from './components/surcharge'
|
import mySurcharge from './components/surcharge'
|
||||||
import {
|
import {
|
||||||
@@ -277,6 +278,26 @@
|
|||||||
}
|
}
|
||||||
return obj
|
return obj
|
||||||
}
|
}
|
||||||
|
// 添加套餐
|
||||||
|
async function taocanConfirm(d, item) {
|
||||||
|
const cartGoods = await addCart({
|
||||||
|
num: 1,
|
||||||
|
groupProductIdList: d,
|
||||||
|
productId: item.id,
|
||||||
|
skuId: item.specList[0].id
|
||||||
|
})
|
||||||
|
infoBox.showToast('添加成功')
|
||||||
|
// guigeConfirm(item, 1)
|
||||||
|
// updateCartGoods({
|
||||||
|
// productId: item.id,
|
||||||
|
// skuId: item.specList[0].id,
|
||||||
|
// cartId: cartGoods.id
|
||||||
|
// })
|
||||||
|
cars.push({
|
||||||
|
...cartGoods,
|
||||||
|
specSnap: item.specSnap
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
function scanCode() {
|
function scanCode() {
|
||||||
// 只允许通过相机扫码
|
// 只允许通过相机扫码
|
||||||
@@ -671,11 +692,11 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
function toLinshi() {
|
function toLinshi() {
|
||||||
go.to('PAGES_CHOOSE_ADD_TEMP_CUISINE',{
|
go.to('PAGES_CHOOSE_ADD_TEMP_CUISINE', {
|
||||||
masterId:data.masterId,
|
masterId: data.masterId,
|
||||||
tableId:data.table.tableId,
|
tableId: data.table.tableId,
|
||||||
vipUserId:option.vipUserId?option.vipUserId:'',
|
vipUserId: option.vipUserId ? option.vipUserId : '',
|
||||||
useType:uni.getStorageSync('useType')
|
useType: uni.getStorageSync('useType')
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -833,7 +854,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
let selGoods = ref({})
|
let selGoods = ref({});
|
||||||
|
|
||||||
function chooseGuige(foodsindex, index) {
|
function chooseGuige(foodsindex, index) {
|
||||||
if (!canAddGoods()) {
|
if (!canAddGoods()) {
|
||||||
@@ -843,13 +864,19 @@
|
|||||||
}
|
}
|
||||||
const $goods = data.tabbar[index].foods[foodsindex]
|
const $goods = data.tabbar[index].foods[foodsindex]
|
||||||
selGoods.value = $goods
|
selGoods.value = $goods
|
||||||
guigeModelData.title = $goods.name
|
if ($goods.groupType == 1) {
|
||||||
const specList = $goods.specList;
|
instance.ctx.$refs.taocanModelRef.open()
|
||||||
const tagSnap = JSON.parse($goods.skuResult.tagSnap)
|
} else {
|
||||||
const skuMap = returnSelGoodsSkuMap(specList)
|
guigeModelData.title = $goods.name
|
||||||
const skuList = returnSelGoodsSkuList(tagSnap)
|
const specList = $goods.specList;
|
||||||
setSkugoodsDefaultInit($goods, skuList, skuMap, specList)
|
const skuMap = returnSelGoodsSkuMap(specList)
|
||||||
chooseGuigeModel.value.open()
|
// 多规格,和套餐规格区分.groupType=1 套餐多规格
|
||||||
|
let tagSnap = JSON.parse($goods.skuResult.tagSnap)
|
||||||
|
const skuList = returnSelGoodsSkuList(tagSnap)
|
||||||
|
setSkugoodsDefaultInit($goods, skuList, skuMap, specList)
|
||||||
|
chooseGuigeModel.value.open()
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async function guigeConfirm(sku, num) {
|
async function guigeConfirm(sku, num) {
|
||||||
@@ -906,9 +933,11 @@
|
|||||||
const cartId = goods.id
|
const cartId = goods.id
|
||||||
const tabbarIndex = data.tabbar.findIndex(v => v.id == categoryId)
|
const tabbarIndex = data.tabbar.findIndex(v => v.id == categoryId)
|
||||||
//临时菜没有对应商品数据
|
//临时菜没有对应商品数据
|
||||||
const $goods =!productId?undefined:data.tabbar[tabbarIndex].foods.find(v => v.id == productId)
|
const $goods = !productId ? undefined : data.tabbar[tabbarIndex].foods.find(v => v.id == productId)
|
||||||
//临时菜没有skuList
|
//临时菜没有skuList
|
||||||
const $sku =!productId?{suit:1}:$goods.specList.find(v => v.id == skuId)
|
const $sku = !productId ? {
|
||||||
|
suit: 1
|
||||||
|
} : $goods.specList.find(v => v.id == skuId)
|
||||||
|
|
||||||
if (num === 0 || num < $sku.suit) {
|
if (num === 0 || num < $sku.suit) {
|
||||||
//移除
|
//移除
|
||||||
@@ -1000,16 +1029,19 @@
|
|||||||
$goods.chooseNumber = number
|
$goods.chooseNumber = number
|
||||||
setSearchGoods(searchGoodsIndex, number)
|
setSearchGoods(searchGoodsIndex, number)
|
||||||
} else {
|
} else {
|
||||||
//增加
|
// 套餐和单规格
|
||||||
const num = suit
|
if ($goods.groupType != 1) {
|
||||||
const cartGoods = await addCart({
|
//增加
|
||||||
num,
|
const num = suit
|
||||||
productId,
|
const cartGoods = await addCart({
|
||||||
skuId
|
num,
|
||||||
})
|
productId,
|
||||||
infoBox.showToast('添加成功')
|
skuId
|
||||||
$goods.chooseNumber = num
|
})
|
||||||
cars.push(cartGoods)
|
infoBox.showToast('添加成功')
|
||||||
|
$goods.chooseNumber = num
|
||||||
|
cars.push(cartGoods)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -1201,7 +1233,7 @@
|
|||||||
console.log('update:createOrderIndex');
|
console.log('update:createOrderIndex');
|
||||||
init()
|
init()
|
||||||
})
|
})
|
||||||
uni.$on('add:cashCai', async() => {
|
uni.$on('add:cashCai', async () => {
|
||||||
console.log('add:cashCai');
|
console.log('add:cashCai');
|
||||||
const cartRes = await getCart()
|
const cartRes = await getCart()
|
||||||
cars.length = 0
|
cars.length = 0
|
||||||
|
|||||||
Reference in New Issue
Block a user