修复部分样式问题,修改清空购物车弹框

This commit is contained in:
YeMingfei666 2024-10-22 14:24:24 +08:00
parent 40e9f10bcc
commit a183514533
2 changed files with 117 additions and 79 deletions

View File

@ -1,74 +1,83 @@
<template> <template>
<view class="mask" @tap="hideGoods" v-if="switchGoods"></view> <view>
<view class="car border-top u-flex u-row-between u-col-bottom u-relative">
<view class="u-absolute goods bg-fff"> <view class="mask" @tap="hideGoods" v-if="switchGoods"></view>
<view <view class="car border-top u-flex u-row-between u-col-bottom u-relative">
class="u-p-t-32 color-666 border-bottom bg-fff u-absolute total u-p-r-28 u-p-b-32 u-p-l-28 u-flex u-row-between"> <view class="u-absolute goods bg-fff">
<view>已添加{{goodsNumber}}件商品</view> <view
<view class="color-666"> class="u-p-t-32 color-666 border-bottom bg-fff u-absolute total u-p-r-28 u-p-b-32 u-p-l-28 u-flex u-row-between">
<uni-icons color="#666" type="trash"></uni-icons>
<text class="u-m-l-10" @tap="clear">清空</text>
</view>
</view>
<scroll-view scroll-y="true" class="tranistion" :style="{height:switchGoods?'50vh':0 }">
<!-- 占位 -->
<view class="u-p-t-32 color-666 border-bottom u-p-r-28 u-p-b-32 u-p-l-28 u-flex u-row-between"
style="opacity: 0;">
<view>已添加{{goodsNumber}}件商品</view> <view>已添加{{goodsNumber}}件商品</view>
<view class="color-666"> <view class="color-666">
<uni-icons color="#666" type="trash"></uni-icons> <uni-icons color="#666" type="trash"></uni-icons>
<text class="u-m-l-10">清空</text> <text class="u-m-l-10" @tap="setModalShow('clear',true)">清空</text>
</view> </view>
</view> </view>
<!-- 占位 --> <scroll-view scroll-y="true" class="tranistion" :style="{height:switchGoods?'50vh':0 }">
<view class="color-333 item border-top u-flex u-row-center u-row-between" v-for="(item,index) in data" <!-- 占位 -->
:key="index"> <view class="u-p-t-32 color-666 border-bottom u-p-r-28 u-p-b-32 u-p-l-28 u-flex u-row-between"
<view class=""> style="opacity: 0;">
<view>{{item.name}}</view> <view>已添加{{goodsNumber}}件商品</view>
<view class="u-m-t-10 u-font-24 color-666">{{item.specSnap||''}}</view> <view class="color-666">
<uni-icons color="#666" type="trash"></uni-icons>
<text class="u-m-l-10">清空</text>
</view>
</view> </view>
<view class="u-flex"> <!-- 占位 -->
<view class="font-bold red u-m-r-32">{{formatPrice(item.salePrice*item.number) }}</view> <view class="color-333 item border-top u-flex u-row-center u-row-between"
<view class="u-flex" @tap="updateNumber(false,index,item)"> v-for="(item,index) in data" :key="index">
<image src="/pagesCreateOrder/static/images/icon-reduce-black.svg" class="icon" mode=""> <view class="">
</image> <view class="u-line-1">{{item.name}}</view>
</view> <view class="u-m-t-10 u-font-24 color-666 u-line-1">{{item.specSnap||''}}</view>
<view class="u-m-l-30 u-m-r-30 color-333">
{{item.number}}
</view>
<view class="u-flex" @tap="updateNumber(true,index,item)">
<image src="/pagesCreateOrder/static/images/icon-add-black.svg" class="icon" mode="">
</image>
</view> </view>
<view class="u-flex">
<view class="font-bold red u-m-r-32">{{formatPrice(item.salePrice*item.number) }}</view>
<view class="u-flex" @tap="updateNumber(false,index,item)">
<image src="/pagesCreateOrder/static/images/icon-reduce-black.svg" class="icon" mode="">
</image>
</view>
<view class="u-m-l-30 u-m-r-30 color-333">
{{item.number}}
</view>
<view class="u-flex" @tap="updateNumber(true,index,item)">
<image src="/pagesCreateOrder/static/images/icon-add-black.svg" class="icon" mode="">
</image>
</view>
</view>
</view> </view>
</view> <my-empty v-if="!data.length" text="暂未有添加商品"></my-empty>
<my-empty v-if="!data.length" text="暂未有添加商品"></my-empty> </scroll-view>
</scroll-view>
</view>
<view class="icon-car-box" @tap="toggleGoods">
<image src="/pagesCreateOrder/static/images/icon-car.svg" class="icon-car" />
<view class="dot">{{goodsNumber}}</view>
</view>
<view class="price font-bold u-flex">
<view></view>
<view>{{allPrice}}</view>
</view>
<my-button shape="circle" height="80" width="220" @tap="toConfimOrder">
<text class="u-font-32 font-bold">{{table.type=='add'?'确认加菜':'去下单'}} </text>
</my-button>
</view> </view>
<view class="icon-car-box" @tap="toggleGoods"> <up-modal title="提示" content="是否清空全部已添加的商品?" :show="modal.clear" showCancelButton closeOnClickOverlay @confirm="confirmModelConfirm"
<image src="/pagesCreateOrder/static/images/icon-car.svg" class="icon-car" /> @cancel="setModalShow('clear',false)" @close="setModalShow('clear',false)" width="300px"></up-modal>
<view class="dot">{{goodsNumber}}</view>
</view>
<view class="price font-bold u-flex">
<view></view>
<view>{{allPrice}}</view>
</view>
<my-button shape="circle" height="80" width="220" @tap="toConfimOrder">
<text class="u-font-32 font-bold">{{table.type=='add'?'确认加菜':'去下单'}} </text>
</my-button>
</view> </view>
</template> </template>
<script setup> <script setup>
import go from '@/commons/utils/go.js'; import go from '@/commons/utils/go.js';
import infoBox from '@/commons/utils/infoBox.js'; import infoBox from '@/commons/utils/infoBox.js';
import {formatPrice} from '@/commons/utils/format.js'; import {
formatPrice
} from '@/commons/utils/format.js';
import { import {
computed, computed,
reactive,
ref ref
} from 'vue'; } from 'vue';
const props = defineProps({ const props = defineProps({
@ -78,10 +87,11 @@
return [] return []
} }
}, },
isCreateOrderToDetail:{ isCreateOrderToDetail: {
type:Boolean,default:false type: Boolean,
default: false
}, },
user:{ user: {
type: Object, type: Object,
default: () => { default: () => {
return { return {
@ -89,20 +99,41 @@
} }
} }
}, },
table:{ table: {
type: Object, type: Object,
default: () => { default: () => {
return { return {
tableId:'' tableId: ''
} }
} }
}, },
masterId:{ masterId: {
type: [String,Number], type: [String, Number],
default:'' default: ''
} }
}) })
const modal = reactive({
key: '',
clear:false
})
function confirmModelConfirm() {
if (modal.key == 'clear') {
clear()
}
}
function setModalShow(key = 'show', show = true) {
if (key == 'clear'&&show&&props.data.length<=0) {
return infoBox.showToast('购物车是空的!')
}
modal.key = key
modal[key] = show
console.log(modal);
}
const edmits = defineEmits(['clear', 'updateNumber']) const edmits = defineEmits(['clear', 'updateNumber'])
// mask // mask
@ -122,20 +153,31 @@
function toConfimOrder() { function toConfimOrder() {
console.log(props.user); console.log(props.user);
if(props.data.length<=0){ if (props.data.length <= 0) {
return infoBox.showToast('还没有选择商品') return infoBox.showToast('还没有选择商品')
} }
const {tableId,name,maxCapacity,status,type}=props.table const {
go.to('PAGES_CONFIRM_ORDER',{ tableId,
masterId:props.masterId,type, name,
tableId,name,maxCapacity,status,isCreateOrderToDetail:props.isCreateOrderToDetail?1:0 maxCapacity,
status,
type
} = props.table
go.to('PAGES_CONFIRM_ORDER', {
masterId: props.masterId,
type,
tableId,
name,
maxCapacity,
status,
isCreateOrderToDetail: props.isCreateOrderToDetail ? 1 : 0
}) })
} }
const allPrice = computed(() => { const allPrice = computed(() => {
return props.data.reduce((prve,cur)=>{ return props.data.reduce((prve, cur) => {
return prve+cur.salePrice*cur.number return prve + cur.salePrice * cur.number
},0).toFixed(2) }, 0).toFixed(2)
}) })
const goodsNumber = computed(() => { const goodsNumber = computed(() => {
@ -158,16 +200,9 @@
} }
function clear() { function clear() {
uni.showModal({ setModalShow('clear',false)
title: '提示', edmits('clear')
content: '是否清空全部已添加的商品?', hideGoods()
success(res) {
if (res.confirm) {
edmits('clear')
hideGoods()
}
}
})
} }
import myButton from '@/components/my-components/my-button.vue' import myButton from '@/components/my-components/my-button.vue'
@ -249,6 +284,7 @@
justify-content: center; justify-content: center;
align-items: center; align-items: center;
z-index: 2; z-index: 2;
.dot { .dot {
position: absolute; position: absolute;
right: 0; right: 0;

View File

@ -1,9 +1,11 @@
<template> <template>
<view class="u-relative u-flex item"> <view class="u-relative u-flex item">
<image lazy-load class="img" :src="data.coverImg" mode="" :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" @tap="emitEvent('add')">
<view> <view>
<view>{{data.name}}</view> <view>
<text class="u-line-2">{{data.name}}</text>
</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}}
</view> </view>