| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380 |
- #include "../pch/pch.h"
- #include "CJiaobanPageUI.h"
- #include "../wnd/CHuiyuanChongzhiWnd.h"
- #include "../wnd/CHuiyuanAddWnd.h"
- #include "../print/CPosPrinter.h"
- CJiaobanPageUI::CJiaobanPageUI()
- {
- }
- CJiaobanPageUI::~CJiaobanPageUI()
- {
- }
- //初始化当前页面的展示,处理默认展示效果,在页面被加载的时候调用
- void CJiaobanPageUI::InitShow()
- {
- time_t now = time(NULL);
- std::string s_now = CLewaimaiTime::DatetimeToString(now);
- m_end_time = s_now;
- CLabelUI* endLabel = static_cast<CLabelUI*>(this->FindSubControl(L"jiaoban_page_end_time"));
- endLabel->SetText(CLewaimaiString::UTF8ToUnicode(m_end_time).c_str());
- CLabelUI* acccountLabel = static_cast<CLabelUI*>(this->FindSubControl(L"jiaoban_page_account"));
- acccountLabel->SetText(CLewaimaiString::UTF8ToUnicode(CZhipuziHttpClient::GetInstance()->GetUsername()).c_str());
- InitJiaobanShijian();
- }
- //处理按钮点击类事件
- void CJiaobanPageUI::HandleClickMsg(TNotifyUI& msg)
- {
- CDuiString name = msg.pSender->GetName();
- if (name == L"jiaoban_page_queren_btn")
- {
- StartJiaoban();
- }
- }
- //处理option切换事件
- void CJiaobanPageUI::HandleSelectChangeMsg(TNotifyUI& msg)
- {
- }
- //处理下拉框、radio的切换事件
- void CJiaobanPageUI::HandleItemSelectMsg(TNotifyUI& msg)
- {
- CDuiString name = msg.pSender->GetName();
- if (name == _T("jiaoban_page_init_time_select"))
- {
- CComboUI* com = static_cast<CComboUI*>(this->FindSubControl(_T("jiaoban_page_init_time_select")));
- std::wstring ws = com->GetItemAt(com->GetCurSel())->GetText();
- m_init_time = CLewaimaiString::UnicodeToUTF8(ws);
- Refresh();
- }
- }
- //处理编辑框输入内容改变事件
- void CJiaobanPageUI::HandleTextChangedMsg(TNotifyUI& msg)
- {
- DuiLib::CDuiString senderName = msg.pSender->GetName();
- if (senderName == L"huiyuan_page_shoujihao_edit")
- {
- }
- }
- //处理扫码枪捕捉到的扫码信息
- void CJiaobanPageUI::HandleTextCapture(std::string content)
- {
- if (m_is_show_modal_wnd == true)
- {
- m_curModalWnd->HandleTextCapture(content);
- }
- }
- bool CJiaobanPageUI::HandleCustomMessage(UINT uMsg, WPARAM wParam, LPARAM lParam)
- {
- if (uMsg == WM_JIAOBAN_REFRESH)
- {
- DoRefresh();
- return true;
- }
- return false;
- }
- void CJiaobanPageUI::InitJiaobanShijian()
- {
- CContainerUI* pOrderListLayout = static_cast<CContainerUI*>(this->FindSubControl(_T("data_layout")));
- pOrderListLayout->SetVisible(false);
- this->FindSubControl(_T("loading"))->SetVisible(true);
- //启动一个线程,进行网络请求操作
- std::thread t(&CJiaobanPageUI::HandleJiaobanShijian, this);
- t.detach();
- }
- void CJiaobanPageUI::HandleJiaobanShijian()
- {
- std::string url = "/user/getlogintime";
- //请求外卖的未处理订单,直接用当前的page值去请求
- std::map<string, string> params;
- std::string response;
- CZhipuziHttpClient::GetInstance()->Request(url.c_str(), params, response);
- rapidjson::Document document;
- document.Parse(response.c_str());
- if (document.HasParseError())
- {
- LOG_INFO("parse response error!");
- return;
- }
- if (!document.HasMember("errcode") || !document.HasMember("errmsg") || !document.HasMember("data"))
- {
- LOG_INFO("json error!");
- return;
- }
- rapidjson::Value& v_errcode = document["errcode"];
- int errcode = v_errcode.GetInt();
- if (errcode != 0)
- {
- LOG_INFO("response failed! message:" << document["errmsg"].GetString());
- return;
- }
- //获得数据成功
- rapidjson::Value& data = document["data"];
- std::string select_time = data["select_time"].GetString();
- rapidjson::Value& rows = data["rows"];
- //取最后一个时间点
- m_init_time = rows[rows.Size() - 1]["init_time"].GetString();
- m_shangban_times.clear();
- CComboUI* com = NULL;
- com = static_cast<CComboUI*>(this->FindSubControl(_T("jiaoban_page_init_time_select")));
- com->RemoveAll();
- int qidian = 0;
- int num = rows.Size();
- if (num > 10)
- {
- //只选最多10个
- qidian = rows.Size() - 10;
- num = 10;
- }
- for (rapidjson::SizeType i = qidian; i < rows.Size(); ++i)
- {
- std::string cur_time = rows[i]["init_time"].GetString();
- m_shangban_times.push_back(cur_time);
- CListLabelElementUI* elem = new CListLabelElementUI();
- elem->SetText(CLewaimaiString::UTF8ToUnicode(cur_time).c_str());
- com->Add(elem);
- }
- com->SetInternVisible(true);
- com->SelectItem(num - 1, false, false);
- com->SetText(CLewaimaiString::UTF8ToUnicode(m_init_time).c_str());
- //到这里了,开始处理数据刷新
- HandleRefresh();
- }
- void CJiaobanPageUI::Refresh()
- {
- //根据当前的起始时间,刷新数据显示
- //开始转菊花
- CContainerUI* pOrderListLayout = static_cast<CContainerUI*>(this->FindSubControl(_T("data_layout")));
- pOrderListLayout->SetVisible(false);
- this->FindSubControl(_T("loading"))->SetVisible(true);
- //启动一个线程,进行网络请求操作
- std::thread t(&CJiaobanPageUI::HandleRefresh, this);
- t.detach();
- }
- void CJiaobanPageUI::HandleRefresh()
- {
- std::string url = "/analysis/index/statistics/index";
- //请求外卖的未处理订单,直接用当前的page值去请求
- std::map<string, string> params;
- params["begin_time"] = m_init_time;
- params["end_time"] = m_end_time;
- std::string response;
- CZhipuziHttpClient::GetInstance()->RequestNew(url.c_str(), params, response);
- m_response = response;
- ::PostMessage(m_pManager->GetPaintWindow(), WM_JIAOBAN_REFRESH, 0, 0);
- }
- void CJiaobanPageUI::DoRefresh()
- {
- rapidjson::Document document;
- document.Parse(m_response.c_str());
- if (document.HasParseError())
- {
- LOG_INFO("parse response error!");
- return;
- }
- if (!document.HasMember("errcode") || !document.HasMember("errmsg") || !document.HasMember("data"))
- {
- LOG_INFO("json error!");
- return;
- }
- rapidjson::Value& v_errcode = document["errcode"];
- int errcode = v_errcode.GetInt();
- if (errcode != 0)
- {
- LOG_INFO("response failed! message:" << document["errmsg"].GetString());
- return;
- }
- //获得数据成功
- rapidjson::Value& data = document["data"];
- m_diannei_num = to_string(data["diannei_member"].GetInt());
- //m_huiyuan_num = to_string(data["today_member"].GetInt());
- m_diannei_value = CLewaimaiString::DoubleToString(data["diannei_money"].GetFloat(), 2);
- //m_huiyuan_value = CLewaimaiString::DoubleToString(data["today_recharge"].GetFloat(), 2);
- m_diannei_refund_member = to_string(data["diannei_refund_member"].GetInt());
- m_diannei_refund_money = CLewaimaiString::DoubleToString(data["diannei_refund_money"].GetFloat(), 2);
- m_diannei_discount_money = CLewaimaiString::DoubleToString(data["diannei_discount_money"].GetFloat(), 2);
- m_diannei_xianjin_value = CLewaimaiString::DoubleToString(data["ready_money"].GetFloat(), 2);
- m_diannei_xianjin_tuikuan = CLewaimaiString::DoubleToString(data["ready_money_refund"].GetFloat(), 2);
- m_diannei_xianjin_zengzhang = CLewaimaiString::DoubleToString(data["ready_money_boost"].GetFloat(), 2);
- //开始渲染数据
- CLabelUI* dianneinumLabel = static_cast<CLabelUI*>(this->FindSubControl(L"diannei_num"));
- dianneinumLabel->SetText(CLewaimaiString::UTF8ToUnicode(m_diannei_num).c_str());
- CLabelUI* dianneivalueLabel = static_cast<CLabelUI*>(this->FindSubControl(L"diannei_value"));
- dianneivalueLabel->SetText(CLewaimaiString::UTF8ToUnicode(m_diannei_value).c_str());
- /*
- CLabelUI* huiyuannumLabel = static_cast<CLabelUI*>(this->FindSubControl(L"huiyuan_num"));
- huiyuannumLabel->SetText(CLewaimaiString::UTF8ToUnicode(m_huiyuan_num).c_str());
- CLabelUI* huiyuanvalueLabel = static_cast<CLabelUI*>(this->FindSubControl(L"huiyuan_value"));
- huiyuanvalueLabel->SetText(CLewaimaiString::UTF8ToUnicode(m_huiyuan_value).c_str());
- */
- CLabelUI* diannei_tuikuan_numLabel = static_cast<CLabelUI*>(this->FindSubControl(L"diannei_tuikuan_num"));
- diannei_tuikuan_numLabel->SetText(CLewaimaiString::UTF8ToUnicode(m_diannei_refund_member).c_str());
- CLabelUI* diannei_tuikuan_valueLabel = static_cast<CLabelUI*>(this->FindSubControl(L"diannei_tuikuan_value"));
- diannei_tuikuan_valueLabel->SetText(CLewaimaiString::UTF8ToUnicode(m_diannei_refund_money).c_str());
- CLabelUI* diannei_youhui_valueLabel = static_cast<CLabelUI*>(this->FindSubControl(L"diannei_youhui_value"));
- diannei_youhui_valueLabel->SetText(CLewaimaiString::UTF8ToUnicode(m_diannei_discount_money).c_str());
- CLabelUI* diannei_xianjin_valueLabel = static_cast<CLabelUI*>(this->FindSubControl(L"diannei_xianjin_value"));
- diannei_xianjin_valueLabel->SetText(CLewaimaiString::UTF8ToUnicode(m_diannei_xianjin_value).c_str());
- CLabelUI* diannei_xianjin_tuikuanLabel = static_cast<CLabelUI*>(this->FindSubControl(L"diannei_xianjin_tuikuan"));
- diannei_xianjin_tuikuanLabel->SetText(CLewaimaiString::UTF8ToUnicode(m_diannei_xianjin_tuikuan).c_str());
- CLabelUI* diannei_xianjin_zengzhangLabel = static_cast<CLabelUI*>(this->FindSubControl(L"diannei_xianjin_zengzhang"));
- diannei_xianjin_zengzhangLabel->SetText(CLewaimaiString::UTF8ToUnicode(m_diannei_xianjin_zengzhang).c_str());
- CContainerUI* pOrderListLayout = static_cast<CContainerUI*>(this->FindSubControl(_T("data_layout")));
- pOrderListLayout->SetVisible(true);
- this->FindSubControl(_T("loading"))->SetVisible(false);
- }
- void CJiaobanPageUI::StartJiaoban()
- {
- //先进行打印
- CJiaobaoOrder order;
- order.m_init_time = m_init_time;
- order.m_end_time = m_end_time;
- order.m_diannei_num = m_diannei_num;
- order.m_huiyuan_num = m_huiyuan_num;
- order.m_diannei_value = m_diannei_value;
- order.m_huiyuan_value = m_huiyuan_value;
- order.m_diannei_refund_member = m_diannei_refund_member;
- order.m_diannei_refund_money = m_diannei_refund_money;
- order.m_diannei_discount_money = m_diannei_discount_money;
- order.m_diannei_xianjin_value = m_diannei_xianjin_value;
- order.m_diannei_xianjin_tuikuan = m_diannei_xianjin_tuikuan;
- order.m_diannei_xianjin_zengzhang = m_diannei_xianjin_zengzhang;
- order.shopname = CShopinfo::GetInstance()->m_shop_name;
- order.employee_name = CZhipuziHttpClient::GetInstance()->GetUsername();
- CPosPrinter printer;
- printer.PirntJiaobanOrder(order);
- //打印完成之后,退出登陆
- m_pMainWnd->LoginOut(1);
- }
- void CJiaobanPageUI::SetPos(RECT rc, bool bNeedInvalidate)
- {
- int m_nPageWidth = rc.right - rc.left;
- //添加支付方式
- int nWidth = m_nPageWidth;
- if (nWidth == 0)
- {
- return;
- }
- //根据宽度计算每行显示的数量
- int nMeihangNum = nWidth / 260;
- if (nMeihangNum < 1)
- {
- nMeihangNum = 1;
- }
- int num = 0;
- CHorizontalLayoutUI* pFenleiLayout = static_cast<CHorizontalLayoutUI*>(this->FindSubControl(_T("jiaoban_page_yingye_items")));
- for (int i = 0; i < 2; i++)
- {
- CVerticalLayoutUI* curItem = static_cast<CVerticalLayoutUI*>(pFenleiLayout->GetItemAt(i));
- int curRow = num / nMeihangNum + 1;
- int curCol = num % nMeihangNum + 1;
- RECT rect;
- rect.left = (curCol - 1) * 260 + 20;
- rect.right = rect.left + 240;
- rect.top = (curRow - 1) * 146 + 20;
- rect.bottom = rect.top + 126;
- curItem->SetFloat(true);
- curItem->SetPos(rect);
- num++;
- }
- //调整区域高度
- CVerticalLayoutUI* pLayout = static_cast<CVerticalLayoutUI*>(this->FindSubControl(_T("jiaoban_page_yingye_layout")));
- int lastRow = (num - 1) / nMeihangNum + 1;
- pLayout->SetFixedHeight(lastRow * 146 + 20 + 30);
- CContainerUI::SetPos(rc, bNeedInvalidate);
- }
|