CWaimaiOrderItemUI.cpp 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366
  1. #include "pch.h"
  2. #include "CWaimaiOrderItemUI.h"
  3. CWaimaiOrderItemUI::CWaimaiOrderItemUI()
  4. {
  5. }
  6. CWaimaiOrderItemUI::~CWaimaiOrderItemUI()
  7. {
  8. }
  9. void CWaimaiOrderItemUI::SetData(rapidjson::Value& orderinfo)
  10. {
  11. m_name = orderinfo["customer_name"].GetString();
  12. m_address = orderinfo["address"].GetString();
  13. m_phone = orderinfo["customer_phone"].GetString();
  14. m_price = orderinfo["price"].GetString();
  15. m_order_no = orderinfo["order_no"].GetString();
  16. m_init_date = orderinfo["init_date"].GetString();
  17. m_is_selftake = orderinfo["is_selftake"].GetString();
  18. m_delivery_date = orderinfo["delivery_date"].GetString();
  19. m_deliverytime = orderinfo["delivertime"].GetString();
  20. m_restaurant_number = orderinfo["restaurant_number"].GetString();
  21. m_orderid = orderinfo["id"].GetString();
  22. m_from_type = orderinfo["from_type"].GetString();
  23. m_take_food_code = CLewaimaiJson::ToString(orderinfo["take_food_code"]);
  24. m_is_self_delivery = CLewaimaiJson::ToString(orderinfo["is_self_delivery"]);
  25. m_is_book = CLewaimaiJson::ToString(orderinfo["is_book"]);
  26. std::string third_delivery_fee = CLewaimaiJson::ToString(orderinfo["third_delivery_fee"]);
  27. std::string courier_type = CLewaimaiJson::ToString(orderinfo["courier_type"]);
  28. // 值写入 _val 控件,标签文本保留在 XML 静态(两列式,无冒号)
  29. this->FindSubControl(L"waimai_order_list_name_val")->SetText(CLewaimaiString::UTF8ToUnicode(m_name).c_str());
  30. this->FindSubControl(L"waimai_order_list_address_val")->SetText(CLewaimaiString::UTF8ToUnicode(m_address).c_str());
  31. this->FindSubControl(L"waimai_order_list_phone_val")->SetText(CLewaimaiString::UTF8ToUnicode(m_phone).c_str());
  32. this->FindSubControl(L"waimai_order_list_price_val")->SetText(CLewaimaiString::UTF8ToUnicode(m_price).c_str());
  33. this->FindSubControl(L"waimai_order_list_liushuihao_val")->SetText((L"#" + CLewaimaiString::UTF8ToUnicode(m_restaurant_number)).c_str());
  34. this->FindSubControl(L"waimai_order_list_order_num_val")->SetText(CLewaimaiString::UTF8ToUnicode(m_order_no).c_str());
  35. this->FindSubControl(L"waimai_order_list_init_date_val")->SetText(CLewaimaiString::UTF8ToUnicode(m_init_date).c_str());
  36. std::wstring order_type;
  37. std::wstring delivery_date;
  38. CHorizontalLayoutUI* pZiquLayout = static_cast<CHorizontalLayoutUI*>(this->FindSubControl(L"waimai_order_list_ziqu_layout"));
  39. CHorizontalLayoutUI* pPeisongLayout = static_cast<CHorizontalLayoutUI*>(this->FindSubControl(L"waimai_order_list_peisong_layout"));
  40. if (m_is_selftake == "1")
  41. {
  42. order_type = L"到店自取";
  43. delivery_date = CLewaimaiString::UTF8ToUnicode(m_deliverytime);
  44. this->FindSubControl(L"waimai_order_list_ziqu")->SetVisible(true);
  45. pZiquLayout->SetVisible(true);
  46. pPeisongLayout->SetVisible(false);
  47. CLabelUI* qucanhaoLabel = static_cast<CLabelUI*>(this->FindSubControl(L"waimai_order_list_ziqu_qucanhao"));
  48. qucanhaoLabel->SetText((L"取餐号:" + CLewaimaiString::UTF8ToUnicode(m_take_food_code)).c_str());
  49. }
  50. else
  51. {
  52. order_type = L"外卖配送";
  53. delivery_date = CLewaimaiString::UTF8ToUnicode(m_deliverytime);
  54. this->FindSubControl(L"waimai_order_list_ziqu")->SetVisible(false);
  55. pZiquLayout->SetVisible(false);
  56. pPeisongLayout->SetVisible(true);
  57. CLabelUI* peisongLabel = static_cast<CLabelUI*>(this->FindSubControl(L"waimai_order_list_peisong_type"));
  58. CButtonUI* fadanBtn = static_cast<CButtonUI*>(this->FindSubControl(L"waimai_order_list_peisong_fadan"));
  59. CButtonUI* quxiaoFadanBtn = static_cast<CButtonUI*>(this->FindSubControl(L"waimai_order_list_peisong_quxiaofadan"));
  60. CLabelUI* fadanInfoLabel = static_cast<CLabelUI*>(this->FindSubControl(L"waimai_order_list_peisong_fadan_info"));
  61. if (m_status == 2)
  62. {
  63. //针对已确认非配送中订单进行处理
  64. if ((m_from_type == CLewaimaiString::UnicodeToUTF8(L"美团外卖") || m_from_type == CLewaimaiString::UnicodeToUTF8(L"饿了么")) && m_is_self_delivery == "0")
  65. {
  66. //美团饿了么订单,并且非商家自配送订单
  67. peisongLabel->SetText(L"外卖平台专送订单,等待骑手接单");
  68. peisongLabel->SetTextColor(0xFFFF4500);
  69. //隐藏发单按钮
  70. fadanBtn->SetVisible(false);
  71. fadanInfoLabel->SetVisible(false);
  72. quxiaoFadanBtn->SetVisible(false);
  73. }
  74. else
  75. {
  76. peisongLabel->SetText(L"自配送订单");
  77. peisongLabel->SetTextColor(0xFF509962);
  78. if (atof(third_delivery_fee.c_str()) > 0.0001)
  79. {
  80. //第三方配送费大于0,说明已经发单给第三方了
  81. fadanBtn->SetVisible(false);
  82. fadanInfoLabel->SetVisible(true);
  83. quxiaoFadanBtn->SetVisible(true);
  84. if (courier_type == "3")
  85. {
  86. fadanInfoLabel->SetText(L"已发单给快服务,等待骑手接单...");
  87. }
  88. else if (courier_type == "5")
  89. {
  90. fadanInfoLabel->SetText(L"已发单给达达,等待骑手接单...");
  91. }
  92. else if (courier_type == "7")
  93. {
  94. fadanInfoLabel->SetText(L"已发单给顺丰同城,等待骑手接单...");
  95. }
  96. else if (courier_type == "8")
  97. {
  98. fadanInfoLabel->SetText(L"已发单给乐外卖同城配送,等待骑手接单...");
  99. }
  100. else if (courier_type == "9")
  101. {
  102. fadanInfoLabel->SetText(L"已发单给蜂鸟配送,等待骑手接单...");
  103. }
  104. }
  105. else
  106. {
  107. //说明还没发第三方配送
  108. fadanBtn->SetVisible(true);
  109. fadanInfoLabel->SetVisible(false);
  110. quxiaoFadanBtn->SetVisible(false);
  111. }
  112. }
  113. }
  114. else if (m_status == 3)
  115. {
  116. //针对已确认非配送中订单进行处理
  117. if ((m_from_type == CLewaimaiString::UnicodeToUTF8(L"美团外卖") || m_from_type == CLewaimaiString::UnicodeToUTF8(L"饿了么")) && m_is_self_delivery == "0")
  118. {
  119. //美团饿了么订单,并且非商家自配送订单
  120. peisongLabel->SetText(L"外卖平台专送订单,骑手已接单");
  121. peisongLabel->SetTextColor(0xFFFF4500);
  122. //隐藏发单按钮
  123. fadanBtn->SetVisible(false);
  124. fadanInfoLabel->SetVisible(false);
  125. quxiaoFadanBtn->SetVisible(false);
  126. }
  127. else
  128. {
  129. peisongLabel->SetText(L"自配送订单,骑手已接单");
  130. peisongLabel->SetTextColor(0xFF509962);
  131. //针对配送中订单进行处理
  132. fadanBtn->SetVisible(false);
  133. std::string courier_name = CLewaimaiJson::ToString(orderinfo["courier_name"]);
  134. std::string courier_phone = CLewaimaiJson::ToString(orderinfo["courier_phone"]);
  135. std::wstring qishou_type = L"";
  136. if (courier_type == "1")
  137. {
  138. qishou_type = L"自配送";
  139. }
  140. else if (courier_type == "3")
  141. {
  142. qishou_type = L"快服务";
  143. }
  144. else if (courier_type == "5")
  145. {
  146. qishou_type = L"达达";
  147. }
  148. else if (courier_type == "7")
  149. {
  150. qishou_type = L"顺丰同城";
  151. }
  152. else if (courier_type == "8")
  153. {
  154. qishou_type = L"乐外卖";
  155. }
  156. else if (courier_type == "9")
  157. {
  158. qishou_type = L"蜂鸟";
  159. }
  160. std::wstring qishouInfo;
  161. qishouInfo += qishou_type + L"骑手:" + CLewaimaiString::UTF8ToUnicode(courier_name) + L"," + CLewaimaiString::UTF8ToUnicode(courier_phone);
  162. fadanInfoLabel->SetVisible(true);
  163. fadanInfoLabel->SetText(qishouInfo.c_str());
  164. quxiaoFadanBtn->SetVisible(true);
  165. }
  166. }
  167. else
  168. {
  169. //针对已确认非配送中订单进行处理
  170. if ((m_from_type == CLewaimaiString::UnicodeToUTF8(L"美团外卖") || m_from_type == CLewaimaiString::UnicodeToUTF8(L"饿了么")) && m_is_self_delivery == "0")
  171. {
  172. //美团饿了么订单,并且非商家自配送订单
  173. peisongLabel->SetText(L"外卖平台专送订单");
  174. peisongLabel->SetTextColor(0xFFFF4500);
  175. //隐藏发单按钮
  176. fadanBtn->SetVisible(false);
  177. fadanInfoLabel->SetVisible(false);
  178. quxiaoFadanBtn->SetVisible(false);
  179. }
  180. else
  181. {
  182. peisongLabel->SetText(L"自配送订单");
  183. peisongLabel->SetTextColor(0xFF509962);
  184. }
  185. fadanBtn->SetVisible(false);
  186. fadanInfoLabel->SetVisible(false);
  187. quxiaoFadanBtn->SetVisible(false);
  188. }
  189. }
  190. //显示预约的戳
  191. if (m_is_book == "0")
  192. {
  193. this->FindSubControl(L"waimai_order_list_yuyue")->SetVisible(false);
  194. }
  195. else
  196. {
  197. this->FindSubControl(L"waimai_order_list_yuyue")->SetVisible(true);
  198. }
  199. this->FindSubControl(L"waimai_order_list_type_val")->SetText(order_type.c_str());
  200. this->FindSubControl(L"waimai_order_list_delivery_date_val")->SetText(delivery_date.c_str());
  201. CControlUI* meituan_icon = this->FindSubControl(L"waimai_order_list_meituan_icon");
  202. CControlUI* eleme_icon = this->FindSubControl(L"waimai_order_list_eleme_icon");
  203. CControlUI* zhipuzi_icon = this->FindSubControl(L"waimai_order_list_zhipuzi_icon");
  204. if (m_from_type == CLewaimaiString::UnicodeToUTF8(L"美团外卖"))
  205. {
  206. meituan_icon->SetVisible(true);
  207. }
  208. else if (m_from_type == CLewaimaiString::UnicodeToUTF8(L"饿了么"))
  209. {
  210. eleme_icon->SetVisible(true);
  211. }
  212. else
  213. {
  214. zhipuzi_icon->SetVisible(true);
  215. }
  216. if (m_status == 1)
  217. {
  218. this->FindSubControl(L"waimai_order_list_refund_status")->SetVisible(false);
  219. this->FindSubControl(L"waimai_order_list_refund_status_val")->SetVisible(false);
  220. this->FindSubControl(L"waimai_order_list_confirme")->SetVisible(true);
  221. this->FindSubControl(L"waimai_order_list_success")->SetVisible(false);
  222. this->FindSubControl(L"waimai_order_list_fail")->SetVisible(true);
  223. this->FindSubControl(L"waimai_order_list_agree")->SetVisible(false);
  224. this->FindSubControl(L"waimai_order_list_disagree")->SetVisible(false);
  225. }
  226. else if (m_status == 2 || m_status == 3)
  227. {
  228. this->FindSubControl(L"waimai_order_list_refund_status")->SetVisible(false);
  229. this->FindSubControl(L"waimai_order_list_refund_status_val")->SetVisible(false);
  230. this->FindSubControl(L"waimai_order_list_confirme")->SetVisible(false);
  231. this->FindSubControl(L"waimai_order_list_success")->SetVisible(true);
  232. this->FindSubControl(L"waimai_order_list_fail")->SetVisible(true);
  233. this->FindSubControl(L"waimai_order_list_agree")->SetVisible(false);
  234. this->FindSubControl(L"waimai_order_list_disagree")->SetVisible(false);
  235. }
  236. else if (m_status == 4 || m_status == 5)
  237. {
  238. this->FindSubControl(L"waimai_order_list_refund_status")->SetVisible(false);
  239. this->FindSubControl(L"waimai_order_list_refund_status_val")->SetVisible(false);
  240. this->FindSubControl(L"waimai_order_list_confirme")->SetVisible(false);
  241. this->FindSubControl(L"waimai_order_list_success")->SetVisible(false);
  242. this->FindSubControl(L"waimai_order_list_fail")->SetVisible(false);
  243. this->FindSubControl(L"waimai_order_list_agree")->SetVisible(false);
  244. this->FindSubControl(L"waimai_order_list_disagree")->SetVisible(false);
  245. }
  246. else if (m_status == 6)
  247. {
  248. this->FindSubControl(L"waimai_order_list_refund_status")->SetVisible(false);
  249. this->FindSubControl(L"waimai_order_list_refund_status_val")->SetVisible(false);
  250. this->FindSubControl(L"waimai_order_list_confirme")->SetVisible(false);
  251. this->FindSubControl(L"waimai_order_list_success")->SetVisible(false);
  252. this->FindSubControl(L"waimai_order_list_fail")->SetVisible(false);
  253. this->FindSubControl(L"waimai_order_list_agree")->SetVisible(false);
  254. this->FindSubControl(L"waimai_order_list_disagree")->SetVisible(false);
  255. }
  256. else if (m_status == 7)
  257. {
  258. this->FindSubControl(L"waimai_order_list_confirme")->SetVisible(false);
  259. this->FindSubControl(L"waimai_order_list_success")->SetVisible(false);
  260. this->FindSubControl(L"waimai_order_list_fail")->SetVisible(false);
  261. std::string refund_status = orderinfo["refund_status"].GetString();
  262. if (refund_status == "1")
  263. {
  264. this->FindSubControl(L"waimai_order_list_agree")->SetVisible(true);
  265. this->FindSubControl(L"waimai_order_list_disagree")->SetVisible(true);
  266. }
  267. else if (refund_status == "5")
  268. {
  269. this->FindSubControl(L"waimai_order_list_agree")->SetVisible(true);
  270. this->FindSubControl(L"waimai_order_list_disagree")->SetVisible(false);
  271. }
  272. else
  273. {
  274. this->FindSubControl(L"waimai_order_list_agree")->SetVisible(false);
  275. this->FindSubControl(L"waimai_order_list_disagree")->SetVisible(false);
  276. }
  277. this->FindSubControl(L"waimai_order_list_refund_status")->SetVisible(true);
  278. this->FindSubControl(L"waimai_order_list_refund_status_val")->SetVisible(true);
  279. std::wstring refund_status_text;
  280. if (refund_status == "1")
  281. {
  282. refund_status_text = L"顾客申请退款,等待商家处理";
  283. }
  284. else if (refund_status == "2")
  285. {
  286. refund_status_text = L"退款成功,订单失败";
  287. }
  288. else if (refund_status == "3")
  289. {
  290. refund_status_text = L"商家已拒绝退款,等待顾客受理";
  291. }
  292. else if (refund_status == "4")
  293. {
  294. refund_status_text = L"退款失败,订单变为已确认";
  295. }
  296. else if (refund_status == "5")
  297. {
  298. refund_status_text = L"顾客再次发起退款,等待客服介入处理中";
  299. }
  300. this->FindSubControl(L"waimai_order_list_refund_status_val")->SetText(refund_status_text.c_str());
  301. }
  302. // 左侧状态色条:默认绿色,失败/取消时变色(随卡片圆角,走专用 PNG)
  303. CControlUI* leftBar = static_cast<CControlUI*>(this->FindSubControl(L"waimai_order_item_leftbar"));
  304. if (leftBar != NULL)
  305. {
  306. if (m_status == 5)
  307. leftBar->SetBkImage(L"file='waimai_bar_red.png'"); // 失败 - 红色
  308. else if (m_status == 6)
  309. leftBar->SetBkImage(L"file='waimai_bar_gray.png'"); // 已取消 - 灰色
  310. else
  311. leftBar->SetBkImage(L"file='waimai_bar_green.png'"); // 其余 - 绿色
  312. }
  313. }