CBaobiaoPageUI.cpp 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378
  1. #include "../pch/pch.h"
  2. #include "CBaobiaoPageUI.h"
  3. #include "../wnd/CHuiyuanChongzhiWnd.h"
  4. #include "../wnd/CHuiyuanAddWnd.h"
  5. CBaobiaoPageUI::CBaobiaoPageUI()
  6. {
  7. }
  8. CBaobiaoPageUI::~CBaobiaoPageUI()
  9. {
  10. }
  11. //初始化当前页面的展示,处理默认展示效果,在页面被加载的时候调用
  12. void CBaobiaoPageUI::InitShow()
  13. {
  14. time_t now = time(NULL);
  15. std::string s_now = CLewaimaiTime::DatetimeToDateString(now);
  16. m_init_time = s_now + " 00:00:00";
  17. m_end_time = s_now + " 23:59:59";
  18. Refresh();
  19. }
  20. //处理按钮点击类事件
  21. void CBaobiaoPageUI::HandleClickMsg(TNotifyUI& msg)
  22. {
  23. CDuiString name = msg.pSender->GetName();
  24. if (name == L"btn_jintian")
  25. {
  26. ShowJintian();
  27. }
  28. else if (name == L"btn_zuotian")
  29. {
  30. ShowZuotian();
  31. }
  32. else if (name == L"btn_qitian")
  33. {
  34. ShowQitian();
  35. }
  36. else if (name == L"btn_sanshitian")
  37. {
  38. ShowSanshitian();
  39. }
  40. }
  41. //处理option切换事件
  42. void CBaobiaoPageUI::HandleSelectChangeMsg(TNotifyUI& msg)
  43. {
  44. }
  45. //处理下拉框、radio的切换事件
  46. void CBaobiaoPageUI::HandleItemSelectMsg(TNotifyUI& msg)
  47. {
  48. }
  49. //处理编辑框输入内容改变事件
  50. void CBaobiaoPageUI::HandleTextChangedMsg(TNotifyUI& msg)
  51. {
  52. DuiLib::CDuiString senderName = msg.pSender->GetName();
  53. if (senderName == L"huiyuan_page_shoujihao_edit")
  54. {
  55. }
  56. }
  57. //处理扫码枪捕捉到的扫码信息
  58. void CBaobiaoPageUI::HandleTextCapture(std::string content)
  59. {
  60. if (m_is_show_modal_wnd == true)
  61. {
  62. m_curModalWnd->HandleTextCapture(content);
  63. }
  64. }
  65. bool CBaobiaoPageUI::HandleCustomMessage(UINT uMsg, WPARAM wParam, LPARAM lParam)
  66. {
  67. if (uMsg == WM_BAOBIAO_REFRESH)
  68. {
  69. DoRefresh();
  70. return true;
  71. }
  72. return false;
  73. }
  74. void CBaobiaoPageUI::ShowJintian()
  75. {
  76. //先处理顶部按钮状态变化
  77. CButtonUI* jintian = static_cast<CButtonUI*>(this->FindSubControl(L"btn_jintian"));
  78. CControlUI* jintian_line = static_cast<CControlUI*>(this->FindSubControl(L"btn_jintian_line"));
  79. jintian->SetTextColor(0xFF43A947);
  80. jintian_line->SetVisible(true);
  81. CButtonUI* zuotian = static_cast<CButtonUI*>(this->FindSubControl(L"btn_zuotian"));
  82. CControlUI* zuotian_line = static_cast<CControlUI*>(this->FindSubControl(L"btn_zuotian_line"));
  83. zuotian->SetTextColor(0xFF555555);
  84. zuotian_line->SetVisible(false);
  85. CButtonUI* qitian = static_cast<CButtonUI*>(this->FindSubControl(L"btn_qitian"));
  86. CControlUI * qitian_line = static_cast<CControlUI*>(this->FindSubControl(L"btn_qitian_line"));
  87. qitian->SetTextColor(0xFF555555);
  88. qitian_line->SetVisible(false);
  89. CButtonUI* sanshitian = static_cast<CButtonUI*>(this->FindSubControl(L"btn_sanshitian"));
  90. CControlUI * sanshitian_line = static_cast<CControlUI*>(this->FindSubControl(L"btn_sanshitian_line"));
  91. sanshitian->SetTextColor(0xFF555555);
  92. sanshitian_line->SetVisible(false);
  93. //然后处理日期
  94. time_t now = time(NULL);
  95. time_t start = now - 60 * 60 * 24 * 0;
  96. std::string s_start = CLewaimaiTime::DatetimeToDateString(start);
  97. m_init_time = s_start + " 00:00:00";
  98. m_end_time = s_start + " 23:59:59";
  99. Refresh();
  100. }
  101. void CBaobiaoPageUI::ShowZuotian()
  102. {
  103. //先处理顶部按钮状态变化
  104. CButtonUI* jintian = static_cast<CButtonUI*>(this->FindSubControl(L"btn_jintian"));
  105. CControlUI* jintian_line = static_cast<CControlUI*>(this->FindSubControl(L"btn_jintian_line"));
  106. jintian->SetTextColor(0xFF555555);
  107. jintian_line->SetVisible(false);
  108. CButtonUI* zuotian = static_cast<CButtonUI*>(this->FindSubControl(L"btn_zuotian"));
  109. CControlUI* zuotian_line = static_cast<CControlUI*>(this->FindSubControl(L"btn_zuotian_line"));
  110. zuotian->SetTextColor(0xFF43A947);
  111. zuotian_line->SetVisible(true);
  112. CButtonUI* qitian = static_cast<CButtonUI*>(this->FindSubControl(L"btn_qitian"));
  113. CControlUI * qitian_line = static_cast<CControlUI*>(this->FindSubControl(L"btn_qitian_line"));
  114. qitian->SetTextColor(0xFF555555);
  115. qitian_line->SetVisible(false);
  116. CButtonUI* sanshitian = static_cast<CButtonUI*>(this->FindSubControl(L"btn_sanshitian"));
  117. CControlUI * sanshitian_line = static_cast<CControlUI*>(this->FindSubControl(L"btn_sanshitian_line"));
  118. sanshitian->SetTextColor(0xFF555555);
  119. sanshitian_line->SetVisible(false);
  120. //然后处理日期
  121. time_t now = time(NULL);
  122. time_t start = now - 60 * 60 * 24 * 1;
  123. std::string s_start = CLewaimaiTime::DatetimeToDateString(start);
  124. m_init_time = s_start + " 00:00:00";
  125. m_end_time = s_start + " 23:59:59";
  126. Refresh();
  127. }
  128. void CBaobiaoPageUI::ShowQitian()
  129. {
  130. //先处理顶部按钮状态变化
  131. CButtonUI* jintian = static_cast<CButtonUI*>(this->FindSubControl(L"btn_jintian"));
  132. CControlUI* jintian_line = static_cast<CControlUI*>(this->FindSubControl(L"btn_jintian_line"));
  133. jintian->SetTextColor(0xFF555555);
  134. jintian_line->SetVisible(false);
  135. CButtonUI* zuotian = static_cast<CButtonUI*>(this->FindSubControl(L"btn_zuotian"));
  136. CControlUI* zuotian_line = static_cast<CControlUI*>(this->FindSubControl(L"btn_zuotian_line"));
  137. zuotian->SetTextColor(0xFF555555);
  138. zuotian_line->SetVisible(false);
  139. CButtonUI* qitian = static_cast<CButtonUI*>(this->FindSubControl(L"btn_qitian"));
  140. CControlUI * qitian_line = static_cast<CControlUI*>(this->FindSubControl(L"btn_qitian_line"));
  141. qitian->SetTextColor(0xFF43A947);
  142. qitian_line->SetVisible(true);
  143. CButtonUI* sanshitian = static_cast<CButtonUI*>(this->FindSubControl(L"btn_sanshitian"));
  144. CControlUI * sanshitian_line = static_cast<CControlUI*>(this->FindSubControl(L"btn_sanshitian_line"));
  145. sanshitian->SetTextColor(0xFF555555);
  146. sanshitian_line->SetVisible(false);
  147. //然后处理日期
  148. time_t now = time(NULL);
  149. time_t start = now - 60 * 60 * 24 * 6;
  150. std::string s_start = CLewaimaiTime::DatetimeToDateString(start);
  151. std::string s_end = CLewaimaiTime::DatetimeToDateString(now);
  152. m_init_time = s_start + " 00:00:00";
  153. m_end_time = s_end + " 23:59:59";
  154. Refresh();
  155. }
  156. void CBaobiaoPageUI::ShowSanshitian()
  157. {
  158. //先处理顶部按钮状态变化
  159. CButtonUI* jintian = static_cast<CButtonUI*>(this->FindSubControl(L"btn_jintian"));
  160. CControlUI* jintian_line = static_cast<CControlUI*>(this->FindSubControl(L"btn_jintian_line"));
  161. jintian->SetTextColor(0xFF555555);
  162. jintian_line->SetVisible(false);
  163. CButtonUI* zuotian = static_cast<CButtonUI*>(this->FindSubControl(L"btn_zuotian"));
  164. CControlUI* zuotian_line = static_cast<CControlUI*>(this->FindSubControl(L"btn_zuotian_line"));
  165. zuotian->SetTextColor(0xFF555555);
  166. zuotian_line->SetVisible(false);
  167. CButtonUI* qitian = static_cast<CButtonUI*>(this->FindSubControl(L"btn_qitian"));
  168. CControlUI * qitian_line = static_cast<CControlUI*>(this->FindSubControl(L"btn_qitian_line"));
  169. qitian->SetTextColor(0xFF555555);
  170. qitian_line->SetVisible(false);
  171. CButtonUI* sanshitian = static_cast<CButtonUI*>(this->FindSubControl(L"btn_sanshitian"));
  172. CControlUI * sanshitian_line = static_cast<CControlUI*>(this->FindSubControl(L"btn_sanshitian_line"));
  173. sanshitian->SetTextColor(0xFF43A947);
  174. sanshitian_line->SetVisible(true);
  175. //然后处理日期
  176. time_t now = time(NULL);
  177. time_t start = now - 60 * 60 * 24 * 29;
  178. std::string s_start = CLewaimaiTime::DatetimeToDateString(start);
  179. std::string s_end = CLewaimaiTime::DatetimeToDateString(now);
  180. m_init_time = s_start + " 00:00:00";
  181. m_end_time = s_end + " 23:59:59";
  182. Refresh();
  183. }
  184. void CBaobiaoPageUI::Refresh()
  185. {
  186. //根据当前的起始时间,刷新数据显示
  187. //开始转菊花
  188. CContainerUI* pOrderListLayout = static_cast<CContainerUI*>(this->FindSubControl(_T("data_layout")));
  189. pOrderListLayout->SetVisible(false);
  190. this->FindSubControl(_T("loading"))->SetVisible(true);
  191. //启动一个线程,进行网络请求操作
  192. std::thread t(&CBaobiaoPageUI::HandleRefresh, this);
  193. t.detach();
  194. }
  195. void CBaobiaoPageUI::HandleRefresh()
  196. {
  197. std::string url = "/analysis/index/statistics/index";
  198. //请求外卖的未处理订单,直接用当前的page值去请求
  199. std::map<std::string, std::string> params;
  200. params["begin_time"] = m_init_time;
  201. params["end_time"] = m_end_time;
  202. std::string response;
  203. CZhipuziHttpClient::GetInstance()->RequestNew(url.c_str(), params, response);
  204. m_response = response;
  205. PostMessage(m_pManager->GetPaintWindow(), WM_BAOBIAO_REFRESH, 0, 0);
  206. }
  207. void CBaobiaoPageUI::DoRefresh()
  208. {
  209. rapidjson::Document document;
  210. document.Parse(m_response.c_str());
  211. if (document.HasParseError())
  212. {
  213. LOG_INFO("parse response error!");
  214. return;
  215. }
  216. if (!document.HasMember("errcode") || !document.HasMember("errmsg") || !document.HasMember("data"))
  217. {
  218. LOG_INFO("json error!");
  219. return;
  220. }
  221. rapidjson::Value& v_errcode = document["errcode"];
  222. int errcode = v_errcode.GetInt();
  223. if (errcode != 0)
  224. {
  225. LOG_INFO("response failed! message:" << document["errmsg"].GetString());
  226. return;
  227. }
  228. //获得数据成功
  229. rapidjson::Value& data = document["data"];
  230. std::string waimai_num = std::to_string(data["waimai_member"].GetInt());
  231. std::string diannei_num = std::to_string(data["diannei_member"].GetInt());
  232. std::string huiyuan_num = std::to_string(data["today_member"].GetInt());
  233. std::string waimai_value = CLewaimaiString::DoubleToString(data["waimai_money"].GetFloat(), 2);
  234. std::string diannei_value = CLewaimaiString::DoubleToString(data["diannei_money"].GetFloat(), 2);
  235. std::string huiyuan_value = CLewaimaiString::DoubleToString(data["today_recharge"].GetFloat(), 2);
  236. //开始渲染数据
  237. CLabelUI* waimainumLabel = static_cast<CLabelUI*>(this->FindSubControl(L"waimai_num"));
  238. waimainumLabel->SetText(CLewaimaiString::UTF8ToUnicode(waimai_num).c_str());
  239. CLabelUI* waimaivalueLabel = static_cast<CLabelUI*>(this->FindSubControl(L"waimai_value"));
  240. waimaivalueLabel->SetText(CLewaimaiString::UTF8ToUnicode(waimai_value).c_str());
  241. CLabelUI* dianneinumLabel = static_cast<CLabelUI*>(this->FindSubControl(L"diannei_num"));
  242. dianneinumLabel->SetText(CLewaimaiString::UTF8ToUnicode(diannei_num).c_str());
  243. CLabelUI* dianneivalueLabel = static_cast<CLabelUI*>(this->FindSubControl(L"diannei_value"));
  244. dianneivalueLabel->SetText(CLewaimaiString::UTF8ToUnicode(diannei_value).c_str());
  245. CLabelUI* huiyuannumLabel = static_cast<CLabelUI*>(this->FindSubControl(L"huiyuan_num"));
  246. huiyuannumLabel->SetText(CLewaimaiString::UTF8ToUnicode(huiyuan_num).c_str());
  247. CLabelUI* huiyuanvalueLabel = static_cast<CLabelUI*>(this->FindSubControl(L"huiyuan_value"));
  248. huiyuanvalueLabel->SetText(CLewaimaiString::UTF8ToUnicode(huiyuan_value).c_str());
  249. CContainerUI* pOrderListLayout = static_cast<CContainerUI*>(this->FindSubControl(_T("data_layout")));
  250. pOrderListLayout->SetVisible(true);
  251. this->FindSubControl(_T("loading"))->SetVisible(false);
  252. }
  253. void CBaobiaoPageUI::SetPos(RECT rc, bool bNeedInvalidate)
  254. {
  255. int m_nPageWidth = rc.right - rc.left;
  256. //添加支付方式
  257. int nWidth = m_nPageWidth;
  258. if (nWidth == 0)
  259. {
  260. return;
  261. }
  262. //根据宽度计算每行显示的数量
  263. int nMeihangNum = nWidth / 260;
  264. if (nMeihangNum < 1)
  265. {
  266. nMeihangNum = 1;
  267. }
  268. int num = 0;
  269. CHorizontalLayoutUI* pFenleiLayout = static_cast<CHorizontalLayoutUI*>(this->FindSubControl(_T("baobiao_page_yingye_items")));
  270. for (int i = 0; i < 6; i++)
  271. {
  272. CVerticalLayoutUI* curItem = static_cast<CVerticalLayoutUI*>(pFenleiLayout->GetItemAt(i));
  273. int curRow = num / nMeihangNum + 1;
  274. int curCol = num % nMeihangNum + 1;
  275. RECT rect;
  276. rect.left = (curCol - 1) * 260 + 20;
  277. rect.right = rect.left + 240;
  278. rect.top = (curRow - 1) * 146 + 20;
  279. rect.bottom = rect.top + 126;
  280. curItem->SetFloat(true);
  281. curItem->SetPos(rect);
  282. num++;
  283. }
  284. //调整区域高度
  285. CVerticalLayoutUI* pLayout = static_cast<CVerticalLayoutUI*>(this->FindSubControl(_T("data_layout")));
  286. int lastRow = (num - 1) / nMeihangNum + 1;
  287. pLayout->SetFixedHeight(lastRow * 146 + 20 + 30);
  288. CContainerUI::SetPos(rc, bNeedInvalidate);
  289. }