cashier-web/src/views/tool/table/components/table-diancan-oldList-back.vue

3840 lines
126 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!-- eslint-disable no-empty -->
<template>
<div class="">
<el-dialog
:title="title"
fullscreen
:visible.sync="informationdialogshow"
@close="onclose"
>
<div slot="title" class="flex row-between flex-y-center">
<div class="flex" style="width: 500px">
<div class="el-dialog__title" style="margin-right: 10px">
{{ title }}
</div>
<el-dropdown @command="changePostPay">
<el-button plain type="success" size="mini">
{{ postPay ? "后付费" : "先付费" }}
<i class="el-icon-caret-bottom"></i>
</el-button>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item :command="false">先付费</el-dropdown-item>
<el-dropdown-item :command="true">后付费</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
<span
@click="toggleFullScreen"
class="flex flex-xy-center cur-pointer full-screen"
>
<svg
v-if="!isFullScreen"
t="1724396447139"
class="icon"
viewBox="0 0 1024 1024"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
p-id="8943"
width="128"
height="128"
>
<path
d="M358.4 768H426.666667v85.333333H213.333333v-213.333333h85.333334v68.266667l128-128 59.733333 59.733333-128 128z m345.6 0l-128-128 59.733333-59.733333 132.266667 132.266666V640h85.333333v213.333333h-213.333333v-85.333333h64zM358.4 298.666667l128 128-59.733333 59.733333-128-128V426.666667H213.333333V213.333333h213.333334v85.333334H358.4z m345.6 0H640V213.333333h213.333333v213.333334h-85.333333V354.133333l-132.266667 132.266667-59.733333-59.733333 128-128z"
fill="#666666"
p-id="8944"
></path>
</svg>
<svg
v-else
t="1724396479520"
class="icon"
viewBox="0 0 1024 1024"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
p-id="9141"
width="128"
height="128"
>
<path
d="M298.666667 631.466667H226.133333v-81.066667h217.6v204.8h-85.333333v-68.266667l-128 128L170.666667 759.466667l128-128z m422.4 0l128 128-59.733334 59.733333-128-128v68.266667h-85.333333V554.666667h217.6v81.066666h-72.533333zM298.666667 341.333333L187.733333 230.4 243.2 170.666667l115.2 115.2V217.6h85.333333v204.8H226.133333V341.333333H298.666667z m430.933333 0h64v81.066667h-217.6V217.6h85.333333v72.533333L780.8 170.666667l59.733333 59.733333L729.6 341.333333z"
fill="#666666"
p-id="9142"
></path>
</svg>
</span>
</div>
<div class="flex flex-1" style="padding-right: 50px">
<div class="flex-1">
<el-input
v-model="goods.query.productId"
size="small"
clearable
placeholder="请输入商品名称"
style="width: 100%"
class="filter-item"
suffix-icon="el-icon-search"
/>
</div>
<div
style="display: flex; justify-content: flex-end; margin-left: 10px"
>
<div style="width: 100px; margin-left: 20px">
<el-select v-model="layout.sel" placeholder="请选择">
<el-option
v-for="item in layout.list"
:key="item.value"
:label="item.label"
:value="item.value"
:disabled="item.disabled"
>
</el-option>
</el-select>
</div>
</div>
</div>
</div>
<div class="head-container search-box flex row-between" v-if="false">
<div>
<el-dropdown @command="changePostPay">
<el-button plain type="success" size="mini">
{{ postPay ? "后付费" : "先付费" }}
<i class="el-icon-caret-bottom"></i>
</el-button>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item :command="false">先付费</el-dropdown-item>
<el-dropdown-item :command="true">后付费</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</div>
<div class="flex">
<div style="width: 300px">
<el-input
v-model="goods.query.productId"
size="small"
clearable
placeholder="请输入商品名称"
style="width: 100%"
class="filter-item"
suffix-icon="el-icon-search"
/>
<!-- @keyup.enter.native="getGoods" -->
</div>
<div
style="display: flex; justify-content: flex-end; margin-left: 10px"
>
<!-- <el-button style="margin-right: 10px" type="primary" @click="getGoods"
>查询</el-button
>
<el-button @click="reset">重置</el-button> -->
<div style="width: 100px; margin-left: 20px">
<el-select v-model="layout.sel" placeholder="请选择">
<el-option
v-for="item in layout.list"
:key="item.value"
:label="item.label"
:value="item.value"
:disabled="item.disabled"
>
</el-option>
</el-select>
</div>
</div>
</div>
</div>
<div class="diancan">
<div class="order">
<div class="relative">
<div style="padding-right: 14px">
<div class="choose-user flex">
<el-button
type="success"
v-if="vipUser.id === ''"
@click="refChooseUserOpen"
>选择用户</el-button
>
<template v-else>
<div class="flex cur-pointer" @click="refChooseUserOpen">
<img
v-if="vipUser.headImg"
class="headimg"
:src="vipUser.headImg"
alt=""
/>
<div v-else class="headimg flex flex-x-y-center">
<i class="el-icon-user"></i>
</div>
<div>
<div class="ft-13 color-000">{{ vipUser.nickName }}</div>
<div style="margin-top: 2px" class="color-666 ft-12">
余额:{{ vipUser.amount }}
</div>
</div>
</div>
</template>
</div>
<div class="flex row-between">
<!-- <div class="tableId" @click="chooseTableOpen"> -->
<div class="tableId">
{{ table ? "桌台号:" + table.name : "桌台号/取餐号" }}
</div>
<el-button
@click="clearCart"
type="text"
size="mini"
:disabled="order.list.length <= 0"
>清空</el-button
>
<!-- <div
class="clear cur-pointer color-000 flex"
@click="clearCart"
>
清空
</div> -->
</div>
</div>
<div class="absolute bottom">
<div class="flex row-right youhui" v-if="giftLen">
<span> 已优惠¥{{ allGiftMoney | to2 }} </span>
<i class="el-icon-arrow-right"></i>
</div>
<div class="flex row-between">
<el-checkbox
v-model="order.allPack"
:disabled="!this.order.list.length"
>打包</el-checkbox
>
<div class="flex">
<span class="color-666" style="margin-right: 5px"
>共{{ allNumber }}件</span
>
<span class="color-000 ft-18">¥{{ allPrice }} </span>
</div>
</div>
<div class="flex mt-14">
<template v-if="isCreateOrder">
<button
class="my-btn flex-1 default"
@click="createOrderClose"
>
<span>加菜/返回</span>
</button>
<div style="width: 15px"></div>
<button class="my-btn flex-1 success" @click="payOrder">
<span>立即支付</span>
</button>
</template>
<template v-else>
<!-- <el-dropdown
split-button
size="medium"
type="success"
@command="changeIsPrint"
>
{{ isPrint ? "下单并打印制作单" : "仅下单(不打印)" }}
<el-dropdown-menu slot="dropdown">
<el-dropdown-item :command="false"
>仅下单(不打印)</el-dropdown-item
>
<el-dropdown-item :command="true"
>下单并打印制作单</el-dropdown-item
>
</el-dropdown-menu>
</el-dropdown> -->
<template v-if="postPay">
<div class="flex-1">
<el-button
type="success"
size="medium"
:disabled="!order.list.length"
@click="toCreateOrder(false)"
>
仅下单
</el-button>
</div>
<div style="width: 15px"></div>
</template>
<div class="flex-1">
<el-button
size="medium"
:disabled="!order.list.length && !order.old.list.length"
@click="toCreateOrder(true)"
>
去结账
</el-button>
</div>
</template>
</div>
</div>
<div class="list">
<!-- 当前购物车列表 -->
<template v-if="order.list.length">
<cart-item
@itemClick="changeOrderSel"
@changeOrderNumber="changeOrderNumber"
@cartGoodsNumberInput="cartGoodsNumberInput"
@cartGoodsNumberChange="cartGoodsNumberChange"
v-for="(item, index) in order.list"
:key="index"
:index="index"
:item="item"
:selIndex="order.selIndex"
></cart-item>
</template>
<div v-if="order.gift.list.length">
<div class="carts_list_title">以下是优惠菜品</div>
</div>
<div v-if="!order.list.length">
<el-empty
:image-size="50"
description="点餐列表为空"
></el-empty>
</div>
</div>
<!-- 已下单菜品列表 -->
<template v-if="order.old.list.length">
<div class="carts_list_title">已下单菜品</div>
<div class="list">
<cart-item
@itemClick="changeOrderOldSel"
:canChangeNumber="false"
v-for="(item, index) in order.old.list"
:key="index"
:index="index"
:item="item"
:selIndex="order.old.selIndex"
></cart-item>
</div>
</template>
<div class="order_remark" v-if="note.content">
订单备注: {{ note.content }}
</div>
</div>
<div class="controls">
<div
class="numberbox"
:class="{ 'cur-pointer': order.old.selIndex < 0 }"
>
<div class="reduce" @click="changeOrderGoodsNumber('-')">-</div>
<div class="input relative">
<div
class="disabled-box"
v-if="order.selIndex >= 0"
@click="changeKeyboradShow(true)"
></div>
<!-- <input type="number" :disabled="order.selIndex<0" v-model="order.number" /> -->
<input
type="number"
disabled
v-model="order.number"
style="display: none"
/>
<input type="number" disabled v-model="order.cacheNumber" />
</div>
<div class="add" @click="changeOrderGoodsNumber()">+</div>
</div>
<!-- <div class="btn" v-for="(item, index) in order.btns" :key="index" :class="{ disabled: item.disabled }" @click="orderBtnsClick(index,item)">
{{ item.text }}
</div> -->
<div
class="btn"
:class="{ disabled: !isSku }"
@click="orderBtnsClick('sku')"
>
规格
</div>
<div
class="btn"
:class="{ disabled: order.selIndex < 0 }"
@click="orderBtnsClick('gift')"
>
{{ returnGiftText }}
</div>
<div
class="btn"
:class="{ disabled: order.selIndex < 0 }"
@click="orderBtnsClick('pack')"
>
{{ returnPackText }}
</div>
<div
class="btn"
:class="{ disabled: order.selIndex < 0 }"
@click="orderBtnsClick('del')"
>
删除
</div>
<div
class="btn"
:class="{ disabled: !order.list.length ||key}"
@click="saveOrder"
>
存单
</div>
<div
class="btn relative"
:class="{ disabled: !prveOrder.list.length ||key}"
@click="cacheOrderShow"
>
取单
<span class="prve-car-len" v-if="prveOrder.list.length">{{
prveOrder.list.length
}}</span>
</div>
<!-- <div
class="btn"
:class="{ disabled: !order.list.length }"
@click="orderBtnsClick('save')"
>
存单
</div>
<div
class="btn relative"
:class="{ disabled: !prveOrder.list.length }"
@click="orderBtnsClick('getOrder')"
>
取单
<span class="prve-car-len" v-if="prveOrder.list.length">{{
prveOrder.list.length
}}</span>
</div> -->
<div class="btn" @click="refNoteShow">整单备注</div>
</div>
</div>
<div class="goods">
<template v-if="!isCreateOrder">
<div class="flex categoty">
<div
class="show_more_btn"
:class="{ showAll: category.showAll }"
@click="toggleShowAll"
>
<div class="flex">
<div class="flex">
<i class="el-icon-arrow-down"></i>
</div>
<span>展开</span>
</div>
</div>
<div
class="flex categorys"
:class="{ 'flex-wrap': category.showAll }"
>
<div
v-for="(item, index) in category.list"
:key="index"
@click="changeCategoryId(item)"
>
<el-tag
size="medium"
type="success"
effect="dark"
v-if="goods.query.categoryId === item.id"
>{{ item.name }}</el-tag
>
<el-tag size="medium" type="success" v-else effect="plain">{{
item.name
}}</el-tag>
</div>
</div>
</div>
<div
class="no-search-result"
v-if="search.list.length <= 0 && goods.query.productId !== ''"
>
未找到相关商品
</div>
<div class="goods-list" v-if="goods.list.length">
<div
class="goods-item"
:class="{
'sell-out':
item.isPauseSale ||
(item.typeEnum !== 'sku' && item.stockNumber <= 0),
'layout-img-and-text': layout.sel === 'img-and-text',
'layout-text': layout.sel === 'text',
none:
(goods.query.categoryId !== '') &
(goods.query.categoryId != item.categoryId),
}"
@click="goodsClick(item)"
v-for="(item, index) in goods.list"
:key="index"
>
<!-- <div class="sell-out flex flex-xy-cnter">
<svg t="1724210152457" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="6417" width="64" height="64"><path d="M498.61856 0h25.483584c136.270651 3.58203 270.187397 63.197242 362.296737 163.954625 84.894108 90.267153 133.046824 212.209685 137.038229 335.687372v22.873819c-3.684374 123.83589-51.785918 246.341312-136.884714 336.915497-91.955824 100.450352-225.258508 159.96322-361.119784 164.005797h-25.739443c-140.722603-3.684374-278.681925-67.342162-371.047124-173.72845C46.87342 758.366898 2.76328 636.936085 0 514.942382v-10.74609C3.837889 381.435011 49.534356 259.697167 132.944481 168.867123 225.05382 65.499975 360.556894 4.042577 498.61856 0M435.574834 52.195293c-183.860477 28.042177-340.702214 177.463995-378.160012 359.584628-31.828894 141.49018 7.317575 296.643246 103.264804 405.536955a465.152166 465.152166 0 0 0 689.489581 14.328119c89.857778-93.951527 136.52651-226.896007 125.678077-356.463145-9.415621-133.149168-80.339813-259.953026-188.056569-338.757683-99.580431-74.19919-229.761631-105.004647-352.215881-84.280046z" fill="#ffffff" p-id="6418"></path><path d="M423.088901 64.732397c118.974564-23.794913 247.006546 1.995702 346.535805 71.43591 104.390585 71.231223 176.798761 187.647194 193.224927 313.069412a455.941232 455.941232 0 0 1-79.623407 326.169407c-71.384738 101.422618-185.958523 171.52806-309.078008 187.596022a454.661936 454.661936 0 0 1-325.964719-79.98161c-101.115586-71.43591-170.913997-185.805007-187.033132-308.61746a455.787717 455.787717 0 0 1 361.938534-509.671681m20.67343 12.12773c-162.112438 23.590225-304.063165 146.402679-351.448304 303.142072-41.449203 130.1812-17.705462 279.142472 63.197242 389.41782 75.376143 105.516366 199.365549 174.496027 329.035031 181.4554 126.394483 8.801559 255.194043-41.091 342.902603-132.535106a439.719754 439.719754 0 0 0 123.733547-324.736595c-4.247264-130.744091-71.384738-257.240917-176.440558-334.766279-93.337464-70.514817-215.535855-100.39918-330.979561-81.977312z" fill="#ffffff" p-id="6419"></path><path d="M630.488431 283.594423c31.214832-15.351557 62.583179-30.498426 93.183949-47.078107 9.876168 14.788666 18.575384 37.048423 39.504673 21.850382l9.978511 19.649993c-17.961321 7.16406-35.462096 21.287492-55.777322 18.166009a306.110039 306.110039 0 0 1-18.933587-20.008196l-20.212882 10.49023c7.266403 28.809755-15.70976 47.845685-37.867174 60.587477a33.875768 33.875768 0 0 1 1.535156-34.541002c-3.889061-9.722653-7.675778-19.445305-11.411324-29.116786z m-66.421068 37.611314l56.442557-27.888661 10.439058 20.98046c-20.980461 11.155464-46.05467 18.063665-60.382789 38.430064 20.67343 1.023437 38.174204-10.592574 56.084353-19.189446l11.667183 18.575384c-44.519514 21.338664-87.657388 45.747639-133.149168 64.732397l-10.132027-18.268353c14.07226-12.792964 55.777322-12.639448 45.338264-39.095297-20.980461 10.234371-42.012093 20.622258-63.14607 30.754285l-9.722652-20.980461c19.957024-9.876168 39.914047-19.85468 59.922242-29.679676a969.757833 969.757833 0 0 0-5.935935-14.32812c11.667183-5.628904 23.283194-11.411324 34.950377-17.040227l7.624607 12.997651z m85.252311 30.191395c42.216781-20.826945 84.12653-42.012093 126.496827-62.58318 12.844136 25.688271 2.967968 53.474589-7.16406 78.088252 19.138274-1.791015 45.23592-19.85468 55.41912 5.628904-23.9996 9.978512-49.483184 14.942182-74.250363 22.413273-21.492179 15.249213-40.937484 33.261706-63.862475 46.668732-16.221478-23.897257 16.426166-33.875768 29.52616-48.050373-15.812103-5.577732-31.573035-11.30898-47.282794-17.244915 12.946479-6.549998 25.841787-13.099995 38.89061-19.547649 10.592574 3.121483 21.185148 6.294138 31.828894 9.159763 2.712108-12.792964 5.475389-25.483584 8.392184-38.225377-29.577332 14.225776-58.898806 29.065614-88.373794 43.444906-2.405077-4.96367-7.16406-14.839838-9.620309-19.752336z m-139.033931 76.757783c44.007796-22.003898 88.169107-43.751936 132.228074-65.755834 7.675778 22.669132 35.820299 49.841387 17.500775 72.664034-27.376943 18.217181-58.540603 29.679676-87.248014 45.594124a123.631203 123.631203 0 0 1-27.376942 50.557793 249.360452 249.360452 0 0 0-35.103893-103.060117m92.211683-20.315227c4.093748 9.057418 8.238669 18.063665 12.281246 27.121084l20.724601-12.12773-9.876168-24.869522-23.129679 9.876168m-51.837089 26.404678l10.746089 24.408975 24.460147-8.443356c-4.503123-8.852731-8.903903-17.858978-13.304682-26.814053l-21.901554 10.848434z" fill="#ffffff" p-id="6420"></path><path d="M638.010694 474.107241c53.883964-26.76288 107.767928-53.525761 161.703063-80.186298l11.56484 23.43671c-30.856629 15.351557-61.662086 30.703113-92.518715 45.901155l9.057418 18.677727c40.476938-19.957024 80.80036-40.323422 121.379642-60.075758 2.76328 5.833592 8.494528 17.603118 11.411323 23.436709-40.221078 20.008195-80.442157 40.016391-120.765578 59.871071l10.336714 24.511319c18.319524-11.30898 57.824197-14.174604 49.6367-43.29139 13.407026-6.805857 26.916396-13.458198 40.476938-20.008195 5.577732 15.249213 16.784369 36.997252-2.149218 48.050372-69.082005 39.402329-142.411274 71.333567-213.130778 107.870271l-19.547649-39.402328c12.895308-6.652341 25.841787-13.202339 38.737095-19.803508 2.916796 3.633202 8.648044 11.001949 11.411323 14.686322 17.0914-8.443356 34.131628-16.886712 51.2742-25.227725l-10.694918-24.408975c-41.551547 18.063665-81.414422 39.760532-122.300735 59.410525a2827.0915 2827.0915 0 0 1-11.616011-23.334366c40.27225-20.366398 81.056219-39.862875 121.174954-60.689821l-9.313278-17.910149c-40.52811 14.839838-72.305832 43.700765-106.028084 69.286692-1.791015-4.503123-5.475389-13.458198-7.266404-18.063665 13.969917-15.146869 27.376943-31.16366 30.191395-52.502324 10.74609-5.935935 21.594523-11.769527 32.442956-17.705462l14.532807 7.471091z m-311.124881-22.720304l87.452701-43.496077 12.895307 25.995303c-29.372645 14.635151-58.796462 29.065614-88.169107 43.905452l9.722653 16.784368a12302.737494 12302.737494 0 0 1 77.115986-38.430063l12.997651 25.841787c-26.302334 12.946479-52.604667 25.944131-78.446454 39.760531 2.405077 4.093748 7.266403 12.12773 9.722653 16.119135 25.6371-12.946479 51.478887-25.688271 77.269501-38.430064 4.196092 8.699215 8.443356 17.398431 12.741792 25.995303a20601.789016 20601.789016 0 0 0-77.78122 38.634751l8.852731 17.296087c30.34491-15.351557 60.740992-30.34491 91.188246-45.389436l13.458198 27.172256c-83.103093 41.398031-166.30853 82.386687-249.360451 123.887062-15.198041-29.884364-29.986707-59.973415-44.826546-90.113638l-25.125381 24.25546-12.792964-26.507021c18.370696-29.423817 24.255459-64.169507 19.803508-98.403479 14.532807-7.266403 29.167958-14.430463 43.803109-21.696866l4.503123 23.948428 46.412873-23.027335-8.903903-18.728899c15.965619-7.982809 31.931238-15.863275 47.948029-23.794913 2.302733 4.605467 7.061716 13.765229 9.517965 18.421868m-99.478087 84.228874l8.801559 14.839838c21.696867-11.001949 43.496077-21.696867 65.141772-32.749987l-8.852731-12.281245c-23.794913 1.023437-44.365999 19.138274-65.0906 30.191394m19.189446 42.370297l13.407026 13.355854c21.338664-8.085153 41.295687-19.547649 61.662086-29.884364-2.353905-4.093748-6.9082-12.485933-9.210934-16.682025-22.003898 10.950777-44.110139 21.79921-65.858178 33.210535m23.334366 41.909749l8.648043 17.142572c21.185148-10.49023 42.370296-20.929289 63.657788-31.317176l-7.675778-17.910149c-21.492179 10.643746-43.137874 21.338664-64.630053 32.084753z m-16.221479 82.079656c78.548798-39.248813 157.302284-78.03708 235.902254-117.285892 11.87187 29.014442 48.306232 70.924192 13.765229 97.226525-67.035131 38.788266-138.624556 69.696067-207.501874 105.311679l-42.165609-85.252312m59.973415 3.479687c4.912498 11.564839 10.132027 23.027335 15.351557 34.48983 47.078107-25.074209 97.482385-44.212483 141.950727-73.994503-5.117186-10.183199-9.92734-20.468742-14.583979-30.805457-47.640997 23.43671-94.770276 47.692169-142.769477 70.31013z" fill="#ffffff" p-id="6421"></path></svg>
</div> -->
<div class="flex img-box" v-if="layout.sel !== 'text'">
<img class="goods-img" :src="item.coverImg" alt="" />
<template v-if="layout.sel === 'img-and-text'">
<div class="sell-out-svg" v-if="isSellOut(item)">
<svg
t="1724234807994"
class="icon"
viewBox="0 0 1024 1024"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
p-id="4356"
width="64"
height="64"
>
<path
d="M498.61856 0h25.483584c136.270651 3.58203 270.187397 63.197242 362.296737 163.954625 84.894108 90.267153 133.046824 212.209685 137.038229 335.687372v22.873819c-3.684374 123.83589-51.785918 246.341312-136.884714 336.915497-91.955824 100.450352-225.258508 159.96322-361.119784 164.005797h-25.739443c-140.722603-3.684374-278.681925-67.342162-371.047124-173.72845C46.87342 758.366898 2.76328 636.936085 0 514.942382v-10.74609C3.837889 381.435011 49.534356 259.697167 132.944481 168.867123 225.05382 65.499975 360.556894 4.042577 498.61856 0M435.574834 52.195293c-183.860477 28.042177-340.702214 177.463995-378.160012 359.584628-31.828894 141.49018 7.317575 296.643246 103.264804 405.536955a465.152166 465.152166 0 0 0 689.489581 14.328119c89.857778-93.951527 136.52651-226.896007 125.678077-356.463145-9.415621-133.149168-80.339813-259.953026-188.056569-338.757683-99.580431-74.19919-229.761631-105.004647-352.215881-84.280046z"
fill="#ffffff"
p-id="4357"
></path>
<path
d="M423.088901 64.732397c118.974564-23.794913 247.006546 1.995702 346.535805 71.43591 104.390585 71.231223 176.798761 187.647194 193.224927 313.069412a455.941232 455.941232 0 0 1-79.623407 326.169407c-71.384738 101.422618-185.958523 171.52806-309.078008 187.596022a454.661936 454.661936 0 0 1-325.964719-79.98161c-101.115586-71.43591-170.913997-185.805007-187.033132-308.61746a455.787717 455.787717 0 0 1 361.938534-509.671681m20.67343 12.12773c-162.112438 23.590225-304.063165 146.402679-351.448304 303.142072-41.449203 130.1812-17.705462 279.142472 63.197242 389.41782 75.376143 105.516366 199.365549 174.496027 329.035031 181.4554 126.394483 8.801559 255.194043-41.091 342.902603-132.535106a439.719754 439.719754 0 0 0 123.733547-324.736595c-4.247264-130.744091-71.384738-257.240917-176.440558-334.766279-93.337464-70.514817-215.535855-100.39918-330.979561-81.977312z"
fill="#ffffff"
p-id="4358"
></path>
<path
d="M630.488431 283.594423c31.214832-15.351557 62.583179-30.498426 93.183949-47.078107 9.876168 14.788666 18.575384 37.048423 39.504673 21.850382l9.978511 19.649993c-17.961321 7.16406-35.462096 21.287492-55.777322 18.166009a306.110039 306.110039 0 0 1-18.933587-20.008196l-20.212882 10.49023c7.266403 28.809755-15.70976 47.845685-37.867174 60.587477a33.875768 33.875768 0 0 1 1.535156-34.541002c-3.889061-9.722653-7.675778-19.445305-11.411324-29.116786z m-66.421068 37.611314l56.442557-27.888661 10.439058 20.98046c-20.980461 11.155464-46.05467 18.063665-60.382789 38.430064 20.67343 1.023437 38.174204-10.592574 56.084353-19.189446l11.667183 18.575384c-44.519514 21.338664-87.657388 45.747639-133.149168 64.732397l-10.132027-18.268353c14.07226-12.792964 55.777322-12.639448 45.338264-39.095297-20.980461 10.234371-42.012093 20.622258-63.14607 30.754285l-9.722652-20.980461c19.957024-9.876168 39.914047-19.85468 59.922242-29.679676a969.757833 969.757833 0 0 0-5.935935-14.32812c11.667183-5.628904 23.283194-11.411324 34.950377-17.040227l7.624607 12.997651z m85.252311 30.191395c42.216781-20.826945 84.12653-42.012093 126.496827-62.58318 12.844136 25.688271 2.967968 53.474589-7.16406 78.088252 19.138274-1.791015 45.23592-19.85468 55.41912 5.628904-23.9996 9.978512-49.483184 14.942182-74.250363 22.413273-21.492179 15.249213-40.937484 33.261706-63.862475 46.668732-16.221478-23.897257 16.426166-33.875768 29.52616-48.050373-15.812103-5.577732-31.573035-11.30898-47.282794-17.244915 12.946479-6.549998 25.841787-13.099995 38.89061-19.547649 10.592574 3.121483 21.185148 6.294138 31.828894 9.159763 2.712108-12.792964 5.475389-25.483584 8.392184-38.225377-29.577332 14.225776-58.898806 29.065614-88.373794 43.444906-2.405077-4.96367-7.16406-14.839838-9.620309-19.752336z m-139.033931 76.757783c44.007796-22.003898 88.169107-43.751936 132.228074-65.755834 7.675778 22.669132 35.820299 49.841387 17.500775 72.664034-27.376943 18.217181-58.540603 29.679676-87.248014 45.594124a123.631203 123.631203 0 0 1-27.376942 50.557793 249.360452 249.360452 0 0 0-35.103893-103.060117m92.211683-20.315227c4.093748 9.057418 8.238669 18.063665 12.281246 27.121084l20.724601-12.12773-9.876168-24.869522-23.129679 9.876168m-51.837089 26.404678l10.746089 24.408975 24.460147-8.443356c-4.503123-8.852731-8.903903-17.858978-13.304682-26.814053l-21.901554 10.848434z"
fill="#ffffff"
p-id="4359"
></path>
<path
d="M638.010694 474.107241c53.883964-26.76288 107.767928-53.525761 161.703063-80.186298l11.56484 23.43671c-30.856629 15.351557-61.662086 30.703113-92.518715 45.901155l9.057418 18.677727c40.476938-19.957024 80.80036-40.323422 121.379642-60.075758 2.76328 5.833592 8.494528 17.603118 11.411323 23.436709-40.221078 20.008195-80.442157 40.016391-120.765578 59.871071l10.336714 24.511319c18.319524-11.30898 57.824197-14.174604 49.6367-43.29139 13.407026-6.805857 26.916396-13.458198 40.476938-20.008195 5.577732 15.249213 16.784369 36.997252-2.149218 48.050372-69.082005 39.402329-142.411274 71.333567-213.130778 107.870271l-19.547649-39.402328c12.895308-6.652341 25.841787-13.202339 38.737095-19.803508 2.916796 3.633202 8.648044 11.001949 11.411323 14.686322 17.0914-8.443356 34.131628-16.886712 51.2742-25.227725l-10.694918-24.408975c-41.551547 18.063665-81.414422 39.760532-122.300735 59.410525a2827.0915 2827.0915 0 0 1-11.616011-23.334366c40.27225-20.366398 81.056219-39.862875 121.174954-60.689821l-9.313278-17.910149c-40.52811 14.839838-72.305832 43.700765-106.028084 69.286692-1.791015-4.503123-5.475389-13.458198-7.266404-18.063665 13.969917-15.146869 27.376943-31.16366 30.191395-52.502324 10.74609-5.935935 21.594523-11.769527 32.442956-17.705462l14.532807 7.471091z m-311.124881-22.720304l87.452701-43.496077 12.895307 25.995303c-29.372645 14.635151-58.796462 29.065614-88.169107 43.905452l9.722653 16.784368a12302.737494 12302.737494 0 0 1 77.115986-38.430063l12.997651 25.841787c-26.302334 12.946479-52.604667 25.944131-78.446454 39.760531 2.405077 4.093748 7.266403 12.12773 9.722653 16.119135 25.6371-12.946479 51.478887-25.688271 77.269501-38.430064 4.196092 8.699215 8.443356 17.398431 12.741792 25.995303a20601.789016 20601.789016 0 0 0-77.78122 38.634751l8.852731 17.296087c30.34491-15.351557 60.740992-30.34491 91.188246-45.389436l13.458198 27.172256c-83.103093 41.398031-166.30853 82.386687-249.360451 123.887062-15.198041-29.884364-29.986707-59.973415-44.826546-90.113638l-25.125381 24.25546-12.792964-26.507021c18.370696-29.423817 24.255459-64.169507 19.803508-98.403479 14.532807-7.266403 29.167958-14.430463 43.803109-21.696866l4.503123 23.948428 46.412873-23.027335-8.903903-18.728899c15.965619-7.982809 31.931238-15.863275 47.948029-23.794913 2.302733 4.605467 7.061716 13.765229 9.517965 18.421868m-99.478087 84.228874l8.801559 14.839838c21.696867-11.001949 43.496077-21.696867 65.141772-32.749987l-8.852731-12.281245c-23.794913 1.023437-44.365999 19.138274-65.0906 30.191394m19.189446 42.370297l13.407026 13.355854c21.338664-8.085153 41.295687-19.547649 61.662086-29.884364-2.353905-4.093748-6.9082-12.485933-9.210934-16.682025-22.003898 10.950777-44.110139 21.79921-65.858178 33.210535m23.334366 41.909749l8.648043 17.142572c21.185148-10.49023 42.370296-20.929289 63.657788-31.317176l-7.675778-17.910149c-21.492179 10.643746-43.137874 21.338664-64.630053 32.084753z m-16.221479 82.079656c78.548798-39.248813 157.302284-78.03708 235.902254-117.285892 11.87187 29.014442 48.306232 70.924192 13.765229 97.226525-67.035131 38.788266-138.624556 69.696067-207.501874 105.311679l-42.165609-85.252312m59.973415 3.479687c4.912498 11.564839 10.132027 23.027335 15.351557 34.48983 47.078107-25.074209 97.482385-44.212483 141.950727-73.994503-5.117186-10.183199-9.92734-20.468742-14.583979-30.805457-47.640997 23.43671-94.770276 47.692169-142.769477 70.31013z"
fill="#ffffff"
p-id="4360"
></path>
</svg>
</div>
</template>
</div>
<div class="typeEnum">
<span>{{ item | returntypeName }}</span>
</div>
<div class="info">
<div class="name">{{ item.name }}</div>
<div>
<template v-if="layout.sel === 'text'">
<div class="text-sell-out flex">
<svg
v-if="isSellOut(item)"
t="1724236049267"
class="icon"
viewBox="0 0 1024 1024"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
p-id="4911"
width="64"
height="64"
>
<path
d="M498.61856 0h25.483584c136.270651 3.58203 270.187397 63.197242 362.296737 163.954625 84.894108 90.267153 133.046824 212.209685 137.038229 335.687372v22.873819c-3.684374 123.83589-51.785918 246.341312-136.884714 336.915497-91.955824 100.450352-225.258508 159.96322-361.119784 164.005797h-25.739443c-140.722603-3.684374-278.681925-67.342162-371.047124-173.72845C46.87342 758.366898 2.76328 636.936085 0 514.942382v-10.74609C3.837889 381.435011 49.534356 259.697167 132.944481 168.867123 225.05382 65.499975 360.556894 4.042577 498.61856 0M435.574834 52.195293c-183.860477 28.042177-340.702214 177.463995-378.160012 359.584628-31.828894 141.49018 7.317575 296.643246 103.264804 405.536955a465.152166 465.152166 0 0 0 689.489581 14.328119c89.857778-93.951527 136.52651-226.896007 125.678077-356.463145-9.415621-133.149168-80.339813-259.953026-188.056569-338.757683-99.580431-74.19919-229.761631-105.004647-352.215881-84.280046z"
fill="#c8c8c8"
p-id="4912"
></path>
<path
d="M423.088901 64.732397c118.974564-23.794913 247.006546 1.995702 346.535805 71.43591 104.390585 71.231223 176.798761 187.647194 193.224927 313.069412a455.941232 455.941232 0 0 1-79.623407 326.169407c-71.384738 101.422618-185.958523 171.52806-309.078008 187.596022a454.661936 454.661936 0 0 1-325.964719-79.98161c-101.115586-71.43591-170.913997-185.805007-187.033132-308.61746a455.787717 455.787717 0 0 1 361.938534-509.671681m20.67343 12.12773c-162.112438 23.590225-304.063165 146.402679-351.448304 303.142072-41.449203 130.1812-17.705462 279.142472 63.197242 389.41782 75.376143 105.516366 199.365549 174.496027 329.035031 181.4554 126.394483 8.801559 255.194043-41.091 342.902603-132.535106a439.719754 439.719754 0 0 0 123.733547-324.736595c-4.247264-130.744091-71.384738-257.240917-176.440558-334.766279-93.337464-70.514817-215.535855-100.39918-330.979561-81.977312z"
fill="#c8c8c8"
p-id="4913"
></path>
<path
d="M630.488431 283.594423c31.214832-15.351557 62.583179-30.498426 93.183949-47.078107 9.876168 14.788666 18.575384 37.048423 39.504673 21.850382l9.978511 19.649993c-17.961321 7.16406-35.462096 21.287492-55.777322 18.166009a306.110039 306.110039 0 0 1-18.933587-20.008196l-20.212882 10.49023c7.266403 28.809755-15.70976 47.845685-37.867174 60.587477a33.875768 33.875768 0 0 1 1.535156-34.541002c-3.889061-9.722653-7.675778-19.445305-11.411324-29.116786z m-66.421068 37.611314l56.442557-27.888661 10.439058 20.98046c-20.980461 11.155464-46.05467 18.063665-60.382789 38.430064 20.67343 1.023437 38.174204-10.592574 56.084353-19.189446l11.667183 18.575384c-44.519514 21.338664-87.657388 45.747639-133.149168 64.732397l-10.132027-18.268353c14.07226-12.792964 55.777322-12.639448 45.338264-39.095297-20.980461 10.234371-42.012093 20.622258-63.14607 30.754285l-9.722652-20.980461c19.957024-9.876168 39.914047-19.85468 59.922242-29.679676a969.757833 969.757833 0 0 0-5.935935-14.32812c11.667183-5.628904 23.283194-11.411324 34.950377-17.040227l7.624607 12.997651z m85.252311 30.191395c42.216781-20.826945 84.12653-42.012093 126.496827-62.58318 12.844136 25.688271 2.967968 53.474589-7.16406 78.088252 19.138274-1.791015 45.23592-19.85468 55.41912 5.628904-23.9996 9.978512-49.483184 14.942182-74.250363 22.413273-21.492179 15.249213-40.937484 33.261706-63.862475 46.668732-16.221478-23.897257 16.426166-33.875768 29.52616-48.050373-15.812103-5.577732-31.573035-11.30898-47.282794-17.244915 12.946479-6.549998 25.841787-13.099995 38.89061-19.547649 10.592574 3.121483 21.185148 6.294138 31.828894 9.159763 2.712108-12.792964 5.475389-25.483584 8.392184-38.225377-29.577332 14.225776-58.898806 29.065614-88.373794 43.444906-2.405077-4.96367-7.16406-14.839838-9.620309-19.752336z m-139.033931 76.757783c44.007796-22.003898 88.169107-43.751936 132.228074-65.755834 7.675778 22.669132 35.820299 49.841387 17.500775 72.664034-27.376943 18.217181-58.540603 29.679676-87.248014 45.594124a123.631203 123.631203 0 0 1-27.376942 50.557793 249.360452 249.360452 0 0 0-35.103893-103.060117m92.211683-20.315227c4.093748 9.057418 8.238669 18.063665 12.281246 27.121084l20.724601-12.12773-9.876168-24.869522-23.129679 9.876168m-51.837089 26.404678l10.746089 24.408975 24.460147-8.443356c-4.503123-8.852731-8.903903-17.858978-13.304682-26.814053l-21.901554 10.848434z"
fill="#c8c8c8"
p-id="4914"
></path>
<path
d="M638.010694 474.107241c53.883964-26.76288 107.767928-53.525761 161.703063-80.186298l11.56484 23.43671c-30.856629 15.351557-61.662086 30.703113-92.518715 45.901155l9.057418 18.677727c40.476938-19.957024 80.80036-40.323422 121.379642-60.075758 2.76328 5.833592 8.494528 17.603118 11.411323 23.436709-40.221078 20.008195-80.442157 40.016391-120.765578 59.871071l10.336714 24.511319c18.319524-11.30898 57.824197-14.174604 49.6367-43.29139 13.407026-6.805857 26.916396-13.458198 40.476938-20.008195 5.577732 15.249213 16.784369 36.997252-2.149218 48.050372-69.082005 39.402329-142.411274 71.333567-213.130778 107.870271l-19.547649-39.402328c12.895308-6.652341 25.841787-13.202339 38.737095-19.803508 2.916796 3.633202 8.648044 11.001949 11.411323 14.686322 17.0914-8.443356 34.131628-16.886712 51.2742-25.227725l-10.694918-24.408975c-41.551547 18.063665-81.414422 39.760532-122.300735 59.410525a2827.0915 2827.0915 0 0 1-11.616011-23.334366c40.27225-20.366398 81.056219-39.862875 121.174954-60.689821l-9.313278-17.910149c-40.52811 14.839838-72.305832 43.700765-106.028084 69.286692-1.791015-4.503123-5.475389-13.458198-7.266404-18.063665 13.969917-15.146869 27.376943-31.16366 30.191395-52.502324 10.74609-5.935935 21.594523-11.769527 32.442956-17.705462l14.532807 7.471091z m-311.124881-22.720304l87.452701-43.496077 12.895307 25.995303c-29.372645 14.635151-58.796462 29.065614-88.169107 43.905452l9.722653 16.784368a12302.737494 12302.737494 0 0 1 77.115986-38.430063l12.997651 25.841787c-26.302334 12.946479-52.604667 25.944131-78.446454 39.760531 2.405077 4.093748 7.266403 12.12773 9.722653 16.119135 25.6371-12.946479 51.478887-25.688271 77.269501-38.430064 4.196092 8.699215 8.443356 17.398431 12.741792 25.995303a20601.789016 20601.789016 0 0 0-77.78122 38.634751l8.852731 17.296087c30.34491-15.351557 60.740992-30.34491 91.188246-45.389436l13.458198 27.172256c-83.103093 41.398031-166.30853 82.386687-249.360451 123.887062-15.198041-29.884364-29.986707-59.973415-44.826546-90.113638l-25.125381 24.25546-12.792964-26.507021c18.370696-29.423817 24.255459-64.169507 19.803508-98.403479 14.532807-7.266403 29.167958-14.430463 43.803109-21.696866l4.503123 23.948428 46.412873-23.027335-8.903903-18.728899c15.965619-7.982809 31.931238-15.863275 47.948029-23.794913 2.302733 4.605467 7.061716 13.765229 9.517965 18.421868m-99.478087 84.228874l8.801559 14.839838c21.696867-11.001949 43.496077-21.696867 65.141772-32.749987l-8.852731-12.281245c-23.794913 1.023437-44.365999 19.138274-65.0906 30.191394m19.189446 42.370297l13.407026 13.355854c21.338664-8.085153 41.295687-19.547649 61.662086-29.884364-2.353905-4.093748-6.9082-12.485933-9.210934-16.682025-22.003898 10.950777-44.110139 21.79921-65.858178 33.210535m23.334366 41.909749l8.648043 17.142572c21.185148-10.49023 42.370296-20.929289 63.657788-31.317176l-7.675778-17.910149c-21.492179 10.643746-43.137874 21.338664-64.630053 32.084753z m-16.221479 82.079656c78.548798-39.248813 157.302284-78.03708 235.902254-117.285892 11.87187 29.014442 48.306232 70.924192 13.765229 97.226525-67.035131 38.788266-138.624556 69.696067-207.501874 105.311679l-42.165609-85.252312m59.973415 3.479687c4.912498 11.564839 10.132027 23.027335 15.351557 34.48983 47.078107-25.074209 97.482385-44.212483 141.950727-73.994503-5.117186-10.183199-9.92734-20.468742-14.583979-30.805457-47.640997 23.43671-94.770276 47.692169-142.769477 70.31013z"
fill="#c8c8c8"
p-id="4915"
></path>
</svg>
</div>
</template>
<div class="stockNumber"></div>
<div class="">¥{{ item.lowPrice }}</div>
<template v-if="layout.sel === 'default'">
<div class="flex" v-if="isSellOut(item)">
<div class="timeSale">售罄</div>
</div>
</template>
</div>
</div>
</div>
</div>
</template>
<template v-else>
<div class="cashier_box goods_classify_list">
<div class="cashier_left">
<!-- <div class="title">选择优惠</div> -->
<div class="detail_box">
<div class="usercard">
<span
class="el-avatar el-avatar--square"
style="height: 50px; width: 50px; line-height: 50px"
><img v-if="vipUser.id" :src="vipUser.headImg"
/></span>
<div class="info">
<div class="nickname">
<span class="txt">{{
vipUser.id ? vipUser.nickName : "服务员下单"
}}</span>
</div>
<div class="other_info">
<div class="item">余额:{{ vipUser.amount | to2 }}</div>
<div class="item">积分:{{ vipUser.totalScore }}</div>
</div>
</div>
</div>
<!-- <div class="forms">
<el-form
ref="form"
:model="createOrder.form"
label-width="60px"
>
<el-form-item label="优惠券">
<el-select
style="margin-right: 10px"
v-model="createOrder.quan.sel"
placeholder="选择优惠券"
>
</el-select>
<el-button size="medium " type="text">
查看不可用券
</el-button>
</el-form-item>
</el-form>
</div> -->
</div>
<div class="btn_group">
<el-button size="medium" @click="disCountShow">
整单打折/减免
</el-button>
<!-- <el-button size="medium "> 免单 </el-button> -->
</div>
<pay-type ref="refPayType" v-model="order.payType"> </pay-type>
<div style="margin-top: 20px">
<el-button type="success" size="medium" @click="payOrder">
<span>立即支付</span>
</el-button>
</div>
<!-- <div class="flex row-right">
<el-button size="medium" type="success" @click="payOrder"
>确认支付</el-button
>
</div> -->
<!-- <div class="title">选择支付方式</div>
<div class="btn_group">
<div class="price_select">
<div class="pay_btns">
<el-button size="medium" type="success">
微信支付/支付宝
</el-button>
<el-button size="medium"> 余额支付 </el-button>
<el-button size="medium"> 现金支付 </el-button>
<el-button size="medium"> 挂账 </el-button>
</div>
</div>
</div> -->
</div>
<div class="cashier_left cashier_right">
<div class="title">账单明细</div>
<div class="detail_form">
<!---->
<div class="detail_form_item">
<div class="left">会员优惠</div>
<div class="right">-¥0.00</div>
</div>
<div class="detail_form_item">
<div class="left">门店优惠</div>
<div class="right">-¥0.00</div>
</div>
<div class="detail_form_item">
<div class="left">满减优惠</div>
<div class="right">-¥0.00</div>
</div>
<div class="detail_form_item">
<div class="left">优惠券</div>
<div class="right">-¥0.00</div>
</div>
<div class="detail_form_item">
<div class="left">整单改价</div>
<div class="right">
-¥{{
((1 - createOrder.discount) * createOrder.data.amount)
| to2
}}
</div>
</div>
<div class="detail_form_item" v-if="createOrder.data.packFee">
<div class="left">打包费</div>
<div class="right">
¥{{ createOrder.data.packFee || "0.00" }}
</div>
</div>
<div class="detail_form_item">
<div class="left">桌位费/附加费</div>
<div class="right">¥0.00</div>
</div>
<div class="detail_form_item">
<div class="left">总价</div>
<div class="right">
¥{{ createOrder.data.amount | to2 }}
</div>
</div>
<div class="detail_form_item">
<div class="left">抹零</div>
<div class="right">-¥0.00</div>
</div>
<div class="detail_form_item">
<div class="left">应付金额</div>
<div class="right redfont">
¥{{
(createOrder.data.amount * createOrder.discount) | to2
}}
</div>
</div>
<div class="line"></div>
</div>
</div>
</div>
</template>
</div>
</div>
<!-- <slot name="footer">
<div style="display: flex; justify-content: flex-end">
<el-button style="margin-right: 20px" @click="haocaiCancel">取消</el-button>
<el-button type="primary" @click="haocaiConfirm">确定</el-button>
</div>
</slot> -->
</el-dialog>
<!-- 选择规格 -->
<el-dialog
width="410px"
:title="selGoods.title"
:visible.sync="selGoods.show"
@close="onSelGoodsSkuClose"
>
<div class="tag-group">
<div
class="tag-item"
v-for="(item, index) in selGoods.skuList"
:key="index"
>
<div class="tag-name">
{{ item.name }}
<span v-if="item.values.length >= 2"
>({{ item.values.length }}选1)</span
>
</div>
<div>
<span
style="margin: 0 10px 10px 0"
v-for="(val, valIndex) in item.values"
:key="valIndex"
>
<el-button
plain
:disabled="val.disabled"
@click="changeTagSel(index, val)"
:type="val.name === item.sel ? 'success' : ''"
>
{{ val.name }}
</el-button>
</span>
</div>
</div>
</div>
<div slot="footer">
<div class="flex row-between">
<div>
<div class="price">¥{{ skuGoods.data.salePrice | to2 }}</div>
<div class="sku-group-text">
<span> {{ skuText }}</span>
<span>库存:{{ skuGoods.data.stockNumber || 0 }}</span>
</div>
</div>
<div class="flex">
<i class="icon-remove" @click="skuNumberReduce"></i>
<div style="width: 40px" class="number-box">
<el-input
:min="skuGoods.data.suit"
type="number"
v-model="skuGoods.number"
placeholder="0"
></el-input>
</div>
<!-- <i class="el-icon-remove"></i> -->
<i class="el-icon-circle-plus icon-add" @click="skuNumberAdd"></i>
</div>
</div>
<div class="flex" style="margin-top: 14px">
<button
class="my-btn disabled flex-1"
v-if="!skuGoods.data.isGrounding"
disabled
>
已下架
</button>
<template v-else>
<button
class="my-btn disabled flex-1"
v-if=" skuGoods.data.stockNumber<=0"
disabled
>
库存不足
</button>
<button
class="my-btn success flex-1"
v-else
:disabled="CanConfirm"
@click="chooseSkuConfirm"
>
确定
</button>
</template>
</div>
</div>
</el-dialog>
<!-- 数字键盘 -->
<el-dialog width="410px" title="数量" :visible.sync="keyborad.show">
<div class="simple-Keyboard-number">
<div class="carts">
<div class="title font-bold">
<span class="color-000">数量</span>
<i class="el-icon-close" @click="changeKeyboradShow(false)"></i>
</div>
<div class="box_status">{{ keyborad.number }}</div>
<div class="number_list_box">
<div class="yd-keyboard">
<div class="mini-number-box1">
<div class="mini-number">
<div class="key-line">
<div class="key" @click="keyboradAdd('1')">1</div>
<div class="key" @click="keyboradAdd('2')">2</div>
<div class="key" @click="keyboradAdd('3')">3</div>
</div>
<div class="key-line">
<div class="key" @click="keyboradAdd('4')">4</div>
<div class="key" @click="keyboradAdd('5')">5</div>
<div class="key" @click="keyboradAdd('6')">6</div>
</div>
<div class="key-line">
<div class="key" @click="keyboradAdd('7')">7</div>
<div class="key" @click="keyboradAdd('8')">8</div>
<div class="key" @click="keyboradAdd('9')">9</div>
</div>
<div class="key-line">
<div class="key"></div>
<div class="key" @click="keyboradAdd('0')">0</div>
<div
class="key"
style="font-size: 31px"
@click="keyboradReduce"
>
<svg
t="1723453480343"
class="icon"
viewBox="0 0 1664 1024"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
p-id="1467"
width="32"
height="32"
>
<path
d="M1526.08 1.6H459.84L41.28 416c-53.76 53.248-53.76 139.52 0 192.64l418.624 414.592v-0.064h1066.176a136.96 136.96 0 0 0 137.6-136.256V137.792a136.96 136.96 0 0 0-137.6-136.192z m-331.392 631.168c26.816 26.624 26.816 69.76 0 96.384-26.88 26.56-70.4 26.56-97.28 0l-121.28-120.128-123.328 122.112a69.76 69.76 0 0 1-97.92 0 68.096 68.096 0 0 1 0-96.96L878.208 512l-121.28-120.064a67.648 67.648 0 0 1 0-96.32c26.88-26.624 70.4-26.624 97.28 0l121.216 120.064 122.24-120.96a69.696 69.696 0 0 1 97.92 0 68.032 68.032 0 0 1 0 96.96l-122.24 120.96 121.344 120.064z"
fill="#333333"
p-id="1468"
></path>
</svg>
</div>
</div>
</div>
</div>
</div>
</div>
<div>
<div class="submit" @click="keyboradConfirm">确认</div>
</div>
</div>
</div>
</el-dialog>
<!-- 取单 -->
<el-dialog width="550px" title="取单" :visible.sync="prveOrder.show">
<div class="take_order_list">
<div class="tol_left_list">
<div
class="tolll_item"
:class="{ active: prveOrder.sel === index }"
@click="changePrveOrder(index)"
v-for="(item, index) in prveOrder.list"
:key="index"
>
<div class="tollli_index">{{ index + 1 }}</div>
<div class="tollli_price">¥{{ item.totalAmount }}</div>
<div class="tollli_time_and_num">
<div class="tollli_time">{{ item.created_at || "" }}</div>
<div class="tollli_num">({{ item.totalNumber }}件)</div>
</div>
</div>
</div>
<div
class="tol_right_list"
v-if="prveOrder.list.length && prveOrder.sel >= 0"
>
<div
class="tolrl_item"
v-for="(item, index) in prveOrder.selCart"
:key="index"
>
<div class="tolrli_img">
<img :src="item.coverImg" alt="" />
</div>
<div class="tolrli_right">
<div class="tr_top">
<div class="trt_name">{{ item.name }}</div>
<div class="trt_num">x{{ item.number }}</div>
<div class="trt_price">¥{{ item.totalAmount || 0 }}</div>
</div>
<div class="tr_bottom">
<span class="trb_item">
{{ item.specSnap | formatSpecSnap }}
</span>
</div>
</div>
</div>
</div>
</div>
<div slot="footer" class="flex row-center">
<div style="margin-right: 20px">
<el-button
size="medium"
type="success"
@click="confirmChoosePrveOrder"
>确认此单</el-button
>
</div>
<el-button size="medium" @click="delPrveOrder">删除此单</el-button>
</div>
</el-dialog>
<choose-user
ref="refChooseUser"
@chooseUser="chooseUserConfirm"
></choose-user>
<choose-table
ref="refChooseTable"
@confirm="chooseTableConfirm"
></choose-table>
<order-note ref="refOrderNote" @confirm="refOrderNoteConfirm"></order-note>
<!-- 支付时的键盘弹窗 -->
<money-keyboard ref="refMoneyKeyboard" :title="moneyKeyboard.title">
</money-keyboard>
<!-- 扫码支付 -->
<scan-pay ref="refScanCode"></scan-pay>
<!-- 打折 -->
<money-discount ref="refDiscount" @confirm="ChangeDiscount">
</money-discount>
</div>
</template>
<script>
import _ from "lodash";
import chooseUser from "./choose-user.vue";
import payType from "./pay-type.vue";
import chooseTable from "./table-diancan-components/choose-table-master.vue";
import cartItem from "./table-diancan-components/cart-item.vue";
import scanPay from "./table-diancan-components/scan-pay.vue";
import moneyDiscount from "./table-diancan-components/discount.vue";
import orderNote from "./table-diancan-components/note.vue";
import moneyKeyboard from "./money-keyboard.vue";
import dayjs from "dayjs";
import {
getGoodsLists,
addCart,
getCart,
$clearCart,
$removeCart,
$updateCart,
$allPack,
$createOrder,
$getMasterId,
$cacheOrder,
$getCacheOrder,
$delOrder,
$setUser,
$payOrder,
} from "@/api/table";
import { tbShopCategoryGet } from "@/api/shop";
import {
isCanBuy,
arrayContainsAll,
generateCombinations,
returnReverseVal,
} from "./util.js";
export default {
components: {
chooseUser,
chooseTable,
payType,
orderNote,
moneyKeyboard,
scanPay,
moneyDiscount,
cartItem,
},
data() {
return {
//台桌点餐页面打开时带来的参数 isAddGoods 加菜 isPayOrder结账
key: "",
//是否是从挂单里取出来的订单
isPrverOrder: false,
//是否全屏
isFullScreen: false,
moneyKeyboard: {
show: true,
title: "支付",
},
//true后付款false先付款
postPay: true,
//是否打印
isPrint: false,
// 备注
note: {
content: "",
isShow: false,
},
isCreateOrder: false,
$goodsData: "",
search: {
list: [],
},
skuGoods: {
number: 1,
data: {
stockNumber: 0,
salePrice: 0,
},
},
selGoods: {
isEdit: false,
data: {},
skuList: [],
skuMap: [],
title: "",
show: false,
},
dayjs,
dialogshow: false, //弹框显示
dialogtitle: "", //文字显示
informationdialogshow: false,
informationdialogshowedit: false,
goods: {
list: [],
query: {
productId: "",
categoryId: "",
page: 1,
size: 300,
},
loading: false,
total: 0,
},
order: {
orderId:"",
payType: "",
masterId: "",
allPack: false,
btns: [
{
text: "规格",
disabled: false,
},
{
text: "赠送",
disabled: false,
},
{
text: "打包",
disabled: false,
},
{
text: "删除",
disabled: false,
},
],
list: [],
gift: {
list: [],
selIndex: -1,
},
//已下单菜品
old: {
list: [],
selIndex: -1,
},
query: {
page: 1,
size: 20,
},
number: 1,
cacheNumber: 1,
selIndex: -1,
total: 0,
},
table: "",
category: {
list: [],
showAll: false,
},
keyborad: {
show: false,
number: "0",
},
prveOrder: {
list: [],
show: false,
sel: 0,
selCart: [],
},
layout: {
list: [
{ label: "经典布局", value: "default" },
{ label: "图文显示", value: "img-and-text" },
{ label: "文字显示", value: "text" },
],
sel: "img-and-text",
},
// 选择用户
vipUser: {
id: "",
},
//餐桌号
masterId: "",
canUpdate: true,
//下单
createOrder: {
discount: 1,
form: {},
data: {},
quan: {
list: [],
sel: "",
},
},
timer: null,
};
},
computed: {
title() {
return this.table ? "代客下单" + `(${this.table.name})` : "代客下单";
},
allGiftMoney() {
const price = this.order.list
.filter((v) => v.isGift === "true")
.reduce((a, b) => {
return a + b.number * b.salePrice;
}, 0);
return price;
},
giftLen() {
return this.order.list.filter((v) => v.isGift === "true").length;
},
isSku() {
if (this.order.selIndex < 0 || this.order.list.length <= 0) {
return false;
}
return this.order.list[this.order.selIndex].specSnap;
},
returnGiftText() {
if (this.order.selIndex < 0) {
return "赠送";
}
return this.order.list[this.order.selIndex].isGift === "true"
? "取消赠送"
: "赠送";
},
returnPackText() {
if (this.order.selIndex < 0) {
return "打包";
}
return this.order.list[this.order.selIndex].isPack === "true"
? "取消打包"
: "打包";
},
skuText() {
const result = this.selGoods.skuList.reduce((a, b) => {
return a + (b.sel ? b.sel + "+" : "");
}, "");
return result.substring(0, result.length - 1);
},
allPrice() {
const oldPrice = this.order.old.list
.filter((v) => v.isGift !== "true")
.reduce((a, b) => {
return a + b.number * b.salePrice;
}, 0);
const price = this.order.list
.filter((v) => v.isGift !== "true")
.reduce((a, b) => {
return a + b.number * b.salePrice;
}, 0);
return (oldPrice + price).toFixed(2);
},
allNumber() {
const oldNumber = this.order.old.list.reduce((a, b) => {
return a + b.number * 1;
}, 0);
const cartNumber = this.order.list.reduce((a, b) => {
return a + b.number * 1;
}, 0);
return oldNumber + cartNumber;
},
selGoodsHide() {
this.selGoods.show = false;
},
CanConfirm() {
if (!this.selGoods.skuList.length) {
return true;
}
return (
this.selGoods.skuList.filter((v) => v.sel !== "").length !==
this.selGoods.skuList.length
);
},
},
filters: {
formatSpecSnap(str) {
if (str === "" || str === null || str === undefined) {
return "";
}
return str.replaceAll(",", " / ");
},
to2(n) {
if (n === undefined) {
return "";
}
return Number(n).toFixed(2);
},
returntypeName(item) {
return item.typeEnum === "sku" ? "多规格" : "单规格";
},
},
watch: {
masterId: function (val) {
console.log(val);
},
isCreateOrder: function (val) {
if (!val) {
this.createOrder.discount = 1;
}
},
"vipUser.id": async function (val) {
let masterId = this.order.masterId;
if (!masterId) {
const res = await this.getMasterId();
masterId = res.masterId;
}
this.masterId = masterId;
$setUser({
tableId: this.table.tableId,
masterId: this.masterId,
vipUserId: val,
type: val === "" ? 1 : 0,
});
},
"prveOrder.list.length": function (val) {
if (val !== 0) {
this.prveOrder.selCart =
this.prveOrder.list[this.prveOrder.sel].carList;
} else {
this.prveOrder.selCart = [];
}
console.log(this.prveOrder.selCart);
},
"prveOrder.sel": function (val) {
this.prveOrder.selCart =
this.prveOrder.list.length !== 0
? this.prveOrder.list[val].carList
: [];
console.log(this.prveOrder.selCart);
if (val < 0) {
this.prveOrde.show = false;
}
},
// 本地缓存版本
// "prveOrder.list.length": function (val) {
// console.log(val);
// if (val !== 0) {
// this.prveOrder.selCart = this.prveOrder.list[this.prveOrder.sel].cart;
// localStorage.setItem(
// "orderList",
// JSON.stringify(
// this.prveOrder.list.map((v) => {
// return { ...v, cart: JSON.stringify(v.cart) };
// })
// )
// );
// } else {
// this.prveOrder.selCart = [];
// localStorage.removeItem("orderList");
// }
// console.log(this.prveOrder.selCart);
// },
// "prveOrder.sel": function (val) {
// this.prveOrder.selCart =
// this.prveOrder.list.length !== 0 ? this.prveOrder.list[val].cart : [];
// console.log(this.prveOrder.selCart);
// },
"order.allPack": function (val) {
console.log(val);
if (this.order.list.length <= 0) {
return;
}
$allPack({
masterId: this.masterId,
tableId: this.table.tableId,
state: val ? 1 : 0,
}).then((res) => {
this.order.list.map((v) => {
v.isPack = `${val}`;
});
});
},
"order.selIndex": function (val, oldval) {
console.log(val);
this.order.old.selIndex=-1
if (val === -1) {
// return (this.order.number = 1);
this.order.cacheNumber = 1;
} else {
this.order.cacheNumber = this.order.list[val].number;
// this.order.number = this.order.list[val].number;
}
},
"order.list.length": function (val) {
if (val <= 0) {
this.order.selIndex = -1;
}
if (this.order.selIndex >= 0) {
this.order.cacheNumber = this.order.list[this.order.selIndex].number;
// this.order.number = this.order.list[this.order.selIndex].number;
}
},
"order.number": _.debounce(function (newval) {
if (this.order.list.length <= 0 || this.order.selIndex < 0) {
return;
}
this.createOrderClose();
let item = this.order.list[this.order.selIndex];
console.log(item.specSnap);
const { productId, skuId, isPack, isGift, number } = item;
const oldGoods = this.order.old.list.find((v) => {
return v.productId === productId && v.skuId === skuId;
});
$updateCart({
cartId: item.id,
productId,
skuId,
tableId: this.table.tableId,
num: this.order.number + (oldGoods ? oldGoods.number : 0), // 0会删除此商品
}).then((res) => {
this.$set(this.order.list, this.order.selIndex, {
...res,
specSnap: item.specSnap,
number: this.order.number,
});
});
return;
this.updateOrder({
num: newval, // 0会删除此商品
});
}, 30),
"goods.query.productId": function (newval) {
if (!this.$goodsData) {
return;
}
if (newval == "") {
this.goods.list = this.$goodsData || [];
} else {
const newarr = this.$goodsData.filter((v) =>
v.name.includes(newval.trim())
);
this.search.list = newarr;
this.goods.list = newarr.length ? newarr : this.$goodsData;
}
},
},
mounted() {
// this.getGoods();
// this.getCategory();
// this.refToggle('refScanCode',true)
// this.refToggle("refDiscount", true);
},
methods: {
ChangeDiscount(discount) {
this.createOrder.discount = discount;
},
disCountShow() {
const { amount } = this.createOrder.data;
this.refToggle("refDiscount", true, {
amount,
discount: this.createOrder.discount * 100,
});
},
refToggle(key, isShow, data) {
if (!this.$refs[key]) {
return;
}
isShow ? this.$refs[key].open(data) : this.$refs[key].close(data);
},
//购物车商品输入框数量输入
cartGoodsNumberInput(newval, index) {
const item = this.order.list[index];
console.log(item);
this.order.cacheNumber = newval;
item.number = newval;
},
//购物车商品输入框数量改变
cartGoodsNumberChange(newval, index) {
const item = this.order.list[index];
newval = `${newval}`.split(".")[0] * 1;
console.log(newval);
this.order.cacheNumber = newval;
this.order.number = newval;
},
//判读单规格商品是否售尽
isSellOut(item) {
return (
item.isPauseSale ||
(item.typeEnum !== "sku" && item.specList[0].stockNumber <= 0)
);
},
toggleFullScreen() {
if (!document.fullscreenElement) {
this.enterFullScreen();
} else {
this.exitFullScreen();
}
},
enterFullScreen() {
let element = document.documentElement;
if (element.requestFullscreen) {
element.requestFullscreen();
} else if (element.mozRequestFullScreen) {
/* Firefox */
element.mozRequestFullScreen();
} else if (element.webkitRequestFullscreen) {
/* Chrome, Safari & Opera */
element.webkitRequestFullscreen();
} else if (element.msRequestFullscreen) {
/* IE/Edge */
element.msRequestFullscreen();
}
this.isFullScreen = true;
},
exitFullScreen() {
if (document.exitFullscreen) {
document.exitFullscreen();
} else if (document.mozCancelFullScreen) {
/* Firefox */
document.mozCancelFullScreen();
} else if (document.webkitExitFullscreen) {
/* Chrome, Safari and Opera */
document.webkitExitFullscreen();
} else if (document.msExitFullscreen) {
/* IE/Edge */
document.msExitFullscreen();
}
this.isFullScreen = false;
},
//打开输入钱的键盘
openMoneyKeyboard() {
this.$refs.refMoneyKeyboard.open();
},
changePostPay(val) {
this.postPay = val;
},
//改变是否打印
changeIsPrint(e) {
console.log(e);
this.isPrint = e;
},
refOrderNoteConfirm(note) {
this.note.content = note;
},
refNoteShow() {
this.$refs.refOrderNote.open(this.note.content);
},
// 支付订单
async payOrder() {
console.log({
orderId: this.createOrder.data.id,
payType: this.order.payType,
});
const res = await $payOrder({
tableId: this.table.tableId,
masterId: this.masterId,
orderId: this.createOrder.data.id,
payType: this.order.payType,
vipUserId: this.vipUser.id,
discount: this.createOrder.discount,
});
this.payOrderSuccess();
},
payOrderSuccess() {
this.$notify({
title: "支付成功",
type: "success",
});
this.reset();
this.close();
},
chooseTableConfirm(item) {
console.log(item);
this.table = item;
},
chooseTableOpen() {
this.$refs.refChooseTable.open();
},
chooseUserConfirm(user) {
console.log(user);
if (user) {
this.vipUser = user;
} else {
this.vipUser = { id: "" };
}
},
refChooseUserOpen() {
this.$refs.refChooseUser.open();
},
createOrderClose() {
this.isCreateOrder = false;
},
//生成订单
toCreateOrderDebounce:_.debounce(()=>{
},100),
async toCreateOrder(isNowPay = false) {
console.log(this.order)
console.log(this.order.orderId)
const res = await $createOrder({
masterId: this.order.masterId || this.masterId,
vipUserId: this.vipUser.id,
tableId: this.table.tableId,
note: this.note.content,
postPay: this.postPay,
orderld:this.order.orderId
});
//后付款
console.log(this.postPay);
console.log(isNowPay);
console.log(this.postPay && isNowPay);
if (this.postPay && !isNowPay) {
this.$notify({
title: "下单成功",
type: "success",
});
return this.close();
}
this.createOrder.data = res;
if (!this.isPrverOrder) {
const { masterId } = await this.getMasterId();
this.masterId = masterId;
}
this.isCreateOrder = true;
},
// 获取取餐号
getMasterId() {
return $getMasterId({
tableId: this.table.tableId,
vipUserId: this.vipUser.id,
});
},
onSelGoodsSkuClose() {
this.selGoods.isEdit = false;
},
changePrveOrder(index) {
this.prveOrder.sel = index;
},
//更新购物车商品数据
updateOrder(par = {}) {
let item = this.order.list[this.order.selIndex];
console.log(item.specSnap);
const { productId, skuId, isPack, isGift, number } = item;
addCart({
masterId: this.masterId,
vipUserId: this.vipUser.id,
productId,
skuId,
tableId: this.table.tableId,
num: number,
isPack: isPack === "true" ? true : false,
isGift: isGift === "true" ? true : false,
...par,
}).then((res) => {
this.$set(this.order.list, this.order.selIndex, {
...res,
specSnap: item.specSnap,
});
});
},
keyboradAdd(n) {
if (Number(this.keyborad.number) === 0) {
return (this.keyborad.number = n);
}
this.keyborad.number += n;
},
keyboradReduce() {
if (this.keyborad.number.length <= 1) {
return (this.keyborad.number = "0");
}
this.keyborad.number = this.keyborad.number.substring(
0,
this.keyborad.number.length - 1
);
},
keyboradConfirm() {
const orderGoods = this.order.list[this.order.selIndex];
// 如果设置为0,商品数量减1
if (this.keyborad.number == 0) {
this.changeOrderNumber(this.order.selIndex, true);
} else {
orderGoods.number = Number(this.keyborad.number);
}
this.order.cacheNumber = orderGoods.number;
this.order.number = orderGoods.number;
this.changeKeyboradShow(false);
},
changeKeyboradShow(show) {
if (show) {
this.keyborad.number = `${this.order.list[this.order.selIndex].number}`;
}
this.keyborad.show = show;
},
// 获取本地缓存挂单
// getPrveCart() {
// const arr = localStorage.getItem("orderList")
// ? JSON.parse(localStorage.getItem("orderList"))
// : [];
// this.prveOrder.list = arr.map((v) => {
// return { ...v, cart: JSON.parse(v.cart) };
// });
// },
//右侧控制按钮点击事件
orderBtnsClick(key) {
const orderGoods = this.order.list[this.order.selIndex];
this.createOrderClose();
if (key === "sku") {
this.selGoods.title = orderGoods.name;
this.selGoods.isEdit = true;
const item = this.goods.list.find((v) => v.id == orderGoods.productId);
console.log(item);
return this.showSelGoods({ ...item, ...orderGoods });
}
if (key === "gift") {
const isGift = orderGoods.isGift === "true" ? "flase" : "true";
this.updateOrder({ isGift: isGift === "true" ? true : false });
return;
}
if (key === "pack") {
const isPack = orderGoods.isPack === "true" ? "flase" : "true";
this.updateOrder({ isPack: isPack === "true" ? true : false });
return;
}
if (key === "del") {
return this.removeCart();
}
if (key === "save") {
this.prveOrder.list.push({
cart: this.order.list,
id: Date.now(),
created_at: `${new Date().getHours()}:${new Date().getMinutes()}`,
goods_num: this.allNumber,
order_total: this.allPrice,
});
localStorage.setItem(
"orderList",
JSON.stringify(
this.prveOrder.list.map((v) => {
return { ...v, cart: JSON.stringify(v.cart) };
})
)
);
this.order.list = [];
this.order.selIndex = -1;
return;
}
if (key === "getOrder") {
this.prveOrder.show = true;
this.getPrveCart();
return;
}
},
//选择挂单确认
async confirmChoosePrveOrder() {
if (this.prveOrder.list.length <= 0) {
return;
}
// const { sel } = this.prveOrder;
// const order=this.prveOrder.list[sel];
// const res=await $cacheOrder({
// orderId:order.orderId,
// isPending:false,
// tableId:this.table.tableId,
// masterId:order.carList[0].masterId
// })
const { masterId, tableId, userId, remark,id } = await $cacheOrder({
orderId: this.prveOrder.list[this.prveOrder.sel].orderId,
isPending: false,
});
this.order.orderId = id;
console.log( this.order.orderId)
this.masterId = masterId;
this.isPrverOrder = true;
console.log(masterId);
const { records } = await getCart({
masterId,
tableId,
vipUserId: userId != "null" ? userId : "",
});
console.log(records);
this.order.list = [];
this.order.masterId = masterId;
this.order.list = records;
this.prveOrder.show = false;
this.note.content = remark || "";
// this.delPrveOrder(false);
},
//删除挂单
async delPrveOrder(isRequest = true) {
const { sel } = this.prveOrder;
if(this.prveOrder.list<=0||sel<0){
return
}
const order = this.prveOrder.list[sel];
const orderMasterId = order.carList[0].masterId;
//当前订单是否是当前挂单
const nowOrderIsPrverOrder =
this.isPrverOrder && orderMasterId === this.masterId;
if (nowOrderIsPrverOrder) {
const res = await this.$confirm(
"您正在删除当前购物车订单,是否删除?",
"提示",
{
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
}
).catch((err) => {
console.log(err);
});
if (!res) {
return;
}
}
if (isRequest) {
const res = await $delOrder({
orderId: order.orderId,
});
if (nowOrderIsPrverOrder) {
this.note.content = "";
this.order.list = [];
}
this.$notify({
message: "删除成功",
type: "success",
});
}
this.prveOrder.list.splice(sel, 1);
this.prveOrder.sel = sel - 1 <= 0 ? 0 : sel - 1;
},
//打开挂起订单
async cacheOrderShow() {
this.prveOrder.show = true;
const res = await this.getCacheOrder(true);
this.prveOrder.list = res;
if (this.prveOrder.list.length && this.prveOrder.sel !== -1) {
const item = this.prveOrder.list[this.prveOrder.sel];
console.log(item);
if (item) {
this.prveOrder.selCart = item.carList;
}
}
},
//获取挂起订单
async getCacheOrder(isReturn = false) {
this.createOrderClose();
if (isReturn) {
return $getCacheOrder({ tableId: this.table.tableId });
}
const res = await $getCacheOrder({ tableId: this.table.tableId });
this.prveOrder.list = res;
},
//存单
async saveOrder() {
this.createOrderClose();
const res = await $cacheOrder({
masterId: this.masterId,
tableId: this.table.tableId,
vipUserId: this.vipUser.id,
isPending: true,
note: this.note.content,
});
this.isPrverOrder = false;
this.order.masterId = "";
this.order.list = [];
this.order.selIndex = -1;
this.note.content = "";
this.order.orderId=""
this.$nextTick(() => {
this.getCacheOrder();
});
const masterIdRes = await this.getMasterId();
this.masterId = masterIdRes.masterId;
},
// 删除购物车商品
removeCart() {
const orderGoods = this.order.list[this.order.selIndex];
$removeCart({
cartId: orderGoods.id,
tableId: this.table.tableId,
});
this.order.list.splice(this.order.selIndex, 1);
const newval = this.order.selIndex - 1;
this.order.selIndex = newval <= 0 ? 0 : newval;
// this.$message({
// type: "success",
// message: "清除成功!",
// });
},
// 点击订单里的加减改变购物车商品数量
async changeOrderNumber(index, isReduce) {
if (index < 0) {
return;
}
this.order.selIndex = index;
console.log(index);
console.log(isReduce);
const item = this.order.list[index];
const mumber = item.number * 1;
const newval = mumber + (isReduce ? -1 : 1);
if (newval <= 0) {
return this.removeCart();
}
if (newval >= 100000) {
return;
}
// const res= await addCart({
// productId: item.productId,
// skuId: item.skuId,
// tableId: this.table.tableId,
// num: newval, // 0会删除此商品
// isPack: false, // 是否打包
// })
this.order.list[index].number = newval;
this.order.number = newval;
this.order.cacheNumber = newval;
},
// 点击右侧控制列表上的加减改变购物车商品数量
changeOrderGoodsNumber(isReduce) {
if (this.order.selIndex < 0) {
return;
}
const item = this.order.list[this.order.selIndex];
console.log(item);
const mumber = item.number * 1;
const newval = mumber + (isReduce ? -1 : 1);
if (newval <= 0) {
return;
}
if (newval >= 100000) {
return;
}
console.log(newval);
// this.order.list[this.order.selIndex].number = newval;
this.order.number = newval;
this.order.cacheNumber = newval;
},
//清空购物车
clearCart() {
if (this.order.list.length <= 0) {
return;
}
this.$confirm("确定要清空点餐列表吗?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
$clearCart({
masterId: this.masterId,
tableId: this.table.tableId,
}).then((res) => {
this.order.list = [];
this.order.selIndex = -1;
this.$message({
type: "success",
message: "清除成功!",
});
});
})
.catch(() => {});
},
skuNumberAdd() {
const number = Number(this.skuGoods.number);
if (number > 10000) {
return;
}
this.skuGoods.number = number + 1;
},
skuNumberReduce() {
if (this.skuGoods.number - 1 <= 0) {
return;
}
this.skuGoods.number -= 1;
},
toggleShowAll() {
this.category.showAll = !this.category.showAll;
},
changeCategoryId(item) {
this.goods.query.categoryId = item.id;
},
async getCategory() {
const { content } = await tbShopCategoryGet({
page: 0,
size: 100,
sort: "id",
shopId: localStorage.getItem("shopId"),
});
this.category.list = content.reduce((prve, cur) => {
prve.push(cur);
return [...prve, ...cur.childrenList];
}, []);
this.category.list.unshift({
id: "",
name: "全部",
});
},
//改变购物车菜品选中
changeOrderSel(index) {
this.order.selIndex = index;
this.order.old.selIndex = -1;
},
//改变已下单菜品选中
changeOrderOldSel(index) {
this.order.old.selIndex = index;
this.order.cacheNumber = this.order.old.list[index].number;
},
chooseSkuConfirm() {
if (this.timer) {
return;
}
this.skuGoodsAdd();
this.timer = setTimeout(() => {
clearTimeout(this.timer);
this.timer = null;
}, 500);
console.log(this.timer);
},
async skuGoodsAdd() {
let name = this.selGoods.skuList.reduce((prve, cur) => {
return prve + cur.sel + ",";
}, "");
name = name.substring(0, name.length - 1);
// const item = this.selGoods.data.specList.find((v) => v.specSnap === name);
const item = this.selGoods.skuMap[name];
if (!item.isGrounding) {
//该商品已经下架
return this.$notify({
title: "该商品规格已经下架",
type: "error",
});
}
let res = "";
console.log(orderGoods);
//更改购物车订单商品规格数量
if (this.selGoods.isEdit) {
res = await $updateCart({
cartId: this.order.list[this.order.selIndex].id,
productId: this.selGoods.data.productId,
skuId: item.id,
tableId: this.table.tableId,
num: this.skuGoods.number, // 0会删除此商品
});
this.$set(this.order.list, this.order.selIndex, {
...res,
specSnap: name,
});
this.$notify({
title: "更新成功",
type: "success",
});
this.selGoods.show = false;
this.order.cacheNumber = this.skuGoods.number;
return;
}
const orderGoodsIndex = this.order.list.findIndex((V) => {
return V.skuId == item.id && V.productId == this.selGoods.data.id;
});
const orderGoods =
orderGoodsIndex != -1 ? this.order.list[orderGoodsIndex] : undefined;
const oldOrderGoods = this.order.old.list.find((V) => {
return V.skuId == item.id && V.productId == this.selGoods.data.id;
});
if (orderGoods || oldOrderGoods) {
//更新
const newNum =
(oldOrderGoods ? oldOrderGoods.number : 0) +
(orderGoods ? orderGoods.number * 1 : 0) +
this.skuGoods.number;
res = await $updateCart({
cartId: orderGoods ? orderGoods.id : oldOrderGoods.id,
productId: this.selGoods.data.id,
skuId: item.id,
tableId: this.table.tableId,
num: newNum, // 0会删除此商品
isPack: false, // 是否打包
});
if (this.key && orderGoodsIndex == -1) {
this.orderListPush({
...res,
specSnap: name,
number: this.skuGoods.number,
});
} else {
orderGoods.number += this.skuGoods.number;
this.order.selIndex = orderGoodsIndex;
this.order.cacheNumber = orderGoods.number;
}
} else {
//添加
res = await addCart({
masterId: this.masterId,
vipUserId: this.vipUser.id,
productId: this.selGoods.data.id,
skuId: item.id,
tableId: this.table.tableId,
num: this.skuGoods.number, // 0会删除此商品
isPack: false, // 是否打包
});
this.orderListPush({ ...res, specSnap: name });
// this.orderListPush({
// skuId: item.id,
// number: this.skuGoods.number,
// specSnap: name,
// });
}
this.$notify({
title: orderGoods ? "更新成功" : "添加成功",
type: "success",
});
this.selGoods.show = false;
},
orderListPush(item) {
const { isPack, isGift } = item;
// const isPack=item.isPack==='false'?false:true
// const isGift=item.isGift==='false'?false:true
this.order.list.push({ ...item, isPack, isGift });
this.order.selIndex = this.order.list.length - 1;
},
//设置规格按钮的禁止状态
setTagDisabled() {
const selArr = this.selGoods.skuList.reduce((prve, cur) => {
if (cur.sel) {
prve.push(cur.sel);
} else {
}
return prve;
}, []);
console.log(selArr);
let selArrAllGroup = generateCombinations(selArr, selArr.length - 1);
console.log(selArrAllGroup);
const matchArr = [];
for (let key in this.selGoods.skuMap) {
const goods = this.selGoods.skuMap[key];
const keyArr = key.split(",");
for (let spe of selArrAllGroup) {
if (arrayContainsAll(keyArr, spe)) {
matchArr.push(goods);
break;
}
}
}
console.log(matchArr);
const skuList = this.selGoods.skuList;
console.log(skuList);
//全部规格都已下架
if (!matchArr.length) {
for (let k in skuList) {
for (let i in skuList[k].values) {
this.$set(skuList[k].values[i], "disabled", true);
}
}
return;
}
const includeSkuMap = matchArr.reduce((prve, cur) => {
const speArr = cur.specSnap.split(",");
for (let i of speArr) {
if (!prve.hasOwnProperty("i")) {
prve[i] = matchArr
.filter((v) => v.specSnap.match(i))
.every((v) => {
// return isCanBuy(v,this.selGoods.data.isStock)
return isCanBuy(v)
});
}
}
return prve;
}, {});
console.log(includeSkuMap)
for (let i in includeSkuMap) {
for (let k in skuList) {
const index = skuList[k].valueArr.findIndex((val) => val === i);
if (index !== -1) {
this.$set(skuList[k].values[index], "disabled", includeSkuMap[i]);
}
}
}
},
changeTagSel(index, val) {
this.$set(this.selGoods.skuList[index], "sel", val.name);
let specSnap = this.selGoods.skuList.reduce((a, b) => {
return a + b.sel + ",";
}, "");
specSnap = specSnap.substring(0, specSnap.length - 1);
for (let sku of this.selGoods.skuList) {
console.log(sku);
}
this.setTagDisabled();
const canChooseGoods = this.selGoods.skuList.every((v) => v.sel);
if (canChooseGoods) {
const skuGoods = this.selGoods.skuMap[specSnap];
this.skuGoods.data = skuGoods;
this.skuGoods.number = skuGoods.suit || 1;
}
},
onclose() {
this.$emit("close");
this.reset();
},
reset() {
// this.goods.list = [];
this.order.masterId = "";
this.order.list = [];
this.order.query.page = 1;
this.goods.total = 0;
this.order.list = [];
this.order.selIndex = -1;
this.order.old.list = [];
this.prveOrder.list=[];
this.prveOrder.selIndex=-1
this.order.old.selIndex = -1;
this.isCreateOrder = false;
this.note.content = "";
this.vipUser = { id: "" };
this.allPack = false;
this.note.content = "";
this.isPrverOrder = false;
this.createOrder.discount = 1;
this.order.cacheNumber=1
this.key = "";
this.order.orderId=''
},
//获取购物车数据
async getCart() {
const res = await getCart({
...this.order.query,
masterId: this.masterId,
tableId: this.table.tableId,
});
if (this.key) {
this.order.old.list = res.records;
} else {
this.order.list = res.records;
}
this.order.total = res.total;
},
showSelGoods(item) {
console.log(item);
this.selGoods.data = item;
this.selGoods.skuMap = {};
const specList = item.specList;
this.setSelGoodsSkuMap(specList);
this.setSelGoodsSkuList(
JSON.parse(item.skuResult.tagSnap),
item.specSnap
);
this.setTagDisabled();
const skuGoods = this.selGoods.skuMap[item.specSnap];
this.skuGoods.data = skuGoods;
this.skuGoods.number = item.number ? item.number : skuGoods.suit || 1;
this.selGoods.title = item.name;
this.selGoods.show = true;
},
// 备份版本会过滤下架和售尽以为库存小于等于0的商品
async goodsClickback(item) {
if (item.typeEnum === "sku") {
this.selGoods.data = item;
this.selGoods.skuMap = {};
const specList = item.specList;
for (let i in specList) {
this.selGoods.skuMap[specList[i].specSnap] = specList[i];
}
console.log(this.selGoods.skuMap);
let specSnap = "";
let tagSnap = JSON.parse(item.skuResult.tagSnap).map((v) => {
return { ...v, newval: {} };
});
const canUseSpecSnap = {};
const canBudyGoods = specList.filter(
(v) => v.isGrounding && v.isPauseSale != 1 && v.stockNumber > 0
);
canBudyGoods.map((v) => {
v.specSnap.split(",").map((spe) => {
canUseSpecSnap[spe] = spe;
});
});
console.log(canUseSpecSnap);
for (let i in canUseSpecSnap) {
const item = tagSnap.find((v) => v.value.match(i));
item.newval[i] = i;
}
tagSnap = tagSnap.map((v) => {
const newvals = Object.keys(v.newval);
specSnap += newvals[0] + ",";
return {
...v,
values: newvals,
sel: newvals[0],
};
});
console.log(tagSnap);
console.log(canUseSpecSnap);
console.log(canBudyGoods);
this.selGoods.skuList = tagSnap;
// this.selGoods.skuList = tagSnap.map((v) => {
// const values = v.value.split(",");
// specSnap += values[0] + ",";
// return {
// ...v,
// values: newval,
// sel: values[0],
// };
// });
specSnap = specSnap.substring(0, specSnap.length - 1);
const skuGoods = this.selGoods.skuMap[specSnap];
this.skuGoods.data = skuGoods;
console.log(skuGoods);
this.skuGoods.number = skuGoods.suit || 1;
console.log(this.skuGoods.data);
this.selGoods.title = item.name;
this.selGoods.show = true;
return;
}
//单规格
const orderGoodsIndex = this.order.list.findIndex((V) => {
return V.skuId == item.specList[0].id && V.productId == item.id;
});
const orderGoods =
orderGoodsIndex != -1 ? this.order.list[orderGoodsIndex] : undefined;
// const orderGoods = this.order.list.find((V) => {
// return V.skuId == item.specList[0].id && V.productId == item.id;
// });
let res = "";
if (orderGoods) {
//更新
// res = await $updateCart({
// cartId: orderGoods.id,
// productId: item.id,
// skuId: item.specList[0].id,
// tableId: this.table.tableId,
// num: orderGoods.number * 1 + item.specList[0].suit, // 0会删除此商品
// });
orderGoods.number += item.specList[0].suit;
this.order.number = orderGoods.number;
this.order.selIndex = orderGoodsIndex;
} else {
//增加
console.log(item);
const num= item.specList[0].suit
res = await addCart({
masterId: this.masterId,
vipUserId: this.vipUser.id,
productId: item.id,
skuId: item.specList[0].id,
tableId: this.table.tableId,
num:num<=0?1:num, // 0会删除此商品
isPack: false, // 是否打包
});
this.orderListPush(res);
}
},
//多规格商品弹窗时,找到默认可以下单的规格商品
findGoods(skuList = [], goodsListMap = {}) {
const skuMapNumber = skuList.reduce((prve, cur) => {
for (let i in cur.valueArr) {
prve[cur.valueArr[i]] = i;
}
return prve;
}, {});
const canBudyGoods = this.selGoods.data.specList
.filter((v) => isCanBuy(v))
.sort((a, b) => {
const aNumber = a.specSnap.split(",").reduce((prve, cur) => {
return prve + skuMapNumber[cur];
}, 0);
const bNumber = b.specSnap.split(",").reduce((prve, cur) => {
return prve + skuMapNumber[cur];
}, 0);
return aNumber - bNumber;
});
return canBudyGoods[0];
},
//设置商品默认选中,规格禁止以及选中
setSkugoodsDefaultInit() {
const skuList = this.selGoods.skuList;
const goodsListMap = this.selGoods.skuMap;
const skuGoods = this.findGoods(skuList, goodsListMap);
console.log(skuGoods);
if (skuGoods) {
this.skuGoods.data = skuGoods;
this.skuGoods.number = skuGoods.suit || 1;
skuGoods.specSnap.split(",").map((v, index) => {
skuList[index].sel = v;
});
}
this.setTagDisabled();
},
// 设置当前选中商品skuList
setSelGoodsSkuList(skuList, specSnap) {
const specSnapArr = specSnap ? specSnap.split(",") : [];
this.selGoods.skuList = skuList.map((v, index) => {
const values = v.value.split(",");
return {
...v,
valueArr: values,
sel: specSnap ? specSnapArr[index] : "",
values: values.map((name) => {
return { name, disabled: false };
}),
};
});
},
setSelGoodsSkuMap(specList) {
for (let i in specList) {
this.selGoods.skuMap[specList[i].specSnap] = specList[i];
}
},
//根据右侧商品单规格多规格做不同处理
async goodsClick(item) {
if (item.typeEnum === "sku") {
this.selGoods.data = item;
this.selGoods.skuMap = {};
const specList = item.specList;
this.setSelGoodsSkuMap(specList);
console.log(this.selGoods.skuMap);
this.setSelGoodsSkuList(JSON.parse(item.skuResult.tagSnap));
this.setSkugoodsDefaultInit();
this.selGoods.title = item.name;
this.selGoods.show = true;
return;
}
//单规格
const orderGoodsIndex = this.order.list.findIndex((V) => {
return V.skuId == item.specList[0].id && V.productId == item.id;
});
const orderGoods =
orderGoodsIndex != -1 ? this.order.list[orderGoodsIndex] : undefined;
// const orderGoods = this.order.list.find((V) => {
// return V.skuId == item.specList[0].id && V.productId == item.id;
// });
let res = "";
if (orderGoods) {
//更新
// res = await $updateCart({
// cartId: orderGoods.id,
// productId: item.id,
// skuId: item.specList[0].id,
// tableId: this.table.tableId,
// num: orderGoods.number * 1 + item.specList[0].suit, // 0会删除此商品
// });
orderGoods.number += item.specList[0].suit;
this.order.number = orderGoods.number;
this.order.selIndex = orderGoodsIndex;
} else {
//增加
console.log(item);
res = await addCart({
masterId: this.masterId,
vipUserId: this.vipUser.id,
productId: item.id,
skuId: item.specList[0].id,
tableId: this.table.tableId,
num: item.specList[0].suit, // 0会删除此商品
isPack: false, // 是否打包
});
this.orderListPush(res);
}
},
async getGoods() {
const res = await getGoodsLists(this.goods.query);
const goods = res.records.filter((v) => {
if (!v) {
return false;
}
let isShow = true;
if (v.typeEnum !== "sku") {
isShow = v.specList.length >= 1;
}
return isShow;
});
this.goods.list = goods;
this.goods.total = res.total;
this.$goodsData = goods;
},
async open(item, key) {
this.table = item;
this.key = key;
if (this.key == "isPayOrder") {
this.isCreateOrder = true;
}
this.informationdialogshow;
this.informationdialogshow = true;
const res = await this.getMasterId();
this.masterId = res.masterId;
if (this.key == "isPayOrder") {
this.toCreateOrder(true);
}
this.getCart();
this.getGoods();
this.getCategory();
// this.getPrveCart();
this.getCacheOrder();
},
close() {
this.informationdialogshow = false;
this.$emit("close");
},
resetCommodityArr() {
this.commodityArr = [];
this.$refs.addSelect.resetFields();
},
haocaiCancel() {
this.informationdialogshow = false;
},
haocaiConfirm() {
console.log(haocaiSelectedMap);
this.$emit("confirm", haocaiSelectedMap);
this.informationdialogshow = false;
return;
},
// 分页回调
paginationChange(e) {
this.tableData.page = e - 1;
this.getTableData();
},
paginationChangeinformation(e) {
this.goods.query.page = e;
this.getGoods();
},
},
};
</script>
<style scoped lang="scss">
/* 针对所有input type="number" */
input[type="number"]::-webkit-inner-spin-button,
input[type="number"]::-webkit-outer-spin-button {
-webkit-appearance: none;
margin: 0;
}
.full-screen {
margin-left: 10px;
svg {
width: 24px;
height: 24px;
}
&:hover {
path {
fill: #1890ff;
}
}
}
.icon-add {
color: rgb(34, 191, 100);
font-size: 22px;
cursor: pointer;
}
.prve-car-len {
position: absolute;
display: flex;
justify-content: center;
align-items: center;
top: 2px;
right: 2px;
height: 16px;
width: 16px;
font-size: 12px;
color: rgb(255, 255, 255);
border-radius: 50%;
background-color: rgb(250, 85, 85);
}
::v-deep .number-box .el-input__inner {
border: none;
}
::v-deep .el-button--text {
color: #000;
}
::v-deep .number-box .el-input__inner {
border: none;
padding: 0 4px;
text-align: center;
}
::v-deep .el-empty {
padding: 0;
}
::v-deep .el-button--success:not(.is-disabled) {
background: #22bf64;
color: #fff;
}
::v-deep .el-tag--dark .el-tag--success {
background: #22bf64;
color: #fff;
}
::v-deep .flex-1 .el-button {
width: 100%;
}
::v-deep .el-button--success.is-plain {
background: rgba(34, 191, 100, 0.1);
color: #22bf64;
border: 1px solid #22bf64;
}
::v-deep .el-button--medium {
padding-top: 12px;
padding-bottom: 12px;
}
// ::v-deep .el-button.is-plain:hover, .el-button.is-plain:focus{
// background: rgba(34, 191, 100, .1);
// color: #22bf64;
// border: 1px solid #22bf64;
// }
::v-deep .number-box .el-input__inner::-webkit-inner-spin-button {
-webkit-appearance: none;
margin: 0;
}
::v-deep .number-box .el-input__inner::-webkit-outer-spin-button {
-webkit-appearance: none;
margin: 0;
}
.carts_list_title {
padding: 16px 0 12px 0;
display: flex;
align-items: center;
font-size: 12px;
color: rgba(0, 0, 0, 0.4);
&::after {
content: "";
flex: 1;
height: 1px;
background-color: #ebebeb;
margin-left: 10px;
}
}
.lh-16 {
line-height: 16px;
}
.good_info_discount {
height: 16px;
padding: 0 3px;
color: #ff3f3f;
background-color: rgba(255, 63, 63, 0.1);
border-radius: 2px;
margin-left: 6px;
font-size: 12px;
white-space: nowrap;
}
.icon-remove {
border: 1px solid #d8d8d8;
width: 22px;
height: 22px;
display: flex;
justify-content: center;
align-items: center;
border-radius: 50%;
box-sizing: border-box;
cursor: pointer;
&::after {
content: "";
display: block;
width: 10px;
height: 1px;
background: #999;
}
}
.row-center {
justify-content: center;
}
.sku-group-text {
text-align: left;
color: #666;
font-size: 11px;
margin-top: 2px;
}
.price {
font-size: 18px;
text-align: left;
color: rgb(255, 81, 82);
font-weight: 600;
}
.youhui {
color: #c12a2a;
font-size: 13px;
line-height: 16px;
}
::v-deep .el-dialog__footer {
border-top: 1px solid #efefef;
}
.sku-bottom {
padding: 14px 12px 5px;
}
.relative {
position: relative;
}
.col-baseline {
align-items: baseline;
}
.flex-x-y-center {
display: flex;
justify-content: center;
align-items: center;
background-color: #efefef;
}
::v-deep .el-dialog__body {
padding: 0 20px;
}
.absolute {
position: absolute;
}
.order-number-box {
position: relative;
.absolute {
width: 60px;
height: 40px;
right: -30px;
top: -12px;
position: absolute;
.order-input-number {
position: absolute;
right: -6px;
top: 0;
justify-content: center;
align-items: center;
display: none;
background-color: #fff;
border: 1px solid #e4e7ed;
border-radius: 4px;
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.06);
padding: 9px 6px;
background-color: #fff;
height: 40px;
}
&:hover .order-input-number {
display: flex;
}
}
}
.ft-12 {
font-size: 12px;
}
.ft-18 {
font-size: 18px;
}
.transition {
transition: all 0.2s ease-in-out;
}
::v-deep .el-dialog__header {
border-bottom: 1px solid #efefef;
}
.tableId {
padding: 9px 15px;
border: 1px solid #dcdfe6;
font-size: 12px;
border-radius: 3px;
cursor: pointer;
&:hover {
border-color: #409eff;
color: #409eff;
background-color: rgba(24, 144, 255, 0.1);
}
}
.cur-pointer {
cursor: pointer;
}
.flex-1 {
flex: 1;
}
.flex-wrap {
flex-wrap: wrap;
}
.mt-14 {
margin-top: 14px;
}
.my-btn {
outline: none;
height: 40px;
font-size: 14px;
line-height: 40px;
color: #000;
justify-content: center;
align-items: center;
border: 1px solid #dcdfe6;
border-radius: 4px;
cursor: pointer;
white-space: nowrap;
padding: 0 5px;
background-color: #fff;
position: relative;
&.disabled {
color: #c0c4cc;
cursor: not-allowed;
background-color: #fff;
border-color: #ebeef5;
}
}
.flex-xy-cnter {
justify-content: center;
align-items: center;
}
.flex-wrap {
flex: 1;
}
.headimg {
width: 34px;
height: 34px;
display: block;
border-radius: 2px;
margin-right: 6px;
}
.take_order_list {
padding: 14px 0;
display: flex;
justify-content: space-between;
.tol_left_list {
height: 360px;
margin-right: 24px;
overflow-y: scroll;
&::-webkit-scrollbar {
width: 0;
}
.tolll_item {
border: 1px solid rgb(247, 247, 250);
height: 86px;
width: 130px;
padding: 10px 14px;
margin-bottom: 12px;
border-radius: 4px;
color: #303133;
background-color: #f7f7fa;
&.active {
border: 1px solid rgb(0, 194, 95);
background-color: rgba(0, 194, 95, 0.1);
color: rgb(0, 194, 95) !important;
.tollli_time,
.tollli_num {
color: rgb(0, 194, 95) !important;
}
}
cursor: pointer;
.tollli_index {
font-weight: 600;
font-size: 18px;
}
.tollli_price {
margin-top: 8px;
font-size: 14px;
}
.tollli_time_and_num {
margin-top: 6px;
display: flex;
justify-content: space-between;
.tollli_time,
.tollli_num {
font-size: 12px;
color: #909399;
}
}
}
}
.tol_right_list {
flex: 1;
height: 360px;
overflow-y: scroll;
&::-webkit-scrollbar {
width: 0;
}
.tolrl_item {
display: flex;
padding: 2px 2px 13px 2px;
margin-bottom: 12px;
border-bottom: 1px solid #ebebeb;
.tolrli_img {
img {
width: 40px;
height: 40px;
border-radius: 4px;
}
}
.tolrli_right {
display: flex;
justify-content: space-between;
flex: 1;
flex-direction: column;
padding: 1px 0 1px 8px;
.tr_top {
display: flex;
justify-content: space-between;
.trt_name {
width: 150px;
font-size: 14px;
color: #212121;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.trt_num {
font-size: 14px;
color: #212121;
}
.trt_price {
width: 100px;
text-align: right;
font-size: 14px;
color: #212121;
}
}
.tr_bottom {
font-size: 12px;
color: #999;
}
}
}
}
}
.success {
color: #fff;
border-color: #22bf64;
background-color: rgb(34, 191, 100);
}
.categoty {
position: sticky;
top: 0;
background-color: #f7f7fa;
z-index: 1;
padding-top: 14px;
margin-left: 7px;
.show_more_btn {
padding: 0 10px;
color: #1890ff;
font-size: 16px;
display: flex;
align-items: center;
user-select: none;
min-width: 80px;
background: #f7f7fa;
position: absolute;
right: -20px;
top: 14px;
height: 38px;
cursor: pointer;
display: flex;
justify-content: center;
align-items: center;
.el-icon-arrow-down {
transition: all 0.2s;
}
&.showAll .el-icon-arrow-down {
transform: rotate(180deg);
}
}
}
.search-box {
display: flex;
justify-content: flex-end;
margin-left: 12px;
border-bottom: 1px solid #ebebeb;
}
::v-deep .el-dialog__title {
font-size: 20px;
font-weight: 600;
}
::v-deep .categorys .el-tag--plain.el-tag--success {
border: 1px solid #dcdfe6;
color: #000;
font-weight: 600;
}
::v-deep .el-dialog {
user-select: none;
}
::v-deep .categorys .el-tag {
min-width: 80px;
height: 38px;
line-height: 38px;
text-align: center;
box-sizing: border-box;
text-align: center;
padding: 0 14px;
font-size: 14px;
font-weight: 600;
border-radius: 2px;
user-select: none;
margin: 0 10px 10px 0;
cursor: pointer;
}
::v-deep .tag-group .el-tag {
min-width: 80px;
height: 28px;
line-height: 28px;
text-align: center;
box-sizing: border-box;
text-align: center;
padding: 0 15px;
font-size: 14px;
border-radius: 2px;
user-select: none;
margin: 0 10px 10px 0;
cursor: pointer;
border-radius: 4px;
}
::v-deep .tag-group .el-tag--light {
color: #000;
background-color: #fff;
border: 1px solid #dcdfe6;
}
::v-deep .el-checkbox__input.is-checked .el-checkbox__inner {
background-color: #22bf64;
border-color: #22bf64;
}
::v-deep .el-checkbox__input.is-checked + .el-checkbox__label {
color: #22bf64;
}
::v-deep .tag-group .el-tag--dark {
background: rgba(34, 191, 100, 0.1);
color: #22bf64;
border-color: #22bf64;
}
.no-search-result {
color: #888;
margin: 0 0 10px 7px;
}
.numberbox {
border: 1px solid #dcdfe6;
background-color: #fff;
color: #000;
min-height: 38px;
line-height: 38px;
text-align: center;
border-radius: 4px;
position: relative;
margin: 0 0 10px;
.reduce,
.add {
font-size: 28px;
color: #999;
height: 38px;
line-height: 38px;
text-align: center;
}
.input {
font-size: 30px;
display: flex;
overflow: hidden;
padding: 0 10px;
height: 50px;
border-top: 1px solid #dcdfe6;
border-bottom: 1px solid #dcdfe6;
input {
height: 100%;
width: 100%;
box-sizing: border-box;
outline: none;
justify-content: center;
border: none;
text-align: center;
}
}
}
.tag-group {
margin-top: 10px;
.tag-item {
margin-bottom: 20px;
.tag-name {
margin-bottom: 10px;
font-size: 12px;
color: #999;
}
}
}
.flex {
display: flex;
align-items: center;
}
.row-between {
justify-content: space-between;
}
.row-right {
justify-content: flex-end;
}
.none {
display: none !important;
}
.handle {
font-size: 18px;
color: #999;
&:hover {
cursor: grab;
}
}
.shop_info {
display: flex;
.info {
flex: 1;
padding-left: 8px;
display: flex;
flex-direction: column;
.tag_wrap {
display: flex;
}
}
}
.font-bold {
font-weight: bold;
}
.head-container .filter-item {
margin: 0 5px 0 0;
}
.diancan {
display: flex;
height: calc(100vh - 75px);
.choose-user {
padding: 10px 0;
border-bottom: 1px solid #ebebeb;
margin-bottom: 10px;
}
.order {
border-radius: 6px;
display: flex;
padding-left: 12px;
.bottom {
left: 0;
right: 0;
box-sizing: border-box;
padding: 14px;
bottom: 0;
background-color: #fff;
z-index: 10;
border-top: 1px solid #ebebeb;
}
.list {
width: 352px;
padding: 12px 12px 0 0;
}
.controls {
min-width: 106px;
width: 106px;
border-radius: 4px;
background-color: #f7f7fa;
padding: 14px 10px;
position: relative;
overflow-y: auto;
.btn {
border: 1px solid #dcdfe6;
background-color: #fff;
color: #000;
min-height: 38px;
line-height: 38px;
text-align: center;
border-radius: 4px;
position: relative;
cursor: pointer;
margin: 0 0 10px;
&.disabled {
color: #999;
pointer-events: none;
cursor: no-drop;
background-color: rgb(250, 250, 252);
}
}
}
.order-item {
padding: 4px;
border-radius: 2px;
display: flex;
cursor: pointer;
align-items: center;
justify-content: space-between;
background-color: rgba(0, 0, 0, 0);
transition: all 0.3s;
.pack {
right: 100%;
width: 18px;
height: 18px;
background: #35ac6a;
border-radius: 4px 0 4px 0;
font-size: 12px;
color: #fff;
text-align: center;
line-height: 17px;
}
&.active {
background-color: rgba(0, 0, 0, 0.04);
}
.total-price {
width: 94px;
text-align: right;
}
.good-info {
display: flex;
flex-direction: column;
justify-content: center;
min-width: 70px;
.specSnap {
color: #999;
font-size: 12px;
margin-top: 3px;
}
}
.name {
font-size: 13px;
text-align: left;
color: #212121;
overflow: hidden;
}
.img {
width: 40px;
height: 40px;
position: relative;
margin-right: 10px;
img {
width: 40px;
height: 40px;
}
}
}
}
.goods {
box-sizing: border-box;
flex: 1;
background-color: #f7f7fa;
margin-left: 20px;
padding: 0 15px 14px 15px;
overflow-x: hidden;
overflow-y: scroll;
.goods-list {
display: flex;
flex-wrap: wrap;
.goods-item {
position: relative;
cursor: pointer;
min-width: 98px;
max-width: 100px;
height: 100px;
// flex: 1;
margin: 0 7px 14px;
border-radius: 4px;
.timeSale {
text-align: center;
border-radius: 10px;
background-color: hsla(0, 0%, 99.2%, 0.5);
color: #fff;
font-size: 10px;
line-height: 16px;
padding: 2px 10px;
margin-top: 2px;
}
.sell-out {
width: 100%;
height: 100%;
padding: 10px;
background: rgba(0, 0, 0, 0.4);
z-index: 2;
position: absolute;
top: 0;
font-size: 14px;
font-weight: 400;
text-align: left;
color: #fff;
}
overflow: hidden;
position: relative;
.typeEnum {
position: absolute;
right: 0;
top: 0;
border-radius: 0 0 0 10px;
background-color: #46a6ff;
color: #fff;
padding: 2px 10px;
display: none;
}
.info {
font-size: 14px;
position: absolute;
inset: 0;
background: rgba(0, 0, 0, 0.4);
color: #fff;
box-sizing: border-box;
padding: 10px;
display: flex;
flex-direction: column;
justify-content: space-between;
}
.img-box {
width: 100%;
height: 100%;
position: relative;
}
.text-sell-out {
width: 100%;
justify-content: center;
height: 60px;
svg {
width: 60px;
height: 60px;
}
// z-index: 1;
// position: absolute;
// right: 0;
// top: 0;
}
.sell-out-svg {
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
background: rgba(0, 0, 0, 0.5);
display: flex;
justify-content: center;
align-items: center;
}
img {
width: 100%;
height: 100%;
}
&.layout-img-and-text {
min-width: 116px !important;
max-width: 136px !important;
height: 175px;
background-color: #fff;
display: flex;
flex-direction: column;
box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.07);
.img-box {
width: 136px;
}
img {
width: 136px;
height: 125px;
}
.info {
position: inherit;
background-color: #fff;
padding: 4px 4px 8px;
color: #000;
.name {
font-size: 15px;
font-weight: 600;
height: 20px;
line-height: 20px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
margin-bottom: 2px;
}
.price {
font-size: 13px;
}
}
}
&.layout-text {
margin: 0 5px 10px;
box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.08);
min-width: 128px !important;
max-width: 148px !important;
background-color: #fff;
height: auto;
.info {
background-color: #fff;
position: inherit;
color: #000;
.name {
font-weight: 600;
font-size: 15px;
color: #000;
line-height: 22px;
overflow: hidden;
text-overflow: ellipsis;
height: 44px;
}
.price {
font-weight: 600;
font-size: 16px;
margin: 6px 0 0;
}
}
img {
display: none;
}
}
&.layout-text.sell-out {
.info {
color: #c8c8c8;
.name {
color: #c8c8c8;
}
}
}
}
}
}
}
.carts {
flex-direction: column;
background: #fff;
height: 100%;
position: relative;
z-index: 10;
}
.carts .title,
.carts {
display: flex;
align-items: center;
width: 100%;
}
.carts .title {
justify-content: space-between;
height: 64px;
border-bottom: 1px solid #ebebeb;
padding: 20px;
padding-top: 30px;
}
.carts .title .left {
font-family: PingFangSC-Medium;
font-weight: 500;
font-size: 18px;
color: #000;
}
.carts .title .right {
font-size: 14.4px;
cursor: pointer;
}
.carts .box_status {
width: 370px;
height: 58px;
background: #fff;
border: 1px solid #dcdfe6;
border-radius: 4px;
display: flex;
justify-content: center;
align-items: center;
margin-top: 20px;
font-family: MicrosoftYaHei;
font-size: 20px;
color: rgba(0, 0, 0, 0.8);
letter-spacing: 1.25px;
text-align: center;
}
.carts .box_status span {
padding: 0 5px;
}
.number_list_box {
width: 370px;
background: #fff;
border-radius: 3px;
margin: 20px 0;
}
.submit {
width: 366px;
height: 44px;
background: #22bf64;
border-radius: 2px;
display: flex;
justify-content: center;
align-items: center;
font-size: 14px;
color: #fff;
font-family: PingFangSC-Regular;
font-weight: 400;
margin-bottom: 40px;
cursor: pointer;
}
.yd-keyboard {
justify-content: center;
margin-top: -8px;
margin-left: -8px;
}
.mini-number-box1 .mini-number,
.yd-keyboard {
display: flex;
flex-direction: column;
}
.mini-number-box1 .mini-number {
margin-left: 8px;
border: 1px solid #dcdfe6;
}
.mini-number-box1 .mini-number .key-line {
margin-top: 0;
}
.mini-number-box1 .mini-number .key {
width: 122px;
height: 60px;
-webkit-box-shadow: none;
box-shadow: none;
border-radius: 0;
margin-left: 0;
}
.mini-number-box1 .mini-number .key:not(:last-child) {
border-right: 1px solid #dcdfe6;
}
.mini-number-box1 .mini-number .key-line:not(:last-child) {
border-bottom: 1px solid #dcdfe6;
}
.mini-number-box2 {
display: flex;
justify-content: center;
}
.mini-number-box2 .key {
width: 80px;
height: 70px;
}
.mini-number-box2 .function-button {
display: flex;
flex-direction: column;
}
.mini-number-box2 .function-button .key {
margin-top: 8px;
}
.key-line {
margin-top: 8px;
}
.key,
.key-line {
display: flex;
justify-content: center;
}
.key {
width: 64px;
height: 64px;
background: #fff;
-webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.10196078431372549);
border-radius: 4px;
align-items: center;
margin-left: 8px;
font-family: PingFangSC-Regular;
font-weight: 400;
font-size: 20px;
color: rgba(0, 0, 0, 0.8);
text-align: center;
line-height: 34px;
box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.10196078431372549);
cursor: pointer;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.simple-Keyboard-number,
.simple-Keyboard-weight {
min-width: 410px;
position: absolute;
left: 0;
top: 0;
z-index: 999;
background: #fff;
-webkit-box-shadow: 12px 18px 20px 0 rgba(0, 0, 0, 0.23921568627450981);
box-shadow: 12px 18px 20px 0 rgba(0, 0, 0, 0.23921568627450981);
border-radius: 4px;
overflow: hidden;
}
.submit {
width: 366px;
height: 44px;
background: #22bf64;
border-radius: 2px;
display: flex;
justify-content: center;
align-items: center;
font-size: 14px;
color: #fff;
font-family: PingFangSC-Regular;
font-weight: 400;
margin-bottom: 40px;
cursor: pointer;
}
.disabled-box {
position: absolute;
inset: 0;
left: 0;
right: 0;
top: 0;
bottom: 0;
}
.cashier_box {
display: flex;
width: 100%;
padding-top: 14px;
flex: 1;
background: #f7f7fa;
position: relative;
margin: 0 24px 0 0;
border-radius: 4px;
overflow-y: auto;
}
.cashier_left .el-form-item {
margin-bottom: 0;
}
.cashier_left {
padding: 0 20px 0;
flex: 1;
min-width: 310px;
}
.cashier_left .title {
font-size: 18px;
color: #000;
font-weight: 600;
padding: 20px 0;
}
.cashier_left .detail_box {
background: #fff;
border-radius: 4px;
padding: 0 14px;
margin-bottom: 20px;
}
.cashier_left .detail_box .forms {
padding: 10px 0;
border-top: 1px solid #ebebeb;
}
.cashier_left .detail_box .usercard {
display: flex;
align-items: center;
width: 100%;
height: 80px;
cursor: pointer;
}
.cashier_left .detail_box .usercard .info {
margin-left: 10px;
display: flex;
flex-direction: column;
justify-content: space-around;
}
.cashier_left .detail_box .usercard .info .nickname {
display: flex;
align-items: center;
font-size: 16px;
}
.cashier_left .detail_box .usercard .info .nickname .txt {
max-width: 120px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
height: 25px;
line-height: 25px;
}
::v-deep .cashier_left .el-form-item__label {
text-align: left;
}
.cashier_left .detail_box .usercard .info .nickname .vip_level {
font-size: 12px;
padding: 0 5px;
background: #f7793d;
height: 20px;
line-height: 20px;
color: #fff;
border-radius: 4px;
}
.cashier_left .detail_box .usercard .info .other_info {
display: flex;
font-size: 14px;
color: #666;
}
.cashier_left .detail_box .usercard .info .other_info .item {
margin-right: 10px;
}
.cashier_right {
min-width: 250px;
border-left: 1px solid #ebebeb;
display: flex;
flex-direction: column;
padding-bottom: 20px;
}
.cashier_right .detail_form {
flex: 1;
overflow-y: auto;
}
.cashier_right .detail_form .detail_form_item {
display: flex;
justify-content: space-between;
position: relative;
margin-bottom: 16px;
align-items: center;
}
.cashier_right .detail_form .detail_form_item .left {
font-size: 14px;
color: #000;
letter-spacing: 1px;
}
.cashier_right .detail_form .detail_form_item .right {
font-size: 14px;
color: #000;
display: flex;
margin-right: 40px;
}
.cashier_right .detail_form .detail_form_item .right .btn {
font-size: 14px;
color: #1890ff;
margin-left: 10px;
cursor: pointer;
position: absolute;
right: 0;
}
.cashier_right .detail_form .detail_form_item .right .dfi_button {
display: flex;
justify-content: center;
align-items: center;
margin-left: 10px;
width: 98px;
height: 36px;
font-size: 14px;
color: rgba(0, 0, 0, 0.8);
background-color: #fff;
border: 1px solid #dcdfe6;
border-radius: 6px;
cursor: pointer;
}
.cashier_right .detail_form .detail_form_item .redfont {
color: #fa5555;
font-size: 20px;
}
.cashier_right .detail_form .line {
width: 100%;
height: 1px;
background: #ebebeb;
margin-top: 4px;
margin-bottom: 20px;
}
.cashier_right .pay_btn {
width: 100%;
line-height: 44px;
height: 44px;
background: #22bf64;
border-radius: 4px;
font-size: 14px;
text-align: center;
color: #fff;
letter-spacing: 1px;
cursor: pointer;
}
.cashier_right .pay_btn:hover {
opacity: 0.9;
}
.btn1 {
background: #22bf64;
color: #fff;
border: none;
}
.pay_btns .el-button + .el-button {
margin-left: 0;
}
.pay_btns .el-button {
margin-right: 10px;
margin-bottom: 10px;
}
.pay_btns .el-button:disabled {
border: 1px solid #dcdfe6;
}
</style>