Files
zhangmenu/static/js/state.js
T
DeveloperandClaude Opus 4.6 0a50c09dba Initial commit - Zhangmenu Django project
A menu management application built with Django, featuring:
- Dish management with cover images
- Order system with party dates and participants
- REST API with Django REST Framework
- Bootstrap-styled frontend

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 11:27:23 +08:00

79 lines
1.8 KiB
JavaScript

// 状态管理
const state = {
currentPage: 'menu',
categories: [],
dishes: [],
orders: [],
currentCategory: '',
currentOrderFilter: '',
dishCompletedCounts: {},
// 设置状态
setPage(page) {
this.currentPage = page;
},
setCategories(categories) {
this.categories = categories;
},
setDishes(dishes) {
this.dishes = dishes;
},
setOrders(orders) {
this.orders = orders;
},
setCurrentCategory(category) {
this.currentCategory = category;
},
setCurrentOrderFilter(filter) {
this.currentOrderFilter = filter;
},
setDishCompletedCounts(counts) {
this.dishCompletedCounts = counts;
},
// 获取过滤后的数据
getFilteredDishes() {
let filtered = this.dishes;
if (this.currentCategory) {
filtered = filtered.filter(d => d.category_name === this.currentCategory);
}
return filtered;
},
getFilteredOrders() {
let filtered = this.orders;
if (this.currentOrderFilter) {
filtered = filtered.filter(o => o.status === this.currentOrderFilter);
}
return filtered;
},
// 获取菜品在当前订单中的状态
isDishInCurrentOrder(dishId) {
const currentOrder = this.orders.find(o => o.status === 'in_progress');
if (!currentOrder) return false;
return currentOrder.dishes && currentOrder.dishes.includes(dishId);
},
// 获取当前进行中的订单
getCurrentOrder() {
return this.orders.find(o => o.status === 'in_progress');
},
// 重置状态
reset() {
this.currentPage = 'menu';
this.currentCategory = '';
this.currentOrderFilter = '';
}
};
// 导出供全局使用
window.AppState = state;