CDianneiOrderInfoPageUI.cpp 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380
  1. #include "../pch/pch.h"
  2. #include "CDianneiOrderInfoPageUI.h"
  3. #include "../control/ControlEx.h"
  4. #include "../wnd/CMainWnd.h"
  5. #include "../network/CMessagePush.h"
  6. #include "../print/CPosPrinter.h"
  7. CDianneiOrderInfoPageUI::CDianneiOrderInfoPageUI()
  8. {
  9. }
  10. CDianneiOrderInfoPageUI::~CDianneiOrderInfoPageUI()
  11. {
  12. }
  13. //初始化当前页面的展示,处理默认展示效果,在页面被加载的时候调用
  14. void CDianneiOrderInfoPageUI::InitShow()
  15. {
  16. //请求服务器,获取订单数据
  17. CDiandanOrder order;
  18. order.InitData(m_order_id);
  19. //刷新订单详情页数据
  20. this->SetDate(order);
  21. this->Refresh(order);
  22. }
  23. //处理按钮点击类事件
  24. void CDianneiOrderInfoPageUI::HandleClickMsg(TNotifyUI& msg)
  25. {
  26. CDuiString name = msg.pSender->GetName();
  27. if (name == _T("diannei_order_info_page_return"))
  28. {
  29. m_pMainWnd->SwitchPage(CMainWnd::DIANNEIDINGDAN);
  30. }
  31. else if (name == _T("diannei_order_info_page_print"))
  32. {
  33. CPosPrinter printer;
  34. printer.PrintDiandanOrder(this->m_order.m_order_id);
  35. }
  36. else if (name == _T("diannei_order_info_page_refund"))
  37. {
  38. std::string diannei_order_id = this->m_order.m_order_id;
  39. CDiandanOrder order;
  40. bool ret = order.Refund(diannei_order_id);
  41. if (ret)
  42. {
  43. //订单设为成功,这里怎么处理
  44. //请求服务器,获取订单数据
  45. CDiandanOrder new_order;
  46. new_order.InitData(diannei_order_id);
  47. //刷新订单详情页数据
  48. this->SetDate(new_order);
  49. this->Refresh(new_order);
  50. }
  51. }
  52. }
  53. //处理option切换事件
  54. void CDianneiOrderInfoPageUI::HandleSelectChangeMsg(TNotifyUI& msg)
  55. {
  56. }
  57. //处理下拉框、radio的切换事件
  58. void CDianneiOrderInfoPageUI::HandleItemSelectMsg(TNotifyUI& msg)
  59. {
  60. }
  61. //处理编辑框输入内容改变事件
  62. void CDianneiOrderInfoPageUI::HandleTextChangedMsg(TNotifyUI& msg)
  63. {
  64. }
  65. //处理扫码枪捕捉到的扫码信息
  66. void CDianneiOrderInfoPageUI::HandleTextCapture(std::string content)
  67. {
  68. }
  69. //刷新当前页面的内容,注意这个函数不会改变当前的订单状态以及“页数”
  70. void CDianneiOrderInfoPageUI::SetDate(CDiandanOrder& order)
  71. {
  72. m_order = order;
  73. }
  74. void CDianneiOrderInfoPageUI::Refresh(CDiandanOrder& order)
  75. {
  76. std::wstring order_no_show = L"订单号:" + CLewaimaiString::UTF8ToUnicode(order.show_trade_no);
  77. this->FindSubControl(_T("diannei_order_info_page_order_num"))->SetText(order_no_show.c_str());
  78. //商品详情的渲染
  79. CListUI* pFoodList = static_cast<CListUI*>(this->FindSubControl(_T("diannei_order_info_page_foodlist")));
  80. pFoodList->RemoveAll();
  81. for (std::vector<CDiandanOrderItemPrint>::iterator it = order.m_items_print.begin(); it != order.m_items_print.end(); it++)
  82. {
  83. std::string food_name = (*it).m_food_name;
  84. std::string food_price = (*it).m_item_price;
  85. std::string quantity = (*it).m_quantity;
  86. CDialogBuilder builder;
  87. CListContainerElementUI* pEle = static_cast<CListContainerElementUI *>(builder.Create(_T("diannei_order_info_page_listitem.xml"), (UINT)0, NULL, m_pManager));
  88. CLabelUI *pName = static_cast<CLabelUI *>(pEle->FindSubControl(_T("diannei_order_info_page_listitem_foodname")));
  89. pName->SetText(CLewaimaiString::UTF8ToUnicode(food_name).c_str());
  90. CLabelUI *pQuantity = static_cast<CLabelUI *>(pEle->FindSubControl(_T("diannei_order_info_page_listitem_quantity")));
  91. pQuantity->SetText(CLewaimaiString::UTF8ToUnicode(quantity).c_str());
  92. CLabelUI *pPrice = static_cast<CLabelUI *>(pEle->FindSubControl(_T("diannei_order_info_page_listitem_price")));
  93. pPrice->SetText(CLewaimaiString::UTF8ToUnicode(food_price).c_str());
  94. pFoodList->Add(pEle);
  95. }
  96. //重设商品列表的高度
  97. int order_item_height = (order.m_items_print.size() + 1) * 30;
  98. pFoodList->SetFixedHeight(order_item_height);
  99. CLabelUI *pMemo = static_cast<CLabelUI *>(this->FindSubControl(_T("dianneiorder_info_page_memo")));
  100. wstring memo = _T("备注:") + CLewaimaiString::UTF8ToUnicode(order.m_memo);
  101. pMemo->SetText(memo.c_str());
  102. //开始展示各种费用
  103. CVerticalLayoutUI* pFeesLayout = static_cast<CVerticalLayoutUI *>(this->FindSubControl(_T("diannei_order_info_page_fees")));
  104. pFeesLayout->RemoveAll();
  105. int fees_num = 0;
  106. if (atof(order.m_shangpinquan_youhui.c_str()) > 0)
  107. {
  108. CLabelUI *pFee = new CLabelUI;
  109. pFee->SetFixedHeight(38);
  110. wstring delivery_fee = L"商品券优惠金额:" + CLewaimaiString::UTF8ToUnicode(order.m_shangpinquan_youhui);
  111. pFee->SetText(delivery_fee.c_str());
  112. pFeesLayout->Add(pFee);
  113. fees_num++;
  114. }
  115. if (atof(order.m_cika_youhui.c_str()) > 0)
  116. {
  117. CLabelUI *pFee = new CLabelUI;
  118. pFee->SetFixedHeight(38);
  119. wstring delivery_fee = L"次卡优惠金额:" + CLewaimaiString::UTF8ToUnicode(order.m_cika_youhui);
  120. pFee->SetText(delivery_fee.c_str());
  121. pFeesLayout->Add(pFee);
  122. fees_num++;
  123. }
  124. if (atof(order.m_total_member_youhui.c_str()) > 0)
  125. {
  126. CLabelUI *pFee = new CLabelUI;
  127. pFee->SetFixedHeight(38);
  128. wstring delivery_fee = L"商品会员价优惠金额:" + CLewaimaiString::UTF8ToUnicode(order.m_total_member_youhui);
  129. pFee->SetText(delivery_fee.c_str());
  130. pFeesLayout->Add(pFee);
  131. fees_num++;
  132. }
  133. if (atof(order.m_zhekou_youhui.c_str()) > 0)
  134. {
  135. CLabelUI *pFee = new CLabelUI;
  136. pFee->SetFixedHeight(38);
  137. wstring delivery_fee = L"整单折扣优惠金额:" + CLewaimaiString::UTF8ToUnicode(order.m_zhekou_youhui);
  138. pFee->SetText(delivery_fee.c_str());
  139. pFeesLayout->Add(pFee);
  140. fees_num++;
  141. }
  142. if (atof(order.m_member_zhekou_youhui.c_str()) > 0)
  143. {
  144. CLabelUI *pFee = new CLabelUI;
  145. pFee->SetFixedHeight(38);
  146. wstring delivery_fee = L"会员折扣优惠金额:" + CLewaimaiString::UTF8ToUnicode(order.m_member_zhekou_youhui);
  147. pFee->SetText(delivery_fee.c_str());
  148. pFeesLayout->Add(pFee);
  149. fees_num++;
  150. }
  151. if (atof(order.m_quanyika_youhui.c_str()) > 0)
  152. {
  153. CLabelUI *pFee = new CLabelUI;
  154. pFee->SetFixedHeight(38);
  155. wstring delivery_fee = L"权益卡优惠金额:" + CLewaimaiString::UTF8ToUnicode(order.m_quanyika_youhui);
  156. pFee->SetText(delivery_fee.c_str());
  157. pFeesLayout->Add(pFee);
  158. fees_num++;
  159. }
  160. if (atof(order.m_manjian_youhui.c_str()) > 0)
  161. {
  162. CLabelUI *pFee = new CLabelUI;
  163. pFee->SetFixedHeight(38);
  164. wstring delivery_fee = L"满减优惠金额:" + CLewaimaiString::UTF8ToUnicode(order.m_manjian_youhui);
  165. pFee->SetText(delivery_fee.c_str());
  166. pFeesLayout->Add(pFee);
  167. fees_num++;
  168. }
  169. if (atof(order.m_youhuiquan_youhui.c_str()) > 0)
  170. {
  171. CLabelUI *pFee = new CLabelUI;
  172. pFee->SetFixedHeight(38);
  173. wstring delivery_fee = L"优惠券优惠金额:" + CLewaimaiString::UTF8ToUnicode(order.m_youhuiquan_youhui);
  174. pFee->SetText(delivery_fee.c_str());
  175. pFeesLayout->Add(pFee);
  176. fees_num++;
  177. }
  178. if (atof(order.m_rengong_youhui.c_str()) > 0)
  179. {
  180. CLabelUI *pFee = new CLabelUI;
  181. pFee->SetFixedHeight(38);
  182. wstring delivery_fee = L"人工优惠金额:" + CLewaimaiString::UTF8ToUnicode(order.m_rengong_youhui);
  183. pFee->SetText(delivery_fee.c_str());
  184. pFeesLayout->Add(pFee);
  185. fees_num++;
  186. }
  187. if (atof(order.m_dabao_money.c_str()) > 0)
  188. {
  189. CLabelUI *pFee = new CLabelUI;
  190. pFee->SetFixedHeight(38);
  191. wstring delivery_fee = L"打包费金额:" + CLewaimaiString::UTF8ToUnicode(order.m_dabao_money);
  192. pFee->SetText(delivery_fee.c_str());
  193. pFeesLayout->Add(pFee);
  194. fees_num++;
  195. }
  196. if (atof(order.m_jiajia.c_str()) > 0)
  197. {
  198. CLabelUI *pFee = new CLabelUI;
  199. pFee->SetFixedHeight(38);
  200. wstring delivery_fee = L"加价金额:" + CLewaimaiString::UTF8ToUnicode(order.m_jiajia);
  201. pFee->SetText(delivery_fee.c_str());
  202. pFeesLayout->Add(pFee);
  203. fees_num++;
  204. }
  205. if (atof(order.m_moling_youhui.c_str()) > 0)
  206. {
  207. CLabelUI *pFee = new CLabelUI;
  208. pFee->SetFixedHeight(38);
  209. wstring delivery_fee = L"抹零优惠金额:" + CLewaimaiString::UTF8ToUnicode(order.m_moling_youhui);
  210. pFee->SetText(delivery_fee.c_str());
  211. pFeesLayout->Add(pFee);
  212. fees_num++;
  213. }
  214. int fees_height;
  215. if (fees_num == 0)
  216. {
  217. pFeesLayout->SetVisible(false);
  218. this->FindSubControl(_T("diannei_order_info_page_fees_line"))->SetVisible(false);
  219. fees_height = 0;
  220. }
  221. else
  222. {
  223. pFeesLayout->SetVisible(true);
  224. this->FindSubControl(_T("diannei_order_info_page_fees_line"))->SetVisible(true);
  225. pFeesLayout->SetFixedHeight(fees_num * 38);
  226. fees_height = fees_num * 38;
  227. }
  228. CLabelUI *pTotalPrice = static_cast<CLabelUI *>(this->FindSubControl(_T("diannei_order_info_page_totalprice")));
  229. wstring price = L"总计:¥" + CLewaimaiString::UTF8ToUnicode(order.m_total_price);
  230. pTotalPrice->SetText(price.c_str());
  231. int nTotalHeight = order_item_height + fees_height + 173;
  232. this->FindSubControl(_T("diannei_order_info_page_layout_1"))->SetFixedHeight(nTotalHeight);
  233. //开始显示顾客信息
  234. std::wstring qucanma_show = L"取餐码:" + CLewaimaiString::UTF8ToUnicode(order.take_food_code);
  235. this->FindSubControl(_T("diannei_order_info_page_qucanma"))->SetText(qucanma_show.c_str());
  236. std::wstring canpai_show = L"桌号:" + CLewaimaiString::UTF8ToUnicode(order.m_canpai);
  237. this->FindSubControl(_T("diannei_order_info_page_zhuohao"))->SetText(canpai_show.c_str());
  238. std::wstring renshu_show = L"人数:" + CLewaimaiString::UTF8ToUnicode(order.m_renshu);
  239. this->FindSubControl(_T("diannei_order_info_page_renshu"))->SetText(renshu_show.c_str());
  240. std::wstring order_date_show = L"下单时间:" + CLewaimaiString::UTF8ToUnicode(order.init_time);
  241. this->FindSubControl(_T("diannei_order_info_page_init_date"))->SetText(order_date_show.c_str());
  242. //开始处理订单信息
  243. std::wstring laiyuan;
  244. if (order.order_from == 1)
  245. {
  246. laiyuan = L"收银机下单";
  247. }
  248. else if (order.order_from == 2)
  249. {
  250. laiyuan = L"商家app下单";
  251. }
  252. else if (order.order_from == 3)
  253. {
  254. laiyuan = L"扫码下单";
  255. }
  256. CLabelUI *pType = static_cast<CLabelUI *>(this->FindSubControl(_T("diannei_order_info_page_type")));
  257. wstring wsType = _T("订单来源:") + laiyuan;
  258. pType->SetText(wsType.c_str());
  259. CLabelUI *pPayType = static_cast<CLabelUI *>(this->FindSubControl(_T("diannei_order_info_page_pay_type")));
  260. wstring wsPayType = _T("付款方式:") + CLewaimaiString::UTF8ToUnicode(order.shoukuan_type);
  261. pPayType->SetText(wsPayType.c_str());
  262. CLabelUI *pRefund = static_cast<CLabelUI *>(this->FindSubControl(_T("diannei_order_info_page_refund_status")));
  263. if (order.is_refund == "1")
  264. {
  265. wstring wsPayType = _T("退款状态:已退款");
  266. pRefund->SetText(wsPayType.c_str());
  267. }
  268. else
  269. {
  270. wstring wsPayType = _T("退款状态:未退款");
  271. pRefund->SetText(wsPayType.c_str());
  272. }
  273. this->FindSubControl(_T("diannei_order_info_page_layout_3"))->SetFixedHeight(211);
  274. //退款按钮
  275. CButtonUI* refund_button = static_cast<CButtonUI *>(m_pManager->FindControl(_T("diannei_order_info_page_refund")));
  276. if (order.is_refund == "1")
  277. {
  278. refund_button->SetVisible(false);
  279. }
  280. }