فهرست منبع

订单设置失败的弹框弄好了

zhangyang 6 سال پیش
والد
کامیت
333b23136b

BIN
bin/Win32/Debug/zhipuzi_pos_windows/db/pos.db


+ 24 - 0
bin/Win32/Debug/zhipuzi_pos_windows/skin/waimai_order_fail_reason_dlg.xml

@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Window size="600,300" caption="0,0,0,36" roundcorner="4,4" >
+	<VerticalLayout bkimage="file='Dialog_BG1.png' corner='4,50,4,4'">
+		<HorizontalLayout height="40" inset="10,2,10,0">
+			<Label name="waimai_order_fail_dlg_title" text="填写订单失败原因" width="100" />
+			<Control />
+			<Button name="waimai_order_fail_dlg_closebtn" padding="0,4,0,0" width="22" height="22" tooltip="关闭" normalimage="file='Login_TopBar_Close_Btn.png'" hotimage="file='Login_TopBar_Close_Btn_Hover.png'" pushedimage="file='Login_TopBar_Close_Btn_Click.png'"/>
+		</HorizontalLayout>
+		<VerticalLayout inset="15,0,15,15" vscrollbar="true" >
+			<Control height="20" />
+
+			<HorizontalLayout height="56">
+				<Label text="订单商标原因" width="160"/>
+				<Edit name="waimai_order_fail_dlg_reason" width="400" height="32" padding="0,12,0,12" normalimage="file='Chat_InputBox_BG.png' corner='4,4,4,4'" hotimage="file='Chat_InputBox_BG_Hover.png' corner='4,4,4,4'" />
+			</HorizontalLayout>
+		</VerticalLayout>
+		
+		<HorizontalLayout height="56" valign="center" padding="0,30,0,20">
+			<Control />
+			<Button name="waimai_order_fail_dlg_save" align="center" width="280" height="44" 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'" />
+			<Control />
+		</HorizontalLayout>
+	</VerticalLayout>
+</Window>

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


BIN
bin/Win32/Debug/zhipuzi_pos_windows_server/icon.ico


BIN
bin/Win32/Debug/zhipuzi_pos_windows_server/zhipuzi_pos_windows_server.exe


+ 1 - 1
zhipuzi_pos_windows/wnd/CChufangSettingWnd.h

@@ -18,7 +18,7 @@ public:
 
     LPCTSTR GetWindowClassName() const
     {
-        return _T("UILoginFrame");
+        return _T("UIChufangSettingFrame");
     };
 
     UINT GetClassStyle() const

+ 48 - 21
zhipuzi_pos_windows/wnd/CMainWnd.cpp

@@ -8,6 +8,7 @@
 #include "../control/CWaimaiOrderInfoUI.h"
 
 #include "../network/CMessagePush.h"
+#include "CWaimaiOrderFailReasonWnd.h"
 
 void CMainWnd::Init()
 {
@@ -174,16 +175,29 @@ void CMainWnd::HandleClickMsg(TNotifyUI& msg)
         CWaimaiOrderItemUI* item = static_cast<CWaimaiOrderItemUI*>(msg.pSender->GetParent()->GetParent());
         std::string waimai_order_id = item->getOrderID();
 
-        CWaimaiOrder order;
-        bool ret = order.FailOrder(waimai_order_id, CLewaimaiString::UnicodeToUTF8(L"windows收银机设置"));
+		CWaimaiOrderFailReasonWnd* pWaimaiFailFrame = new CWaimaiOrderFailReasonWnd();
+		pWaimaiFailFrame->Create(this->GetHWND(), _T(""), UI_WNDSTYLE_DIALOG, WS_EX_WINDOWEDGE);
+		pWaimaiFailFrame->SetIcon(IDI_ICON_DUILIB);
+		pWaimaiFailFrame->CenterWindow();
+		UINT ret = pWaimaiFailFrame->ShowModal();
 
-        if(ret)
-        {
-            //如果设为失败成功,将被设为失败的订单删除掉
-            OrderListUI* orderlist = static_cast<OrderListUI*>(m_pm.FindControl(_T("orderlist")));
-            int index = orderlist->GetItemIndex(item);
-            orderlist->RemoveAt(index);
-        }
+		if (ret == IDOK)
+		{
+			std::string sReason = pWaimaiFailFrame->getReason();
+
+			CWaimaiOrder order;
+			bool ret = order.FailOrder(waimai_order_id, sReason);
+
+			if (ret)
+			{
+				//如果设为失败成功,将被设为失败的订单删除掉
+				OrderListUI* orderlist = static_cast<OrderListUI*>(m_pm.FindControl(_T("orderlist")));
+				int index = orderlist->GetItemIndex(item);
+				orderlist->RemoveAt(index);
+			}
+		}
+
+		delete pWaimaiFailFrame;
     }
 
     else if(name == _T("waimai_order_list_agree"))
@@ -338,20 +352,33 @@ void CMainWnd::HandleClickMsg(TNotifyUI& msg)
         std::string waimai_order_id = order_info_page->m_order.m_order_id;
         std::string waimai_order_no = order_info_page->m_order.m_order_no;
 
-        CWaimaiOrder order;
-        bool ret = order.FailOrder(waimai_order_id, "Windwos收银机测试");
+		CWaimaiOrderFailReasonWnd* pWaimaiFailFrame = new CWaimaiOrderFailReasonWnd();
+		pWaimaiFailFrame->Create(this->GetHWND(), _T(""), UI_WNDSTYLE_DIALOG, WS_EX_WINDOWEDGE);
+		pWaimaiFailFrame->SetIcon(IDI_ICON_DUILIB);
+		pWaimaiFailFrame->CenterWindow();
+		UINT ret = pWaimaiFailFrame->ShowModal();
 
-        if(ret)
-        {
-            //订单设为失败,这里怎么处理
-            //请求服务器,获取订单数据
-            CWaimaiOrder new_order;
-            new_order.InitData(waimai_order_id, waimai_order_no);
+		if (ret == IDOK)
+		{
+			std::string sReason = pWaimaiFailFrame->getReason();
+
+			CWaimaiOrder order;
+			bool ret = order.FailOrder(waimai_order_id, sReason);
+
+			if (ret)
+			{
+				//订单设为失败,这里怎么处理
+				//请求服务器,获取订单数据
+				CWaimaiOrder new_order;
+				new_order.InitData(waimai_order_id, waimai_order_no);
+
+				//刷新订单详情页数据
+				order_info_page->SetDate(new_order);
+				order_info_page->Refresh(new_order);
+			}
+		}
 
-            //刷新订单详情页数据
-            order_info_page->SetDate(new_order);
-            order_info_page->Refresh(new_order);
-        }
+		delete pWaimaiFailFrame;
     }
 
     else if(name == _T("waimai_order_info_page_agree"))

+ 103 - 0
zhipuzi_pos_windows/wnd/CWaimaiOrderFailReasonWnd.cpp

@@ -0,0 +1,103 @@
+#include "../pch/pch.h"
+#include "CWaimaiOrderFailReasonWnd.h"
+
+LRESULT CWaimaiOrderFailReasonWnd::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);
+
+	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)
+		{
+			return HTCAPTION;
+		}
+	}
+
+	return HTCLIENT;
+}
+
+LRESULT CWaimaiOrderFailReasonWnd::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 CWaimaiOrderFailReasonWnd::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_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;
+	default:
+		bHandled = FALSE;
+	}
+	if (bHandled)
+	{
+		return lRes;
+	}
+	if (m_pm.MessageHandler(uMsg, wParam, lParam, lRes))
+	{
+		return lRes;
+	}
+	return CWindowWnd::HandleMessage(uMsg, wParam, lParam);
+}
+
+LRESULT CWaimaiOrderFailReasonWnd::MessageHandler(UINT uMsg, WPARAM wParam, LPARAM lParam, bool& bHandled)
+{
+	if (uMsg == WM_KEYDOWN)
+	{
+		if (wParam == VK_RETURN)
+		{
+			return true;
+		}
+		else if (wParam == VK_ESCAPE)
+		{
+			return true;
+		}
+	}
+	return false;
+}
+
+
+
+

+ 121 - 0
zhipuzi_pos_windows/wnd/CWaimaiOrderFailReasonWnd.h

@@ -0,0 +1,121 @@
+#pragma once
+
+#include "../pch/pch.h"
+#include "CMainWnd.h"
+
+class CWaimaiOrderFailReasonWnd : public CWindowWnd, public INotifyUI, public IMessageFilterUI
+{
+public:
+	LPCTSTR GetWindowClassName() const
+	{
+		return _T("UIWaimaiOrderFailFrame");
+	};
+
+	UINT GetClassStyle() const
+	{
+		return UI_CLASSSTYLE_DIALOG;
+	};
+
+	void OnFinalMessage(HWND /*hWnd*/)
+	{
+		//WindowImplBase::OnFinalMessage(hWnd);
+		m_pm.RemovePreMessageFilter(this);
+		
+		//delete this;
+	};
+
+	void Init()
+	{
+		
+	}
+
+	std::string getReason()
+	{
+		return m_reason;
+	}
+
+	void Notify(TNotifyUI& msg)
+	{
+		if (msg.sType == _T("click"))
+		{
+			DuiLib::CDuiString senderName = msg.pSender->GetName();
+
+			if (senderName == _T("waimai_order_fail_dlg_closebtn"))
+			{
+				Close(IDCANCEL);
+				return;
+			}
+			else if (senderName == _T("waimai_order_fail_dlg_save"))
+			{
+				//开始保存厨房打印机的数据
+				CEditUI* pReason = static_cast<CEditUI*>(m_pm.FindControl(_T("waimai_order_fail_dlg_reason")));
+				wstring wsReason = pReason->GetText();
+
+				m_reason = CLewaimaiString::UnicodeToUTF8(wsReason);
+
+				Close(IDOK);
+				return;
+			}
+		}
+	}
+
+	LRESULT 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);
+
+		// 把自己的窗口句柄与窗口绘制管理器挂接在一起
+		m_pm.Init(m_hWnd);
+
+		m_pm.AddPreMessageFilter(this);
+
+		CDialogBuilder builder;
+
+		CControlUI* pRoot = builder.Create(_T("waimai_order_fail_reason_dlg.xml"), (UINT)0, NULL, &m_pm);
+		ASSERT(pRoot && "Failed to parse XML");
+
+		// 把这些控件绘制到本窗口上
+		m_pm.AttachDialog(pRoot);
+
+		// 把自己加入到CPaintManagerUI的m_aNotifiers数组中,用于处理Notify函数
+		m_pm.AddNotifier(this);
+
+		Init();
+
+		return 0;
+	}
+
+	LRESULT OnNcActivate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
+	{
+		if (::IsIconic(*this))
+		{
+			bHandled = FALSE;
+		}
+		return (wParam == 0) ? TRUE : FALSE;
+	}
+
+	LRESULT OnNcCalcSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
+	{
+		return 0;
+	}
+
+	LRESULT OnNcPaint(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
+	{
+		return 0;
+	}
+
+	LRESULT OnNcHitTest(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
+
+	LRESULT OnSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
+
+	LRESULT HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam);
+
+	LRESULT MessageHandler(UINT uMsg, WPARAM wParam, LPARAM lParam, bool& bHandled);
+
+public:
+	CPaintManagerUI m_pm;
+
+	std::string m_reason;
+};
+

+ 2 - 0
zhipuzi_pos_windows/zhipuzi_pos_windows.vcxproj

@@ -201,6 +201,7 @@ copy $(ProjectDir)conf\ $(SolutionDir)bin\$(Platform)\$(Configuration)\conf\</Co
     </PostBuildEvent>
   </ItemDefinitionGroup>
   <ItemGroup>
+    <ClInclude Include="wnd\CWaimaiOrderFailReasonWnd.h" />
     <ClInclude Include="network\PosMessage.h" />
     <ClInclude Include="wnd\CChufangSettingWnd.h" />
     <ClInclude Include="control\CWaimaiOrderInfoUI.h" />
@@ -228,6 +229,7 @@ copy $(ProjectDir)conf\ $(SolutionDir)bin\$(Platform)\$(Configuration)\conf\</Co
     <ClInclude Include="control\OrderListUI.h" />
   </ItemGroup>
   <ItemGroup>
+    <ClCompile Include="wnd\CWaimaiOrderFailReasonWnd.cpp" />
     <ClCompile Include="wnd\CChufangSettingWnd.cpp" />
     <ClCompile Include="control\CWaimaiOrderInfoUI.cpp" />
     <ClCompile Include="control\CSettingUI.cpp" />

+ 6 - 0
zhipuzi_pos_windows/zhipuzi_pos_windows.vcxproj.filters

@@ -90,6 +90,9 @@
     <ClInclude Include="network\PosMessage.h">
       <Filter>头文件</Filter>
     </ClInclude>
+    <ClInclude Include="wnd\CWaimaiOrderFailReasonWnd.h">
+      <Filter>头文件</Filter>
+    </ClInclude>
   </ItemGroup>
   <ItemGroup>
     <ClCompile Include="pch\pch.cpp">
@@ -158,6 +161,9 @@
     <ClCompile Include="wnd\CChufangSettingWnd.cpp">
       <Filter>源文件</Filter>
     </ClCompile>
+    <ClCompile Include="wnd\CWaimaiOrderFailReasonWnd.cpp">
+      <Filter>源文件</Filter>
+    </ClCompile>
   </ItemGroup>
   <ItemGroup>
     <Image Include="resource\zhipuzi.ico">