From 7b9c970fd38835624f07185cd2ce4659dbb93200 Mon Sep 17 00:00:00 2001
From: wxr <wxr@hdlchina.com.cn>
Date: 星期二, 27 八月 2024 15:22:16 +0800
Subject: [PATCH] 金茂代码备份

---
 HDL-ON_iOS/HDL-ON_iOS.csproj                                                   |    3 
 HDL_ON/UI/UI1-Login/LoginPageBLL.cs                                            |    2 
 HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/AddRoom/AddRoomPage.cs           |    4 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/WaterHeater/Mode_QuickHeat_On.png |    0 
 HDL_ON/UI/UI2/FuntionControlView/Acst/WetarHeaterJinmaoHistoryPage.cs          |  219 +++++++++-
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/WaterHeater/ModeFree_True.png     |    0 
 HDL_ON/Common/UserInfo.cs                                                      |    2 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/WaterHeater/Mode_Economic.png     |    0 
 HDL_ON/DAL/Server/HttpServerRequest.cs                                         |    2 
 HDL_ON/UI/UI2/FuntionControlView/Acst/InverterJinmaoPage.cs                    |  323 ++++++++++++---
 HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/RoomEditPageBLL.cs               |    4 
 HDL_ON/UI/UI1-Login/LoginPage.cs                                               |    4 
 HDL_ON/UI/UI2/FuntionControlView/Acst/WaterHeaterJinmaoPage.cs                 |  612 +++++++++++++++++++++++++++---
 13 files changed, 1,003 insertions(+), 172 deletions(-)

diff --git a/HDL-ON_iOS/HDL-ON_iOS.csproj b/HDL-ON_iOS/HDL-ON_iOS.csproj
index 684300b..3d2acea 100644
--- a/HDL-ON_iOS/HDL-ON_iOS.csproj
+++ b/HDL-ON_iOS/HDL-ON_iOS.csproj
@@ -1839,6 +1839,9 @@
       <BundleResource Include="Resources\Phone\FunctionIcon\Acst\Inverter\SocialContributionInfoBg_Coal.png" />
       <BundleResource Include="Resources\Phone\FunctionIcon\Acst\Inverter\SocialContributionInfoIcon_Coal.png" />
       <BundleResource Include="Resources\Phone\FunctionIcon\Acst\Inverter\EnergyStorageStatusBg.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Acst\WaterHeater\Mode_Economic.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Acst\WaterHeater\Mode_QuickHeat_On.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Acst\WaterHeater\ModeFree_True.png" />
     </ItemGroup>
     <ItemGroup>
       <ITunesArtwork Include="iTunesArtwork" />
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/WaterHeater/ModeFree_True.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/WaterHeater/ModeFree_True.png
new file mode 100644
index 0000000..fe2947a
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/WaterHeater/ModeFree_True.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/WaterHeater/Mode_Economic.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/WaterHeater/Mode_Economic.png
new file mode 100644
index 0000000..f8aedd0
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/WaterHeater/Mode_Economic.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/WaterHeater/Mode_QuickHeat_On.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/WaterHeater/Mode_QuickHeat_On.png
new file mode 100644
index 0000000..a2f353d
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/WaterHeater/Mode_QuickHeat_On.png
Binary files differ
diff --git a/HDL_ON/Common/UserInfo.cs b/HDL_ON/Common/UserInfo.cs
index 1e53ae7..df2d66b 100644
--- a/HDL_ON/Common/UserInfo.cs
+++ b/HDL_ON/Common/UserInfo.cs
@@ -174,7 +174,7 @@
         {
             get
             {
-                return (DateTime.Now - LastTime).TotalDays < 7;
+                return (DateTime.Now - LastTime).TotalDays < 90;
             }
         }
 
diff --git a/HDL_ON/DAL/Server/HttpServerRequest.cs b/HDL_ON/DAL/Server/HttpServerRequest.cs
index c4aab5a..d818a1c 100644
--- a/HDL_ON/DAL/Server/HttpServerRequest.cs
+++ b/HDL_ON/DAL/Server/HttpServerRequest.cs
@@ -38,7 +38,7 @@
         /// <summary>
         /// 鑾峰彇浼犳劅鍣ㄥ巻鍙叉暟鎹�
         /// </summary>
-        /// <param name="qType">鏃堕棿鏌ヨ绫诲瀷锛歨our=杩�24灏忔椂銆亀eek=杩戜竴鍛ㄣ�乵onth = 杩戜竴鏈� </param>
+        /// <param name="qType">鏃堕棿鏌ヨ绫诲瀷锛歨our=杩�24灏忔椂銆乨ay_hour =鏌愭棩24灏忔椂銆亀eek=杩戜竴鍛ㄣ�乵onth = 杩戜竴鏈堛�乧ustom_month=鏌愬勾鏌愭湀 y/M銆乧ustom_year=鏌愬勾 y</param>
         /// <param name="deviceId">璁惧ID</param>
         /// <param name="deviceKey">鍔熻兘鏌ヨ绫诲瀷锛歱m25</param>
         /// <param name="time">鍏蜂綋鏌ヨ鐨勬棩鏈燂紝閲戣寕娓╂帶鍣ㄤ娇鐢�</param>
diff --git a/HDL_ON/UI/UI1-Login/LoginPage.cs b/HDL_ON/UI/UI1-Login/LoginPage.cs
index ed0ce44..06b11da 100644
--- a/HDL_ON/UI/UI1-Login/LoginPage.cs
+++ b/HDL_ON/UI/UI1-Login/LoginPage.cs
@@ -1218,11 +1218,11 @@
                         new FunctionAttributes(){ key = WaterHeaterJinmao_AttrEnum.flow.ToString(),curValue = "2",state = "2" },
                         new FunctionAttributes(){ key = WaterHeaterJinmao_AttrEnum.mode.ToString(),curValue = "economic",state = "economic" },
                         new FunctionAttributes(){ key = WaterHeaterJinmao_AttrEnum.mode_free.ToString(),curValue = "true",state = "true" },
-                        new FunctionAttributes(){ key = WaterHeaterJinmao_AttrEnum.recycl_volume.ToString(),curValue = "5",state = "5" },
+                        new FunctionAttributes(){ key = WaterHeaterJinmao_AttrEnum.recycl_volume.ToString(),curValue = "10",state = "10" },
                         new FunctionAttributes(){ key = WaterHeaterJinmao_AttrEnum.set_temp.ToString(),curValue = "25",state = "25" },
                         new FunctionAttributes(){ key = WaterHeaterJinmao_AttrEnum.temp.ToString(),curValue = "23",state = "23" },
                         new FunctionAttributes(){ key = WaterHeaterJinmao_AttrEnum.trees.ToString(),curValue = "8",state = "8" },
-                        new FunctionAttributes(){ key = WaterHeaterJinmao_AttrEnum.volume.ToString(),curValue = "88",state = "88" },
+                        new FunctionAttributes(){ key = WaterHeaterJinmao_AttrEnum.volume.ToString(),curValue = "100",state = "100" },
 
                     },
                 });
diff --git a/HDL_ON/UI/UI1-Login/LoginPageBLL.cs b/HDL_ON/UI/UI1-Login/LoginPageBLL.cs
index 90e8660..096ad5c 100644
--- a/HDL_ON/UI/UI1-Login/LoginPageBLL.cs
+++ b/HDL_ON/UI/UI1-Login/LoginPageBLL.cs
@@ -637,6 +637,7 @@
                             {
                                 //璺宠浆椤甸潰----
                                 MainPage.GoUserPage(true);
+                                this.RemoveFromParent();
                                 return;
                             }
                         });
@@ -671,6 +672,7 @@
                                 Common.ApiUtlis.Ins.DownloadDataComplete = false;
                                 //璺宠浆椤甸潰----
                                 MainPage.GoUserPage(true);
+                                this.RemoveFromParent();
                             });
                         }
                         else
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/AddRoom/AddRoomPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/AddRoom/AddRoomPage.cs
index 5e20a72..bb71db5 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/AddRoom/AddRoomPage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/AddRoom/AddRoomPage.cs
@@ -616,7 +616,7 @@
                 {
                     CropImageCallBack(imagePath);
 
-                }, imageName, 16, 9);
+                }, imageName, 16, 9,0);
 
                 baseView.RemoveFromParent();
             };
@@ -637,7 +637,7 @@
                 {
                     CropImageCallBack(imagePath);
 
-                }, imageName, 16, 9);
+                }, imageName, 16, 9,0);
 
                 baseView.RemoveFromParent();
 
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/RoomEditPageBLL.cs b/HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/RoomEditPageBLL.cs
index 6ac07bb..b939a61 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/RoomEditPageBLL.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/RoomEditPageBLL.cs
@@ -224,7 +224,7 @@
                 {
                     CropImageCallBack(imagePath);
 
-                }, imageName, 16, 9);
+                }, imageName, 16, 9,0);
 
                 baseView.RemoveFromParent();
             };
@@ -245,7 +245,7 @@
                 {
                     CropImageCallBack(imagePath);
 
-                }, imageName, 16, 9);
+                }, imageName, 16, 9,0);
 
                 baseView.RemoveFromParent();
 
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Acst/InverterJinmaoPage.cs b/HDL_ON/UI/UI2/FuntionControlView/Acst/InverterJinmaoPage.cs
index 5de0923..d0e3e9c 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Acst/InverterJinmaoPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Acst/InverterJinmaoPage.cs
@@ -9,6 +9,55 @@
     {
         FrameLayout bodyView;
         Function function;
+        /// <summary>
+        /// 浠婃棩鍙戠數閲忔暟鎹寜閽�
+        /// </summary>
+        Button pvGenerate_TodayValuesButton;
+        /// <summary>
+        /// 浠婃棩鍙戠數閲忓崟浣嶆寜閽�
+        /// </summary>
+        Button pvGenerate_todayUintButton;
+        /// <summary>
+        /// 绱鍙戠數閲忔暟鎹寜閽�
+        /// </summary>
+        Button pvGenerate_TotalValuesButton;
+        /// <summary>
+        /// 浠婃棩鐢ㄧ數閲忔暟鎹寜閽�
+        /// </summary>
+        Button pvLoad_TodayValuesButton;
+        /// <summary>
+        /// 绱鐢ㄧ數閲忔暟鎹寜閽�
+        /// </summary>
+        Button pvLoad_TotalValuesButton;
+        /// <summary>
+        /// 鍏変紡杩愯鐘舵�佷俊鎭尯鍩�
+        /// </summary>
+        FrameLayout pvRunStatusInfoView;
+        /// <summary>
+        /// 鍏変紡杩愯鐘舵�佸浘鏍囨寜閽�
+        /// </summary>
+        Button pvRunStatus_IconButtonp;
+        /// <summary>
+        /// 鍏変紡杩愯鐘舵�佹枃鏈寜閽�
+        /// </summary>
+        Button pvRunStatus_TextButton;
+        /// <summary>
+        /// 鍏変紡鍙戠數鍔熻兘鏁版嵁鎸夐挳
+        /// </summary>
+        Button pvPower_ValuesButton;
+        /// <summary>
+        /// 鍏変紡浠婃棩鍙戠數閲忔暟鎹寜閽�
+        /// </summary>
+        Button pvGeneration_TodayValuesButton;
+        /// <summary>
+        /// 鍏変紡鏈湀鍙戠數閲忔暟鎹寜閽�
+        /// </summary>
+        Button pvGeneration_MonthValuesButton;
+        /// <summary>
+        /// 鍏変紡鏈勾鍙戠數閲忔暟鎹寜閽�
+        /// </summary>
+        Button pvGeneration_YearValuesButton;
+
 
         public InverterJinmaoPage()
         {
@@ -59,7 +108,7 @@
             };
             electricityQuantityView.AddChidren(electricityGenerationView);
 
-            var electricityGeneration_IconButton = new Button()
+            var pv_IconButton = new Button()
             {
                 X = Application.GetRealWidth(14),
                 Y = Application.GetRealWidth(16),
@@ -67,9 +116,9 @@
                 Height = Application.GetRealWidth(12),
                 UnSelectedImagePath = "FunctionIcon/Acst/Inverter/ElectricityGenerationIcon.png"
             };
-            electricityQuantityView.AddChidren(electricityGeneration_IconButton);
+            electricityQuantityView.AddChidren(pv_IconButton);
 
-            var electricityGeneration_TextButton = new Button()
+            var pv_TextButton = new Button()
             {
                 X = Application.GetRealWidth(32),
                 Y = Application.GetRealWidth(12),
@@ -80,9 +129,9 @@
                 TextAlignment = TextAlignment.CenterLeft,
                 TextColor = CSS_Color.MainBackgroundColor,
             };
-            electricityGenerationView.AddChidren(electricityGeneration_TextButton);
+            electricityGenerationView.AddChidren(pv_TextButton);
 
-            var electricityGeneration_ValuesButton = new Button()
+            pvGenerate_TodayValuesButton = new Button()
             {
                 X = Application.GetRealWidth(12),
                 Y = Application.GetRealWidth(34),
@@ -92,16 +141,16 @@
                 TextSize = 18,
                 IsBold = true,
             };
-            electricityGenerationView.AddChidren(electricityGeneration_ValuesButton);
+            electricityGenerationView.AddChidren(pvGenerate_TodayValuesButton);
 
 #if __IOS__
-            electricityGeneration_ValuesButton.TextAlignment = TextAlignment.TopLeft;
-            electricityGeneration_ValuesButton.Width = electricityGeneration_ValuesButton.GetTextWidth() + Application.GetRealWidth(8);
+            pvGenerate_TodayValuesButton.TextAlignment = TextAlignment.TopLeft;
+            pvGenerate_TodayValuesButton.Width = pvGenerate_TodayValuesButton.GetTextWidth() + Application.GetRealWidth(8);
 #else
-            electricityGeneration_ValuesButton.TextAlignment = TextAlignment.BottomLeft;
-            electricityGeneration_ValuesButton.Width = electricityGeneration_ValuesButton.GetTextWidth();
+            pvGenerate_TodayValuesButton.TextAlignment = TextAlignment.BottomLeft;
+            pvGenerate_TodayValuesButton.Width = pvGenerate_TodayValuesButton.GetTextWidth();
 #endif
-            var electricityGeneration_UintButton = new Button()
+            pvGenerate_todayUintButton = new Button()
             {
                 Y = Application.GetRealWidth(41),
                 Height = Application.GetRealWidth(17),
@@ -110,10 +159,10 @@
                 TextSize = 12,
                 TextAlignment = TextAlignment.CenterLeft,
             };
-            electricityGeneration_UintButton.X = electricityGeneration_ValuesButton.Right;
-            electricityGenerationView.AddChidren(electricityGeneration_UintButton);
+            pvGenerate_todayUintButton.X = pvGenerate_TodayValuesButton.Right;
+            electricityGenerationView.AddChidren(pvGenerate_todayUintButton);
 
-            var electricityGeneration_TotalValuesButton = new Button()
+            pvGenerate_TotalValuesButton = new Button()
             {
                 X = Application.GetRealWidth(12),
                 Y = Application.GetRealWidth(69),
@@ -124,24 +173,23 @@
                 TextAlignment = TextAlignment.CenterLeft,
                 //IsBold = true,
             };
-            electricityGenerationView.AddChidren(electricityGeneration_TotalValuesButton);
+            electricityGenerationView.AddChidren(pvGenerate_TotalValuesButton);
 
 
 
             #endregion
 
-
             #region 鐢ㄧ數閲� Electricity consumption
-            var electricityConsumptionView = new FrameLayout()
+            var loadEleView = new FrameLayout()
             {
-                X = Application.GetRealWidth(178-16),
+                X = Application.GetRealWidth(178 - 16),
                 Width = Application.GetRealWidth(181),
                 Height = Application.GetRealWidth(99),
                 BackgroundImagePath = "FunctionIcon/Acst/Inverter/ElectricityConsumptionBg.png"
             };
-            electricityQuantityView.AddChidren(electricityConsumptionView);
+            electricityQuantityView.AddChidren(loadEleView);
 
-            var electricityConsumption_IconButton = new Button()
+            var loadEle_IconButton = new Button()
             {
                 X = Application.GetRealWidth(155),
                 Y = Application.GetRealWidth(16),
@@ -149,9 +197,9 @@
                 Height = Application.GetRealWidth(12),
                 UnSelectedImagePath = "FunctionIcon/Acst/Inverter/ElectricityConsumptionIcon.png"
             };
-            electricityConsumptionView.AddChidren(electricityConsumption_IconButton);
+            loadEleView.AddChidren(loadEle_IconButton);
 
-            var electricityConsumption_TextButton = new Button()
+            var loadEle_TodayTextButton = new Button()
             {
                 //X = Application.GetRealWidth(181 - 32),
                 Y = Application.GetRealWidth(12),
@@ -162,10 +210,10 @@
                 TextAlignment = TextAlignment.CenterRight,
                 TextColor = CSS_Color.MainBackgroundColor,
             };
-            electricityConsumptionView.AddChidren(electricityConsumption_TextButton);
+            loadEleView.AddChidren(loadEle_TodayTextButton);
 
 
-            var electricityConsumption_UintButton = new Button()
+            var loadEle_TodayUintButton = new Button()
             {
                 Y = Application.GetRealWidth(41),
                 Height = Application.GetRealWidth(17),
@@ -174,17 +222,17 @@
                 TextSize = 12,
                 TextAlignment = TextAlignment.CenterRight,
             };
-            electricityConsumptionView.AddChidren(electricityConsumption_UintButton);
+            loadEleView.AddChidren(loadEle_TodayUintButton);
 #if __IOS__
-            electricityConsumption_UintButton.Width = electricityConsumption_UintButton.GetTextWidth() + Application.GetRealWidth(8);
+            loadEle_TodayUintButton.Width = loadEle_TodayUintButton.GetTextWidth() + Application.GetRealWidth(8);
 #else
-            electricityConsumption_UintButton.Width = electricityConsumption_UintButton.GetTextWidth();
+            loadEle_TodayUintButton.Width = loadEle_TodayUintButton.GetTextWidth();
 #endif
-            electricityConsumption_UintButton.X = Application.GetRealWidth(181 - 12) - electricityConsumption_UintButton.Width;
+            loadEle_TodayUintButton.X = Application.GetRealWidth(181 - 12) - loadEle_TodayUintButton.Width;
 
-            var electricityConsumption_ValuesButton = new Button()
+            pvLoad_TodayValuesButton = new Button()
             {
-                X = Application.GetRealWidth(81 - 12) - electricityConsumption_UintButton.Width,
+                X = Application.GetRealWidth(81 - 12) - loadEle_TodayUintButton.Width,
                 Y = Application.GetRealWidth(34),
                 Height = Application.GetRealWidth(53),
                 Width = Application.GetRealWidth(100),
@@ -194,27 +242,27 @@
                 TextAlignment = TextAlignment.TopRight,
                 IsBold = true,
             };
-            electricityConsumptionView.AddChidren(electricityConsumption_ValuesButton);
+            loadEleView.AddChidren(pvLoad_TodayValuesButton);
 
-
-            var electricityConsumption_TotalValuesButton = new Button()
+            pvLoad_TotalValuesButton = new Button()
             {
                 Y = Application.GetRealWidth(69),
                 Height = Application.GetRealWidth(18),
-                Width = Application.GetRealWidth(181-12),
+                Width = Application.GetRealWidth(181 - 12),
                 Text = "绱鐢ㄧ數閲忥細" + function.GetAttrState(InverterJinmao_AttrEnum.load_electricity.ToString()),
                 TextColor = CSS_Color.MainBackgroundColor,
                 TextSize = 12,
                 TextAlignment = TextAlignment.CenterRight,
                 //IsBold = true,
             };
-            electricityConsumptionView.AddChidren(electricityConsumption_TotalValuesButton);
+            loadEleView.AddChidren(pvLoad_TotalValuesButton);
 
             #endregion
 
             var goHistroyButton = new Button();
             electricityQuantityView.AddChidren(goHistroyButton);
-            goHistroyButton.MouseUpEventHandler = (sender, e) => {
+            goHistroyButton.MouseUpEventHandler = (sender, e) =>
+            {
                 var page = new InverterJinmaoHistroyPage(function);
                 MainPage.BasePageView.AddChidren(page);
                 page.LoadPage();
@@ -227,7 +275,7 @@
                 Height = Application.GetRealWidth(8),
             });
             #region 鍏変紡杩愯鐘舵��
-            var runStatus_TitleButton = new Button()
+            var pvRunStatus_TitleButton = new Button()
             {
                 X = Application.GetRealWidth(16),
                 Height = Application.GetRealWidth(47),
@@ -237,10 +285,9 @@
                 TextSize = 16,
                 IsBold = true,
             };
-            contentView.AddChidren(runStatus_TitleButton);
+            contentView.AddChidren(pvRunStatus_TitleButton);
 
-            #region 鍙戠數閲� electricity generation
-            var electricityGenerationStatusView = new FrameLayout()
+            var pvEleGenerationInfoView = new FrameLayout()
             {
                 Gravity = Gravity.CenterHorizontal,
                 Width = Application.GetRealWidth(343),
@@ -250,9 +297,10 @@
                 BorderColor = 0x00FFFFFF,
                 BorderWidth = 0,
             };
-            contentView.AddChidren(electricityGenerationStatusView);
+            contentView.AddChidren(pvEleGenerationInfoView);
 
-            var electricityGenerationStatus_InfoView = new FrameLayout()
+            #region 鍏変紡杩愯鐘舵��
+            pvRunStatusInfoView = new FrameLayout()
             {
                 X = 0 - Application.GetRealWidth(14),
                 Y = Application.GetRealWidth(12),
@@ -263,9 +311,9 @@
                 BorderColor = 0x00FFFFFF,
                 BorderWidth = 0,
             };
-            electricityGenerationStatusView.AddChidren(electricityGenerationStatus_InfoView);
+            pvEleGenerationInfoView.AddChidren(pvRunStatusInfoView);
 
-            var runStatus_Info_IconButton = new Button()
+            pvRunStatus_IconButtonp = new Button()
             {
                 X = Application.GetRealWidth(8 + 14),
                 Gravity = Gravity.CenterVertical,
@@ -273,9 +321,9 @@
                 Height = Application.GetRealWidth(12),
                 UnSelectedImagePath = "FunctionIcon/Acst/Inverter/PvIconRun.png",
             };
-            electricityGenerationStatus_InfoView.AddChidren(runStatus_Info_IconButton);
+            pvRunStatusInfoView.AddChidren(pvRunStatus_IconButtonp);
 
-            var runStatus_Info_TextButton = new Button()
+            pvRunStatus_TextButton = new Button()
             {
                 X = Application.GetRealWidth(8 + 14 + 4 + 12),
                 TextAlignment = TextAlignment.CenterLeft,
@@ -283,7 +331,7 @@
                 TextColor = 0xFF4484F4,
                 Text = "杩愯",
             };
-            electricityGenerationStatus_InfoView.AddChidren(runStatus_Info_TextButton);
+            pvRunStatusInfoView.AddChidren(pvRunStatus_TextButton);
 
             var powerGenerationView = new FrameLayout()
             {
@@ -293,9 +341,12 @@
                 Height = Application.GetRealWidth(151),
                 BackgroundImagePath = "FunctionIcon/Acst/Inverter/PvBgRun.png"
             };
-            electricityGenerationStatusView.AddChidren(powerGenerationView);
+            pvEleGenerationInfoView.AddChidren(powerGenerationView);
+            #endregion
 
-            var powerGeneration_ValuesButton = new Button()
+            #region 鍏変紡鍙戠數閲�
+            #region 鍏変紡鍙戠數鍔熺巼
+            pvPower_ValuesButton = new Button()
             {
                 Gravity = Gravity.CenterHorizontal,
                 Y = Application.GetRealWidth(46),
@@ -307,7 +358,7 @@
                 TextSize = 24,
                 IsBold = true,
             };
-            powerGenerationView.AddChidren(powerGeneration_ValuesButton);
+            powerGenerationView.AddChidren(pvPower_ValuesButton);
 
             var powerGeneration_TextButton = new Button()
             {
@@ -321,9 +372,10 @@
                 TextSize = 12,
             };
             powerGenerationView.AddChidren(powerGeneration_TextButton);
+            #endregion
 
-
-            var powerGeneration_TodayValuesButton = new Button()
+            #region 鍏変紡浠婃棩鍙戠數閲�
+            pvGeneration_TodayValuesButton = new Button()
             {
                 X = Application.GetRealWidth(16),
                 Y = Application.GetRealWidth(191),
@@ -335,7 +387,7 @@
                 TextSize = 18,
                 IsBold = true,
             };
-            electricityGenerationStatusView.AddChidren(powerGeneration_TodayValuesButton);
+            pvEleGenerationInfoView.AddChidren(pvGeneration_TodayValuesButton);
 
             var powerGeneration_TodayTextButton = new Button()
             {
@@ -348,10 +400,11 @@
                 TextColor = CSS_Color.TextualColor,
                 TextSize = 12,
             };
-            electricityGenerationStatusView.AddChidren(powerGeneration_TodayTextButton);
+            pvEleGenerationInfoView.AddChidren(powerGeneration_TodayTextButton);
+            #endregion
 
-
-            var powerGeneration_MonthValuesButton = new Button()
+            #region 鍏変紡鏈湀鍙戠數閲�
+            pvGeneration_MonthValuesButton = new Button()
             {
                 X = Application.GetRealWidth(16 + 105),
                 Y = Application.GetRealWidth(191),
@@ -363,7 +416,7 @@
                 TextSize = 18,
                 IsBold = true,
             };
-            electricityGenerationStatusView.AddChidren(powerGeneration_MonthValuesButton);
+            pvEleGenerationInfoView.AddChidren(pvGeneration_MonthValuesButton);
 
             var powerGeneration_MonthTextButton = new Button()
             {
@@ -376,10 +429,11 @@
                 TextColor = CSS_Color.TextualColor,
                 TextSize = 12,
             };
-            electricityGenerationStatusView.AddChidren(powerGeneration_MonthTextButton);
+            pvEleGenerationInfoView.AddChidren(powerGeneration_MonthTextButton);
+            #endregion
 
-
-            var powerGeneration_YearValuesButton = new Button()
+            #region 鍏変紡鏈勾鍙戠數閲�
+            pvGeneration_YearValuesButton = new Button()
             {
                 X = Application.GetRealWidth(16 + 212),
                 Y = Application.GetRealWidth(191),
@@ -391,7 +445,7 @@
                 TextSize = 18,
                 IsBold = true,
             };
-            electricityGenerationStatusView.AddChidren(powerGeneration_YearValuesButton);
+            pvEleGenerationInfoView.AddChidren(pvGeneration_YearValuesButton);
 
             var powerGeneration_YearTextButton = new Button()
             {
@@ -399,12 +453,13 @@
                 Y = Application.GetRealWidth(220),
                 Width = Application.GetRealWidth(100),
                 Height = Application.GetRealWidth(17),
-                Text = "鎬诲彂鐢甸噺 (kwh)",
+                Text = "绱鍙戠數閲� (kwh)",
                 TextAlignment = TextAlignment.Center,
                 TextColor = CSS_Color.TextualColor,
                 TextSize = 12,
             };
-            electricityGenerationStatusView.AddChidren(powerGeneration_YearTextButton);
+            pvEleGenerationInfoView.AddChidren(powerGeneration_YearTextButton);
+            #endregion
             #endregion
 
             contentView.AddChidren(new Button()
@@ -539,15 +594,13 @@
                 Y = Application.GetRealWidth(220),
                 Width = Application.GetRealWidth(100),
                 Height = Application.GetRealWidth(17),
-                Text = "鎬荤敤鐢甸噺 (kwh)",
+                Text = "绱鐢ㄧ數閲� (kwh)",
                 TextAlignment = TextAlignment.Center,
                 TextColor = CSS_Color.TextualColor,
                 TextSize = 12,
             };
             electricityUsageStatusView.AddChidren(powerUsage_YearTextButton);
             #endregion
-
-
 
 
             #endregion
@@ -635,7 +688,7 @@
 
             var esRunStatus_BatteryIconButton = new Button()
             {
-                X = Application.GetRealWidth(343 - 12 -20) - esRunStatus_BatteryValuesButton.Width,
+                X = Application.GetRealWidth(343 - 12 - 20) - esRunStatus_BatteryValuesButton.Width,
                 Y = Application.GetRealWidth(16),
                 Width = Application.GetRealWidth(20),
                 Height = Application.GetRealWidth(20),
@@ -726,7 +779,6 @@
             #endregion
 
             #endregion
-
 
             contentView.AddChidren(new Button()
             {
@@ -966,6 +1018,141 @@
 
 
         }
+        /// <summary>
+        /// 鏇存柊鐣岄潰鏁版嵁
+        /// </summary>
+        /// <param name="temp"></param>
+        public void UpdateStatus(Function temp)
+        {
+            if (bodyView == null)
+            {
+                return;
+            }
+            Application.RunOnMainThread(() =>
+            {
+                /// 鏇存柊浠婃棩鍙戠數閲�
+                if (function.GetAttrState(InverterJinmao_AttrEnum.pv_electricity_today.ToString()) != temp.GetAttrState(InverterJinmao_AttrEnum.pv_electricity_today.ToString()))
+                {
+                    upatePvGenerateTodayValues();
+                }
+                /// 鏇存柊绱鍙戠數閲�
+                if (function.GetAttrState(InverterJinmao_AttrEnum.pv_electricity.ToString()) != temp.GetAttrState(InverterJinmao_AttrEnum.pv_electricity.ToString()))
+                {
+                    upatePvGenerateTotalValues();
+                }
+                /// 鏇存柊浠婃棩鐢ㄧ數閲�
+                if (function.GetAttrState(InverterJinmao_AttrEnum.load_electricity_today.ToString()) != temp.GetAttrState(InverterJinmao_AttrEnum.load_electricity_today.ToString()))
+                {
+                    upatePvLoadTodayValues();
+                }
+                /// 鏇存柊绱鐢ㄧ數閲�
+                if (function.GetAttrState(InverterJinmao_AttrEnum.load_electricity.ToString()) != temp.GetAttrState(InverterJinmao_AttrEnum.load_electricity.ToString()))
+                {
+                    upatePvLoadTotalValues();
+                }
+                /// 鏇存柊鍏変紡杩愯鐘舵��
+                if (function.GetAttrState(InverterJinmao_AttrEnum.system_status.ToString()) != temp.GetAttrState(InverterJinmao_AttrEnum.system_status.ToString()))
+                {
+                    upatePvRunStatus();
+                }
+                /// 鏇存柊鍏変紡鍙戠數鍔熻兘
+                if (function.GetAttrState(InverterJinmao_AttrEnum.pv_power.ToString()) != temp.GetAttrState(InverterJinmao_AttrEnum.pv_power.ToString()))
+                {
+                    upatePvPower();
+                }
+                /// 鏇存柊鍏変紡鏈湀鍙戠數閲�
+                if (function.GetAttrState(InverterJinmao_AttrEnum.pv_electricity_month.ToString()) != temp.GetAttrState(InverterJinmao_AttrEnum.pv_electricity_month.ToString()))
+                {
+                    upatePvGenerateMonthValues();
+                }
+                /// 鏇存柊鍏変紡鏈勾鍙戠數閲�
+                if (function.GetAttrState(InverterJinmao_AttrEnum.pv_electricity.ToString()) != temp.GetAttrState(InverterJinmao_AttrEnum.pv_electricity.ToString()))
+                {
+                    upatePvGenerateYearValues();
+                }
+            });
+        }
+
+        /// <summary>
+        /// 鏇存柊浠婃棩鍙戠數閲�
+        /// </summary>
+        private void upatePvGenerateTodayValues()
+        {
+            pvGenerate_TodayValuesButton.Text = pvGeneration_TodayValuesButton.Text = function.GetAttrState(InverterJinmao_AttrEnum.pv_electricity_today.ToString());
+            pvGenerate_todayUintButton.X = pvGenerate_TodayValuesButton.Right;
+        }
+        /// <summary>
+        /// 鏇存柊鍏変紡鏈湀鍙戠數閲�
+        /// </summary>
+        private void upatePvGenerateMonthValues()
+        {
+            pvGeneration_MonthValuesButton.Text = function.GetAttrState(InverterJinmao_AttrEnum.pv_electricity_month.ToString());
+        }
+        /// <summary>
+        /// 鏇存柊鍏変紡鏈勾鍙戠數閲�
+        /// </summary>
+        private void upatePvGenerateYearValues()
+        {
+            pvGeneration_YearValuesButton.Text = function.GetAttrState(InverterJinmao_AttrEnum.pv_electricity.ToString());
+        }
+        /// <summary>
+        /// 鏇存柊绱鍙戠數閲�
+        /// </summary>
+        private void upatePvGenerateTotalValues()
+        {
+            pvGenerate_TodayValuesButton.Text = "绱鍙戠數閲忥細" + function.GetAttrState(InverterJinmao_AttrEnum.pv_electricity.ToString());
+        }
+        /// <summary>
+        /// 鏇存柊浠婃棩鐢ㄧ數閲�
+        /// </summary>
+        private void upatePvLoadTodayValues()
+        {
+            pvLoad_TodayValuesButton.Text = function.GetAttrState(InverterJinmao_AttrEnum.load_electricity_today.ToString());
+        }
+        /// <summary>
+        /// 鏇存柊绱鐢ㄧ數閲�
+        /// </summary>
+        private void upatePvLoadTotalValues()
+        {
+            pvLoad_TotalValuesButton.Text = "绱鐢ㄧ數閲忥細" + function.GetAttrState(InverterJinmao_AttrEnum.load_electricity.ToString());
+
+        }
+        /// <summary>
+        /// 鏇存柊鍏変紡杩愯鐘舵��
+        /// </summary>
+        private void upatePvRunStatus()
+        {
+            switch (function.GetAttrState(InverterJinmao_AttrEnum.system_status.ToString()))
+            {
+                case "run":
+                    pvRunStatusInfoView.BackgroundColor = 0x154484F4;
+                    pvRunStatus_IconButtonp.UnSelectedImagePath = "FunctionIcon/Acst/Inverter/PvIconRun.png";
+                    pvRunStatus_TextButton.Text = "杩愯";
+                    pvRunStatus_TextButton.TextColor = 0xFF4484F4;
+                    break;
+                case "fault":
+                    pvRunStatusInfoView.BackgroundColor = 0x15FF4747;
+                    pvRunStatus_IconButtonp.UnSelectedImagePath = "FunctionIcon/Acst/Inverter/PvIconFault.png";
+                    pvRunStatus_TextButton.Text = "鏁呴殰";
+                    pvRunStatus_TextButton.TextColor = 0xFFFF4747;
+                    break;
+                case "standby":
+                    pvRunStatusInfoView.BackgroundColor = 0x15798394;
+                    pvRunStatus_IconButtonp.UnSelectedImagePath = "FunctionIcon/Acst/Inverter/PvIconStandby.png";
+                    pvRunStatus_TextButton.Text = "寰呮満";
+                    pvRunStatus_TextButton.TextColor = 0xFF798394;
+                    break;
+            }
+
+        }
+        /// <summary>
+        /// 鏇存柊鍏変紡鍙戠數鍔熺巼
+        /// </summary>
+        private void upatePvPower()
+        {
+            pvPower_ValuesButton.Text = function.GetAttrState(InverterJinmao_AttrEnum.pv_power.ToString());
+        }
+
     }
 }
 
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Acst/WaterHeaterJinmaoPage.cs b/HDL_ON/UI/UI2/FuntionControlView/Acst/WaterHeaterJinmaoPage.cs
index 26256e4..ae12336 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Acst/WaterHeaterJinmaoPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Acst/WaterHeaterJinmaoPage.cs
@@ -1,5 +1,6 @@
 锘縰sing System;
 using System.Collections.Generic;
+using com.hdl.on;
 using HDL_ON.DriverLayer;
 using HDL_ON.Entity;
 using HDL_ON.UI.CSS;
@@ -14,10 +15,142 @@
         FrameLayout bottomView;
         Function function;
 
+
+        /// <summary>
+        /// 鐑按妯″紡鐘舵�佸尯鍩�
+        /// </summary>
+        FrameLayout modeFreeView;
+        /// <summary>
+        /// 鐑按妯″紡鐘舵�佸浘鏍�
+        /// </summary>
+        Button modeFree_IconButton;
+        /// <summary>
+        /// 鐑按妯″紡鐘舵�佹枃鏈�
+        /// </summary>
+        Button modeFree_TextButton;
+        /// <summary>
+        /// 鐑按娓╁害鍊�
+        /// </summary>
+        Button btnTempValues;
+        /// <summary>
+        /// 鐑按娓╁害鍗曚綅
+        /// </summary>
+        Button btnTempValuesUint;
+        /// <summary>
+        /// 鑺傝兘妯″紡鎺у埗鎸夐挳
+        /// </summary>
+        Button btnControlModeEconomic;
+        /// <summary>
+        /// 鑺傝兘妯″紡鎺у埗鍖哄煙
+        /// </summary>
+        FrameLayout mode_EconomicView;
+        /// <summary>
+        /// 鑺傝兘妯″紡鍥炬爣鎸夐挳
+        /// </summary>
+        Button mode_Economic_IconButton;
+        /// <summary>
+        /// 鑺傝兘妯″紡鏂囨湰鎸夐挳
+        /// </summary>
+        Button mode_Economic_TextButton;
+        /// <summary>
+        /// 閫熺儹妯″紡鎺у埗鎸夐挳
+        /// </summary>
+        Button btnControlModeQuickHeat;
+        /// <summary>
+        /// 閫熺儹妯″紡鎺у埗鍖哄煙
+        /// </summary>
+        FrameLayout mode_QuickHeatView;
+        /// <summary>
+        /// 閫熺儹妯″紡鍥炬爣鎸夐挳
+        /// </summary>
+        Button mode_QuickHeat_IconButton;
+        /// <summary>
+        /// 閫熺儹妯″紡鏂囨湰鎸夐挳
+        /// </summary>
+        Button mode_QuickHeat_TextButton;
+        /// <summary>
+        /// 璁剧疆娓╁害鏂囨湰鎸夐挳
+        /// </summary>
+        Button setTemp_ValuesButton;
+        /// <summary>
+        /// 璁剧疆娓╁害鍗曚綅鎸夐挳
+        /// </summary>
+        Button setTemp_UintButton;
+        /// <summary>
+        /// 璁剧疆娓╁害鎺у埗鎺т欢
+        /// </summary>
+        DiyImageSeekBar setTemp_Bar;
+        /// <summary>
+        /// 鐑按娴侀噺鏁版嵁鎸夐挳
+        /// </summary>
+        Button flow_ValuesButton;
+        /// <summary>
+        /// 鐑按鎬绘祦閲忔暟鎹寜閽�
+        /// </summary>
+        Button flow_VolumeButton;
+        /// <summary>
+        /// 鐑按娴侀噺姣旀帶浠�
+        /// </summary>
+        DiyImageSeekBar flow_ValuesBar;
+        /// <summary>
+        /// 鐑洖鏀剁櫨鍒嗘瘮鏁版嵁鎸夐挳
+        /// </summary>
+        Button flow_HeatRecoveryProgressButton;
+        /// <summary>
+        /// 鐑洖鏀舵暟鎹寜閽�
+        /// </summary>
+        Button flow_HeatRecoverytValuesButton;
+        /// <summary>
+        /// 鐢电洿椹辩櫨鍒嗘瘮鏁版嵁鎸夐挳
+        /// </summary>
+        Button flow_ElectricDriveProgressButton;
+        /// <summary>
+        /// 鐢电洿椹辨暟鎹寜閽�
+        /// </summary>
+        Button flow_ElectricDriveValuesButton;
+        string volumeString = string.Empty;
+        string recyclVolumeString = string.Empty;
+        double volume = 0;
+        double recyclVolume = 0;
+        int recyclVolumePercent = 0;
+
+        /// <summary>
+        /// 鐑洖鏀惰妭鐢甸噺鏁版嵁鎸夐挳
+        /// </summary>
+        Button socialContribution_Info1_ValuesButton;
+        /// <summary>
+        /// 鐑洖鏀惰妭鐢甸噺鍗曚綅鎸夐挳
+        /// </summary>
+        Button socialContribution_Info1_UintButton;
+        /// <summary>
+        /// CO2鍑忔帓閲忔暟鎹寜閽�
+        /// </summary>
+        Button socialContribution_Info2_ValuesButton;
+        /// <summary>
+        /// CO2鍑忔帓閲忓崟浣嶆寜閽�
+        /// </summary>
+        Button socialContribution_Info2_UintButton;
+        /// <summary>
+        /// 绛夋晥妞嶆爲閲忔暟鎹寜閽�
+        /// </summary>
+        Button socialContribution_Info3_UintButton;
+        /// <summary>
+        /// 绛夋晥妞嶆爲閲忓崟浣嶆寜閽�
+        /// </summary>
+        Button socialContribution_Info3_ValuesButton;
+        /// <summary>
+        /// 寮�鍏虫寜閽�
+        /// </summary>
+        Button btnPowerControl;
+
+
+
+
         public WaterHeaterJinmaoPage(Function deviceFunction)
         {
             bodyView = this;
             function = deviceFunction;
+            this.BackgroundColor = CSS_Color.BackgroundColor;
         }
 
         public void LoadPage(Action action)
@@ -25,7 +158,6 @@
 
             var topView = new TopViewDiv(bodyView, function.name);
             topView.LoadTopView_FunctionTop(function, action);
-
 
             contentView = new VerticalScrolViewLayout()
             {
@@ -47,6 +179,7 @@
 
             initContentView();
             initBottomView();
+            initControlEvent();
             Control.Ins.SendReadCommand(function);
         }
         /// <summary>
@@ -69,20 +202,20 @@
             };
             contentView.AddChidren(infoView);
 
-            var infoView_ModeFreeView = new FrameLayout()
+            modeFreeView = new FrameLayout()
             {
                 X = 0 - Application.GetRealWidth(14),
                 Y = Application.GetRealWidth(12),
                 Width = Application.GetRealWidth(68 + 14),
                 Height = Application.GetRealWidth(28),
                 BackgroundColor = 0x15FC9C04,
-                Radius = (uint)Application.GetRealHeight(14),
+                Radius = (uint)Application.GetRealWidth(14),
                 BorderColor = 0x00FFFFFF,
                 BorderWidth = 0,
             };
-            infoView.AddChidren(infoView_ModeFreeView);
+            infoView.AddChidren(modeFreeView);
 
-            var infoView_ModeFree_IconButton = new Button()
+            modeFree_IconButton = new Button()
             {
                 X = Application.GetRealWidth(8 + 14),
                 Gravity = Gravity.CenterVertical,
@@ -90,17 +223,17 @@
                 Height = Application.GetRealWidth(12),
                 UnSelectedImagePath = "FunctionIcon/Acst/WaterHeater/ModeFree_False.png",
             };
-            infoView_ModeFreeView.AddChidren(infoView_ModeFree_IconButton);
+            modeFreeView.AddChidren(modeFree_IconButton);
 
-            var infoView_ModeFree_TextButton = new Button()
+            modeFree_TextButton = new Button()
             {
-                X = Application.GetRealWidth(8 + 14 + 8 + 12),
+                X = Application.GetRealWidth(8 + 14 + 4 + 12),
                 TextAlignment = TextAlignment.CenterLeft,
                 TextSize = 14,
                 TextColor = 0xFFFC9C04,
                 Text = "鐢ㄧ數",
             };
-            infoView_ModeFreeView.AddChidren(infoView_ModeFree_TextButton);
+            modeFreeView.AddChidren(modeFree_TextButton);
 
             var infoView_Temp_View = new FrameLayout()
             {
@@ -111,7 +244,7 @@
             };
             infoView.AddChidren(infoView_Temp_View);
 
-            var btnTempValues = new Button()
+            btnTempValues = new Button()
             {
                 Y = Application.GetRealWidth(34),
                 Gravity = Gravity.CenterVertical,
@@ -129,7 +262,8 @@
 #endif
             btnTempValues.Gravity = Gravity.CenterHorizontal;
             infoView_Temp_View.AddChidren(btnTempValues);
-            var btnTempValuesUint = new Button()
+
+            btnTempValuesUint = new Button()
             {
                 X = btnTempValues.Right - Application.GetRealWidth(4),
                 Y = Application.GetRealWidth(40),
@@ -178,8 +312,8 @@
             {
                 Width = Application.GetRealWidth(16),
             });
-
-            var mode_EconomicView = new FrameLayout()
+            //鑺傝兘
+            mode_EconomicView = new FrameLayout()
             {
                 Width = Application.GetRealWidth(165),
                 Height = Application.GetRealWidth(52),
@@ -191,7 +325,7 @@
             };
             modeView.AddChidren(mode_EconomicView);
 
-            var mode_Economic_IconButton = new Button()
+            mode_Economic_IconButton = new Button()
             {
                 Width = Application.GetRealWidth(20),
                 Height = Application.GetRealWidth(20),
@@ -201,7 +335,7 @@
             };
             mode_EconomicView.AddChidren(mode_Economic_IconButton);
 
-            var mode_Economic_TextButton = new Button()
+            mode_Economic_TextButton = new Button()
             {
                 Width = Application.GetRealWidth(80),
                 X = Application.GetRealWidth(73 + 8),
@@ -217,8 +351,12 @@
                 Width = Application.GetRealWidth(13),
             });
 
+            btnControlModeEconomic = new Button();
+            mode_EconomicView.AddChidren(btnControlModeEconomic);
+
+
             //閫熺儹
-            var mode_QuickHeatView = new FrameLayout()
+            mode_QuickHeatView = new FrameLayout()
             {
                 Width = Application.GetRealWidth(165),
                 Height = Application.GetRealWidth(52),
@@ -230,7 +368,7 @@
             };
             modeView.AddChidren(mode_QuickHeatView);
 
-            var mode_QuickHeat_IconButton = new Button()
+            mode_QuickHeat_IconButton = new Button()
             {
                 Width = Application.GetRealWidth(20),
                 Height = Application.GetRealWidth(20),
@@ -240,7 +378,8 @@
             };
             mode_QuickHeatView.AddChidren(mode_QuickHeat_IconButton);
 
-            var mode_QuickHeat_TextButton = new Button()
+
+            mode_QuickHeat_TextButton = new Button()
             {
                 Width = Application.GetRealWidth(80),
                 X = Application.GetRealWidth(81),
@@ -250,6 +389,10 @@
                 Text = "閫熺儹"
             };
             mode_QuickHeatView.AddChidren(mode_QuickHeat_TextButton);
+
+            btnControlModeQuickHeat = new Button();
+            mode_QuickHeatView.AddChidren(btnControlModeQuickHeat);
+
             #endregion
 
             #region 璁剧疆娓╁害
@@ -279,7 +422,7 @@
             };
             setTempView.AddChidren(setTemp_TextButtont);
 
-            var setTemp_Temp_ValuesTextButton = new Button()
+            setTemp_ValuesButton = new Button()
             {
                 Y = Application.GetRealWidth(34),
                 Gravity = Gravity.CenterVertical,
@@ -291,15 +434,16 @@
                 Text = function.GetAttrState(WaterHeaterJinmao_AttrEnum.set_temp.ToString(), "---"),
             };
 #if __IOS__
-            setTemp_Temp_ValuesTextButton.Width = setTemp_Temp_ValuesTextButton.GetTextWidth() + Application.GetRealWidth(8);
+            setTemp_ValuesButton.Width = setTemp_ValuesButton.GetTextWidth() + Application.GetRealWidth(8);
 #else
-            setTemp_Temp_ValuesTextButton.Width = setTemp_Temp_ValuesTextButton.GetTextWidth();
+            setTemp_ValuesButton.Width = setTemp_ValuesButton.GetTextWidth();
 #endif
-            setTemp_Temp_ValuesTextButton.Gravity = Gravity.CenterHorizontal;
-            setTempView.AddChidren(setTemp_Temp_ValuesTextButton);
-            var setTemp_Temp_ValuesUintButton = new Button()
+            setTemp_ValuesButton.Gravity = Gravity.CenterHorizontal;
+            setTempView.AddChidren(setTemp_ValuesButton);
+
+            setTemp_UintButton = new Button()
             {
-                X = setTemp_Temp_ValuesTextButton.Right - Application.GetRealWidth(4),
+                X = setTemp_ValuesButton.Right - Application.GetRealWidth(4),
                 Y = Application.GetRealWidth(40),
                 Height = Application.GetRealWidth(66),
                 TextAlignment = TextAlignment.TopLeft,
@@ -308,7 +452,7 @@
                 TextColor = CSS_Color.FirstLevelTitleColor,
                 Text = "掳C"
             };
-            setTempView.AddChidren(setTemp_Temp_ValuesUintButton);
+            setTempView.AddChidren(setTemp_UintButton);
 
 
             int setTempValue = 0;
@@ -316,7 +460,7 @@
             double dd = 0;
             double.TryParse(function.GetAttrState(WaterHeaterJinmao_AttrEnum.set_temp.ToString(), "--"), out dd);
             setTempValue = Convert.ToInt32(dd);
-            var setTemp_Temp_Bar = new DiyImageSeekBar()
+            setTemp_Bar = new DiyImageSeekBar()
             {
                 Gravity = Gravity.CenterHorizontal,
                 Y = Application.GetRealHeight(126 - 72),
@@ -332,7 +476,7 @@
                 IsProgressTextShow = false,
                 ProgressChangeDelayTime = 0,
             };
-            setTempView.AddChidren(setTemp_Temp_Bar);
+            setTempView.AddChidren(setTemp_Bar);
 
             var setTemp_Temp_MinValuesTextButton = new Button()
             {
@@ -379,7 +523,7 @@
             };
             contentView.AddChidren(flowView);
 
-            var flow_ValuesButton = new Button()
+            flow_ValuesButton = new Button()
             {
                 X = Application.GetRealWidth(16),
                 Y = Application.GetRealWidth(14),
@@ -388,7 +532,7 @@
                 TextAlignment = TextAlignment.CenterLeft,
                 TextSize = 16,
                 TextColor = CSS_Color.FirstLevelTitleColor,
-                Text = "鐑按娴侀噺锛�0.3L/min",
+                Text = "鐑按娴侀噺锛�" + function.GetAttrState(WaterHeaterJinmao_AttrEnum.flow.ToString()) + "L/min",
                 IsBold = true,
             };
             flowView.AddChidren(flow_ValuesButton);
@@ -406,20 +550,30 @@
             };
             flowView.AddChidren(flow_HotWaterVolumeTextButton);
 
-            var flow_HotWaterVolumeValuesButton = new Button()
+            string volumeString = function.GetAttrState(WaterHeaterJinmao_AttrEnum.volume.ToString());
+            string recyclVolumeString = function.GetAttrState(WaterHeaterJinmao_AttrEnum.recycl_volume.ToString());
+            double volume = 0;
+            double.TryParse(volumeString, out volume);
+            double recyclVolume = 0;
+            double.TryParse(recyclVolumeString, out recyclVolume);
+            int recyclVolumePercent = (int)(recyclVolume / volume * 100);
+
+
+            flow_VolumeButton = new Button()
             {
                 X = Application.GetRealWidth(343 - 116),
                 Y = Application.GetRealWidth(55),
                 Width = Application.GetRealWidth(100),
                 Height = Application.GetRealWidth(26),
-                Text = "24t",
+                Text = volumeString + "t",
                 TextAlignment = TextAlignment.CenterRight,
                 TextColor = CSS_Color.FirstLevelTitleColor,
                 TextSize = CSS_FontSize.TextFontSize,
             };
-            flowView.AddChidren(flow_HotWaterVolumeValuesButton);
+            flowView.AddChidren(flow_VolumeButton);
 
-            var flow_ValuesBar = new DiyImageSeekBar()
+
+            flow_ValuesBar = new DiyImageSeekBar()
             {
                 Gravity = Gravity.CenterHorizontal,
                 Y = Application.GetRealWidth(79),
@@ -430,7 +584,7 @@
                 ProgressBarColor = 0xFF42D163,
                 SeekBarBackgroundColor = 0xFFFFB848,
                 MaxValue = 100,
-                Progress = 80,
+                Progress = recyclVolumePercent,
                 SeekBarPadding = Application.GetRealWidth(0),
                 IsProgressTextShow = false,
                 ProgressChangeDelayTime = 0,
@@ -452,7 +606,7 @@
             };
             flowView.AddChidren(flow_HeatRecoveryCapacitytTextButton);
 
-            var flow_HeatRecoveryCapacitytProgressButton = new Button()
+            flow_HeatRecoveryProgressButton = new Button()
             {
                 X = Application.GetRealWidth(16),
                 Y = Application.GetRealWidth(125),
@@ -461,11 +615,11 @@
                 TextAlignment = TextAlignment.CenterLeft,
                 TextSize = 14,
                 TextColor = 0xFF00C22D,
-                Text = "80%"
+                Text = recyclVolumePercent + "%"
             };
-            flowView.AddChidren(flow_HeatRecoveryCapacitytProgressButton);
+            flowView.AddChidren(flow_HeatRecoveryProgressButton);
 
-            var flow_HeatRecoveryCapacitytValuesButton = new Button()
+            flow_HeatRecoverytValuesButton = new Button()
             {
                 X = Application.GetRealWidth(16),
                 Y = Application.GetRealWidth(148),
@@ -474,13 +628,13 @@
                 TextAlignment = TextAlignment.CenterLeft,
                 TextSize = 14,
                 TextColor = CSS_Color.FirstLevelTitleColor,
-                Text = "19.2t"
+                Text = recyclVolume + "t"
             };
-            flowView.AddChidren(flow_HeatRecoveryCapacitytValuesButton);
+            flowView.AddChidren(flow_HeatRecoverytValuesButton);
 
 
 
-            var flow_ElectricDirectDriveQuantityTextButton = new Button()
+            var flow_ElectricDriveTextButton = new Button()
             {
                 X = Application.GetRealWidth(343 - 116),
                 Y = Application.GetRealWidth(103),
@@ -491,9 +645,9 @@
                 TextColor = 0xFFFC9C04,
                 Text = "鐢电洿椹遍噺"
             };
-            flowView.AddChidren(flow_ElectricDirectDriveQuantityTextButton);
+            flowView.AddChidren(flow_ElectricDriveTextButton);
 
-            var flow_ElectricDirectDriveQuantityProgressButton = new Button()
+            flow_ElectricDriveProgressButton = new Button()
             {
                 X = Application.GetRealWidth(343 - 116),
                 Y = Application.GetRealWidth(125),
@@ -502,11 +656,11 @@
                 TextAlignment = TextAlignment.CenterRight,
                 TextSize = 14,
                 TextColor = 0xFFFC9C04,
-                Text = "20%"
+                Text = (100 - recyclVolumePercent) + "%"
             };
-            flowView.AddChidren(flow_ElectricDirectDriveQuantityProgressButton);
+            flowView.AddChidren(flow_ElectricDriveProgressButton);
 
-            var flow_ElectricDirectDriveQuantityValuesButton = new Button()
+            flow_ElectricDriveValuesButton = new Button()
             {
                 X = Application.GetRealWidth(343 - 116),
                 Y = Application.GetRealWidth(148),
@@ -515,9 +669,9 @@
                 TextAlignment = TextAlignment.CenterRight,
                 TextSize = 14,
                 TextColor = CSS_Color.FirstLevelTitleColor,
-                Text = "4.8t"
+                Text = (volume - recyclVolume) + "t"
             };
-            flowView.AddChidren(flow_ElectricDirectDriveQuantityValuesButton);
+            flowView.AddChidren(flow_ElectricDriveValuesButton);
 
             #endregion
 
@@ -567,13 +721,13 @@
             };
             socialContribution_InfoView_1.AddChidren(socialContribution_Info1_IconButton);
 
-            var socialContribution_Info1_ValuesButton = new Button()
+            socialContribution_Info1_ValuesButton = new Button()
             {
                 X = Application.GetRealWidth(12),
                 Y = Application.GetRealWidth(68),
                 Width = Application.GetRealWidth(36),
                 Height = Application.GetRealWidth(25),
-                Text = function.GetAttrState(WaterHeaterJinmao_AttrEnum.recycl_volume.ToString()),
+                Text = function.GetAttrState(WaterHeaterJinmao_AttrEnum.energy_electricity.ToString()),
                 TextSize = 18,
                 TextColor = CSS_Color.FirstLevelTitleColor,
                 TextAlignment = TextAlignment.BottomLeft,
@@ -586,7 +740,7 @@
 #endif
             socialContribution_InfoView_1.AddChidren(socialContribution_Info1_ValuesButton);
 
-            var socialContribution_Info1_UintButton = new Button()
+            socialContribution_Info1_UintButton = new Button()
             {
                 X = socialContribution_Info1_ValuesButton.Right - Application.GetRealWidth(4),
                 Y = Application.GetRealWidth(68),
@@ -637,7 +791,7 @@
             };
             socialContribution_InfoView_2.AddChidren(socialContribution_Info2_IconButton);
 
-            var socialContribution_Info2_ValuesButton = new Button()
+            socialContribution_Info2_ValuesButton = new Button()
             {
                 X = Application.GetRealWidth(12),
                 Y = Application.GetRealWidth(68),
@@ -656,7 +810,8 @@
 #endif
             socialContribution_InfoView_2.AddChidren(socialContribution_Info2_ValuesButton);
 
-            var socialContribution_Info2_UintButton = new Button()
+
+            socialContribution_Info2_UintButton = new Button()
             {
                 X = socialContribution_Info2_ValuesButton.Right - Application.GetRealWidth(4),
                 Y = Application.GetRealWidth(68),
@@ -707,7 +862,7 @@
             };
             socialContribution_InfoView_3.AddChidren(socialContribution_Info3_IconButton);
 
-            var socialContribution_Info3_ValuesButton = new Button()
+            socialContribution_Info3_ValuesButton = new Button()
             {
                 X = Application.GetRealWidth(12),
                 Y = Application.GetRealWidth(68),
@@ -726,7 +881,7 @@
 #endif
             socialContribution_InfoView_3.AddChidren(socialContribution_Info3_ValuesButton);
 
-            var socialContribution_Info3_UintButton = new Button()
+            socialContribution_Info3_UintButton = new Button()
             {
                 X = socialContribution_Info3_ValuesButton.Right - Application.GetRealWidth(4),
                 Y = Application.GetRealWidth(68),
@@ -759,10 +914,12 @@
 
 
         }
-
+        /// <summary>
+        /// 鍔犺浇搴曢儴鍖哄煙
+        /// </summary>
         private void initBottomView()
         {
-            var btnPowerControl = new Button()
+            btnPowerControl = new Button()
             {
                 Width = Application.GetRealWidth(50),
                 Height = Application.GetRealWidth(50),
@@ -774,10 +931,12 @@
             };
             bottomView.AddChidren(btnPowerControl);
 
-            btnPowerControl.MouseUpEventHandler = (sender, e) => {
+            btnPowerControl.MouseUpEventHandler = (sender, e) =>
+            {
                 btnPowerControl.IsSelected = !btnPowerControl.IsSelected;
 
-                new System.Threading.Thread(() => {
+                new System.Threading.Thread(() =>
+                {
                     Dictionary<string, string> d = new Dictionary<string, string>();
                     d.Add(FunctionAttributeKey.OnOff, btnPowerControl.IsSelected ? "on" : "off");
                     Control.Ins.SendWriteCommand(function, d);
@@ -787,10 +946,343 @@
 
         }
 
+        /// <summary>
+        /// 鍒濆鍖栨帶鍒朵簨浠�
+        /// </summary>
+        private void initControlEvent()
+        {
+            //鑺傝兘妯″紡鎺у埗
+            btnControlModeEconomic.MouseUpEventHandler = (sender, e) =>
+            {
+                if (function.GetAttrState(WaterHeaterJinmao_AttrEnum.mode.ToString()) != WaterHeaterJinmao_Attr_ModeEnum.economic.ToString())
+                {
+                    new System.Threading.Thread(() =>
+                    {
+                        var dic = new Dictionary<string, string>();
+                        dic.Add(WaterHeaterJinmao_AttrEnum.mode.ToString(), WaterHeaterJinmao_Attr_ModeEnum.economic.ToString());
+                        Control.Ins.SendWriteCommand(function, dic);
+                        function.SetAttrState(WaterHeaterJinmao_AttrEnum.mode.ToString(), WaterHeaterJinmao_Attr_ModeEnum.economic.ToString());
+                        Application.RunOnMainThread(() =>
+                        {
+                            updateModeUI();
+                        });
+                    })
+                    { IsBackground = true }.Start();
+                }
+            };
+            //閫熺儹妯″紡鎺у埗
+            btnControlModeQuickHeat.MouseUpEventHandler = (sender, e) =>
+            {
+                if (function.GetAttrState(WaterHeaterJinmao_AttrEnum.mode.ToString()) != WaterHeaterJinmao_Attr_ModeEnum.quick_heat.ToString())
+                {
+                    new System.Threading.Thread(() =>
+                    {
+                        var dic = new Dictionary<string, string>();
+                        dic.Add(WaterHeaterJinmao_AttrEnum.mode.ToString(), WaterHeaterJinmao_Attr_ModeEnum.quick_heat.ToString());
+                        Control.Ins.SendWriteCommand(function, dic);
+                        function.SetAttrState(WaterHeaterJinmao_AttrEnum.mode.ToString(), WaterHeaterJinmao_Attr_ModeEnum.quick_heat.ToString());
+                        Application.RunOnMainThread(() =>
+                        {
+                            updateModeUI();
+                        });
+                    })
+                    { IsBackground = true }.Start();
+                }
+            };
+            //璁剧疆娓╁害璋冭妭
+            setTemp_Bar.OnStopTrackingTouchEvent = (sender, e) =>
+            {
+                new System.Threading.Thread(() =>
+                {
+                    var dic = new Dictionary<string, string>();
+                    dic.Add(WaterHeaterJinmao_AttrEnum.set_temp.ToString(), setTemp_Bar.Progress.ToString());
+                    Control.Ins.SendWriteCommand(function, dic);
+                    function.SetAttrState(WaterHeaterJinmao_AttrEnum.set_temp.ToString(), setTemp_Bar.Progress.ToString());
+                })
+                { IsBackground = true }.Start();
+            };
+            setTemp_Bar.OnProgressChangedEvent = (sender, e) => {
+                setTemp_ValuesButton.Text = e.ToString();
+            };
+
+            //寮�鍏虫帶鍒�
+            btnPowerControl.MouseUpEventHandler = (sender, e) =>
+            {
+                btnPowerControl.IsSelected = !btnPowerControl.IsSelected;
+                function.SetAttrState(FunctionAttributeKey.OnOff.ToString(), btnPowerControl.IsSelected ? "on" : "off");
+
+                new System.Threading.Thread(() =>
+                {
+                    var dic = new Dictionary<string, string>();
+                    dic.Add(FunctionAttributeKey.OnOff.ToString(), function.GetAttrState(FunctionAttributeKey.OnOff.ToString()));
+                    Control.Ins.SendWriteCommand(function, dic);
+                })
+                { IsBackground = true }.Start();
+            };
+        }
+
+
+        /// <summary>
+        /// 鏇存柊鐣岄潰鐘舵��
+        /// </summary>
+        /// <param name="temp"></param>
         public void UpdateStatus(Function temp)
         {
+            if (bodyView == null)
+            {
+                return;
+            }
+            //鍏嶈垂鐑按
+            if (function.GetAttrState(WaterHeaterJinmao_AttrEnum.mode_free.ToString()) != temp.GetAttrState(WaterHeaterJinmao_AttrEnum.mode_free.ToString()))
+            {
+                function.SetAttrState(WaterHeaterJinmao_AttrEnum.mode_free.ToString(), temp.GetAttrState(WaterHeaterJinmao_AttrEnum.mode_free.ToString()));
+                Application.RunOnMainThread(() =>
+                {
+                    updateFreeMode();
+                });
+            }
+            //鐑按娓╁害
+            if (function.GetAttrState(WaterHeaterJinmao_AttrEnum.temp.ToString()) != temp.GetAttrState(WaterHeaterJinmao_AttrEnum.temp.ToString()))
+            {
+                function.SetAttrState(WaterHeaterJinmao_AttrEnum.temp.ToString(), temp.GetAttrState(WaterHeaterJinmao_AttrEnum.temp.ToString()));
+                Application.RunOnMainThread(() =>
+                {
+                    updateTemp();
+                });
+            }
+            //鐑按鍣ㄦā寮�
+            if (function.GetAttrState(WaterHeaterJinmao_AttrEnum.mode.ToString()) != temp.GetAttrState(WaterHeaterJinmao_AttrEnum.mode.ToString()))
+            {
+                function.SetAttrState(WaterHeaterJinmao_AttrEnum.mode.ToString(), temp.GetAttrState(WaterHeaterJinmao_AttrEnum.mode.ToString()));
+                Application.RunOnMainThread(() =>
+                {
+                    updateModeUI();
+                });
+            }
+            //鐑按鍣ㄨ缃俯搴�
+            if (function.GetAttrState(WaterHeaterJinmao_AttrEnum.set_temp.ToString()) != temp.GetAttrState(WaterHeaterJinmao_AttrEnum.set_temp.ToString()))
+            {
+                function.SetAttrState(WaterHeaterJinmao_AttrEnum.set_temp.ToString(), temp.GetAttrState(WaterHeaterJinmao_AttrEnum.set_temp.ToString()));
+                Application.RunOnMainThread(() =>
+                {
+                    updateSetTemp();
+                });
+            }
+            //鐑按娴侀噺
+            if (function.GetAttrState(WaterHeaterJinmao_AttrEnum.flow.ToString()) != temp.GetAttrState(WaterHeaterJinmao_AttrEnum.flow.ToString()))
+            {
+                Application.RunOnMainThread(() =>
+                {
+                    updateFlow();
+                });
+            }
+            //鐑按鎬婚噺
+            if (function.GetAttrState(WaterHeaterJinmao_AttrEnum.volume.ToString()) != temp.GetAttrState(WaterHeaterJinmao_AttrEnum.volume.ToString()) ||
+                function.GetAttrState(WaterHeaterJinmao_AttrEnum.recycl_volume.ToString()) != temp.GetAttrState(WaterHeaterJinmao_AttrEnum.recycl_volume.ToString()))
+            {
+                Application.RunOnMainThread(() =>
+                {
+                    updateVolume();
+                });
+            }
+            //绀句細璐$尞-鑺傜數閲�
+            if (function.GetAttrState(WaterHeaterJinmao_AttrEnum.energy_electricity.ToString()) != temp.GetAttrState(WaterHeaterJinmao_AttrEnum.energy_electricity.ToString()))
+            {
+                updateSocialContribution1();
+            }
+            //绀句細璐$尞-co2
+            if (function.GetAttrState(WaterHeaterJinmao_AttrEnum.co2.ToString()) != temp.GetAttrState(WaterHeaterJinmao_AttrEnum.co2.ToString()))
+            {
+                updateSocialContribution2();
+            }
+            //绀句細璐$尞-妞嶆爲
+            if (function.GetAttrState(WaterHeaterJinmao_AttrEnum.trees.ToString()) != temp.GetAttrState(WaterHeaterJinmao_AttrEnum.trees.ToString()))
+            {
+                updateSocialContribution3();
+            }
+            //寮�鍏虫寜閽�
+            if (function.GetAttrState(FunctionAttributeKey.OnOff.ToString()) != temp.GetAttrState(FunctionAttributeKey.OnOff.ToString()))
+            {
+                updatePowerButton();
+            }
 
         }
+
+        /// <summary>
+        /// 鏇存柊鍏嶈垂鐑按妯″紡鐘舵�乁I
+        /// </summary>
+        private void updateFreeMode()
+        {
+            if (function.GetAttrState(WaterHeaterJinmao_AttrEnum.mode_free.ToString()) != "true")
+            {
+                modeFreeView.BackgroundColor = 0x1500C22D;
+                modeFreeView.Width = Width = Application.GetRealWidth(82 + 14);
+                modeFree_IconButton.UnSelectedImagePath = "FunctionIcon/Acst/WaterHeater/ModeFree_True.png";
+                modeFree_TextButton.Text = "鐑洖鏀�";
+                modeFree_TextButton.TextColor = 0xFF00C22D;
+            }
+            else
+            {
+                modeFreeView.BackgroundColor = 0x15FC9C04;
+                modeFreeView.Width = Width = Application.GetRealWidth(68 + 14);
+                modeFree_IconButton.UnSelectedImagePath = "FunctionIcon/Acst/WaterHeater/ModeFree_False.png";
+                modeFree_TextButton.Text = "鐢ㄧ數";
+                modeFree_TextButton.TextColor = 0xFFFC9C04;
+            }
+        }
+        /// <summary>
+        /// 鏇存柊鐑按娓╁害UI
+        /// </summary>
+        private void updateTemp()
+        {
+            btnTempValues.Text = function.GetAttrState(WaterHeaterJinmao_AttrEnum.temp.ToString(), "---");
+#if __IOS__
+            btnTempValues.Width = btnTempValues.GetTextWidth() + Application.GetRealWidth(8);
+#else
+            btnTempValues.Width = btnTempValues.GetTextWidth();
+#endif
+            btnTempValues.Gravity = Gravity.CenterHorizontal;
+
+            btnTempValuesUint.X = btnTempValues.Right - Application.GetRealWidth(4);
+        }
+
+        /// <summary>
+        /// 鏇存柊妯″紡UI
+        /// </summary>
+        private void updateModeUI()
+        {
+            if (function.GetAttrState(WaterHeaterJinmao_AttrEnum.mode.ToString()) == WaterHeaterJinmao_Attr_ModeEnum.economic.ToString())
+            {
+                //鑺傝兘
+                mode_EconomicView.BorderColor = 0xFF00C22D;
+                mode_EconomicView.BackgroundColor = 0xFFEBFAEE;
+                mode_Economic_IconButton.UnSelectedImagePath = "FunctionIcon/Acst/WaterHeater/Mode_Economic_On.png";
+                mode_Economic_TextButton.TextColor = CSS_Color.FirstLevelTitleColor;
+
+                //閫熺儹
+                mode_QuickHeatView.BorderColor = 0x0000C22D;
+                mode_QuickHeatView.BorderWidth = (uint)Application.GetRealWidth(1);
+                mode_QuickHeatView.BackgroundColor = CSS_Color.MainBackgroundColor;
+                mode_QuickHeat_IconButton.UnSelectedImagePath = "FunctionIcon/Acst/WaterHeater/Mode_QuickHeat.png";
+                mode_QuickHeat_TextButton.TextColor = CSS_Color.TextualColor;
+            }
+            else if (function.GetAttrState(WaterHeaterJinmao_AttrEnum.mode.ToString()) == WaterHeaterJinmao_Attr_ModeEnum.quick_heat.ToString())
+            {
+                //鑺傝兘
+                mode_EconomicView.BorderColor = 0x0000C22D;
+                mode_EconomicView.BackgroundColor = CSS_Color.MainBackgroundColor;
+                mode_Economic_IconButton.UnSelectedImagePath = "FunctionIcon/Acst/WaterHeater/Mode_Economic.png";
+                mode_Economic_TextButton.TextColor = CSS_Color.TextualColor;
+
+                //閫熺儹
+                mode_QuickHeatView.BorderColor = 0xFFFC9C04;
+                mode_QuickHeatView.BackgroundColor = 0xFFFFF7EB;
+                mode_QuickHeat_IconButton.UnSelectedImagePath = "FunctionIcon/Acst/WaterHeater/Mode_QuickHeat_On.png";
+                mode_QuickHeat_TextButton.TextColor = CSS_Color.FirstLevelTitleColor;
+            }
+        }
+
+        /// <summary>
+        /// 鏇存柊鐑按鍣ㄨ缃俯搴I
+        /// </summary>
+        private void updateSetTemp()
+        {
+            setTemp_ValuesButton.Text = function.GetAttrState(WaterHeaterJinmao_AttrEnum.set_temp.ToString(), "---");
+#if __IOS__
+            setTemp_ValuesButton.Width = setTemp_ValuesButton.GetTextWidth() + Application.GetRealWidth(8);
+#else
+            setTemp_ValuesButton.Width = setTemp_ValuesButton.GetTextWidth();
+#endif
+            setTemp_ValuesButton.Gravity = Gravity.CenterHorizontal;
+
+            setTemp_UintButton.X = setTemp_ValuesButton.Right - Application.GetRealWidth(4);
+
+
+            double dd = 0;
+            double.TryParse(function.GetAttrState(WaterHeaterJinmao_AttrEnum.set_temp.ToString(), "0"), out dd);
+            setTemp_Bar.Progress = Convert.ToInt32(dd) - 35;
+
+        }
+
+        /// <summary>
+        /// 鏇存柊鐑按娴侀噺鏁版嵁UI
+        /// </summary>
+        private void updateFlow()
+        {
+            flow_ValuesButton.Text = "鐑按娴侀噺锛�" + function.GetAttrState(WaterHeaterJinmao_AttrEnum.flow.ToString()) + "L/min";
+        }
+
+        /// <summary>
+        /// 鏇存柊鐑按鎬婚噺鏁版嵁UI
+        /// </summary>
+        private void updateVolume()
+        {
+            volumeString = function.GetAttrState(WaterHeaterJinmao_AttrEnum.volume.ToString());
+            recyclVolumeString = function.GetAttrState(WaterHeaterJinmao_AttrEnum.recycl_volume.ToString());
+            volume = 0;
+            double.TryParse(volumeString, out volume);
+            double.TryParse(recyclVolumeString, out recyclVolume);
+            recyclVolumePercent = (int)(recyclVolume / volume * 100);
+
+            flow_VolumeButton.Text = volumeString + "t";
+            flow_ValuesBar.Progress = recyclVolumePercent;
+            flow_HeatRecoveryProgressButton.Text = recyclVolumePercent + "%";
+            flow_HeatRecoverytValuesButton.Text = recyclVolume + "t";
+            flow_ElectricDriveProgressButton.Text = (100 - recyclVolumePercent) + "%";
+            flow_ElectricDriveValuesButton.Text = (volume - recyclVolume) + "t";
+        }
+
+        /// <summary>
+        /// 鏇存柊绀句細璐$尞1鏁版嵁UI
+        /// </summary>
+        private void updateSocialContribution1()
+        {
+            socialContribution_Info1_ValuesButton.Text = function.GetAttrState(WaterHeaterJinmao_AttrEnum.energy_electricity.ToString());
+#if __IOS__
+            socialContribution_Info1_ValuesButton.Width = socialContribution_Info1_ValuesButton.GetTextWidth() + Application.GetRealWidth(8);
+#else
+            socialContribution_Info1_ValuesButton.Width = socialContribution_Info1_ValuesButton.GetTextWidth();
+#endif
+            socialContribution_Info1_UintButton.X = socialContribution_Info1_ValuesButton.Right - Application.GetRealWidth(4);
+        }
+        /// <summary>
+        /// 鏇存柊绀句細璐�2鐚暟鎹甎I
+        /// </summary>
+        private void updateSocialContribution2()
+        {
+            socialContribution_Info3_ValuesButton.Text = function.GetAttrState(WaterHeaterJinmao_AttrEnum.co2.ToString());
+#if __IOS__
+            socialContribution_Info3_ValuesButton.Width = socialContribution_Info2_ValuesButton.GetTextWidth() + Application.GetRealWidth(8);
+#else
+            socialContribution_Info2_ValuesButton.Width = socialContribution_Info2_ValuesButton.GetTextWidth();
+#endif
+            socialContribution_Info2_UintButton.X = socialContribution_Info2_ValuesButton.Right - Application.GetRealWidth(4);
+
+        }
+        /// <summary>
+        /// 鏇存柊绀句細璐�3鐚暟鎹甎I
+        /// </summary>
+        private void updateSocialContribution3()
+        {
+
+            socialContribution_Info3_ValuesButton.Text = function.GetAttrState(WaterHeaterJinmao_AttrEnum.trees.ToString());
+#if __IOS__
+            socialContribution_Info3_ValuesButton.Width = socialContribution_Info3_ValuesButton.GetTextWidth() + Application.GetRealWidth(8);
+#else
+            socialContribution_Info3_ValuesButton.Width = socialContribution_Info3_ValuesButton.GetTextWidth();
+#endif
+            socialContribution_Info3_UintButton.X = socialContribution_Info3_ValuesButton.Right - Application.GetRealWidth(4);
+        }
+
+        /// <summary>
+        /// 鏇存柊寮�鍏虫寜閽姸鎬�
+        /// </summary>
+        private void updatePowerButton()
+        {
+            btnPowerControl.IsSelected = function.GetAttrState(FunctionAttributeKey.OnOff.ToString()) == "on";
+        }
+
+
     }
 }
 
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Acst/WetarHeaterJinmaoHistoryPage.cs b/HDL_ON/UI/UI2/FuntionControlView/Acst/WetarHeaterJinmaoHistoryPage.cs
index 402c310..ffa1362 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Acst/WetarHeaterJinmaoHistoryPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Acst/WetarHeaterJinmaoHistoryPage.cs
@@ -1,5 +1,6 @@
 锘縰sing System;
 using System.Collections.Generic;
+using HDL_ON.DAL.Server;
 using HDL_ON.Entity;
 using HDL_ON.UI.CSS;
 using Shared;
@@ -8,34 +9,51 @@
     public class WetarHeaterJinmaoHistoryPage : FrameLayout
     {
         WetarHeaterJinmaoHistoryPage bodyView;
-        Function device;
+        Function function;
+        FrameLayout infoView1;
+        EchartsOption_Histogram tempEchartOption;
+        MyEchartsViewOn infoView1_EchartsView;
+        Button infoView1_Date_Day;
+        Button infoView1_Date_Month;
+        Button infoView1_Date_Year;
+        Button infoView1_DateInfo_PreClickButton;
+        Button infoView1_DateInfo_DateTextButton;
+        Button infoView1_DateInfo_NextClickButton;
 
-        /// <summary>
-        /// echart瀹瑰櫒
-        /// </summary>
-        MyEchartsViewOn tempEchartsView;
 
-        public WetarHeaterJinmaoHistoryPage(Function function)
+        FrameLayout infoView2;
+        MyEchartsViewOn infoView2_EchartsView;
+        EchartsOption_Histogram echartOption2;
+        Button infoView2_Date_Day;
+        Button infoView2_Date_Month;
+        Button infoView2_Date_Year;
+        Button infoView2_DateInfo_PreClickButton;
+        Button infoView2_DateInfo_DateTextButton;
+        Button infoView2_DateInfo_NextClickButton;
+
+
+        public WetarHeaterJinmaoHistoryPage(Function deviceFunction)
         {
             bodyView = this;
-            device = function;
+            function = deviceFunction;
+            this.BackgroundColor = CSS_Color.BackgroundColor;
         }
 
         public void LoadPage()
         {
-            var topView = new TopViewDiv(bodyView, device.name);
+            var topView = new TopViewDiv(bodyView, function.name);
             topView.maginY = 10;
             topView.LoadTopView();
 
             var contentView = new VerticalScrolViewLayout()
             {
-                Y = Application.GetRealHeight(74+16),
+                Y = Application.GetRealHeight(74 + 16),
                 Height = Application.GetRealHeight(Application.DesignHeight - 74),
             };
             bodyView.AddChidren(contentView);
 
             #region 娓╁害鍊�
-            var infoView1 = new FrameLayout()
+            infoView1 = new FrameLayout()
             {
                 Width = Application.GetRealWidth(343),
                 Height = Application.GetRealWidth(382),
@@ -62,7 +80,7 @@
             };
             infoView1.AddChidren(infoView1_DateView);
 
-            var infoView1_Date_Day = new Button()
+            infoView1_Date_Day = new Button()
             {
                 Width = Application.GetRealWidth(103),
                 Height = Application.GetRealWidth(26),
@@ -80,8 +98,7 @@
             };
             infoView1_DateView.AddChidren(infoView1_Date_Day);
 
-
-            var infoView1_Date_Month = new Button()
+            infoView1_Date_Month = new Button()
             {
                 Width = Application.GetRealWidth(103),
                 Height = Application.GetRealWidth(26),
@@ -99,8 +116,7 @@
             };
             infoView1_DateView.AddChidren(infoView1_Date_Month);
 
-
-            var infoView1_Date_Year = new Button()
+            infoView1_Date_Year = new Button()
             {
                 Width = Application.GetRealWidth(103),
                 Height = Application.GetRealWidth(26),
@@ -135,13 +151,13 @@
             };
             infoView1_DateInfoView.AddChidren(infoView1_DateInfo_PreIconButton);
 
-            var infoView1_DateInfo_PreClickButton = new Button()
+            infoView1_DateInfo_PreClickButton = new Button()
             {
                 Width = Application.GetRealWidth(32 + 6),
             };
             infoView1_DateInfoView.AddChidren(infoView1_DateInfo_PreClickButton);
 
-            var infoView1_DateInfo_DateTextButton = new Button()
+            infoView1_DateInfo_DateTextButton = new Button()
             {
                 Gravity = Gravity.Center,
                 Width = Application.GetRealWidth(200),
@@ -164,7 +180,7 @@
             };
             infoView1_DateInfoView.AddChidren(infoView1_DateInfo_NextIconButton);
 
-            var infoView1_DateInfo_NextClickButton = new Button()
+            infoView1_DateInfo_NextClickButton = new Button()
             {
                 Width = Application.GetRealWidth(32 + 6),
             };
@@ -173,23 +189,23 @@
             #endregion
 
             #region 鏁版嵁鍥捐〃
-            MyEchartsViewOn infoView1_EchartsView = new MyEchartsViewOn()
+            infoView1_EchartsView = new MyEchartsViewOn()
             {
                 Y = Application.GetRealWidth(101),
                 Height = Application.GetRealWidth(246),
             };
             infoView1.AddChidren(infoView1_EchartsView);
 
-            var echartOption = new EchartsOption_Histogram();
-            echartOption.xTitle = "鏃堕棿";
-            echartOption.yTitle = "娓╁害锛堚剝锛�";
-            echartOption.InitXdataText(new List<string>()
+            tempEchartOption = new EchartsOption_Histogram();
+            tempEchartOption.xTitle = "鏃堕棿";
+            tempEchartOption.yTitle = "娓╁害锛堚剝锛�";
+            tempEchartOption.InitXdataText(new List<string>()
             {
                 "21","22","23","24","25","26","26","27","28","29",
                 "21","22","23","24","25","26","26","27","28","29",
                 "21","22","23","24"
             });
-            echartOption.InitYdataText(new List<EnvironmentalSensorHistor>() {
+            tempEchartOption.InitYdataText(new List<EnvironmentalSensorHistor>() {
                 new EnvironmentalSensorHistor{ fieldName = "1", fieldValue= "23"  },
                 new EnvironmentalSensorHistor{ fieldName = "2", fieldValue= "22"  },
                 new EnvironmentalSensorHistor{ fieldName = "3", fieldValue= "11"  },
@@ -215,7 +231,7 @@
                 new EnvironmentalSensorHistor{ fieldName = "23", fieldValue= "11"  },
                 new EnvironmentalSensorHistor{ fieldName = "24", fieldValue= "21"  },
             });
-            var ddd = echartOption.InitOption();
+            var ddd = tempEchartOption.InitOption();
             infoView1_EchartsView.ShowWithOption(ddd);
 
             infoView1.AddChidren(new Button()
@@ -238,7 +254,8 @@
             });
 
             #region 鐢ㄦ按閲�
-            var infoView2 = new FrameLayout()
+
+            infoView2 = new FrameLayout()
             {
                 Width = Application.GetRealWidth(343),
                 Height = Application.GetRealWidth(382),
@@ -266,7 +283,7 @@
             };
             infoView2.AddChidren(infoView2_DateView);
 
-            var infoView2_Date_Day = new Button()
+            infoView2_Date_Day = new Button()
             {
                 Width = Application.GetRealWidth(103),
                 Height = Application.GetRealWidth(26),
@@ -285,7 +302,7 @@
             infoView2_DateView.AddChidren(infoView2_Date_Day);
 
 
-            var infoView2_Date_Month = new Button()
+            infoView2_Date_Month = new Button()
             {
                 Width = Application.GetRealWidth(103),
                 Height = Application.GetRealWidth(26),
@@ -304,7 +321,7 @@
             infoView2_DateView.AddChidren(infoView2_Date_Month);
 
 
-            var infoView2_Date_Year = new Button()
+            infoView2_Date_Year = new Button()
             {
                 Width = Application.GetRealWidth(103),
                 Height = Application.GetRealWidth(26),
@@ -339,13 +356,13 @@
             };
             infoView2_DateInfoView.AddChidren(infoView2_DateInfo_PreIconButton);
 
-            var infoView2_DateInfo_PreClickButton = new Button()
+            infoView2_DateInfo_PreClickButton = new Button()
             {
                 Width = Application.GetRealWidth(32 + 6),
             };
             infoView2_DateInfoView.AddChidren(infoView2_DateInfo_PreClickButton);
 
-            var infoView2_DateInfo_DateTextButton = new Button()
+            infoView2_DateInfo_DateTextButton = new Button()
             {
                 Gravity = Gravity.Center,
                 Width = Application.GetRealWidth(200),
@@ -357,7 +374,6 @@
             };
             infoView2_DateInfoView.AddChidren(infoView2_DateInfo_DateTextButton);
 
-
             var infoView2_DateInfo_NextIconButton = new Button()
             {
                 X = Application.GetRealWidth(343 - 18 - 6),
@@ -368,7 +384,7 @@
             };
             infoView2_DateInfoView.AddChidren(infoView2_DateInfo_NextIconButton);
 
-            var infoView2_DateInfo_NextClickButton = new Button()
+            infoView2_DateInfo_NextClickButton = new Button()
             {
                 Width = Application.GetRealWidth(32 + 6),
             };
@@ -377,16 +393,16 @@
             #endregion
 
             #region 鏁版嵁鍥捐〃
-            MyEchartsViewOn infoView2_EchartsView = new MyEchartsViewOn()
+            infoView2_EchartsView = new MyEchartsViewOn()
             {
                 Y = Application.GetRealWidth(101),
                 Height = Application.GetRealWidth(246),
             };
             infoView2.AddChidren(infoView2_EchartsView);
 
-            var echartOption2 = new EchartsOption_Histogram();
+            echartOption2 = new EchartsOption_Histogram();
             echartOption2.xTitle = "鏃堕棿";
-            echartOption2.yTitle = "娓╁害锛堚剝锛�";
+            echartOption2.yTitle = "鐢ㄦ按閲忥紙t锛�";
             echartOption2.InitXdataText(new List<string>()
             {
                 "21","22","23","24","25","26","26","27","28","29",
@@ -443,6 +459,137 @@
             });
         }
 
+
+        /// <summary>
+        /// 璇诲彇娓╁害鍊煎巻鍙叉暟鎹�
+        /// </summary>
+        private void getTempHistory(string queryType)
+        {
+            var loadPage = new Loading()
+            {
+                LodingBackgroundColor = 0x88888888,
+            };
+            infoView1.AddChidren(loadPage);
+
+            new System.Threading.Thread(() =>
+            {
+                try
+                {
+                    Application.RunOnMainThread(() =>
+                    {
+                        loadPage.Start(Language.StringByID(StringId.PleaseWait));
+                    });
+
+                    var revertObj = new HttpServerRequest().GetSensorHistory(queryType, function.deviceId, WaterHeaterJinmao_AttrEnum.temp.ToString());
+                    if (revertObj != null)
+                    {
+                        if (revertObj.Code == StateCode.SUCCESS)
+                        {
+                            var revertData = Newtonsoft.Json.JsonConvert.DeserializeObject<List<EnvironmentalSensorHistor>>(revertObj.Data.ToString());
+                            List<string> vs = new List<string>();
+                            foreach (var data in revertData)
+                            {
+                                vs.Add(data.fieldName);
+                            }
+                            tempEchartOption.InitXdataText(vs);
+                            tempEchartOption.InitYdataText(revertData);
+
+                            Application.RunOnMainThread(() =>
+                            {
+                                infoView1_EchartsView.ShowWithOption(tempEchartOption.InitOption());
+                            });
+                        }
+                    }
+                }
+                catch (Exception ex)
+                {
+                    MainPage.Log($"history error : {ex.Message}");
+                }
+                finally
+                {
+                    Application.RunOnMainThread(() =>
+                    {
+                        loadPage.Hide();
+                    });
+                }
+            })
+            { IsBackground = true }.Start();
+
+        }
+        /// <summary>
+        /// 鑾峰彇鐢ㄦ按閲忓巻鍙茶褰�
+        /// </summary>
+        /// <param name="queryType"></param>
+        private void getWaterHistory(string queryType)
+        {
+            var loadPage = new Loading()
+            {
+                LodingBackgroundColor = 0x88888888,
+            };
+            infoView2.AddChidren(loadPage);
+
+            new System.Threading.Thread(() =>
+            {
+                try
+                {
+                    Application.RunOnMainThread(() =>
+                    {
+                        loadPage.Start(Language.StringByID(StringId.PleaseWait));
+                    });
+
+                    var revertObj = new HttpServerRequest().GetSensorHistory(queryType, function.deviceId, WaterHeaterJinmao_AttrEnum.volume.ToString());
+                    if (revertObj != null)
+                    {
+                        if (revertObj.Code == StateCode.SUCCESS)
+                        {
+                            var revertData = Newtonsoft.Json.JsonConvert.DeserializeObject<List<EnvironmentalSensorHistor>>(revertObj.Data.ToString());
+                            List<string> vs = new List<string>();
+                            foreach (var data in revertData)
+                            {
+                                vs.Add(data.fieldName);
+                            }
+                            echartOption2.InitXdataText(vs);
+                            echartOption2.InitYdataText(revertData);
+
+                            Application.RunOnMainThread(() =>
+                            {
+                                infoView2_EchartsView.ShowWithOption(echartOption2.InitOption());
+                            });
+                        }
+                    }
+                }
+                catch (Exception ex)
+                {
+                    MainPage.Log($"history 2 error : {ex.Message}");
+                }
+                finally
+                {
+                    Application.RunOnMainThread(() =>
+                    {
+                        loadPage.Hide();
+                    });
+                }
+            })
+            { IsBackground = true }.Start();
+
+        }
+
+        private void initQueryButton()
+        {
+            infoView1_Date_Day.MouseUpEventHandler = (sender, e) => {
+                if (infoView1_Date_Day.IsSelected)
+                {
+                    return;
+                }
+                infoView1_Date_Day.IsSelected = true;
+                infoView1_Date_Month.IsSelected = false;
+                infoView1_Date_Year.IsSelected = false;
+                //getTempHistory("day")
+            };
+
+        }
+
+
     }
 }
 

--
Gitblit v1.8.0