CWaimaiOrderInfoPageUI.cpp 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763
  1. #include "../pch/pch.h"
  2. #include "CWaimaiOrderInfoPageUI.h"
  3. #include "../control/ControlEx.h"
  4. #include "../wnd/CWaimaiOrderFailReasonWnd.h"
  5. #include "../print/CPosPrinter.h"
  6. CWaimaiOrderInfoPageUI::CWaimaiOrderInfoPageUI()
  7. {
  8. }
  9. CWaimaiOrderInfoPageUI::~CWaimaiOrderInfoPageUI()
  10. {
  11. }
  12. void CWaimaiOrderInfoPageUI::InitControl()
  13. {
  14. }
  15. //初始化当前页面的展示,处理默认展示效果,在页面被加载的时候调用
  16. void CWaimaiOrderInfoPageUI::InitShow()
  17. {
  18. //请求服务器,获取订单数据
  19. CWaimaiOrder order;
  20. order.InitData(m_order_id, m_order_no);
  21. //刷新订单详情页数据
  22. this->SetDate(order);
  23. this->Refresh(order);
  24. }
  25. //处理按钮点击类事件
  26. void CWaimaiOrderInfoPageUI::HandleClickMsg(TNotifyUI& msg)
  27. {
  28. CDuiString name = msg.pSender->GetName();
  29. if (name == _T("waimai_order_info_page_return"))
  30. {
  31. m_pMainWnd->SwitchPage(CMainWnd::DINGDAN);
  32. }
  33. else if (name == _T("waimai_order_info_page_print"))
  34. {
  35. CPosPrinter printer;
  36. printer.PrintWaimaiOrder(this->m_order.m_order_id, this->m_order.m_order_no);
  37. }
  38. else if (name == _T("waimai_order_info_page_confirme"))
  39. {
  40. std::string waimai_order_id = this->m_order.m_order_id;
  41. std::string waimai_order_no = this->m_order.m_order_no;
  42. CWaimaiOrder order;
  43. bool ret = order.ConfirmeOrder(waimai_order_id);
  44. if (ret)
  45. {
  46. //确认成功,这里怎么处理
  47. //请求服务器,获取订单数据
  48. CWaimaiOrder new_order;
  49. new_order.InitData(waimai_order_id, waimai_order_no);
  50. //刷新订单详情页数据
  51. this->SetDate(new_order);
  52. this->Refresh(new_order);
  53. }
  54. }
  55. else if (name == _T("waimai_order_info_page_success"))
  56. {
  57. std::string waimai_order_id = this->m_order.m_order_id;
  58. std::string waimai_order_no = this->m_order.m_order_no;
  59. CWaimaiOrder order;
  60. bool ret = order.SuccessOrder(waimai_order_id);
  61. if (ret)
  62. {
  63. //订单设为成功,这里怎么处理
  64. //请求服务器,获取订单数据
  65. CWaimaiOrder new_order;
  66. new_order.InitData(waimai_order_id, waimai_order_no);
  67. //刷新订单详情页数据
  68. this->SetDate(new_order);
  69. this->Refresh(new_order);
  70. }
  71. }
  72. else if (name == _T("waimai_order_info_page_fail"))
  73. {
  74. std::string waimai_order_id = this->m_order.m_order_id;
  75. std::string waimai_order_no = this->m_order.m_order_no;
  76. CWaimaiOrderFailReasonWnd* pWaimaiFailFrame = new CWaimaiOrderFailReasonWnd();
  77. pWaimaiFailFrame->Create(m_pMainWnd->GetHWND(), _T(""), UI_WNDSTYLE_DIALOG, WS_EX_WINDOWEDGE);
  78. pWaimaiFailFrame->SetIcon(IDI_ICON_DUILIB);
  79. pWaimaiFailFrame->CenterWindow();
  80. UINT ret = pWaimaiFailFrame->ShowModal();
  81. if (ret == IDOK)
  82. {
  83. std::string sReason = pWaimaiFailFrame->getReason();
  84. CWaimaiOrder order;
  85. bool ret = order.FailOrder(waimai_order_id, sReason);
  86. if (ret)
  87. {
  88. //订单设为失败,这里怎么处理
  89. //请求服务器,获取订单数据
  90. CWaimaiOrder new_order;
  91. new_order.InitData(waimai_order_id, waimai_order_no);
  92. //刷新订单详情页数据
  93. this->SetDate(new_order);
  94. this->Refresh(new_order);
  95. }
  96. }
  97. delete pWaimaiFailFrame;
  98. }
  99. else if (name == _T("waimai_order_info_page_agree"))
  100. {
  101. std::string waimai_order_id = this->m_order.m_order_id;
  102. std::string waimai_order_no = this->m_order.m_order_no;
  103. CWaimaiOrder order;
  104. bool ret = order.AgreeRefund(waimai_order_id);
  105. if (ret)
  106. {
  107. //订单设为成功,这里怎么处理
  108. //请求服务器,获取订单数据
  109. CWaimaiOrder new_order;
  110. new_order.InitData(waimai_order_id, waimai_order_no);
  111. //刷新订单详情页数据
  112. this->SetDate(new_order);
  113. this->Refresh(new_order);
  114. }
  115. }
  116. else if (name == _T("waimai_order_info_page_disagree"))
  117. {
  118. std::string waimai_order_id = this->m_order.m_order_id;
  119. std::string waimai_order_no = this->m_order.m_order_no;
  120. CWaimaiOrder order;
  121. bool ret = order.DisagreeRefund(waimai_order_id);
  122. if (ret)
  123. {
  124. //订单设为成功,这里怎么处理
  125. //请求服务器,获取订单数据
  126. CWaimaiOrder new_order;
  127. new_order.InitData(waimai_order_id, waimai_order_no);
  128. //刷新订单详情页数据
  129. this->SetDate(new_order);
  130. this->Refresh(new_order);
  131. }
  132. }
  133. else if (name == _T("waimai_order_info_page_refund"))
  134. {
  135. std::string waimai_order_id = this->m_order.m_order_id;
  136. std::string waimai_order_no = this->m_order.m_order_no;
  137. CWaimaiOrder order;
  138. bool ret = order.Refund(waimai_order_id);
  139. if (ret)
  140. {
  141. //订单设为成功,这里怎么处理
  142. //请求服务器,获取订单数据
  143. CWaimaiOrder new_order;
  144. new_order.InitData(waimai_order_id, waimai_order_no);
  145. //刷新订单详情页数据
  146. this->SetDate(new_order);
  147. this->Refresh(new_order);
  148. }
  149. }
  150. }
  151. //处理option切换事件
  152. void CWaimaiOrderInfoPageUI::HandleSelectChangeMsg(TNotifyUI& msg)
  153. {
  154. }
  155. //处理下拉框、radio的切换事件
  156. void CWaimaiOrderInfoPageUI::HandleItemSelectMsg(TNotifyUI& msg)
  157. {
  158. }
  159. //处理编辑框输入内容改变事件
  160. void CWaimaiOrderInfoPageUI::HandleTextChangedMsg(TNotifyUI& msg)
  161. {
  162. }
  163. //处理扫码枪捕捉到的扫码信息
  164. void CWaimaiOrderInfoPageUI::HandleTextCapture(std::string content)
  165. {
  166. }
  167. //刷新当前页面的内容,注意这个函数不会改变当前的订单状态以及“页数”
  168. void CWaimaiOrderInfoPageUI::SetDate(CWaimaiOrder& order)
  169. {
  170. m_order = order;
  171. }
  172. void CWaimaiOrderInfoPageUI::Refresh(CWaimaiOrder& order)
  173. {
  174. std::wstring liushuihao_show = L"#" + CLewaimaiString::UTF8ToUnicode(order.m_restaurant_number);
  175. this->FindSubControl(_T("waimai_order_info_page_liushuihao"))->SetText(liushuihao_show.c_str());
  176. std::wstring order_no_show = L"订单号:" + CLewaimaiString::UTF8ToUnicode(order.m_order_no);
  177. this->FindSubControl(_T("waimai_order_info_page_order_num"))->SetText(order_no_show.c_str());
  178. //商品详情的渲染
  179. CListUI* pFoodList = static_cast<CListUI*>(this->FindSubControl(_T("waimai_order_info_page_foodlist")));
  180. pFoodList->RemoveAll();
  181. int show_num = 0;
  182. for (std::vector<CWaimaiOrderItem>::iterator it = order.m_order_items.begin(); it != order.m_order_items.end(); it++)
  183. {
  184. if (it->is_taocan_item == true)
  185. {
  186. //套餐的详情不展示
  187. continue;
  188. }
  189. std::string food_name = (*it).m_food_name;
  190. std::string food_price = (*it).m_item_price;
  191. std::string quantity = (*it).m_quantity;
  192. CDialogBuilder builder;
  193. CListContainerElementUI* pEle = static_cast<CListContainerElementUI *>(builder.Create(_T("waimai_order_info_page_listitem.xml"), (UINT)0, NULL, m_pManager));
  194. CLabelUI *pName = static_cast<CLabelUI *>(pEle->FindSubControl(_T("waimai_order_info_page_listitem_foodname")));
  195. pName->SetText(CLewaimaiString::UTF8ToUnicode(food_name).c_str());
  196. CLabelUI *pQuantity = static_cast<CLabelUI *>(pEle->FindSubControl(_T("waimai_order_info_page_listitem_quantity")));
  197. pQuantity->SetText(CLewaimaiString::UTF8ToUnicode(quantity).c_str());
  198. CLabelUI *pPrice = static_cast<CLabelUI *>(pEle->FindSubControl(_T("waimai_order_info_page_listitem_price")));
  199. pPrice->SetText(CLewaimaiString::UTF8ToUnicode(food_price).c_str());
  200. pFoodList->Add(pEle);
  201. show_num++;
  202. }
  203. //重设商品列表的高度
  204. int order_item_height = (show_num + 1) * 30;
  205. pFoodList->SetFixedHeight(order_item_height);
  206. CLabelUI *pMemo = static_cast<CLabelUI *>(this->FindSubControl(_T("waimaorder_info_page_memo")));
  207. std::wstring memo = _T("备注:") + CLewaimaiString::UTF8ToUnicode(order.m_memo);
  208. pMemo->SetText(memo.c_str());
  209. //开始展示各种费用
  210. CVerticalLayoutUI* pFeesLayout = static_cast<CVerticalLayoutUI *>(this->FindSubControl(_T("waimai_order_info_page_fees")));
  211. pFeesLayout->RemoveAll();
  212. int fees_num = 0;
  213. if (order.m_delivery > 0)
  214. {
  215. CLabelUI *pDlieveryFee = new CLabelUI;
  216. pDlieveryFee->SetFixedHeight(30);
  217. std::wstring delivery_fee = L"配送费:" + CLewaimaiString::UTF8ToUnicode(CLewaimaiString::DoubleToString((double)order.m_delivery, 2));
  218. pDlieveryFee->SetText(delivery_fee.c_str());
  219. pFeesLayout->Add(pDlieveryFee);
  220. fees_num++;
  221. }
  222. if (order.m_is_dabao == "1")
  223. {
  224. CLabelUI *pDabaoFee = new CLabelUI;
  225. pDabaoFee->SetFixedHeight(30);
  226. std::wstring dabao_fee = L"打包费:" + CLewaimaiString::UTF8ToUnicode(CLewaimaiString::DoubleToString((double)order.m_delivery, 2));
  227. pDabaoFee->SetText(dabao_fee.c_str());
  228. pFeesLayout->Add(pDabaoFee);
  229. fees_num++;
  230. }
  231. //增值服务费
  232. if (order.m_addservie.size() > 0)
  233. {
  234. for (std::vector<CWaimaiOrderField>::iterator it = order.m_addservie.begin(); it != order.m_addservie.end(); it++)
  235. {
  236. std::wstring addservice = CLewaimaiString::UTF8ToUnicode((*it).name) + L":" + CLewaimaiString::UTF8ToUnicode(CLewaimaiString::DoubleToString((double)atof((*it).value.c_str()), 2));
  237. CLabelUI* newField = new CLabelUI();
  238. newField->SetText(addservice.c_str());
  239. newField->SetFixedHeight(30);
  240. pFeesLayout->Add(newField);
  241. fees_num++;
  242. }
  243. }
  244. //店铺折扣
  245. if (order.m_discount < 10)
  246. {
  247. CLabelUI *pDiscountFee = new CLabelUI;
  248. pDiscountFee->SetFixedHeight(30);
  249. std::wstring discount = L"店铺折扣:" + CLewaimaiString::UTF8ToUnicode(CLewaimaiString::DoubleToString((double)order.m_discount, 2)) + L"折";
  250. pDiscountFee->SetText(discount.c_str());
  251. pFeesLayout->Add(pDiscountFee);
  252. fees_num++;
  253. }
  254. //会员优惠
  255. if (order.m_is_member_discount == "1")
  256. {
  257. CLabelUI *pMemberFee = new CLabelUI;
  258. pMemberFee->SetFixedHeight(30);
  259. std::wstring memberfee = L"会员优惠:-" + CLewaimaiString::UTF8ToUnicode(order.m_member_discount);
  260. pMemberFee->SetText(memberfee.c_str());
  261. pFeesLayout->Add(pMemberFee);
  262. fees_num++;
  263. }
  264. //首单优惠
  265. if (order.m_is_firstcut == "1")
  266. {
  267. CLabelUI *pFirstCut = new CLabelUI;
  268. pFirstCut->SetFixedHeight(30);
  269. std::wstring firstcut = L"首单优惠:-" + CLewaimaiString::UTF8ToUnicode(order.m_firstcut_value);
  270. pFirstCut->SetText(firstcut.c_str());
  271. pFeesLayout->Add(pFirstCut);
  272. fees_num++;
  273. }
  274. //满减
  275. std::string::size_type position = order.m_promotion.find(":");
  276. if (position != order.m_promotion.npos)
  277. {
  278. CLabelUI *pManjian = new CLabelUI;
  279. pManjian->SetFixedHeight(30);
  280. std::string promotion_value;
  281. promotion_value.assign(order.m_promotion, position + 1);
  282. std::wstring promotion = L"满减优惠:-" + CLewaimaiString::UTF8ToUnicode(CLewaimaiString::DoubleToString((double)(atof(promotion_value.c_str())), 2));
  283. pManjian->SetText(promotion.c_str());
  284. pFeesLayout->Add(pManjian);
  285. fees_num++;
  286. }
  287. //优惠券
  288. if (order.m_coupon > 0)
  289. {
  290. CLabelUI *pCoupon = new CLabelUI;
  291. pCoupon->SetMaxHeight(30);
  292. std::wstring coupon = L"优惠券:-" + CLewaimaiString::UTF8ToUnicode(CLewaimaiString::DoubleToString((double)order.m_coupon, 2));
  293. pCoupon->SetText(coupon.c_str());
  294. pFeesLayout->Add(pCoupon);
  295. fees_num++;
  296. }
  297. //商品券
  298. if (atof(order.m_goods_coupon_value.c_str()) > 0.0001)
  299. {
  300. CLabelUI *pGoodsCoupon = new CLabelUI;
  301. pGoodsCoupon->SetFixedHeight(30);
  302. std::wstring goods_coupon = L"商品券:-" + CLewaimaiString::UTF8ToUnicode(order.m_goods_coupon_value);
  303. pGoodsCoupon->SetText(goods_coupon.c_str());
  304. pFeesLayout->Add(pGoodsCoupon);
  305. fees_num++;
  306. }
  307. int fees_height;
  308. if (fees_num == 0)
  309. {
  310. pFeesLayout->SetVisible(false);
  311. this->FindSubControl(_T("waimai_order_info_page_fees_line"))->SetVisible(false);
  312. fees_height = 0;
  313. }
  314. else
  315. {
  316. pFeesLayout->SetVisible(true);
  317. this->FindSubControl(_T("waimai_order_info_page_fees_line"))->SetVisible(true);
  318. pFeesLayout->SetFixedHeight(fees_num * 30);
  319. fees_height = fees_num * 30;
  320. }
  321. CLabelUI *pTotalPrice = static_cast<CLabelUI *>(this->FindSubControl(_T("waimai_order_info_page_totalprice")));
  322. std::wstring price = L"总计:¥" + CLewaimaiString::UTF8ToUnicode(CLewaimaiString::DoubleToString(order.m_price, 2));
  323. pTotalPrice->SetText(price.c_str());
  324. int nTotalHeight = order_item_height + fees_height + 133;
  325. this->FindSubControl(_T("waimai_order_info_page_layout_1"))->SetFixedHeight(nTotalHeight);
  326. //开始显示顾客信息
  327. std::wstring name_show = L"姓名:" + CLewaimaiString::UTF8ToUnicode(order.m_customer_name);
  328. this->FindSubControl(_T("waimai_order_info_page_name"))->SetText(name_show.c_str());
  329. std::wstring phone_show = L"电话:" + CLewaimaiString::UTF8ToUnicode(order.m_phone);
  330. this->FindSubControl(_T("waimai_order_info_page_phone"))->SetText(phone_show.c_str());
  331. std::wstring address_show = L"地址:" + CLewaimaiString::UTF8ToUnicode(order.m_address);
  332. this->FindSubControl(_T("waimai_order_info_page_address"))->SetText(address_show.c_str());
  333. std::wstring order_date_show = L"下单时间:" + CLewaimaiString::UTF8ToUnicode(order.m_order_date);
  334. this->FindSubControl(_T("waimai_order_info_page_init_date"))->SetText(order_date_show.c_str());
  335. //开始处理骑手信息
  336. if (atoi(order.m_courier_id.c_str()) > 0)
  337. {
  338. //有人接单了
  339. this->FindSubControl(_T("waimai_order_info_page_qishouinfo"))->SetVisible(true);
  340. std::wstring qishou_name = L"骑手姓名:" + CLewaimaiString::UTF8ToUnicode(order.m_courier_name);
  341. this->FindSubControl(_T("waimai_order_info_page_qishou_name"))->SetText(qishou_name.c_str());
  342. std::wstring qishou_phone = L"骑手电话:" + CLewaimaiString::UTF8ToUnicode(order.m_courier_phone);
  343. this->FindSubControl(_T("waimai_order_info_page_qishou_phone"))->SetText(qishou_phone.c_str());
  344. std::wstring qishou_type;
  345. if (order.m_courier_type == "3")
  346. {
  347. qishou_type = L"骑手类型:快服务骑手";
  348. }
  349. else if (order.m_courier_type == "5")
  350. {
  351. qishou_type = L"骑手类型:达达骑手";
  352. }
  353. else
  354. {
  355. qishou_type = L"骑手类型:商家自配送骑手";
  356. }
  357. this->FindSubControl(_T("waimai_order_info_page_qishou_type"))->SetText(qishou_type.c_str());
  358. }
  359. else
  360. {
  361. this->FindSubControl(_T("waimai_order_info_page_qishouinfo"))->SetVisible(false);
  362. }
  363. //开始处理订单信息
  364. if (order.m_is_selftake == "1")
  365. {
  366. CLabelUI *pDeliveryType = static_cast<CLabelUI *>(this->FindSubControl(_T("waimai_order_info_page_delivery_type")));
  367. std::wstring wsDeliveryType = _T("配送方式:到店自取(取餐号:") + CLewaimaiString::UTF8ToUnicode(order.m_take_food_code) + _T(")");
  368. pDeliveryType->SetText(wsDeliveryType.c_str());
  369. }
  370. else
  371. {
  372. CLabelUI *pDeliveryType = static_cast<CLabelUI *>(this->FindSubControl(_T("waimai_order_info_page_delivery_type")));
  373. std::wstring wsDeliveryType = _T("配送方式:外卖配送");
  374. pDeliveryType->SetText(wsDeliveryType.c_str());
  375. }
  376. CLabelUI *pShopname = static_cast<CLabelUI *>(this->FindSubControl(_T("waimai_order_info_page_shopname")));
  377. std::wstring wsShopname = _T("店铺名字:") + CLewaimaiString::UTF8ToUnicode(order.m_shop_name);
  378. pShopname->SetText(wsShopname.c_str());
  379. int nTakeFoodCodeHeight = 0;
  380. CLabelUI *pTakeFoodCode = static_cast<CLabelUI *>(this->FindSubControl(_T("waimai_order_info_page_take_food_code")));
  381. if (order.m_is_selftake == "1")
  382. {
  383. //自取订单,显示取餐号
  384. if (CShopinfo::GetInstance()->m_version_type == "1")
  385. {
  386. std::wstring wsTakeFoodCode = _T("取餐号:") + CLewaimaiString::UTF8ToUnicode(order.m_take_food_code);
  387. pTakeFoodCode->SetText(wsTakeFoodCode.c_str());
  388. }
  389. else
  390. {
  391. std::wstring wsTakeFoodCode = _T("取单号:") + CLewaimaiString::UTF8ToUnicode(order.m_take_food_code);
  392. pTakeFoodCode->SetText(wsTakeFoodCode.c_str());
  393. }
  394. pTakeFoodCode->SetVisible(true);
  395. nTakeFoodCodeHeight = 30;
  396. }
  397. else
  398. {
  399. pTakeFoodCode->SetVisible(false);
  400. nTakeFoodCodeHeight = 0;
  401. }
  402. CLabelUI *pStatus = static_cast<CLabelUI *>(this->FindSubControl(_T("waimai_order_info_page_status")));
  403. std::wstring wsStatus = _T("订单状态:") + CLewaimaiString::UTF8ToUnicode(order.m_order_status);
  404. if (CLewaimaiString::UTF8ToUnicode(order.m_order_status) == _T("交易失败"))
  405. {
  406. wsStatus += _T(",失败原因:") + CLewaimaiString::UTF8ToUnicode(order.m_failed_reason);
  407. }
  408. pStatus->SetText(wsStatus.c_str());
  409. CLabelUI *pType = static_cast<CLabelUI *>(this->FindSubControl(_T("waimai_order_info_page_type")));
  410. std::wstring wsType = _T("订单来源:") + CLewaimaiString::UTF8ToUnicode(order.m_from_type);
  411. pType->SetText(wsType.c_str());
  412. //预设选项
  413. CVerticalLayoutUI* pLayout = static_cast<CVerticalLayoutUI *>(this->FindSubControl(_T("waimai_order_info_page_field")));
  414. pLayout->RemoveAll();
  415. int order_filed_height;
  416. if (order.m_order_field.size() > 1)
  417. {
  418. for (std::vector<CWaimaiOrderField>::iterator it = order.m_order_field.begin(); it != order.m_order_field.end() - 1; it++)
  419. {
  420. std::wstring order_field = CLewaimaiString::UTF8ToUnicode((*it).name) + L":" + CLewaimaiString::UTF8ToUnicode((*it).value);
  421. CLabelUI* newField = new CLabelUI();
  422. newField->SetText(order_field.c_str());
  423. newField->SetFixedHeight(30);
  424. pLayout->Add(newField);
  425. }
  426. //这里预设选项默认有一个配送时间,所以要减1
  427. pLayout->SetFixedHeight((order.m_order_field.size() - 1) * 30);
  428. order_filed_height = (order.m_order_field.size() - 1) * 30;
  429. pLayout->SetVisible(true);
  430. }
  431. else
  432. {
  433. order_filed_height = 0;
  434. pLayout->SetVisible(false);
  435. }
  436. //配送时间
  437. std::wstring delivery_date;
  438. if (order.m_is_selftake == "1")
  439. {
  440. delivery_date = L"自取时间:" + CLewaimaiString::UTF8ToUnicode(order.m_delivery_date);
  441. }
  442. else
  443. {
  444. delivery_date = L"配送时间:" + CLewaimaiString::UTF8ToUnicode(order.m_delivery_date);
  445. }
  446. CLabelUI *pTime = static_cast<CLabelUI *>(this->FindSubControl(_T("waimai_order_info_page_delivery_time")));
  447. pTime->SetText(delivery_date.c_str());
  448. CLabelUI *pPayType = static_cast<CLabelUI *>(this->FindSubControl(_T("waimai_order_info_page_pay_type")));
  449. std::wstring wsPayType = _T("付款方式:") + CLewaimaiString::UTF8ToUnicode(order.m_pay_type);
  450. pPayType->SetText(wsPayType.c_str());
  451. if (CLewaimaiString::UTF8ToUnicode(order.m_pay_type) == L"货到付款")
  452. {
  453. this->FindSubControl(_T("waimai_order_info_page_huodaofukuan"))->SetVisible(true);
  454. }
  455. else
  456. {
  457. this->FindSubControl(_T("waimai_order_info_page_huodaofukuan"))->SetVisible(false);
  458. }
  459. //右侧按钮的控制
  460. CButtonUI* confirm_button = static_cast<CButtonUI *>(m_pManager->FindControl(_T("waimai_order_info_page_confirme")));
  461. CButtonUI* success_button = static_cast<CButtonUI *>(m_pManager->FindControl(_T("waimai_order_info_page_success")));
  462. CButtonUI* fail_button = static_cast<CButtonUI *>(m_pManager->FindControl(_T("waimai_order_info_page_fail")));
  463. CButtonUI* agree_button = static_cast<CButtonUI *>(m_pManager->FindControl(_T("waimai_order_info_page_agree")));
  464. CButtonUI* disagree_button = static_cast<CButtonUI *>(m_pManager->FindControl(_T("waimai_order_info_page_disagree")));
  465. CButtonUI* refund_button = static_cast<CButtonUI *>(m_pManager->FindControl(_T("waimai_order_info_page_refund")));
  466. CLabelUI *pRefundStatus = static_cast<CLabelUI *>(this->FindSubControl(_T("waimai_order_info_page_refund_status")));
  467. int refundHeight = 0;
  468. if (_tcscmp(CLewaimaiString::UTF8ToUnicode(order.m_order_status).c_str(), _T("未处理")) == 0)
  469. {
  470. confirm_button->SetVisible(true);
  471. success_button->SetVisible(false);
  472. fail_button->SetVisible(true);
  473. agree_button->SetVisible(false);
  474. disagree_button->SetVisible(false);
  475. refund_button->SetVisible(false);
  476. pRefundStatus->SetVisible(false);
  477. }
  478. else if (_tcscmp(CLewaimaiString::UTF8ToUnicode(order.m_order_status).c_str(), _T("已确认")) == 0)
  479. {
  480. confirm_button->SetVisible(false);
  481. success_button->SetVisible(true);
  482. fail_button->SetVisible(true);
  483. agree_button->SetVisible(false);
  484. disagree_button->SetVisible(false);
  485. refund_button->SetVisible(false);
  486. pRefundStatus->SetVisible(false);
  487. }
  488. else if (_tcscmp(CLewaimaiString::UTF8ToUnicode(order.m_order_status).c_str(), _T("交易成功")) == 0)
  489. {
  490. confirm_button->SetVisible(false);
  491. success_button->SetVisible(false);
  492. fail_button->SetVisible(false);
  493. agree_button->SetVisible(false);
  494. disagree_button->SetVisible(false);
  495. refund_button->SetVisible(false);
  496. pRefundStatus->SetVisible(false);
  497. }
  498. else if (_tcscmp(CLewaimaiString::UTF8ToUnicode(order.m_order_status).c_str(), _T("交易失败")) == 0)
  499. {
  500. confirm_button->SetVisible(false);
  501. success_button->SetVisible(false);
  502. fail_button->SetVisible(false);
  503. agree_button->SetVisible(false);
  504. disagree_button->SetVisible(false);
  505. std::string refund_status = m_order.m_refund_status;
  506. if (CLewaimaiString::UTF8ToUnicode(order.m_pay_type) != L"货到付款")
  507. {
  508. pRefundStatus->SetVisible(true);
  509. refundHeight = 30;
  510. std::wstring refund_status_text = L"退款状态:";
  511. if (refund_status == "0")
  512. {
  513. refund_button->SetVisible(true);
  514. refund_status_text += L"未处理";
  515. }
  516. else if (refund_status == "10")
  517. {
  518. refund_button->SetVisible(false);
  519. refund_status_text += L"退款处理中,等待退款结果";
  520. }
  521. else if (refund_status == "11")
  522. {
  523. refund_button->SetVisible(false);
  524. refund_status_text += L"退款已完成";
  525. }
  526. else if (refund_status == "12")
  527. {
  528. refund_button->SetVisible(false);
  529. refund_status_text += L"退款失败,原因:" + CLewaimaiString::UTF8ToUnicode(order.m_refund_failed_reason);
  530. }
  531. pRefundStatus->SetText(refund_status_text.c_str());
  532. }
  533. else
  534. {
  535. refund_button->SetVisible(false);
  536. pRefundStatus->SetVisible(false);
  537. }
  538. }
  539. else if (_tcscmp(CLewaimaiString::UTF8ToUnicode(order.m_order_status).c_str(), _T("已取消")) == 0)
  540. {
  541. confirm_button->SetVisible(false);
  542. success_button->SetVisible(false);
  543. fail_button->SetVisible(false);
  544. agree_button->SetVisible(false);
  545. disagree_button->SetVisible(false);
  546. refund_button->SetVisible(false);
  547. pRefundStatus->SetVisible(false);
  548. }
  549. else if (_tcscmp(CLewaimaiString::UTF8ToUnicode(order.m_order_status).c_str(), _T("退款中")) == 0)
  550. {
  551. confirm_button->SetVisible(false);
  552. success_button->SetVisible(false);
  553. fail_button->SetVisible(false);
  554. std::string refund_status = m_order.m_refund_status;
  555. if (refund_status == "1")
  556. {
  557. agree_button->SetVisible(true);
  558. disagree_button->SetVisible(true);
  559. }
  560. else if (refund_status == "5")
  561. {
  562. agree_button->SetVisible(true);
  563. disagree_button->SetVisible(false);
  564. }
  565. else
  566. {
  567. agree_button->SetVisible(false);
  568. disagree_button->SetVisible(false);
  569. }
  570. refund_button->SetVisible(false);
  571. pRefundStatus->SetVisible(true);
  572. refundHeight = 30;
  573. std::wstring refund_status_text = L"退款状态:";
  574. if (refund_status == "1")
  575. {
  576. refund_status_text += L"顾客申请退款,等待商家处理";
  577. }
  578. else if (refund_status == "2")
  579. {
  580. refund_status_text += L"退款成功,订单失败";
  581. }
  582. else if (refund_status == "3")
  583. {
  584. refund_status_text += L"商家已拒绝退款,等待顾客受理";
  585. }
  586. else if (refund_status == "4")
  587. {
  588. refund_status_text += L"退款失败,订单变为已确认";
  589. }
  590. else if (refund_status == "5")
  591. {
  592. refund_status_text += L"顾客再次发起退款,等待客服介入处理中";
  593. }
  594. pRefundStatus->SetText(refund_status_text.c_str());
  595. }
  596. int configMemoHeight = 0;
  597. CLabelUI *pConfigmemo = static_cast<CLabelUI *>(this->FindSubControl(_T("waimai_order_info_page_configmemo")));
  598. if (m_order.m_configmemo != "")
  599. {
  600. configMemoHeight = 30;
  601. std::wstring configMemo = L"商家备注:" + CLewaimaiString::UTF8ToUnicode(order.m_configmemo);
  602. pConfigmemo->SetText(configMemo.c_str());
  603. pConfigmemo->SetVisible(true);
  604. }
  605. else
  606. {
  607. configMemoHeight = 0;
  608. pConfigmemo->SetVisible(false);
  609. }
  610. this->FindSubControl(_T("waimai_order_info_page_layout_3"))->SetFixedHeight(nTakeFoodCodeHeight + order_filed_height + refundHeight + configMemoHeight + 211);
  611. }