You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
189 lines
5.7 KiB
C#
189 lines
5.7 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Drawing;
|
|
using System.Data;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Windows.Forms;
|
|
using POSV.Entity;
|
|
using System.Threading.Tasks;
|
|
using POSV.Forms;
|
|
using POSV.Component;
|
|
using POSV.Helper;
|
|
using POSV.MessageEvent;
|
|
|
|
namespace POSV.Tabs
|
|
{
|
|
[ToolboxItem(true)]
|
|
public partial class TableMenuItem : AbstractTabItem
|
|
{
|
|
public TableMenuItem()
|
|
{
|
|
InitializeComponent();
|
|
|
|
this.BackColor = Color.Transparent;
|
|
}
|
|
|
|
protected override void OnLoad(EventArgs e)
|
|
{
|
|
base.OnLoad(e);
|
|
|
|
if (this.DesignMode) return;
|
|
|
|
this.tableArea.TableAreaCheckedChanged += OnTableAreaCheckedChanged;
|
|
|
|
this.tableAttributeX.TableAttributeCheckedChanged += OnTableAttributeCheckedChanged;
|
|
|
|
this.tableX.TableCheckedChanged += OnTableCheckedChanged;
|
|
|
|
this.tableX.TableDoubleClick += OnTableDoubleClick;
|
|
|
|
Task.Factory.StartNew(() =>
|
|
{
|
|
this.Invoke(new Action(() =>
|
|
{
|
|
PreLoadTable(this.tableArea.SelectedTableArea,this.tableAttributeX.SelectedTableAttribute);
|
|
}));
|
|
});
|
|
}
|
|
|
|
public override void RefreshUi()
|
|
{
|
|
base.RefreshUi();
|
|
|
|
this.tableX.RefreshUi();
|
|
}
|
|
|
|
private void OnTableAttributeCheckedChanged(object sender , TableAttributeEventArgs e)
|
|
{
|
|
PreLoadTable(this.tableArea.SelectedTableArea , e.Data);
|
|
}
|
|
|
|
private void OnTableAreaCheckedChanged(object sender , Component.TableAreaEventArgs e)
|
|
{
|
|
PreLoadTable(e.Data , this.tableAttributeX.SelectedTableAttribute);
|
|
}
|
|
|
|
private void OnTableCheckedChanged(object sender , Component.TableEventArgs e)
|
|
{
|
|
this.lblTableNO.Text = string.Format(this.lblTableNO.Tag.ToString() , e.Table.Name);
|
|
}
|
|
|
|
private void OnTableDoubleClick(object sender , Component.TableEventArgs e)
|
|
{
|
|
var table = e.Table;
|
|
if(table != null)
|
|
{
|
|
//没有桌台使用信息,默认直接开台
|
|
if(table.TableExt == null)
|
|
{
|
|
OpenTable(table);
|
|
}
|
|
else
|
|
{
|
|
//更具桌台不同状态处理
|
|
switch (table.TableExt.TableStatus)
|
|
{
|
|
case TableStatus.空闲:
|
|
{
|
|
OpenTable(table);
|
|
}
|
|
break;
|
|
case TableStatus.在用:
|
|
{
|
|
OrderDishes(table);
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 点菜操作界面
|
|
/// </summary>
|
|
private void OrderDishes(Table table)
|
|
{
|
|
MsgEvent.Send(Constant.TABLE_ORDER_DISHS_NOTIFY , table);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 开台操作界面
|
|
/// </summary>
|
|
private void OpenTable(Table table)
|
|
{
|
|
var dialogForm = new OpenTableForm(table);
|
|
|
|
dialogForm.AcceptButtonClick += (o , args) => {
|
|
|
|
if (args.Action == TransparentAction.Accept && args.KeyCode == "accept")
|
|
{
|
|
var data = args.Data as Table;
|
|
|
|
this.tableX.ChangedStyle(data);
|
|
}
|
|
};
|
|
|
|
dialogForm.CancelButtonClick += (o , args) => { };
|
|
|
|
var trans = new TransparentForm(this.FindForm() , .4 , dialogForm);
|
|
trans.Show(this);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 预加载桌台信息
|
|
/// </summary>
|
|
/// <param name="sql"></param>
|
|
/// <param name="action"></param>
|
|
private void PreLoadTable(TableArea tableArea ,TableAttribute tableAttribute , KeyboardAction action = KeyboardAction.None)
|
|
{
|
|
try
|
|
{
|
|
var lists = new List<Table>();
|
|
|
|
string sql = SqlConstant.TableExtAll;
|
|
//桌台人数选择
|
|
if (!Constant.ALL_TABLE_TAG.Equals(tableAttribute.Id))
|
|
{
|
|
sql += string.Format(" and t.number {0} ",tableAttribute.Expression);
|
|
}
|
|
//桌台区域
|
|
if (!Constant.ALL_TABLE_TAG.Equals(tableArea.No))
|
|
{
|
|
sql += string.Format(" and t.areaId = '{0}' ",tableArea.Id);
|
|
}
|
|
//桌台状态
|
|
var status = (TableStatus)tableAttribute.TableStatus;
|
|
switch (status)
|
|
{
|
|
case TableStatus.在用:
|
|
case TableStatus.预订:
|
|
{
|
|
sql += string.Format(" and e.tableStatus = {0} " , tableAttribute.TableStatus);
|
|
}
|
|
break;
|
|
case TableStatus.空闲:
|
|
{
|
|
sql += string.Format(" and e.tableStatus is null ");
|
|
}
|
|
break;
|
|
}
|
|
|
|
using (var db = Global.Instance.OpenDataBase)
|
|
{
|
|
lists = db.Fetch<Table>(sql);
|
|
}
|
|
|
|
this.tableX.PageNumber = 1;
|
|
|
|
this.tableX.BindDataSource(lists , action);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
LOGGER.Error(ex , "加载桌台信息异常");
|
|
}
|
|
}
|
|
}
|
|
}
|