CDiandanPageUI.h 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236
  1. #pragma once
  2. #include "../pch/pch.h"
  3. #include "CBasePageUI.h"
  4. #include "../zhipuzi/CFood.h"
  5. #include "../zhipuzi/CFoodtype.h"
  6. #include "../zhipuzi/CFoodpackage.h"
  7. #include "../control/CDiandanFoodItemUI.h"
  8. #include "../zhipuzi/CDiandanOrder.h"
  9. class CDiandanPageUI : public CBasePageUI
  10. {
  11. public:
  12. CDiandanPageUI();
  13. ~CDiandanPageUI();
  14. //初始化当前页面的展示,处理默认展示效果,在页面被加载的时候调用
  15. void InitShow();
  16. //初始化所有与结算相关的信息,用于下一个新的订单之前的准备工作,清除之前的优惠状态等
  17. void InitJiesuanInfo();
  18. //处理按钮点击类事件
  19. void HandleClickMsg(TNotifyUI& msg);
  20. //处理option切换事件
  21. void HandleSelectChangeMsg(TNotifyUI& msg);
  22. //处理下拉框、radio的切换事件
  23. void HandleItemSelectMsg(TNotifyUI& msg);
  24. //处理编辑框输入内容改变事件
  25. void HandleTextChangedMsg(TNotifyUI& msg);
  26. void InitFoodtypeShow();
  27. //根据当前选择的分类,刷新商品展示
  28. void RefreshFoodlist();
  29. //添加一个新的商品到购物车展示
  30. void AddDiandanOrderItemShow(int index);
  31. //刷新某个购物车商品的显示
  32. void UpdateDiandanOrderItemShow(int index);
  33. //删除购物车中某一个商品
  34. void DelDiandanOrderItemShow(int index);
  35. //清空购物车中所有商品的展示
  36. void ClearDiandanOrderItemShow();
  37. //任何可以引起价格变化的,比如添加、修改、删除商品,或者修改优惠等,需要重新计算总价格,刷新结算账单等地方的显示,都要调用这个方法
  38. void UpdateJiesuanInfo();
  39. //点击某一个商品的item之后的处理逻辑
  40. void ClickFoodAction();
  41. //点击加号之后的逻辑
  42. void ClickAdd();
  43. //点击减号之后的逻辑
  44. void ClickDel();
  45. //点击删除之后的逻辑
  46. void ClickRemove();
  47. //点击规格之后的逻辑
  48. void ClickGuige();
  49. //点击打包之后的逻辑
  50. void ClickDabao();
  51. //点击清空之后的逻辑
  52. void ClickQingkong();
  53. //点击整单备注之后的逻辑
  54. void ClickZhengdanMemo();
  55. //点击更多支付之后的逻辑
  56. void ClickGengduoPay();
  57. //点击继续加菜之后的逻辑
  58. void JixuJiacai();
  59. //点击查看优惠
  60. void ClickChakanYouhui();
  61. //处理会员登录
  62. void ClickMemberLogin();
  63. //点击整单折扣
  64. void ClickZhekou();
  65. //点击加价
  66. void ClickJiajia();
  67. //点击优惠
  68. void ClickRengongyouhui();
  69. //点击扫码使用优惠券
  70. void ClickSaomaYouhuiquan();
  71. //点击扫码商品券
  72. void ClickSaomaShangpinquan();
  73. //点击扫码权益卡
  74. void ClickSaomaQuanyika();
  75. //点击扫码次卡
  76. void ClickSaomaCika();
  77. //点击餐牌号按钮
  78. void ClickCanpai();
  79. //开始进行微信支付收款
  80. void StartWeixinzhifuShoukuan();
  81. //开始进行会员收款
  82. void StartHuiyuanShoukuan();
  83. //开始进行现金收款
  84. void StartXianjinShoukuan();
  85. //开始进行福利卡收款
  86. void StartFulikaShoukuan();
  87. private:
  88. //获取用于提交订单的参数结构
  89. std::map<string, string> GetSendorderParams();
  90. private:
  91. CTileLayoutUI* m_foodLayout;
  92. CHorizontalLayoutUI* m_foodtypeLayout;
  93. //套餐商品数量
  94. int m_nFoodpackageNum;
  95. //所有商品分类(只包含收银机显示的分类)
  96. std::vector<CFoodType> m_types;
  97. //当前选中的商品分类ID,为空表示没选中任何分类,为taocan表示选中套餐分类,如果选中普通商品分类就是分类ID
  98. std::string m_cur_type_id = "";
  99. //当前点击的哪个商品
  100. CDiandanFoodItemUI* m_cur_click_food_item;
  101. //当前购物车的订单,根据这个来进行渲染显示
  102. CDiandanOrder m_cur_diandan_order;
  103. //下面是结算相关信息
  104. //总的优惠
  105. double m_total_youhui;
  106. double m_zhekou_youhui;
  107. //人工加价
  108. double m_jiajia;
  109. //人工优惠
  110. double m_rengong_youhui;
  111. //开台费
  112. double m_kaitai;
  113. //茶位费
  114. double m_chawei;
  115. //打包费
  116. double m_dabao;
  117. //优惠券
  118. bool m_is_youhuiquan;
  119. std::string m_youhuiquan_id;
  120. std::string m_coupon_basic_price;
  121. std::string m_coupon_deadline;
  122. std::string m_coupon_value;
  123. double m_youhuiquan_youhui;
  124. //商品券
  125. bool m_is_shangpinquan; //是否核销的商品券
  126. std::string m_shangpinquan_id;
  127. std::string m_shangpinquan_name;
  128. std::string m_shangpinquan_foodid;
  129. double m_shangpinquan_youhui; //商品券优惠金额
  130. //次卡
  131. bool m_is_cika;
  132. std::string m_cika_id;
  133. std::string m_cika_deduct_type; //次卡优惠类型,0=>折扣,1=>满减,2=>抵扣,3=>指定商品兑换
  134. std::string m_cika_discount; //折扣信息
  135. std::string m_cika_discount_value; //折扣打折值
  136. std::string m_cika_full_reduce; //满减信息
  137. std::string m_cika_full_reduce_value; //满减,例如 200,100中间逗号隔开
  138. std::string m_cika_offer;
  139. std::string m_cika_offer_value;
  140. std::string m_cika_bind_foods_id;
  141. double m_cika_youhui;
  142. //权益卡
  143. bool m_is_quanyika;
  144. std::string m_quanyika_discount; //这里是接口返回的,实际上店铺设置里面也有一个
  145. double m_quanyika_youhui;
  146. //抹零 0:不抹零 1:抹零到角 2:抹零到元
  147. int m_moling_type;
  148. double m_moling_youhui;
  149. //会员相关
  150. bool m_is_member = false;
  151. std::string m_member_name;
  152. std::string m_member_level;
  153. std::string m_member_level_name;
  154. std::string m_member_level_id;
  155. double m_total_member_youhui; //会员商品优惠
  156. bool m_is_member_zhekou = false;
  157. std::string m_member_zhekou_value; //具体会员打几折
  158. double m_member_zhekou_youhui; //会员店铺折扣优惠
  159. //满减
  160. double m_manjian_youhui;
  161. //当前应收总价
  162. double m_cur_total_price;
  163. //餐牌
  164. std::string m_canpai;
  165. bool m_is_show_shoukuan = false;
  166. };