Selaa lähdekoodia

继续做正餐

张洋 3 vuotta sitten
vanhempi
commit
a32686d991

+ 11 - 5
bin/Win32/Debug/zhipuzi_pos_windows/skin/zhengcan_diandan_page.xml

@@ -47,16 +47,22 @@
 						<Control width="1" bkcolor="#FFEBE8E8"></Control>
 						
 						<VerticalLayout width="110" padding="0,0,0,0" vscrollbar="true">
+							<Button name="btn_diandan_tuicai" width="90" height="46" padding="10,50,10,0" text="退菜" normalimage="file='Btn_White.png' corner='5,5,5,5'" hotimage="file='Btn_White_Hover.png' corner='5,5,5,5'" pushedimage="file='Btn_White_Click.png' corner='5,5,5,5'" />
+						
 							<Button name="btn_diandan_jia" width="90" height="46" padding="10,50,10,0" text="+" font="24" normalimage="file='Btn_White.png' corner='5,5,5,5'" hotimage="file='Btn_White_Hover.png' corner='5,5,5,5'" pushedimage="file='Btn_White_Click.png' corner='5,5,5,5'" />
 							<Button name="btn_diandan_jian" width="90" height="46" padding="10,15,10,0" text="-" font="24" normalimage="file='Btn_White.png' corner='5,5,5,5'" hotimage="file='Btn_White_Hover.png' corner='5,5,5,5'" pushedimage="file='Btn_White_Click.png' corner='5,5,5,5'" />
 							<Button name="btn_diandan_shanchu" width="90" height="46" padding="10,15,10,0" text="删除" normalimage="file='Btn_White.png' corner='5,5,5,5'" hotimage="file='Btn_White_Hover.png' corner='5,5,5,5'" pushedimage="file='Btn_White_Click.png' corner='5,5,5,5'" />
-							<Button name="btn_diandan_guige" width="90" height="46" padding="10,30,10,0" text="规格/做法" normalimage="file='Btn_White.png' corner='5,5,5,5'" hotimage="file='Btn_White_Hover.png' corner='5,5,5,5'" pushedimage="file='Btn_White_Click.png' corner='5,5,5,5'" />
+							<Button name="btn_diandan_guige" width="90" height="46" padding="10,15,10,0" text="规格/做法" normalimage="file='Btn_White.png' corner='5,5,5,5'" hotimage="file='Btn_White_Hover.png' corner='5,5,5,5'" pushedimage="file='Btn_White_Click.png' corner='5,5,5,5'" />
 							
 							<Button name="btn_diandan_dabao" width="90" height="46" padding="10,15,10,0" text="打包" normalimage="file='Btn_White.png' corner='5,5,5,5'" hotimage="file='Btn_White_Hover.png' corner='5,5,5,5'" pushedimage="file='Btn_White_Click.png' corner='5,5,5,5'" />
 							
 							<Button name="btn_diandan_zhengdanbeizhu" width="90" height="46" padding="10,15,10,0" text="整单备注" normalimage="file='Btn_White.png' corner='5,5,5,5'" hotimage="file='Btn_White_Hover.png' corner='5,5,5,5'" pushedimage="file='Btn_White_Click.png' corner='5,5,5,5'" />
 							
-							<Button name="btn_diandan_qianxiang" width="90" height="46" padding="10,50,10,30" text="打开钱箱" normalimage="file='Btn_White.png' corner='5,5,5,5'" hotimage="file='Btn_White_Hover.png' corner='5,5,5,5'" pushedimage="file='Btn_White_Click.png' corner='5,5,5,5'" />
+							<Button name="btn_diandan_chetai" width="90" height="46" padding="10,15,10,0" text="撤台" normalimage="file='Btn_White.png' corner='5,5,5,5'" hotimage="file='Btn_White_Hover.png' corner='5,5,5,5'" pushedimage="file='Btn_White_Click.png' corner='5,5,5,5'" />
+							<Button name="btn_diandan_huantai" width="90" height="46" padding="10,15,10,0" text="换台" normalimage="file='Btn_White.png' corner='5,5,5,5'" hotimage="file='Btn_White_Hover.png' corner='5,5,5,5'" pushedimage="file='Btn_White_Click.png' corner='5,5,5,5'" />
+							<!--
+							<Button name="btn_diandan_qianxiang" width="90" height="46" padding="10,15,10,0" text="打开钱箱" normalimage="file='Btn_White.png' corner='5,5,5,5'" hotimage="file='Btn_White_Hover.png' corner='5,5,5,5'" pushedimage="file='Btn_White_Click.png' corner='5,5,5,5'" />
+							-->
 						</VerticalLayout>
 					</HorizontalLayout>
 					
@@ -69,13 +75,13 @@
 						</HorizontalLayout>
 						
 						<HorizontalLayout height="75" name="diandan_pay_layout">
-							<Button name="btn_diandan_xiadan" text="下单" height="75" width="230" padding="10,0,0,15" textcolor="#FFFFFFFF" normalimage="file='Dialog_Btn3.png' corner='5,5,5,5'" hotimage="file='Dialog_Btn3_Hover.png' corner='5,5,5,5'" pushedimage="file='Dialog_Btn3_Click.png' corner='5,5,5,5'"></Button>
-
 							<Button name="btn_diandan_pay" text="结账" height="75" width="230" padding="10,0,0,15" normalimage="file='Dialog_Btn1.png' corner='5,5,5,5'" hotimage="file='Dialog_Btn1_Hover.png' corner='5,5,5,5'" pushedimage="file='Dialog_Btn1_Click.png' corner='5,5,5,5'"></Button>
+							
+							<Button name="btn_diandan_xiadan" text="下单" height="75" width="230" padding="10,0,0,15" textcolor="#FFFFFFFF" normalimage="file='Dialog_Btn3.png' corner='5,5,5,5'" hotimage="file='Dialog_Btn3_Hover.png' corner='5,5,5,5'" pushedimage="file='Dialog_Btn3_Click.png' corner='5,5,5,5'"></Button>
 						</HorizontalLayout>
 						
 						<HorizontalLayout height="75" name="jiesuan_pay_layout" visible="false">							
-							<Button name="btn_diandan_jixujiacai" text="加菜" height="75" width="230" padding="10,0,0,15" textcolor="#FFFFFFFF" normalimage="file='Dialog_Btn3.png' corner='5,5,5,5'" hotimage="file='Dialog_Btn3_Hover.png' corner='5,5,5,5'" pushedimage="file='Dialog_Btn3_Click.png' corner='5,5,5,5'"></Button>
+							<Button name="btn_diandan_jixujiacai" text="加菜" height="75" width="230" padding="10,0,0,15" normalimage="file='Dialog_Btn1.png' corner='5,5,5,5'" hotimage="file='Dialog_Btn1_Hover.png' corner='5,5,5,5'" pushedimage="file='Dialog_Btn1_Click.png' corner='5,5,5,5'"></Button>
 							
 							<Button name="btn_diandan_yulandan" text="打印预览单" height="75" width="230" padding="10,0,0,15" normalimage="file='Dialog_Btn1.png' corner='5,5,5,5'" hotimage="file='Dialog_Btn1_Hover.png' corner='5,5,5,5'" pushedimage="file='Dialog_Btn1_Click.png' corner='5,5,5,5'"></Button>
 						</HorizontalLayout>

+ 112 - 26
zhipuzi_pos_windows/page/CZhengcanDiandanPageUI.cpp

@@ -45,6 +45,7 @@ void CZhengcanDiandanPageUI::InitShow()
 	//先清空旧的订单信息,如果该桌子有订单关联后面会重新获取
 	m_cur_diandan_order.RefreshDiandanInfo();
 
+	//初始化显示,先清空所有的购物车商品,然后清空活动,初始化价格展示,等后面获取到订单数据再重新刷新渲染
 	this->UpdateShopcartShow();
 
 	//先检查桌子状态,获取桌子信息
@@ -67,8 +68,16 @@ void CZhengcanDiandanPageUI::InitTableShow()
 	//渲染左侧购物车(包含了调用UpdateJiesuanInfo重新计算价格)
 	this->UpdateShopcartShow();
 
-	//展示选购页面
-	this->ShowXuangouPage();
+	if (m_order_id == "0")
+	{
+		//说明还没下单,那么默认显示选购页面
+		this->ShowXuangouPage();
+	}
+	else
+	{
+		//说明已经下过单了,那么默认显示结算页面
+		this->ShowJiesuanPage();
+	}
 
 	if (m_is_zidingyizhifu_init == false)
 	{
@@ -79,24 +88,6 @@ void CZhengcanDiandanPageUI::InitTableShow()
 	}
 }
 
-void CZhengcanDiandanPageUI::RefreshShow()
-{
-	//清空当前订单的信息
-	m_cur_diandan_order.RefreshDiandanInfo();
-
-	//初始化商品显示(因为这里要刷新商品库存状态)
-	this->InitFoodShow();
-
-	//初始化结算页面相关的展示,把所有活动清零
-	this->InitJiesuanShow();
-
-	//渲染左侧购物车(包含了调用UpdateJiesuanInfo重新计算价格)
-	this->UpdateShopcartShow();
-
-	//展示选购页面
-	this->ShowXuangouPage();
-}
-
 void CZhengcanDiandanPageUI::GetTableInfo()
 {
 	//开始转菊花
@@ -186,6 +177,7 @@ void CZhengcanDiandanPageUI::DoGetTableInfo()
 			m_kaitai = 0;
 		}
 
+		//这里不需要计算实际的茶位费,实际的茶位费是在算总价的时候根据人数一起算
 		std::string open_tea_fee = CLewaimaiJson::ToString(data["open_tea_fee"]);
 		std::string tea_fee = CLewaimaiJson::ToString(data["tea_fee"]);
 
@@ -198,10 +190,7 @@ void CZhengcanDiandanPageUI::DoGetTableInfo()
 			m_tea_fee = 0;
 		}
 
-		//这里不需要计算实际的茶位费,实际的茶位费是在算总价的时候一起算
-
 		m_renshu = CLewaimaiJson::ToString(data["person_num"]);
-
 		CButtonUI* pCanpaiEdit = static_cast<CButtonUI*>(this->FindSubControl(_T("btn_diandan_canpaihao")));
 		pCanpaiEdit->SetText((L"人数 " + CLewaimaiString::UTF8ToUnicode(m_renshu)).c_str());
 
@@ -216,9 +205,10 @@ void CZhengcanDiandanPageUI::DoGetTableInfo()
 		{
 			m_order_id = order_id;
 
-			//这个说明是开过台,也下过单了,那么要先获取当前的订单信息,刷新已点菜的显示,再显示点餐页面的其他信息
+			//这个说明是开过台,也下过单了,那么要先获取当前的订单信息
 			m_cur_diandan_order.InitData(order_id);
 
+			//然后刷新已点菜的显示,再显示点餐页面的其他信息
 			this->InitTableShow();
 		}
 
@@ -754,6 +744,48 @@ void CZhengcanDiandanPageUI::ShowJiesuanPage()
 	CHorizontalLayoutUI* pJiesuanPayLayout = static_cast<CHorizontalLayoutUI*>(this->FindSubControl(_T("jiesuan_pay_layout")));
 	pJiesuanPayLayout->SetVisible(true);
 
+	//处理一些按钮的显示与隐藏
+	CButtonUI* jiaBtn = static_cast<CButtonUI*>(this->FindSubControl(L"btn_diandan_jia"));
+	jiaBtn->SetVisible(false);
+
+	CButtonUI* jianBtn = static_cast<CButtonUI*>(this->FindSubControl(L"btn_diandan_jian"));
+	jianBtn->SetVisible(false);
+
+	CButtonUI* shanchuBtn = static_cast<CButtonUI*>(this->FindSubControl(L"btn_diandan_shanchu"));
+	shanchuBtn->SetVisible(false);
+
+	CButtonUI* guigeBtn = static_cast<CButtonUI*>(this->FindSubControl(L"btn_diandan_guige"));
+	guigeBtn->SetVisible(false);
+
+	CButtonUI* tuicaiBtn = static_cast<CButtonUI*>(this->FindSubControl(L"btn_diandan_tuicai"));
+	tuicaiBtn->SetVisible(true);
+
+	CButtonUI* dabaoBtn = static_cast<CButtonUI*>(this->FindSubControl(L"btn_diandan_dabao"));
+	dabaoBtn->SetVisible(false);
+
+	CButtonUI* chetaiBtn = static_cast<CButtonUI*>(this->FindSubControl(L"btn_diandan_chetai"));
+	chetaiBtn->SetVisible(false);
+
+	CButtonUI* huantaiBtn = static_cast<CButtonUI*>(this->FindSubControl(L"btn_diandan_huantai"));
+	huantaiBtn->SetVisible(true);
+
+	//把购物车的商品,进行展示处理
+	for (std::vector<CListContainerElementUI*>::iterator it = m_history_cart_item.begin(); it != m_history_cart_item.end(); it++)
+	{
+		CListContainerElementUI* pEle = *it;
+		pEle->SetEnabled(true);
+
+		CLabelUI * pName = static_cast<CLabelUI*>(pEle->FindSubControl(_T("diandan_cart_item_name")));
+
+		CLabelUI* pNum = static_cast<CLabelUI*>(pEle->FindSubControl(_T("diandan_cart_item_num")));
+
+		CLabelUI* pPrice = static_cast<CLabelUI*>(pEle->FindSubControl(_T("diandan_cart_item_price")));
+
+		pName->SetTextColor(0xFF000000);
+		pNum->SetTextColor(0xFF000000);
+		pPrice->SetTextColor(0xFF000000);
+	}
+
 	//更新结算按钮位置
 	UpdateJiesuanZhifuPos();
 }
@@ -776,6 +808,56 @@ void CZhengcanDiandanPageUI::ShowXuangouPage()
 	//隐藏继续加菜的区域
 	CHorizontalLayoutUI* pJiesuanPayLayout = static_cast<CHorizontalLayoutUI*>(this->FindSubControl(_T("jiesuan_pay_layout")));
 	pJiesuanPayLayout->SetVisible(false);
+
+	//处理一些按钮的显示与隐藏
+	CButtonUI* jiaBtn = static_cast<CButtonUI*>(this->FindSubControl(L"btn_diandan_jia"));
+	jiaBtn->SetVisible(true);
+
+	CButtonUI* jianBtn = static_cast<CButtonUI*>(this->FindSubControl(L"btn_diandan_jian"));
+	jianBtn->SetVisible(true);
+
+	CButtonUI* shanchuBtn = static_cast<CButtonUI*>(this->FindSubControl(L"btn_diandan_shanchu"));
+	shanchuBtn->SetVisible(true);
+
+	CButtonUI* guigeBtn = static_cast<CButtonUI*>(this->FindSubControl(L"btn_diandan_guige"));
+	guigeBtn->SetVisible(true);
+
+	CButtonUI* tuicaiBtn = static_cast<CButtonUI*>(this->FindSubControl(L"btn_diandan_tuicai"));
+	tuicaiBtn->SetVisible(false);
+
+	CButtonUI* dabaoBtn = static_cast<CButtonUI*>(this->FindSubControl(L"btn_diandan_dabao"));
+	dabaoBtn->SetVisible(true);
+
+	CButtonUI* chetaiBtn = static_cast<CButtonUI*>(this->FindSubControl(L"btn_diandan_chetai"));
+	if (m_order_id == "0")
+	{
+		//还没下单,才显示撤台
+		chetaiBtn->SetVisible(true);
+	}
+	else
+	{
+		chetaiBtn->SetVisible(false);
+	}
+
+	CButtonUI* huantaiBtn = static_cast<CButtonUI*>(this->FindSubControl(L"btn_diandan_huantai"));
+	huantaiBtn->SetVisible(true);
+
+	//把购物车的商品,进行展示处理
+	for (std::vector<CListContainerElementUI*>::iterator it = m_history_cart_item.begin(); it != m_history_cart_item.end(); it++)
+	{
+		CListContainerElementUI* pEle = *it;
+		pEle->SetEnabled(false);
+
+		CLabelUI * pName = static_cast<CLabelUI*>(pEle->FindSubControl(_T("diandan_cart_item_name")));
+
+		CLabelUI* pNum = static_cast<CLabelUI*>(pEle->FindSubControl(_T("diandan_cart_item_num")));
+
+		CLabelUI* pPrice = static_cast<CLabelUI*>(pEle->FindSubControl(_T("diandan_cart_item_price")));
+
+		pName->SetTextColor(0xFFBBBBBB);
+		pNum->SetTextColor(0xFFBBBBBB);
+		pPrice->SetTextColor(0xFFBBBBBB);
+	}
 }
 
 //处理按钮点击类事件
@@ -1200,6 +1282,8 @@ void CZhengcanDiandanPageUI::UpdateShopcartShow()
 
 	int xiadan_cishu = m_cur_diandan_order.m_order_history_array.size();
 
+	m_history_cart_item.clear();
+
 	//开始处理历史的订单数据渲染
 	for (int i = xiadan_cishu - 1; i >= 0 ; i--)
 	{
@@ -1235,6 +1319,8 @@ void CZhengcanDiandanPageUI::UpdateShopcartShow()
 			pPrice->SetTextColor(0xFFBBBBBB);
 
 			pEle->SetFixedHeight(42);
+
+			m_history_cart_item.push_back(pEle);
 		}
 	}
 
@@ -3852,8 +3938,8 @@ void CZhengcanDiandanPageUI::StartWorkAfterShoukuan(std::string kucunstring, std
 	CPosPrinter printer;
 	printer.PrintZhengcanOrder(order);
 
-	//最后才初始化页面信息
-	RefreshShow();
+	//结账成功了,返回到桌子列表
+	m_pMainWnd->SwitchPage(CMainWnd::ZHENGCAN);
 }
 
 CZhengcanOrder CZhengcanDiandanPageUI::GetPrintOrderinfo(std::string take_food_code, std::string show_trade_no, std::string shoukuan_type, std::string balance, std::string member_number)

+ 3 - 3
zhipuzi_pos_windows/page/CZhengcanDiandanPageUI.h

@@ -24,9 +24,6 @@ public:
 	//这个是获取到桌位和订单相关信息之后执行的函数,初始化桌位和订单的显示
 	void InitTableShow();
 
-	//收款一个订单成功,准备开始收款第2个订单的时候调用(会多次调度用)
-	void RefreshShow();
-
 	//获取桌子信息和参数
 	void GetTableInfo();
 
@@ -333,4 +330,7 @@ private:
 
 	//当前桌子关联的订单ID
 	std::string m_order_id;
+
+	//每次刷新购物车时候,用来保存历史的item,用来处理这些item的展示(比如颜色、是否可点击)
+	std::vector<CListContainerElementUI*> m_history_cart_item;
 };

+ 1 - 1
zhipuzi_pos_windows/zhipuzi/CZhengcanOrder.h

@@ -57,7 +57,7 @@ public:
 	//땐데돨憐데구鬧
 	std::string m_memo;
 
-	//땐데榴檄
+	//땐데榴檄 'OPEN','SUCCESS','CLOSE','PASSWORD','FAILED','TIMEOUT','REFUND'
 	std::string m_status;
 
 	//훙鑒