Browse Source

翻页弄完了

zhangyang 6 years ago
parent
commit
5df25021ae

+ 3 - 1
bin/Win32/Debug/zhipuzi_pos_windows/skin/GameRes/desk.xml

@@ -10,6 +10,8 @@
 		<Label float="true" name="waimai_order_list_order_no" text="订单编号:" textcolor="#FF558CC4" pos="300,36,600,66" mouse="false" />
 		
 		<Button name="waimai_order_list_info" float="true" pos="600,6,660,36" text="详情" textcolor="#FFFF0000" bkcolor="#FFFFFF00"/>
-		<Button name="waimai_order_list_print" float="true" pos="600,56,660,86" text="打印" textcolor="#FFFF0000" bkcolor="#FFFFFF00"/>
+		<Button name="waimai_order_list_print" float="true" pos="600,46,660,76" text="打印" textcolor="#FFFF0000" bkcolor="#FFFFFF00"/>
+		<Button name="waimai_order_list_confirme" float="true" pos="600,86,660,116" text="确认" textcolor="#FFFF0000" bkcolor="#FFFFFF00"/>
+		<Button name="waimai_order_list_fail" float="true" pos="600,126,660,156" text="设为失败" textcolor="#FFFF0000" bkcolor="#FFFFFF00"/>
 	</WaimaiOrderItem>
 </Window>

+ 43 - 15
bin/Win32/Debug/zhipuzi_pos_windows/skin/GameRes/main.xml

@@ -16,11 +16,10 @@
     			<HorizontalLayout childpadding="20" inset="10,16,10,10" >
     				<?ActiveX name="ad" clsid="{8856F961-340A-11D0-A96B-00C04FD705A2}" /?>
     				<Control />
-    				<Option text="外卖" width="64" group="menubar" selected="true" hotimage="tab_back.bmp" selectedimage="headerctrl_down.bmp" selectedhotimage="headerctrl_hot.bmp"/>
-    				<Option text="扫码下单" width="64" group="menubar" hotimage="tab_back.bmp" selectedimage="headerctrl_down.bmp" selectedhotimage="headerctrl_hot.bmp" />
-    				<Option text="快速收银" width="64" group="menubar" hotimage="tab_back.bmp" selectedimage="headerctrl_down.bmp" selectedhotimage="headerctrl_hot.bmp" />
-    				<Option text="设置" width="64" group="menubar" hotimage="tab_back.bmp" selectedimage="headerctrl_down.bmp" selectedhotimage="headerctrl_hot.bmp" />
-					<Option text="官网" width="64" group="menubar" hotimage="tab_back.bmp" selectedimage="headerctrl_down.bmp" selectedhotimage="headerctrl_hot.bmp" />
+    				<Option name="main_waimai" text="外卖" width="64" group="menubar" selected="true" hotimage="tab_back.bmp" selectedimage="headerctrl_down.bmp" selectedhotimage="headerctrl_hot.bmp"/>
+    				<Option name="main_saomaxiadan"text="扫码下单" width="64" group="menubar" hotimage="tab_back.bmp" selectedimage="headerctrl_down.bmp" selectedhotimage="headerctrl_hot.bmp" />
+    				<Option name="main_setting" text="设置" width="64" group="menubar" hotimage="tab_back.bmp" selectedimage="headerctrl_down.bmp" selectedhotimage="headerctrl_hot.bmp" />
+					<Option name="main_web" text="官网" width="64" group="menubar" hotimage="tab_back.bmp" selectedimage="headerctrl_down.bmp" selectedhotimage="headerctrl_hot.bmp" />
     			</HorizontalLayout>
     			<HorizontalLayout width="94" >
     				<Button name="minbtn" maxwidth="26" maxheight="18" normalimage="file='frame_btn_min.bmp' source='0,0,26,18' mask='#FFFF00FF'" hotimage="file='frame_btn_min.bmp' source='26,0,52,18' mask='#FFFF00FF'" pushedimage="file='frame_btn_min.bmp' source='52,0,78,18' mask='#FFFF00FF'"/>
@@ -32,24 +31,53 @@
 			
 			<TabLayout name="switch">
 				<!--外卖的 -->
-				<HorizontalLayout>
-					<HorizontalLayout width="300" bkcolor="#FFFFFFFF">
+				<HorizontalLayout bkcolor="#FFC0C0C0">
+					<HorizontalLayout width="300">
 						<VerticalLayout childpadding="20">
-							<Option name="waimai_open_switch" selected="true" showhtml="true" text="未处理" width="200" group="swithbar" align="center" normalimage="file='tab_normal.bmp' corner='2,2,2,2'" selectedimage="file='tab_select.bmp' corner='2,2,2,2'" hotimage="file='tab_hot.bmp' corner='2,2,2,2'" hottextcolor="#CC1010"/>
-							<Option name="waimai_confirmed_switch" showhtml="true" text="已确认" width="200" group="swithbar" align="center" normalimage="file='tab_normal.bmp' corner='2,2,2,2'" selectedimage="file='tab_select.bmp' corner='2,2,2,2'" hotimage="file='tab_hot.bmp' corner='2,2,2,2'" hottextcolor="#CC1010" />
-							<Option name="waimai_delivery_switch" showhtml="true" text="配送中" width="200" group="swithbar" align="center" normalimage="file='tab_normal.bmp' corner='2,2,2,2'" selectedimage="file='tab_select.bmp' corner='2,2,2,2'" hotimage="file='tab_hot.bmp' corner='2,2,2,2'" hottextcolor="#CC1010" />
-							<Option name="waimai_success_switch" showhtml="true" text="成功" width="200" group="swithbar" align="center" normalimage="file='tab_normal.bmp' corner='2,2,2,2'" selectedimage="file='tab_select.bmp' corner='2,2,2,2'" hotimage="file='tab_hot.bmp' corner='2,2,2,2'" hottextcolor="#CC1010" />
-							<Option name="waimai_fail_switch" showhtml="true" text="失败" width="200" group="swithbar" align="center" normalimage="file='tab_normal.bmp' corner='2,2,2,2'" selectedimage="file='tab_select.bmp' corner='2,2,2,2'" hotimage="file='tab_hot.bmp' corner='2,2,2,2'" hottextcolor="#CC1010" />
-							<Option name="waimai_refund_switch" showhtml="true" text="退款中" width="200" group="swithbar" align="center" normalimage="file='tab_normal.bmp' corner='2,2,2,2'" selectedimage="file='tab_select.bmp' corner='2,2,2,2'" hotimage="file='tab_hot.bmp' corner='2,2,2,2'" hottextcolor="#CC1010" />
+							<Option name="waimai_open_switch" selected="true" showhtml="true" text="未处理" width="200" group="waimai_status_switch" align="center" normalimage="file='tab_normal.bmp' corner='2,2,2,2'" selectedimage="file='tab_select.bmp' corner='2,2,2,2'" hotimage="file='tab_hot.bmp' corner='2,2,2,2'" hottextcolor="#CC1010"/>
+							<Option name="waimai_confirmed_switch" showhtml="true" text="已确认" width="200" group="waimai_status_switch" align="center" normalimage="file='tab_normal.bmp' corner='2,2,2,2'" selectedimage="file='tab_select.bmp' corner='2,2,2,2'" hotimage="file='tab_hot.bmp' corner='2,2,2,2'" hottextcolor="#CC1010" />
+							<Option name="waimai_delivery_switch" showhtml="true" text="配送中" width="200" group="waimai_status_switch" align="center" normalimage="file='tab_normal.bmp' corner='2,2,2,2'" selectedimage="file='tab_select.bmp' corner='2,2,2,2'" hotimage="file='tab_hot.bmp' corner='2,2,2,2'" hottextcolor="#CC1010" />
+							<Option name="waimai_success_switch" showhtml="true" text="成功" width="200" group="waimai_status_switch" align="center" normalimage="file='tab_normal.bmp' corner='2,2,2,2'" selectedimage="file='tab_select.bmp' corner='2,2,2,2'" hotimage="file='tab_hot.bmp' corner='2,2,2,2'" hottextcolor="#CC1010" />
+							<Option name="waimai_fail_switch" showhtml="true" text="失败" width="200" group="waimai_status_switch" align="center" normalimage="file='tab_normal.bmp' corner='2,2,2,2'" selectedimage="file='tab_select.bmp' corner='2,2,2,2'" hotimage="file='tab_hot.bmp' corner='2,2,2,2'" hottextcolor="#CC1010" />
+							<Option name="waimai_refund_switch" showhtml="true" text="退款中" width="200" group="waimai_status_switch" align="center" normalimage="file='tab_normal.bmp' corner='2,2,2,2'" selectedimage="file='tab_select.bmp' corner='2,2,2,2'" hotimage="file='tab_hot.bmp' corner='2,2,2,2'" hottextcolor="#CC1010" />
 						</VerticalLayout>
 					</HorizontalLayout>
 					
-					<VerticalLayout bkcolor="#FF103668" vscrollbar="true">
+					<VerticalLayout vscrollbar="true">
+						<HorizontalLayout height="44" inset="20,4,0,1" childpadding="0" bkcolor="#FFFFFFFF" >
+							<Button name="waimai_order_list_last" float="true" pos="20,6,70,36" text="上一页" textcolor="#FFFF0000" bkcolor="#FFFFFF00"/>
+							<Button name="waimai_order_list_next" float="true" pos="90,6,140,36" text="下一页" textcolor="#FFFF0000" bkcolor="#FFFFFF00"/>
+							<Button name="waimai_order_list_refresh" float="true" pos="160,6,210,36" text="刷新" textcolor="#FFFF0000" bkcolor="#FFFFFF00"/>
+							<Label name="waimai_order_list_page" float="true" pos="230,6,500,36" />
+						</HorizontalLayout>
 						<DeskList name="orderlist" bkcolor="#FF103668" vscrollbar="true" />
 					</VerticalLayout>
 				</HorizontalLayout>
 				
-				<!--扫码下单的-->
+				<!--外卖订单详情页-->
+				<HorizontalLayout bkcolor="#FFC0C0C0">
+					<HorizontalLayout>
+					
+					</HorizontalLayout>	
+					<HorizontalLayout>
+						
+					</HorizontalLayout>	
+				</HorizontalLayout>	
+				
+				<!--扫码下单-->
+				<HorizontalLayout bkcolor="#FFC0C0C0">
+					<Label text="还没开发" />
+				</HorizontalLayout>	
+
+				<!--设置-->
+				<HorizontalLayout bkcolor="#FFC0C0C0">
+					<Label text="还没开发" />
+				</HorizontalLayout>
+
+				<!--官网-->
+				<HorizontalLayout bkcolor="#FFC0C0C0">
+					<Label text="还没开发" />
+				</HorizontalLayout>				
 			</TabLayout>
         </VerticalLayout>
         

BIN
bin/Win32/Debug/zhipuzi_pos_windows/skin/GameRes/table.png


BIN
bin/Win32/Debug/zhipuzi_pos_windows/skin/GameRes/user.png


BIN
bin/Win32/Debug/zhipuzi_pos_windows/zhipuzi_pos_windows.exe


+ 59 - 0
lewaimai_dispatch/helper/CLewaimaiString.cpp

@@ -11,6 +11,22 @@
 using namespace std;
 using namespace boost::archive::iterators;
 
+
+unsigned char ToHex(unsigned char x)
+{
+	return  x > 9 ? x + 55 : x + 48;
+}
+
+unsigned char FromHex(unsigned char x)
+{
+	unsigned char y;
+	if (x >= 'A' && x <= 'Z') y = x - 'A' + 10;
+	else if (x >= 'a' && x <= 'z') y = x - 'a' + 10;
+	else if (x >= '0' && x <= '9') y = x - '0';
+	else assert(0);
+	return y;
+}
+
 CLewaimaiString::CLewaimaiString()
 {
 }
@@ -61,3 +77,46 @@ void CLewaimaiString::trim(string &s)
 		s.erase(s.find_last_not_of(" ") + 1);
 	}
 }
+
+std::string CLewaimaiString::UrlEncode(const std::string& str)
+{
+	std::string strTemp = "";
+	size_t length = str.length();
+	for (size_t i = 0; i < length; i++)
+	{
+		if (isalnum((unsigned char)str[i]) ||
+			(str[i] == '-') ||
+			(str[i] == '_') ||
+			(str[i] == '.') ||
+			(str[i] == '~'))
+			strTemp += str[i];
+		else if (str[i] == ' ')
+			strTemp += "+";
+		else
+		{
+			strTemp += '%';
+			strTemp += ToHex((unsigned char)str[i] >> 4);
+			strTemp += ToHex((unsigned char)str[i] % 16);
+		}
+	}
+	return strTemp;
+}
+
+std::string CLewaimaiString::UrlDecode(const std::string& str)
+{
+	std::string strTemp = "";
+	size_t length = str.length();
+	for (size_t i = 0; i < length; i++)
+	{
+		if (str[i] == '+') strTemp += ' ';
+		else if (str[i] == '%')
+		{
+			assert(i + 2 < length);
+			unsigned char high = FromHex((unsigned char)str[++i]);
+			unsigned char low = FromHex((unsigned char)str[++i]);
+			strTemp += high * 16 + low;
+		}
+		else strTemp += str[i];
+	}
+	return strTemp;
+}

+ 3 - 0
lewaimai_dispatch/helper/CLewaimaiString.h

@@ -92,5 +92,8 @@ public:
 		string result = str;
 		return result;
 	}
+
+	static std::string UrlEncode(const std::string& str);
+	static std::string UrlDecode(const std::string& str);
 };
 

+ 85 - 0
lewaimai_dispatch/order/CWaimaiOrder.cpp

@@ -175,3 +175,88 @@ void CWaimaiOrder::InitData(std::string order_id, std::string order_no)
 		}
 	}
 }
+
+bool CWaimaiOrder::ConfirmeOrder(std::string order_id)
+{
+	std::string url = "/waimaiorder/orderconfirm";
+
+	//请求外卖的未处理订单
+	std::map<string, string> params;
+	params["id"] = order_id;
+	std::string response;
+
+	CZhipuziHttpClient::RequestOld(url.c_str(), params, response);
+
+	rapidjson::Document document;
+	document.Parse(response.c_str());
+
+	if (document.HasParseError())
+	{
+		LOG_INFO("parse response error!");
+		return false;
+	}
+
+	if (!document.HasMember("errcode") || !document.HasMember("errmsg") || !document.HasMember("data"))
+	{
+		LOG_INFO("json error!");
+		return false;
+	}
+
+	rapidjson::Value& v_errcode = document["errcode"];
+	int errcode = v_errcode.GetInt();
+	if (errcode != 0)
+	{
+		LOG_INFO("response failed! message:" << document["errmsg"].GetString());
+		return false;
+	}
+
+	//获得数据成功
+	rapidjson::Value& data = document["data"];
+	rapidjson::Value& v_count = data["count"];
+	string count = v_count.GetString();
+
+	return true;
+}
+
+bool CWaimaiOrder::FailOrder(std::string order_id, std::string reason)
+{
+	std::string url = "/waimaiorder/orderfail";
+
+	//请求外卖的未处理订单
+	std::map<string, string> params;
+	params["id"] = order_id;
+	params["failed_reason"] = reason;
+	std::string response;
+
+	CZhipuziHttpClient::RequestOld(url.c_str(), params, response);
+
+	rapidjson::Document document;
+	document.Parse(response.c_str());
+
+	if (document.HasParseError())
+	{
+		LOG_INFO("parse response error!");
+		return false;
+	}
+
+	if (!document.HasMember("errcode") || !document.HasMember("errmsg") || !document.HasMember("data"))
+	{
+		LOG_INFO("json error!");
+		return false;
+	}
+
+	rapidjson::Value& v_errcode = document["errcode"];
+	int errcode = v_errcode.GetInt();
+	if (errcode != 0)
+	{
+		LOG_INFO("response failed! message:" << document["errmsg"].GetString());
+		return false;
+	}
+
+	//获得数据成功
+	rapidjson::Value& data = document["data"];
+	rapidjson::Value& v_count = data["count"];
+	string count = v_count.GetString();
+
+	return true;
+}

+ 3 - 0
lewaimai_dispatch/order/CWaimaiOrder.h

@@ -34,6 +34,9 @@ public:
 
 	void InitData(std::string order_id, std::string order_no);
 
+	bool ConfirmeOrder(std::string order_id);
+	bool FailOrder(std::string order_id, std::string reason);
+
 public:
 	std::string m_order_id;
 	std::string m_shop_id;

+ 440 - 18
lewaimai_dispatch/wnd/CGameFrameWnd.cpp

@@ -5,32 +5,454 @@
 
 void CGameFrameWnd::Init()
 {
-	m_pCloseBtn = static_cast<CButtonUI*>(m_pm.FindControl(_T("closebtn")));
-	m_pMaxBtn = static_cast<CButtonUI*>(m_pm.FindControl(_T("maxbtn")));
-	m_pRestoreBtn = static_cast<CButtonUI*>(m_pm.FindControl(_T("restorebtn")));
-	m_pMinBtn = static_cast<CButtonUI*>(m_pm.FindControl(_T("minbtn")));
+    m_pCloseBtn = static_cast<CButtonUI*>(m_pm.FindControl(_T("closebtn")));
+    m_pMaxBtn = static_cast<CButtonUI*>(m_pm.FindControl(_T("maxbtn")));
+    m_pRestoreBtn = static_cast<CButtonUI*>(m_pm.FindControl(_T("restorebtn")));
+    m_pMinBtn = static_cast<CButtonUI*>(m_pm.FindControl(_T("minbtn")));
 }
 
 LRESULT CGameFrameWnd::OnCreate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
 {
-	LONG styleValue = ::GetWindowLong(*this, GWL_STYLE);
-	styleValue &= ~WS_CAPTION;
-	::SetWindowLong(*this, GWL_STYLE, styleValue | WS_CLIPSIBLINGS | WS_CLIPCHILDREN);
+    LONG styleValue = ::GetWindowLong(*this, GWL_STYLE);
+    styleValue &= ~WS_CAPTION;
+    ::SetWindowLong(*this, GWL_STYLE, styleValue | WS_CLIPSIBLINGS | WS_CLIPCHILDREN);
 
-	m_pm.Init(m_hWnd);
-	CDialogBuilder builder;
-	CDialogBuilderCallbackEx cb;
+    m_pm.Init(m_hWnd);
+    CDialogBuilder builder;
+    CDialogBuilderCallbackEx cb;
 
-	CControlUI* pRoot = builder.Create(_T("main.xml"), (UINT)0, &cb, &m_pm);
-	ASSERT(pRoot && "Failed to parse XML");
+    CControlUI* pRoot = builder.Create(_T("main.xml"), (UINT)0, &cb, &m_pm);
+    ASSERT(pRoot && "Failed to parse XML");
 
-	m_pm.AttachDialog(pRoot);
-	m_pm.AddNotifier(this);
+    m_pm.AttachDialog(pRoot);
+    m_pm.AddNotifier(this);
 
-	OrderListUI* orderlist = static_cast<OrderListUI*>(m_pm.FindControl(_T("orderlist")));
-	orderlist->Refresh();
+    OrderListUI* orderlist = static_cast<OrderListUI*>(m_pm.FindControl(_T("orderlist")));
+    orderlist->Refresh();
 
-	Init();
-	return 0;
+    Init();
+    return 0;
+}
+
+void CGameFrameWnd::Notify(TNotifyUI& msg)
+{
+    if(msg.sType == _T("windowinit"))
+    {
+        OnPrepare();
+    }
+    else if(msg.sType == _T("click"))
+    {
+		HandleClickMsg(msg);
+    }
+    else if(msg.sType == _T("selectchanged"))
+    {
+        CDuiString name = msg.pSender->GetName();
+
+		//先判断主页面的tab
+		if (name == _T("main_waimai"))
+		{
+			CTabLayoutUI* pControl = static_cast<CTabLayoutUI*>(m_pm.FindControl(_T("switch")));
+			if (pControl && pControl->GetCurSel() != 0)
+			{
+				pControl->SelectItem(0);
+			}
+		}
+		else if (name == _T("main_saomaxiadan"))
+		{
+			CTabLayoutUI* pControl = static_cast<CTabLayoutUI*>(m_pm.FindControl(_T("switch")));
+			if (pControl && pControl->GetCurSel() != 2)
+			{
+				pControl->SelectItem(2);
+			}
+		}
+		else if (name == _T("main_setting"))
+		{
+			CTabLayoutUI* pControl = static_cast<CTabLayoutUI*>(m_pm.FindControl(_T("switch")));
+			if (pControl && pControl->GetCurSel() != 3)
+			{
+				pControl->SelectItem(3);
+			}
+		}
+		else if (name == _T("main_web"))
+		{
+			CTabLayoutUI* pControl = static_cast<CTabLayoutUI*>(m_pm.FindControl(_T("switch")));
+			if (pControl && pControl->GetCurSel() != 4)
+			{
+				pControl->SelectItem(4);
+			}
+		}
+
+		//判断外卖的tab
+        else if(name == _T("waimai_open_switch") || name == _T("waimai_confirmed_switch") || name == _T("waimai_delivery_switch") || name == _T("waimai_success_switch") || name == _T("waimai_fail_switch") || name == _T("waimai_refund_switch"))
+        {
+            OrderListUI* orderlist = static_cast<OrderListUI*>(m_pm.FindControl(_T("orderlist")));
+
+			//切换状态全部重新开始从第1页
+			orderlist->SetPage(1);
+
+			if (name == _T("waimai_open_switch"))
+			{
+				orderlist->SetStatus(1);
+			}
+			else if (name == _T("waimai_confirmed_switch"))
+			{
+				orderlist->SetStatus(2);
+			}
+			else if (name == _T("waimai_delivery_switch"))
+			{
+				orderlist->SetStatus(3);
+			}
+			else if (name == _T("waimai_success_switch"))
+			{
+				orderlist->SetStatus(4);
+			}
+			else if (name == _T("waimai_fail_switch"))
+			{
+				orderlist->SetStatus(5);
+			}
+			else if (name == _T("waimai_refund_switch"))
+			{
+				orderlist->SetStatus(6);
+			}
+
+            orderlist->Refresh();
+        }
+    }
+    else if(msg.sType == _T("itemclick"))
+    {
+
+    }
+    else if(msg.sType == _T("itemactivate"))
+    {
+
+    }
+    else if(msg.sType == _T("itemselect"))
+    {
+        if(msg.pSender->GetName() == _T("chatCombo"))
+        {
+            CEditUI* pChatEdit = static_cast<CEditUI*>(m_pm.FindControl(_T("chatEdit")));
+            if(pChatEdit)
+            {
+                pChatEdit->SetText(msg.pSender->GetText());
+            }
+            static_cast<CComboUI*>(msg.pSender)->SelectItem(-1);
+        }
+    }
+}
+
+void CGameFrameWnd::HandleClickMsg(TNotifyUI& msg)
+{
+	if (msg.pSender == m_pCloseBtn)
+	{
+		COptionUI* pControl = static_cast<COptionUI*>(m_pm.FindControl(_T("hallswitch")));
+		if (pControl && pControl->IsSelected() == false)
+		{
+			CControlUI* pFadeControl = m_pm.FindControl(_T("fadeEffect"));
+			if (pFadeControl)
+			{
+				pFadeControl->SetVisible(true);
+			}
+		}
+		else
+		{
+			/*Close()*/PostQuitMessage(0); // 因为activex的原因,使用close可能会出现错误
+		}
+		return;
+	}
+	else if (msg.pSender == m_pMinBtn)
+	{
+		SendMessage(WM_SYSCOMMAND, SC_MINIMIZE, 0);
+		return;
+	}
+	else if (msg.pSender == m_pMaxBtn)
+	{
+		SendMessage(WM_SYSCOMMAND, SC_MAXIMIZE, 0);
+		return;
+	}
+	else if (msg.pSender == m_pRestoreBtn)
+	{
+		SendMessage(WM_SYSCOMMAND, SC_RESTORE, 0);
+		return;
+	}
+
+	CDuiString name = msg.pSender->GetName();
+	if (name == _T("quitbtn"))
+	{
+		/*Close()*/PostQuitMessage(0); // 因为activex的原因,使用close可能会出现错误
+	}
+	else if (name == _T("waimai_order_list_print"))
+	{
+		//外卖订单的打印
+		CWaimaiOrderItemUI* item = static_cast<CWaimaiOrderItemUI*>(msg.pSender->GetParent());
+		std::string waimai_order_id = item->getOrderID();
+		std::string waimai_order_no = item->getOrderNo();
+
+		CWaimaiOrder order;
+		order.InitData(waimai_order_id, waimai_order_no);
+
+		CPosPrinter printer;
+		printer.PrintWaimaiOrder(order);
+	}
+	else if (name == _T("waimai_order_list_confirme"))
+	{
+		//外卖订单的打印
+		CWaimaiOrderItemUI* item = static_cast<CWaimaiOrderItemUI*>(msg.pSender->GetParent());
+		std::string waimai_order_id = item->getOrderID();
+
+		CWaimaiOrder order;
+		bool ret = order.ConfirmeOrder(waimai_order_id);
+
+		if (ret)
+		{
+			//如果确认成功,将被确认的订单删除掉
+			OrderListUI* orderlist = static_cast<OrderListUI*>(m_pm.FindControl(_T("orderlist")));
+			int index = orderlist->GetItemIndex(item);
+			orderlist->RemoveAt(index);
+		}
+	}
+	else if (name == _T("waimai_order_list_fail"))
+	{
+		//外卖订单的打印
+		CWaimaiOrderItemUI* item = static_cast<CWaimaiOrderItemUI*>(msg.pSender->GetParent());
+		std::string waimai_order_id = item->getOrderID();
+
+		CWaimaiOrder order;
+		bool ret = order.FailOrder(waimai_order_id, "windows收银机测试");
+
+		if (ret)
+		{
+			//如果设为失败成功,将被设为失败的订单删除掉
+			OrderListUI* orderlist = static_cast<OrderListUI*>(m_pm.FindControl(_T("orderlist")));
+			int index = orderlist->GetItemIndex(item);
+			orderlist->RemoveAt(index);
+		}
+	}
+	else if (name == _T("waimai_order_list_info"))
+	{
+		CTabLayoutUI* pControl = static_cast<CTabLayoutUI*>(m_pm.FindControl(_T("switch")));
+		if (pControl && pControl->GetCurSel() != 1)
+		{
+			pControl->SelectItem(1);
+		}
+	}
+	else if (name == _T("waimai_order_list_last"))
+	{
+		OrderListUI* orderlist = static_cast<OrderListUI*>(m_pm.FindControl(_T("orderlist")));
+
+		orderlist->LastPage();
+	}
+	else if (name == _T("waimai_order_list_next"))
+	{
+		OrderListUI* orderlist = static_cast<OrderListUI*>(m_pm.FindControl(_T("orderlist")));
+
+		orderlist->NextPage();
+	}
+	else if (name == _T("waimai_order_list_refresh"))
+	{
+		OrderListUI* orderlist = static_cast<OrderListUI*>(m_pm.FindControl(_T("orderlist")));
+
+		orderlist->Refresh();
+	}
+}
+
+LRESULT CGameFrameWnd::HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam)
+{
+    LRESULT lRes = 0;
+    BOOL bHandled = TRUE;
+    switch(uMsg)
+    {
+    case WM_CREATE:
+        lRes = OnCreate(uMsg, wParam, lParam, bHandled);
+        break;
+    case WM_CLOSE:
+        lRes = OnClose(uMsg, wParam, lParam, bHandled);
+        break;
+    case WM_DESTROY:
+        lRes = OnDestroy(uMsg, wParam, lParam, bHandled);
+        break;
+    case WM_NCACTIVATE:
+        lRes = OnNcActivate(uMsg, wParam, lParam, bHandled);
+        break;
+    case WM_NCCALCSIZE:
+        lRes = OnNcCalcSize(uMsg, wParam, lParam, bHandled);
+        break;
+    case WM_NCPAINT:
+        lRes = OnNcPaint(uMsg, wParam, lParam, bHandled);
+        break;
+    case WM_NCHITTEST:
+        lRes = OnNcHitTest(uMsg, wParam, lParam, bHandled);
+        break;
+    case WM_SIZE:
+        lRes = OnSize(uMsg, wParam, lParam, bHandled);
+        break;
+    case WM_GETMINMAXINFO:
+        lRes = OnGetMinMaxInfo(uMsg, wParam, lParam, bHandled);
+        break;
+    case WM_SYSCOMMAND:
+        lRes = OnSysCommand(uMsg, wParam, lParam, bHandled);
+        break;
+    default:
+        bHandled = FALSE;
+    }
+    if(bHandled)
+    {
+        return lRes;
+    }
+    if(m_pm.MessageHandler(uMsg, wParam, lParam, lRes))
+    {
+        return lRes;
+    }
+    return CWindowWnd::HandleMessage(uMsg, wParam, lParam);
+}
+
+LRESULT CGameFrameWnd::OnSysCommand(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
+{
+    // 有时会在收到WM_NCDESTROY后收到wParam为SC_CLOSE的WM_SYSCOMMAND
+    if(wParam == SC_CLOSE)
+    {
+        ::PostQuitMessage(0L);
+        bHandled = TRUE;
+        return 0;
+    }
+    BOOL bZoomed = ::IsZoomed(*this);
+    LRESULT lRes = CWindowWnd::HandleMessage(uMsg, wParam, lParam);
+    if(::IsZoomed(*this) != bZoomed)
+    {
+        if(!bZoomed)
+        {
+            CControlUI* pControl = static_cast<CControlUI*>(m_pm.FindControl(_T("maxbtn")));
+            if(pControl)
+            {
+                pControl->SetVisible(false);
+            }
+            pControl = static_cast<CControlUI*>(m_pm.FindControl(_T("restorebtn")));
+            if(pControl)
+            {
+                pControl->SetVisible(true);
+            }
+        }
+        else
+        {
+            CControlUI* pControl = static_cast<CControlUI*>(m_pm.FindControl(_T("maxbtn")));
+            if(pControl)
+            {
+                pControl->SetVisible(true);
+            }
+            pControl = static_cast<CControlUI*>(m_pm.FindControl(_T("restorebtn")));
+            if(pControl)
+            {
+                pControl->SetVisible(false);
+            }
+        }
+    }
+    return lRes;
+}
+
+LRESULT CGameFrameWnd::OnGetMinMaxInfo(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
+{
+    int primaryMonitorWidth = ::GetSystemMetrics(SM_CXSCREEN);
+    int primaryMonitorHeight = ::GetSystemMetrics(SM_CYSCREEN);
+    MONITORINFO oMonitor = {};
+    oMonitor.cbSize = sizeof(oMonitor);
+    ::GetMonitorInfo(::MonitorFromWindow(*this, MONITOR_DEFAULTTOPRIMARY), &oMonitor);
+    CDuiRect rcWork = oMonitor.rcWork;
+    rcWork.Offset(-oMonitor.rcMonitor.left, -oMonitor.rcMonitor.top);
+    if(rcWork.right > primaryMonitorWidth)
+    {
+        rcWork.right = primaryMonitorWidth;
+    }
+    if(rcWork.bottom > primaryMonitorHeight)
+    {
+        rcWork.right = primaryMonitorHeight;
+    }
+    LPMINMAXINFO lpMMI = (LPMINMAXINFO)lParam;
+    lpMMI->ptMaxPosition.x = rcWork.left;
+    lpMMI->ptMaxPosition.y = rcWork.top;
+    lpMMI->ptMaxSize.x = rcWork.right;
+    lpMMI->ptMaxSize.y = rcWork.bottom;
+    bHandled = FALSE;
+    return 0;
+}
+
+LRESULT CGameFrameWnd::OnSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
+{
+    SIZE szRoundCorner = m_pm.GetRoundCorner();
+    if(!::IsIconic(*this) && (szRoundCorner.cx != 0 || szRoundCorner.cy != 0))
+    {
+        CDuiRect rcWnd;
+        ::GetWindowRect(*this, &rcWnd);
+        rcWnd.Offset(-rcWnd.left, -rcWnd.top);
+        rcWnd.right++;
+        rcWnd.bottom++;
+        HRGN hRgn = ::CreateRoundRectRgn(rcWnd.left, rcWnd.top, rcWnd.right, rcWnd.bottom, szRoundCorner.cx, szRoundCorner.cy);
+        ::SetWindowRgn(*this, hRgn, TRUE);
+        ::DeleteObject(hRgn);
+    }
+
+    bHandled = FALSE;
+    return 0;
+}
+
+LRESULT CGameFrameWnd::OnNcHitTest(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
+{
+    POINT pt;
+    pt.x = GET_X_LPARAM(lParam);
+    pt.y = GET_Y_LPARAM(lParam);
+    ::ScreenToClient(*this, &pt);
+
+    RECT rcClient;
+    ::GetClientRect(*this, &rcClient);
+
+    if(!::IsZoomed(*this))
+    {
+        RECT rcSizeBox = m_pm.GetSizeBox();
+        if(pt.y < rcClient.top + rcSizeBox.top)
+        {
+            if(pt.x < rcClient.left + rcSizeBox.left)
+            {
+                return HTTOPLEFT;
+            }
+            if(pt.x > rcClient.right - rcSizeBox.right)
+            {
+                return HTTOPRIGHT;
+            }
+            return HTTOP;
+        }
+        else if(pt.y > rcClient.bottom - rcSizeBox.bottom)
+        {
+            if(pt.x < rcClient.left + rcSizeBox.left)
+            {
+                return HTBOTTOMLEFT;
+            }
+            if(pt.x > rcClient.right - rcSizeBox.right)
+            {
+                return HTBOTTOMRIGHT;
+            }
+            return HTBOTTOM;
+        }
+        if(pt.x < rcClient.left + rcSizeBox.left)
+        {
+            return HTLEFT;
+        }
+        if(pt.x > rcClient.right - rcSizeBox.right)
+        {
+            return HTRIGHT;
+        }
+    }
+
+    RECT rcCaption = m_pm.GetCaptionRect();
+    if(pt.x >= rcClient.left + rcCaption.left && pt.x < rcClient.right - rcCaption.right \
+            && pt.y >= rcCaption.top && pt.y < rcCaption.bottom)
+    {
+        CControlUI* pControl = static_cast<CControlUI*>(m_pm.FindControl(pt));
+        if(pControl && _tcscmp(pControl->GetClass(), DUI_CTR_BUTTON) != 0 &&
+                _tcscmp(pControl->GetClass(), DUI_CTR_OPTION) != 0 &&
+                _tcscmp(pControl->GetClass(), DUI_CTR_TEXT) != 0)
+        {
+            return HTCAPTION;
+        }
+    }
+
+    return HTCLIENT;
 }
 

+ 10 - 335
lewaimai_dispatch/wnd/CGameFrameWnd.h

@@ -10,14 +10,17 @@ class CGameFrameWnd : public CWindowWnd, public INotifyUI
 {
 public:
     CGameFrameWnd() { };
+
     LPCTSTR GetWindowClassName() const
     {
         return _T("UIMainFrame");
     };
+
     UINT GetClassStyle() const
     {
         return CS_DBLCLKS;
     };
+
     void OnFinalMessage(HWND /*hWnd*/)
     {
         delete this;
@@ -30,145 +33,9 @@ public:
 
     }
 
-    void Notify(TNotifyUI& msg)
-    {
-        if(msg.sType == _T("windowinit"))
-        {
-            OnPrepare();
-        }
-        else if(msg.sType == _T("click"))
-        {
-            if(msg.pSender == m_pCloseBtn)
-            {
-                COptionUI* pControl = static_cast<COptionUI*>(m_pm.FindControl(_T("hallswitch")));
-                if(pControl && pControl->IsSelected() == false)
-                {
-                    CControlUI* pFadeControl = m_pm.FindControl(_T("fadeEffect"));
-                    if(pFadeControl)
-                    {
-                        pFadeControl->SetVisible(true);
-                    }
-                }
-                else
-                {
-                    /*Close()*/PostQuitMessage(0); // 因为activex的原因,使用close可能会出现错误
-                }
-                return;
-            }
-            else if(msg.pSender == m_pMinBtn)
-            {
-                SendMessage(WM_SYSCOMMAND, SC_MINIMIZE, 0);
-                return;
-            }
-            else if(msg.pSender == m_pMaxBtn)
-            {
-                SendMessage(WM_SYSCOMMAND, SC_MAXIMIZE, 0);
-                return;
-            }
-            else if(msg.pSender == m_pRestoreBtn)
-            {
-                SendMessage(WM_SYSCOMMAND, SC_RESTORE, 0);
-                return;
-            }
-
-            CDuiString name = msg.pSender->GetName();
-            if(name == _T("quitbtn"))
-            {
-                /*Close()*/PostQuitMessage(0); // 因为activex的原因,使用close可能会出现错误
-            }
-            else if(name == _T("returnhallbtn"))
-            {
-                CControlUI* pFadeControl = m_pm.FindControl(_T("fadeEffect"));
-                if(pFadeControl)
-                {
-                    pFadeControl->SetVisible(false);
-                }
+	void Notify(TNotifyUI& msg);
 
-                COptionUI* pControl = static_cast<COptionUI*>(m_pm.FindControl(_T("hallswitch")));
-                pControl->Activate();
-                pControl = static_cast<COptionUI*>(m_pm.FindControl(_T("roomswitch")));
-                if(pControl)
-                {
-                    pControl->SetVisible(false);
-                }
-            }
-            else if(name == _T("fontswitch"))
-            {
-                TFontInfo* pFontInfo = m_pm.GetDefaultFontInfo();
-                if(pFontInfo->iSize < 18)
-                {
-                    TFontInfo* pFontInfo = m_pm.GetFontInfo(0);
-                    if(pFontInfo)m_pm.SetDefaultFont(pFontInfo->sFontName, pFontInfo->iSize, pFontInfo->bBold,
-                                                         pFontInfo->bUnderline, pFontInfo->bItalic);
-                }
-                else
-                {
-                    TFontInfo* pFontInfo = m_pm.GetFontInfo(1);
-                    if(pFontInfo)m_pm.SetDefaultFont(pFontInfo->sFontName, pFontInfo->iSize, pFontInfo->bBold,
-                                                         pFontInfo->bUnderline, pFontInfo->bItalic);
-                }
-                m_pm.GetRoot()->NeedUpdate();
-            }
-            else if(name == _T("leaveBtn") || name == _T("roomclosebtn"))
-            {
-                COptionUI* pControl = static_cast<COptionUI*>(m_pm.FindControl(_T("hallswitch")));
-                if(pControl)
-                {
-                    pControl->Activate();
-                    pControl = static_cast<COptionUI*>(m_pm.FindControl(_T("roomswitch")));
-                    if(pControl)
-                    {
-                        pControl->SetVisible(false);
-                    }
-                }
-            }
-			else if (name == _T("waimai_order_list_print"))
-			{
-				//外卖订单的打印
-				CWaimaiOrderItemUI* item = static_cast<CWaimaiOrderItemUI*>(msg.pSender->GetParent());
-				std::string waimai_order_id = item->getOrderID();
-				std::string waimai_order_no = item->getOrderNo();
-
-				CWaimaiOrder order;
-				order.InitData(waimai_order_id, waimai_order_no);
-
-				CPosPrinter printer;
-				printer.PrintWaimaiOrder(order);
-			}
-        }
-        else if(msg.sType == _T("selectchanged"))
-        {
-            CDuiString name = msg.pSender->GetName();
-            if(name == _T("hallswitch"))
-            {
-                CTabLayoutUI* pControl = static_cast<CTabLayoutUI*>(m_pm.FindControl(_T("switch")));
-                if(pControl && pControl->GetCurSel() != 0)
-                {
-                    pControl->SelectItem(0);
-                }
-            }
-        }
-        else if(msg.sType == _T("itemclick"))
-        {
-
-        }
-        else if(msg.sType == _T("itemactivate"))
-        {
-
-        }
-        else if(msg.sType == _T("itemselect"))
-        {
-            if(msg.pSender->GetName() == _T("chatCombo"))
-            {
-                CEditUI* pChatEdit = static_cast<CEditUI*>(m_pm.FindControl(_T("chatEdit")));
-                if(pChatEdit)
-                {
-                    pChatEdit->SetText(msg.pSender->GetText());
-                }
-                static_cast<CComboUI*>(msg.pSender)->SelectItem(-1);
-            }
-        }
-    }
+	void HandleClickMsg(TNotifyUI& msg);
 
     LRESULT OnCreate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
 
@@ -205,206 +72,15 @@ public:
         return 0;
     }
 
-    LRESULT OnNcHitTest(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
-    {
-        POINT pt;
-        pt.x = GET_X_LPARAM(lParam);
-        pt.y = GET_Y_LPARAM(lParam);
-        ::ScreenToClient(*this, &pt);
-
-        RECT rcClient;
-        ::GetClientRect(*this, &rcClient);
-
-        if(!::IsZoomed(*this))
-        {
-            RECT rcSizeBox = m_pm.GetSizeBox();
-            if(pt.y < rcClient.top + rcSizeBox.top)
-            {
-                if(pt.x < rcClient.left + rcSizeBox.left)
-                {
-                    return HTTOPLEFT;
-                }
-                if(pt.x > rcClient.right - rcSizeBox.right)
-                {
-                    return HTTOPRIGHT;
-                }
-                return HTTOP;
-            }
-            else if(pt.y > rcClient.bottom - rcSizeBox.bottom)
-            {
-                if(pt.x < rcClient.left + rcSizeBox.left)
-                {
-                    return HTBOTTOMLEFT;
-                }
-                if(pt.x > rcClient.right - rcSizeBox.right)
-                {
-                    return HTBOTTOMRIGHT;
-                }
-                return HTBOTTOM;
-            }
-            if(pt.x < rcClient.left + rcSizeBox.left)
-            {
-                return HTLEFT;
-            }
-            if(pt.x > rcClient.right - rcSizeBox.right)
-            {
-                return HTRIGHT;
-            }
-        }
-
-        RECT rcCaption = m_pm.GetCaptionRect();
-        if(pt.x >= rcClient.left + rcCaption.left && pt.x < rcClient.right - rcCaption.right \
-                && pt.y >= rcCaption.top && pt.y < rcCaption.bottom)
-        {
-            CControlUI* pControl = static_cast<CControlUI*>(m_pm.FindControl(pt));
-            if(pControl && _tcscmp(pControl->GetClass(), DUI_CTR_BUTTON) != 0 &&
-                    _tcscmp(pControl->GetClass(), DUI_CTR_OPTION) != 0 &&
-                    _tcscmp(pControl->GetClass(), DUI_CTR_TEXT) != 0)
-            {
-                return HTCAPTION;
-            }
-        }
-
-        return HTCLIENT;
-    }
-
-    LRESULT OnSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
-    {
-        SIZE szRoundCorner = m_pm.GetRoundCorner();
-        if(!::IsIconic(*this) && (szRoundCorner.cx != 0 || szRoundCorner.cy != 0))
-        {
-            CDuiRect rcWnd;
-            ::GetWindowRect(*this, &rcWnd);
-            rcWnd.Offset(-rcWnd.left, -rcWnd.top);
-            rcWnd.right++;
-            rcWnd.bottom++;
-            HRGN hRgn = ::CreateRoundRectRgn(rcWnd.left, rcWnd.top, rcWnd.right, rcWnd.bottom, szRoundCorner.cx, szRoundCorner.cy);
-            ::SetWindowRgn(*this, hRgn, TRUE);
-            ::DeleteObject(hRgn);
-        }
+	LRESULT OnNcHitTest(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
 
-        bHandled = FALSE;
-        return 0;
-    }
+	LRESULT OnSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
 
-    LRESULT OnGetMinMaxInfo(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
-    {
-        int primaryMonitorWidth = ::GetSystemMetrics(SM_CXSCREEN);
-        int primaryMonitorHeight = ::GetSystemMetrics(SM_CYSCREEN);
-        MONITORINFO oMonitor = {};
-        oMonitor.cbSize = sizeof(oMonitor);
-        ::GetMonitorInfo(::MonitorFromWindow(*this, MONITOR_DEFAULTTOPRIMARY), &oMonitor);
-        CDuiRect rcWork = oMonitor.rcWork;
-        rcWork.Offset(-oMonitor.rcMonitor.left, -oMonitor.rcMonitor.top);
-        if(rcWork.right > primaryMonitorWidth)
-        {
-            rcWork.right = primaryMonitorWidth;
-        }
-        if(rcWork.bottom > primaryMonitorHeight)
-        {
-            rcWork.right = primaryMonitorHeight;
-        }
-        LPMINMAXINFO lpMMI = (LPMINMAXINFO)lParam;
-        lpMMI->ptMaxPosition.x = rcWork.left;
-        lpMMI->ptMaxPosition.y = rcWork.top;
-        lpMMI->ptMaxSize.x = rcWork.right;
-        lpMMI->ptMaxSize.y = rcWork.bottom;
-        bHandled = FALSE;
-        return 0;
-    }
+	LRESULT OnGetMinMaxInfo(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
 
-    LRESULT OnSysCommand(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
-    {
-        // 有时会在收到WM_NCDESTROY后收到wParam为SC_CLOSE的WM_SYSCOMMAND
-        if(wParam == SC_CLOSE)
-        {
-            ::PostQuitMessage(0L);
-            bHandled = TRUE;
-            return 0;
-        }
-        BOOL bZoomed = ::IsZoomed(*this);
-        LRESULT lRes = CWindowWnd::HandleMessage(uMsg, wParam, lParam);
-        if(::IsZoomed(*this) != bZoomed)
-        {
-            if(!bZoomed)
-            {
-                CControlUI* pControl = static_cast<CControlUI*>(m_pm.FindControl(_T("maxbtn")));
-                if(pControl)
-                {
-                    pControl->SetVisible(false);
-                }
-                pControl = static_cast<CControlUI*>(m_pm.FindControl(_T("restorebtn")));
-                if(pControl)
-                {
-                    pControl->SetVisible(true);
-                }
-            }
-            else
-            {
-                CControlUI* pControl = static_cast<CControlUI*>(m_pm.FindControl(_T("maxbtn")));
-                if(pControl)
-                {
-                    pControl->SetVisible(true);
-                }
-                pControl = static_cast<CControlUI*>(m_pm.FindControl(_T("restorebtn")));
-                if(pControl)
-                {
-                    pControl->SetVisible(false);
-                }
-            }
-        }
-        return lRes;
-    }
+	LRESULT OnSysCommand(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
 
-    LRESULT HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam)
-    {
-        LRESULT lRes = 0;
-        BOOL bHandled = TRUE;
-        switch(uMsg)
-        {
-        case WM_CREATE:
-            lRes = OnCreate(uMsg, wParam, lParam, bHandled);
-            break;
-        case WM_CLOSE:
-            lRes = OnClose(uMsg, wParam, lParam, bHandled);
-            break;
-        case WM_DESTROY:
-            lRes = OnDestroy(uMsg, wParam, lParam, bHandled);
-            break;
-        case WM_NCACTIVATE:
-            lRes = OnNcActivate(uMsg, wParam, lParam, bHandled);
-            break;
-        case WM_NCCALCSIZE:
-            lRes = OnNcCalcSize(uMsg, wParam, lParam, bHandled);
-            break;
-        case WM_NCPAINT:
-            lRes = OnNcPaint(uMsg, wParam, lParam, bHandled);
-            break;
-        case WM_NCHITTEST:
-            lRes = OnNcHitTest(uMsg, wParam, lParam, bHandled);
-            break;
-        case WM_SIZE:
-            lRes = OnSize(uMsg, wParam, lParam, bHandled);
-            break;
-        case WM_GETMINMAXINFO:
-            lRes = OnGetMinMaxInfo(uMsg, wParam, lParam, bHandled);
-            break;
-        case WM_SYSCOMMAND:
-            lRes = OnSysCommand(uMsg, wParam, lParam, bHandled);
-            break;
-        default:
-            bHandled = FALSE;
-        }
-        if(bHandled)
-        {
-            return lRes;
-        }
-        if(m_pm.MessageHandler(uMsg, wParam, lParam, lRes))
-        {
-            return lRes;
-        }
-        return CWindowWnd::HandleMessage(uMsg, wParam, lParam);
-    }
+	LRESULT HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam);
 
 public:
     CPaintManagerUI m_pm;
@@ -414,5 +90,4 @@ private:
     CButtonUI* m_pMaxBtn;
     CButtonUI* m_pRestoreBtn;
     CButtonUI* m_pMinBtn;
-    //...
 };

+ 263 - 51
lewaimai_dispatch/wnd/OrderListUI.cpp

@@ -7,72 +7,284 @@
 
 void OrderListUI::Refresh()
 {
-	COptionUI* waimai_open_op = static_cast<COptionUI*>(m_pManager->FindControl(L"waimai_open_switch"));
-	if (waimai_open_op->IsSelected())
+	std::string url;
+	if (m_status == 1)
 	{
-		//请求外卖的未处理订单
-		std::map<string, string> params;
-		params["page"] = "1";
-		std::string response;
+		url = "/waimaiorder/getopenlist";
+	}
+	else if (m_status == 2)
+	{
+		url = "/waimaiorder/getconfirmedlist";
+	}
+	else if (m_status == 3)
+	{
+		url = "/waimaiorder/getdeliverylist";
+	}
+	else if (m_status == 4)
+	{
+		url = "/waimaiorder/getsucceededlist";
+	}
+	else if (m_status == 5)
+	{
+		url = "/waimaiorder/getfailedlist";
+	}
+	else if (m_status == 6)
+	{
+		url = "/waimaiorder/getrefundlist";
+	}
+
+	//请求外卖的未处理订单,直接用当前的page值去请求
+	std::map<string, string> params;
+	params["page"] = to_string(m_page);
+	std::string response;
+
+	CZhipuziHttpClient::RequestOld(url.c_str(), params, response);
+
+	//请求成功之后,清空之前的数据
+	this->RemoveAll();
+
+	rapidjson::Document document;
+	document.Parse(response.c_str());
+
+	if (document.HasParseError())
+	{
+		LOG_INFO("parse response error!");
+		return;
+	}
+
+	if (!document.HasMember("errcode") || !document.HasMember("errmsg") || !document.HasMember("data"))
+	{
+		LOG_INFO("json error!");
+		return;
+	}
+
+	rapidjson::Value& v_errcode = document["errcode"];
+	int errcode = v_errcode.GetInt();
+	if (errcode != 0)
+	{
+		LOG_INFO("response failed! message:" << document["errmsg"].GetString());
+		return;
+	}
+
+	//获得数据成功
+	rapidjson::Value& data = document["data"];
+
+	rapidjson::Value& v_count = data["count"];
+	string count = v_count.GetString();
+
+	//处理页数
+	int nCount = atoi(count.c_str());
+	m_total_page = (int)ceil(nCount / 20.0);
+	if (m_total_page < 1)
+	{
+		m_total_page = 1;
+	}
+
+	if (m_page <= 1)
+	{
+		m_page = 1;
+		CButtonUI* pControl = static_cast<CButtonUI*>(m_pManager->FindControl(_T("waimai_order_list_last")));
+		pControl->SetEnabled(false);
+	}
+	if (m_page >= m_total_page)
+	{
+		m_page = m_total_page;
+		CButtonUI* pControl = static_cast<CButtonUI*>(m_pManager->FindControl(_T("waimai_order_list_next")));
+		pControl->SetEnabled(false);
+	}
+
+	CLabelUI* pControl = static_cast<CLabelUI*>(m_pManager->FindControl(_T("waimai_order_list_page")));
+	wstring pageinfo = _T("第 ") + CLewaimaiString::ANSIToUnicode(to_string(m_page)) + _T("页/共 ") + CLewaimaiString::ANSIToUnicode(to_string(m_total_page)) + _T("页");
+	pControl->SetText(pageinfo.c_str());
+
+	rapidjson::Value& v_rows = data["rows"];
+
+	for (rapidjson::SizeType i = 0; i < v_rows.Size(); ++i)
+	{
+		rapidjson::Value& v_row_i = v_rows[i];
+
+		//创建一个对象
+		CDialogBuilder builder;
+		CDialogBuilderCallbackEx cb;
+
+		CWaimaiOrderItemUI* pDesk = static_cast<CWaimaiOrderItemUI*>(builder.Create(_T("desk.xml"), (UINT)0, &cb, m_pManager));							
+		if (pDesk != NULL)
+		{
+			//初始化该对应的数据
+			pDesk->SetData(v_row_i);
+
+			this->Add(pDesk);
+
+			pDesk = NULL;
+		}
+	}
+
+	//重置滚动条的位置
+	tagSIZE size;
+	size.cx = 0;
+	size.cy = 0;
+	this->SetScrollPos(size);
+}
+
+void OrderListUI::LastPage()
+{
+	m_page--;
+	if (m_page < 1)
+	{
+		m_page = 1;
+	}
+
+	if (m_page == 1)
+	{
+		CButtonUI* pControl = static_cast<CButtonUI*>(m_pManager->FindControl(_T("waimai_order_list_last")));
+		pControl->SetEnabled(false);
+	}
 
-		CZhipuziHttpClient::RequestOld("/waimaiorder/getopenlist", params, response);
+	Refresh();
+}
 
-		rapidjson::Document document;
-		document.Parse(response.c_str());
+void OrderListUI::NextPage()
+{
+	m_page++;
+	if (m_page > m_total_page)
+	{
+		m_page = m_total_page;
+	}
 
-		if (document.HasParseError())
+	if (m_page == m_total_page)
+	{
+		CButtonUI* pControl = static_cast<CButtonUI*>(m_pManager->FindControl(_T("waimai_order_list_next")));
+		pControl->SetEnabled(false);
+	}
+
+	Refresh();
+}
+
+void OrderListUI::DoEvent(TEventUI& event)
+{
+	if (!IsMouseEnabled() && event.Type > UIEVENT__MOUSEBEGIN && event.Type < UIEVENT__MOUSEEND)
+	{
+		if (m_pParent != NULL)
 		{
-			LOG_INFO("parse response error!");
+			m_pParent->DoEvent(event);
 		}
 		else
 		{
-			if (!document.HasMember("errcode") || !document.HasMember("errmsg") || !document.HasMember("data"))
-			{
-				LOG_INFO("json error!");
-			}
+			CTileLayoutUI::DoEvent(event);
+		}
+		return;
+	}
 
-			rapidjson::Value& v_errcode = document["errcode"];
-			int errcode = v_errcode.GetInt();
-			if (errcode != 0)
+	if (event.Type == UIEVENT_TIMER && event.wParam == SCROLL_TIMERID)
+	{
+		if ((m_uButtonState & UISTATE_CAPTURED) != 0)
+		{
+			POINT pt = m_pManager->GetMousePos();
+			LONG cy = (pt.y - m_ptLastMouse.y);
+			m_ptLastMouse = pt;
+			SIZE sz = GetScrollPos();
+			sz.cy -= cy;
+			SetScrollPos(sz);
+			return;
+		}
+		else if (m_dwDelayLeft > 0)
+		{
+			--m_dwDelayLeft;
+			SIZE sz = GetScrollPos();
+			LONG lDeltaY = (LONG)(CalculateDelay((double)m_dwDelayLeft / m_dwDelayNum) * m_dwDelayDeltaY);
+			if ((lDeltaY > 0 && sz.cy != 0) || (lDeltaY < 0 && sz.cy != GetScrollRange().cy))
 			{
-				LOG_INFO("response failed! message:" << document["errmsg"].GetString());
+				sz.cy -= lDeltaY;
+				SetScrollPos(sz);
+				return;
 			}
+		}
+		m_dwDelayDeltaY = 0;
+		m_dwDelayNum = 0;
+		m_dwDelayLeft = 0;
+		m_pManager->KillTimer(this, SCROLL_TIMERID);
+		return;
+	}
+	if (event.Type == UIEVENT_BUTTONDOWN && IsEnabled())
+	{
+		m_uButtonState |= UISTATE_CAPTURED;
+		m_ptLastMouse = event.ptMouse;
+		m_dwDelayDeltaY = 0;
+		m_dwDelayNum = 0;
+		m_dwDelayLeft = 0;
+		::SetCursor(::LoadCursor(NULL, MAKEINTRESOURCE(IDC_HAND)));
+		m_pManager->SetTimer(this, SCROLL_TIMERID, 50U);
+		return;
+	}
+	if (event.Type == UIEVENT_BUTTONUP)
+	{
+		if ((m_uButtonState & UISTATE_CAPTURED) != 0)
+		{
+			m_uButtonState &= ~UISTATE_CAPTURED;
+			::SetCursor(::LoadCursor(NULL, MAKEINTRESOURCE(IDC_ARROW)));
+			if (m_ptLastMouse.y != event.ptMouse.y)
 			{
-				//获得数据成功
-				rapidjson::Value& data = document["data"];
-
-				rapidjson::Value& v_count = data["count"];
-				string count = v_count.GetString();
-
-				rapidjson::Value& v_rows = data["rows"];
-
-				for (rapidjson::SizeType i = 0; i < v_rows.Size(); ++i)
+				m_dwDelayDeltaY = (event.ptMouse.y - m_ptLastMouse.y);
+				if (m_dwDelayDeltaY > 120)
+				{
+					m_dwDelayDeltaY = 120;
+				}
+				else if (m_dwDelayDeltaY < -120)
 				{
-					rapidjson::Value& v_row_i = v_rows[i];
-
-					//创建一个对象
-					CDialogBuilder builder;
-					CDialogBuilderCallbackEx cb;
-
-					CWaimaiOrderItemUI* pDesk = static_cast<CWaimaiOrderItemUI*>(builder.Create(_T("desk.xml"), (UINT)0, &cb, m_pManager));							
-					if (pDesk != NULL)
-					{
-						//初始化该对应的数据
-						pDesk->SetData(v_row_i);
-
-						this->Add(pDesk);
-
-						pDesk = NULL;
-					}
-					else 
-					{
-						return;
-					}
+					m_dwDelayDeltaY = -120;
 				}
+				m_dwDelayNum = (DWORD)sqrt((double)abs(m_dwDelayDeltaY)) * 5;
+				m_dwDelayLeft = m_dwDelayNum;
+			}
+			else
+			{
+				m_pManager->KillTimer(this, SCROLL_TIMERID);
 			}
 		}
+		return;
 	}
-
-	
-	
+	if (event.Type == UIEVENT_SCROLLWHEEL)
+	{
+		LONG lDeltaY = 0;
+		if (m_dwDelayNum > 0)
+		{
+			lDeltaY = (LONG)(CalculateDelay((double)m_dwDelayLeft / m_dwDelayNum) * m_dwDelayDeltaY);
+		}
+		switch (LOWORD(event.wParam))
+		{
+		case SB_LINEUP:
+			if (m_dwDelayDeltaY >= 0)
+			{
+				m_dwDelayDeltaY = lDeltaY + 8;
+			}
+			else
+			{
+				m_dwDelayDeltaY = lDeltaY + 12;
+			}
+			break;
+		case SB_LINEDOWN:
+			if (m_dwDelayDeltaY <= 0)
+			{
+				m_dwDelayDeltaY = lDeltaY - 8;
+			}
+			else
+			{
+				m_dwDelayDeltaY = lDeltaY - 12;
+			}
+			break;
+		}
+		if (m_dwDelayDeltaY > 100)
+		{
+			m_dwDelayDeltaY = 100;
+		}
+		else if (m_dwDelayDeltaY < -100)
+		{
+			m_dwDelayDeltaY = -100;
+		}
+		m_dwDelayNum = (DWORD)sqrt((double)abs(m_dwDelayDeltaY)) * 5;
+		m_dwDelayLeft = m_dwDelayNum;
+		m_pManager->SetTimer(this, SCROLL_TIMERID, 50U);
+		return;
+	}
+	CTileLayoutUI::DoEvent(event);
 }

+ 18 - 128
lewaimai_dispatch/wnd/OrderListUI.h

@@ -15,137 +15,24 @@ public:
         SetItemSize(CSize(1000, 200));
     }
 
-    //刷新
+    //刷新当前页面的内容,注意这个函数不会改变当前的订单状态以及“页数”
     void Refresh();
 
-    void DoEvent(TEventUI& event)
-    {
-        if(!IsMouseEnabled() && event.Type > UIEVENT__MOUSEBEGIN && event.Type < UIEVENT__MOUSEEND)
-        {
-            if(m_pParent != NULL)
-            {
-                m_pParent->DoEvent(event);
-            }
-            else
-            {
-                CTileLayoutUI::DoEvent(event);
-            }
-            return;
-        }
+	void LastPage();
 
-        if(event.Type == UIEVENT_TIMER && event.wParam == SCROLL_TIMERID)
-        {
-            if((m_uButtonState & UISTATE_CAPTURED) != 0)
-            {
-                POINT pt = m_pManager->GetMousePos();
-                LONG cy = (pt.y - m_ptLastMouse.y);
-                m_ptLastMouse = pt;
-                SIZE sz = GetScrollPos();
-                sz.cy -= cy;
-                SetScrollPos(sz);
-                return;
-            }
-            else if(m_dwDelayLeft > 0)
-            {
-                --m_dwDelayLeft;
-                SIZE sz = GetScrollPos();
-                LONG lDeltaY = (LONG)(CalculateDelay((double)m_dwDelayLeft / m_dwDelayNum) * m_dwDelayDeltaY);
-                if((lDeltaY > 0 && sz.cy != 0) || (lDeltaY < 0 && sz.cy != GetScrollRange().cy))
-                {
-                    sz.cy -= lDeltaY;
-                    SetScrollPos(sz);
-                    return;
-                }
-            }
-            m_dwDelayDeltaY = 0;
-            m_dwDelayNum = 0;
-            m_dwDelayLeft = 0;
-            m_pManager->KillTimer(this, SCROLL_TIMERID);
-            return;
-        }
-        if(event.Type == UIEVENT_BUTTONDOWN && IsEnabled())
-        {
-            m_uButtonState |= UISTATE_CAPTURED;
-            m_ptLastMouse = event.ptMouse;
-            m_dwDelayDeltaY = 0;
-            m_dwDelayNum = 0;
-            m_dwDelayLeft = 0;
-            ::SetCursor(::LoadCursor(NULL, MAKEINTRESOURCE(IDC_HAND)));
-            m_pManager->SetTimer(this, SCROLL_TIMERID, 50U);
-            return;
-        }
-        if(event.Type == UIEVENT_BUTTONUP)
-        {
-            if((m_uButtonState & UISTATE_CAPTURED) != 0)
-            {
-                m_uButtonState &= ~UISTATE_CAPTURED;
-                ::SetCursor(::LoadCursor(NULL, MAKEINTRESOURCE(IDC_ARROW)));
-                if(m_ptLastMouse.y != event.ptMouse.y)
-                {
-                    m_dwDelayDeltaY = (event.ptMouse.y - m_ptLastMouse.y);
-                    if(m_dwDelayDeltaY > 120)
-                    {
-                        m_dwDelayDeltaY = 120;
-                    }
-                    else if(m_dwDelayDeltaY < -120)
-                    {
-                        m_dwDelayDeltaY = -120;
-                    }
-                    m_dwDelayNum = (DWORD)sqrt((double)abs(m_dwDelayDeltaY)) * 5;
-                    m_dwDelayLeft = m_dwDelayNum;
-                }
-                else
-                {
-                    m_pManager->KillTimer(this, SCROLL_TIMERID);
-                }
-            }
-            return;
-        }
-        if(event.Type == UIEVENT_SCROLLWHEEL)
-        {
-            LONG lDeltaY = 0;
-            if(m_dwDelayNum > 0)
-            {
-                lDeltaY = (LONG)(CalculateDelay((double)m_dwDelayLeft / m_dwDelayNum) * m_dwDelayDeltaY);
-            }
-            switch(LOWORD(event.wParam))
-            {
-            case SB_LINEUP:
-                if(m_dwDelayDeltaY >= 0)
-                {
-                    m_dwDelayDeltaY = lDeltaY + 8;
-                }
-                else
-                {
-                    m_dwDelayDeltaY = lDeltaY + 12;
-                }
-                break;
-            case SB_LINEDOWN:
-                if(m_dwDelayDeltaY <= 0)
-                {
-                    m_dwDelayDeltaY = lDeltaY - 8;
-                }
-                else
-                {
-                    m_dwDelayDeltaY = lDeltaY - 12;
-                }
-                break;
-            }
-            if(m_dwDelayDeltaY > 100)
-            {
-                m_dwDelayDeltaY = 100;
-            }
-            else if(m_dwDelayDeltaY < -100)
-            {
-                m_dwDelayDeltaY = -100;
-            }
-            m_dwDelayNum = (DWORD)sqrt((double)abs(m_dwDelayDeltaY)) * 5;
-            m_dwDelayLeft = m_dwDelayNum;
-            m_pManager->SetTimer(this, SCROLL_TIMERID, 50U);
-            return;
-        }
-        CTileLayoutUI::DoEvent(event);
-    }
+	void NextPage();
+
+	void DoEvent(TEventUI& event);
+
+	void SetStatus(int status)
+	{
+		m_status = status;
+	}
+
+	void SetPage(int n)
+	{
+		m_page = n;
+	}
 
 private:
     UINT m_uButtonState;
@@ -155,4 +42,7 @@ private:
     DWORD m_dwDelayLeft;
 
     int m_status = 1; //1:未处理 2:已确认 3:配送中 4:成功 5:失败 6:退款中
+	int m_page = 1;
+
+	int m_total_page; //总页数
 };