1.新增商品编辑
This commit is contained in:
@@ -12,7 +12,9 @@
|
||||
<div class="info">
|
||||
<div class="master_id">
|
||||
<span>{{ props.masterId }}</span>
|
||||
<span class="member_info" v-if="memberInfo.telephone">会员:{{ memberInfo.telephone }}</span>
|
||||
<span class="member_info" v-if="global.orderMemberInfo.telephone">
|
||||
会员:{{ global.orderMemberInfo.telephone }}
|
||||
</span>
|
||||
</div>
|
||||
<div class="btm">
|
||||
<span class="p">服务员:{{ store.userInfo.loginAccount || "暂无" }}</span>
|
||||
@@ -59,7 +61,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="pay_wrap">
|
||||
<payCard :amount="props.amount" :member="props.member" :orderId="props.orderInfo.id" @paySuccess="paySuccess" />
|
||||
<payCard :amount="props.amount" :orderId="props.orderInfo.id" @paySuccess="paySuccess" />
|
||||
</div>
|
||||
</div>
|
||||
</el-drawer>
|
||||
@@ -78,8 +80,10 @@ import useStorage from '@/utils/useStorage'
|
||||
import { ipcRenderer } from "electron";
|
||||
import { formatDecimal } from '@/utils/index.js'
|
||||
import receiptPrint from "@/components/lodop/receiptPrint.js";
|
||||
|
||||
import { useGlobal } from '@/store/global.js'
|
||||
import { usePrint } from '@/store/print.js'
|
||||
|
||||
const global = useGlobal()
|
||||
const printStore = usePrint()
|
||||
|
||||
const store = useUser();
|
||||
@@ -215,37 +219,21 @@ async function printOrderLable() {
|
||||
|
||||
// 订单已支付
|
||||
function paySuccess() {
|
||||
useStorage.del('memberInfo')
|
||||
dialogVisible.value = false;
|
||||
global.setOrderMember({})
|
||||
global.setOrderTable({})
|
||||
printOrderLable()
|
||||
|
||||
emit("paySuccess");
|
||||
}
|
||||
|
||||
function show() {
|
||||
dialogVisible.value = true;
|
||||
getLocalMemberInfo()
|
||||
}
|
||||
|
||||
defineExpose({
|
||||
show,
|
||||
});
|
||||
|
||||
|
||||
const memberInfo = ref('')
|
||||
|
||||
// 从本地获取会员信息
|
||||
function getLocalMemberInfo() {
|
||||
let localMemberInfo = useStorage.get('memberInfo')
|
||||
if (localMemberInfo && localMemberInfo.telephone) {
|
||||
memberInfo.value = localMemberInfo
|
||||
} else {
|
||||
memberInfo.value = ''
|
||||
}
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
getLocalMemberInfo()
|
||||
});
|
||||
</script>
|
||||
|
||||
<style>
|
||||
|
||||
@@ -11,7 +11,8 @@
|
||||
<div class="number" @click="takeFoodCodeRef.show()">
|
||||
<el-text class="t">{{ masterId }}</el-text>
|
||||
</div>
|
||||
<div class="select_user" @click="fastCashierRef.show()" v-if="!memberInfo.telephone">
|
||||
<div class="select_user" @click="fastCashierRef.show()"
|
||||
v-if="!global.orderMemberInfo.telephone && !global.tableInfo.id">
|
||||
<div class="left">
|
||||
<el-icon class="icon">
|
||||
<WalletFilled />
|
||||
@@ -27,7 +28,12 @@
|
||||
<el-icon class="icon">
|
||||
<UserFilled />
|
||||
</el-icon>
|
||||
<el-text class="t">{{ memberInfo.telephone }}</el-text>
|
||||
<div class="t_wrap" :class="{ 'big_text': global.orderMemberInfo.telephone && global.tableInfo.id }">
|
||||
<div class="t" v-if="global.orderMemberInfo.telephone">
|
||||
会员:{{ global.orderMemberInfo.telephone }}
|
||||
</div>
|
||||
<div class="t" v-if="global.tableInfo.id">台桌:{{ global.tableInfo.name }}</div>
|
||||
</div>
|
||||
</div>
|
||||
<el-icon class="arrow">
|
||||
<Close />
|
||||
@@ -116,7 +122,7 @@
|
||||
<takeFoodCode ref="takeFoodCodeRef" title="修改取餐号" placeholder="请输入取餐号" @success="takeFoodCodeSuccess" />
|
||||
<!-- 结算订单 -->
|
||||
<settleAccount ref="settleAccountRef" :cart="cartList" :amount="cartInfo.totalAmount" :remark="remark"
|
||||
:masterId="masterId" :orderInfo="orderInfo" :member="memberInfo" @paySuccess="createCodeAjax(1)" />
|
||||
:masterId="masterId" :orderInfo="orderInfo" @paySuccess="createCodeAjax(1)" />
|
||||
<!-- 快捷收银 -->
|
||||
<fastCashier ref="fastCashierRef" type="0" />
|
||||
<!-- 挂起订单 -->
|
||||
@@ -132,6 +138,7 @@ export default {
|
||||
import { onMounted, ref } from "vue";
|
||||
import { useRoute } from 'vue-router'
|
||||
import { useUser } from "@/store/user.js";
|
||||
import { useGlobal } from '@/store/global.js'
|
||||
import remarkModal from "@/components/remarkModal.vue";
|
||||
import takeFoodCode from "@/components/takeFoodCode.vue";
|
||||
import cartOperation from "@/views/home/components/cartOperation.vue";
|
||||
@@ -155,6 +162,8 @@ import {
|
||||
import goods from "@/views/home/components/goods.vue";
|
||||
import member from "@/views/member/index.vue";
|
||||
|
||||
const global = useGlobal()
|
||||
|
||||
const route = useRoute()
|
||||
|
||||
const membershow = ref(false);
|
||||
@@ -177,8 +186,6 @@ const cartLoading = ref(false);
|
||||
const orderInfo = ref({});
|
||||
const createOrderLoading = ref(false);
|
||||
|
||||
const memberInfo = ref({})
|
||||
|
||||
// 取餐码
|
||||
const masterId = ref("");
|
||||
|
||||
@@ -310,6 +317,7 @@ async function addCart(params, type = "add") {
|
||||
const res = await createCart({
|
||||
productId: params.productId,
|
||||
masterId: masterId.value,
|
||||
tableId: global.tableInfo.id || '',
|
||||
shopId: store.userInfo.shopId,
|
||||
skuId: type == "add" ? params.id : params.skuId,
|
||||
number: params.number || 1,
|
||||
@@ -374,7 +382,6 @@ async function createCodeAjax(type = "0") {
|
||||
});
|
||||
masterId.value = res.code;
|
||||
queryCartAjax();
|
||||
getLocalMemberInfo()
|
||||
|
||||
if (type == 1) {
|
||||
// 结算订单 清楚商品所有红点
|
||||
@@ -385,25 +392,14 @@ async function createCodeAjax(type = "0") {
|
||||
}
|
||||
}
|
||||
|
||||
// 从本地获取会员信息
|
||||
function getLocalMemberInfo() {
|
||||
let localMemberInfo = useStorage.get('memberInfo')
|
||||
if (localMemberInfo && localMemberInfo.telephone) {
|
||||
memberInfo.value = localMemberInfo
|
||||
} else {
|
||||
memberInfo.value = {}
|
||||
}
|
||||
}
|
||||
|
||||
// 清除本地会员
|
||||
// 清除本地会员/台桌信息
|
||||
function clearMember() {
|
||||
useStorage.del('memberInfo')
|
||||
getLocalMemberInfo()
|
||||
global.setOrderMember({})
|
||||
global.setOrderTable({})
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
createCodeAjax();
|
||||
getLocalMemberInfo()
|
||||
});
|
||||
</script>
|
||||
|
||||
@@ -459,7 +455,7 @@ onMounted(() => {
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
background-color: var(--el-color-info-light-8);
|
||||
padding: 0 var(--el-font-size-base);
|
||||
padding: 0 10px;
|
||||
|
||||
.left {
|
||||
display: flex;
|
||||
@@ -470,6 +466,18 @@ onMounted(() => {
|
||||
font-size: 20px;
|
||||
}
|
||||
|
||||
.t_wrap {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: flex-start;
|
||||
|
||||
&.big_text {
|
||||
.t {
|
||||
font-size: 12px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.t {
|
||||
font-size: var(--el-font-size-base);
|
||||
margin-left: 4px;
|
||||
|
||||
@@ -418,8 +418,10 @@ const createMembermemberSubmit = async () => { ///添加会员
|
||||
}
|
||||
const moneys = ref('')// 钱数
|
||||
|
||||
// 创建会员订单
|
||||
const toHome = () => {
|
||||
useStorage.set('memberInfo', tableData.list[datarow.value])
|
||||
// useStorage.set('memberInfo', tableData.list[datarow.value])
|
||||
global.setOrderMember(tableData.list[datarow.value])
|
||||
router.push({
|
||||
name: 'home'
|
||||
})
|
||||
|
||||
@@ -20,8 +20,10 @@
|
||||
</div>
|
||||
<div class="demo_tabs_boxitem_onetow">
|
||||
<div style="font-size: 16px; color: #757575;">{{ item.orderNo }}</div>
|
||||
<div>
|
||||
<span>{{ item.names && item.names[0] }} </span>
|
||||
<div class="order_info">
|
||||
<span class="sp1">{{
|
||||
item.names &&
|
||||
item.names[0] }} </span>
|
||||
<span style="margin-left: 6px;">{{ item.names && item.names.length }}项</span>
|
||||
</div>
|
||||
</div>
|
||||
@@ -115,6 +117,19 @@ const clickitemboxshow = (e) => {
|
||||
justify-content: space-around;
|
||||
flex: 1;
|
||||
margin-left: 20px;
|
||||
|
||||
.order_info {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
.sp1 {
|
||||
display: inline-block;
|
||||
width: 100px;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
overflow: hidden;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1091,8 +1091,8 @@ onMounted(() => {
|
||||
|
||||
.tableDataclass {
|
||||
width: 100%;
|
||||
overflow: auto;
|
||||
height: 90%;
|
||||
overflow-y: auto;
|
||||
height: 70%;
|
||||
|
||||
.orderbox_right_item {
|
||||
margin-top: 6px;
|
||||
|
||||
@@ -16,21 +16,67 @@
|
||||
<span class="t">{{ status[props.tableInfo.status] }}</span>
|
||||
</div>
|
||||
<div class="place_order">
|
||||
<router-link class="btn" :to="{ name: 'home', query: { table_code: 1 } }">
|
||||
<div class="btn">
|
||||
<div class="top">
|
||||
<el-icon class="icon">
|
||||
<TakeawayBox />
|
||||
</el-icon>
|
||||
<span class="t">点单</span>
|
||||
</div>
|
||||
<span class="tips">开始新订单</span>
|
||||
</router-link>
|
||||
<!-- <span class="tips">开始新订单</span> -->
|
||||
<div class="btn_wrap">
|
||||
<el-button type="primary" style="width: 100%;" @click="toOrderMeal(1)">直接点单</el-button>
|
||||
</div>
|
||||
<div class="btn_wrap">
|
||||
<el-button type="primary" style="width: 100%;" @click="toOrderMeal(2)">选择会员点单</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<el-dialog :title="`台桌:${props.tableInfo.name} - 选择会员`" v-model="showDialog" width="80%">
|
||||
<el-form inline>
|
||||
<el-form-item>
|
||||
<el-input placeholder="请输入手机号搜索会员" v-model="tableData.phone" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="getMemberList">搜索</el-button>
|
||||
<el-button @click="resetTable">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-table :data="tableData.list" height="300px" border stripe v-loading="tableData.loading">
|
||||
<el-table-column prop="name" label="昵称" width="120px" />
|
||||
<el-table-column prop="telephone" label="手机" width="150px" />
|
||||
<el-table-column prop="code" label="编号" width="120px" />
|
||||
<el-table-column prop="level" label="等级" />
|
||||
<el-table-column prop="levelConsume" label="积分" />
|
||||
<el-table-column prop="amount" label="余额" width="100px">
|
||||
<template v-slot="scope">
|
||||
¥{{ formatDecimal(scope.row.amount) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="120px">
|
||||
<template v-slot="scope">
|
||||
<el-button type="primary" @click="toHomeMember(scope.row)">选择</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<el-pagination layout="prev, pager, next, total" background style="margin-top: 20px;"
|
||||
:total="Number(tableData.total)" v-model:current-page="tableData.page"
|
||||
@current-change="getMemberList" />
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref } from 'vue'
|
||||
import { ref, reactive } from 'vue'
|
||||
import { useRouter } from 'vue-router'
|
||||
import { useUser } from "@/store/user.js"
|
||||
import { useGlobal } from '@/store/global.js'
|
||||
import { queryMembermember } from '@/api/member/index.js'
|
||||
import { formatDecimal } from '@/utils/index.js'
|
||||
|
||||
const router = useRouter()
|
||||
const global = useGlobal()
|
||||
const store = useUser()
|
||||
|
||||
const emit = defineEmits(['close'])
|
||||
|
||||
@@ -52,6 +98,65 @@ const status = ref({
|
||||
function close() {
|
||||
emit('close')
|
||||
}
|
||||
|
||||
// 点单
|
||||
function toOrderMeal(t) {
|
||||
if (t == 1) {
|
||||
// 直接点单
|
||||
global.setOrderTable(props.tableInfo)
|
||||
router.push({
|
||||
name: 'home',
|
||||
})
|
||||
} else {
|
||||
// 选择会员点单
|
||||
showDialog.value = true
|
||||
getMemberList()
|
||||
}
|
||||
}
|
||||
|
||||
const showDialog = ref(false)
|
||||
const tableData = reactive({
|
||||
phone: '',
|
||||
loading: false,
|
||||
list: [],
|
||||
page: 1,
|
||||
size: 10,
|
||||
total: 0
|
||||
})
|
||||
|
||||
// 重置表格
|
||||
function resetTable() {
|
||||
tableData.phone = ''
|
||||
tableData.page = 1
|
||||
getMemberList()
|
||||
}
|
||||
|
||||
// 获取会员列表
|
||||
async function getMemberList() {
|
||||
try {
|
||||
tableData.loading = true
|
||||
const res = await queryMembermember({
|
||||
shopId: store.userInfo.shopId,
|
||||
phone: tableData.phone,
|
||||
page: tableData.page,
|
||||
pageSize: tableData.size
|
||||
})
|
||||
tableData.loading = false
|
||||
tableData.list = res.list
|
||||
tableData.total = res.total
|
||||
} catch (error) {
|
||||
console.log(error);
|
||||
}
|
||||
}
|
||||
|
||||
// 选择会员去下单
|
||||
function toHomeMember(row) {
|
||||
global.setOrderTable(props.tableInfo)
|
||||
global.setOrderMember(row)
|
||||
router.push({
|
||||
name: 'home',
|
||||
})
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
@@ -104,17 +209,21 @@ function close() {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
|
||||
.btn {
|
||||
display: flex;
|
||||
gap: 10px;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
text-decoration: none;
|
||||
$size: 150px;
|
||||
|
||||
.top {
|
||||
background-color: var(--el-color-danger);
|
||||
width: 130px;
|
||||
height: 130px;
|
||||
width: $size;
|
||||
height: $size;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
@@ -135,6 +244,10 @@ function close() {
|
||||
color: #999;
|
||||
padding-top: 6px;
|
||||
}
|
||||
|
||||
.btn_wrap {
|
||||
width: $size;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user