This commit is contained in:
gyq
2025-12-02 10:27:55 +08:00
parent d3340eb953
commit f514b75128
4 changed files with 30 additions and 24 deletions

View File

@@ -1,15 +1,20 @@
<template> <template>
<div class="container"> <div class="container">
<router-view /> <el-config-provider :size="globalSize">
<router-view />
</el-config-provider>
</div> </div>
</template> </template>
<script setup> <script setup>
import { createPinia } from 'pinia' import { createPinia } from 'pinia'
import { useSocketStore } from '@/stores/socket'; import { useSocketStore } from '@/stores/socket';
import { ElConfigProvider } from 'element-plus'
const pinia = createPinia() const pinia = createPinia()
const globalSize = 'large'
onMounted(() => { onMounted(() => {
// 重启或刷新防止ws丢失 // 重启或刷新防止ws丢失
const socketStore = useSocketStore(pinia) const socketStore = useSocketStore(pinia)

View File

@@ -8,7 +8,9 @@ export const useUserStore = defineStore('user', {
token: '', token: '',
shopInfo: '', shopInfo: '',
shopStaff: '', shopStaff: '',
account: '' loginType: 0,
account: '',
staffAccount: ''
}), }),
actions: { actions: {
async login(params) { async login(params) {
@@ -21,7 +23,9 @@ export const useUserStore = defineStore('user', {
if (res.loginType == 1) this.shopStaff = res.shopStaff if (res.loginType == 1) this.shopStaff = res.shopStaff
// async 函数直接返回值即可 resolve // async 函数直接返回值即可 resolve
this.loginType = params.loginType
this.account = params.username this.account = params.username
this.staffAccount = params.staffUserName
return res return res
} else { } else {
ElMessage.error('先下单模式下不可登录,请联系管理员') ElMessage.error('先下单模式下不可登录,请联系管理员')
@@ -71,7 +75,7 @@ export const useUserStore = defineStore('user', {
{ {
key: 'kitchen-user', key: 'kitchen-user',
storage: localStorage, storage: localStorage,
paths: ['token', 'shopInfo', 'shopStaff', 'account'] // 持久化指定状态 paths: ['token', 'shopInfo', 'shopStaff', 'loginType', 'account', 'staffAccount'] // 持久化指定状态
} }
] ]
} }

View File

@@ -49,15 +49,17 @@
</div> </div>
<div class="table_list_wrap" v-if="checkType == 1"> <div class="table_list_wrap" v-if="checkType == 1">
<div class="item list" :class="{ empty: tableList.length <= 0 }"> <div class="item list" :class="{ empty: tableList.length <= 0 }">
<div class="tab_item" v-for="item in tableList" :key="item.orderId" @click="changeTableItem(item)"> <div class="tab_item" :class="{ active: selectItem.orderId === item.orderId }" v-for="item in tableList"
:key="item.orderId" @click="changeTableItem(item)">
<div class="tab_header_wrap"> <div class="tab_header_wrap">
{{ item.tableName }} | {{ item.areaName }} {{ item.tableName }} | {{ item.areaName }}
</div> </div>
<div class="content"> <div class="content">
<div class="btn_wrap"> <div class="btn_wrap">
<div class="btn"> <div class="btn">
<el-button type="primary" style="width: 100%;">待出菜{{ item.pendingDishCount <el-button :type="selectItem.orderId === item.orderId ? 'danger' : 'primary'"
}}</el-button> style="width: 100%;">待出菜{{ item.pendingDishCount
}}</el-button>
</div> </div>
</div> </div>
<!-- <div class="people_wrap"> <!-- <div class="people_wrap">
@@ -84,7 +86,6 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="用时" prop="time_taken"></el-table-column> <el-table-column label="用时" prop="time_taken"></el-table-column>
<el-table-column label="下单时间" prop="orderTime"></el-table-column>
<el-table-column label="状态" prop="subStatus" width="150"> <el-table-column label="状态" prop="subStatus" width="150">
<template v-slot="scope"> <template v-slot="scope">
<el-tag disable-transitions :type="statusFilter(scope.row.subStatus).type" size="large"> <el-tag disable-transitions :type="statusFilter(scope.row.subStatus).type" size="large">
@@ -264,10 +265,12 @@ async function getKitchenTableAjax() {
}) })
tableList.value = res tableList.value = res
if (res.length > 0) { if (res.length > 0) {
if (!selectItem.value.id) { if (!selectItem.value.orderId) {
selectItem.value = res[0] selectItem.value = res[0]
} }
getKitchenTableFoodsAjax() getKitchenTableFoodsAjax()
console.log(selectItem.value);
} else { } else {
selectItem.value = {} selectItem.value = {}
tableData.list = [] tableData.list = []
@@ -413,9 +416,6 @@ function statusFilter(status) {
// 刷新所有数据的状态 // 刷新所有数据的状态
function updateOrderStatus() { function updateOrderStatus() {
// console.log('刷新所有数据的状态.tableData.list', tableData.list);
// console.log('刷新所有数据的状态.goodsTableData.value', goodsTableData.value);
if (checkType.value == 1) { if (checkType.value == 1) {
// 刷新按台桌查看的数据 // 刷新按台桌查看的数据
tableData.list.forEach(item => { tableData.list.forEach(item => {
@@ -457,7 +457,7 @@ function timeTakenUtils(row) {
} }
// 上菜用时 // 上菜用时
if (row.subStatus == 'DELIVERED') { if (row.subStatus == 'DELIVERED') {
return formatTimeDiff(row.foodServeTime) return formatTimeDiff(row.startOrderTime, row.foodServeTime)
} }
} }
@@ -465,8 +465,6 @@ function timeTakenUtils(row) {
const timer = ref(null) const timer = ref(null)
function startUpdate() { function startUpdate() {
if (userStore.shopInfo.isServeTimeControl && (goodsTableData.length || tableData.list.length)) { if (userStore.shopInfo.isServeTimeControl && (goodsTableData.length || tableData.list.length)) {
console.log('启动刷新');
// 只有开启的情况下调用 // 只有开启的情况下调用
updateOrderStatus() updateOrderStatus()
if (timer.value !== null) { if (timer.value !== null) {
@@ -612,17 +610,16 @@ onUnmounted(() => {
.tab_item { .tab_item {
height: 150px; height: 150px;
background-color: #3F9EFF; background-color: var(--el-color-primary);
padding: 7px; padding: 7px;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
border-radius: 8px; border-radius: 8px;
overflow: hidden; overflow: hidden;
transition: all 0.3s ease-in-out;
&.active { &.active {
transform: translateY(-10px) scale(1.1); background-color: var(--el-color-danger);
box-shadow: 0 10px 20px rgba(0, 0, 0, 0.15);
} }
.tab_header_wrap { .tab_header_wrap {

View File

@@ -23,15 +23,15 @@
<el-form ref="formRef" :model="form" :rules="rules"> <el-form ref="formRef" :model="form" :rules="rules">
<el-form-item prop="username"> <el-form-item prop="username">
<el-input v-model="form.username" clearable prefix-icon="User" size="large" :maxlength="20" <el-input v-model="form.username" clearable prefix-icon="User" size="large" :maxlength="20"
placeholder="请输入用户名/手机号"></el-input> placeholder="请输入商户号"></el-input>
</el-form-item> </el-form-item>
<el-form-item prop="staffUserName" v-if="form.loginType == 1"> <el-form-item prop="staffUserName" v-if="form.loginType == 1">
<el-input v-model="form.staffUserName" clearable prefix-icon="User" size="large" <el-input v-model="form.staffUserName" clearable prefix-icon="User" size="large"
:maxlength="20" placeholder="请输入员工用户名/手机号"></el-input> :maxlength="20" placeholder="请输入员工号"></el-input>
</el-form-item> </el-form-item>
<el-form-item prop="password"> <el-form-item prop="password">
<el-input v-model="form.password" clearable prefix-icon="Lock" size="large" :maxlength="20" <el-input v-model="form.password" type="password" clearable prefix-icon="Lock" size="large"
placeholder="请输入登录密码"></el-input> :maxlength="20" placeholder="请输入登录密码"></el-input>
</el-form-item> </el-form-item>
<el-form-item prop="code"> <el-form-item prop="code">
<div class="ipt_wrap"> <div class="ipt_wrap">
@@ -66,10 +66,10 @@ const router = useRouter()
const formRef = ref(null) const formRef = ref(null)
const loading = ref(false) const loading = ref(false)
const form = ref({ const form = ref({
loginType: 0, // 登录类型 0:商户登录 1:员工登录 loginType: userStore.loginType, // 登录类型 0:商户登录 1:员工登录
username: userStore.account, username: userStore.account,
password: '', password: '',
staffUserName: '', staffUserName: userStore.staffAccount,
code: '', code: '',
uuid: '' uuid: ''
}) })