From 5bfb959c47017825c8cf7dc8570c55b04dab694c Mon Sep 17 00:00:00 2001
From: wxr <464027401@qq.com>
Date: 星期三, 09 六月 2021 16:42:11 +0800
Subject: [PATCH] Merge branch 'dev-tzy' into wxr6

---
 HDL-ON_Android/Assets/Language.ini                                                    |  423 
 HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/DeviceListPage.cs                          |   26 
 HDL_ON/HDL_ON.projitems                                                               |   42 
 HDL_ON/UI/UI2/3-Intelligence/Automation/AddInputType.cs                               |    5 
 HDL-ON_Android/Assets/Phone/PirIcon/projector.png                                     |    0 
 HDL-ON_Android/Resources/drawable/unlock_def.png                                      |    0 
 HDL-ON_iOS/Resources/Phone/PirIcon/adddevice.png                                      |    0 
 HDL_ON/UI/UI2/3-Intelligence/Automation/LogicMethod.cs                                |   18 
 HDL_ON/UI/UI0-Public/PublicAssmebly.cs                                                |    2 
 HDL-ON_Android/Assets/Phone/PirIcon/3.png                                             |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/Mute.png                            |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/Screen.png                          |    0 
 HDL-ON_iOS/Resources/Phone/PirIcon/search.png                                         |    0 
 HDL_ON/UI/UI0-Stan/Controls/BottomControls/BottomDateSelectControl.cs                 |  275 +
 HDL_ON/UI/UI2/FuntionControlView/DoorLock/DoorLockAlwaysOnManagerPage.cs              |  535 ++
 HDL-ON_Android/Assets/Phone/VideoIcon/answer.png                                      |    0 
 HDL_ON/Entity/Function/Scene.cs                                                       |   15 
 HDL_ON/UI/UI0-Stan/Form/AppNumPasswordSecurityForm.cs                                 |  233 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/History.png                          |    0 
 HDL_ON/UI/UI0-Stan/Controls/NormalControls/NormalViewControl.cs                       |   12 
 DLL/IOS/Shared.IOS.JLCountryCode.dll                                                  |    0 
 HDL_ON/UI/UI0-Public/TopViewDiv.cs                                                    |   12 
 HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/More.png                            |    0 
 HDL_ON/UI/UI0-Stan/Logic/HdlCheckLogic.cs                                             |  246 
 HDL-ON_iOS/Resources/Phone/PirIcon/failed.png                                         |    0 
 HDL-ON_Android/Resources/drawable/unlock_sel.png                                      |    0 
 HDL_ON/UI/UI2/3-Intelligence/Automation/Send.cs                                       |    5 
 HDL-ON_Android/Assets/Phone/PirIcon/next.png                                          |    0 
 HDL_ON/UI/UI0-Stan/Controls/CompoundControls/SeekBarImageControl.cs                   |   64 
 HDL-ON_iOS/Resources/Phone/PirIcon/icon2.png                                          |    0 
 HDL-ON_Android/Assets/Phone/Public/BatteryNot.png                                     |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/Redistribution.png                  |    0 
 HDL_ON/UI/UI0-Stan/Form/Base/CommonFormBase.cs                                        |   52 
 HDL-ON_Android/Assets/Phone/PirIcon/addlbuton.png                                     |    0 
 HDL-ON_iOS/Resources/Phone/VideoIcon/keshiduijiang.png                                |    0 
 HDL-ON_Android/Resources/drawable/hangup.png                                          |    0 
 HDL_ON/UI/UI0-Public/Widget/EmptyTipView.cs                                           |   16 
 HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/UnConnect.png                       |    0 
 HDL_ON/UI/UI0-Stan/Logic/HdlFormLogic.cs                                              |    2 
 HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/Method.cs                                    |  101 
 HDL-ON_iOS/Resources/Phone/Public/BatteryEnough.png                                   |    0 
 HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/AddDevciePage.cs                           |   13 
 HDL-ON_iOS/Resources/Language.ini                                                     |  423 
 HDL-ON_iOS/Resources/Phone/PirIcon/right.png                                          |    0 
 HDL_ON/UI/UI0-Stan/Controls/TextInputControls/TextInputDialog.cs                      |  238 
 HDL_ON/UI/UI2/FuntionControlView/Video/VideoMethod.cs                                 |    2 
 HDL-ON_iOS/Resources/Phone/VideoIcon/answer.png                                       |    0 
 HDL-ON_iOS/Resources/Phone/PirIcon/3.png                                              |    0 
 HDL-ON_iOS/Resources/Phone/VideoIcon/weiqiangji.png                                   |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/Delete.png                          |    0 
 HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/AddMiniRemoteControlDirection1Page.cs        |    4 
 HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/View/Buttons.cs                              |   23 
 HDL_ON/UI/UI0-Stan/Common/CommonClass.cs                                              |  128 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/NormallyOpenIcon2.png                |    0 
 HDL_ON/UI/UI1-Login/RegisterPage.cs                                                   |    1 
 HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/AddControl.cs                                |    4 
 HDL-ON_Android/Assets/Phone/PirIcon/add.png                                           |    0 
 HDL_ON/UI/UI0-Stan/Resourse/HdlControlResourse.cs                                     |    2 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Electrical/TVIcon.png                        |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/DoorLock.png                        |    0 
 HDL_ON/UI/UI2/FuntionControlView/DoorLock/DoorLockPage.cs                             | 1065 ++++
 HDL-ON_Android/Resources/drawable/video_background.png                                |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/Mute.png                             |    0 
 HDL-ON_Android/Assets/Phone/VideoIcon/phone.png                                       |    0 
 HDL_ON/UI/UI0-Stan/Controls/FrameLayoutControls/FrameLayoutStatuControl.cs            |    6 
 HDL_ON/Entity/ResponseEntity/CityInfo.cs                                              |    8 
 HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/AddMiniRemoteControlDirection4Page.cs        |    4 
 HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/Transfer/TransferConfirmPage.cs         |  188 
 HDL-ON_iOS/Info.plist                                                                 |    4 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/CrearPswBackgroud.png                |    0 
 HDL_ON/Common/HDLCommon.cs                                                            |    2 
 HDL_ON/UI/UI2/FuntionControlView/DoorLock/DoorLockHistoryInfoPage.cs                  |  174 
 HDL-ON_iOS/Resources/Phone/PirIcon/2.png                                              |    0 
 HDL-ON_iOS/Resources/Phone/Public/BatteryNot.png                                      |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/UnLockPictrue1.png                  |    0 
 HDL-ON_Android/Assets/Phone/PirIcon/left.png                                          |    0 
 HDL_ON/UI/UI2/2-Classification/FunctionControlZoneBLL.cs                              |    2 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/More.png                             |    0 
 HDL_ON/UI/UI1-Login/LoginPage.cs                                                      |    6 
 HDL-ON_Android/Assets/Phone/PirIcon/icon1.png                                         |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/LockPictrue1.png                     |    0 
 HDL_ON/UI/UI2/3-Intelligence/IntelligencePage.cs                                      |   10 
 HDL-ON_iOS/Resources/Phone/PirIcon/projector.png                                      |    0 
 HDL-ON_iOS/Resources/Phone/PirIcon/icon1.png                                          |    0 
 HDL_ON/UI/UI2/FuntionControlView/ArmSensor/SensorSmokePage.cs                         |    2 
 DLL/EZvizMonitor/Square.OkHttp3.dll                                                   |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/NormallyOpenIcon1.png               |    0 
 HDL-ON_iOS/Resources/Phone/PirIcon/addlbuton.png                                      |    0 
 HDL_ON/UI/UI0-Stan/Controls/BottomControls/BottomTimeSelectControl.cs                 |  159 
 HDL_ON/Entity/Function/Function.cs                                                    |   67 
 HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/AddMiniRemoteControlDirection2Page.cs        |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/DoorLock.png                         |    0 
 HDL_ON/UI/UI2/FuntionControlView/DoorLock/DoorLockListPage.cs                         |  231 
 HDL_ON/DAL/Server/HttpUtil.cs                                                         |    4 
 HDL_ON/UI/UI0-Public/OperationSuccessPromptPage.cs                                    |   15 
 HDL_ON/UI/UI0-Stan/Controls/FrameLayoutControls/FrameRowControl.cs                    |   26 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/UnLockPictrue3.png                   |    0 
 HDL_ON/UI/UI0-Stan/Form/HideOptionSearchAllFile.cs                                    |    4 
 HDL-ON_Android/Assets/Phone/PirIcon/del.png                                           |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/Shard.png                            |    0 
 HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/BrandList.cs                                 |    6 
 HDL_ON/UI/UI0-Stan/Controls/CompoundControls/BatteryPersentControl.cs                 |   52 
 HDL_ON/UI/UI0-Stan/Controls/BaseControl/TextInputBase.cs                              |    2 
 HDL_ON/UI/UI2/4-PersonalCenter/UnlockSetting/AppUnlockSettingsPage.cs                 |   96 
 HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/ResidentialManagePageBLL.cs             |   68 
 HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/LockPictrue1.png                    |    0 
 HDL-ON_iOS/Resources/Phone/VideoIcon/danyuanji.png                                    |    0 
 HDL_ON/UI/UI0-Public/PublicAssmeblyBLL.cs                                             |   18 
 HDL_ON/UI/UI2/1-HomePage/HomePage.cs                                                  |  191 
 HDL_ON/UI/UI2/3-Intelligence/Automation/InpOrOutLogicMethod.cs                        |   34 
 HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EchartsOption_BrokenLine.cs     |  140 
 HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EnvironmentalPage.cs            |   62 
 HDL_ON/UI/UI2/3-Intelligence/Automation/LogicView/TimeView.cs                         |    2 
 HDL-ON_Android/Assets/Phone/PirIcon/tv.png                                            |    0 
 HDL-ON_Android/Assets/Phone/VideoIcon/menjin.png                                      |    0 
 HDL-ON_Android/Resources/drawable/mic.png                                             |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/UnLockManager.png                    |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/Delete.png                           |    0 
 HDL_ON/UI/UI0-Stan/Controls/TextInputControls/TextInputControl.cs                     |    4 
 HDL_ON/UI/UI0-Stan/Form/DeviceFunctionCardCommonForm.cs                               |   71 
 HDL-ON_Android/Assets/Phone/PirIcon/fan.png                                           |    0 
 HDL-ON_Android/Resources/drawable/Loading.png                                         |    0 
 HDL_ON/UI/MainPage.cs                                                                 |    2 
 HDL-ON_Android/Assets/Phone/PirIcon/STB.png                                           |    0 
 HDL_ON/UI/UI0-Stan/Controls/BottomControls/BottomDialogCommon.cs                      |   25 
 HDL_ON/UI/UI2/FuntionControlView/DoorLock/DoorLockSelectTimePage.cs                   |  120 
 HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/History.png                         |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/NormallyOpenIcon3.png                |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TVIcon.png                         |    0 
 HDL-ON_Android/Assets/Phone/PirIcon/4.png                                             |    0 
 HDL_ON/UI/UI2/FuntionControlView/ArmSensor/SensorWaterImmersionPage.cs                |    2 
 HDL-ON_Android/Assets/Phone/Public/BatteryEnough.png                                  |    0 
 HDL_ON/UI/UI0-Stan/Form/Base/EditorCommonForm.cs                                      |   42 
 HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/BindScene.png                       |    0 
 HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/Transfer/TransferInputPage.cs           |  265 
 HDL_ON/UI/UI2/FuntionControlView/Energy/EchartsOption_Energy.cs                       |  150 
 HDL_ON/Entity/FunctionList.cs                                                         |   22 
 HDL-ON_iOS/Resources/Phone/PirIcon/dvd.png                                            |    0 
 HDL_ON/DAL/Server/NewAPI.cs                                                           |   40 
 HDL_ON/UI/UI0-Stan/Controls/BaseControl/ButtonCtrBase.cs                              |   72 
 HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/AddControlComplete.cs                        |   14 
 HDL-ON_Android/Assets/Phone/PirIcon/adddevice.png                                     |    0 
 HDL_ON/Common/R.cs                                                                    |  377 +
 HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/Redistribution.png                   |    0 
 HDL-ON_Android/Resources/drawable/back_icon.png                                       |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/Shard.png                           |    0 
 HDL-ON_iOS/Resources/Phone/PirIcon/succeed.png                                        |    0 
 HDL-ON_Android/Assets/Phone/PirIcon/air.png                                           |    0 
 HDL-ON_iOS/Resources/Phone/PirIcon/delbuton.png                                       |    0 
 HDL-ON_Android/Assets/Phone/PirIcon/1.png                                             |    0 
 HDL-ON_iOS/HDL-ON_iOS.csproj                                                          |   51 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/Screen.png                           |    0 
 HDL_ON/UI/UI2/2-Classification/RoomPage.cs                                            |    2 
 HDL-ON_iOS/Resources/Phone/PirIcon/add.png                                            |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/UnLockPictrue2.png                  |    0 
 HDL-ON_Android/Assets/Phone/PirIcon/search.png                                        |    0 
 HDL_ON/UI/UI2/3-Intelligence/Automation/AddTarget.cs                                  |    2 
 HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs                                               |   53 
 HDL-ON_Android/Assets/Phone/PirIcon/failed.png                                        |    0 
 HDL-ON_Android/Resources/Resource.designer.cs                                         | 2013 +++---
 HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/Transfer/TransferingResidencePage.cs    |  295 +
 HDL-ON_iOS/Resources/Phone/VideoIcon/hangup.png                                       |    0 
 HDL-ON_iOS/Resources/Phone/PirIcon/left.png                                           |    0 
 HDL-ON_Android/Assets/Phone/VideoIcon/keshiduijiang.png                               |    0 
 HDL_ON/UI/UI0-Stan/Controls/BottomControls/BottomMenuSelectControl.cs                 |  150 
 HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/ResidentialManagePage.cs                |  229 
 HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/NormallyOpenIcon2.png               |    0 
 HDL_ON/UI/UI0-Stan/Form/AppGestureSecurityForm.cs                                     |  172 
 HDL_ON/UI/UI2/FuntionControlView/FoolHeating/FloorHeatingPage.cs                      |   13 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/UnLockPictrue2.png                   |    0 
 HDL_ON/DAL/DriverLayer/Control_Udp.cs                                                 |   15 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/LockPictrue2.png                     |    0 
 HDL-ON_Android/Assets/Phone/PirIcon/icon2.png                                         |    0 
 HDL_ON/UI/UI2/FuntionControlView/DoorLock/DoorLockAlwaysOnListPage.cs                 |  398 +
 HDL_ON/UI/UI2/4-PersonalCenter/UnlockSetting/AppUnlockSettingsPageBLL.cs              |   94 
 HDL-ON_iOS/Resources/Phone/PirIcon/1.png                                              |    0 
 HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/EditControl.cs                               |    6 
 HDL-ON_Android/Assets/Phone/PirIcon/offline.png                                       |    0 
 HDL-ON_Android/Assets/Phone/PirIcon/dropdown.png                                      |    0 
 HDL-ON_Android/Resources/drawable/dialog_background.xml                               |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/UnLockManager.png                   |    0 
 HDL-ON_iOS/Resources/Phone/VideoIcon/phone.png                                        |    0 
 HDL-ON_iOS/Resources/Phone/PirIcon/online.png                                         |    0 
 HDL_ON/UI/UI2/UserPage.cs                                                             |    2 
 HDL-ON_iOS/Resources/Phone/PirIcon/custom.png                                         |    0 
 HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/View/PirView.cs                              |    2 
 HDL_ON/UI/UI0-Stan/Controls/BottomControls/BottomItemSelectControl.cs                 |    6 
 HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/LockPictrue2.png                    |    0 
 HDL_ON/UI/UI2/3-Intelligence/Automation/MainView.cs                                   |   72 
 HDL_ON/DAL/Mqtt/MqttInfoConfig.cs                                                     |    3 
 HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaWeepRobotConsumablesMagPage.cs        |    2 
 HDL-ON_Android/Assets/Phone/PirIcon/right.png                                         |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/UnConnect.png                        |    0 
 .vs/HDL_APP_Project/xs/UserPrefs.xml                                                  |   67 
 HDL_ON/DAL/DriverLayer/Control.cs                                                     |  109 
 HDL_ON/UI/UI2/FuntionControlView/ArmSensor/SensorDoorWinwsPage.cs                     |    2 
 HDL_ON/UI/UI0-Stan/Controls/BottomControls/BottomItemEditorControl.cs                 |   35 
 HDL-ON_iOS/Resources/Phone/PirIcon/stb.png                                            |    0 
 HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/AddButton.cs                                 |    6 
 HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaAirCleanerPage.cs                     |    2 
 HDL_ON/DAL/Server/HttpServerRequest.cs                                                |  145 
 HDL_ON/UI/UI2/3-Intelligence/Automation/Weather.cs                                    |    2 
 HDL-ON_Android/Resources/drawable/sure_background_sel.xml                             |    0 
 HDL-ON_Android/Properties/AndroidManifest.xml                                         |    4 
 HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/UnLockPictrue3.png                  |    0 
 HDL-ON_Android/Assets/Phone/VideoIcon/hangup.png                                      |    0 
 HDL_ON/UI/UI2/4-PersonalCenter/UnlockSetting/AppUnlockPasswordPage.cs                 |    2 
 HDL_ON/UI/UI2/FuntionControlView/DoorLock/DoorLockHistoryTypeScreenPage.cs            |  531 ++
 HDL_ON/UI/UI2/3-Intelligence/Automation/ConditionDeviceFunList.cs                     |   44 
 HDL_ON/UI/UI2/FuntionControlView/Electrical/TVPageBLL.cs                              |   21 
 HDL_ON/UI/UI1-Login/ForgetPasswordPage.cs                                             |    1 
 HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/NormallyOpenIcon3.png               |    0 
 HDL_ON/DAL/Mqtt/MqttClient.cs                                                         |   40 
 HDL-ON_Android/HDL-ON_Android.csproj                                                  |  256 
 HDL_ON/UI/UI2/FuntionControlView/FunctionBaseInfoSetPage.cs                           |  144 
 HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/Connect.png                         |    0 
 HDL-ON_Android/Assets/Phone/PirIcon/2.png                                             |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/UnLockPictrue1.png                   |    0 
 HDL_ON/UI/UI2/FuntionControlView/DoorLock/DoorLockExpireTimeSettionPage.cs            |  188 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/NormallyOpenIcon1.png                |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/Voice.png                            |    0 
 HDL_ON/UI/UI2/FuntionControlView/Video/VideoMainView.cs                               |   20 
 HDL-ON_iOS/Resources/Phone/PirIcon/priequipment.png                                   |    0 
 HDL-ON_iOS/Resources/Phone/PirIcon/del.png                                            |    0 
 HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EnvironmentalSensorPage.cs      |   23 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/Connect.png                          |    0 
 HDL_ON/UI/UI2/2-Classification/ClassificationPage.cs                                  |    8 
 HDL-ON_iOS/Resources/Phone/PirIcon/next.png                                           |    0 
 HDL_ON/UI/UI0-Stan/Enum/CommonEnum.cs                                                 |   69 
 HDL-ON_Android/Assets/Phone/PirIcon/succeed.png                                       |    0 
 HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/SetPir.cs                                    |   10 
 HDL-ON_Android/Assets/Phone/VideoIcon/danyuanji.png                                   |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/CrearPswBackgroud.png               |    0 
 HDL-ON_iOS/Resources/Phone/PirIcon/dropdown.png                                       |    0 
 HDL-ON_Android/Assets/Phone/PirIcon/delbuton.png                                      |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/Editor.png                           |    0 
 HDL-ON_Android/Assets/Phone/VideoIcon/weiqiangji.png                                  |    0 
 HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/PirMain.cs                                   |   26 
 HDL_ON/UI/UI2/FuntionControlView/DoorLock/DoorLockUnlockMethordManagerPage.cs         |  713 ++
 HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/Editor.png                          |    0 
 HDL-ON_Android/Assets/Phone/PirIcon/custom.png                                        |    0 
 HDL_ON/DAL/DriverLayer/UdpSocket.cs                                                   |    5 
 HDL_ON/UI/UI0-Stan/Controls/BottomControls/BottomSomeDaySelectControl.cs              |  176 
 HDL-ON_Android/Resources/drawable/screenshot_sel.png                                  |    0 
 HDL-ON_iOS/Resources/Phone/PirIcon/tv.png                                             |    0 
 HDL-ON_Android/Assets/Phone/PirIcon/online.png                                        |    0 
 HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/Matching.cs                                  |  264 -
 HDL_ON/UI/UI2/FuntionControlView/Video/View/ShowDialog.cs                             |    2 
 HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/AddThirdPartyDeviceMenuListPage.cs           |    0 
 HDL_ON/UI/UI2/FuntionControlView/Energy/EnergyMainPage.cs                             |  516 -
 HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/Hide.png                             |    0 
 HDL-ON_Android/Resources/drawable/sure_background_def.xml                             |    0 
 HDL-ON_iOS/Resources/Phone/VideoIcon/menjin.png                                       |    0 
 HDL-ON_Android/Resources/drawable/screenshot_def.png                                  |    0 
 HDL-ON_iOS/Resources/Phone/PirIcon/Infraredtreasure.png                               |    0 
 HDL_ON/UI/UI2/FuntionControlView/ArmSensor/SensorPirPage.cs                           |    2 
 HDL-ON_Android/Assets/Phone/PirIcon/Infraredtreasure.png                              |    0 
 HDL-ON_iOS/Resources/Phone/PirIcon/offline.png                                        |    0 
 HDL_ON/UI/UI0-Stan/Logic/HdlMessageLogic.cs                                           |    5 
 HDL-ON_Android/Application.cs                                                         |    1 
 HDL-ON_Android/Assets/Phone/PirIcon/dvd.png                                           |    0 
 HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/Transfer/TransferUserConfirmPage.cs     |  138 
 HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/AcControlPage.cs                        |    1 
 HDL-ON_Android/Resources/drawable/answer.png                                          |    0 
 HDL-ON_iOS/Resources/Phone/PirIcon/air.png                                            |    0 
 HDL-ON_Android/Resources/drawable/tip_background.xml                                  |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/BindScene.png                        |    0 
 HDL_ON/UI/UI0-Stan/Logic/HdlCommonLogic.cs                                            |  433 +
 HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/Voice.png                           |    0 
 HDL-ON_Android/Assets/Phone/Public/MsgIcon/TipSuccessIcon.png                         |    0 
 HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/AddMiniRemoteControlDirection3Page.cs        |    4 
 HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/Transfer/TransferResidenceResultPage.cs |  108 
 /dev/null                                                                             |  637 --
 HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/Hide.png                            |    0 
 HDL-ON_iOS/Resources/Phone/PirIcon/4.png                                              |    0 
 DLL/EZvizMonitor/Square.OkIO.dll                                                      |    0 
 HDL-ON_iOS/Resources/Phone/PirIcon/fan.png                                            |    0 
 HDL-ON_Android/Assets/Phone/PirIcon/priequipment.png                                  |    0 
 HDL_ON/UI/UI0-Stan/Controls/MessageControls/ShowMsgControl.cs                         |  174 
 HDL_ON/Common/Utlis/FloorRoomSelectPopupView.cs                                       |    3 
 HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/PirSend.cs                                   |    6 
 281 files changed, 10,361 insertions(+), 4,938 deletions(-)

diff --git a/.vs/HDL_APP_Project/xs/UserPrefs.xml b/.vs/HDL_APP_Project/xs/UserPrefs.xml
index 4a69535..de93483 100644
--- a/.vs/HDL_APP_Project/xs/UserPrefs.xml
+++ b/.vs/HDL_APP_Project/xs/UserPrefs.xml
@@ -1,24 +1,61 @@
 锘�<Properties StartupConfiguration="{D998E133-F0DD-4760-BE3C-461632F54DA4}|Default">
-  <MonoDevelop.Ide.ItemProperties.HDL-ON__iOS automaticSigning="False" PreferredExecutionTarget="MonoDevelop.IPhone.IPhoneDeviceTarget.6242be7109c740c6cb8999a8904b6e0ea8d45192" />
-  <MonoDevelop.Ide.Workbench>
+  <MonoDevelop.Ide.ItemProperties.HDL-ON__iOS PreferredExecutionTarget="MonoDevelop.IPhone.IPhoneDeviceTarget.00008020-000404163432002E" />
+  <MonoDevelop.Ide.Workbench ActiveDocument="HDL_ON/Entity/Function/Scene.cs">
     <Files>
-      <File FileName="HDL_ON/DAL/Server/HttpUtil.cs" Line="8" Column="17" IsPinned="True" />
-      <File FileName="HDL_ON/UI/UI2/FuntionControlView/Energy/EnergyMainPage.cs" Line="153" Column="59" />
-      <File FileName="HDL_ON/UI/UI1-Login/LoginPage.cs" />
-      <File FileName="HDL_ON/UI/MainPage.cs" />
-      <File FileName="HDL_ON/Common/HDLCommon.cs" />
-      <File FileName="HDL_ON/DAL/Mqtt/MqttClient.cs" />
-      <File FileName="HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EchartsOption_BrokenLine.cs" />
-      <File FileName="HDL-ON_iOS/Info.plist" />
-      <File FileName="HDL-ON_iOS/Resources/Language.ini" Line="421" Column="19" />
-      <File FileName="HDL_ON/Common/R.cs" Line="118" Column="43" />
-      <File FileName="HDL-ON_Android/Assets/Language.ini" Line="1928" Column="1" />
+      <File FileName="HDL_ON/UI/UI2/FuntionControlView/Electrical/ClothesHangerSetTimePage.cs" Line="40" Column="1" IsPinned="True" />
+      <File FileName="HDL_ON/UI/UI2/3-Intelligence/Scene/SceneAddPage.cs" Line="277" Column="68" />
+      <File FileName="HDL_ON/UI/UI2/4-PersonalCenter/SmartSpeaker/SmartSpeakerRoomListPage.cs" Line="93" Column="73" />
+      <File FileName="HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPage.cs" Line="753" Column="70" />
+      <File FileName="HDL_ON/DAL/Server/HttpServerRequest.cs" Line="2431" Column="16" />
+      <File FileName="HDL_ON/UI/UI2/FuntionControlView/Electrical/ClothesHangerPage.cs" Line="414" Column="1" />
+      <File FileName="HDL_ON/UI/UI2/1-HomePage/HomePage.cs" Line="364" Column="36" />
+      <File FileName="HDL_ON/UI/UI0-Public/PublicAssmebly.cs" Line="746" Column="16" />
+      <File FileName="HDL_ON/UI/UI0-Stan/Controls/BottomControls/BottomTimeSelectControl.cs" Line="111" Column="60" />
+      <File FileName="HDL_ON/UI/UI2/3-Intelligence/Scene/SceneEditPage.cs" Line="292" Column="62" />
+      <File FileName="HDL_ON/UI/UI2/3-Intelligence/Scene/SetSceneFunctionInfoPage.cs" Line="330" Column="87" />
+      <File FileName="HDL_ON/Entity/Function/Scene.cs" Line="349" Column="30" />
     </Files>
     <Pads>
       <Pad Id="ProjectPad">
         <State name="__root__">
           <Node name="HDL_APP_Project" expanded="True">
-            <Node name="HDL-ON_Android" selected="True" />
+            <Node name="HDL_ON" expanded="True">
+              <Node name="Common" expanded="True" />
+              <Node name="DAL" expanded="True">
+                <Node name="DriverLayer" expanded="True" />
+                <Node name="Server" expanded="True" />
+              </Node>
+              <Node name="Entity" expanded="True">
+                <Node name="Function" expanded="True">
+                  <Node name="Scene.cs" selected="True" />
+                </Node>
+              </Node>
+              <Node name="UI" expanded="True">
+                <Node name="UI0-Public" expanded="True" />
+                <Node name="UI0-Stan" expanded="True">
+                  <Node name="Controls" expanded="True">
+                    <Node name="BottomControls" expanded="True" />
+                  </Node>
+                  <Node name="Form" expanded="True">
+                    <Node name="Base" expanded="True" />
+                  </Node>
+                </Node>
+                <Node name="UI1-Login" expanded="True" />
+                <Node name="UI2" expanded="True">
+                  <Node name="1-HomePage" expanded="True" />
+                  <Node name="3-Intelligence" expanded="True">
+                    <Node name="Scene" expanded="True" />
+                  </Node>
+                  <Node name="FuntionControlView" expanded="True">
+                    <Node name="1ContorlPage" expanded="True" />
+                    <Node name="Electrical" expanded="True" />
+                    <Node name="Energy" expanded="True" />
+                  </Node>
+                </Node>
+              </Node>
+            </Node>
+            <Node name="HDL-ON_Android" expanded="True" />
+            <Node name="HDL-ON_iOS" expanded="True" />
           </Node>
         </State>
       </Pad>
@@ -31,12 +68,10 @@
     <String>Shared.IOS/Shared.IOS.csproj</String>
   </DisabledProjects>
   <MonoDevelop.Ide.Workspace ActiveConfiguration="Debug|iPhone" />
-  <MonoDevelop.Ide.ItemProperties.HDL-ON__Android PreferredExecutionTarget="Android.SelectDevice" />
   <MonoDevelop.Ide.DebuggingService.Breakpoints>
     <BreakpointStore>
       <Breakpoint file="/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/Method.cs" relfile="HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/Method.cs" line="34" column="1" />
       <Breakpoint file="/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/AcControlPage.cs" relfile="HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/AcControlPage.cs" line="313" column="1" />
-      <Breakpoint file="/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/BindingResidence/BindingResidencePage.cs" relfile="HDL_ON/UI/BindingResidence/BindingResidencePage.cs" line="121" column="1" />
     </BreakpointStore>
   </MonoDevelop.Ide.DebuggingService.Breakpoints>
   <MultiItemStartupConfigurations />
diff --git a/DLL/EZvizMonitor/Square.OkHttp3.dll b/DLL/EZvizMonitor/Square.OkHttp3.dll
old mode 100755
new mode 100644
Binary files differ
diff --git a/DLL/EZvizMonitor/Square.OkIO.dll b/DLL/EZvizMonitor/Square.OkIO.dll
old mode 100755
new mode 100644
Binary files differ
diff --git a/DLL/IOS/Shared.IOS.JLCountryCode.dll b/DLL/IOS/Shared.IOS.JLCountryCode.dll
index 80ddf8b..064a922 100644
--- a/DLL/IOS/Shared.IOS.JLCountryCode.dll
+++ b/DLL/IOS/Shared.IOS.JLCountryCode.dll
Binary files differ
diff --git a/HDL-ON_Android/Application.cs b/HDL-ON_Android/Application.cs
index f1dd0ad..d9d098f 100644
--- a/HDL-ON_Android/Application.cs
+++ b/HDL-ON_Android/Application.cs
@@ -104,7 +104,6 @@
                 {
                     Language.CurrentLanguage = "English";
                 }
-
                 //鑾峰彇鏋佸厜鎺ㄩ�両D
                 GetJPushRegistrationID(activity);
 
diff --git a/HDL-ON_Android/Assets/Language.ini b/HDL-ON_Android/Assets/Language.ini
index 61be5a1..c3ba37f 100644
--- a/HDL-ON_Android/Assets/Language.ini
+++ b/HDL-ON_Android/Assets/Language.ini
@@ -70,14 +70,14 @@
 69=All
 70=Curtain
 71=Name
-72=Address
+72=The address of the residence
 73=Floor Management
 74=Room Management
-75=Administrator migration
+75=Admin Migration
 76=Privilege Migration
 77=Debugging privilege
 78=The administrator is migrated to other user.
-79=All of the data for the residence is migrated to new user.
+79=All residence data are migrated to new user.
 80=Allow the staff to visit your home remotely
 81=Floor
 82=Add floor
@@ -188,8 +188,8 @@
 187=Fan
 188=Socket
 189=Level
-190=Chl
-191=Vol
+190=Channel
+191=Volume
 192=TV
 193=The room has existed, fail to change.
 194=Environment
@@ -382,7 +382,6 @@
 378=Transition time
 379=Transition speed
 380=This function is not available!
-381=Reload
 400=Welcome home
 401=Invalid barcode, please try again
 402=Try again
@@ -412,6 +411,8 @@
 426=Air dry time
 427=Disinfect time
 428=Anion Time
+429=Real time power consumption: {0}kw
+
 429=H
 430=Min
 431=You are currently adding any platform devices to
@@ -422,7 +423,7 @@
 436=Added Devices
 437=Device List
 438=humidity:{0}%    air:{1}    wind:{2}
-439=Real time: {0} kw
+439=Real time power consumption: {0} kw
 440=Next step
 441=Please select all areas of capture status
 442=Generate Scene
@@ -439,25 +440,7 @@
 453=Alarm mute
 454=Deployment information
 455=The name can not be blank.
-456=Canvas
-457=Energy consumption
-458=Date
-459=Real time energy consumption
-460=Energy consumption of this month
-461=Outdoor/Indoor
-462=You haven't added any devices yet
-'
-463=Please input the SN code of the device
-464=Can start using Zhaoguan millimeter wave
-465=Delete device
-466=STB
-467=Projector
-468=Someone fell
-469=Someone's in
-'
-470=Under protection
-471=Millimeter wave sensor
- 
+
 1000=Room Humidity
 1001=V-chip
 1002=Anion
@@ -546,31 +529,79 @@
 1084=1st Gear
 1085=2nd Gear
 1086=3rd Gear
- 
- 
- 
- 
- 
-4000=Video intercom
-4001=Call record
-4002=*Cloud photos are only kept for 30 days
-4003=Door phone call
-4004=Answered
-4005=Unlocked
-4006=year
-4007=From
-4008=Call
-4009=Unlocked
-4010=Missed
-4011=Rejected
-4012=The configuration parameters are abnormal!
-4013=Access Control QR Code
-4014=Temporary password
- 
- 
- 
- 
- 
+1087=Unlock
+1088=Temp. Password
+1089=Connected
+1090=Disconnected
+1091=Generate
+1092=Effective time
+1093=Expire time
+1094=Select time
+1095=Select Date
+1096=Generate
+1097=Temporary password has been copied
+1098=Clear Password?
+1099=The expire time must be later than the effective time
+1100=Unlock Method
+1101=It'll synchronize with actual lock, confirm to delete?
+1102=Delete
+1103=Remark
+1104=The remark can not be blank.
+1105=Assign to
+1106=Target Scene Not Exist
+1107=Select Scene
+1108=Unlock
+1109=Always On
+1110=Setting
+1111=Automation
+1112=Turn on "Always On" Mode
+1113=Turn off "Always On" Mode
+1114=Edit
+1115=Always On will be off at {0}
+1116=Condition
+1117=Motion
+1118=Always On
+1119=Lock
+1120=User
+1121=Unlock Method
+1122=Fingerprint
+1123=Card
+1124=Key
+1125=Information
+1126=Unlock
+1127=Alarm
+1128=Offline
+1129=For first user, Please bind lock password
+1130=Please enter admin password
+1131=Bind Successfully
+1132=Skip to personal password for unlock
+1133=Skip
+1134=Please draw your pattern
+1135=Lock will be always on after setting, confirm to proceed
+1136=Confirm
+1137=Expire
+1138=Always On will expire after {0} hours
+1139=Please enter expire time
+1140=Expire time should not be more than 72 hours
+1141=Expire time should not be less than 1 hour
+1142=Fail to set, please try again
+1143=Fail to verify administrator ID, please log in again account
+1144=Your residence is being migrated to other HDL 
+1145=Note:
+1146=1. All of your residence data will be migrate to new user.{0}2. After migration, original member will be{0}automatically unbound from this residence.{0}3. The new account is a valid HDL one.{0}4. The account from receiver cannot be the same{0}as that from migration side.
+1147=Confirm
+1148=Input receiver's account
+1149=Profile
+1150=Confirm admin migration from {0} to {1}
+1151=The account does not exist.
+1152=Fail to Transfer Ownership to Yourself
+1153=Terminate
+1154=Transferring to User, Please Wait鈥�
+1155={0} has become a residential administrator
+1156=The residence data will be deleted from your account
+1157=Fail to transfer
+1158=Please try again
+
 5000=Music
 5001=Group
 5002=Setting
@@ -619,148 +650,8 @@
 5045=General volume
 5046=Adjust volume
 5047="QQ music" has not installed in your cell phone, please proceed in App center.
- 
-6000=normal
-6001=Device status
-6002=pcs
-6003=Current IR control device
-6004=Remote controller has been added
-6005=AC
-6006=TV
-6007=Fan
-6008=Set-top box
-6009=DVD
-6010=Projector
-6011=Custom
-6012=IR control
-6013=Device Management
-6014=Add remote controller
-6015=Online
-6016=Offline
-6017=Version number
-6018=Please enter the name of the remote controller
-6019=Reminder: After the remote controller is created, it can be found and used in Function-Electrical Category{\r\n}
-6020=Recommended button
-6021=Please enter the button name
-6022=Next
-6023=Power
-6024=Volume+
-6025=Volume-
-6026=channel+
-6027=Channel-
-6028=up
-6029=down
-6030=Left
-6031=right
-6032=Mute
-6034=Confirm
-6035=Play
-6037=Exit
-6038=Menu
-6039=Pause
-6040=Back
-6041=Stop
-6042=Homepage
-6043=Fast forward
-6044=Rewind
-6045=Timing
-6046=Copy remote control function
-6047=Aim at the center of the remote controller and press the same button
-6048=Smart remote controller
-6049=Add button
-6050=*Long press for custom sorting
-6051=Done
-6052=Added successfully
-6053=Can be classified-function-electrical operation and use
-6054=Classification
-6055=Remote controller name
-6056=Region
-6057=Continue to add
-6058=Electrical
-6059=Failed to add
-6060=Retry
-6061=Match the remote control
-6062=Please click the button below
-6063=Confirm whether the device is responding
-6064=Control failed
-6065=Control success
-6066=Power on
-6067=Mode cooling
-6068=Wind speed stroke
-6069=Temperature 26鈩�
-6070=Delete device
-6071=Modify name
-6072=Confirm deletion
-6073=Cancel
-6074=The remote controller cannot exceed 10 pcs
-6075=The area where the remote control belongs:
-6076=Edit information
-6077=Version upgrade
-6078=System is under maintenance~Please try again later~
-6079=Failed to get data
-6080=This function is temporarily not supported
-6081=Select IR brand
-6082=Shaking
-6083=Low speed
-6084=Medium speed
-6085=High speed
-6086=Auto
-6087=Temperature+
-6088=Temperature-
-6089=Air purifier
-6090=Water heater
-6091=Product that does not exist
-6092=The device does not exist
-6093=The device is not online
-6094=The gateway device does not exist
- 
- 
-7108=Leak/No Leak
-7109=Leak
-7110=No leak
-7111=Water leaking/no water leaking
-7112=Water leaking
-7113=No water leaking
-7114=Someone/Nobody
-7115=Someone
-7116=Nobody
-7117=Open/Close
-7118=On
-7119=Close
-7120=Anti-dismantling function
-7121=Online
-7122=Not online
-7123=Air quality
-7124=Excellent
-7125=Good
-7126=Poor
-7127=Send notification
-7128=Notification content
-7129=(within 100 characters)
-7130=Account selection
-7131=App push
-7132=Automation
-7133=Executed
- 
- 
-6000=Rename
-6001=Please enter a name
-6002=Xiaodu
-6003=aispeech
-6004="Unbind requires a third-party APP for operation", "transfer to a third-party APP"
-6005=Unbind
-6006=Smart speaker
-6007=Control content
-6008=Failed to upload data
-6009=Failed to configure data
-6010="There is no speaker yet,", "Please go to the third-party APP to bind the smart speaker."
-6011=Modification of remarks is unsuccessful!
-6012=Do you want to unbind?
-6013=Unbinding...
-6014=transfer to third-party APP
-6015=Add speakers
- 
-    
+	
+	
 7000=Create automation
 7001=Edit automation
 7002=If
@@ -869,7 +760,7 @@
 7105=Light pollution: 75 ~ 115ug/m3
 7106=Moderate pollution: 115 ~ 150ug/m3
 7107=Heavy pollution: > 150ug/m3
-    
+	
 9000=Please sign in with new cell phone number.
 9001=Please sign in with new email address.
 9002=New cell phone number is revised.
@@ -940,7 +831,7 @@
 9066=Remarks
 9067=Remarks cannot be blank.
 9068=Do you want to unbind?
-    
+	
 10000=Invalid password, please log in again.
 10001=Fail to request server, please try again later.
 10002=System maintaining, please try again later.
@@ -975,9 +866,9 @@
 10031=The device should not be blank.
 10032=The user does not have permission.
 10033=The device does not exist.
- 
- 
- 
+
+
+
 [Chinese]
 1=鐧诲綍
 2=鎵嬫満鍙风櫥褰�
@@ -1369,7 +1260,7 @@
 406=浼氬
 407=闃呰
 408=纭娣诲姞
- 
+
 409=鍔熻兘鍝佺墝
 410=浣犲綋鍓嶈繕鏈坊鍔犱换浣曞钩鍙拌澶�
 411=鍏朵粬骞冲彴璁惧鍧囩敱绗笁鏂规湇鍔″晢鎻愪緵鏀寔
@@ -1417,24 +1308,8 @@
 453=鎶ヨ闈欓煶
 454=甯冮槻淇℃伅
 455=鍚嶇О涓嶈兘涓虹┖銆�
-456=鐢诲竷
-457=鑳借��
-458=鏃ユ湡
-459=瀹炴椂鑳借��
-460=鏈湀鑳借��
-461=瀹ゅ/瀹ゅ唴
-462=鎮ㄥ綋鍓嶈繕鏈坊鍔犱换浣曡澶�
-463=璇疯緭鍏ヨ澶囨満涓婄殑sn鐮�
-464=鍙互寮�濮嬩娇鐢ㄥ厗瑙傛绫虫尝浜�
-465=鍒犻櫎璁惧
-466=鏈洪《鐩�
-467=鎶曞奖浠�
-468=鏈変汉璺屽��
-469=鏈変汉杩涘叆
-470=闃叉姢涓�
-471=姣背娉紶鎰熷櫒
- 
- 
+
+
 1000=瀹ゅ唴婀垮害
 1001=绔ラ攣
 1002=璐熺瀛�
@@ -1522,8 +1397,86 @@
 1084=椋庨��1妗�
 1085=椋庨��2妗�
 1086=椋庨��3妗�
- 
- 
+1087=涓�閿紑閿�
+1087=Unlock
+1088=涓存椂瀵嗙爜寮�閿�
+1088=Temp. Password
+1089=宸茶繛鎺�
+1089=Connected
+1090=鏈繛鎺�
+1090=Disconnected
+1091=鐢熸垚涓存椂瀵嗙爜
+1091=Generate
+1092=鐢熸晥鏃堕棿
+1092=Effective time
+1093=澶辨晥鏃堕棿
+1093=
+1094=閫夋嫨鏃堕棿
+1095=閫夋嫨鏃ユ湡
+1096=Generate
+1097=涓存椂瀵嗙爜宸茬粡澶嶅埗
+1098=娓呴櫎褰撳墠涓存椂瀵嗙爜锛�
+1099=鐢熸晥鏃堕棿蹇呴』澶т簬澶辨晥鏃堕棿
+1100=寮�閿佹柟寮忕鐞�
+1101=鍒犻櫎鎿嶄綔灏嗚鍚屾浜庡疄浣撻攣涓妠0}鏄惁杩橀渶瑕佸垹闄わ紵
+1102=纭鍒犻櫎
+1103=淇敼澶囨敞鍚嶇О
+1104=澶囨敞鍚嶇О涓嶈兘涓虹┖
+1105=鍒嗛厤鑷�
+1106=妫�娴嬩笉鍒板彲渚涢�夋嫨鐨勫満鏅�
+1107=閫夋嫨鍦烘櫙
+1108=閿佸凡鎵撳紑
+1109=甯稿紑
+1110=鏃舵晥鎬у父寮�璁剧疆
+1111=甯稿紑鑷姩鍖�
+1112=鎵撳紑甯稿紑妯″紡
+1113=鍏抽棴甯稿紑妯″紡
+1114=缂栬緫
+1115=甯稿紑妯″紡灏嗕簬{0}鍏抽棴
+1116=鏉′欢
+1117=鍔ㄤ綔
+1118=甯稿紑妯″紡
+1119=閿�
+1120=鐢ㄦ埛
+1121=寮�閿佹柟寮�
+1122=鎸囩汗
+1123=鍗�
+1124=閽ュ寵
+1125=淇℃伅绫诲瀷
+1126=寮�閿佷俊鎭�
+1127=鎶ヨ绫讳俊鎭�
+1128=璁惧涓嶅湪绾�
+1129=绗竴娆′娇鐢紝璇峰厛缁戝畾闂ㄩ攣瀵嗙爜
+1130=璇疯緭鍏ラ棬閿佺鐞嗗憳瀵嗙爜
+1131=闂ㄩ攣缁戝畾鎴愬姛
+1132=涓轰簡瀹夊叏锛岃璺宠浆鑷充釜浜轰腑蹇儃0}璁剧疆涓汉瀵嗙爜锛屽苟搴旂敤浜庨棬閿佸紑閿�
+1133=璺宠浆
+1134=璇风粯鍒跺浘妗�
+1135=璁剧疆甯稿紑妯″紡鍚巤0}鎮ㄧ殑闂ㄩ攣灏嗗浜庢墦寮�鐘舵�亄0}鏄惁缁х画寮�鍚�
+1136=纭寮�鍚�
+1137=澶辨晥璁剧疆
+1138=甯稿紑妯″紡灏嗕簬{0}灏忔椂鍚庡け鏁�
+1139=璇疯緭鍏ュけ鏁堟椂闂�
+1140=澶辨晥鏃堕棿涓嶈兘澶т簬72灏忔椂
+1141=澶辨晥鏃堕棿涓嶈兘灏忎簬1灏忔椂
+1142=甯稿紑妯″紡鍏抽棴璁剧疆澶辨晥锛岃閲嶈瘯
+1143=绠$悊鍛樿韩浠介獙璇佸け璐�,璇烽噸鏂扮櫥褰�
+1144=鎮ㄧ殑浣忓畢灏嗚繃鎴风粰鍏朵粬HDL璐﹀彿
+1145=璇锋敞鎰忥細
+1146=1.璇ヤ綇瀹呮偍鐨勬暟鎹紙浜戠鏁版嵁锛夊皢鍏ㄩ儴杞Щ缁欐柊鐨勬埛涓粄0}2.杩囨埛鍚庯紝鍘熸湁鐨勬垚鍛樺皢鑷姩瑙g粦璇ヤ綇瀹厈0}3.鏂版埛涓昏处鍙蜂负鏈夋晥鐨凥DL璐﹀彿{0}4.鎺ユ敹鏂硅处鍙蜂笌杞Щ鏂硅处鍙蜂笉鍙负鍚屼竴涓处鍙�
+1147=纭杩囨埛
+1148=璇疯緭鍏ユ帴鏀舵柟璐﹀彿
+1149=涓汉璧勬枡
+1150=纭杩囨埛{0}鐨勭鐞嗗憳璐﹀彿缁欒处鍙穥1}
+1151=鐩爣璐﹀彿骞朵笉瀛樺湪
+1152=涓嶈兘鑷繁杩囨埛缁欒嚜宸�
+1153=缁堟
+1154=姝e湪杩囨埛缁欑敤鎴�,璇风◢鍚�...
+1155=鐢ㄦ埛{0}宸茬粡鎴愪负浣忓畢琛岀鐞嗗憳
+1156=璇ヤ綇瀹呯殑淇℃伅灏嗗湪鎮ㄧ殑璐﹀彿涓垹闄�
+1157=杩囨埛澶辫触
+1158=璇烽噸鏂板皾璇�
+
 4000=鍙瀵硅
 4001=閫氳瘽璁板綍
 4002=*浜戠鐓х墖鍙繚鐣�30澶�
@@ -1539,7 +1492,7 @@
 4012=閰嶇疆鍙傛暟鏈夊紓甯�!
 4013=闂ㄧ浜岀淮鐮�
 4014=涓存椂瀵嗙爜
- 
+
 5000=闊充箰
 5001=缁勫悎
 5002=璁剧疆
@@ -1588,8 +1541,8 @@
 5045=鎬婚煶閲�
 5046=璋冭妭闊抽噺
 5047=浣犳墜鏈烘殏鏈畨瑁�"QQ闊充箰"{\r\n}璇峰墠寰�鎵嬫満鍟嗗満瀹夎
- 
- 
+
+
 6000=姝e父
 6001=璁惧鐘舵��
 6002=涓�
@@ -1599,7 +1552,7 @@
 6006=鐢佃
 6007=椋庢墖
 6008=鏈洪《鐩�
-6009=DVD
+6009=DVD/EVD/VCD
 6010=鎶曞奖浠�
 6011=鑷畾涔�
 6012=绾㈠閬ユ帶
@@ -1669,23 +1622,7 @@
 6078=绯荤粺缁存姢涓瓇璇风◢鍚庡啀璇晘
 6079=鑾峰彇鏁版嵁澶辫触
 6080=鏆傛椂涓嶆敮鎸佽鍔熻兘
-6081=閫夋嫨绾㈠鍝佺墝
-6082=鎽囧ご
-6083=浣庨��
-6084=涓��
-6085=楂橀��
-6086=鑷姩
-6087=娓╁害+
-6088=娓╁害-
-6089=绌烘皵鍑�鍖栧櫒
-6090=鐑按鍣�
-6091=涓嶅瓨鍦ㄧ殑浜у搧
-6092=璁惧涓嶅瓨鍦�
-6093=璁惧涓嶅湪绾�
-6094=缃戝叧璁惧涓嶅瓨鍦�
- 
- 
- 
+
 7000=鏂板缓鑷姩鍖�
 7001=缂栬緫鑷姩鍖�
 7002=濡傛灉
@@ -1820,7 +1757,7 @@
 7131=App鎺ㄩ��
 7132=鑷姩鍖�
 7133=宸叉墽琛�
- 
+
 9000=璇蜂娇鐢ㄦ柊鐨勬墜鏈鸿处鍙风櫥褰旳PP
 9001=璇蜂娇鐢ㄦ柊鐨勯偖绠辫处鍙风櫥褰旳PP
 9002=鐧诲綍鎵嬫満淇敼瀹屾垚
@@ -1890,7 +1827,7 @@
 9066=澶囨敞
 9067=澶囨敞涓嶈兘涓虹┖
 9068=鏄惁瑙i櫎缁戝畾锛�
- 
+
 10000=鏃犳晥鐧诲綍瀵嗛挜锛岃閲嶆柊鐧诲綍锛�
 10001=璇锋眰鏈嶅姟鍣ㄥけ璐ワ紝璇风◢鍚庡啀璇曪紒
 10002=绯荤粺缁存姢涓�,璇风◢鍚庡啀璇�!
@@ -1924,4 +1861,4 @@
 10030=娌℃湁杩滅▼鎺у埗鏉冮檺
 10031=璁惧涓嶈兘涓虹┖
 10032=鐢ㄦ埛娌℃湁璁惧鐨勬潈闄�
-10033=璁惧涓嶅瓨鍦�
+10033=璁惧涓嶅瓨鍦�
\ No newline at end of file
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/ArmSensor/SomeoneFellBgIcon.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/ArmSensor/SomeoneFellBgIcon.png
deleted file mode 100644
index 3699b13..0000000
--- a/HDL-ON_Android/Assets/Phone/FunctionIcon/ArmSensor/SomeoneFellBgIcon.png
+++ /dev/null
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/ArmSensor/SomeoneInBgIcon.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/ArmSensor/SomeoneInBgIcon.png
deleted file mode 100644
index 24336d8..0000000
--- a/HDL-ON_Android/Assets/Phone/FunctionIcon/ArmSensor/SomeoneInBgIcon.png
+++ /dev/null
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/ArmSensor/UnderProtectionBgIcon.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/ArmSensor/UnderProtectionBgIcon.png
deleted file mode 100644
index bede756..0000000
--- a/HDL-ON_Android/Assets/Phone/FunctionIcon/ArmSensor/UnderProtectionBgIcon.png
+++ /dev/null
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/BindScene.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/BindScene.png
new file mode 100644
index 0000000..73984f3
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/BindScene.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/Connect.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/Connect.png
new file mode 100644
index 0000000..c997b80
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/Connect.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/CrearPswBackgroud.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/CrearPswBackgroud.png
new file mode 100644
index 0000000..89acd31
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/CrearPswBackgroud.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/Delete.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/Delete.png
new file mode 100644
index 0000000..54feadf
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/Delete.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/DoorLock.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/DoorLock.png
new file mode 100644
index 0000000..fb3ce93
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/DoorLock.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/Editor.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/Editor.png
new file mode 100644
index 0000000..40b7bf2
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/Editor.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/Hide.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/Hide.png
new file mode 100644
index 0000000..da7c1ff
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/Hide.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/History.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/History.png
new file mode 100644
index 0000000..7609540
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/History.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/LockPictrue1.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/LockPictrue1.png
new file mode 100644
index 0000000..432dd20
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/LockPictrue1.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/LockPictrue2.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/LockPictrue2.png
new file mode 100644
index 0000000..1318d0a
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/LockPictrue2.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/More.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/More.png
new file mode 100644
index 0000000..f594679
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/More.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/Mute.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/Mute.png
new file mode 100644
index 0000000..99b6161
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/Mute.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/NormallyOpenIcon1.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/NormallyOpenIcon1.png
new file mode 100644
index 0000000..1a57f38
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/NormallyOpenIcon1.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/NormallyOpenIcon2.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/NormallyOpenIcon2.png
new file mode 100644
index 0000000..cc2772b
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/NormallyOpenIcon2.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/NormallyOpenIcon3.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/NormallyOpenIcon3.png
new file mode 100644
index 0000000..468f743
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/NormallyOpenIcon3.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/Redistribution.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/Redistribution.png
new file mode 100644
index 0000000..8d41a7f
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/Redistribution.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/Screen.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/Screen.png
new file mode 100644
index 0000000..8f157cd
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/Screen.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/Shard.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/Shard.png
new file mode 100644
index 0000000..acf5640
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/Shard.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/UnConnect.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/UnConnect.png
new file mode 100644
index 0000000..15fbdd4
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/UnConnect.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/UnLockManager.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/UnLockManager.png
new file mode 100644
index 0000000..ccdfed2
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/UnLockManager.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/UnLockPictrue1.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/UnLockPictrue1.png
new file mode 100644
index 0000000..31166b8
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/UnLockPictrue1.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/UnLockPictrue2.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/UnLockPictrue2.png
new file mode 100644
index 0000000..4aa4888
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/UnLockPictrue2.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/UnLockPictrue3.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/UnLockPictrue3.png
new file mode 100644
index 0000000..34d16f9
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/UnLockPictrue3.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/Voice.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/Voice.png
new file mode 100644
index 0000000..b7f4449
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/DoorLock/Voice.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Electrical/TV/TVOkIconDown.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Electrical/TV/TVOkIconDown.png
deleted file mode 100644
index 9151722..0000000
--- a/HDL-ON_Android/Assets/Phone/FunctionIcon/Electrical/TV/TVOkIconDown.png
+++ /dev/null
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Electrical/TV/TVOkIconLeft.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Electrical/TV/TVOkIconLeft.png
deleted file mode 100644
index a9f21af..0000000
--- a/HDL-ON_Android/Assets/Phone/FunctionIcon/Electrical/TV/TVOkIconLeft.png
+++ /dev/null
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Electrical/TV/TVOkIconOk.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Electrical/TV/TVOkIconOk.png
deleted file mode 100644
index 9588e99..0000000
--- a/HDL-ON_Android/Assets/Phone/FunctionIcon/Electrical/TV/TVOkIconOk.png
+++ /dev/null
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Electrical/TV/TVOkIconRight.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Electrical/TV/TVOkIconRight.png
deleted file mode 100644
index 3765d0f..0000000
--- a/HDL-ON_Android/Assets/Phone/FunctionIcon/Electrical/TV/TVOkIconRight.png
+++ /dev/null
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Electrical/TV/TVOkIconUp.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Electrical/TV/TVOkIconUp.png
deleted file mode 100644
index 87a0271..0000000
--- a/HDL-ON_Android/Assets/Phone/FunctionIcon/Electrical/TV/TVOkIconUp.png
+++ /dev/null
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Electrical/TVIcon.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Electrical/TVIcon.png
new file mode 100644
index 0000000..95e01fc
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Electrical/TVIcon.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Energy/EnergyDrodUpIcon.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Energy/EnergyDrodUpIcon.png
deleted file mode 100644
index 4b9600b..0000000
--- a/HDL-ON_Android/Assets/Phone/FunctionIcon/Energy/EnergyDrodUpIcon.png
+++ /dev/null
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/irpjt_blue.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/irpjt_blue.png
deleted file mode 100644
index 6e39148..0000000
--- a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/irpjt_blue.png
+++ /dev/null
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/irpjt_white.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/irpjt_white.png
deleted file mode 100644
index 5288530..0000000
--- a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/irpjt_white.png
+++ /dev/null
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/irstb_blue.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/irstb_blue.png
deleted file mode 100644
index 5a6e245..0000000
--- a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/irstb_blue.png
+++ /dev/null
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/irstb_white.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/irstb_white.png
deleted file mode 100644
index 89b618a..0000000
--- a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/irstb_white.png
+++ /dev/null
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/irtvxm_blue.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/irtvxm_blue.png
deleted file mode 100644
index d28c4af..0000000
--- a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/irtvxm_blue.png
+++ /dev/null
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/irtvxm_white.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/irtvxm_white.png
deleted file mode 100644
index 1f42e9f..0000000
--- a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/irtvxm_white.png
+++ /dev/null
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/irpjt.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/irpjt.png
deleted file mode 100644
index ebdac1d..0000000
--- a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/irpjt.png
+++ /dev/null
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/irstb.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/irstb.png
deleted file mode 100644
index cbd39d5..0000000
--- a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/irstb.png
+++ /dev/null
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/irtvxm.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/irtvxm.png
deleted file mode 100644
index 7f9045f..0000000
--- a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/irtvxm.png
+++ /dev/null
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/sensormegahealth.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/sensormegahealth.png
deleted file mode 100644
index 958cf71..0000000
--- a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/sensormegahealth.png
+++ /dev/null
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/PersonalCenter/AddDevice/SenesorMegahealthBg.png b/HDL-ON_Android/Assets/Phone/PersonalCenter/AddDevice/SenesorMegahealthBg.png
deleted file mode 100644
index ad3b018..0000000
--- a/HDL-ON_Android/Assets/Phone/PersonalCenter/AddDevice/SenesorMegahealthBg.png
+++ /dev/null
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/PirIcon/1.png b/HDL-ON_Android/Assets/Phone/PirIcon/1.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/PirIcon/2.png b/HDL-ON_Android/Assets/Phone/PirIcon/2.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/PirIcon/3.png b/HDL-ON_Android/Assets/Phone/PirIcon/3.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/PirIcon/4.png b/HDL-ON_Android/Assets/Phone/PirIcon/4.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/PirIcon/Infraredtreasure.png b/HDL-ON_Android/Assets/Phone/PirIcon/Infraredtreasure.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/PirIcon/STB.png b/HDL-ON_Android/Assets/Phone/PirIcon/STB.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/PirIcon/add.png b/HDL-ON_Android/Assets/Phone/PirIcon/add.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/PirIcon/adddevice.png b/HDL-ON_Android/Assets/Phone/PirIcon/adddevice.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/PirIcon/addlbuton.png b/HDL-ON_Android/Assets/Phone/PirIcon/addlbuton.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/PirIcon/air.png b/HDL-ON_Android/Assets/Phone/PirIcon/air.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/PirIcon/custom.png b/HDL-ON_Android/Assets/Phone/PirIcon/custom.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/PirIcon/del.png b/HDL-ON_Android/Assets/Phone/PirIcon/del.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/PirIcon/delbuton.png b/HDL-ON_Android/Assets/Phone/PirIcon/delbuton.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/PirIcon/dropdown.png b/HDL-ON_Android/Assets/Phone/PirIcon/dropdown.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/PirIcon/dvd.png b/HDL-ON_Android/Assets/Phone/PirIcon/dvd.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/PirIcon/failed.png b/HDL-ON_Android/Assets/Phone/PirIcon/failed.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/PirIcon/fan.png b/HDL-ON_Android/Assets/Phone/PirIcon/fan.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/PirIcon/icon1.png b/HDL-ON_Android/Assets/Phone/PirIcon/icon1.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/PirIcon/icon2.png b/HDL-ON_Android/Assets/Phone/PirIcon/icon2.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/PirIcon/left.png b/HDL-ON_Android/Assets/Phone/PirIcon/left.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/PirIcon/next.png b/HDL-ON_Android/Assets/Phone/PirIcon/next.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/PirIcon/offline.png b/HDL-ON_Android/Assets/Phone/PirIcon/offline.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/PirIcon/online.png b/HDL-ON_Android/Assets/Phone/PirIcon/online.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/PirIcon/priequipment.png b/HDL-ON_Android/Assets/Phone/PirIcon/priequipment.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/PirIcon/projector.png b/HDL-ON_Android/Assets/Phone/PirIcon/projector.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/PirIcon/right.png b/HDL-ON_Android/Assets/Phone/PirIcon/right.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/PirIcon/search.png b/HDL-ON_Android/Assets/Phone/PirIcon/search.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/PirIcon/succeed.png b/HDL-ON_Android/Assets/Phone/PirIcon/succeed.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/PirIcon/tv.png b/HDL-ON_Android/Assets/Phone/PirIcon/tv.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Electrical/WeepRobot/Battery.png b/HDL-ON_Android/Assets/Phone/Public/BatteryEnough.png
similarity index 100%
rename from HDL-ON_Android/Assets/Phone/FunctionIcon/Electrical/WeepRobot/Battery.png
rename to HDL-ON_Android/Assets/Phone/Public/BatteryEnough.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/Public/BatteryNot.png b/HDL-ON_Android/Assets/Phone/Public/BatteryNot.png
new file mode 100644
index 0000000..65a7b71
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/Public/BatteryNot.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/Public/MsgIcon/TipSuccessIcon.png b/HDL-ON_Android/Assets/Phone/Public/MsgIcon/TipSuccessIcon.png
new file mode 100644
index 0000000..07377e9
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/Public/MsgIcon/TipSuccessIcon.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/Public/Scan.png b/HDL-ON_Android/Assets/Phone/Public/Scan.png
deleted file mode 100644
index 1859bcc..0000000
--- a/HDL-ON_Android/Assets/Phone/Public/Scan.png
+++ /dev/null
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/VideoIcon/answer.png b/HDL-ON_Android/Assets/Phone/VideoIcon/answer.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/VideoIcon/danyuanji.png b/HDL-ON_Android/Assets/Phone/VideoIcon/danyuanji.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/VideoIcon/hangup.png b/HDL-ON_Android/Assets/Phone/VideoIcon/hangup.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/VideoIcon/keshiduijiang.png b/HDL-ON_Android/Assets/Phone/VideoIcon/keshiduijiang.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/VideoIcon/menjin.png b/HDL-ON_Android/Assets/Phone/VideoIcon/menjin.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/VideoIcon/phone.png b/HDL-ON_Android/Assets/Phone/VideoIcon/phone.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/VideoIcon/weiqiangji.png b/HDL-ON_Android/Assets/Phone/VideoIcon/weiqiangji.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_Android/HDL-ON_Android.csproj b/HDL-ON_Android/HDL-ON_Android.csproj
index 3140d0e..f89849c 100644
--- a/HDL-ON_Android/HDL-ON_Android.csproj
+++ b/HDL-ON_Android/HDL-ON_Android.csproj
@@ -33,7 +33,7 @@
     <DefineConstants>DEBUG;TRACE;__Android__</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
-    <EmbedAssembliesIntoApk>true</EmbedAssembliesIntoApk>
+    <EmbedAssembliesIntoApk>False</EmbedAssembliesIntoApk>
     <MandroidI18n>cjk</MandroidI18n>
     <AndroidDexTool>d8</AndroidDexTool>
     <AndroidEnableSGenConcurrent>false</AndroidEnableSGenConcurrent>
@@ -254,124 +254,136 @@
       </Generator>
     </AndroidResource>
     <AndroidResource Include="Resources\drawable\answer.png">
-      <SubType></SubType>
-      <Generator></Generator>
+      <SubType>
+      </SubType>
+      <Generator>
+      </Generator>
     </AndroidResource>
     <AndroidResource Include="Resources\drawable\back_icon.png">
-      <SubType></SubType>
-      <Generator></Generator>
+      <SubType>
+      </SubType>
+      <Generator>
+      </Generator>
     </AndroidResource>
     <AndroidResource Include="Resources\drawable\dialog_background.xml">
-      <SubType></SubType>
-      <Generator></Generator>
+      <SubType>
+      </SubType>
+      <Generator>
+      </Generator>
     </AndroidResource>
     <AndroidResource Include="Resources\drawable\hangup.png">
-      <SubType></SubType>
-      <Generator></Generator>
+      <SubType>
+      </SubType>
+      <Generator>
+      </Generator>
     </AndroidResource>
     <AndroidResource Include="Resources\drawable\mic.png">
-      <SubType></SubType>
-      <Generator></Generator>
+      <SubType>
+      </SubType>
+      <Generator>
+      </Generator>
     </AndroidResource>
     <AndroidResource Include="Resources\drawable\screenshot_def.png">
-      <SubType></SubType>
-      <Generator></Generator>
+      <SubType>
+      </SubType>
+      <Generator>
+      </Generator>
     </AndroidResource>
     <AndroidResource Include="Resources\drawable\screenshot_sel.png">
-      <SubType></SubType>
-      <Generator></Generator>
+      <SubType>
+      </SubType>
+      <Generator>
+      </Generator>
     </AndroidResource>
     <AndroidResource Include="Resources\drawable\screenshot.xml">
-      <SubType></SubType>
-      <Generator></Generator>
+      <SubType>
+      </SubType>
+      <Generator>
+      </Generator>
     </AndroidResource>
     <AndroidResource Include="Resources\drawable\sure_background_def.xml">
-      <SubType></SubType>
-      <Generator></Generator>
+      <SubType>
+      </SubType>
+      <Generator>
+      </Generator>
     </AndroidResource>
     <AndroidResource Include="Resources\drawable\sure_background_sel.xml">
-      <SubType></SubType>
-      <Generator></Generator>
+      <SubType>
+      </SubType>
+      <Generator>
+      </Generator>
     </AndroidResource>
     <AndroidResource Include="Resources\drawable\tip_background.xml">
-      <SubType></SubType>
-      <Generator></Generator>
+      <SubType>
+      </SubType>
+      <Generator>
+      </Generator>
     </AndroidResource>
     <AndroidResource Include="Resources\drawable\unlock_def.png">
-      <SubType></SubType>
-      <Generator></Generator>
+      <SubType>
+      </SubType>
+      <Generator>
+      </Generator>
     </AndroidResource>
     <AndroidResource Include="Resources\drawable\unlock_sel.png">
-      <SubType></SubType>
-      <Generator></Generator>
+      <SubType>
+      </SubType>
+      <Generator>
+      </Generator>
     </AndroidResource>
     <AndroidResource Include="Resources\drawable\unlock.xml">
-      <SubType></SubType>
-      <Generator></Generator>
+      <SubType>
+      </SubType>
+      <Generator>
+      </Generator>
     </AndroidResource>
     <AndroidResource Include="Resources\drawable\video_background.png">
-      <SubType></SubType>
-      <Generator></Generator>
+      <SubType>
+      </SubType>
+      <Generator>
+      </Generator>
     </AndroidResource>
     <AndroidResource Include="Resources\layout\activity_video_phone.xml">
-      <SubType></SubType>
-      <Generator></Generator>
+      <SubType>
+      </SubType>
+      <Generator>
+      </Generator>
     </AndroidResource>
     <AndroidResource Include="Resources\layout\dialog_tip.xml">
-      <SubType></SubType>
-      <Generator></Generator>
+      <SubType>
+      </SubType>
+      <Generator>
+      </Generator>
     </AndroidResource>
     <AndroidResource Include="Resources\layout\fragment_call.xml">
-      <SubType></SubType>
-      <Generator></Generator>
+      <SubType>
+      </SubType>
+      <Generator>
+      </Generator>
     </AndroidResource>
     <AndroidResource Include="Resources\layout\fragment_monitor.xml">
-      <SubType></SubType>
-      <Generator></Generator>
+      <SubType>
+      </SubType>
+      <Generator>
+      </Generator>
     </AndroidResource>
     <AndroidResource Include="Resources\values-zh\strings.xml">
-      <SubType></SubType>
-      <Generator></Generator>
+      <SubType>
+      </SubType>
+      <Generator>
+      </Generator>
     </AndroidResource>
     <AndroidResource Include="Resources\drawable\launchImage.xml">
       <SubType></SubType>
       <Generator></Generator>
     </AndroidResource>
-    <AndroidResource Include="Resources\mipmap-xhdpi\Loading.png">
-      <SubType></SubType>
-      <Generator></Generator>
-    </AndroidResource>
-    <AndroidResource Include="Resources\mipmap-hdpi\Loading.png">
-      <SubType></SubType>
-      <Generator></Generator>
-    </AndroidResource>
-    <AndroidResource Include="Resources\mipmap-mdpi\Loading.png">
-      <SubType></SubType>
-      <Generator></Generator>
-    </AndroidResource>
-    <AndroidResource Include="Resources\mipmap-xxhdpi\Loading.png">
-      <SubType></SubType>
-      <Generator></Generator>
-    </AndroidResource>
-    <AndroidResource Include="Resources\mipmap-xxxhdpi\Loading.png">
-      <SubType></SubType>
-      <Generator></Generator>
-    </AndroidResource>
   </ItemGroup>
   <ItemGroup>
-    <Folder Include="Resources\drawable\" />
-    <Folder Include="Resources\layout\" />
-    <Folder Include="Assets\Phone\Intelligence\" />
-    <Folder Include="Assets\Phone\DeviceIcon\" />
-    <Folder Include="Other\" />
-    <Folder Include="Other\JPush\" />
-    <Folder Include="Assets\Phone\FunctionIcon\Electrical\WaterValve\" />
-    <Folder Include="Assets\Phone\FunctionIcon\Electrical\ClothesHanger\" />
-    <Folder Include="Assets\Phone\PirIcon\" />
-    <Folder Include="Assets\Phone\VideoIcon\" />
-    <Folder Include="Assets\Phone\FunctionIcon\Energy\" />
+    <AndroidAsset Include="Assets\Phone\Public\MsgIcon\TipSuccessIcon.png" />
   </ItemGroup>
-  <ItemGroup />
+  <ItemGroup>
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\DoorLock\BindScene.png" />
+  </ItemGroup>
   <ItemGroup>
     <PackageReference Include="Xamarin.Android.Support.Design" Version="28.0.0.3" />
     <PackageReference Include="Xamarin.Android.Support.Core.Utils" Version="28.0.0.3" />
@@ -553,6 +565,7 @@
     <AndroidAsset Include="Assets\Phone\FunctionIcon\Music\MusicIcon.png" />
     <AndroidAsset Include="Assets\Phone\FunctionIcon\Music\MusicOnIcon.png" />
     <AndroidAsset Include="Assets\Phone\FunctionIcon\Electrical\FanIconBg.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Electrical\TVIcon.png" />
     <AndroidAsset Include="Assets\Phone\FunctionIcon\Electrical\FanThinIcon.png" />
     <AndroidAsset Include="Assets\Phone\FunctionIcon\Electrical\FanIcon.png" />
     <AndroidAsset Include="Assets\Phone\FunctionIcon\Electrical\FanIconOnBg.png" />
@@ -860,7 +873,6 @@
     <AndroidAsset Include="Assets\Phone\FunctionIcon\Electrical\AirCleanerThiinIcon.png" />
     <AndroidAsset Include="Assets\Phone\FunctionIcon\Electrical\WeepRobotThinIcon.png" />
     <AndroidAsset Include="Assets\Phone\FunctionIcon\Electrical\WeepRobot\MuteSelect.png" />
-    <AndroidAsset Include="Assets\Phone\FunctionIcon\Electrical\WeepRobot\Battery.png" />
     <AndroidAsset Include="Assets\Phone\FunctionIcon\Electrical\WeepRobot\ControlRight.png" />
     <AndroidAsset Include="Assets\Phone\FunctionIcon\Electrical\WeepRobot\AreaMode.png" />
     <AndroidAsset Include="Assets\Phone\FunctionIcon\Electrical\WeepRobot\AutoMode.png" />
@@ -1155,32 +1167,86 @@
     <AndroidAsset Include="Assets\Phone\FunctionIcon\Curtain\CurtainUpIcon.png" />
     <AndroidAsset Include="Assets\Phone\FunctionIcon\Curtain\CurtainUpIconOn.png" />
     <AndroidAsset Include="Assets\Phone\PersonalCenter\SmartSpeaker.png" />
-    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\irpjt.png" />
-    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\irstb.png" />
-    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\irpjt_blue.png" />
-    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\irpjt_white.png" />
-    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\irstb_blue.png" />
-    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\irstb_white.png" />
-    <AndroidAsset Include="Assets\Phone\FunctionIcon\Energy\EnergyDrodUpIcon.png" />
-    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\sensormegahealth.png" />
-    <AndroidAsset Include="Assets\Phone\FunctionIcon\Electrical\TV\TVOkIconDown.png" />
-    <AndroidAsset Include="Assets\Phone\FunctionIcon\Electrical\TV\TVOkIconLeft.png" />
-    <AndroidAsset Include="Assets\Phone\FunctionIcon\Electrical\TV\TVOkIconRight.png" />
-    <AndroidAsset Include="Assets\Phone\FunctionIcon\Electrical\TV\TVOkIconUp.png" />
-    <AndroidAsset Include="Assets\Phone\FunctionIcon\Electrical\TV\TVOkIconOk.png" />
-    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\irtvxm.png" />
-    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\irtvxm_blue.png" />
-    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\irtvxm_white.png" />
-    <AndroidAsset Include="Assets\Phone\PersonalCenter\AddDevice\SenesorMegahealthBg.png" />
-    <AndroidAsset Include="Assets\Phone\Public\Scan.png" />
-    <AndroidAsset Include="Assets\Phone\FunctionIcon\ArmSensor\SomeoneFellBgIcon.png" />
-    <AndroidAsset Include="Assets\Phone\FunctionIcon\ArmSensor\SomeoneInBgIcon.png" />
-    <AndroidAsset Include="Assets\Phone\FunctionIcon\ArmSensor\UnderProtectionBgIcon.png" />
   </ItemGroup>
   <ItemGroup>
     <AndroidNativeLibrary Include="libs\armeabi-v7a\libelianjni.so" />
     <AndroidNativeLibrary Include="libs\armeabi-v7a\libjcore127.so" />
   </ItemGroup>
+  <ItemGroup>
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\DoorLock\Connect.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\DoorLock\Delete.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\DoorLock\Editor.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\DoorLock\Hide.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\DoorLock\More.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\DoorLock\Mute.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\DoorLock\NormallyOpenIcon1.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\DoorLock\NormallyOpenIcon2.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\DoorLock\Redistribution.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\DoorLock\Screen.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\DoorLock\Shard.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\DoorLock\UnConnect.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\DoorLock\UnLockManager.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\DoorLock\Voice.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <AndroidAsset Include="Assets\Phone\Public\BatteryEnough.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <AndroidAsset Include="Assets\Phone\Public\BatteryNot.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\DoorLock\LockPictrue1.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\DoorLock\LockPictrue2.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\DoorLock\UnLockPictrue1.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\DoorLock\UnLockPictrue2.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\DoorLock\UnLockPictrue3.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\DoorLock\CrearPswBackgroud.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\DoorLock\NormallyOpenIcon3.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\DoorLock\History.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\DoorLock\DoorLock.png" />
+  </ItemGroup>
   <Import Project="..\HDL_ON\HDL_ON.projitems" Label="Shared" Condition="Exists('..\HDL_ON\HDL_ON.projitems')" />
   <Import Project="$(MSBuildExtensionsPath)\Xamarin\Android\Xamarin.Android.CSharp.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
diff --git a/HDL-ON_Android/Properties/AndroidManifest.xml b/HDL-ON_Android/Properties/AndroidManifest.xml
index 98454bb..f0ad94e 100644
--- a/HDL-ON_Android/Properties/AndroidManifest.xml
+++ b/HDL-ON_Android/Properties/AndroidManifest.xml
@@ -1,6 +1,6 @@
 锘�<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="202106081" android:versionName="1.2.202106081" package="com.hdl.onpro">
-	<uses-sdk android:minSdkVersion="23" android:targetSdkVersion="29" />
+<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="202104282" android:versionName="1.2.202104282" package="com.hdl.onpro">
+	<uses-sdk android:minSdkVersion="26" android:targetSdkVersion="29" />
 	<!--  鍙瀵硅鏉冮檺-->
 	<uses-permission android:name="android.permission.CAMERA" />
 	<uses-feature android:name="android.hardware.camera" />
diff --git a/HDL-ON_Android/Resources/Resource.designer.cs b/HDL-ON_Android/Resources/Resource.designer.cs
index c504701..f0b1343 100644
--- a/HDL-ON_Android/Resources/Resource.designer.cs
+++ b/HDL-ON_Android/Resources/Resource.designer.cs
@@ -1,10 +1,11 @@
 #pragma warning disable 1591
 //------------------------------------------------------------------------------
 // <auto-generated>
-//     This code was generated by a tool.
+//     姝や唬鐮佺敱宸ュ叿鐢熸垚銆�
+//     杩愯鏃剁増鏈�:4.0.30319.42000
 //
-//     Changes to this file may cause incorrect behavior and will be lost if
-//     the code is regenerated.
+//     瀵规鏂囦欢鐨勬洿鏀瑰彲鑳戒細瀵艰嚧涓嶆纭殑琛屼负锛屽苟涓斿鏋�
+//     閲嶆柊鐢熸垚浠g爜锛岃繖浜涙洿鏀瑰皢浼氫涪澶便��
 // </auto-generated>
 //------------------------------------------------------------------------------
 
@@ -14,7 +15,7 @@
 {
 	
 	
-	[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Xamarin.Android.Build.Tasks", "1.0.0.0")]
+	[System.CodeDom.Compiler.GeneratedCodeAttribute("Xamarin.Android.Build.Tasks", "1.0.0.0")]
 	public partial class Resource
 	{
 		
@@ -5119,1615 +5120,1612 @@
 			public const int label_bg_sel = 2131231231;
 			
 			// aapt resource value: 0x7F080200
-			public const int launchImage = 2131231232;
+			public const int leave_message_play = 2131231232;
 			
 			// aapt resource value: 0x7F080201
-			public const int leave_message_play = 2131231233;
+			public const int leave_message_play_sel = 2131231233;
 			
 			// aapt resource value: 0x7F080202
-			public const int leave_message_play_sel = 2131231234;
+			public const int leave_message_play_selector = 2131231234;
 			
 			// aapt resource value: 0x7F080203
-			public const int leave_message_play_selector = 2131231235;
+			public const int left_horizontal = 2131231235;
 			
 			// aapt resource value: 0x7F080204
-			public const int left_horizontal = 2131231236;
+			public const int left_twinkle = 2131231236;
 			
 			// aapt resource value: 0x7F080205
-			public const int left_twinkle = 2131231237;
+			public const int link_account1 = 2131231237;
 			
 			// aapt resource value: 0x7F080206
-			public const int link_account1 = 2131231238;
+			public const int link_account2 = 2131231238;
 			
 			// aapt resource value: 0x7F080207
-			public const int link_account2 = 2131231239;
+			public const int link_account3 = 2131231239;
 			
 			// aapt resource value: 0x7F080208
-			public const int link_account3 = 2131231240;
-			
-			// aapt resource value: 0x7F080209
-			public const int link_account4 = 2131231241;
-			
-			// aapt resource value: 0x7F08020B
-			public const int Loading = 2131231243;
+			public const int link_account4 = 2131231240;
 			
 			// aapt resource value: 0x7F08020A
-			public const int load_failed_bg = 2131231242;
+			public const int Loading = 2131231242;
+			
+			// aapt resource value: 0x7F080209
+			public const int load_failed_bg = 2131231241;
+			
+			// aapt resource value: 0x7F08020B
+			public const int lock_bg = 2131231243;
 			
 			// aapt resource value: 0x7F08020C
-			public const int lock_bg = 2131231244;
+			public const int login_btn_selector = 2131231244;
 			
 			// aapt resource value: 0x7F08020D
-			public const int login_btn_selector = 2131231245;
+			public const int login_logo = 2131231245;
 			
 			// aapt resource value: 0x7F08020E
-			public const int login_logo = 2131231246;
+			public const int login_logo_button = 2131231246;
 			
 			// aapt resource value: 0x7F08020F
-			public const int login_logo_button = 2131231247;
+			public const int login_logo_button_sel = 2131231247;
 			
 			// aapt resource value: 0x7F080210
-			public const int login_logo_button_sel = 2131231248;
+			public const int logo_loading_1 = 2131231248;
 			
 			// aapt resource value: 0x7F080211
-			public const int logo_loading_1 = 2131231249;
+			public const int logo_loading_2 = 2131231249;
 			
 			// aapt resource value: 0x7F080212
-			public const int logo_loading_2 = 2131231250;
+			public const int logo_loading_3 = 2131231250;
 			
 			// aapt resource value: 0x7F080213
-			public const int logo_loading_3 = 2131231251;
+			public const int logo_loading_4 = 2131231251;
 			
 			// aapt resource value: 0x7F080214
-			public const int logo_loading_4 = 2131231252;
+			public const int mesage_details_callhelp = 2131231252;
 			
 			// aapt resource value: 0x7F080215
-			public const int mesage_details_callhelp = 2131231253;
+			public const int mesage_details_curtain = 2131231253;
 			
 			// aapt resource value: 0x7F080216
-			public const int mesage_details_curtain = 2131231254;
+			public const int mesage_details_data = 2131231254;
 			
 			// aapt resource value: 0x7F080217
-			public const int mesage_details_data = 2131231255;
+			public const int mesage_details_door = 2131231255;
 			
 			// aapt resource value: 0x7F080218
-			public const int mesage_details_door = 2131231256;
+			public const int mesage_details_gas = 2131231256;
 			
 			// aapt resource value: 0x7F080219
-			public const int mesage_details_gas = 2131231257;
+			public const int mesage_details_hdd = 2131231257;
 			
 			// aapt resource value: 0x7F08021A
-			public const int mesage_details_hdd = 2131231258;
+			public const int mesage_details_infrared = 2131231258;
 			
 			// aapt resource value: 0x7F08021B
-			public const int mesage_details_infrared = 2131231259;
+			public const int mesage_details_keyboard = 2131231259;
 			
 			// aapt resource value: 0x7F08021C
-			public const int mesage_details_keyboard = 2131231260;
+			public const int mesage_details_loss = 2131231260;
 			
 			// aapt resource value: 0x7F08021D
-			public const int mesage_details_loss = 2131231261;
+			public const int mesage_details_low_battery = 2131231261;
 			
 			// aapt resource value: 0x7F08021E
-			public const int mesage_details_low_battery = 2131231262;
+			public const int mesage_details_offline = 2131231262;
 			
 			// aapt resource value: 0x7F08021F
-			public const int mesage_details_offline = 2131231263;
+			public const int mesage_details_power = 2131231263;
 			
 			// aapt resource value: 0x7F080220
-			public const int mesage_details_power = 2131231264;
+			public const int mesage_details_smoke = 2131231264;
 			
 			// aapt resource value: 0x7F080221
-			public const int mesage_details_smoke = 2131231265;
+			public const int mesage_details_tampering = 2131231265;
 			
 			// aapt resource value: 0x7F080222
-			public const int mesage_details_tampering = 2131231266;
+			public const int mesage_details_video_loss = 2131231266;
 			
 			// aapt resource value: 0x7F080223
-			public const int mesage_details_video_loss = 2131231267;
+			public const int mesage_details_water = 2131231267;
 			
 			// aapt resource value: 0x7F080224
-			public const int mesage_details_water = 2131231268;
+			public const int message = 2131231268;
 			
 			// aapt resource value: 0x7F080225
-			public const int message = 2131231269;
+			public const int message_a1_bg = 2131231269;
 			
 			// aapt resource value: 0x7F080226
-			public const int message_a1_bg = 2131231270;
+			public const int message_back = 2131231270;
 			
 			// aapt resource value: 0x7F080227
-			public const int message_back = 2131231271;
+			public const int message_back_sel = 2131231271;
 			
 			// aapt resource value: 0x7F080228
-			public const int message_back_sel = 2131231272;
+			public const int message_back_selector = 2131231272;
 			
 			// aapt resource value: 0x7F080229
-			public const int message_back_selector = 2131231273;
+			public const int message_border_bg = 2131231273;
 			
 			// aapt resource value: 0x7F08022A
-			public const int message_border_bg = 2131231274;
+			public const int message_callhelp = 2131231274;
 			
 			// aapt resource value: 0x7F08022B
-			public const int message_callhelp = 2131231275;
+			public const int message_curtain = 2131231275;
 			
 			// aapt resource value: 0x7F08022C
-			public const int message_curtain = 2131231276;
+			public const int message_data = 2131231276;
 			
 			// aapt resource value: 0x7F08022D
-			public const int message_data = 2131231277;
+			public const int message_door = 2131231277;
 			
 			// aapt resource value: 0x7F08022E
-			public const int message_door = 2131231278;
+			public const int message_gas = 2131231278;
 			
 			// aapt resource value: 0x7F08022F
-			public const int message_gas = 2131231279;
+			public const int message_hdd = 2131231279;
 			
 			// aapt resource value: 0x7F080230
-			public const int message_hdd = 2131231280;
+			public const int message_infrared = 2131231280;
 			
 			// aapt resource value: 0x7F080231
-			public const int message_infrared = 2131231281;
+			public const int message_item_bg_selector = 2131231281;
 			
 			// aapt resource value: 0x7F080232
-			public const int message_item_bg_selector = 2131231282;
+			public const int message_keyboard = 2131231282;
 			
 			// aapt resource value: 0x7F080233
-			public const int message_keyboard = 2131231283;
+			public const int message_loss = 2131231283;
 			
 			// aapt resource value: 0x7F080234
-			public const int message_loss = 2131231284;
+			public const int message_low_battery = 2131231284;
 			
 			// aapt resource value: 0x7F080235
-			public const int message_low_battery = 2131231285;
+			public const int message_move_magnetometer = 2131231285;
 			
 			// aapt resource value: 0x7F080236
-			public const int message_move_magnetometer = 2131231286;
+			public const int message_offline = 2131231286;
 			
 			// aapt resource value: 0x7F080237
-			public const int message_offline = 2131231287;
+			public const int message_play = 2131231287;
 			
 			// aapt resource value: 0x7F080238
-			public const int message_play = 2131231288;
+			public const int message_play_dis = 2131231288;
 			
 			// aapt resource value: 0x7F080239
-			public const int message_play_dis = 2131231289;
+			public const int message_play_sel = 2131231289;
 			
 			// aapt resource value: 0x7F08023A
-			public const int message_play_sel = 2131231290;
+			public const int message_play_selector = 2131231290;
 			
 			// aapt resource value: 0x7F08023B
-			public const int message_play_selector = 2131231291;
+			public const int message_power = 2131231291;
 			
 			// aapt resource value: 0x7F08023C
-			public const int message_power = 2131231292;
+			public const int message_sel = 2131231292;
 			
 			// aapt resource value: 0x7F08023D
-			public const int message_sel = 2131231293;
+			public const int message_smoke = 2131231293;
 			
 			// aapt resource value: 0x7F08023E
-			public const int message_smoke = 2131231294;
+			public const int message_tampering = 2131231294;
 			
 			// aapt resource value: 0x7F08023F
-			public const int message_tampering = 2131231295;
+			public const int message_video = 2131231295;
 			
 			// aapt resource value: 0x7F080240
-			public const int message_video = 2131231296;
+			public const int message_video_dis = 2131231296;
 			
 			// aapt resource value: 0x7F080241
-			public const int message_video_dis = 2131231297;
+			public const int message_video_loss = 2131231297;
 			
 			// aapt resource value: 0x7F080242
-			public const int message_video_loss = 2131231298;
+			public const int message_video_sel = 2131231298;
 			
 			// aapt resource value: 0x7F080243
-			public const int message_video_sel = 2131231299;
+			public const int message_video_selector = 2131231299;
 			
 			// aapt resource value: 0x7F080244
-			public const int message_video_selector = 2131231300;
+			public const int message_water = 2131231300;
 			
 			// aapt resource value: 0x7F080245
-			public const int message_water = 2131231301;
+			public const int mic = 2131231301;
 			
 			// aapt resource value: 0x7F080246
-			public const int mic = 2131231302;
+			public const int mm_trans = 2131231302;
 			
 			// aapt resource value: 0x7F080247
-			public const int mm_trans = 2131231303;
+			public const int more = 2131231303;
 			
 			// aapt resource value: 0x7F080248
-			public const int more = 2131231304;
+			public const int my_5k_vr = 2131231304;
 			
 			// aapt resource value: 0x7F080249
-			public const int my_5k_vr = 2131231305;
+			public const int my_5k_vr116 = 2131231305;
 			
 			// aapt resource value: 0x7F08024A
-			public const int my_5k_vr116 = 2131231306;
+			public const int my_a1 = 2131231306;
 			
 			// aapt resource value: 0x7F08024B
-			public const int my_a1 = 2131231307;
+			public const int my_a1c = 2131231307;
 			
 			// aapt resource value: 0x7F08024C
-			public const int my_a1c = 2131231308;
+			public const int my_a1s = 2131231308;
 			
 			// aapt resource value: 0x7F08024D
-			public const int my_a1s = 2131231309;
+			public const int my_add = 2131231309;
 			
 			// aapt resource value: 0x7F08024E
-			public const int my_add = 2131231310;
+			public const int my_c6p = 2131231310;
 			
 			// aapt resource value: 0x7F08024F
-			public const int my_c6p = 2131231311;
+			public const int my_c6t = 2131231311;
 			
 			// aapt resource value: 0x7F080250
-			public const int my_c6t = 2131231312;
+			public const int my_cover = 2131231312;
 			
 			// aapt resource value: 0x7F080251
-			public const int my_cover = 2131231313;
+			public const int my_cover620 = 2131231313;
 			
 			// aapt resource value: 0x7F080252
-			public const int my_cover620 = 2131231314;
+			public const int my_db1 = 2131231314;
 			
 			// aapt resource value: 0x7F080253
-			public const int my_db1 = 2131231315;
+			public const int my_doorbell = 2131231315;
 			
 			// aapt resource value: 0x7F080254
-			public const int my_doorbell = 2131231316;
+			public const int my_doorbell_hik = 2131231316;
 			
 			// aapt resource value: 0x7F080255
-			public const int my_doorbell_hik = 2131231317;
+			public const int my_n1 = 2131231317;
 			
 			// aapt resource value: 0x7F080256
-			public const int my_n1 = 2131231318;
+			public const int my_no_video = 2131231318;
 			
 			// aapt resource value: 0x7F080257
-			public const int my_no_video = 2131231319;
+			public const int my_progress_drawable = 2131231319;
 			
 			// aapt resource value: 0x7F080258
-			public const int my_progress_drawable = 2131231320;
+			public const int my_r1 = 2131231320;
 			
 			// aapt resource value: 0x7F080259
-			public const int my_r1 = 2131231321;
+			public const int my_r2 = 2131231321;
 			
 			// aapt resource value: 0x7F08025A
-			public const int my_r2 = 2131231322;
+			public const int my_shoping = 2131231322;
 			
 			// aapt resource value: 0x7F08025B
-			public const int my_shoping = 2131231323;
+			public const int my_switch_off = 2131231323;
 			
 			// aapt resource value: 0x7F08025C
-			public const int my_switch_off = 2131231324;
+			public const int my_switch_on = 2131231324;
 			
 			// aapt resource value: 0x7F08025D
-			public const int my_switch_on = 2131231325;
+			public const int my_switch_selector = 2131231325;
 			
 			// aapt resource value: 0x7F08025E
-			public const int my_switch_selector = 2131231326;
+			public const int my_vr104d = 2131231326;
 			
 			// aapt resource value: 0x7F08025F
-			public const int my_vr104d = 2131231327;
+			public const int my_w1 = 2131231327;
 			
 			// aapt resource value: 0x7F080260
-			public const int my_w1 = 2131231328;
+			public const int my_w2d = 2131231328;
 			
 			// aapt resource value: 0x7F080261
-			public const int my_w2d = 2131231329;
+			public const int my_w2s = 2131231329;
 			
 			// aapt resource value: 0x7F080262
-			public const int my_w2s = 2131231330;
+			public const int my_w3 = 2131231330;
 			
 			// aapt resource value: 0x7F080263
-			public const int my_w3 = 2131231331;
+			public const int my_wlb = 2131231331;
 			
 			// aapt resource value: 0x7F080264
-			public const int my_wlb = 2131231332;
+			public const int my_x1 = 2131231332;
 			
 			// aapt resource value: 0x7F080265
-			public const int my_x1 = 2131231333;
+			public const int my_x2 = 2131231333;
 			
 			// aapt resource value: 0x7F080266
-			public const int my_x2 = 2131231334;
+			public const int my_x3 = 2131231334;
 			
 			// aapt resource value: 0x7F080267
-			public const int my_x3 = 2131231335;
+			public const int my_x3c = 2131231335;
 			
 			// aapt resource value: 0x7F080268
-			public const int my_x3c = 2131231336;
+			public const int my_x4 = 2131231336;
 			
 			// aapt resource value: 0x7F080269
-			public const int my_x4 = 2131231337;
+			public const int my_x5c = 2131231337;
 			
 			// aapt resource value: 0x7F08026A
-			public const int my_x5c = 2131231338;
+			public const int name_del = 2131231338;
 			
 			// aapt resource value: 0x7F08026B
-			public const int name_del = 2131231339;
+			public const int name_del_sel = 2131231339;
 			
 			// aapt resource value: 0x7F08026C
-			public const int name_del_sel = 2131231340;
+			public const int name_del_selector = 2131231340;
 			
 			// aapt resource value: 0x7F08026D
-			public const int name_del_selector = 2131231341;
-			
-			// aapt resource value: 0x7F08026E
-			public const int navigation_empty_icon = 2131231342;
-			
-			// aapt resource value: 0x7F080271
-			public const int nomessage = 2131231345;
-			
-			// aapt resource value: 0x7F080272
-			public const int notification_action_background = 2131231346;
-			
-			// aapt resource value: 0x7F080273
-			public const int notification_bg = 2131231347;
-			
-			// aapt resource value: 0x7F080274
-			public const int notification_bg_low = 2131231348;
-			
-			// aapt resource value: 0x7F080275
-			public const int notification_bg_low_normal = 2131231349;
-			
-			// aapt resource value: 0x7F080276
-			public const int notification_bg_low_pressed = 2131231350;
-			
-			// aapt resource value: 0x7F080277
-			public const int notification_bg_normal = 2131231351;
-			
-			// aapt resource value: 0x7F080278
-			public const int notification_bg_normal_pressed = 2131231352;
-			
-			// aapt resource value: 0x7F080279
-			public const int notification_icon_background = 2131231353;
-			
-			// aapt resource value: 0x7F08027A
-			public const int notification_template_icon_bg = 2131231354;
-			
-			// aapt resource value: 0x7F08027B
-			public const int notification_template_icon_low_bg = 2131231355;
-			
-			// aapt resource value: 0x7F08027C
-			public const int notification_tile_bg = 2131231356;
-			
-			// aapt resource value: 0x7F08027D
-			public const int notify_bg = 2131231357;
-			
-			// aapt resource value: 0x7F08027E
-			public const int notify_panel_notification_icon_bg = 2131231358;
-			
-			// aapt resource value: 0x7F08026F
-			public const int no_message = 2131231343;
+			public const int navigation_empty_icon = 2131231341;
 			
 			// aapt resource value: 0x7F080270
-			public const int no_read = 2131231344;
+			public const int nomessage = 2131231344;
+			
+			// aapt resource value: 0x7F080271
+			public const int notification_action_background = 2131231345;
+			
+			// aapt resource value: 0x7F080272
+			public const int notification_bg = 2131231346;
+			
+			// aapt resource value: 0x7F080273
+			public const int notification_bg_low = 2131231347;
+			
+			// aapt resource value: 0x7F080274
+			public const int notification_bg_low_normal = 2131231348;
+			
+			// aapt resource value: 0x7F080275
+			public const int notification_bg_low_pressed = 2131231349;
+			
+			// aapt resource value: 0x7F080276
+			public const int notification_bg_normal = 2131231350;
+			
+			// aapt resource value: 0x7F080277
+			public const int notification_bg_normal_pressed = 2131231351;
+			
+			// aapt resource value: 0x7F080278
+			public const int notification_icon_background = 2131231352;
+			
+			// aapt resource value: 0x7F080279
+			public const int notification_template_icon_bg = 2131231353;
+			
+			// aapt resource value: 0x7F08027A
+			public const int notification_template_icon_low_bg = 2131231354;
+			
+			// aapt resource value: 0x7F08027B
+			public const int notification_tile_bg = 2131231355;
+			
+			// aapt resource value: 0x7F08027C
+			public const int notify_bg = 2131231356;
+			
+			// aapt resource value: 0x7F08027D
+			public const int notify_panel_notification_icon_bg = 2131231357;
+			
+			// aapt resource value: 0x7F08026E
+			public const int no_message = 2131231342;
+			
+			// aapt resource value: 0x7F08026F
+			public const int no_read = 2131231343;
+			
+			// aapt resource value: 0x7F08027E
+			public const int number_bg = 2131231358;
 			
 			// aapt resource value: 0x7F08027F
-			public const int number_bg = 2131231359;
+			public const int offline = 2131231359;
 			
 			// aapt resource value: 0x7F080280
-			public const int offline = 2131231360;
+			public const int open_cameralist_alarmlist_selector = 2131231360;
 			
 			// aapt resource value: 0x7F080281
-			public const int open_cameralist_alarmlist_selector = 2131231361;
+			public const int open_cameralist_button_selector = 2131231361;
 			
 			// aapt resource value: 0x7F080282
-			public const int open_cameralist_button_selector = 2131231362;
+			public const int open_cameralist_remotepb_selector = 2131231362;
 			
 			// aapt resource value: 0x7F080283
-			public const int open_cameralist_remotepb_selector = 2131231363;
+			public const int open_cameralist_setup_selector = 2131231363;
 			
 			// aapt resource value: 0x7F080284
-			public const int open_cameralist_setup_selector = 2131231364;
+			public const int opinion = 2131231364;
 			
 			// aapt resource value: 0x7F080285
-			public const int opinion = 2131231365;
+			public const int palyback_alarm_icon2 = 2131231365;
 			
 			// aapt resource value: 0x7F080286
-			public const int palyback_alarm_icon2 = 2131231366;
+			public const int palyback_close = 2131231366;
 			
 			// aapt resource value: 0x7F080287
-			public const int palyback_close = 2131231367;
+			public const int palyback_close_sel = 2131231367;
 			
 			// aapt resource value: 0x7F080288
-			public const int palyback_close_sel = 2131231368;
+			public const int palyback_close_selector = 2131231368;
 			
 			// aapt resource value: 0x7F080289
-			public const int palyback_close_selector = 2131231369;
+			public const int palyback_date_down = 2131231369;
 			
 			// aapt resource value: 0x7F08028A
-			public const int palyback_date_down = 2131231370;
+			public const int palyback_date_down_sel = 2131231370;
 			
 			// aapt resource value: 0x7F08028B
-			public const int palyback_date_down_sel = 2131231371;
+			public const int palyback_full_down = 2131231371;
 			
 			// aapt resource value: 0x7F08028C
-			public const int palyback_full_down = 2131231372;
+			public const int palyback_full_up = 2131231372;
 			
 			// aapt resource value: 0x7F08028D
-			public const int palyback_full_up = 2131231373;
+			public const int palyback_nest = 2131231373;
 			
 			// aapt resource value: 0x7F08028E
-			public const int palyback_nest = 2131231374;
+			public const int palyback_pause = 2131231374;
 			
 			// aapt resource value: 0x7F08028F
-			public const int palyback_pause = 2131231375;
+			public const int palyback_pause_sel = 2131231375;
 			
 			// aapt resource value: 0x7F080290
-			public const int palyback_pause_sel = 2131231376;
+			public const int palyback_previously = 2131231376;
 			
 			// aapt resource value: 0x7F080291
-			public const int palyback_previously = 2131231377;
+			public const int palyback_previously_sel = 2131231377;
 			
 			// aapt resource value: 0x7F080292
-			public const int palyback_previously_sel = 2131231378;
+			public const int palyback_previously_selector = 2131231378;
 			
 			// aapt resource value: 0x7F080293
-			public const int palyback_previously_selector = 2131231379;
+			public const int palyback_replay = 2131231379;
 			
 			// aapt resource value: 0x7F080294
-			public const int palyback_replay = 2131231380;
+			public const int palyback_retry = 2131231380;
 			
 			// aapt resource value: 0x7F080295
-			public const int palyback_retry = 2131231381;
+			public const int palyback_time_bg = 2131231381;
 			
 			// aapt resource value: 0x7F080296
-			public const int palyback_time_bg = 2131231382;
+			public const int palyback_video = 2131231382;
 			
 			// aapt resource value: 0x7F080297
-			public const int palyback_video = 2131231383;
+			public const int palyback_video_now = 2131231383;
 			
 			// aapt resource value: 0x7F080298
-			public const int palyback_video_now = 2131231384;
+			public const int palyback_video_now_sel = 2131231384;
 			
 			// aapt resource value: 0x7F080299
-			public const int palyback_video_now_sel = 2131231385;
+			public const int palyback_video_now_selector = 2131231385;
 			
 			// aapt resource value: 0x7F08029A
-			public const int palyback_video_now_selector = 2131231386;
+			public const int palyback_video_sel = 2131231386;
 			
 			// aapt resource value: 0x7F08029B
-			public const int palyback_video_sel = 2131231387;
+			public const int palyback_video_selector = 2131231387;
 			
 			// aapt resource value: 0x7F08029C
-			public const int palyback_video_selector = 2131231388;
+			public const int pause = 2131231388;
 			
 			// aapt resource value: 0x7F08029D
-			public const int pause = 2131231389;
+			public const int pause_sel = 2131231389;
 			
 			// aapt resource value: 0x7F08029E
-			public const int pause_sel = 2131231390;
+			public const int pic_bg = 2131231390;
 			
 			// aapt resource value: 0x7F08029F
-			public const int pic_bg = 2131231391;
-			
-			// aapt resource value: 0x7F0802A0
-			public const int play = 2131231392;
-			
-			// aapt resource value: 0x7F0802FF
-			public const int playback = 2131231487;
-			
-			// aapt resource value: 0x7F08030F
-			public const int playbackslider = 2131231503;
-			
-			// aapt resource value: 0x7F080310
-			public const int playbackslider_sel = 2131231504;
-			
-			// aapt resource value: 0x7F080300
-			public const int playback_button = 2131231488;
-			
-			// aapt resource value: 0x7F080301
-			public const int playback_cancel = 2131231489;
-			
-			// aapt resource value: 0x7F080302
-			public const int playback_check_selector = 2131231490;
-			
-			// aapt resource value: 0x7F080303
-			public const int playback_cover2 = 2131231491;
-			
-			// aapt resource value: 0x7F080304
-			public const int playback_cut = 2131231492;
-			
-			// aapt resource value: 0x7F080305
-			public const int playback_cut_btn_selector = 2131231493;
-			
-			// aapt resource value: 0x7F080306
-			public const int playback_cut_disable = 2131231494;
-			
-			// aapt resource value: 0x7F080307
-			public const int playback_cut_sel = 2131231495;
-			
-			// aapt resource value: 0x7F080308
-			public const int playback_matte = 2131231496;
-			
-			// aapt resource value: 0x7F080309
-			public const int playback_more_down = 2131231497;
-			
-			// aapt resource value: 0x7F08030A
-			public const int playback_more_down1 = 2131231498;
-			
-			// aapt resource value: 0x7F08030B
-			public const int playback_more_up1 = 2131231499;
-			
-			// aapt resource value: 0x7F08030C
-			public const int playback_play = 2131231500;
-			
-			// aapt resource value: 0x7F08030D
-			public const int playback_play_sel = 2131231501;
-			
-			// aapt resource value: 0x7F08030E
-			public const int playback_sel = 2131231502;
-			
-			// aapt resource value: 0x7F080311
-			public const int playbtn_selector = 2131231505;
-			
-			// aapt resource value: 0x7F0802A1
-			public const int play_balanced = 2131231393;
-			
-			// aapt resource value: 0x7F0802A2
-			public const int play_balanced_disabel = 2131231394;
-			
-			// aapt resource value: 0x7F0802A3
-			public const int play_balanced_sel = 2131231395;
-			
-			// aapt resource value: 0x7F0802A4
-			public const int play_balanced_selector = 2131231396;
-			
-			// aapt resource value: 0x7F0802A5
-			public const int play_big = 2131231397;
-			
-			// aapt resource value: 0x7F0802A7
-			public const int play_bigbtn_selector = 2131231399;
-			
-			// aapt resource value: 0x7F0802A6
-			public const int play_big_press = 2131231398;
-			
-			// aapt resource value: 0x7F0802A8
-			public const int play_button_bg = 2131231400;
-			
-			// aapt resource value: 0x7F0802A9
-			public const int play_button_sel = 2131231401;
-			
-			// aapt resource value: 0x7F0802AA
-			public const int play_button_selector = 2131231402;
-			
-			// aapt resource value: 0x7F0802AB
-			public const int play_close = 2131231403;
-			
-			// aapt resource value: 0x7F0802AC
-			public const int play_close_sel = 2131231404;
-			
-			// aapt resource value: 0x7F0802AD
-			public const int play_close_selector = 2131231405;
-			
-			// aapt resource value: 0x7F0802AE
-			public const int play_disable = 2131231406;
-			
-			// aapt resource value: 0x7F0802AF
-			public const int play_flunet = 2131231407;
-			
-			// aapt resource value: 0x7F0802B0
-			public const int play_flunet_disabel = 2131231408;
-			
-			// aapt resource value: 0x7F0802B1
-			public const int play_flunet_sel = 2131231409;
-			
-			// aapt resource value: 0x7F0802B2
-			public const int play_flunet_selector = 2131231410;
-			
-			// aapt resource value: 0x7F0802B3
-			public const int play_full_loding_logo = 2131231411;
-			
-			// aapt resource value: 0x7F0802B4
-			public const int play_full_multiple = 2131231412;
-			
-			// aapt resource value: 0x7F0802B5
-			public const int play_full_multiple2 = 2131231413;
-			
-			// aapt resource value: 0x7F0802B6
-			public const int play_full_multiple3 = 2131231414;
-			
-			// aapt resource value: 0x7F0802B7
-			public const int play_full_multiple4 = 2131231415;
-			
-			// aapt resource value: 0x7F0802B8
-			public const int play_full_multiple5 = 2131231416;
-			
-			// aapt resource value: 0x7F0802B9
-			public const int play_full_pause = 2131231417;
-			
-			// aapt resource value: 0x7F0802BA
-			public const int play_full_pause_sel = 2131231418;
-			
-			// aapt resource value: 0x7F0802BB
-			public const int play_full_pause_selector = 2131231419;
-			
-			// aapt resource value: 0x7F0802BC
-			public const int play_full_play = 2131231420;
-			
-			// aapt resource value: 0x7F0802BD
-			public const int play_full_play_sel = 2131231421;
-			
-			// aapt resource value: 0x7F0802BE
-			public const int play_full_play_selector = 2131231422;
-			
-			// aapt resource value: 0x7F0802BF
-			public const int play_full_previously = 2131231423;
-			
-			// aapt resource value: 0x7F0802C0
-			public const int play_full_previously_sel = 2131231424;
-			
-			// aapt resource value: 0x7F0802C1
-			public const int play_full_previously_selector = 2131231425;
-			
-			// aapt resource value: 0x7F0802C2
-			public const int play_full_ptz_selector = 2131231426;
-			
-			// aapt resource value: 0x7F0802C3
-			public const int play_full_quality_color_selector = 2131231427;
-			
-			// aapt resource value: 0x7F0802C4
-			public const int play_full_quality_selector = 2131231428;
-			
-			// aapt resource value: 0x7F0802C5
-			public const int play_full_soundoff_btn_selector = 2131231429;
-			
-			// aapt resource value: 0x7F0802C6
-			public const int play_full_soundon_btn_selector = 2131231430;
-			
-			// aapt resource value: 0x7F0802C7
-			public const int play_full_stop = 2131231431;
-			
-			// aapt resource value: 0x7F0802C8
-			public const int play_full_stop_sel = 2131231432;
-			
-			// aapt resource value: 0x7F0802C9
-			public const int play_full_stop_selector = 2131231433;
-			
-			// aapt resource value: 0x7F0802CA
-			public const int play_full_talk_selector = 2131231434;
-			
-			// aapt resource value: 0x7F0802CB
-			public const int play_full_video = 2131231435;
-			
-			// aapt resource value: 0x7F0802CC
-			public const int play_full_video_now = 2131231436;
-			
-			// aapt resource value: 0x7F0802CD
-			public const int play_full_video_now_sel = 2131231437;
-			
-			// aapt resource value: 0x7F0802CE
-			public const int play_full_video_now_selector = 2131231438;
-			
-			// aapt resource value: 0x7F0802CF
-			public const int play_full_video_sel = 2131231439;
-			
-			// aapt resource value: 0x7F0802D0
-			public const int play_full_video_selector = 2131231440;
-			
-			// aapt resource value: 0x7F0802D1
-			public const int play_hd = 2131231441;
-			
-			// aapt resource value: 0x7F0802D2
-			public const int play_hd_disabel = 2131231442;
-			
-			// aapt resource value: 0x7F0802D3
-			public const int play_hd_sel = 2131231443;
-			
-			// aapt resource value: 0x7F0802D4
-			public const int play_hd_selector = 2131231444;
-			
-			// aapt resource value: 0x7F0802D5
-			public const int play_play = 2131231445;
-			
-			// aapt resource value: 0x7F0802D6
-			public const int play_play_dis = 2131231446;
-			
-			// aapt resource value: 0x7F0802D7
-			public const int play_play_sel = 2131231447;
-			
-			// aapt resource value: 0x7F0802D8
-			public const int play_play_selector = 2131231448;
-			
-			// aapt resource value: 0x7F0802D9
-			public const int play_press = 2131231449;
-			
-			// aapt resource value: 0x7F0802DA
-			public const int play_previously = 2131231450;
-			
-			// aapt resource value: 0x7F0802DB
-			public const int play_previously_dis = 2131231451;
-			
-			// aapt resource value: 0x7F0802DC
-			public const int play_previously_sel = 2131231452;
-			
-			// aapt resource value: 0x7F0802DD
-			public const int play_previously_selector = 2131231453;
-			
-			// aapt resource value: 0x7F0802DE
-			public const int play_privacy_selector = 2131231454;
-			
-			// aapt resource value: 0x7F0802DF
-			public const int play_ptz = 2131231455;
-			
-			// aapt resource value: 0x7F0802E0
-			public const int play_ptz_dis = 2131231456;
-			
-			// aapt resource value: 0x7F0802E1
-			public const int play_ptz_sel = 2131231457;
-			
-			// aapt resource value: 0x7F0802E2
-			public const int play_ptz_selector = 2131231458;
-			
-			// aapt resource value: 0x7F0802E3
-			public const int play_small = 2131231459;
-			
-			// aapt resource value: 0x7F0802E5
-			public const int play_smallbtn_selector = 2131231461;
-			
-			// aapt resource value: 0x7F0802E4
-			public const int play_small_press = 2131231460;
-			
-			// aapt resource value: 0x7F0802E6
-			public const int play_speech = 2131231462;
-			
-			// aapt resource value: 0x7F0802E7
-			public const int play_speech_dis = 2131231463;
-			
-			// aapt resource value: 0x7F0802E8
-			public const int play_speech_sel = 2131231464;
-			
-			// aapt resource value: 0x7F0802E9
-			public const int play_speech_selector = 2131231465;
-			
-			// aapt resource value: 0x7F0802EA
-			public const int play_stop = 2131231466;
-			
-			// aapt resource value: 0x7F0802EB
-			public const int play_stop_sel = 2131231467;
-			
-			// aapt resource value: 0x7F0802EC
-			public const int play_stop_selector = 2131231468;
-			
-			// aapt resource value: 0x7F0802ED
-			public const int play_talk = 2131231469;
-			
-			// aapt resource value: 0x7F0802F1
-			public const int play_talkback = 2131231473;
-			
-			// aapt resource value: 0x7F0802F2
-			public const int play_talkback_sel = 2131231474;
-			
-			// aapt resource value: 0x7F0802F3
-			public const int play_talkback_selector = 2131231475;
-			
-			// aapt resource value: 0x7F0802EE
-			public const int play_talk_dis = 2131231470;
-			
-			// aapt resource value: 0x7F0802EF
-			public const int play_talk_sel = 2131231471;
-			
-			// aapt resource value: 0x7F0802F0
-			public const int play_talk_selector = 2131231472;
-			
-			// aapt resource value: 0x7F0802F4
-			public const int play_video = 2131231476;
-			
-			// aapt resource value: 0x7F0802F5
-			public const int play_video_dis = 2131231477;
-			
-			// aapt resource value: 0x7F0802F6
-			public const int play_video_record = 2131231478;
-			
-			// aapt resource value: 0x7F0802F7
-			public const int play_video_sel = 2131231479;
-			
-			// aapt resource value: 0x7F0802F8
-			public const int play_video_selector = 2131231480;
-			
-			// aapt resource value: 0x7F0802F9
-			public const int play_video_start = 2131231481;
-			
-			// aapt resource value: 0x7F0802FA
-			public const int play_video_time_bg = 2131231482;
-			
-			// aapt resource value: 0x7F0802FB
-			public const int play_voice = 2131231483;
-			
-			// aapt resource value: 0x7F0802FC
-			public const int play_voice_dis = 2131231484;
-			
-			// aapt resource value: 0x7F0802FD
-			public const int play_voice_sel = 2131231485;
+			public const int play = 2131231391;
 			
 			// aapt resource value: 0x7F0802FE
-			public const int play_voice_selector = 2131231486;
+			public const int playback = 2131231486;
+			
+			// aapt resource value: 0x7F08030E
+			public const int playbackslider = 2131231502;
+			
+			// aapt resource value: 0x7F08030F
+			public const int playbackslider_sel = 2131231503;
+			
+			// aapt resource value: 0x7F0802FF
+			public const int playback_button = 2131231487;
+			
+			// aapt resource value: 0x7F080300
+			public const int playback_cancel = 2131231488;
+			
+			// aapt resource value: 0x7F080301
+			public const int playback_check_selector = 2131231489;
+			
+			// aapt resource value: 0x7F080302
+			public const int playback_cover2 = 2131231490;
+			
+			// aapt resource value: 0x7F080303
+			public const int playback_cut = 2131231491;
+			
+			// aapt resource value: 0x7F080304
+			public const int playback_cut_btn_selector = 2131231492;
+			
+			// aapt resource value: 0x7F080305
+			public const int playback_cut_disable = 2131231493;
+			
+			// aapt resource value: 0x7F080306
+			public const int playback_cut_sel = 2131231494;
+			
+			// aapt resource value: 0x7F080307
+			public const int playback_matte = 2131231495;
+			
+			// aapt resource value: 0x7F080308
+			public const int playback_more_down = 2131231496;
+			
+			// aapt resource value: 0x7F080309
+			public const int playback_more_down1 = 2131231497;
+			
+			// aapt resource value: 0x7F08030A
+			public const int playback_more_up1 = 2131231498;
+			
+			// aapt resource value: 0x7F08030B
+			public const int playback_play = 2131231499;
+			
+			// aapt resource value: 0x7F08030C
+			public const int playback_play_sel = 2131231500;
+			
+			// aapt resource value: 0x7F08030D
+			public const int playback_sel = 2131231501;
+			
+			// aapt resource value: 0x7F080310
+			public const int playbtn_selector = 2131231504;
+			
+			// aapt resource value: 0x7F0802A0
+			public const int play_balanced = 2131231392;
+			
+			// aapt resource value: 0x7F0802A1
+			public const int play_balanced_disabel = 2131231393;
+			
+			// aapt resource value: 0x7F0802A2
+			public const int play_balanced_sel = 2131231394;
+			
+			// aapt resource value: 0x7F0802A3
+			public const int play_balanced_selector = 2131231395;
+			
+			// aapt resource value: 0x7F0802A4
+			public const int play_big = 2131231396;
+			
+			// aapt resource value: 0x7F0802A6
+			public const int play_bigbtn_selector = 2131231398;
+			
+			// aapt resource value: 0x7F0802A5
+			public const int play_big_press = 2131231397;
+			
+			// aapt resource value: 0x7F0802A7
+			public const int play_button_bg = 2131231399;
+			
+			// aapt resource value: 0x7F0802A8
+			public const int play_button_sel = 2131231400;
+			
+			// aapt resource value: 0x7F0802A9
+			public const int play_button_selector = 2131231401;
+			
+			// aapt resource value: 0x7F0802AA
+			public const int play_close = 2131231402;
+			
+			// aapt resource value: 0x7F0802AB
+			public const int play_close_sel = 2131231403;
+			
+			// aapt resource value: 0x7F0802AC
+			public const int play_close_selector = 2131231404;
+			
+			// aapt resource value: 0x7F0802AD
+			public const int play_disable = 2131231405;
+			
+			// aapt resource value: 0x7F0802AE
+			public const int play_flunet = 2131231406;
+			
+			// aapt resource value: 0x7F0802AF
+			public const int play_flunet_disabel = 2131231407;
+			
+			// aapt resource value: 0x7F0802B0
+			public const int play_flunet_sel = 2131231408;
+			
+			// aapt resource value: 0x7F0802B1
+			public const int play_flunet_selector = 2131231409;
+			
+			// aapt resource value: 0x7F0802B2
+			public const int play_full_loding_logo = 2131231410;
+			
+			// aapt resource value: 0x7F0802B3
+			public const int play_full_multiple = 2131231411;
+			
+			// aapt resource value: 0x7F0802B4
+			public const int play_full_multiple2 = 2131231412;
+			
+			// aapt resource value: 0x7F0802B5
+			public const int play_full_multiple3 = 2131231413;
+			
+			// aapt resource value: 0x7F0802B6
+			public const int play_full_multiple4 = 2131231414;
+			
+			// aapt resource value: 0x7F0802B7
+			public const int play_full_multiple5 = 2131231415;
+			
+			// aapt resource value: 0x7F0802B8
+			public const int play_full_pause = 2131231416;
+			
+			// aapt resource value: 0x7F0802B9
+			public const int play_full_pause_sel = 2131231417;
+			
+			// aapt resource value: 0x7F0802BA
+			public const int play_full_pause_selector = 2131231418;
+			
+			// aapt resource value: 0x7F0802BB
+			public const int play_full_play = 2131231419;
+			
+			// aapt resource value: 0x7F0802BC
+			public const int play_full_play_sel = 2131231420;
+			
+			// aapt resource value: 0x7F0802BD
+			public const int play_full_play_selector = 2131231421;
+			
+			// aapt resource value: 0x7F0802BE
+			public const int play_full_previously = 2131231422;
+			
+			// aapt resource value: 0x7F0802BF
+			public const int play_full_previously_sel = 2131231423;
+			
+			// aapt resource value: 0x7F0802C0
+			public const int play_full_previously_selector = 2131231424;
+			
+			// aapt resource value: 0x7F0802C1
+			public const int play_full_ptz_selector = 2131231425;
+			
+			// aapt resource value: 0x7F0802C2
+			public const int play_full_quality_color_selector = 2131231426;
+			
+			// aapt resource value: 0x7F0802C3
+			public const int play_full_quality_selector = 2131231427;
+			
+			// aapt resource value: 0x7F0802C4
+			public const int play_full_soundoff_btn_selector = 2131231428;
+			
+			// aapt resource value: 0x7F0802C5
+			public const int play_full_soundon_btn_selector = 2131231429;
+			
+			// aapt resource value: 0x7F0802C6
+			public const int play_full_stop = 2131231430;
+			
+			// aapt resource value: 0x7F0802C7
+			public const int play_full_stop_sel = 2131231431;
+			
+			// aapt resource value: 0x7F0802C8
+			public const int play_full_stop_selector = 2131231432;
+			
+			// aapt resource value: 0x7F0802C9
+			public const int play_full_talk_selector = 2131231433;
+			
+			// aapt resource value: 0x7F0802CA
+			public const int play_full_video = 2131231434;
+			
+			// aapt resource value: 0x7F0802CB
+			public const int play_full_video_now = 2131231435;
+			
+			// aapt resource value: 0x7F0802CC
+			public const int play_full_video_now_sel = 2131231436;
+			
+			// aapt resource value: 0x7F0802CD
+			public const int play_full_video_now_selector = 2131231437;
+			
+			// aapt resource value: 0x7F0802CE
+			public const int play_full_video_sel = 2131231438;
+			
+			// aapt resource value: 0x7F0802CF
+			public const int play_full_video_selector = 2131231439;
+			
+			// aapt resource value: 0x7F0802D0
+			public const int play_hd = 2131231440;
+			
+			// aapt resource value: 0x7F0802D1
+			public const int play_hd_disabel = 2131231441;
+			
+			// aapt resource value: 0x7F0802D2
+			public const int play_hd_sel = 2131231442;
+			
+			// aapt resource value: 0x7F0802D3
+			public const int play_hd_selector = 2131231443;
+			
+			// aapt resource value: 0x7F0802D4
+			public const int play_play = 2131231444;
+			
+			// aapt resource value: 0x7F0802D5
+			public const int play_play_dis = 2131231445;
+			
+			// aapt resource value: 0x7F0802D6
+			public const int play_play_sel = 2131231446;
+			
+			// aapt resource value: 0x7F0802D7
+			public const int play_play_selector = 2131231447;
+			
+			// aapt resource value: 0x7F0802D8
+			public const int play_press = 2131231448;
+			
+			// aapt resource value: 0x7F0802D9
+			public const int play_previously = 2131231449;
+			
+			// aapt resource value: 0x7F0802DA
+			public const int play_previously_dis = 2131231450;
+			
+			// aapt resource value: 0x7F0802DB
+			public const int play_previously_sel = 2131231451;
+			
+			// aapt resource value: 0x7F0802DC
+			public const int play_previously_selector = 2131231452;
+			
+			// aapt resource value: 0x7F0802DD
+			public const int play_privacy_selector = 2131231453;
+			
+			// aapt resource value: 0x7F0802DE
+			public const int play_ptz = 2131231454;
+			
+			// aapt resource value: 0x7F0802DF
+			public const int play_ptz_dis = 2131231455;
+			
+			// aapt resource value: 0x7F0802E0
+			public const int play_ptz_sel = 2131231456;
+			
+			// aapt resource value: 0x7F0802E1
+			public const int play_ptz_selector = 2131231457;
+			
+			// aapt resource value: 0x7F0802E2
+			public const int play_small = 2131231458;
+			
+			// aapt resource value: 0x7F0802E4
+			public const int play_smallbtn_selector = 2131231460;
+			
+			// aapt resource value: 0x7F0802E3
+			public const int play_small_press = 2131231459;
+			
+			// aapt resource value: 0x7F0802E5
+			public const int play_speech = 2131231461;
+			
+			// aapt resource value: 0x7F0802E6
+			public const int play_speech_dis = 2131231462;
+			
+			// aapt resource value: 0x7F0802E7
+			public const int play_speech_sel = 2131231463;
+			
+			// aapt resource value: 0x7F0802E8
+			public const int play_speech_selector = 2131231464;
+			
+			// aapt resource value: 0x7F0802E9
+			public const int play_stop = 2131231465;
+			
+			// aapt resource value: 0x7F0802EA
+			public const int play_stop_sel = 2131231466;
+			
+			// aapt resource value: 0x7F0802EB
+			public const int play_stop_selector = 2131231467;
+			
+			// aapt resource value: 0x7F0802EC
+			public const int play_talk = 2131231468;
+			
+			// aapt resource value: 0x7F0802F0
+			public const int play_talkback = 2131231472;
+			
+			// aapt resource value: 0x7F0802F1
+			public const int play_talkback_sel = 2131231473;
+			
+			// aapt resource value: 0x7F0802F2
+			public const int play_talkback_selector = 2131231474;
+			
+			// aapt resource value: 0x7F0802ED
+			public const int play_talk_dis = 2131231469;
+			
+			// aapt resource value: 0x7F0802EE
+			public const int play_talk_sel = 2131231470;
+			
+			// aapt resource value: 0x7F0802EF
+			public const int play_talk_selector = 2131231471;
+			
+			// aapt resource value: 0x7F0802F3
+			public const int play_video = 2131231475;
+			
+			// aapt resource value: 0x7F0802F4
+			public const int play_video_dis = 2131231476;
+			
+			// aapt resource value: 0x7F0802F5
+			public const int play_video_record = 2131231477;
+			
+			// aapt resource value: 0x7F0802F6
+			public const int play_video_sel = 2131231478;
+			
+			// aapt resource value: 0x7F0802F7
+			public const int play_video_selector = 2131231479;
+			
+			// aapt resource value: 0x7F0802F8
+			public const int play_video_start = 2131231480;
+			
+			// aapt resource value: 0x7F0802F9
+			public const int play_video_time_bg = 2131231481;
+			
+			// aapt resource value: 0x7F0802FA
+			public const int play_voice = 2131231482;
+			
+			// aapt resource value: 0x7F0802FB
+			public const int play_voice_dis = 2131231483;
+			
+			// aapt resource value: 0x7F0802FC
+			public const int play_voice_sel = 2131231484;
+			
+			// aapt resource value: 0x7F0802FD
+			public const int play_voice_selector = 2131231485;
+			
+			// aapt resource value: 0x7F080311
+			public const int popdialogbg = 2131231505;
 			
 			// aapt resource value: 0x7F080312
-			public const int popdialogbg = 2131231506;
+			public const int prepare_device = 2131231506;
 			
 			// aapt resource value: 0x7F080313
-			public const int prepare_device = 2131231507;
+			public const int preview_close1_video_ico = 2131231507;
 			
 			// aapt resource value: 0x7F080314
-			public const int preview_close1_video_ico = 2131231508;
+			public const int preview_close_video = 2131231508;
 			
 			// aapt resource value: 0x7F080315
-			public const int preview_close_video = 2131231509;
+			public const int preview_close_video_dis = 2131231509;
 			
 			// aapt resource value: 0x7F080316
-			public const int preview_close_video_dis = 2131231510;
+			public const int preview_close_video_sel = 2131231510;
 			
 			// aapt resource value: 0x7F080317
-			public const int preview_close_video_sel = 2131231511;
+			public const int preview_down_bg_normal = 2131231511;
 			
 			// aapt resource value: 0x7F080318
-			public const int preview_down_bg_normal = 2131231512;
+			public const int preview_down_bg_pressed = 2131231512;
 			
 			// aapt resource value: 0x7F080319
-			public const int preview_down_bg_pressed = 2131231513;
+			public const int preview_down_ico = 2131231513;
 			
 			// aapt resource value: 0x7F08031A
-			public const int preview_down_ico = 2131231514;
+			public const int preview_down_selector = 2131231514;
 			
 			// aapt resource value: 0x7F08031B
-			public const int preview_down_selector = 2131231515;
+			public const int preview_enlarge = 2131231515;
 			
 			// aapt resource value: 0x7F08031C
-			public const int preview_enlarge = 2131231516;
+			public const int preview_enlarge_btn_sel = 2131231516;
 			
 			// aapt resource value: 0x7F08031D
-			public const int preview_enlarge_btn_sel = 2131231517;
+			public const int preview_enlarge_dis = 2131231517;
 			
 			// aapt resource value: 0x7F08031E
-			public const int preview_enlarge_dis = 2131231518;
+			public const int preview_enlarge_selector = 2131231518;
 			
 			// aapt resource value: 0x7F08031F
-			public const int preview_enlarge_selector = 2131231519;
+			public const int preview_play_btn = 2131231519;
 			
 			// aapt resource value: 0x7F080320
-			public const int preview_play_btn = 2131231520;
+			public const int preview_play_btn_dis = 2131231520;
 			
 			// aapt resource value: 0x7F080321
-			public const int preview_play_btn_dis = 2131231521;
+			public const int preview_play_btn_sel = 2131231521;
 			
 			// aapt resource value: 0x7F080322
-			public const int preview_play_btn_sel = 2131231522;
+			public const int preview_recording = 2131231522;
 			
 			// aapt resource value: 0x7F080323
-			public const int preview_recording = 2131231523;
+			public const int preview_recording_dis = 2131231523;
 			
 			// aapt resource value: 0x7F080324
-			public const int preview_recording_dis = 2131231524;
+			public const int preview_recording_sel = 2131231524;
 			
 			// aapt resource value: 0x7F080325
-			public const int preview_recording_sel = 2131231525;
+			public const int preview_selection_bg = 2131231525;
 			
 			// aapt resource value: 0x7F080326
-			public const int preview_selection_bg = 2131231526;
+			public const int preview_stopplay_btn_dis = 2131231526;
 			
 			// aapt resource value: 0x7F080327
-			public const int preview_stopplay_btn_dis = 2131231527;
+			public const int preview_unvoice_btn = 2131231527;
 			
 			// aapt resource value: 0x7F080328
-			public const int preview_unvoice_btn = 2131231528;
+			public const int preview_unvoice_btn_sel = 2131231528;
 			
 			// aapt resource value: 0x7F080329
-			public const int preview_unvoice_btn_sel = 2131231529;
+			public const int preview_video_selection = 2131231529;
 			
 			// aapt resource value: 0x7F08032A
-			public const int preview_video_selection = 2131231530;
+			public const int preview_video_selection_hover = 2131231530;
 			
 			// aapt resource value: 0x7F08032B
-			public const int preview_video_selection_hover = 2131231531;
+			public const int preview_voice_btn = 2131231531;
 			
 			// aapt resource value: 0x7F08032C
-			public const int preview_voice_btn = 2131231532;
+			public const int preview_voice_btn_dis = 2131231532;
 			
 			// aapt resource value: 0x7F08032D
-			public const int preview_voice_btn_dis = 2131231533;
+			public const int preview_voice_btn_sel = 2131231533;
 			
 			// aapt resource value: 0x7F08032E
-			public const int preview_voice_btn_sel = 2131231534;
+			public const int previously = 2131231534;
 			
 			// aapt resource value: 0x7F08032F
-			public const int previously = 2131231535;
+			public const int previously_dis = 2131231535;
 			
 			// aapt resource value: 0x7F080330
-			public const int previously_dis = 2131231536;
+			public const int previously_sel = 2131231536;
 			
 			// aapt resource value: 0x7F080331
-			public const int previously_sel = 2131231537;
+			public const int ptz_bg = 2131231537;
 			
 			// aapt resource value: 0x7F080332
-			public const int ptz_bg = 2131231538;
+			public const int ptz_bottom_limit = 2131231538;
 			
 			// aapt resource value: 0x7F080333
-			public const int ptz_bottom_limit = 2131231539;
+			public const int ptz_bottom_sel = 2131231539;
 			
 			// aapt resource value: 0x7F080334
-			public const int ptz_bottom_sel = 2131231540;
+			public const int ptz_left_limit = 2131231540;
 			
 			// aapt resource value: 0x7F080335
-			public const int ptz_left_limit = 2131231541;
+			public const int ptz_left_sel = 2131231541;
 			
 			// aapt resource value: 0x7F080336
-			public const int ptz_left_sel = 2131231542;
+			public const int ptz_prompt = 2131231542;
 			
 			// aapt resource value: 0x7F080337
-			public const int ptz_prompt = 2131231543;
+			public const int ptz_right_limit = 2131231543;
 			
 			// aapt resource value: 0x7F080338
-			public const int ptz_right_limit = 2131231544;
+			public const int ptz_right_sel = 2131231544;
 			
 			// aapt resource value: 0x7F080339
-			public const int ptz_right_sel = 2131231545;
+			public const int ptz_top_limit = 2131231545;
 			
 			// aapt resource value: 0x7F08033A
-			public const int ptz_top_limit = 2131231546;
+			public const int ptz_turn = 2131231546;
 			
 			// aapt resource value: 0x7F08033B
-			public const int ptz_turn = 2131231547;
+			public const int ptz_turn_sel = 2131231547;
 			
 			// aapt resource value: 0x7F08033C
-			public const int ptz_turn_sel = 2131231548;
+			public const int ptz_turn_selector = 2131231548;
 			
 			// aapt resource value: 0x7F08033D
-			public const int ptz_turn_selector = 2131231549;
+			public const int ptz_up_sel = 2131231549;
 			
 			// aapt resource value: 0x7F08033E
-			public const int ptz_up_sel = 2131231550;
+			public const int push_close = 2131231550;
 			
 			// aapt resource value: 0x7F08033F
-			public const int push_close = 2131231551;
+			public const int push_close_sel = 2131231551;
 			
 			// aapt resource value: 0x7F080340
-			public const int push_close_sel = 2131231552;
+			public const int push_close_selector = 2131231552;
 			
 			// aapt resource value: 0x7F080341
-			public const int push_close_selector = 2131231553;
+			public const int put_ico = 2131231553;
 			
 			// aapt resource value: 0x7F080342
-			public const int put_ico = 2131231554;
+			public const int query_loding1 = 2131231554;
 			
 			// aapt resource value: 0x7F080343
-			public const int query_loding1 = 2131231555;
+			public const int query_loding2 = 2131231555;
 			
 			// aapt resource value: 0x7F080344
-			public const int query_loding2 = 2131231556;
+			public const int query_loding3 = 2131231556;
 			
 			// aapt resource value: 0x7F080345
-			public const int query_loding3 = 2131231557;
+			public const int query_loding4 = 2131231557;
 			
 			// aapt resource value: 0x7F080346
-			public const int query_loding4 = 2131231558;
+			public const int query_loding5 = 2131231558;
 			
 			// aapt resource value: 0x7F080347
-			public const int query_loding5 = 2131231559;
+			public const int radius_rect_bg_qq_group = 2131231559;
 			
 			// aapt resource value: 0x7F080348
-			public const int radius_rect_bg_qq_group = 2131231560;
+			public const int read_button = 2131231560;
 			
 			// aapt resource value: 0x7F080349
-			public const int read_button = 2131231561;
+			public const int read_button_sel = 2131231561;
 			
 			// aapt resource value: 0x7F08034A
-			public const int read_button_sel = 2131231562;
+			public const int read_button_selector = 2131231562;
 			
 			// aapt resource value: 0x7F08034B
-			public const int read_button_selector = 2131231563;
+			public const int refresh_selector = 2131231563;
 			
 			// aapt resource value: 0x7F08034C
-			public const int refresh_selector = 2131231564;
+			public const int register_server_bg = 2131231564;
 			
 			// aapt resource value: 0x7F08034D
-			public const int register_server_bg = 2131231565;
+			public const int remote_cal_selector = 2131231565;
 			
 			// aapt resource value: 0x7F08034E
-			public const int remote_cal_selector = 2131231566;
+			public const int remote_exit_btn_selector = 2131231566;
 			
 			// aapt resource value: 0x7F08034F
-			public const int remote_exit_btn_selector = 2131231567;
+			public const int remote_list_pause_btn_selector = 2131231567;
 			
 			// aapt resource value: 0x7F080350
-			public const int remote_list_pause_btn_selector = 2131231568;
+			public const int remote_list_play_btn_selector = 2131231568;
 			
 			// aapt resource value: 0x7F080351
-			public const int remote_list_play_btn_selector = 2131231569;
+			public const int remote_list_soundoff_btn_selector = 2131231569;
 			
 			// aapt resource value: 0x7F080352
-			public const int remote_list_soundoff_btn_selector = 2131231570;
+			public const int remote_list_soundon_btn_selector = 2131231570;
 			
 			// aapt resource value: 0x7F080353
-			public const int remote_list_soundon_btn_selector = 2131231571;
+			public const int remote_play = 2131231571;
 			
 			// aapt resource value: 0x7F080354
-			public const int remote_play = 2131231572;
+			public const int remote_play_sel = 2131231572;
 			
 			// aapt resource value: 0x7F080355
-			public const int remote_play_sel = 2131231573;
+			public const int remote_seekbar_style = 2131231573;
 			
 			// aapt resource value: 0x7F080356
-			public const int remote_seekbar_style = 2131231574;
+			public const int remote_seekbar_thumb = 2131231574;
 			
 			// aapt resource value: 0x7F080357
-			public const int remote_seekbar_thumb = 2131231575;
-			
-			// aapt resource value: 0x7F080358
-			public const int reset_deivce = 2131231576;
-			
-			// aapt resource value: 0x7F080365
-			public const int results_4_dvr = 2131231589;
-			
-			// aapt resource value: 0x7F080366
-			public const int results_8_16_nvr = 2131231590;
-			
-			// aapt resource value: 0x7F080367
-			public const int results_8_nvr = 2131231591;
-			
-			// aapt resource value: 0x7F080368
-			public const int results_c6p = 2131231592;
-			
-			// aapt resource value: 0x7F080369
-			public const int results_mini_360_plus = 2131231593;
-			
-			// aapt resource value: 0x7F08036A
-			public const int results_mini_trooper = 2131231594;
-			
-			// aapt resource value: 0x7F08036B
-			public const int results_pic_a1 = 2131231595;
-			
-			// aapt resource value: 0x7F08036C
-			public const int results_pic_a1c = 2131231596;
-			
-			// aapt resource value: 0x7F08036D
-			public const int results_pic_a1s = 2131231597;
-			
-			// aapt resource value: 0x7F08036E
-			public const int results_pic_baidu_c2s = 2131231598;
-			
-			// aapt resource value: 0x7F08036F
-			public const int results_pic_bg = 2131231599;
-			
-			// aapt resource value: 0x7F080370
-			public const int results_pic_c1 = 2131231600;
-			
-			// aapt resource value: 0x7F080371
-			public const int results_pic_c2 = 2131231601;
-			
-			// aapt resource value: 0x7F080374
-			public const int results_pic_c2c = 2131231604;
-			
-			// aapt resource value: 0x7F080375
-			public const int results_pic_c2mini = 2131231605;
-			
-			// aapt resource value: 0x7F080376
-			public const int results_pic_c2mini2 = 2131231606;
-			
-			// aapt resource value: 0x7F080377
-			public const int results_pic_c2plus = 2131231607;
-			
-			// aapt resource value: 0x7F080378
-			public const int results_pic_c2s = 2131231608;
-			
-			// aapt resource value: 0x7F080379
-			public const int results_pic_c2w = 2131231609;
-			
-			// aapt resource value: 0x7F080372
-			public const int results_pic_c2_2 = 2131231602;
-			
-			// aapt resource value: 0x7F080373
-			public const int results_pic_c2_usa = 2131231603;
-			
-			// aapt resource value: 0x7F08037A
-			public const int results_pic_c3 = 2131231610;
-			
-			// aapt resource value: 0x7F08037B
-			public const int results_pic_c3c = 2131231611;
-			
-			// aapt resource value: 0x7F08037C
-			public const int results_pic_c3e = 2131231612;
-			
-			// aapt resource value: 0x7F08037D
-			public const int results_pic_c3s = 2131231613;
-			
-			// aapt resource value: 0x7F08037E
-			public const int results_pic_c4 = 2131231614;
-			
-			// aapt resource value: 0x7F08037F
-			public const int results_pic_c4c = 2131231615;
-			
-			// aapt resource value: 0x7F080380
-			public const int results_pic_c4e = 2131231616;
-			
-			// aapt resource value: 0x7F080381
-			public const int results_pic_c4s = 2131231617;
-			
-			// aapt resource value: 0x7F080382
-			public const int results_pic_c6 = 2131231618;
-			
-			// aapt resource value: 0x7F080383
-			public const int results_pic_c6c = 2131231619;
-			
-			// aapt resource value: 0x7F080384
-			public const int results_pic_c6c_1 = 2131231620;
-			
-			// aapt resource value: 0x7F080385
-			public const int results_pic_c6c_2 = 2131231621;
-			
-			// aapt resource value: 0x7F080386
-			public const int results_pic_c6h = 2131231622;
-			
-			// aapt resource value: 0x7F080387
-			public const int results_pic_co2 = 2131231623;
-			
-			// aapt resource value: 0x7F080388
-			public const int results_pic_d1 = 2131231624;
-			
-			// aapt resource value: 0x7F080389
-			public const int results_pic_default = 2131231625;
-			
-			// aapt resource value: 0x7F08038A
-			public const int results_pic_f1 = 2131231626;
-			
-			// aapt resource value: 0x7F08038B
-			public const int results_pic_h2c = 2131231627;
-			
-			// aapt resource value: 0x7F08038C
-			public const int results_pic_h2s = 2131231628;
-			
-			// aapt resource value: 0x7F08038D
-			public const int results_pic_n1 = 2131231629;
-			
-			// aapt resource value: 0x7F08038E
-			public const int results_pic_n1w = 2131231630;
-			
-			// aapt resource value: 0x7F08038F
-			public const int results_pic_r1 = 2131231631;
-			
-			// aapt resource value: 0x7F080390
-			public const int results_pic_r2 = 2131231632;
-			
-			// aapt resource value: 0x7F080391
-			public const int results_pic_w1 = 2131231633;
-			
-			// aapt resource value: 0x7F080392
-			public const int results_pic_w3 = 2131231634;
-			
-			// aapt resource value: 0x7F080393
-			public const int results_pic_x1 = 2131231635;
-			
-			// aapt resource value: 0x7F080394
-			public const int results_pic_x2 = 2131231636;
-			
-			// aapt resource value: 0x7F080395
-			public const int results_pic_x3 = 2131231637;
-			
-			// aapt resource value: 0x7F080396
-			public const int results_pic_x3c = 2131231638;
-			
-			// aapt resource value: 0x7F080397
-			public const int results_pic_x4 = 2131231639;
-			
-			// aapt resource value: 0x7F080398
-			public const int results_pic_z1 = 2131231640;
-			
-			// aapt resource value: 0x7F080399
-			public const int results_w2d = 2131231641;
-			
-			// aapt resource value: 0x7F08039A
-			public const int results_w2s = 2131231642;
-			
-			// aapt resource value: 0x7F08039B
-			public const int results_wlb = 2131231643;
-			
-			// aapt resource value: 0x7F08039C
-			public const int results_x5_108tp = 2131231644;
-			
-			// aapt resource value: 0x7F080359
-			public const int result_5k_vr104d = 2131231577;
-			
-			// aapt resource value: 0x7F08035A
-			public const int result_5k_vr116d = 2131231578;
-			
-			// aapt resource value: 0x7F08035B
-			public const int result_8_16dvr = 2131231579;
-			
-			// aapt resource value: 0x7F08035C
-			public const int result_cs_c3w = 2131231580;
-			
-			// aapt resource value: 0x7F08035D
-			public const int result_cs_vr104d = 2131231581;
-			
-			// aapt resource value: 0x7F08035E
-			public const int result_cs_vr108d = 2131231582;
-			
-			// aapt resource value: 0x7F08035F
-			public const int result_cs_vr116d = 2131231583;
-			
-			// aapt resource value: 0x7F080360
-			public const int result_pic_dh1 = 2131231584;
-			
-			// aapt resource value: 0x7F080361
-			public const int result_pic_doorbell = 2131231585;
-			
-			// aapt resource value: 0x7F080362
-			public const int result_pic_doorbell_hik = 2131231586;
-			
-			// aapt resource value: 0x7F080363
-			public const int result_pic_light = 2131231587;
+			public const int reset_deivce = 2131231575;
 			
 			// aapt resource value: 0x7F080364
-			public const int result_x5c = 2131231588;
+			public const int results_4_dvr = 2131231588;
+			
+			// aapt resource value: 0x7F080365
+			public const int results_8_16_nvr = 2131231589;
+			
+			// aapt resource value: 0x7F080366
+			public const int results_8_nvr = 2131231590;
+			
+			// aapt resource value: 0x7F080367
+			public const int results_c6p = 2131231591;
+			
+			// aapt resource value: 0x7F080368
+			public const int results_mini_360_plus = 2131231592;
+			
+			// aapt resource value: 0x7F080369
+			public const int results_mini_trooper = 2131231593;
+			
+			// aapt resource value: 0x7F08036A
+			public const int results_pic_a1 = 2131231594;
+			
+			// aapt resource value: 0x7F08036B
+			public const int results_pic_a1c = 2131231595;
+			
+			// aapt resource value: 0x7F08036C
+			public const int results_pic_a1s = 2131231596;
+			
+			// aapt resource value: 0x7F08036D
+			public const int results_pic_baidu_c2s = 2131231597;
+			
+			// aapt resource value: 0x7F08036E
+			public const int results_pic_bg = 2131231598;
+			
+			// aapt resource value: 0x7F08036F
+			public const int results_pic_c1 = 2131231599;
+			
+			// aapt resource value: 0x7F080370
+			public const int results_pic_c2 = 2131231600;
+			
+			// aapt resource value: 0x7F080373
+			public const int results_pic_c2c = 2131231603;
+			
+			// aapt resource value: 0x7F080374
+			public const int results_pic_c2mini = 2131231604;
+			
+			// aapt resource value: 0x7F080375
+			public const int results_pic_c2mini2 = 2131231605;
+			
+			// aapt resource value: 0x7F080376
+			public const int results_pic_c2plus = 2131231606;
+			
+			// aapt resource value: 0x7F080377
+			public const int results_pic_c2s = 2131231607;
+			
+			// aapt resource value: 0x7F080378
+			public const int results_pic_c2w = 2131231608;
+			
+			// aapt resource value: 0x7F080371
+			public const int results_pic_c2_2 = 2131231601;
+			
+			// aapt resource value: 0x7F080372
+			public const int results_pic_c2_usa = 2131231602;
+			
+			// aapt resource value: 0x7F080379
+			public const int results_pic_c3 = 2131231609;
+			
+			// aapt resource value: 0x7F08037A
+			public const int results_pic_c3c = 2131231610;
+			
+			// aapt resource value: 0x7F08037B
+			public const int results_pic_c3e = 2131231611;
+			
+			// aapt resource value: 0x7F08037C
+			public const int results_pic_c3s = 2131231612;
+			
+			// aapt resource value: 0x7F08037D
+			public const int results_pic_c4 = 2131231613;
+			
+			// aapt resource value: 0x7F08037E
+			public const int results_pic_c4c = 2131231614;
+			
+			// aapt resource value: 0x7F08037F
+			public const int results_pic_c4e = 2131231615;
+			
+			// aapt resource value: 0x7F080380
+			public const int results_pic_c4s = 2131231616;
+			
+			// aapt resource value: 0x7F080381
+			public const int results_pic_c6 = 2131231617;
+			
+			// aapt resource value: 0x7F080382
+			public const int results_pic_c6c = 2131231618;
+			
+			// aapt resource value: 0x7F080383
+			public const int results_pic_c6c_1 = 2131231619;
+			
+			// aapt resource value: 0x7F080384
+			public const int results_pic_c6c_2 = 2131231620;
+			
+			// aapt resource value: 0x7F080385
+			public const int results_pic_c6h = 2131231621;
+			
+			// aapt resource value: 0x7F080386
+			public const int results_pic_co2 = 2131231622;
+			
+			// aapt resource value: 0x7F080387
+			public const int results_pic_d1 = 2131231623;
+			
+			// aapt resource value: 0x7F080388
+			public const int results_pic_default = 2131231624;
+			
+			// aapt resource value: 0x7F080389
+			public const int results_pic_f1 = 2131231625;
+			
+			// aapt resource value: 0x7F08038A
+			public const int results_pic_h2c = 2131231626;
+			
+			// aapt resource value: 0x7F08038B
+			public const int results_pic_h2s = 2131231627;
+			
+			// aapt resource value: 0x7F08038C
+			public const int results_pic_n1 = 2131231628;
+			
+			// aapt resource value: 0x7F08038D
+			public const int results_pic_n1w = 2131231629;
+			
+			// aapt resource value: 0x7F08038E
+			public const int results_pic_r1 = 2131231630;
+			
+			// aapt resource value: 0x7F08038F
+			public const int results_pic_r2 = 2131231631;
+			
+			// aapt resource value: 0x7F080390
+			public const int results_pic_w1 = 2131231632;
+			
+			// aapt resource value: 0x7F080391
+			public const int results_pic_w3 = 2131231633;
+			
+			// aapt resource value: 0x7F080392
+			public const int results_pic_x1 = 2131231634;
+			
+			// aapt resource value: 0x7F080393
+			public const int results_pic_x2 = 2131231635;
+			
+			// aapt resource value: 0x7F080394
+			public const int results_pic_x3 = 2131231636;
+			
+			// aapt resource value: 0x7F080395
+			public const int results_pic_x3c = 2131231637;
+			
+			// aapt resource value: 0x7F080396
+			public const int results_pic_x4 = 2131231638;
+			
+			// aapt resource value: 0x7F080397
+			public const int results_pic_z1 = 2131231639;
+			
+			// aapt resource value: 0x7F080398
+			public const int results_w2d = 2131231640;
+			
+			// aapt resource value: 0x7F080399
+			public const int results_w2s = 2131231641;
+			
+			// aapt resource value: 0x7F08039A
+			public const int results_wlb = 2131231642;
+			
+			// aapt resource value: 0x7F08039B
+			public const int results_x5_108tp = 2131231643;
+			
+			// aapt resource value: 0x7F080358
+			public const int result_5k_vr104d = 2131231576;
+			
+			// aapt resource value: 0x7F080359
+			public const int result_5k_vr116d = 2131231577;
+			
+			// aapt resource value: 0x7F08035A
+			public const int result_8_16dvr = 2131231578;
+			
+			// aapt resource value: 0x7F08035B
+			public const int result_cs_c3w = 2131231579;
+			
+			// aapt resource value: 0x7F08035C
+			public const int result_cs_vr104d = 2131231580;
+			
+			// aapt resource value: 0x7F08035D
+			public const int result_cs_vr108d = 2131231581;
+			
+			// aapt resource value: 0x7F08035E
+			public const int result_cs_vr116d = 2131231582;
+			
+			// aapt resource value: 0x7F08035F
+			public const int result_pic_dh1 = 2131231583;
+			
+			// aapt resource value: 0x7F080360
+			public const int result_pic_doorbell = 2131231584;
+			
+			// aapt resource value: 0x7F080361
+			public const int result_pic_doorbell_hik = 2131231585;
+			
+			// aapt resource value: 0x7F080362
+			public const int result_pic_light = 2131231586;
+			
+			// aapt resource value: 0x7F080363
+			public const int result_x5c = 2131231587;
+			
+			// aapt resource value: 0x7F08039C
+			public const int right_horizontal = 2131231644;
 			
 			// aapt resource value: 0x7F08039D
-			public const int right_horizontal = 2131231645;
+			public const int right_twinkle = 2131231645;
 			
 			// aapt resource value: 0x7F08039E
-			public const int right_twinkle = 2131231646;
+			public const int ring_off = 2131231646;
 			
 			// aapt resource value: 0x7F08039F
-			public const int ring_off = 2131231647;
+			public const int say_bg = 2131231647;
 			
 			// aapt resource value: 0x7F0803A0
-			public const int say_bg = 2131231648;
+			public const int screenshot = 2131231648;
 			
 			// aapt resource value: 0x7F0803A1
-			public const int screenshot = 2131231649;
+			public const int screenshot_def = 2131231649;
 			
 			// aapt resource value: 0x7F0803A2
-			public const int screenshot_def = 2131231650;
+			public const int screenshot_sel = 2131231650;
 			
 			// aapt resource value: 0x7F0803A3
-			public const int screenshot_sel = 2131231651;
+			public const int search = 2131231651;
 			
 			// aapt resource value: 0x7F0803A4
-			public const int search = 2131231652;
+			public const int search_bnt = 2131231652;
 			
 			// aapt resource value: 0x7F0803A5
-			public const int search_bnt = 2131231653;
+			public const int search_bnt_sel = 2131231653;
 			
 			// aapt resource value: 0x7F0803A6
-			public const int search_bnt_sel = 2131231654;
+			public const int search_button_selector = 2131231654;
 			
 			// aapt resource value: 0x7F0803A7
-			public const int search_button_selector = 2131231655;
+			public const int search_input = 2131231655;
 			
 			// aapt resource value: 0x7F0803A8
-			public const int search_input = 2131231656;
-			
-			// aapt resource value: 0x7F0803A9
-			public const int seekbar_thumb = 2131231657;
-			
-			// aapt resource value: 0x7F0803AB
-			public const int selected_icon = 2131231659;
-			
-			// aapt resource value: 0x7F0803AC
-			public const int selector_pickerview_btn = 2131231660;
+			public const int seekbar_thumb = 2131231656;
 			
 			// aapt resource value: 0x7F0803AA
-			public const int select_icon = 2131231658;
+			public const int selected_icon = 2131231658;
+			
+			// aapt resource value: 0x7F0803AB
+			public const int selector_pickerview_btn = 2131231659;
+			
+			// aapt resource value: 0x7F0803A9
+			public const int select_icon = 2131231657;
+			
+			// aapt resource value: 0x7F0803AC
+			public const int server1 = 2131231660;
 			
 			// aapt resource value: 0x7F0803AD
-			public const int server1 = 2131231661;
+			public const int server2 = 2131231661;
 			
 			// aapt resource value: 0x7F0803AE
-			public const int server2 = 2131231662;
+			public const int server3 = 2131231662;
 			
 			// aapt resource value: 0x7F0803AF
-			public const int server3 = 2131231663;
+			public const int server4 = 2131231663;
 			
 			// aapt resource value: 0x7F0803B0
-			public const int server4 = 2131231664;
+			public const int setup = 2131231664;
 			
 			// aapt resource value: 0x7F0803B1
-			public const int setup = 2131231665;
+			public const int setup_sel = 2131231665;
 			
 			// aapt resource value: 0x7F0803B2
-			public const int setup_sel = 2131231666;
+			public const int setup_wechat = 2131231666;
 			
 			// aapt resource value: 0x7F0803B3
-			public const int setup_wechat = 2131231667;
+			public const int share_management_label_button = 2131231667;
 			
 			// aapt resource value: 0x7F0803B4
-			public const int share_management_label_button = 2131231668;
+			public const int share_management_label_button_sel = 2131231668;
 			
 			// aapt resource value: 0x7F0803B5
-			public const int share_management_label_button_sel = 2131231669;
+			public const int shipin7_alarm_msg_new = 2131231669;
 			
 			// aapt resource value: 0x7F0803B6
-			public const int shipin7_alarm_msg_new = 2131231670;
+			public const int shrink_screen_normal = 2131231670;
 			
 			// aapt resource value: 0x7F0803B7
-			public const int shrink_screen_normal = 2131231671;
+			public const int shrink_screen_pressed = 2131231671;
 			
 			// aapt resource value: 0x7F0803B8
-			public const int shrink_screen_pressed = 2131231672;
+			public const int small_button_cameralist = 2131231672;
 			
 			// aapt resource value: 0x7F0803B9
-			public const int small_button_cameralist = 2131231673;
+			public const int sound_off = 2131231673;
 			
 			// aapt resource value: 0x7F0803BA
-			public const int sound_off = 2131231674;
+			public const int sound_off_blue = 2131231674;
 			
 			// aapt resource value: 0x7F0803BB
-			public const int sound_off_blue = 2131231675;
+			public const int sound_off_sel = 2131231675;
 			
 			// aapt resource value: 0x7F0803BC
-			public const int sound_off_sel = 2131231676;
+			public const int sound_off_sel_blue = 2131231676;
 			
 			// aapt resource value: 0x7F0803BD
-			public const int sound_off_sel_blue = 2131231677;
+			public const int sound_on = 2131231677;
 			
 			// aapt resource value: 0x7F0803BE
-			public const int sound_on = 2131231678;
+			public const int sound_on_blue = 2131231678;
 			
 			// aapt resource value: 0x7F0803BF
-			public const int sound_on_blue = 2131231679;
+			public const int sound_on_sel = 2131231679;
 			
 			// aapt resource value: 0x7F0803C0
-			public const int sound_on_sel = 2131231680;
+			public const int sound_on_sel_blue = 2131231680;
 			
 			// aapt resource value: 0x7F0803C1
-			public const int sound_on_sel_blue = 2131231681;
+			public const int sound_source = 2131231681;
 			
 			// aapt resource value: 0x7F0803C2
-			public const int sound_source = 2131231682;
+			public const int sound_source_sel = 2131231682;
 			
 			// aapt resource value: 0x7F0803C3
-			public const int sound_source_sel = 2131231683;
+			public const int speech = 2131231683;
 			
 			// aapt resource value: 0x7F0803C4
-			public const int speech = 2131231684;
+			public const int speech_0 = 2131231684;
 			
 			// aapt resource value: 0x7F0803C5
-			public const int speech_0 = 2131231685;
+			public const int speech_1 = 2131231685;
 			
 			// aapt resource value: 0x7F0803C6
-			public const int speech_1 = 2131231686;
+			public const int speech_2 = 2131231686;
 			
 			// aapt resource value: 0x7F0803C7
-			public const int speech_2 = 2131231687;
+			public const int speech_3 = 2131231687;
 			
 			// aapt resource value: 0x7F0803C8
-			public const int speech_3 = 2131231688;
+			public const int speech_4 = 2131231688;
 			
 			// aapt resource value: 0x7F0803C9
-			public const int speech_4 = 2131231689;
+			public const int speech_5 = 2131231689;
 			
 			// aapt resource value: 0x7F0803CA
-			public const int speech_5 = 2131231690;
+			public const int speech_full_selector = 2131231690;
 			
 			// aapt resource value: 0x7F0803CB
-			public const int speech_full_selector = 2131231691;
-			
-			// aapt resource value: 0x7F0803CC
-			public const int stop = 2131231692;
-			
-			// aapt resource value: 0x7F0803CF
-			public const int stopbtn_selector = 2131231695;
-			
-			// aapt resource value: 0x7F0803D0
-			public const int stoplay_btn = 2131231696;
-			
-			// aapt resource value: 0x7F0803D1
-			public const int stoplay_btn_sel = 2131231697;
-			
-			// aapt resource value: 0x7F0803CD
-			public const int stop_disable = 2131231693;
+			public const int stop = 2131231691;
 			
 			// aapt resource value: 0x7F0803CE
-			public const int stop_press = 2131231694;
+			public const int stopbtn_selector = 2131231694;
+			
+			// aapt resource value: 0x7F0803CF
+			public const int stoplay_btn = 2131231695;
+			
+			// aapt resource value: 0x7F0803D0
+			public const int stoplay_btn_sel = 2131231696;
+			
+			// aapt resource value: 0x7F0803CC
+			public const int stop_disable = 2131231692;
+			
+			// aapt resource value: 0x7F0803CD
+			public const int stop_press = 2131231693;
+			
+			// aapt resource value: 0x7F0803D1
+			public const int success = 2131231697;
 			
 			// aapt resource value: 0x7F0803D2
-			public const int success = 2131231698;
+			public const int success_icon = 2131231698;
 			
 			// aapt resource value: 0x7F0803D3
-			public const int success_icon = 2131231699;
+			public const int success_img = 2131231699;
 			
 			// aapt resource value: 0x7F0803D4
-			public const int success_img = 2131231700;
+			public const int sure_background_def = 2131231700;
 			
 			// aapt resource value: 0x7F0803D5
-			public const int sure_background_def = 2131231701;
+			public const int sure_background_sel = 2131231701;
 			
 			// aapt resource value: 0x7F0803D6
-			public const int sure_background_sel = 2131231702;
+			public const int switch_camera = 2131231702;
 			
 			// aapt resource value: 0x7F0803D7
-			public const int switch_camera = 2131231703;
+			public const int tab_left = 2131231703;
 			
 			// aapt resource value: 0x7F0803D8
-			public const int tab_left = 2131231704;
+			public const int tab_left_sel = 2131231704;
 			
 			// aapt resource value: 0x7F0803D9
-			public const int tab_left_sel = 2131231705;
+			public const int tab_right = 2131231705;
 			
 			// aapt resource value: 0x7F0803DA
-			public const int tab_right = 2131231706;
+			public const int tab_right_sel = 2131231706;
 			
 			// aapt resource value: 0x7F0803DB
-			public const int tab_right_sel = 2131231707;
+			public const int tiltle_button_selector = 2131231707;
 			
 			// aapt resource value: 0x7F0803DC
-			public const int tiltle_button_selector = 2131231708;
+			public const int timeline = 2131231708;
 			
 			// aapt resource value: 0x7F0803DD
-			public const int timeline = 2131231709;
+			public const int timeline_sel = 2131231709;
 			
 			// aapt resource value: 0x7F0803DE
-			public const int timeline_sel = 2131231710;
+			public const int tip_background = 2131231710;
 			
 			// aapt resource value: 0x7F0803DF
-			public const int tip_background = 2131231711;
+			public const int tip_textview_bg = 2131231711;
 			
 			// aapt resource value: 0x7F0803E0
-			public const int tip_textview_bg = 2131231712;
+			public const int title_down_bg = 2131231712;
 			
 			// aapt resource value: 0x7F0803E1
-			public const int title_down_bg = 2131231713;
+			public const int title_down_play = 2131231713;
 			
 			// aapt resource value: 0x7F0803E2
-			public const int title_down_play = 2131231714;
+			public const int title_down_play_sel = 2131231714;
 			
 			// aapt resource value: 0x7F0803E3
-			public const int title_down_play_sel = 2131231715;
+			public const int title_down_play_selector = 2131231715;
 			
 			// aapt resource value: 0x7F0803E4
-			public const int title_down_play_selector = 2131231716;
+			public const int title_menu_bg = 2131231716;
 			
 			// aapt resource value: 0x7F0803E5
-			public const int title_menu_bg = 2131231717;
+			public const int tittel_button_bg = 2131231717;
 			
 			// aapt resource value: 0x7F0803E6
-			public const int tittel_button_bg = 2131231718;
+			public const int tittel_button_press_bg = 2131231718;
 			
 			// aapt resource value: 0x7F0803E7
-			public const int tittel_button_press_bg = 2131231719;
+			public const int tooltip_frame_dark = 2131231719;
 			
 			// aapt resource value: 0x7F0803E8
-			public const int tooltip_frame_dark = 2131231720;
+			public const int tooltip_frame_light = 2131231720;
 			
 			// aapt resource value: 0x7F0803E9
-			public const int tooltip_frame_light = 2131231721;
+			public const int top_bar_bg = 2131231721;
 			
 			// aapt resource value: 0x7F0803EA
-			public const int top_bar_bg = 2131231722;
+			public const int track_bar_bg = 2131231722;
 			
 			// aapt resource value: 0x7F0803EB
-			public const int track_bar_bg = 2131231723;
+			public const int translucent = 2131231723;
 			
 			// aapt resource value: 0x7F0803EC
-			public const int translucent = 2131231724;
+			public const int @unchecked = 2131231724;
 			
 			// aapt resource value: 0x7F0803ED
-			public const int @unchecked = 2131231725;
+			public const int unlock = 2131231725;
 			
 			// aapt resource value: 0x7F0803EE
-			public const int unlock = 2131231726;
+			public const int unlock_def = 2131231726;
 			
 			// aapt resource value: 0x7F0803EF
-			public const int unlock_def = 2131231727;
-			
-			// aapt resource value: 0x7F0803F0
-			public const int unlock_sel = 2131231728;
-			
-			// aapt resource value: 0x7F0803F3
-			public const int upgrade = 2131231731;
-			
-			// aapt resource value: 0x7F0803F1
-			public const int up_horizontal = 2131231729;
+			public const int unlock_sel = 2131231727;
 			
 			// aapt resource value: 0x7F0803F2
-			public const int up_twinkle = 2131231730;
+			public const int upgrade = 2131231730;
+			
+			// aapt resource value: 0x7F0803F0
+			public const int up_horizontal = 2131231728;
+			
+			// aapt resource value: 0x7F0803F1
+			public const int up_twinkle = 2131231729;
+			
+			// aapt resource value: 0x7F0803F3
+			public const int user = 2131231731;
 			
 			// aapt resource value: 0x7F0803F4
-			public const int user = 2131231732;
+			public const int vertical_preview_sound_selector = 2131231732;
 			
 			// aapt resource value: 0x7F0803F5
-			public const int vertical_preview_sound_selector = 2131231733;
-			
-			// aapt resource value: 0x7F0803F6
-			public const int vertical_preview_stop_selector = 2131231734;
-			
-			// aapt resource value: 0x7F080406
-			public const int videogo_icon = 2131231750;
-			
-			// aapt resource value: 0x7F0803F7
-			public const int video_background = 2131231735;
-			
-			// aapt resource value: 0x7F0803F8
-			public const int video_camera1_1 = 2131231736;
-			
-			// aapt resource value: 0x7F0803F9
-			public const int video_camera1_2 = 2131231737;
-			
-			// aapt resource value: 0x7F0803FA
-			public const int video_camera1_3 = 2131231738;
-			
-			// aapt resource value: 0x7F0803FB
-			public const int video_file_watermark = 2131231739;
-			
-			// aapt resource value: 0x7F0803FC
-			public const int video_quality_selector = 2131231740;
-			
-			// aapt resource value: 0x7F0803FD
-			public const int video_talk_sdk_icn_watch = 2131231741;
-			
-			// aapt resource value: 0x7F0803FE
-			public const int video_talk_sdk_placeholder_images_user = 2131231742;
-			
-			// aapt resource value: 0x7F0803FF
-			public const int video_talk_sdk_video_answer = 2131231743;
-			
-			// aapt resource value: 0x7F080400
-			public const int video_talk_sdk_video_hangup = 2131231744;
-			
-			// aapt resource value: 0x7F080401
-			public const int video_talk_sdk_video_record_off = 2131231745;
-			
-			// aapt resource value: 0x7F080402
-			public const int video_talk_sdk_video_record_on = 2131231746;
-			
-			// aapt resource value: 0x7F080403
-			public const int video_talk_sdk_video_snap = 2131231747;
-			
-			// aapt resource value: 0x7F080404
-			public const int video_talk_sdk_video_stop = 2131231748;
+			public const int vertical_preview_stop_selector = 2131231733;
 			
 			// aapt resource value: 0x7F080405
-			public const int video_talk_sdk_video_switch_camera = 2131231749;
+			public const int videogo_icon = 2131231749;
 			
-			// aapt resource value: 0x7F080410
-			public const int waiting_bg = 2131231760;
+			// aapt resource value: 0x7F0803F6
+			public const int video_background = 2131231734;
 			
-			// aapt resource value: 0x7F080411
-			public const int waiting_progressbar_bg = 2131231761;
+			// aapt resource value: 0x7F0803F7
+			public const int video_camera1_1 = 2131231735;
 			
-			// aapt resource value: 0x7F080407
-			public const int wait_1 = 2131231751;
+			// aapt resource value: 0x7F0803F8
+			public const int video_camera1_2 = 2131231736;
 			
-			// aapt resource value: 0x7F080408
-			public const int wait_2 = 2131231752;
+			// aapt resource value: 0x7F0803F9
+			public const int video_camera1_3 = 2131231737;
 			
-			// aapt resource value: 0x7F080409
-			public const int wait_3 = 2131231753;
+			// aapt resource value: 0x7F0803FA
+			public const int video_file_watermark = 2131231738;
 			
-			// aapt resource value: 0x7F08040A
-			public const int wait_4 = 2131231754;
+			// aapt resource value: 0x7F0803FB
+			public const int video_quality_selector = 2131231739;
 			
-			// aapt resource value: 0x7F08040B
-			public const int wait_5 = 2131231755;
+			// aapt resource value: 0x7F0803FC
+			public const int video_talk_sdk_icn_watch = 2131231740;
 			
-			// aapt resource value: 0x7F08040C
-			public const int wait_6 = 2131231756;
+			// aapt resource value: 0x7F0803FD
+			public const int video_talk_sdk_placeholder_images_user = 2131231741;
 			
-			// aapt resource value: 0x7F08040D
-			public const int wait_7 = 2131231757;
+			// aapt resource value: 0x7F0803FE
+			public const int video_talk_sdk_video_answer = 2131231742;
 			
-			// aapt resource value: 0x7F08040E
-			public const int wait_8 = 2131231758;
+			// aapt resource value: 0x7F0803FF
+			public const int video_talk_sdk_video_hangup = 2131231743;
+			
+			// aapt resource value: 0x7F080400
+			public const int video_talk_sdk_video_record_off = 2131231744;
+			
+			// aapt resource value: 0x7F080401
+			public const int video_talk_sdk_video_record_on = 2131231745;
+			
+			// aapt resource value: 0x7F080402
+			public const int video_talk_sdk_video_snap = 2131231746;
+			
+			// aapt resource value: 0x7F080403
+			public const int video_talk_sdk_video_stop = 2131231747;
+			
+			// aapt resource value: 0x7F080404
+			public const int video_talk_sdk_video_switch_camera = 2131231748;
 			
 			// aapt resource value: 0x7F08040F
-			public const int wait_upload_img = 2131231759;
+			public const int waiting_bg = 2131231759;
+			
+			// aapt resource value: 0x7F080410
+			public const int waiting_progressbar_bg = 2131231760;
+			
+			// aapt resource value: 0x7F080406
+			public const int wait_1 = 2131231750;
+			
+			// aapt resource value: 0x7F080407
+			public const int wait_2 = 2131231751;
+			
+			// aapt resource value: 0x7F080408
+			public const int wait_3 = 2131231752;
+			
+			// aapt resource value: 0x7F080409
+			public const int wait_4 = 2131231753;
+			
+			// aapt resource value: 0x7F08040A
+			public const int wait_5 = 2131231754;
+			
+			// aapt resource value: 0x7F08040B
+			public const int wait_6 = 2131231755;
+			
+			// aapt resource value: 0x7F08040C
+			public const int wait_7 = 2131231756;
+			
+			// aapt resource value: 0x7F08040D
+			public const int wait_8 = 2131231757;
+			
+			// aapt resource value: 0x7F08040E
+			public const int wait_upload_img = 2131231758;
+			
+			// aapt resource value: 0x7F080411
+			public const int water_alarm = 2131231761;
 			
 			// aapt resource value: 0x7F080412
-			public const int water_alarm = 2131231762;
+			public const int wifi_config_bg = 2131231762;
 			
 			// aapt resource value: 0x7F080413
-			public const int wifi_config_bg = 2131231763;
+			public const int wifi_connect_tip = 2131231763;
 			
 			// aapt resource value: 0x7F080414
-			public const int wifi_connect_tip = 2131231764;
+			public const int yuntai_normal = 2131231764;
 			
 			// aapt resource value: 0x7F080415
-			public const int yuntai_normal = 2131231765;
+			public const int yuntai_pressed = 2131231765;
 			
 			// aapt resource value: 0x7F080416
-			public const int yuntai_pressed = 2131231766;
+			public const int yxs_head = 2131231766;
 			
 			// aapt resource value: 0x7F080417
-			public const int yxs_head = 2131231767;
-			
-			// aapt resource value: 0x7F080418
-			public const int z1_bg = 2131231768;
+			public const int z1_bg = 2131231767;
 			
 			static Drawable()
 			{
@@ -10428,10 +10426,7 @@
 			public const int ic_launcher_round = 2131558401;
 			
 			// aapt resource value: 0x7F0D0003
-			public const int Loading = 2131558403;
-			
-			// aapt resource value: 0x7F0D0004
-			public const int videogo_icon = 2131558404;
+			public const int videogo_icon = 2131558403;
 			
 			static Mipmap()
 			{
diff --git a/HDL-ON_Android/Resources/drawable/Loading.png b/HDL-ON_Android/Resources/drawable/Loading.png
index 9f84a83..ea80938 100644
--- a/HDL-ON_Android/Resources/drawable/Loading.png
+++ b/HDL-ON_Android/Resources/drawable/Loading.png
Binary files differ
diff --git a/HDL-ON_Android/Resources/drawable/answer.png b/HDL-ON_Android/Resources/drawable/answer.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_Android/Resources/drawable/back_icon.png b/HDL-ON_Android/Resources/drawable/back_icon.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_Android/Resources/drawable/dialog_background.xml b/HDL-ON_Android/Resources/drawable/dialog_background.xml
old mode 100755
new mode 100644
diff --git a/HDL-ON_Android/Resources/drawable/hangup.png b/HDL-ON_Android/Resources/drawable/hangup.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_Android/Resources/drawable/mic.png b/HDL-ON_Android/Resources/drawable/mic.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_Android/Resources/drawable/screenshot_def.png b/HDL-ON_Android/Resources/drawable/screenshot_def.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_Android/Resources/drawable/screenshot_sel.png b/HDL-ON_Android/Resources/drawable/screenshot_sel.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_Android/Resources/drawable/sure_background_def.xml b/HDL-ON_Android/Resources/drawable/sure_background_def.xml
old mode 100755
new mode 100644
diff --git a/HDL-ON_Android/Resources/drawable/sure_background_sel.xml b/HDL-ON_Android/Resources/drawable/sure_background_sel.xml
old mode 100755
new mode 100644
diff --git a/HDL-ON_Android/Resources/drawable/tip_background.xml b/HDL-ON_Android/Resources/drawable/tip_background.xml
old mode 100755
new mode 100644
diff --git a/HDL-ON_Android/Resources/drawable/unlock_def.png b/HDL-ON_Android/Resources/drawable/unlock_def.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_Android/Resources/drawable/unlock_sel.png b/HDL-ON_Android/Resources/drawable/unlock_sel.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_Android/Resources/drawable/video_background.png b/HDL-ON_Android/Resources/drawable/video_background.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_Android/Resources/mipmap-hdpi/Loading.png b/HDL-ON_Android/Resources/mipmap-hdpi/Loading.png
deleted file mode 100644
index 57f5c27..0000000
--- a/HDL-ON_Android/Resources/mipmap-hdpi/Loading.png
+++ /dev/null
Binary files differ
diff --git a/HDL-ON_Android/Resources/mipmap-mdpi/Loading.png b/HDL-ON_Android/Resources/mipmap-mdpi/Loading.png
deleted file mode 100644
index 57f5c27..0000000
--- a/HDL-ON_Android/Resources/mipmap-mdpi/Loading.png
+++ /dev/null
Binary files differ
diff --git a/HDL-ON_Android/Resources/mipmap-xhdpi/Loading.png b/HDL-ON_Android/Resources/mipmap-xhdpi/Loading.png
deleted file mode 100644
index 57f5c27..0000000
--- a/HDL-ON_Android/Resources/mipmap-xhdpi/Loading.png
+++ /dev/null
Binary files differ
diff --git a/HDL-ON_Android/Resources/mipmap-xxhdpi/Loading.png b/HDL-ON_Android/Resources/mipmap-xxhdpi/Loading.png
deleted file mode 100644
index ea64f54..0000000
--- a/HDL-ON_Android/Resources/mipmap-xxhdpi/Loading.png
+++ /dev/null
Binary files differ
diff --git a/HDL-ON_Android/Resources/mipmap-xxxhdpi/Loading.png b/HDL-ON_Android/Resources/mipmap-xxxhdpi/Loading.png
deleted file mode 100644
index 3544e75..0000000
--- a/HDL-ON_Android/Resources/mipmap-xxxhdpi/Loading.png
+++ /dev/null
Binary files differ
diff --git a/HDL-ON_iOS/HDL-ON_iOS.csproj b/HDL-ON_iOS/HDL-ON_iOS.csproj
index fc3a4d3..4e14c8e 100644
--- a/HDL-ON_iOS/HDL-ON_iOS.csproj
+++ b/HDL-ON_iOS/HDL-ON_iOS.csproj
@@ -55,7 +55,7 @@
         <MtouchExtraArgs>-gcc_flags="-dead_strip -ObjC"</MtouchExtraArgs>
         <MtouchEnableSGenConc>false</MtouchEnableSGenConc>
 <CodesignEntitlements>Entitlements.plist</CodesignEntitlements>
-<CodesignProvision>On+Dev-20210604-1</CodesignProvision>
+<CodesignProvision>On+Dev-20210428-1</CodesignProvision>
     </PropertyGroup>
     <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhone' ">
         <DebugType>none</DebugType>
@@ -647,6 +647,7 @@
       <BundleResource Include="Resources\Phone\FunctionIcon\Electrical\TV\PlusIcon.png" />
       <BundleResource Include="Resources\Phone\FunctionIcon\Electrical\TV\ReduceIcon.png" />
       <BundleResource Include="Resources\Phone\FunctionIcon\Electrical\TVThinIcon.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Electrical\TVIcon.png" />
       <BundleResource Include="Resources\Phone\FunctionIcon\EnvironmentalScience\SmogIcon.png" />
       <BundleResource Include="Resources\Phone\FunctionIcon\EnvironmentalScience\LocationIcon.png" />
       <BundleResource Include="Resources\Phone\FunctionIcon\EnvironmentalScience\UpArrow.png" />
@@ -933,7 +934,6 @@
       <BundleResource Include="Resources\Phone\FunctionIcon\Electrical\Fan\ComfortableModeSelect.png" />
       <BundleResource Include="Resources\Phone\FunctionIcon\Electrical\Fan\DialogTitleMenuGroud4.png" />
       <BundleResource Include="Resources\Phone\FunctionIcon\Electrical\WeepRobot\MuteSelect.png" />
-      <BundleResource Include="Resources\Phone\FunctionIcon\Electrical\WeepRobot\Battery.png" />
       <BundleResource Include="Resources\Phone\FunctionIcon\Electrical\WeepRobot\ControlRight.png" />
       <BundleResource Include="Resources\Phone\FunctionIcon\Electrical\WeepRobot\AreaMode.png" />
       <BundleResource Include="Resources\Phone\FunctionIcon\Electrical\WeepRobot\AutoMode.png" />
@@ -1238,27 +1238,32 @@
       <BundleResource Include="Resources\Phone\FunctionIcon\Curtain\CurtainUpIcon.png" />
       <BundleResource Include="Resources\Phone\FunctionIcon\Curtain\CurtainUpIconOn.png" />
       <BundleResource Include="Resources\Phone\PersonalCenter\SmartSpeaker.png" />
-      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\irpjt_blue.png" />
-      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\irpjt_white.png" />
-      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\irstb_blue.png" />
-      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\irstb_white.png" />
-      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\irpjt.png" />
-      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\irstb.png" />
-      <BundleResource Include="Resources\Phone\FunctionIcon\Energy\EnergyDrodUpIcon.png" />
-      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\sensormegahealth.png" />
-      <BundleResource Include="Resources\Phone\FunctionIcon\Electrical\TV\TVOkIconDown.png" />
-      <BundleResource Include="Resources\Phone\FunctionIcon\Electrical\TV\TVOkIconLeft.png" />
-      <BundleResource Include="Resources\Phone\FunctionIcon\Electrical\TV\TVOkIconRight.png" />
-      <BundleResource Include="Resources\Phone\FunctionIcon\Electrical\TV\TVOkIconUp.png" />
-      <BundleResource Include="Resources\Phone\FunctionIcon\Electrical\TV\TVOkIconOk.png" />
-      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\irtvxm.png" />
-      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\irtvxm_blue.png" />
-      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\irtvxm_white.png" />
-      <BundleResource Include="Resources\Phone\PersonalCenter\AddDevice\SenesorMegahealthBg.png" />
-      <BundleResource Include="Resources\Phone\Public\Scan.png" />
-      <BundleResource Include="Resources\Phone\FunctionIcon\ArmSensor\SomeoneFellBgIcon.png" />
-      <BundleResource Include="Resources\Phone\FunctionIcon\ArmSensor\SomeoneInBgIcon.png" />
-      <BundleResource Include="Resources\Phone\FunctionIcon\ArmSensor\UnderProtectionBgIcon.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\Redistribution.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\DoorLock.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\LockPictrue2.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\UnLockManager.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\LockPictrue1.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\NormallyOpenIcon2.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\CrearPswBackgroud.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\NormallyOpenIcon3.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\Editor.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\NormallyOpenIcon1.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\Connect.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\History.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\Screen.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\BindScene.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\Shard.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\Delete.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\UnConnect.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\More.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\Mute.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\Voice.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\UnLockPictrue1.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\Hide.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\UnLockPictrue2.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\UnLockPictrue3.png" />
+      <BundleResource Include="Resources\Phone\Public\BatteryEnough.png" />
+      <BundleResource Include="Resources\Phone\Public\BatteryNot.png" />
     </ItemGroup>
     <ItemGroup>
       <ITunesArtwork Include="iTunesArtwork" />
diff --git a/HDL-ON_iOS/Info.plist b/HDL-ON_iOS/Info.plist
index 47a0cd9..3cf1a8d 100644
--- a/HDL-ON_iOS/Info.plist
+++ b/HDL-ON_iOS/Info.plist
@@ -104,9 +104,9 @@
 	<key>UIStatusBarStyle</key>
 	<string>UIStatusBarStyleLightContent</string>
 	<key>CFBundleShortVersionString</key>
-	<string>1.2.202106081</string>
+	<string>1.2.202104282</string>
 	<key>CFBundleVersion</key>
-	<string>1.2.06081</string>
+	<string>202104282</string>
 	<key>NSLocationWhenInUseUsageDescription</key>
 	<string>Use geographic location to provide services such as weather</string>
 	<key>NSAppleMusicUsageDescription</key>
diff --git a/HDL-ON_iOS/Resources/Language.ini b/HDL-ON_iOS/Resources/Language.ini
index 61be5a1..c3ba37f 100644
--- a/HDL-ON_iOS/Resources/Language.ini
+++ b/HDL-ON_iOS/Resources/Language.ini
@@ -70,14 +70,14 @@
 69=All
 70=Curtain
 71=Name
-72=Address
+72=The address of the residence
 73=Floor Management
 74=Room Management
-75=Administrator migration
+75=Admin Migration
 76=Privilege Migration
 77=Debugging privilege
 78=The administrator is migrated to other user.
-79=All of the data for the residence is migrated to new user.
+79=All residence data are migrated to new user.
 80=Allow the staff to visit your home remotely
 81=Floor
 82=Add floor
@@ -188,8 +188,8 @@
 187=Fan
 188=Socket
 189=Level
-190=Chl
-191=Vol
+190=Channel
+191=Volume
 192=TV
 193=The room has existed, fail to change.
 194=Environment
@@ -382,7 +382,6 @@
 378=Transition time
 379=Transition speed
 380=This function is not available!
-381=Reload
 400=Welcome home
 401=Invalid barcode, please try again
 402=Try again
@@ -412,6 +411,8 @@
 426=Air dry time
 427=Disinfect time
 428=Anion Time
+429=Real time power consumption: {0}kw
+
 429=H
 430=Min
 431=You are currently adding any platform devices to
@@ -422,7 +423,7 @@
 436=Added Devices
 437=Device List
 438=humidity:{0}%    air:{1}    wind:{2}
-439=Real time: {0} kw
+439=Real time power consumption: {0} kw
 440=Next step
 441=Please select all areas of capture status
 442=Generate Scene
@@ -439,25 +440,7 @@
 453=Alarm mute
 454=Deployment information
 455=The name can not be blank.
-456=Canvas
-457=Energy consumption
-458=Date
-459=Real time energy consumption
-460=Energy consumption of this month
-461=Outdoor/Indoor
-462=You haven't added any devices yet
-'
-463=Please input the SN code of the device
-464=Can start using Zhaoguan millimeter wave
-465=Delete device
-466=STB
-467=Projector
-468=Someone fell
-469=Someone's in
-'
-470=Under protection
-471=Millimeter wave sensor
- 
+
 1000=Room Humidity
 1001=V-chip
 1002=Anion
@@ -546,31 +529,79 @@
 1084=1st Gear
 1085=2nd Gear
 1086=3rd Gear
- 
- 
- 
- 
- 
-4000=Video intercom
-4001=Call record
-4002=*Cloud photos are only kept for 30 days
-4003=Door phone call
-4004=Answered
-4005=Unlocked
-4006=year
-4007=From
-4008=Call
-4009=Unlocked
-4010=Missed
-4011=Rejected
-4012=The configuration parameters are abnormal!
-4013=Access Control QR Code
-4014=Temporary password
- 
- 
- 
- 
- 
+1087=Unlock
+1088=Temp. Password
+1089=Connected
+1090=Disconnected
+1091=Generate
+1092=Effective time
+1093=Expire time
+1094=Select time
+1095=Select Date
+1096=Generate
+1097=Temporary password has been copied
+1098=Clear Password?
+1099=The expire time must be later than the effective time
+1100=Unlock Method
+1101=It'll synchronize with actual lock, confirm to delete?
+1102=Delete
+1103=Remark
+1104=The remark can not be blank.
+1105=Assign to
+1106=Target Scene Not Exist
+1107=Select Scene
+1108=Unlock
+1109=Always On
+1110=Setting
+1111=Automation
+1112=Turn on "Always On" Mode
+1113=Turn off "Always On" Mode
+1114=Edit
+1115=Always On will be off at {0}
+1116=Condition
+1117=Motion
+1118=Always On
+1119=Lock
+1120=User
+1121=Unlock Method
+1122=Fingerprint
+1123=Card
+1124=Key
+1125=Information
+1126=Unlock
+1127=Alarm
+1128=Offline
+1129=For first user, Please bind lock password
+1130=Please enter admin password
+1131=Bind Successfully
+1132=Skip to personal password for unlock
+1133=Skip
+1134=Please draw your pattern
+1135=Lock will be always on after setting, confirm to proceed
+1136=Confirm
+1137=Expire
+1138=Always On will expire after {0} hours
+1139=Please enter expire time
+1140=Expire time should not be more than 72 hours
+1141=Expire time should not be less than 1 hour
+1142=Fail to set, please try again
+1143=Fail to verify administrator ID, please log in again account
+1144=Your residence is being migrated to other HDL 
+1145=Note:
+1146=1. All of your residence data will be migrate to new user.{0}2. After migration, original member will be{0}automatically unbound from this residence.{0}3. The new account is a valid HDL one.{0}4. The account from receiver cannot be the same{0}as that from migration side.
+1147=Confirm
+1148=Input receiver's account
+1149=Profile
+1150=Confirm admin migration from {0} to {1}
+1151=The account does not exist.
+1152=Fail to Transfer Ownership to Yourself
+1153=Terminate
+1154=Transferring to User, Please Wait鈥�
+1155={0} has become a residential administrator
+1156=The residence data will be deleted from your account
+1157=Fail to transfer
+1158=Please try again
+
 5000=Music
 5001=Group
 5002=Setting
@@ -619,148 +650,8 @@
 5045=General volume
 5046=Adjust volume
 5047="QQ music" has not installed in your cell phone, please proceed in App center.
- 
-6000=normal
-6001=Device status
-6002=pcs
-6003=Current IR control device
-6004=Remote controller has been added
-6005=AC
-6006=TV
-6007=Fan
-6008=Set-top box
-6009=DVD
-6010=Projector
-6011=Custom
-6012=IR control
-6013=Device Management
-6014=Add remote controller
-6015=Online
-6016=Offline
-6017=Version number
-6018=Please enter the name of the remote controller
-6019=Reminder: After the remote controller is created, it can be found and used in Function-Electrical Category{\r\n}
-6020=Recommended button
-6021=Please enter the button name
-6022=Next
-6023=Power
-6024=Volume+
-6025=Volume-
-6026=channel+
-6027=Channel-
-6028=up
-6029=down
-6030=Left
-6031=right
-6032=Mute
-6034=Confirm
-6035=Play
-6037=Exit
-6038=Menu
-6039=Pause
-6040=Back
-6041=Stop
-6042=Homepage
-6043=Fast forward
-6044=Rewind
-6045=Timing
-6046=Copy remote control function
-6047=Aim at the center of the remote controller and press the same button
-6048=Smart remote controller
-6049=Add button
-6050=*Long press for custom sorting
-6051=Done
-6052=Added successfully
-6053=Can be classified-function-electrical operation and use
-6054=Classification
-6055=Remote controller name
-6056=Region
-6057=Continue to add
-6058=Electrical
-6059=Failed to add
-6060=Retry
-6061=Match the remote control
-6062=Please click the button below
-6063=Confirm whether the device is responding
-6064=Control failed
-6065=Control success
-6066=Power on
-6067=Mode cooling
-6068=Wind speed stroke
-6069=Temperature 26鈩�
-6070=Delete device
-6071=Modify name
-6072=Confirm deletion
-6073=Cancel
-6074=The remote controller cannot exceed 10 pcs
-6075=The area where the remote control belongs:
-6076=Edit information
-6077=Version upgrade
-6078=System is under maintenance~Please try again later~
-6079=Failed to get data
-6080=This function is temporarily not supported
-6081=Select IR brand
-6082=Shaking
-6083=Low speed
-6084=Medium speed
-6085=High speed
-6086=Auto
-6087=Temperature+
-6088=Temperature-
-6089=Air purifier
-6090=Water heater
-6091=Product that does not exist
-6092=The device does not exist
-6093=The device is not online
-6094=The gateway device does not exist
- 
- 
-7108=Leak/No Leak
-7109=Leak
-7110=No leak
-7111=Water leaking/no water leaking
-7112=Water leaking
-7113=No water leaking
-7114=Someone/Nobody
-7115=Someone
-7116=Nobody
-7117=Open/Close
-7118=On
-7119=Close
-7120=Anti-dismantling function
-7121=Online
-7122=Not online
-7123=Air quality
-7124=Excellent
-7125=Good
-7126=Poor
-7127=Send notification
-7128=Notification content
-7129=(within 100 characters)
-7130=Account selection
-7131=App push
-7132=Automation
-7133=Executed
- 
- 
-6000=Rename
-6001=Please enter a name
-6002=Xiaodu
-6003=aispeech
-6004="Unbind requires a third-party APP for operation", "transfer to a third-party APP"
-6005=Unbind
-6006=Smart speaker
-6007=Control content
-6008=Failed to upload data
-6009=Failed to configure data
-6010="There is no speaker yet,", "Please go to the third-party APP to bind the smart speaker."
-6011=Modification of remarks is unsuccessful!
-6012=Do you want to unbind?
-6013=Unbinding...
-6014=transfer to third-party APP
-6015=Add speakers
- 
-    
+	
+	
 7000=Create automation
 7001=Edit automation
 7002=If
@@ -869,7 +760,7 @@
 7105=Light pollution: 75 ~ 115ug/m3
 7106=Moderate pollution: 115 ~ 150ug/m3
 7107=Heavy pollution: > 150ug/m3
-    
+	
 9000=Please sign in with new cell phone number.
 9001=Please sign in with new email address.
 9002=New cell phone number is revised.
@@ -940,7 +831,7 @@
 9066=Remarks
 9067=Remarks cannot be blank.
 9068=Do you want to unbind?
-    
+	
 10000=Invalid password, please log in again.
 10001=Fail to request server, please try again later.
 10002=System maintaining, please try again later.
@@ -975,9 +866,9 @@
 10031=The device should not be blank.
 10032=The user does not have permission.
 10033=The device does not exist.
- 
- 
- 
+
+
+
 [Chinese]
 1=鐧诲綍
 2=鎵嬫満鍙风櫥褰�
@@ -1369,7 +1260,7 @@
 406=浼氬
 407=闃呰
 408=纭娣诲姞
- 
+
 409=鍔熻兘鍝佺墝
 410=浣犲綋鍓嶈繕鏈坊鍔犱换浣曞钩鍙拌澶�
 411=鍏朵粬骞冲彴璁惧鍧囩敱绗笁鏂规湇鍔″晢鎻愪緵鏀寔
@@ -1417,24 +1308,8 @@
 453=鎶ヨ闈欓煶
 454=甯冮槻淇℃伅
 455=鍚嶇О涓嶈兘涓虹┖銆�
-456=鐢诲竷
-457=鑳借��
-458=鏃ユ湡
-459=瀹炴椂鑳借��
-460=鏈湀鑳借��
-461=瀹ゅ/瀹ゅ唴
-462=鎮ㄥ綋鍓嶈繕鏈坊鍔犱换浣曡澶�
-463=璇疯緭鍏ヨ澶囨満涓婄殑sn鐮�
-464=鍙互寮�濮嬩娇鐢ㄥ厗瑙傛绫虫尝浜�
-465=鍒犻櫎璁惧
-466=鏈洪《鐩�
-467=鎶曞奖浠�
-468=鏈変汉璺屽��
-469=鏈変汉杩涘叆
-470=闃叉姢涓�
-471=姣背娉紶鎰熷櫒
- 
- 
+
+
 1000=瀹ゅ唴婀垮害
 1001=绔ラ攣
 1002=璐熺瀛�
@@ -1522,8 +1397,86 @@
 1084=椋庨��1妗�
 1085=椋庨��2妗�
 1086=椋庨��3妗�
- 
- 
+1087=涓�閿紑閿�
+1087=Unlock
+1088=涓存椂瀵嗙爜寮�閿�
+1088=Temp. Password
+1089=宸茶繛鎺�
+1089=Connected
+1090=鏈繛鎺�
+1090=Disconnected
+1091=鐢熸垚涓存椂瀵嗙爜
+1091=Generate
+1092=鐢熸晥鏃堕棿
+1092=Effective time
+1093=澶辨晥鏃堕棿
+1093=
+1094=閫夋嫨鏃堕棿
+1095=閫夋嫨鏃ユ湡
+1096=Generate
+1097=涓存椂瀵嗙爜宸茬粡澶嶅埗
+1098=娓呴櫎褰撳墠涓存椂瀵嗙爜锛�
+1099=鐢熸晥鏃堕棿蹇呴』澶т簬澶辨晥鏃堕棿
+1100=寮�閿佹柟寮忕鐞�
+1101=鍒犻櫎鎿嶄綔灏嗚鍚屾浜庡疄浣撻攣涓妠0}鏄惁杩橀渶瑕佸垹闄わ紵
+1102=纭鍒犻櫎
+1103=淇敼澶囨敞鍚嶇О
+1104=澶囨敞鍚嶇О涓嶈兘涓虹┖
+1105=鍒嗛厤鑷�
+1106=妫�娴嬩笉鍒板彲渚涢�夋嫨鐨勫満鏅�
+1107=閫夋嫨鍦烘櫙
+1108=閿佸凡鎵撳紑
+1109=甯稿紑
+1110=鏃舵晥鎬у父寮�璁剧疆
+1111=甯稿紑鑷姩鍖�
+1112=鎵撳紑甯稿紑妯″紡
+1113=鍏抽棴甯稿紑妯″紡
+1114=缂栬緫
+1115=甯稿紑妯″紡灏嗕簬{0}鍏抽棴
+1116=鏉′欢
+1117=鍔ㄤ綔
+1118=甯稿紑妯″紡
+1119=閿�
+1120=鐢ㄦ埛
+1121=寮�閿佹柟寮�
+1122=鎸囩汗
+1123=鍗�
+1124=閽ュ寵
+1125=淇℃伅绫诲瀷
+1126=寮�閿佷俊鎭�
+1127=鎶ヨ绫讳俊鎭�
+1128=璁惧涓嶅湪绾�
+1129=绗竴娆′娇鐢紝璇峰厛缁戝畾闂ㄩ攣瀵嗙爜
+1130=璇疯緭鍏ラ棬閿佺鐞嗗憳瀵嗙爜
+1131=闂ㄩ攣缁戝畾鎴愬姛
+1132=涓轰簡瀹夊叏锛岃璺宠浆鑷充釜浜轰腑蹇儃0}璁剧疆涓汉瀵嗙爜锛屽苟搴旂敤浜庨棬閿佸紑閿�
+1133=璺宠浆
+1134=璇风粯鍒跺浘妗�
+1135=璁剧疆甯稿紑妯″紡鍚巤0}鎮ㄧ殑闂ㄩ攣灏嗗浜庢墦寮�鐘舵�亄0}鏄惁缁х画寮�鍚�
+1136=纭寮�鍚�
+1137=澶辨晥璁剧疆
+1138=甯稿紑妯″紡灏嗕簬{0}灏忔椂鍚庡け鏁�
+1139=璇疯緭鍏ュけ鏁堟椂闂�
+1140=澶辨晥鏃堕棿涓嶈兘澶т簬72灏忔椂
+1141=澶辨晥鏃堕棿涓嶈兘灏忎簬1灏忔椂
+1142=甯稿紑妯″紡鍏抽棴璁剧疆澶辨晥锛岃閲嶈瘯
+1143=绠$悊鍛樿韩浠介獙璇佸け璐�,璇烽噸鏂扮櫥褰�
+1144=鎮ㄧ殑浣忓畢灏嗚繃鎴风粰鍏朵粬HDL璐﹀彿
+1145=璇锋敞鎰忥細
+1146=1.璇ヤ綇瀹呮偍鐨勬暟鎹紙浜戠鏁版嵁锛夊皢鍏ㄩ儴杞Щ缁欐柊鐨勬埛涓粄0}2.杩囨埛鍚庯紝鍘熸湁鐨勬垚鍛樺皢鑷姩瑙g粦璇ヤ綇瀹厈0}3.鏂版埛涓昏处鍙蜂负鏈夋晥鐨凥DL璐﹀彿{0}4.鎺ユ敹鏂硅处鍙蜂笌杞Щ鏂硅处鍙蜂笉鍙负鍚屼竴涓处鍙�
+1147=纭杩囨埛
+1148=璇疯緭鍏ユ帴鏀舵柟璐﹀彿
+1149=涓汉璧勬枡
+1150=纭杩囨埛{0}鐨勭鐞嗗憳璐﹀彿缁欒处鍙穥1}
+1151=鐩爣璐﹀彿骞朵笉瀛樺湪
+1152=涓嶈兘鑷繁杩囨埛缁欒嚜宸�
+1153=缁堟
+1154=姝e湪杩囨埛缁欑敤鎴�,璇风◢鍚�...
+1155=鐢ㄦ埛{0}宸茬粡鎴愪负浣忓畢琛岀鐞嗗憳
+1156=璇ヤ綇瀹呯殑淇℃伅灏嗗湪鎮ㄧ殑璐﹀彿涓垹闄�
+1157=杩囨埛澶辫触
+1158=璇烽噸鏂板皾璇�
+
 4000=鍙瀵硅
 4001=閫氳瘽璁板綍
 4002=*浜戠鐓х墖鍙繚鐣�30澶�
@@ -1539,7 +1492,7 @@
 4012=閰嶇疆鍙傛暟鏈夊紓甯�!
 4013=闂ㄧ浜岀淮鐮�
 4014=涓存椂瀵嗙爜
- 
+
 5000=闊充箰
 5001=缁勫悎
 5002=璁剧疆
@@ -1588,8 +1541,8 @@
 5045=鎬婚煶閲�
 5046=璋冭妭闊抽噺
 5047=浣犳墜鏈烘殏鏈畨瑁�"QQ闊充箰"{\r\n}璇峰墠寰�鎵嬫満鍟嗗満瀹夎
- 
- 
+
+
 6000=姝e父
 6001=璁惧鐘舵��
 6002=涓�
@@ -1599,7 +1552,7 @@
 6006=鐢佃
 6007=椋庢墖
 6008=鏈洪《鐩�
-6009=DVD
+6009=DVD/EVD/VCD
 6010=鎶曞奖浠�
 6011=鑷畾涔�
 6012=绾㈠閬ユ帶
@@ -1669,23 +1622,7 @@
 6078=绯荤粺缁存姢涓瓇璇风◢鍚庡啀璇晘
 6079=鑾峰彇鏁版嵁澶辫触
 6080=鏆傛椂涓嶆敮鎸佽鍔熻兘
-6081=閫夋嫨绾㈠鍝佺墝
-6082=鎽囧ご
-6083=浣庨��
-6084=涓��
-6085=楂橀��
-6086=鑷姩
-6087=娓╁害+
-6088=娓╁害-
-6089=绌烘皵鍑�鍖栧櫒
-6090=鐑按鍣�
-6091=涓嶅瓨鍦ㄧ殑浜у搧
-6092=璁惧涓嶅瓨鍦�
-6093=璁惧涓嶅湪绾�
-6094=缃戝叧璁惧涓嶅瓨鍦�
- 
- 
- 
+
 7000=鏂板缓鑷姩鍖�
 7001=缂栬緫鑷姩鍖�
 7002=濡傛灉
@@ -1820,7 +1757,7 @@
 7131=App鎺ㄩ��
 7132=鑷姩鍖�
 7133=宸叉墽琛�
- 
+
 9000=璇蜂娇鐢ㄦ柊鐨勬墜鏈鸿处鍙风櫥褰旳PP
 9001=璇蜂娇鐢ㄦ柊鐨勯偖绠辫处鍙风櫥褰旳PP
 9002=鐧诲綍鎵嬫満淇敼瀹屾垚
@@ -1890,7 +1827,7 @@
 9066=澶囨敞
 9067=澶囨敞涓嶈兘涓虹┖
 9068=鏄惁瑙i櫎缁戝畾锛�
- 
+
 10000=鏃犳晥鐧诲綍瀵嗛挜锛岃閲嶆柊鐧诲綍锛�
 10001=璇锋眰鏈嶅姟鍣ㄥけ璐ワ紝璇风◢鍚庡啀璇曪紒
 10002=绯荤粺缁存姢涓�,璇风◢鍚庡啀璇�!
@@ -1924,4 +1861,4 @@
 10030=娌℃湁杩滅▼鎺у埗鏉冮檺
 10031=璁惧涓嶈兘涓虹┖
 10032=鐢ㄦ埛娌℃湁璁惧鐨勬潈闄�
-10033=璁惧涓嶅瓨鍦�
+10033=璁惧涓嶅瓨鍦�
\ No newline at end of file
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/ArmSensor/SomeoneFellBgIcon.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/ArmSensor/SomeoneFellBgIcon.png
deleted file mode 100644
index 3699b13..0000000
--- a/HDL-ON_iOS/Resources/Phone/FunctionIcon/ArmSensor/SomeoneFellBgIcon.png
+++ /dev/null
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/ArmSensor/SomeoneInBgIcon.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/ArmSensor/SomeoneInBgIcon.png
deleted file mode 100644
index 24336d8..0000000
--- a/HDL-ON_iOS/Resources/Phone/FunctionIcon/ArmSensor/SomeoneInBgIcon.png
+++ /dev/null
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/ArmSensor/UnderProtectionBgIcon.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/ArmSensor/UnderProtectionBgIcon.png
deleted file mode 100644
index bede756..0000000
--- a/HDL-ON_iOS/Resources/Phone/FunctionIcon/ArmSensor/UnderProtectionBgIcon.png
+++ /dev/null
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/BindScene.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/BindScene.png
new file mode 100644
index 0000000..73984f3
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/BindScene.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/Connect.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/Connect.png
new file mode 100644
index 0000000..c997b80
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/Connect.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/CrearPswBackgroud.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/CrearPswBackgroud.png
new file mode 100644
index 0000000..89acd31
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/CrearPswBackgroud.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/Delete.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/Delete.png
new file mode 100644
index 0000000..54feadf
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/Delete.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/DoorLock.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/DoorLock.png
new file mode 100644
index 0000000..fb3ce93
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/DoorLock.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/Editor.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/Editor.png
new file mode 100644
index 0000000..40b7bf2
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/Editor.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/Hide.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/Hide.png
new file mode 100644
index 0000000..da7c1ff
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/Hide.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/History.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/History.png
new file mode 100644
index 0000000..7609540
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/History.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/LockPictrue1.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/LockPictrue1.png
new file mode 100644
index 0000000..432dd20
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/LockPictrue1.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/LockPictrue2.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/LockPictrue2.png
new file mode 100644
index 0000000..1318d0a
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/LockPictrue2.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/More.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/More.png
new file mode 100644
index 0000000..f594679
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/More.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/Mute.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/Mute.png
new file mode 100644
index 0000000..99b6161
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/Mute.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/NormallyOpenIcon1.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/NormallyOpenIcon1.png
new file mode 100644
index 0000000..1a57f38
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/NormallyOpenIcon1.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/NormallyOpenIcon2.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/NormallyOpenIcon2.png
new file mode 100644
index 0000000..cc2772b
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/NormallyOpenIcon2.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/NormallyOpenIcon3.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/NormallyOpenIcon3.png
new file mode 100644
index 0000000..468f743
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/NormallyOpenIcon3.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/Redistribution.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/Redistribution.png
new file mode 100644
index 0000000..8d41a7f
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/Redistribution.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/Screen.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/Screen.png
new file mode 100644
index 0000000..8f157cd
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/Screen.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/Shard.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/Shard.png
new file mode 100644
index 0000000..acf5640
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/Shard.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/UnConnect.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/UnConnect.png
new file mode 100644
index 0000000..15fbdd4
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/UnConnect.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/UnLockManager.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/UnLockManager.png
new file mode 100644
index 0000000..ccdfed2
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/UnLockManager.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/UnLockPictrue1.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/UnLockPictrue1.png
new file mode 100644
index 0000000..31166b8
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/UnLockPictrue1.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/UnLockPictrue2.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/UnLockPictrue2.png
new file mode 100644
index 0000000..4aa4888
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/UnLockPictrue2.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/UnLockPictrue3.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/UnLockPictrue3.png
new file mode 100644
index 0000000..34d16f9
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/UnLockPictrue3.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/Voice.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/Voice.png
new file mode 100644
index 0000000..b7f4449
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/DoorLock/Voice.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TV/TVOkIconDown.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TV/TVOkIconDown.png
deleted file mode 100644
index 9151722..0000000
--- a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TV/TVOkIconDown.png
+++ /dev/null
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TV/TVOkIconLeft.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TV/TVOkIconLeft.png
deleted file mode 100644
index a9f21af..0000000
--- a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TV/TVOkIconLeft.png
+++ /dev/null
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TV/TVOkIconOk.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TV/TVOkIconOk.png
deleted file mode 100644
index 9588e99..0000000
--- a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TV/TVOkIconOk.png
+++ /dev/null
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TV/TVOkIconRight.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TV/TVOkIconRight.png
deleted file mode 100644
index 3765d0f..0000000
--- a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TV/TVOkIconRight.png
+++ /dev/null
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TV/TVOkIconUp.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TV/TVOkIconUp.png
deleted file mode 100644
index 87a0271..0000000
--- a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TV/TVOkIconUp.png
+++ /dev/null
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TVIcon.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TVIcon.png
new file mode 100644
index 0000000..95e01fc
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TVIcon.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Energy/EnergyDrodUpIcon.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Energy/EnergyDrodUpIcon.png
deleted file mode 100644
index 4b9600b..0000000
--- a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Energy/EnergyDrodUpIcon.png
+++ /dev/null
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/irpjt_blue.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/irpjt_blue.png
deleted file mode 100644
index 6e39148..0000000
--- a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/irpjt_blue.png
+++ /dev/null
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/irpjt_white.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/irpjt_white.png
deleted file mode 100644
index 5288530..0000000
--- a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/irpjt_white.png
+++ /dev/null
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/irstb_blue.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/irstb_blue.png
deleted file mode 100644
index 5a6e245..0000000
--- a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/irstb_blue.png
+++ /dev/null
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/irstb_white.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/irstb_white.png
deleted file mode 100644
index 89b618a..0000000
--- a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/irstb_white.png
+++ /dev/null
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/irtvxm_blue.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/irtvxm_blue.png
deleted file mode 100644
index d28c4af..0000000
--- a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/irtvxm_blue.png
+++ /dev/null
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/irtvxm_white.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/irtvxm_white.png
deleted file mode 100644
index 1f42e9f..0000000
--- a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/irtvxm_white.png
+++ /dev/null
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/irpjt.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/irpjt.png
deleted file mode 100644
index ebdac1d..0000000
--- a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/irpjt.png
+++ /dev/null
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/irstb.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/irstb.png
deleted file mode 100644
index cbd39d5..0000000
--- a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/irstb.png
+++ /dev/null
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/irtvxm.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/irtvxm.png
deleted file mode 100644
index 7f9045f..0000000
--- a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/irtvxm.png
+++ /dev/null
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/sensormegahealth.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/sensormegahealth.png
deleted file mode 100644
index 958cf71..0000000
--- a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/sensormegahealth.png
+++ /dev/null
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/PersonalCenter/AddDevice/SenesorMegahealthBg.png b/HDL-ON_iOS/Resources/Phone/PersonalCenter/AddDevice/SenesorMegahealthBg.png
deleted file mode 100644
index ad3b018..0000000
--- a/HDL-ON_iOS/Resources/Phone/PersonalCenter/AddDevice/SenesorMegahealthBg.png
+++ /dev/null
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/PirIcon/1.png b/HDL-ON_iOS/Resources/Phone/PirIcon/1.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/PirIcon/2.png b/HDL-ON_iOS/Resources/Phone/PirIcon/2.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/PirIcon/3.png b/HDL-ON_iOS/Resources/Phone/PirIcon/3.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/PirIcon/4.png b/HDL-ON_iOS/Resources/Phone/PirIcon/4.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/PirIcon/Infraredtreasure.png b/HDL-ON_iOS/Resources/Phone/PirIcon/Infraredtreasure.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/PirIcon/add.png b/HDL-ON_iOS/Resources/Phone/PirIcon/add.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/PirIcon/adddevice.png b/HDL-ON_iOS/Resources/Phone/PirIcon/adddevice.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/PirIcon/addlbuton.png b/HDL-ON_iOS/Resources/Phone/PirIcon/addlbuton.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/PirIcon/air.png b/HDL-ON_iOS/Resources/Phone/PirIcon/air.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/PirIcon/custom.png b/HDL-ON_iOS/Resources/Phone/PirIcon/custom.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/PirIcon/del.png b/HDL-ON_iOS/Resources/Phone/PirIcon/del.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/PirIcon/delbuton.png b/HDL-ON_iOS/Resources/Phone/PirIcon/delbuton.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/PirIcon/dropdown.png b/HDL-ON_iOS/Resources/Phone/PirIcon/dropdown.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/PirIcon/dvd.png b/HDL-ON_iOS/Resources/Phone/PirIcon/dvd.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/PirIcon/failed.png b/HDL-ON_iOS/Resources/Phone/PirIcon/failed.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/PirIcon/fan.png b/HDL-ON_iOS/Resources/Phone/PirIcon/fan.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/PirIcon/icon1.png b/HDL-ON_iOS/Resources/Phone/PirIcon/icon1.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/PirIcon/icon2.png b/HDL-ON_iOS/Resources/Phone/PirIcon/icon2.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/PirIcon/left.png b/HDL-ON_iOS/Resources/Phone/PirIcon/left.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/PirIcon/next.png b/HDL-ON_iOS/Resources/Phone/PirIcon/next.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/PirIcon/offline.png b/HDL-ON_iOS/Resources/Phone/PirIcon/offline.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/PirIcon/online.png b/HDL-ON_iOS/Resources/Phone/PirIcon/online.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/PirIcon/priequipment.png b/HDL-ON_iOS/Resources/Phone/PirIcon/priequipment.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/PirIcon/projector.png b/HDL-ON_iOS/Resources/Phone/PirIcon/projector.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/PirIcon/right.png b/HDL-ON_iOS/Resources/Phone/PirIcon/right.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/PirIcon/search.png b/HDL-ON_iOS/Resources/Phone/PirIcon/search.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/PirIcon/stb.png b/HDL-ON_iOS/Resources/Phone/PirIcon/stb.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/PirIcon/succeed.png b/HDL-ON_iOS/Resources/Phone/PirIcon/succeed.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/PirIcon/tv.png b/HDL-ON_iOS/Resources/Phone/PirIcon/tv.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/WeepRobot/Battery.png b/HDL-ON_iOS/Resources/Phone/Public/BatteryEnough.png
similarity index 100%
rename from HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/WeepRobot/Battery.png
rename to HDL-ON_iOS/Resources/Phone/Public/BatteryEnough.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/Public/BatteryNot.png b/HDL-ON_iOS/Resources/Phone/Public/BatteryNot.png
new file mode 100644
index 0000000..65a7b71
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/Public/BatteryNot.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/Public/Scan.png b/HDL-ON_iOS/Resources/Phone/Public/Scan.png
deleted file mode 100644
index 1859bcc..0000000
--- a/HDL-ON_iOS/Resources/Phone/Public/Scan.png
+++ /dev/null
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/VideoIcon/answer.png b/HDL-ON_iOS/Resources/Phone/VideoIcon/answer.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/VideoIcon/danyuanji.png b/HDL-ON_iOS/Resources/Phone/VideoIcon/danyuanji.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/VideoIcon/hangup.png b/HDL-ON_iOS/Resources/Phone/VideoIcon/hangup.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/VideoIcon/keshiduijiang.png b/HDL-ON_iOS/Resources/Phone/VideoIcon/keshiduijiang.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/VideoIcon/menjin.png b/HDL-ON_iOS/Resources/Phone/VideoIcon/menjin.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/VideoIcon/phone.png b/HDL-ON_iOS/Resources/Phone/VideoIcon/phone.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/VideoIcon/weiqiangji.png b/HDL-ON_iOS/Resources/Phone/VideoIcon/weiqiangji.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL_ON/Common/HDLCommon.cs b/HDL_ON/Common/HDLCommon.cs
index cf27527..f30ab05 100644
--- a/HDL_ON/Common/HDLCommon.cs
+++ b/HDL_ON/Common/HDLCommon.cs
@@ -349,8 +349,6 @@
                 case "13602944661":
                 case "18778381374":
                 case "18316672920":
-                case "15626203746":
-                case "551775569@qq.com":
                     return;
             }
 
diff --git a/HDL_ON/Common/R.cs b/HDL_ON/Common/R.cs
index 2d8e7ce..4004cad 100644
--- a/HDL_ON/Common/R.cs
+++ b/HDL_ON/Common/R.cs
@@ -5,73 +5,6 @@
     public static class StringId
     {
 
-        /// <summary>
-        /// 姣背娉紶鎰熷櫒
-        /// </summary>
-        public const int SenesorMillimeterWave = 471;
-        /// <summary>
-        /// 闃叉姢涓�
-        /// </summary>
-        public const int UnderProtection=470;
-        /// <summary>
-        /// 鏈変汉杩涘叆
-        /// </summary>
-        public const int SomeoneIn = 469;
-        /// <summary>
-        /// 鏈変汉璺屽��
-        /// </summary>
-        public const int SomeoneFell = 468;
-        /// <summary>
-        /// 鎶曞奖浠�
-        /// </summary>
-        public const int PJT = 467;
-        /// <summary>
-        /// 鏈洪《鐩�
-        /// </summary>
-        public const int STB = 466;
-        /// <summary>
-        /// 鍒犻櫎璁惧
-        /// </summary>
-        public const int DeleteDevice = 465;
-        /// <summary>
-        /// 鍙互寮�濮嬩娇鐢ㄦ渤涓滄绫虫尝浜�
-        /// </summary>
-        public const int CanStartUsingZhaoguanMillimeterWave = 464;
-        /// <summary>
-        /// 璇疯緭鍏n鐮�
-        /// </summary>
-        public const int PlsEntrySNCode = 463;
-        /// <summary>
-        /// 鎮ㄥ綋鍓嶈繕鏈坊鍔犱换浣曡澶�
-        /// </summary>
-        public const int NotAddedAnyDevices = 462;
-        /// <summary>
-        /// 瀹ゅ唴瀹ゅ
-        /// </summary>
-        public const int InOutdoor = 461;
-        /// <summary>
-        /// 鏈湀鑳借��
-        /// </summary>
-        public const int EnergyConsumptionOfThisMonth = 460;
-        /// <summary>
-        /// 瀹炴椂鑳借��
-        /// </summary>
-        public const int RealTimeEnergyConsumption=459;
-        /// <summary>
-        /// 鏃ユ湡
-        /// </summary>
-        public const int Date = 458;
-        /// <summary>
-        /// 鑳借��
-        /// </summary>
-        public const int EnergyConsumption = 457;
-        /// <summary>
-        /// 鐢诲竷
-        /// </summary>
-        public const int Canvas = 456;
-        /// <summary>
-        /// 鍚嶇О涓嶈兘涓虹┖
-        /// </summary>
         public const int NameCannotBeEmpty = 455;
         /// <summary>
         /// 甯冮槻淇℃伅
@@ -881,7 +814,295 @@
         /// <summary>
         /// 椋庨��3妗�
         /// </summary>
-        public const int FanThreeGear = 1086;
+        public const int FanThreeGear = 1086;
+        /// <summary>
+        /// 涓�閿紑閿�
+        /// </summary>
+        public const int OneKeyUnlocking = 1087;
+        /// <summary>
+        /// 涓存椂瀵嗙爜寮�閿�
+        /// </summary>
+        public const int TemporaryPasswordUnlocking = 1088;
+        /// <summary>
+        /// 宸茶繛鎺�
+        /// </summary>
+        public const int Connected = 1089;
+        /// <summary>
+        /// 鏈繛鎺�
+        /// </summary>
+        public const int UnConnected = 1090;
+        /// <summary>
+        /// 鐢熸垚涓存椂瀵嗙爜
+        /// </summary>
+        public const int CreatTemporaryPassword = 1091;
+        /// <summary>
+        /// 鐢熸晥鏃堕棿
+        /// </summary>
+        public const int EffectiveTime = 1092;
+        /// <summary>
+        /// 澶辨晥鏃堕棿
+        /// </summary>
+        public const int FailureTime = 1093;
+        /// <summary>
+        /// 閫夋嫨鏃堕棿
+        /// </summary>
+        public const int SelectTime = 1094;
+        /// <summary>
+        /// 閫夋嫨鏃ユ湡
+        /// </summary>
+        public const int SelectDate = 1095;
+        /// <summary>
+        /// 鐢熸垚
+        /// </summary>
+        public const int Generate = 1096;
+        /// <summary>
+        /// 涓存椂瀵嗙爜宸茬粡澶嶅埗
+        /// </summary>
+        public const int TempPsswordHasBeenCopy = 1097;
+        /// <summary>
+        /// 娓呴櫎褰撳墠涓存椂瀵嗙爜锛�
+        /// </summary>
+        public const int ClearTempPsswordMsg = 1098;
+        /// <summary>
+        /// 鐢熸晥鏃堕棿蹇呴』澶т簬澶辨晥鏃堕棿
+        /// </summary>
+        public const int EffectiveTimeMustBeOverFailureTime = 1099;
+        /// <summary>
+        /// 寮�閿佹柟寮忕鐞�
+        /// </summary>
+        public const int UnlockingManagement = 1100;
+        /// <summary>
+        /// 鍒犻櫎鎿嶄綔灏嗚鍚屾浜庡疄浣撻攣涓婃槸鍚﹁繕闇�瑕佸垹闄わ紵
+        /// </summary>
+        public const int DeleteUnlockingMethordMsg = 1101;
+        /// <summary>
+        /// 纭鍒犻櫎
+        /// </summary>
+        public const int ConfirmDeletion = 1102;
+        /// <summary>
+        /// 淇敼澶囨敞鍚嶇О
+        /// </summary>
+        public const int EditorRemarkName = 1103;
+        /// <summary>
+        /// 澶囨敞鍚嶇О涓嶈兘涓虹┖
+        /// </summary>
+        public const int RemarkNameCanNotEmpty = 1104;
+        /// <summary>
+        /// 鍒嗛厤鑷�
+        /// </summary>
+        public const int AssignTo = 1105;
+        /// <summary>
+        /// 妫�娴嬩笉鍒板彲渚涢�夋嫨鐨勫満鏅�
+        /// </summary>
+        public const int NotHadCanSelectScene = 1106;
+        /// <summary>
+        /// 閫夋嫨鍦烘櫙
+        /// </summary>
+        public const int SelectScene = 1107;
+        /// <summary>
+        /// 閿佸凡鎵撳紑
+        /// </summary>
+        public const int LockIsOpened = 1108;
+        /// <summary>
+        /// 甯稿紑
+        /// </summary>
+        public const int AlwaysOn = 1109;
+        /// <summary>
+        /// 鏃舵晥鎬у父寮�璁剧疆
+        /// </summary>
+        public const int TimelyAlwaysOnSetting = 1110;
+        /// <summary>
+        /// 甯稿紑鑷姩鍖�
+        /// </summary>
+        public const int AutomationAlwaysOn = 1111;
+        /// <summary>
+        /// 鎵撳紑甯稿紑妯″紡
+        /// </summary>
+        public const int OpenAlwaysOnModel = 1112;
+        /// <summary>
+        /// 鍏抽棴甯稿紑妯″紡
+        /// </summary>
+        public const int CloseAlwaysOnModel = 1113;
+        /// <summary>
+        /// 缂栬緫
+        /// </summary>
+        public const int Edit = 1114;
+        /// <summary>
+        /// 甯稿紑妯″紡灏嗕簬{0}鍏抽棴
+        /// </summary>
+        public const int AlwaysOnWillCloseOnTime = 1115;
+        /// <summary>
+        /// 鏉′欢
+        /// </summary>
+        public const int Condtion = 1116;
+        /// <summary>
+        /// 鍔ㄤ綔
+        /// </summary>
+        public const int Action = 1117;
+        /// <summary>
+        /// 甯稿紑妯″紡
+        /// </summary>
+        public const int AlwaysOnModel = 1118;
+        /// <summary>
+        /// 閿�
+        /// </summary>
+        public const int Lock = 1119;
+        /// <summary>
+        /// 鐢ㄦ埛
+        /// </summary>
+        public const int User = 1120;
+        /// <summary>
+        /// 寮�閿佹柟寮�
+        /// </summary>
+        public const int UnlockingMode = 1121;
+        /// <summary>
+        /// 鎸囩汗
+        /// </summary>
+        public const int Fingerprints = 1122;
+        /// <summary>
+        /// 鍗�
+        /// </summary>
+        public const int Card = 1123;
+        /// <summary>
+        /// 閽ュ寵
+        /// </summary>
+        public const int Key = 1124;
+        /// <summary>
+        /// 淇℃伅绫诲瀷
+        /// </summary>
+        public const int MessageType = 1125;
+        /// <summary>
+        /// 寮�閿佷俊鎭�
+        /// </summary>
+        public const int UnlockingMessage = 1126;
+        /// <summary>
+        /// 鎶ヨ绫讳俊鎭�
+        /// </summary>
+        public const int AlarmMessage = 1127;
+        /// <summary>
+        /// 璁惧涓嶅湪绾�
+        /// </summary>
+        public const int DeviceNotOnline = 1128;
+        /// <summary>
+        /// 绗竴娆′娇鐢紝璇峰厛缁戝畾闂ㄩ攣瀵嗙爜
+        /// </summary>
+        public const int PleaseBindTheDoorPswFirst = 1129;
+        /// <summary>
+        /// 璇疯緭鍏ラ棬閿佺鐞嗗憳瀵嗙爜
+        /// </summary>
+        public const int PleaseInputDoorAdminPassword = 1130;
+        /// <summary>
+        /// 闂ㄩ攣缁戝畾鎴愬姛
+        /// </summary>
+        public const int BindDoorLockSuccess = 1131;
+        /// <summary>
+        /// 涓轰簡瀹夊叏锛岃璺宠浆鑷充釜浜轰腑蹇儃0}璁剧疆涓汉瀵嗙爜锛屽苟搴旂敤浜庨棬閿佸紑閿�
+        /// </summary>
+        public const int JumpToPersonalCentetToSetPasswordMsg = 1132;
+        /// <summary>
+        /// 璺宠浆
+        /// </summary>
+        public const int Jump = 1133;
+        /// <summary>
+        /// 璇风粯鍒跺浘妗�
+        /// </summary>
+        public const int PleaseDrawPattern = 1134;
+        /// <summary>
+        /// 璁剧疆甯稿紑妯″紡鍚巤0}鎮ㄧ殑闂ㄩ攣灏嗗浜庢墦寮�鐘舵�亄0}鏄惁缁х画寮�鍚�
+        /// </summary>
+        public const int OpenAlwayOnConfirmMsg = 1135;
+        /// <summary>
+        /// 纭寮�鍚�
+        /// </summary>
+        public const int ConfirmOpen = 1136;
+        /// <summary>
+        /// 澶辨晥璁剧疆
+        /// </summary>
+        public const int FailTimeSeetion = 1137;
+        /// <summary>
+        /// 甯稿紑妯″紡灏嗕簬{0}灏忔椂鍚庡け鏁�
+        /// </summary>
+        public const int AlwayOnWillCloseAtTimeMsg = 1138;
+        /// <summary>
+        /// 璇疯緭鍏ュけ鏁堟椂闂�
+        /// </summary>
+        public const int PleaseInputFailTime = 1139;
+        /// <summary>
+        /// 澶辨晥鏃堕棿涓嶈兘澶т簬72灏忔椂
+        /// </summary>
+        public const int InvalidTimeMoreThan72 = 1140;
+        /// <summary>
+        /// 澶辨晥鏃堕棿涓嶈兘灏忎簬1灏忔椂
+        /// </summary>
+        public const int InvalidTimeLessThan1 = 1141;
+        /// <summary>
+        /// 甯稿紑妯″紡鍏抽棴璁剧疆澶辨晥锛岃閲嶈瘯
+        /// </summary>
+        public const int AlwayOnFailTimeSettionFailMsg = 1142;
+        /// <summary>
+        /// 绠$悊鍛樿韩浠介獙璇佸け璐�,璇烽噸鏂扮櫥褰�
+        /// </summary>
+        public const int CheckAdminFailAndLoginAgain = 1143;
+        /// <summary>
+        /// 鎮ㄧ殑浣忓畢灏嗚繃鎴风粰鍏朵粬HDL璐﹀彿
+        /// </summary>
+        public const int YourHomeWillBeTransferredToOtherAccounts = 1144;
+        /// <summary>
+        /// 璇锋敞鎰忥細
+        /// </summary>
+        public const int Attention = 1145;
+        /// <summary>
+        /// 1.璇ヤ綇瀹呮偍鐨勬暟鎹紙浜戠鏁版嵁锛夊皢鍏ㄩ儴杞Щ缁欐柊鐨勬埛涓粄0}2.杩囨埛鍚庯紝鍘熸湁鐨勬垚鍛樺皢鑷姩瑙g粦璇ヤ綇瀹厈0}3.鏂版埛涓昏处鍙蜂负鏈夋晥鐨凥DL璐﹀彿{0}4.鎺ユ敹鏂硅处鍙蜂笌杞Щ鏂硅处鍙蜂笉鍙负鍚屼竴涓处鍙�
+        /// </summary>
+        public const int TransferreConfirmMsg1 = 1146;
+        /// <summary>
+        /// 纭杩囨埛
+        /// </summary>
+        public const int ConfirmTransferre = 1147;
+        /// <summary>
+        /// 璇疯緭鍏ユ帴鏀舵柟璐﹀彿
+        /// </summary>
+        public const int PleaseInputReceiverAccount = 1148;
+        /// <summary>
+        /// 涓汉璧勬枡
+        /// </summary>
+        public const int Profile = 1149;
+        /// <summary>
+        /// 纭杩囨埛{0}鐨勭鐞嗗憳璐﹀彿缁欒处鍙穥1}
+        /// </summary>
+        public const int TransferreConfirmMsg2 = 1150;
+        /// <summary>
+        /// 鐩爣璐﹀彿骞朵笉瀛樺湪
+        /// </summary>
+        public const int TargetAcountDoesNotExist = 1151;
+        /// <summary>
+        /// 涓嶈兘鑷繁杩囨埛缁欒嚜宸�
+        /// </summary>
+        public const int YouCannotTransferOwnershipToYourself = 1152;
+        /// <summary>
+        /// 缁堟
+        /// </summary>
+        public const int Terminate = 1153;
+        /// <summary>
+        /// 姝e湪杩囨埛缁欑敤鎴�,璇风◢鍚�...
+        /// </summary>
+        public const int IsTransferingPleaseWaitting = 1154;
+        /// <summary>
+        /// 鐢ㄦ埛{0}宸茬粡鎴愪负浣忓畢琛岀鐞嗗憳
+        /// </summary>
+        public const int CongratulationsXXBecomingNNAdministrator = 1155;
+        /// <summary>
+        /// 璇ヤ綇瀹呯殑淇℃伅灏嗗湪鎮ㄧ殑璐﹀彿涓垹闄�
+        /// </summary>
+        public const int ResidenceDataWillBeDeletedFromYourAccount = 1156;
+        /// <summary>
+        /// 杩囨埛澶辫触
+        /// </summary>
+        public const int TransferFail = 1157;
+        /// <summary>
+        /// 璇烽噸鏂板皾璇�
+        /// </summary>
+        public const int PleaseTryAgain = 1158;
 
 
         public const int keshiduijiang = 4000;
@@ -1029,20 +1250,10 @@
         public const int xitongweihuzhong = 6078;
         public const int huoqushujushibao = 6079;
         public const int zanshibuzhichigaigongneng = 6080;
-        public const int xuanzehongwaipinpai= 6081;
-        public const int yaotou = 6082;
-        public const int disu = 6083;
-        public const int zhongsu = 6084;
-        public const int gaosu = 6085;
-        public const int zidong = 6086;
-        public const int wendujia = 6087;
-        public const int wendujian = 6088;
-        public const int kongqijinghauqi = 6089;
-        public const int reshuiqi = 6090;
-        public const int bucunzaichanpin = 6091;
-        public const int shebeibucunzai = 6092;
-        public const int shebeibuzaixian = 6093;
-        public const int wangguanshebeibuzaixian = 6094;
+
+
+
+
 
         public const int newAutomation = 7000;
         public const int editAutomation = 7001;
@@ -1178,8 +1389,6 @@
         public const int apptuisong = 7131;
         public const int zidontghua = 7132;
         public const int yizhixing = 7133;
-        public const int mubiaozhuangtai = 7134;
-        public const int diedao = 7135;
 
         #region LE鏂板
         /// <summary>
diff --git a/HDL_ON/Common/Utlis/FloorRoomSelectPopupView.cs b/HDL_ON/Common/Utlis/FloorRoomSelectPopupView.cs
index e0f3720..db8e6c3 100644
--- a/HDL_ON/Common/Utlis/FloorRoomSelectPopupView.cs
+++ b/HDL_ON/Common/Utlis/FloorRoomSelectPopupView.cs
@@ -241,6 +241,7 @@
             {
                 //鍏ㄩ儴
                 btnFloorName.Text = Language.StringByID(StringId.All);
+                btnFloorName.Width = btnFloorName.GetTextWidth();
             }
             //鎴块棿
             else if (selectType == 3)
@@ -250,6 +251,7 @@
                     if (roomInfo.uid == this.nowShowSelectId)
                     {
                         btnFloorName.Text = roomInfo.floorName + roomInfo.roomName;
+                        btnFloorName.Width = btnFloorName.GetTextWidth();
                         return;
                     }
                 }
@@ -262,6 +264,7 @@
                     if (floorInfo.uid == this.nowShowSelectId)
                     {
                         btnFloorName.Text = floorInfo.roomName;
+                        btnFloorName.Width = btnFloorName.GetTextWidth();
                     }
                 }
             }
diff --git a/HDL_ON/DAL/DriverLayer/Control.cs b/HDL_ON/DAL/DriverLayer/Control.cs
index e4f1c1a..981f284 100644
--- a/HDL_ON/DAL/DriverLayer/Control.cs
+++ b/HDL_ON/DAL/DriverLayer/Control.cs
@@ -283,7 +283,6 @@
         /// </summary>
         public void ControlScene(Scene scene)
         {
-            //杩滅▼鎴栬�呮帶鍒秎ink缃戝叧鍦烘櫙
             if (!Ins.GatewayOnline_Local || DB_ResidenceData.Instance.GatewayType == 1)
             {
                 new System.Threading.Thread(() =>
@@ -478,55 +477,47 @@
         /// 鍙戦�佽鍙栧懡浠�
         /// 鑷姩鍒ゆ柇鏄惁涓篈鍗忚璁惧
         /// </summary>
-        public void SendReadCommand(Function function ,bool forceRemote = false)
+        public void SendReadCommand(Function function)
         {
             function.refreshTime = DateTime.Now;
-            if (forceRemote)
+            if (Ins.GatewayOnline_Local)
             {
-                var pm = new DAL.Server.HttpServerRequest();
-                var pack = pm.RefreshDeviceStatus(new List<string>() { function.deviceId });
-            }
-            else
-            {
-                if (Ins.GatewayOnline_Local)
+
+                if (DB_ResidenceData.Instance.GatewayType == 0)
                 {
-
-                    if (DB_ResidenceData.Instance.GatewayType == 0)
+                    try
                     {
-                        try
-                        {
-                            new Control_Udp().ReadBusData(function);
-                        }
-                        catch (Exception ex)
-                        {
-                            MainPage.Log($"鍙戦�佹暟鎹紓甯�: {ex.Message}");
-                        }
+                        new Control_Udp().ReadBusData(function);
                     }
-                    else
+                    catch (Exception ex)
                     {
-                        var readKey = new Dictionary<string, string>();
-                        readKey.Add("sid", function.sid);
-
-                        var readDataObj = new AlinkReadFunctionStatusObj()
-                        {
-                            id = Ins.msg_id.ToString(),
-                            objects = new List<Dictionary<string, string>>()
-                        {
-                            readKey
-                        },
-                            time_stamp = Utlis.GetTimestamp()
-                        };
-                        var functionControlDataJson = Newtonsoft.Json.JsonConvert.SerializeObject(readDataObj);
-                        var sendBytes = Ins.ConvertSendBodyData(CommunicationTopic.ct.ReadStatus, functionControlDataJson);
-                        MainPage.Log($"鏈湴閫氳 鍙戦�丠DL-Link鏁版嵁:{functionControlDataJson}");
-                        new Control_Udp().SendLocalHdlLinkData(sendBytes, readDataObj.id);
+                        MainPage.Log($"鍙戦�佹暟鎹紓甯�: {ex.Message}");
                     }
                 }
                 else
                 {
-                    var pm = new DAL.Server.HttpServerRequest();
-                    var pack = pm.RefreshDeviceStatus(new List<string>() { function.deviceId });
+                    var readKey = new Dictionary<string, string>();
+                    readKey.Add("sid", function.sid);
+
+                    var readDataObj = new AlinkReadFunctionStatusObj()
+                    {
+                        id = Ins.msg_id.ToString(),
+                        objects = new List<Dictionary<string, string>>()
+                        {
+                            readKey
+                        },
+                        time_stamp = Utlis.GetTimestamp()
+                    };
+                    var functionControlDataJson = Newtonsoft.Json.JsonConvert.SerializeObject(readDataObj);
+                    var sendBytes = Ins.ConvertSendBodyData(CommunicationTopic.ct.ReadStatus, functionControlDataJson);
+                    MainPage.Log($"鏈湴閫氳 鍙戦�丠DL-Link鏁版嵁:{functionControlDataJson}");
+                    new Control_Udp().SendLocalHdlLinkData(sendBytes, readDataObj.id);
                 }
+            }
+            else
+            {
+                var pm = new DAL.Server.HttpServerRequest();
+                var pack = pm.RefreshDeviceStatus(new List<string>() { function.deviceId });
             }
         }
 
@@ -570,7 +561,7 @@
 
             string sendDataString = topicString + lengthString + bodyDataString;
             byte[] sendDataBytes = Encoding.ASCII.GetBytes(sendDataString);
-            MainPage.Log($"杞崲HDL-Link鏁版嵁\r\n{sendDataString}\r\n");
+            //MainPage.Log($"杞崲HDL-Link鏁版嵁\r\n{sendDataString}\r\n");
 
             return sendDataBytes;
         }
@@ -644,7 +635,7 @@
                         {
                             Ins.GatewayId = device.device_mac;
                         }
-                        reportIp = "239.0.168.188";// device.ip_address;//涓绘挱鍦板潃涔熻兘鎺у埗璁惧
+                        reportIp = "239.0.168.188";// device.ip_address;
                     }
                 }
                 else if (receiveObj.Topic == CommunicationTopic.ct.ReadStatus + "_reply" ||
@@ -670,6 +661,15 @@
         /// <param name="updateBytes"></param>
         public void UpdataFunctionStatus(string revString, byte[] usefulBytes,bool isCloudData = false)
         {
+
+            if (Ins.GatewayOnline_Local && isCloudData)//鏈湴閾炬帴锛岄櫎浜嗘秱楦﹁澶囨暟鎹箣澶栫殑浜戠鏁版嵁涓嶅鐞�
+            {
+                if (FunctionList.List.GetDeviceFunctionList(SPK.BrandType.Tuya).Count == 0)
+                {
+                    //MainPage.Log($"A鍗忚鏇存柊鐘舵��:鏈湴閾炬帴锛岄櫎浜嗘秱楦﹁澶囨暟鎹箣澶栫殑浜戠鏁版嵁涓嶅鐞�...");
+                    return;
+                }
+            }
             var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<AlinkFunctionStatusObj>(revString);
             if (temp != null)
             {
@@ -679,22 +679,6 @@
                 {
                     try
                     {
-
-                        if (Ins.GatewayOnline_Local && isCloudData)//鏈湴閾炬帴锛岄櫎浜嗘秱楦﹁澶囨暟鎹箣澶栫殑浜戠鏁版嵁涓嶅鐞�
-                        {
-                            if (FunctionList.List.OtherBrandFunction.Count != 0)
-                            {
-                                if (FunctionList.List.OtherBrandFunction.Find((obj) => obj.sid == updateTemp.sid) == null)
-                                {
-                                    //MainPage.Log($"A鍗忚鏇存柊鐘舵��:鏈湴閾炬帴锛岄櫎浜嗘秱楦﹁澶囨暟鎹箣澶栫殑浜戠鏁版嵁涓嶅鐞�...");
-                                    return;
-                                }
-                            }
-                        }
-
-
-
-
                         var localFunction = allLocalFuntion.Find((obj) => obj.sid == updateTemp.sid);
                         if (localFunction == null)
                         {
@@ -719,9 +703,6 @@
                         Function localObj = null;
                         switch (localFunction.spk)
                         {
-                            case SPK.ElectricEnergy:
-                                EnergyMainPage.UpdataStatus(localFunction);
-                                break;
                             case SPK.LightSwitch:
                                 RelayPage.UpdataState(localFunction);
                                 break;
@@ -828,14 +809,6 @@
                             case SPK.SensorTVOC:
                             case SPK.SensorTemperature:
                             case SPK.SensorHumidity:
-                                if(localFunction.spk == SPK.SensorTemperature)
-                                {
-                                    HomePage.LoadEvent_RefreshEnvirIndoorTemp();
-                                }
-                                else if (localFunction.spk == SPK.SensorHumidity)
-                                {
-                                    HomePage.LoadEvent_RefreshEnvirIndoorHumi();
-                                }
                                 EnvironmentalPage.LoadEvent_UpdataStatus(localFunction);
                                 break;
                             case SPK.ElectricSocket:
@@ -853,9 +826,7 @@
                             case SPK.SensorWater:
                             case SPK.ClothesHanger:
                             case SPK.AcIr:
-                            case SPK.SenesorMegahealth:
                                 //璁惧鐘舵�佹帹閫�
-                                //鐘舵�佹洿鏂�
                                 Stan.HdlDeviceStatuPushLogic.Current.UpdateDeviceStatu(updateTemp.sid, updateTemp.status);
                                 break;
                         }
diff --git a/HDL_ON/DAL/DriverLayer/Control_Udp.cs b/HDL_ON/DAL/DriverLayer/Control_Udp.cs
index 4b9483b..fdb18ee 100644
--- a/HDL_ON/DAL/DriverLayer/Control_Udp.cs
+++ b/HDL_ON/DAL/DriverLayer/Control_Udp.cs
@@ -984,7 +984,7 @@
 
             try
             {
-                MainPage.Log("鍙戦�佹暟鎹�:" + SendFlag);
+                //MainPage.Log("鍙戦�佹暟鎹�:" + SendFlag);
                 UdpSocket._BusSocket.AsyncBeginSend(packet);
                 packet.HaveSendCount--;
 
@@ -1107,22 +1107,11 @@
                 var sendBytes = Control.Ins.ConvertSendBodyData(CommunicationTopic.SearchLoaclGateway, bodyString);
                 //缁勬挱鍙戦��
                 packet = new Packet(sendBytes, new System.Net.IPEndPoint(System.Net.IPAddress.Parse("239.0.168.188"), 8585));
-                packet.HaveSendCount = 4;
+                packet.HaveSendCount = 4;//ps锛氭病鏈夐噸鍙戯紝鍚庢湡鏈夋椂闂村彲浠ュ鍔犻噸鍙戝垽鏂�
                 System.Threading.Thread thread = new System.Threading.Thread(new System.Threading.ParameterizedThreadStart(managerSendCount));
                 thread.IsBackground = true;
                 thread.Start(packet);
                 //wait();涓嶉渶瑕佺瓑寰�
-
-
-
-
-                //hjSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
-                //hjSocket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, true);
-                //EndPoint ipep = new IPEndPoint(IPAddress.Parse(CsConst.myLocalIP), HDLUDP.UDPPort);
-                //hjSocket.Bind(ipep);
-
-
-
             }
             catch (Exception ex)
             {
diff --git a/HDL_ON/DAL/DriverLayer/UdpSocket.cs b/HDL_ON/DAL/DriverLayer/UdpSocket.cs
index 4946986..ab3cb02 100644
--- a/HDL_ON/DAL/DriverLayer/UdpSocket.cs
+++ b/HDL_ON/DAL/DriverLayer/UdpSocket.cs
@@ -46,9 +46,10 @@
             busSocket = new Socket (AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
             busSocket.EnableBroadcast = true;
             try {
-				busSocket.Bind(new IPEndPoint(IPAddress.Any, Port));
+                //busSocket.Bind (new IPEndPoint (IPAddress.Any, 6000));
+                busSocket.Bind(new IPEndPoint(IPAddress.Any, Port));
 
-				busSocket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, new MulticastOption(IPAddress.Parse("239.0.168.188")));
+                busSocket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, new MulticastOption(IPAddress.Parse("239.0.168.188")));
 			}
 			catch{
                 busSocket = null;
diff --git a/HDL_ON/DAL/Mqtt/MqttClient.cs b/HDL_ON/DAL/Mqtt/MqttClient.cs
index 93d0ae7..90cc0da 100644
--- a/HDL_ON/DAL/Mqtt/MqttClient.cs
+++ b/HDL_ON/DAL/Mqtt/MqttClient.cs
@@ -133,7 +133,7 @@
                 {
                     try
                     {
-                        System.Threading.Thread.Sleep(2000);
+                        System.Threading.Thread.Sleep(500);
                         //杩涘叆鍚庡彴涓嶅鐞�
                         if (MainPage.IsEnterBackground) continue;
                         if (MqttInfoConfig.Current.HomeGatewayInfo == null)
@@ -204,7 +204,6 @@
                         Topic = $"/user/{DB_ResidenceData.Instance.CurrentRegion.id}/app/thing/event/irCodeStudyDone/up",
                         QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce
                     };
-
                     #region 鏁版嵁鏇存柊鎺ㄩ�佷富棰�
                     //appHomeRefresh锛氫綇瀹呮暟鎹埛鏂伴�氱煡
                     var appHomeRefresh = new MqttTopicFilter()
@@ -224,13 +223,6 @@
                         Topic = $"/user/{DB_ResidenceData.Instance.CurrentRegion.id}/app/thing/event/appDeviceRefresh/up",
                         QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce
                     };
-                    //涓�绔彛瀵嗛挜鏇存柊閫氱煡
-                    var mqttkeyChange = new MqttTopicFilter()
-                    {
-                        Topic = $"/user/{MqttInfoConfig.Current.HomeGatewayInfo.gatewayId}/custom/mqtt/secret/change",
-                        QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce
-                    };
-
                     #endregion
 
 
@@ -238,7 +230,7 @@
                     var result = await RemoteMqttClient.SubscribeAsync(new MqttTopicFilter[] {
                         pirStatus,pirStudy,
                         appDeviceRefresh,appHomeRefresh,appRoomRefresh,
-                        topicFilterPush2, topicAlinkStatus ,mqttkeyChange});
+                        topicFilterPush2, topicAlinkStatus });
                     if (result.Items[0].ResultCode == MQTTnet.Client.Subscribing.MqttClientSubscribeResultCode.GrantedQoS0)
                     {
                         isSubscribeSuccess = true;
@@ -338,14 +330,14 @@
                                 {
                                     var bytes = Securitys.EncryptionService.AesDecryptPayload(e.ApplicationMessage.Payload, tuyaEncryptKey);
                                     var revString = Encoding.UTF8.GetString(bytes);
-                                    HDL_ON.UI.UI2.PersonalCenter.PirDevice.PirMethod.controldata = revString;
+                                    HDL_ON.UI.UI2.PersonalCenter.PirDevice.Method.controldata = revString;
                                 }
                                 //App璁㈤槄閬ユ帶鍣ㄨ嚜瀛︽寜閿涔犳垚鍔熼�氱煡
                                 else if (topic == $"/user/{DB_ResidenceData.Instance.CurrentRegion.id}/app/thing/event/irCodeStudyDone/up")
                                 {
                                     var bytes = Securitys.EncryptionService.AesDecryptPayload(e.ApplicationMessage.Payload, tuyaEncryptKey);
                                     var revString = Encoding.UTF8.GetString(bytes);
-                                    UI.UI2.PersonalCenter.PirDevice.PirMethod.buttondata = revString;
+                                    UI.UI2.PersonalCenter.PirDevice.Method.buttondata = revString;
                                 }
                                 #region 鏁版嵁鏇存柊鎺ㄩ�佷富棰�
                                 //appHomeRefresh锛氫綇瀹呮暟鎹埛鏂伴�氱煡
@@ -423,17 +415,6 @@
                                         MainPage.Log($"璇诲彇浜戠璁惧鏁版嵁澶辫触:Code:{deviceResult.Code};  Msg:{deviceResult.message}");
                                     }
                                 }
-                                //缃戝叧瀵嗛挜鍙樺寲
-                                else if (topic == $"/user/{DB_ResidenceData.Instance.CurrentRegion.id}/custom/mqtt/secret/change")
-                                {
-                                    var pm = new HttpServerRequest();
-                                    pm.GetHomeGatewayList();
-                                    MainPage.Log($"缃戝叧瀵嗛挜鍙樻洿");
-                                    MainPage.Log($"鏃у瘑閽ワ細{mqttEncryptKey}");
-                                    mqttEncryptKey = MqttInfoConfig.Current.HomeGatewayInfo.aesKey;
-                                    MainPage.Log($"鏂板瘑閽ワ細{mqttEncryptKey}");
-                                }
-
                                 #endregion
                                 //A缃戝叧璁惧鐘舵��-鍖呭惈娑傞甫璁惧
                                 else if (topic == $"/user/{DB_ResidenceData.Instance.CurrentRegion.id}/app/thing/property/send")
@@ -504,8 +485,6 @@
                 catch (Exception ex)
                 {
                     Utlis.WriteLine($"error:" + ex.Message);
-                    //mqtt杩炴帴寮傚父锛屾竻绌烘湰鍦癿qtt淇℃伅锛屽彲鑳介渶瑕侀噸鏂拌幏鍙栵細wxr
-                    MqttInfoConfig.Current.Refresh();
                 }
                 finally
                 {
@@ -647,8 +626,6 @@
                     //閲嶆柊涓績鏈嶅姟鍣ㄨ幏鍙栧弬鏁版爣璁�
                     MqttInfoConfig.Current.IfGetMqttInfoSuccess = false;
                     Console.WriteLine("Connect error: " + ex.Message);
-                    //mqtt杩炴帴寮傚父锛屾竻绌烘湰鍦癿qtt淇℃伅锛屽彲鑳介渶瑕侀噸鏂拌幏鍙栵細wxr
-                    MqttInfoConfig.Current.Refresh();
                 }
                 finally
                 {
@@ -694,7 +671,7 @@
         {
             if (mMes == PushSignStr) return;//鏄嚜宸辩殑鐧诲綍鎺ㄩ�佷笉澶勭悊//鎴栬�呭綋鍓嶄笉鏄繙绋嬮摼鎺ョ姸鎬�
             //娴嬭瘯璐﹀彿锛屼笉鎸や笅绾�
-            switch (UserInfo.Current.userMobileInfo)
+            switch (UserInfo.Current.AccountString)
             {
                 case "13415629083":
                 case "18316120654":
@@ -709,8 +686,6 @@
                 case "18778381374":
                 case "18316672920":
                 case "15971583093":
-                case "15626203746":
-                case "551775569@qq.com":
                     return;
             }
 
@@ -842,12 +817,9 @@
         /// <returns></returns>
         static async Task GetMqttInfoAndMQTTConnectAsync()
         {
-            var mqttInfoRequestResult_Obj = new HttpServerRequest().GetMqttRemoteInfo(GetRandomKey());
+            var mqttInfoRequestResult_Obj = new Server.HttpServerRequest().GetMqttRemoteInfo(GetRandomKey());
             if (mqttInfoRequestResult_Obj != null)
             {
-                MainPage.Log($"鑾峰彇mqtt info 鎴愬姛 /r/n clientId:{mqttInfoRequestResult_Obj.clientId}/r/n passWord:{mqttInfoRequestResult_Obj.passWord} /r/n url:{mqttInfoRequestResult_Obj.url}/r/n userName:{mqttInfoRequestResult_Obj.userName}");
-
-
                 MqttInfoConfig.Current.mMqttInfo = mqttInfoRequestResult_Obj;
                 await MQTTConnectAsync();
                 //1.鍒ゆ柇鏄惁缁戝畾浜嗙綉鍏筹紝鑾峰彇缃戝叧杩滅▼杩炴帴鐨勫姞瀵咾EY
diff --git a/HDL_ON/DAL/Mqtt/MqttInfoConfig.cs b/HDL_ON/DAL/Mqtt/MqttInfoConfig.cs
index 2bc9532..4d44a9c 100644
--- a/HDL_ON/DAL/Mqtt/MqttInfoConfig.cs
+++ b/HDL_ON/DAL/Mqtt/MqttInfoConfig.cs
@@ -67,8 +67,7 @@
         public void Refresh()
         {
             m_Current = null;
-            Common.FileUtlis.Files.DeleteFile(ConfigFile);
-            //Save();
+            Save();
         }
 
         public void Save()
diff --git a/HDL_ON/DAL/Server/HttpServerRequest.cs b/HDL_ON/DAL/Server/HttpServerRequest.cs
index 2e45be6..214c33d 100644
--- a/HDL_ON/DAL/Server/HttpServerRequest.cs
+++ b/HDL_ON/DAL/Server/HttpServerRequest.cs
@@ -51,7 +51,7 @@
             d.Add("type", qType);
             d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id);
             d.Add("deviceId",  deviceId );
-            d.Add("key",  deviceKey );
+            d.Add("key",  "value" );
 
             var requestJson = HttpUtil.GetSignRequestJson(d);
             return HttpUtil.RequestHttpsPost(NewAPI.Api_Post_EnvironmentalSensorHistoricalData, requestJson);
@@ -74,20 +74,8 @@
             var requestJson = HttpUtil.GetSignRequestJson(d);
             return HttpUtil.RequestHttpsPost(NewAPI.Api_Post_ArmSensorHistoricalData, requestJson);
         }
-        /// <summary>
-        /// 璇诲彇鏈�杩戜竴涓湀鐨勬暟鎹�
-        /// </summary>
-        /// <returns></returns>
-        public ResponsePackNew GetLastMonthHistory(string deviceId,string key)
-        {
-            Dictionary<string, object> d = new Dictionary<string, object>();
-            d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id);
-            d.Add("deviceId", deviceId);
-            d.Add("key", key);
 
-            var requestJson = HttpUtil.GetSignRequestJson(d);
-            return HttpUtil.RequestHttpsPost(NewAPI.Api_Post_SensorLastMonthHistoricalData, requestJson);
-        }
+
 
 
         #endregion
@@ -464,6 +452,18 @@
             return HttpUtil.RequestHttpsPost(NewAPI.API_POST_Member_UnbindWithAccount, requestJson).Code;
         }
 
+        /// <summary>
+        /// 鏍规嵁璐﹀彿,鑾峰彇璐﹀彿淇℃伅
+        /// </summary>
+        /// <param name="i_account">鎸囧畾璐﹀彿</param>
+        /// <returns></returns>
+        public ResponsePackNew GetMemberInfoByAccount(string i_account)
+        {
+            var pra = new { account = i_account };
+            var requestJson = HttpUtil.GetSignRequestJson(pra);
+            return HttpUtil.RequestHttpsPost(NewAPI.API_POST_Member_GetMemberInfoByAccount, requestJson);
+        }
+
         #endregion
 
         #region 浣忓畢閮ㄥ垎
@@ -706,6 +706,24 @@
                 isAllowCreateScene = isAllow,
             });
             return HttpUtil.RequestHttpsPostFroHome(NewAPI.API_POST_Child_Update, requestJson);
+        }
+
+        /// <summary>
+        /// 杩囨埛
+        /// </summary>
+        /// <param name="i_account">瀵规柟璐﹀彿</param>
+        /// <returns></returns>
+        public bool TransferResidence(string i_account)
+        {
+            var pra2 = new
+            {
+                homeId = Entity.DB_ResidenceData.Instance.CurrentRegion.id,
+                account = i_account
+            };
+            var requestJson = HttpUtil.GetSignRequestJson(pra2);
+            var result = HttpUtil.RequestHttpsPost(NewAPI.API_Post_TransferResidence, requestJson);
+
+            return result != null && result.Code == StateCode.SUCCESS;
         }
 
         #region 鏂版暟鎹垎浜�
@@ -1290,9 +1308,6 @@
                             MainPage.cityInfo.pm25 = jt.GetValue("Air_Quality").ToString();
                             MainPage.cityInfo.windLevel = jt.GetValue("WindLevel").ToString();
                             MainPage.cityInfo.weather = jt.GetValue("Weather").ToString();
-                            MainPage.cityInfo.lowestTemperature = jt.GetValue("lowestTemperature").ToString();
-                            MainPage.cityInfo.highestTemperature = jt.GetValue("highestTemperature").ToString();
-
                             break;
                         }
                         catch (Exception ex)
@@ -1820,10 +1835,7 @@
             d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id);
             d.Add("productPlatform", productPlatform);
             d.Add("productBrand", productBrand);
-            if (productBrand != "MegaHealth")
-            {
-                d.Add("networkConfig", true);
-            }
+            d.Add("networkConfig", true);
 
             var requestJson = HttpUtil.GetSignRequestJson(d);
             return HttpUtil.RequestHttpsPostFroHome(NewAPI.Api_Post_GetDevcieList, requestJson);
@@ -1842,29 +1854,10 @@
             d.Add("productBrand", productBrand);
             d.Add("networkConfig", true);
             
+
             var requestJson = HttpUtil.GetSignRequestJson(d);
             return HttpUtil.RequestHttpsPostFroHome(NewAPI.Api_Post_Get3tyBrandDevcieList, requestJson);
         }
-        /// <summary>
-        /// 娉ㄥ唽绗笁鏂硅澶�
-        /// </summary>
-        /// <param name="productPlatform"></param>
-        /// <param name="productBrand"></param>
-        /// <returns></returns>
-        public ResponsePackNew IndependentRegister3TyDevcie(string spk,string extDevId,string deviceName)
-        {
-            Dictionary<string, object> d = new Dictionary<string, object>();
-            d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id);
-            d.Add("spk", spk);
-            d.Add("extDevId", extDevId);
-            d.Add("name", deviceName);
-
-            var requestJson = HttpUtil.GetSignRequestJson(d);
-            return HttpUtil.RequestHttpsPostFroHome(NewAPI.Api_Post_IndependentRegister3TyDevcie, requestJson);
-        }
-
-
-
 
         /// <summary>
         /// 鑾峰彇璁惧璇︽儏
@@ -2455,6 +2448,76 @@
         }
         #endregion
 
+        #region 鈻� 闂ㄩ攣鐩稿叧____________________________
+
+        /// <summary>
+        /// 鑾峰彇闂ㄩ攣鍘嗗彶璁板綍(鎸夋棩鏈熼檷搴�)
+        /// </summary>
+        /// <param name="i_device">璁惧瀵硅薄</param>
+        /// <returns></returns>
+        public List<Stan.DoorHistoryLog> GetDoorHistoryLogs(Function i_device)
+        {
+            //var dicPra = new Dictionary<string, object>();
+            //dicPra.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id);
+            //dicPra.Add("deviceId", i_device.deviceId);
+            //dicPra.Add("logType", "OPEN_DOOR");
+            //dicPra.Add("pageSize", "200");
+            //var requestJson = HttpUtil.GetSignRequestJson(dicPra);
+            //var packData = HttpUtil.RequestHttpsPostFroHome(NewAPI.API_POST_DoorHistory, requestJson);
+            //if (packData.Code != StateCode.SUCCESS)
+            //{
+            //    return null;
+            //}
+
+
+            //娴嬭瘯
+            var listLog = new List<Stan.DoorHistoryLog>();
+            for (int i = 1; i <= 3; i++)
+            {
+                var logInfo = new Stan.DoorHistoryLog { StrMsg = "鐢甸噺浣庯紝璇锋洿鎹㈢數姹�" };
+                logInfo.Time = new DateTime(2000, 5, 6, 10, 45, 23).AddDays(i);
+                listLog.Add(logInfo);
+            }
+            for (int i = 1; i <= 3; i++)
+            {
+                var logInfo = new Stan.DoorHistoryLog { StrMsg = "鐢甸噺浣庯紝璇锋洿鎹㈢數姹�" };
+                logInfo.Time = new DateTime(2001, 5, 6, 10, 45, 23).AddDays(i);
+                listLog.Add(logInfo);
+            }
+            for (int i = 1; i <= 3; i++)
+            {
+                var logInfo = new Stan.DoorHistoryLog { StrMsg = "鐢甸噺浣庯紝璇锋洿鎹㈢數姹�" };
+                logInfo.Time = new DateTime(2002, 5, 6, 10, 45, 23).AddDays(i);
+                listLog.Add(logInfo);
+            }
+
+            //鎸夋椂闂撮檷搴�
+            var listSortLog = new List<Stan.DoorHistoryLog>();
+            foreach (var logInfo in listLog)
+            {
+                bool canAdd = true;
+                for (int i = 0; i < listSortLog.Count; i++)
+                {
+                    if (logInfo.Time > listSortLog[i].Time)
+                    {
+                        //鏃堕棿姣斿綋鍓嶇殑绱㈠紩澶�,鍒欐彃鍏ュ埌瀹冪殑鍓嶉潰
+                        listSortLog.Insert(i, logInfo);
+                        canAdd = false;
+                        break;
+                    }
+                }
+                if (canAdd == true)
+                {
+                    //鏃ユ湡鏈�灏�,鍒欐坊鍔犲埌鏈熬
+                    listSortLog.Add(logInfo);
+                }
+            }
+            //鎻愮ず
+            //IMessageCommon.Current.ShowErrorInfoAlter(responePack.Code);
+            return listSortLog;
+        }
+
+        #endregion
         #region 鈻� 闊崇璇█鎺у埗鐩稿叧_________________________
         /// <summary>
         /// 鑾峰彇宸叉巿鏉冪殑闊崇鍒楄〃
diff --git a/HDL_ON/DAL/Server/HttpUtil.cs b/HDL_ON/DAL/Server/HttpUtil.cs
index b5bcf99..2b7a612 100644
--- a/HDL_ON/DAL/Server/HttpUtil.cs
+++ b/HDL_ON/DAL/Server/HttpUtil.cs
@@ -153,7 +153,9 @@
                 {
                     urlHead = OnAppConfig.Instance.RequestHttpsHost;
                 }
-
+                //"https://test-gz.hdlcontrol.com";
+                //"https://bahrain-gateway.hdlcontrol.com";
+                //urlHead="https://china-gateway.hdlcontrol.com";
                 string requestFullUrl = urlHead + apiPath;
 
 
diff --git a/HDL_ON/DAL/Server/NewAPI.cs b/HDL_ON/DAL/Server/NewAPI.cs
index c3ce296..1a7927f 100644
--- a/HDL_ON/DAL/Server/NewAPI.cs
+++ b/HDL_ON/DAL/Server/NewAPI.cs
@@ -53,6 +53,10 @@
         /// 鏇存柊涓汉淇℃伅
         /// </summary>
         public const string API_POST_Member_UpdateMemberInfo = "/smart-footstone/member/memberInfo/updateMemberInfo";
+        /// <summary>
+        /// 鏍规嵁璐﹀彿鑾峰彇涓汉淇℃伅
+        /// </summary>
+        public const string API_POST_Member_GetMemberInfoByAccount = "/smart-footstone/member/memberInfo/getMemberInfoByAccount";
         ///// <summary>
         ///// 涓婁紶澶村儚
         ///// </summary>
@@ -107,6 +111,11 @@
         /// 鏇存敼浣忓畢鏉冮檺
         /// </summary>
         public const string API_Post_Home_UpdateDebugPerm = "/home-wisdom/app/home/updateDebugPerm";
+        /// <summary>
+        /// 杩囨埛
+        /// </summary>
+        public const string API_Post_TransferResidence = "/home-wisdom/app/home/transfer";
+
         #endregion
 
         #region 鈻� 瀛愯处鍙� -- 娣诲姞浣忓畢鎴愬憳___________________________
@@ -328,10 +337,6 @@
         /// </summary>
         public const string Api_Post_Get3tyBrandDevcieList = "/home-wisdom/app/product/list";
         /// <summary>
-        /// 娉ㄥ唽绗笁鏂硅澶�
-        /// </summary>
-        public const string Api_Post_IndependentRegister3TyDevcie = "/home-wisdom/app/device/independentRegister";
-        /// <summary>
         /// 鑾峰彇璁惧璇︽儏
         /// </summary>
         public const string Api_Post_GetDevcieInfoList = "/home-wisdom/app/device/info";
@@ -376,10 +381,6 @@
         /// 鑾峰彇瀹夐槻浼犳劅鍣ㄥ巻鍙叉暟鎹�
         /// </summary>
         public const string Api_Post_ArmSensorHistoricalData = "/home-wisdom/app/device/message";
-        /// <summary>
-        /// 璇诲彇鏈�杩戜竴涓湀鐨勬暟鎹�
-        /// </summary>
-        public const string Api_Post_SensorLastMonthHistoricalData = "/home-wisdom/app/statistics/device/monthDiff";
         #endregion
 
         #region Kaede -- 鍦烘櫙鎺ュ彛____________________________
@@ -634,7 +635,30 @@
         public const string API_POST_FL_QRcode = "http://112.74.164.111:180/api.php/Device/setdynamicpwd";
         #endregion
 
+        #region  鈻�  -- 闂ㄩ攣鐩稿叧鎺ュ彛_______________________________
 
+        /// <summary>
+        /// 鍒ゆ柇闂ㄩ攣鏄惁绗竴浣跨敤
+        /// </summary>
+        public const string API_POST_DoorisFirstUse = "/home-wisdom/app/device/door/isUserBind";
+        /// <summary>
+        /// 闂ㄩ攣绗竴娆′娇鐢ㄦ椂,缁戝畾鐨勫瘑鐮�
+        /// </summary>
+        public const string API_POST_DoorBindFirstUsePsw = "/home-wisdom/app/device/door/userBind";
+        /// <summary>
+        /// 鑾峰彇闂ㄩ攣鎵�鏈夌殑瀵嗙爜
+        /// </summary>
+        public const string API_POST_GetDoorAllPsw = "/home-wisdom/app/device/door/getPwds";
+        /// <summary>
+        /// 闂ㄩ攣鍒嗛厤瀵嗙爜缁欑敤鎴�
+        /// </summary>
+        public const string API_POST_DoorAssignPswToUser = "/home-wisdom/app/device/door/pwdAllot";
+        /// <summary>
+        /// 闂ㄩ攣鐨勫巻鍙茶褰�
+        /// </summary>
+        public const string API_POST_DoorHistory = "/home-wisdom/app/device/door/logs";
+
+        #endregion
     }
 
     ///// <summary>
diff --git a/HDL_ON/Entity/Function/Function.cs b/HDL_ON/Entity/Function/Function.cs
index dee04dc..f7f94b2 100644
--- a/HDL_ON/Entity/Function/Function.cs
+++ b/HDL_ON/Entity/Function/Function.cs
@@ -1,4 +1,4 @@
-using System;
+锘縰sing System;
 using System.Collections.Generic;
 using HDL_ON.Common;
 using HDL_ON.DAL.Server;
@@ -126,6 +126,7 @@
         /// <returns>淇敼缁撴灉</returns>
         public bool SetAttrState(string key, object value)
         {
+            //var attrState = status.Find((s) => s.key == key.ToString());
             var attr = attributes.Find((s) => s.key == key);
             if (attr == null)
             {
@@ -777,10 +778,6 @@
         /// </summary>
         public const string Status = "status";
         /// <summary>
-        /// 姣背娉紶鎰熷櫒锛屽姩浣滅姸鎬�
-        /// </summary>
-        public const string ActionStatus = "action_state";
-        /// <summary>
         /// 鐢甸噺鐘舵��
         /// </summary>
         public const string BatteryState = "battery_state";
@@ -880,14 +877,6 @@
         /// </summary>
         public const string TuyaWaterTime = "countdown_1";
         #endregion
-        /// <summary>
-        /// 鍔熺巼
-        /// </summary>
-        public const string Power = "power";
-        /// <summary>
-        /// 鎬荤數閲�
-        /// </summary>
-        public const string TotalElectricity = "total_electricity";
 
 
     }
@@ -945,8 +934,6 @@
 
     public static class SPK
     {
-       
-
 
         #region 鐏厜
         /// <summary>
@@ -1088,11 +1075,6 @@
         /// 鑳芥簮妯″潡
         /// </summary>
         public const string EnergyStandard = "energy.standard";
-
-        /// <summary>
-        /// 鑳芥簮-鐢佃兘
-        /// </summary>
-        public const string ElectricEnergy = "energy.electric";
         /// <summary>
         /// 鑳芥簮spk鍒楄〃
         /// </summary>
@@ -1100,7 +1082,7 @@
         public static List<string> EnergySpkList()
         {
             var spkList = new List<string>();
-            spkList.Add(ElectricEnergy);
+            spkList.Add(EnergyStandard);
             return spkList;
         }
         #endregion
@@ -1165,10 +1147,6 @@
         /// 锛堝共鎺ョ偣锛�
         /// </summary>
         public const string SensorDryContact = "sensor.dryContact";
-        /// <summary>
-        /// 姣背娉紶鎰熷櫒
-        /// </summary>
-        public const string SenesorMegahealth = "sensor.megahealth";
 
         /// <summary>
         /// 瀹夐槻浼犳劅鍣╯pk鍒楄〃
@@ -1187,7 +1165,6 @@
             spkList.Add(SensorDuiShe);
             spkList.Add(SensoruUtrasonic);
             spkList.Add(SensorDryContact);
-            spkList.Add(SenesorMegahealth);
             return spkList;
         }
         #endregion
@@ -1244,10 +1221,6 @@
         /// 绾㈠銆佺數瑙�
         /// </summary>
         public const string TvIr = "ir.tv";
-        /// <summary>
-        /// 绾㈠銆佸皬绫崇數瑙�
-        /// </summary>
-        public const string TvXmIr = "ir.tvxm";
         /// <summary>
         /// 瀹剁數銆侀鎵�
         /// </summary>
@@ -1315,12 +1288,9 @@
             spkList.Add(ElectricSocket);
             spkList.Add(ElectricTV);
             spkList.Add(TvIr);
-            spkList.Add(TvXmIr);
             spkList.Add(ElectricFan);
             spkList.Add(ClothesHanger);
             spkList.Add(IrLearn);
-            spkList.Add(PjtIr);
-            spkList.Add(StbIr);
             spkList.Add(ElectricTuyaAirCleaner);
             spkList.Add(ElectricTuyaFan);
             spkList.Add(ElectricTuyaWeepRobot);
@@ -1331,6 +1301,12 @@
 
         #endregion
 
+        #region 鑳芥簮
+        /// <summary>
+        /// 鑳芥簮-鐢佃兘
+        /// </summary>
+        public const string ElectricEnergy = "energy.electric";
+        #endregion 
 
         #region 璁惧绫�
         /// <summary>
@@ -1350,21 +1326,7 @@
         }
         #endregion
 
-        #region 绗笁鏂箂pk鍒楄〃
-        /// <summary>
-        /// 鑾峰彇鎵�鏈夌涓夋柟鍝佺墝鍔熻兘鐨剆pk
-        /// </summary>
-        /// <returns></returns>
-        public static List<string> GetAll3tySPK()
-        {
-            var spkList = new List<string>();
-            spkList.Add(ElectricTuyaAirCleaner);
-            spkList.Add(ElectricTuyaFan);
-            spkList.Add(ElectricTuyaWaterValve);
-            spkList.Add(ElectricTuyaWeepRobot);
-            spkList.Add(SenesorMegahealth);
-            return spkList;
-        }
+
         /// <summary>
         /// 鑾峰彇绗笁鏂硅澶噑pk
         /// </summary>
@@ -1375,19 +1337,16 @@
 
             switch (brandType)
             {
+                case BrandType.All3tyBrand:
                 case BrandType.Tuya:
                     list.Add(ElectricTuyaAirCleaner);
                     list.Add(ElectricTuyaFan);
                     list.Add(ElectricTuyaWaterValve);
                     list.Add(ElectricTuyaWeepRobot);
                     break;
-                case BrandType.All3tyBrand:
-                    list.Add(SenesorMegahealth);//鍏嗚
-                    break;
             }
             return list;
         }
-        #endregion
 
 
         /// <summary>
@@ -1398,10 +1357,6 @@
             All = 0,
             Hdl = 1,
             Tuya = 2,
-            /// <summary>
-            /// 鍏嗚
-            /// </summary>
-            Megahealth = 3,
 
 
             All3tyBrand = 999,
diff --git a/HDL_ON/Entity/Function/Scene.cs b/HDL_ON/Entity/Function/Scene.cs
index f4bdd83..ded2b0c 100644
--- a/HDL_ON/Entity/Function/Scene.cs
+++ b/HDL_ON/Entity/Function/Scene.cs
@@ -67,7 +67,7 @@
         /// </summary>
         public string delay = "0";
         /// <summary>
-        /// 鍦烘櫙鐨勬渶鍚庝竴娆℃墽琛屾椂闂�
+        /// 鍦烘櫙鐨勬渶濂戒竴娆℃墽琛屾椂闂�
         /// </summary>
         public string LastExecutionTime = "";
 
@@ -348,18 +348,7 @@
         {
             var delayInt = 0;
             int.TryParse(delay,out delayInt);
-            if(delayInt == 0)
-            {
-                return Language.StringByID(StringId.NoDelay);
-            }
-            string text = "";
-            if (delayInt > 60)
-            {
-                text = (delayInt / 60) + Language.StringByID(StringId.m) + (delayInt % 60) + Language.StringByID(StringId.s);
-            }else
-            {
-                text = delayInt + Language.StringByID(StringId.s);
-            }
+            string text = (delayInt / 60)+Language.StringByID(StringId.m)+(delayInt % 60)+Language.StringByID(StringId.s);
             return text;
             switch (delay)
             {
diff --git a/HDL_ON/Entity/FunctionList.cs b/HDL_ON/Entity/FunctionList.cs
index 62b1fee..bef3882 100644
--- a/HDL_ON/Entity/FunctionList.cs
+++ b/HDL_ON/Entity/FunctionList.cs
@@ -143,25 +143,6 @@
         /// </summary>
         public UI.UI2.FuntionControlView.Video.VideoClouds videoIntercom;
 
-        List<Function> _OtherBrandFunction;
-        /// <summary>
-        /// 绗笁鏂瑰搧鐗屽姛鑳�
-        /// </summary>
-        public List<Function> OtherBrandFunction
-        {
-            get
-            {
-                if(_OtherBrandFunction == null)
-                {
-                    _OtherBrandFunction = new List<Function>();
-                    var spkList = SPK.GetAll3tySPK();
-                    _OtherBrandFunction = Functions.FindAll((obj) => spkList.Contains(obj.spk));
-                }
-                return _OtherBrandFunction;
-            }
-        }
-
-
         /// <summary>
         /// 鍦烘櫙鍒楄〃
         /// </summary>
@@ -289,9 +270,6 @@
 
             return Functions;
         }
-
-
-
 
         /// <summary>
         /// 娓呯┖璁惧鍔熻兘鍒楄〃
diff --git a/HDL_ON/Entity/ResponseEntity/CityInfo.cs b/HDL_ON/Entity/ResponseEntity/CityInfo.cs
index 9a8a914..c6f2a93 100644
--- a/HDL_ON/Entity/ResponseEntity/CityInfo.cs
+++ b/HDL_ON/Entity/ResponseEntity/CityInfo.cs
@@ -30,14 +30,6 @@
         /// 鏃跺尯
         /// </summary>
         public string timeZone;
-        /// <summary>
-        /// 鏈�浣庢俯
-        /// </summary>
-        public string lowestTemperature = "--";
-        /// <summary>
-        /// 鏈�楂樻俯
-        /// </summary>
-        public string highestTemperature = "--";
 
         /// <summary>
         /// 娓╁害
diff --git a/HDL_ON/HDL_ON.projitems b/HDL_ON/HDL_ON.projitems
index 6145835..d66621d 100644
--- a/HDL_ON/HDL_ON.projitems
+++ b/HDL_ON/HDL_ON.projitems
@@ -26,8 +26,28 @@
     <Compile Include="$(MSBuildThisFileDirectory)Entity\Function\Function.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI0-Public\PublicAssmebly.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\CSS\CSS.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI0-Stan\Common\CommonClass.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI0-Stan\Controls\BottomControls\BottomDateSelectControl.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI0-Stan\Controls\BottomControls\BottomMenuSelectControl.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI0-Stan\Controls\BottomControls\BottomSomeDaySelectControl.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI0-Stan\Controls\TextInputControls\TextInputDialog.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI0-Stan\Form\AppGestureSecurityForm.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI0-Stan\Form\AppNumPasswordSecurityForm.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI0-Stan\Logic\HdlBluetoothAndroidLogic.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI0-Stan\Logic\HdlBluetoothIOSLogic.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI0-Stan\Logic\HdlCheckLogic.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI0-Stan\Logic\HdlCommonLogic.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\RoomListManage\Transfer\TransferingResidencePage.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\RoomListManage\Transfer\TransferResidenceResultPage.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\DoorLock\DoorLockAlwaysOnManagerPage.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\DoorLock\DoorLockAlwaysOnListPage.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\DoorLock\DoorLockExpireTimeSettionPage.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\DoorLock\DoorLockHistoryInfoPage.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\DoorLock\DoorLockHistoryTypeScreenPage.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\DoorLock\DoorLockListPage.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\DoorLock\DoorLockPage.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\DoorLock\DoorLockSelectTimePage.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\DoorLock\DoorLockUnlockMethordManagerPage.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\UserPageBLL.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\UserPage.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\2-Classification\ClassificationPage.cs" />
@@ -352,6 +372,7 @@
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\PirDevice\PirSend.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\PirDevice\AddControlComplete.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\PirDevice\View\PatchView.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\PirDevice\Method.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\PirDevice\View\FailView.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\PirDevice\View\ReplicationView.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Electrical\ClothesHangerSetTimePage.cs" />
@@ -359,6 +380,11 @@
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI0-Stan\Logic\HdlCloudReceiveLogic.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI0-Stan\Logic\HdlWifiLogic.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI0-Stan\Controls\CompoundControls\ProgressRowBar.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AddDevice\AddMiniRemoteControlDirection3Page.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AddDevice\AddMiniRemoteControlDirection1Page.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AddDevice\AddMiniRemoteControlDirection2Page.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AddDevice\AddMiniRemoteControlDirection4Page.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AddDevice\AddThirdPartyDeviceMenuListPage.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\PirDevice\Matching.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\PirDevice\View\PirNameView.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AddFunction\BrandListPage.cs" />
@@ -383,6 +409,7 @@
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\1ContorlPage\AcControlPage_AddIrButton.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Energy\EnergyMainPage.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)DAL\ThirdPartySdk\ESOnVideo.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Energy\EchartsOption_Energy.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\1ContorlPage\AirFreshControlPage.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Video\VideoMethod.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Video\VideoSend.cs" />
@@ -401,18 +428,6 @@
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\SmartSpeaker\SmartSpeakerSelectDevicesPage.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\SmartSpeaker\SmartSpeakerRoomListPage.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Electrical\DvdPage.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Electrical\PjtPage.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Electrical\StbPage.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\PirDevice\PirMethod.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AddDevice\SenesorMegahealth\AddSenesorMegahealthDirection1Page.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AddDevice\MiniRemoteControl\AddMiniRemoteControlDirection1Page.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AddDevice\MiniRemoteControl\AddMiniRemoteControlDirection2Page.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AddDevice\MiniRemoteControl\AddMiniRemoteControlDirection3Page.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AddDevice\MiniRemoteControl\AddMiniRemoteControlDirection4Page.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AddDevice\MiniRemoteControl\AddThirdPartyDeviceMenuListPage.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AddDevice\SenesorMegahealth\SenesorMegahealthManagerPage.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\ArmSensor\SenesorMegahealthPage.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Electrical\IrFanPage.cs" />
   </ItemGroup>
   <ItemGroup>
     <Folder Include="$(MSBuildThisFileDirectory)DAL\" />
@@ -441,7 +456,6 @@
     <Folder Include="$(MSBuildThisFileDirectory)DAL\DriverLayer\" />
     <Folder Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AboutOn\" />
     <Folder Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\GetSupport\" />
-    <Folder Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\RoomListManage\Transfer\" />
     <Folder Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\RoomListManage\AddRoom\" />
     <Folder Include="$(MSBuildThisFileDirectory)UI\BindingResidence\" />
     <Folder Include="$(MSBuildThisFileDirectory)Common\Utlis\" />
@@ -458,7 +472,5 @@
     <Folder Include="$(MSBuildThisFileDirectory)DAL\ThirdPartySdk\" />
     <Folder Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\ArmCenter\" />
     <Folder Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\SmartSpeaker\" />
-    <Folder Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AddDevice\SenesorMegahealth\" />
-    <Folder Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AddDevice\MiniRemoteControl\" />
   </ItemGroup>
 </Project>
\ No newline at end of file
diff --git a/HDL_ON/UI/MainPage.cs b/HDL_ON/UI/MainPage.cs
index 798e219..1315ac8 100644
--- a/HDL_ON/UI/MainPage.cs
+++ b/HDL_ON/UI/MainPage.cs
@@ -20,7 +20,7 @@
         /// <summary>
         /// 鐗堟湰鍙�
         /// </summary>
-        public static string VersionString = "1.2.0608";
+        public static string VersionString = "1.2.0428";
         ///// <summary>
         ///// 瀹㈡埛绔被鍨�
         ///// </summary>
diff --git a/HDL_ON/UI/UI0-Public/OperationSuccessPromptPage.cs b/HDL_ON/UI/UI0-Public/OperationSuccessPromptPage.cs
index f1de0b0..f9d4f33 100644
--- a/HDL_ON/UI/UI0-Public/OperationSuccessPromptPage.cs
+++ b/HDL_ON/UI/UI0-Public/OperationSuccessPromptPage.cs
@@ -11,12 +11,6 @@
     {
         Dialog dialog;
         FrameLayout bodyView;
-
-        /// <summary>
-        /// 鍥炴帀鍑芥暟
-        /// </summary>
-        public Action rebackAction = null;
-
         public OperationResultDisPalyPage()
         {
             dialog = this;
@@ -30,8 +24,7 @@
         /// <param name="title">椤甸潰鏍囬</param>
         /// <param name="tipTitle">鎻愮ず鏍囬</param>
         /// <param name="tipMsg">鎻愮ず淇℃伅</param>
-        /// <param name="confirmText">鎸夐挳鏂囨湰</param>
-        public void LoadPage(bool result,string title,string tipTitle,string tipMsg,string confirmText = "")
+        public void LoadPage(bool result,string title,string tipTitle,string tipMsg)
         {
             bodyView.BackgroundColor = CSS_Color.BackgroundColor;
             dialog.AddChidren(bodyView);
@@ -84,14 +77,8 @@
                 TextSize = CSS_FontSize.SubheadingFontSize,
             };
             bodyView.AddChidren(btnConfirm);
-            if(confirmText != "")
-            {
-                btnConfirm.Text = confirmText;
-            }
-
             btnConfirm.MouseUpEventHandler = (sender, e) => {
                 this.Close();
-                rebackAction?.Invoke();
             };
 
         }
diff --git a/HDL_ON/UI/UI0-Public/PublicAssmebly.cs b/HDL_ON/UI/UI0-Public/PublicAssmebly.cs
index ffff590..de994f8 100644
--- a/HDL_ON/UI/UI0-Public/PublicAssmebly.cs
+++ b/HDL_ON/UI/UI0-Public/PublicAssmebly.cs
@@ -586,7 +586,7 @@
             BottomTimeSelectControl timeControl = new BottomTimeSelectControl(mRange, sRange, 5, Language.StringByID(StringId.SceneDelay));
             timeControl.RowHeight = Application.GetRealHeight(50);
             timeControl.InitControl(0, 0, 262, false);
-            //timeControl.ChangePickerEvent2();
+            timeControl.ChangePickerEvent2();
             timeControl.FinishEvent = (type, hours, min) =>
             {
                 if(type == 1)
diff --git a/HDL_ON/UI/UI0-Public/PublicAssmeblyBLL.cs b/HDL_ON/UI/UI0-Public/PublicAssmeblyBLL.cs
index 82d5d2b..3a84846 100644
--- a/HDL_ON/UI/UI0-Public/PublicAssmeblyBLL.cs
+++ b/HDL_ON/UI/UI0-Public/PublicAssmeblyBLL.cs
@@ -76,23 +76,10 @@
                         break;
                     case SPK.ElectricTV:
                     case SPK.TvIr:
-                    case SPK.TvXmIr:
                         var tvView = new TVPage(function);
                         MainPage.BasePageView.AddChidren(tvView);
                         tvView.LoadPage(btnCollectionIcon, btnName, btnFromFloor);
                         MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
-                        break;
-                    case SPK.PjtIr://鎶曞奖浠�
-                        var pjtView = new PjtPage(function);
-                        MainPage.BasePageView.AddChidren(pjtView);
-                        pjtView.LoadPage(btnCollectionIcon, btnName, btnFromFloor);
-                        MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
-                        break;
-                    case SPK.StbIr://鏈洪《鐩�
-                        var stbView = new StbPage(function);
-                        MainPage.BasePageView.AddChidren(stbView);
-                        stbView.LoadPage(btnCollectionIcon, btnName, btnFromFloor);
-                        MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                         break;
                     case SPK.ElectricTuyaAirCleaner:
                         var airCleaner = new TuyaAirCleanerPage();
@@ -142,11 +129,6 @@
                         var doorwindowPage = new SensorDoorWinwsPage();
                         doorwindowPage.ShowColltionButton = false;
                         doorwindowPage.AddForm(function, btnCollectionIcon, btnName, btnFromFloor);
-                        break;
-                    case SPK.SenesorMegahealth:
-                        var smPage = new SenesorMegahealthPage();
-                        smPage.ShowColltionButton = false;
-                        smPage.AddForm(function, btnCollectionIcon, btnName, btnFromFloor);
                         break;
                     case SPK.ClothesHanger:
                         var clothesHangerpage = new ClothesHangerPage();
diff --git a/HDL_ON/UI/UI0-Public/TopViewDiv.cs b/HDL_ON/UI/UI0-Public/TopViewDiv.cs
index 0cacd40..36b2834 100644
--- a/HDL_ON/UI/UI0-Public/TopViewDiv.cs
+++ b/HDL_ON/UI/UI0-Public/TopViewDiv.cs
@@ -98,6 +98,12 @@
             };
             contentView.AddChidren(btnBackIcon);
 
+            btnBack = new Button()
+            {
+                Width = Application.GetRealWidth(100),
+            };
+            contentView.AddChidren(btnBack);
+
             Button btnTilte = new Button()
             {
                 Gravity = Gravity.CenterHorizontal,
@@ -111,12 +117,6 @@
             };
             contentView.AddChidren(btnTilte);
 
-
-            btnBack = new Button()
-            {
-                Width = Application.GetRealWidth(70),
-            };
-            contentView.AddChidren(btnBack);
 
             LoadEventList();
         }
diff --git a/HDL_ON/UI/UI0-Public/Widget/EmptyTipView.cs b/HDL_ON/UI/UI0-Public/Widget/EmptyTipView.cs
index fd8cbcf..c0ac00b 100644
--- a/HDL_ON/UI/UI0-Public/Widget/EmptyTipView.cs
+++ b/HDL_ON/UI/UI0-Public/Widget/EmptyTipView.cs
@@ -23,33 +23,29 @@
         /// <summary>
         /// 
         /// </summary>
-        public EmptyTipView(string tipMsg ="",int btnTipNotY=0)
+        public EmptyTipView(string tipMsg ="")
         {
             if(tipMsg == "")
             {
                 tipMsg = Language.StringByID(StringId.ContentIsEmpty);
             }
-            int tipHeight = Application.GetRealWidth(180 + btnTipNotY);
+            int tipHeight = Application.GetRealWidth(180);
 
-            this.Height = tipHeight + Application.GetRealHeight(17 );
+            this.Height = tipHeight + Application.GetRealHeight(17);
 
             BtnTipNot = new Button()
             {
                 Gravity = Gravity.CenterHorizontal,
-                Width = Application.GetRealWidth(180),
-                Height = Application.GetRealWidth(180),
+                Width = tipHeight,
+                Height = tipHeight,
                 UnSelectedImagePath = "TipNot.png",
             };
             this.AddChidren(BtnTipNot);
-            if(btnTipNotY!=0)
-            {
-                BtnTipNot.Y = Application.GetRealHeight(btnTipNotY);
-            }
 
             //绌虹┖濡備篃
             Button btnTipNotText = new Button()
             {
-                Y = tipHeight ,
+                Y = tipHeight,
                 Height = Application.GetRealHeight(17),
                 Text = tipMsg,
                 TextAlignment = TextAlignment.Center,
diff --git a/HDL_ON/UI/UI0-Stan/Common/CommonClass.cs b/HDL_ON/UI/UI0-Stan/Common/CommonClass.cs
new file mode 100644
index 0000000..a6e263f
--- /dev/null
+++ b/HDL_ON/UI/UI0-Stan/Common/CommonClass.cs
@@ -0,0 +1,128 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace HDL_ON.Stan
+{
+    #region 鈻� 鎴愬憳淇℃伅绫籣_________________________
+
+    /// <summary>
+    /// 鑾峰彇璐﹀彿鐨勪俊鎭殑缁撴灉
+    /// </summary>
+    public class AccountInfoResult
+    {
+        /// <summary>
+        /// 璐﹀彿(濡傛灉鏄暱搴︿负0鐨勫瓧绗︿覆,鍒欎唬琛ㄨ繖涓处鍙峰湪浜戠涓嶅瓨鍦�,闇�瑕佹墜鍔ㄨ祴鍊�)
+        /// </summary>
+        public string Account = string.Empty;
+        /// <summary>
+        /// 璐﹀彿鐨刬d(搴旇鏄富閿�)
+        /// </summary>
+        public string MemberId = string.Empty;
+        /// <summary>
+        /// 鐢ㄦ埛鏄电О
+        /// </summary>
+        public string MemberName = string.Empty;
+        /// <summary>
+        /// 鍦板尯鐮�
+        /// </summary>
+        public string MemberPhonePrefix = string.Empty;
+        /// <summary>
+        /// 閭
+        /// </summary>
+        public string MemberEmail = string.Empty;
+        /// <summary>
+        /// 鎵嬫満鍙�
+        /// </summary>
+        public string MemberPhone = string.Empty;
+        /// <summary>
+        /// 澶村儚鍦板潃
+        /// </summary>
+        public string MemberHeadIcon = string.Empty;
+    }
+
+    #endregion
+
+    #region 鈻� 甯稿紑鑷姩鍖栦俊鎭痏____________________
+
+    /// <summary>
+    /// 甯稿紑鑷姩鍖栦俊鎭�
+    /// </summary>
+    public class AlwayOnAutomationInfo
+    {
+        /// <summary>
+        /// 甯稿紑妯″紡寮�鍚殑 鏃�
+        /// </summary>
+        public int Hour = 9;
+        /// <summary>
+        /// 甯稿紑妯″紡寮�鍚殑 鍒�
+        /// </summary>
+        public int Minute = 0;
+        /// <summary>
+        /// 鏄惁鏄墦寮�甯稿紑妯″紡
+        /// </summary>
+        public bool IsOpenAlwayOn = true;
+        /// <summary>
+        /// 寰幆鏂瑰紡 1:鎵ц涓�娆�  2:姣忓ぉ  3:姣忓懆   4:姣忔湀
+        /// </summary>
+        public int LoopDiv = 1;
+        /// <summary>
+        /// 褰� LoopDiv = 3鏃�,瀹冪殑鍊兼槸 鏄熸湡1-7  LoopDiv = 4鏃�,瀹冪殑鍊兼槸 鏃ユ湡1-31  
+        /// </summary>
+        public List<int> ListLoopValue = new List<int>();
+        /// <summary>
+        /// 鎺ㄩ�侀厤缃�
+        /// </summary>
+        public UI.UI2.Intelligence.Automation.PushConfigs PushSettion = new UI.UI2.Intelligence.Automation.PushConfigs();
+    }
+    #endregion
+
+    #region 鈻� 闂ㄩ攣甯稿紑妯″紡淇℃伅___________________
+
+    /// <summary>
+    /// 闂ㄩ攣甯稿紑妯″紡淇℃伅
+    /// </summary>
+    public class DoorLockAlwayOnInfo
+    {
+        /// <summary>
+        /// 鏄惁鏄父寮�
+        /// </summary>
+        public bool IsAlwayOpen = false;
+        /// <summary>
+        /// 寮�濮嬫椂闂�
+        /// </summary>
+        public DateTime StartTime = DateTime.Now;
+        /// <summary>
+        /// 甯稿紑鐨勬椂闂�(灏忔椂)
+        /// </summary>
+        public int AlwayOpenHour = 4;
+    }
+    #endregion
+
+    #region 鈻� 闂ㄩ攣鍘嗗彶璁板綍淇℃伅___________________
+
+    /// <summary>
+    /// 闂ㄩ攣鍘嗗彶璁板綍淇℃伅
+    /// </summary>
+    public class DoorHistoryLog
+    {
+        /// <summary>
+        /// 璁惧涓婚敭
+        /// </summary>
+        public string Sid = string.Empty;
+        /// <summary>
+        /// 鏁版嵁搴撲富閿�
+        /// </summary>
+        public string Id = string.Empty;
+        /// <summary>
+        /// 娑堟伅
+        /// </summary>
+        public string StrMsg = string.Empty;
+        /// <summary>
+        /// 鏃堕棿
+        /// </summary>
+        public DateTime Time;
+    }
+
+    #endregion
+}
diff --git a/HDL_ON/UI/UI0-Stan/Controls/BaseControl/ButtonCtrBase.cs b/HDL_ON/UI/UI0-Stan/Controls/BaseControl/ButtonCtrBase.cs
index fe412fb..0b0c63a 100644
--- a/HDL_ON/UI/UI0-Stan/Controls/BaseControl/ButtonCtrBase.cs
+++ b/HDL_ON/UI/UI0-Stan/Controls/BaseControl/ButtonCtrBase.cs
@@ -62,7 +62,7 @@
         #region 鈻� 閲嶅啓褰摜鐨勫睘鎬____________________
 
         /// <summary>
-        /// 閲嶅啓Text灞炴��
+        /// 閲嶅啓Text灞炴��(鏂囨湰涓湁{0}鐨勮瘽,浼氳嚜鍔ㄥ叏閮ㄦ浛鎹负鎹㈣绗�)
         /// </summary>
         public new string Text
         {
@@ -70,7 +70,7 @@
             get { return base.Text == null ? string.Empty : base.Text; }
             set
             {
-                base.Text = value == null ? string.Empty : value;
+                base.Text = value == null ? string.Empty : value.Replace("{0}", "\r\n");
             }
         }
 
@@ -122,6 +122,38 @@
             }
         }
 
+        /// <summary>
+        /// 鑳屾櫙鑹�(閲嶅啓搴曞眰灞炴��)
+        /// </summary>
+        public new uint BackgroundColor
+        {
+            get { return base.BackgroundColor; }
+            set
+            {
+                //鍙湁涓嶄竴鏍�,鎵嶅彉鏇�
+                if (base.BackgroundColor != value)
+                {
+                    base.BackgroundColor = value;
+                }
+            }
+        }
+
+        /// <summary>
+        /// 瀛椾綋棰滆壊(閲嶅啓搴曞眰灞炴��)
+        /// </summary>
+        public new uint TextColor
+        {
+            get { return base.TextColor; }
+            set
+            {
+                //鍙湁涓嶄竴鏍�,鎵嶅彉鏇�
+                if (base.TextColor != value)
+                {
+                    base.TextColor = value;
+                }
+            }
+        }
+
         #endregion
 
         #region 鈻� 鍒濆鍖朹____________________________
@@ -163,20 +195,6 @@
                 i_Height = Application.GetRealHeight(i_Height);
             }
             this.Height = i_Height;
-            this.Width = i_Width;
-        }
-
-        /// <summary>
-        /// 鍒濆鍖栨帶浠跺ぇ灏�(涓嶄互骞冲潎鍊艰繘琛岀湡瀹炴暟鍊艰绠�)
-        /// </summary>
-        /// <param name="i_Width">瀹藉害</param>
-        /// <param name="real">鏄惁璁$畻鐪熷疄鍊�</param>
-        public void InitSize(int i_Width, bool real = false)
-        {
-            if (real == true)
-            {
-                i_Width = Application.GetRealWidth(i_Width);
-            }
             this.Width = i_Width;
         }
 
@@ -352,9 +370,19 @@
         /// <returns></returns>
         public int GetRealWidthByText()
         {
-            if (string.IsNullOrEmpty(this.Text) == true) { return Application.GetRealWidth(25); }
+            if (string.IsNullOrEmpty(this.Text) == true) { return Application.GetRealWidth(4); }
 
             return base.GetTextWidth();
+        }
+
+        /// <summary>
+        /// 璁$畻鍥剧墖鐨勭湡瀹為珮瀹藉害
+        /// </summary>
+        /// <param name="i_size"></param>
+        /// <returns></returns>
+        public int GetPictrueRealSize(int i_size)
+        {
+            return Application.GetRealWidth(i_size);
         }
 
         /// <summary>
@@ -376,16 +404,6 @@
                 row++;
             }
             return row;
-        }
-
-        /// <summary>
-        /// 璁$畻鍥剧墖鐨勭湡瀹為珮瀹藉害
-        /// </summary>
-        /// <param name="i_size"></param>
-        /// <returns></returns>
-        public int GetPictrueRealSize(int i_size)
-        {
-            return Application.GetRealWidth(i_size);
         }
 
         #endregion
diff --git a/HDL_ON/UI/UI0-Stan/Controls/BaseControl/TextInputBase.cs b/HDL_ON/UI/UI0-Stan/Controls/BaseControl/TextInputBase.cs
index b377db9..c695c11 100644
--- a/HDL_ON/UI/UI0-Stan/Controls/BaseControl/TextInputBase.cs
+++ b/HDL_ON/UI/UI0-Stan/Controls/BaseControl/TextInputBase.cs
@@ -95,7 +95,7 @@
         #region 鈻� 鍒濆鍖朹____________________________
 
         /// <summary>
-        /// 杈撳叆妗嗘帶浠剁殑鏈�鍒濆師鍨�(涓嶅缓璁慨鏀瑰拰鐩存帴浣跨敤):鏍囧噯瀛椾綋棰滆壊锛屾枃瀛楀悜宸﹂潬榻�,14鍙峰瓧
+        /// 杈撳叆妗嗘帶浠剁殑鏈�鍒濆師鍨�(涓嶅缓璁慨鏀瑰拰鐩存帴浣跨敤):鏍囧噯瀛椾綋棰滆壊(0xFF798394)锛屾枃瀛楀悜宸﹂潬榻�,14鍙峰瓧
         /// </summary>
         public TextInputBase()
         {
diff --git a/HDL_ON/UI/UI0-Stan/Controls/BottomControls/BottomDateSelectControl.cs b/HDL_ON/UI/UI0-Stan/Controls/BottomControls/BottomDateSelectControl.cs
new file mode 100644
index 0000000..64e45b2
--- /dev/null
+++ b/HDL_ON/UI/UI0-Stan/Controls/BottomControls/BottomDateSelectControl.cs
@@ -0,0 +1,275 @@
+锘縰sing Shared;
+using HDL_ON.UI.CSS;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace HDL_ON.Stan
+{
+    /// <summary>
+    /// 搴曢儴鏃ユ湡閫夋嫨鎺т欢(骞存湀鏃�),涓嶉渶瑕佸姞鍒扮埗鎺т欢
+    /// </summary>
+    public class BottomDateSelectControl : BottomDialogCommon
+    {
+        #region 鈻� 鍙橀噺澹版槑___________________________
+
+        /// <summary>
+        /// 缁撴潫浜嬩欢(0:鐐瑰嚮浜嗗彇娑�  1:鐐瑰嚮浜嗙‘瀹�,绗簩,涓�,鍥涘弬鏁颁负骞存湀鏃�)
+        /// </summary>
+        public Action<int, int, int, int> FinishEvent = null;
+        /// <summary>
+        /// 骞寸殑闆嗗悎
+        /// </summary>
+        private List<string> listYear = new List<string>();
+        /// <summary>
+        /// 鏈堢殑闆嗗悎
+        /// </summary>
+        private List<string> listMonth = new List<string>();
+        /// <summary>
+        /// 鏃ョ殑闆嗗悎
+        /// </summary>
+        private List<string> listDay = new List<string>();
+        /// <summary>
+        /// 閫夋嫨鐨勫勾
+        /// </summary>
+        private int selectYear = 0;
+        /// <summary>
+        /// 閫夋嫨鐨勬湀
+        /// </summary>
+        private int selectMonth = 0;
+        /// <summary>
+        /// 閫夋嫨鐨勬棩
+        /// </summary>
+        private int selectDay = 0;
+
+        #endregion
+
+        #region 鈻� 鍒濆鍖朹____________________________
+
+        /// <summary>
+        /// 搴曢儴鏃堕棿閫夋嫨鎺т欢(骞存湀鏃�),涓嶉渶瑕佸姞鍒扮埗鎺т欢
+        /// </summary>
+        /// <param name="i_title">鏍囬</param>
+        /// <param name="clickBackClose">鐐瑰嚮鑳屾櫙鏃�,鏄惁鍏抽棴寮圭獥</param>
+        public BottomDateSelectControl(string i_title = "", bool clickBackClose = true)
+        {
+            base.ClickBackClose = clickBackClose;
+            base.StrTitle = i_title;
+            base.RowCount = 5;
+        }
+
+        /// <summary>
+        /// 鍒濆鍖栨帶浠�(鏈堟棩)
+        /// </summary>
+        /// <param name="i_month">榛樿閫夋嫨鏈�</param>
+        /// <param name="i_day">榛樿閫夋嫨鏃�</param>
+        public void InitControl(int i_month, int i_day)
+        {
+            //鍒濆鍖栨帶浠�
+            this.DoInitControl(0, i_month, i_day, -1, -1);
+        }
+
+        /// <summary>
+        /// 鍒濆鍖栨帶浠�(骞存湀鏃�)
+        /// </summary>
+        /// <param name="i_year">榛樿閫夋嫨骞�</param>
+        /// <param name="i_month">榛樿閫夋嫨鏈�</param>
+        /// <param name="i_day">榛樿閫夋嫨鏃�</param>
+        /// <param name="i_yearFrom">骞寸殑鑼冨洿鎸囧畾,浠ュ綋鍓嶅勾涓哄熀鍑�,鍚戝墠鍑犲勾,璇疯緭鍏ユ鏁�</param>
+        /// <param name="i_yearTo">骞寸殑鑼冨洿鎸囧畾,浠ュ綋鍓嶅勾涓哄熀鍑�,鍚戝悗鍑犲勾,璇疯緭鍏ユ鏁�</param>
+        public void InitControl(int i_year, int i_month, int i_day, int i_yearFrom, int i_yearTo)
+        {
+            //鍒濆鍖栨帶浠�
+            this.DoInitControl(i_year, i_month, i_day, i_yearFrom, i_yearTo);
+        }
+
+        /// <summary>
+        /// 鍒濆鍖栨帶浠�
+        /// </summary>
+        /// <param name="i_year">榛樿閫夋嫨骞�</param>
+        /// <param name="i_month">榛樿閫夋嫨鏈�</param>
+        /// <param name="i_day">榛樿閫夋嫨鏃�</param>
+        /// <param name="i_yearFrom">骞寸殑鑼冨洿鎸囧畾,浠ュ綋鍓嶅勾涓哄熀鍑�,鍚戝墠鍑犲勾,璇疯緭鍏ユ鏁�</param>
+        /// <param name="i_yearTo">骞寸殑鑼冨洿鎸囧畾,浠ュ綋鍓嶅勾涓哄熀鍑�,鍚戝悗鍑犲勾,璇疯緭鍏ユ鏁�</param>
+        private void DoInitControl(int i_year, int i_month, int i_day, int i_yearFrom, int i_yearTo)
+        {
+            //宸茬粡鍒濆鍖�
+            if (base.btnCancel != null) { return; }
+
+            this.selectYear = i_year;
+            this.selectMonth = i_month;
+            this.selectDay = i_day;
+
+            //鍒濆鍖栧勾鏈堟棩鍒楄〃
+            this.InitYearMonthDayList(i_yearFrom, i_yearTo);
+
+            //鍒濆鍖栧簳灞傛帶浠�
+            var frameWhiteBack = base.InitBaseControl();
+            //鍙栨秷
+            base.btnCancel.ButtonClickEvent += (sender, e) =>
+            {
+                base.Close();
+                this.FinishEvent?.Invoke(0, 0, 0, 0);
+                this.FinishEvent = null;
+            };
+            //纭
+            base.btnConfirm.ButtonClickEvent += (sender, e) =>
+            {
+                //妫�娴嬮�夋嫨鐨勫勾鏈堟棩鏄惁姝g‘
+                if (HdlCommonLogic.Current.CheckDateIsRight(selectYear, selectMonth, selectDay) == false)
+                {
+                    return;
+                }
+                base.Close();
+                this.FinishEvent?.Invoke(1, selectYear, selectMonth, selectDay);
+                this.FinishEvent = null;
+            };
+
+            //绾�
+            var btnLine = new NormalViewControl(frameWhiteBack.Width, HdlControlResourse.BottomLineHeight, false);
+            btnLine.BackgroundColor = CSS_Color.PromptingColor2;
+            btnLine.Y = btnCancel.Bottom;
+            frameWhiteBack.AddChidren(btnLine);
+
+            //鏃堕棿鎺т欢
+            var pickerView = new UIPickerView();
+            pickerView.Height = frameWhiteBack.Height - btnLine.Bottom;
+            pickerView.Width = frameWhiteBack.Width - Application.GetRealWidth(8) * 2;
+            pickerView.Y = btnLine.Bottom;
+            pickerView.Gravity = Gravity.CenterHorizontal;
+            frameWhiteBack.AddChidren(pickerView);
+
+            if (Language.CurrentLanguage == "Chinese")
+            {
+                //鍒濆鍖栨帶浠�(涓枃)
+                this.DoInitControlOnChineseLanguage(pickerView, i_year, i_month, i_day);
+            }
+            else
+            {
+                //鍒濆鍖栨帶浠�(鑻辨枃)
+                this.DoInitControlOnEnglishLanguage(pickerView, i_year, i_month, i_day);
+            }
+        }
+
+        /// <summary>
+        /// 鍒濆鍖栨帶浠�(涓枃)
+        /// </summary>
+        /// <param name="pickerView">鏃堕棿鎺т欢</param>
+        /// <param name="i_year">榛樿閫夋嫨骞�</param>
+        /// <param name="i_month">榛樿閫夋嫨鏈�</param>
+        /// <param name="i_day">榛樿閫夋嫨鏃�</param>
+        private void DoInitControlOnChineseLanguage(UIPickerView pickerView, int i_year, int i_month, int i_day)
+        {
+            //榛樿绱㈠紩
+            var index1 = listYear.IndexOf(i_year.ToString() + Language.StringByID(StringId.Years));
+            if (index1 == -1) { index1 = 0; }
+            var index2 = listMonth.IndexOf(i_month.ToString() + Language.StringByID(StringId.month));
+            if (index2 == -1) { index2 = 0; }
+            var index3 = listDay.IndexOf(i_day.ToString() + Language.StringByID(StringId.day));
+            if (index3 == -1) { index2 = 0; }
+
+            pickerView.setNPicker(listYear.Count == 0 ? null : listYear, listMonth, listDay);
+            //璁剧疆鍒濆閫夋嫨
+            pickerView.setCurrentItems(index1, index2, index3);
+
+            pickerView.OnSelectChangeEvent = (value1, value2, value3) =>
+            {
+                //鏇存敼绱㈠紩
+                selectYear = Convert.ToInt32(listYear[value1].Substring(0, 4));
+                selectMonth = value2 + 1;
+                selectDay = value3 + 1;
+            };
+        }
+
+        /// <summary>
+        /// 鍒濆鍖栨帶浠�(鑻辨枃)
+        /// </summary>
+        /// <param name="pickerView">鏃堕棿鎺т欢</param>
+        /// <param name="i_year">榛樿閫夋嫨骞�</param>
+        /// <param name="i_month">榛樿閫夋嫨鏈�</param>
+        /// <param name="i_day">榛樿閫夋嫨鏃�</param>
+        private void DoInitControlOnEnglishLanguage(UIPickerView pickerView, int i_year, int i_month, int i_day)
+        {
+            //榛樿绱㈠紩
+            var index1 = listYear.IndexOf(i_year.ToString());
+            if (index1 == -1) { index1 = 0; }
+            var index2 = i_month - 1;
+            var index3 = i_day - 1;
+
+            pickerView.setNPicker(listYear.Count == 0 ? null : listDay, listMonth, listYear);
+            //璁剧疆鍒濆閫夋嫨
+            pickerView.setCurrentItems(index3, index2, index1);
+
+            pickerView.OnSelectChangeEvent = (value1, value2, value3) =>
+            {
+                //鏇存敼绱㈠紩
+                selectYear = Convert.ToInt32(listYear[value3]);
+                selectMonth = value2 + 1;
+                selectDay = value1 + 1;
+            };
+        }
+
+        #endregion
+
+        #region 鈻� 涓�鑸柟娉昣__________________________
+
+        /// <summary>
+        /// 鍒濆鍖栧勾鏈堟棩鍒楄〃
+        /// </summary>
+        /// <param name="i_yearFrom">骞寸殑鑼冨洿鎸囧畾,浠ュ綋鍓嶅勾涓哄熀鍑�,鍚戝墠鍑犲勾,璇疯緭鍏ユ鏁�</param>
+        /// <param name="i_yearTo">骞寸殑鑼冨洿鎸囧畾,浠ュ綋鍓嶅勾涓哄熀鍑�,鍚戝悗鍑犲勾,璇疯緭鍏ユ鏁�</param>
+        private void InitYearMonthDayList(int i_yearFrom, int i_yearTo)
+        {
+            //骞�
+            var strYear = Language.CurrentLanguage == "Chinese" ? Language.StringByID(StringId.Years) : string.Empty;
+            //鏈�
+            var strMonth = Language.StringByID(StringId.month);
+            //鏃�
+            var strDay = Language.CurrentLanguage == "Chinese" ? Language.StringByID(StringId.day) : string.Empty;
+
+            //鑾峰彇骞寸殑鍒楄〃
+            int nowYear = DateTime.Now.Year;
+            for (int i = i_yearFrom; i > 0; i--)
+            {
+                this.listYear.Add((nowYear - i) + strYear);
+            }
+            this.listYear.Add(nowYear + strYear);
+            for (int i = i_yearTo; i > 0; i--)
+            {
+                this.listYear.Add((nowYear + i) + strYear);
+            }
+
+            //鑾峰彇鏈堢殑鍒楄〃
+            for (int i = 1; i <= 12; i++)
+            {
+                if (Language.CurrentLanguage == "Chinese")
+                {
+                    //涓枃
+                    this.listMonth.Add(i.ToString() + strMonth);
+                }
+                else
+                {
+                    //鑻辨枃
+                    this.listMonth.Add(HdlCommonLogic.Current.GetMonthShortText(i));
+                }
+            }
+
+            //鑾峰彇鏃ョ殑鍒楄〃
+            for (int i = 1; i <= 31; i++)
+            {
+                this.listDay.Add(i.ToString() + strDay);
+            }
+        }
+
+        /// <summary>
+        /// 鍏抽棴鐣岄潰
+        /// </summary>
+        public override void Close()
+        {
+            base.Close();
+            this.FinishEvent = null;
+        }
+
+        #endregion
+    }
+}
diff --git a/HDL_ON/UI/UI0-Stan/Controls/BottomControls/BottomDialogCommon.cs b/HDL_ON/UI/UI0-Stan/Controls/BottomControls/BottomDialogCommon.cs
index 02c68a4..cebb462 100644
--- a/HDL_ON/UI/UI0-Stan/Controls/BottomControls/BottomDialogCommon.cs
+++ b/HDL_ON/UI/UI0-Stan/Controls/BottomControls/BottomDialogCommon.cs
@@ -38,6 +38,10 @@
         /// </summary>
         public bool ClickBackClose = true;
         /// <summary>
+        /// 鐐瑰嚮纭鏃跺叧闂晫闈�(鏈変簺鐣岄潰鐗规畩,涓嶅叧闂�)
+        /// </summary>
+        public bool ClickConfirmClose = true;
+        /// <summary>
         /// 鏁翠釜寮圭獥瀵硅薄
         /// </summary>
         private Dialog FrameDialog = null;
@@ -49,7 +53,10 @@
         /// <summary>
         /// 鍒濆鍖栧簳灞傛帶浠�(杩斿洖鐨勬槸鍥涘懆鏈夊渾瑙掔殑鐧借壊鍖哄煙鎺т欢),姝ゆ柟娉曠敱灏佽鎺т欢搴曞眰璋冪敤,璇峰嬁闅忎究璋冪敤
         /// </summary>
-        public NormalFrameLayout InitBaseControl()
+        /// <param name="i_whiteWidth">鐧借壊鍖哄煙鐨勫搴�,鏈�濂戒笉瑕佹敼杩欎釜涓滆タ</param>
+        /// <param name="real">鏄惁璁$畻鐪熷疄鍊�</param>
+        /// <returns></returns>
+        public NormalFrameLayout InitBaseControl(int i_whiteWidth = 343, bool real = true)
         {
             //鏁翠釜鐏拌壊鐣岄潰
             this.FrameDialog?.Close();
@@ -65,13 +72,17 @@
                 }
             };
 
-            //鐧借壊鑳屾櫙
+            //鏍囬楂樺害
+            int titleHeight = Application.GetRealHeight(50);
+
+            //鐧借壊鑳屾櫙(鏍峰瓙鎮诞浜庣晫闈�,鍥涗釜瑙掗兘鏄渾瑙�)
             var frameWhiteBack = new NormalFrameLayout();
-            frameWhiteBack.Width = Application.GetRealWidth(343);
-            frameWhiteBack.Height =  RowHeight * (RowCount + 1);
+            frameWhiteBack.Width = real == true ? Application.GetRealWidth(i_whiteWidth) : i_whiteWidth;
+            frameWhiteBack.Height = RowHeight * RowCount + titleHeight;
             frameWhiteBack.Radius = (uint)Application.GetRealWidth(12);
             frameWhiteBack.Gravity = Gravity.CenterHorizontal;
-            frameWhiteBack.Y = dialogBody.Height - RowHeight * (RowCount + 1) - Application.GetRealHeight(20);
+            //瀹冪殑搴曢儴鏈変釜20鐨勯棿璺�
+            frameWhiteBack.Y = dialogBody.Height - RowHeight * RowCount - titleHeight - Application.GetRealHeight(20);
             frameWhiteBack.BackgroundColor = CSS_Color.MainBackgroundColor;
             dialogBody.AddChidren(frameWhiteBack);
 
@@ -82,6 +93,7 @@
             btnCancel.TextColor = CSS_Color.PromptingColor1;
             btnCancel.TextID = StringId.Cancel;
             btnCancel.TextSize = CSS_FontSize.TextFontSize;
+            btnCancel.Width = btnCancel.GetRealWidthByText();
             frameWhiteBack.AddChidren(btnCancel);
 
             //鏍囬
@@ -97,13 +109,14 @@
 
             //纭
             this.btnConfirm = new NormalViewControl(90, 48, true);
-            btnConfirm.X = frameWhiteBack.Width - Application.GetRealWidth(90) - btnCancel.X;
             btnConfirm.Y = btnCancel.Y;
             btnConfirm.TextAlignment = TextAlignment.CenterRight;
             btnConfirm.TextColor = CSS_Color.MainColor;
             btnConfirm.TextID = StringId.Confirm;
             btnConfirm.TextSize = CSS_FontSize.TextFontSize;
+            btnConfirm.Width = btnConfirm.GetRealWidthByText();
             frameWhiteBack.AddChidren(btnConfirm);
+            btnConfirm.X = frameWhiteBack.Width - btnConfirm.Width - btnCancel.X;
 
             FrameDialog.Show();
 
diff --git a/HDL_ON/UI/UI0-Stan/Controls/BottomControls/BottomItemEditorControl.cs b/HDL_ON/UI/UI0-Stan/Controls/BottomControls/BottomItemEditorControl.cs
index fae40c6..6374aaf 100644
--- a/HDL_ON/UI/UI0-Stan/Controls/BottomControls/BottomItemEditorControl.cs
+++ b/HDL_ON/UI/UI0-Stan/Controls/BottomControls/BottomItemEditorControl.cs
@@ -7,7 +7,7 @@
 namespace HDL_ON.Stan
 {
     /// <summary>
-    /// 搴曢儴椤圭洰缂栬緫鎺т欢
+    /// 搴曢儴椤圭洰缂栬緫鎺т欢(涓嶉渶瑕佸姞鍏ョ埗鎺т欢,AddRowMenu娣诲姞鑿滃崟)
     /// </summary>
     public class BottomItemEditorControl : BottomDialogCommon
     {
@@ -18,6 +18,10 @@
         /// </summary>
         public Action<int> FinishEvent = null;
         /// <summary>
+        /// 鐐瑰嚮纭鏃�,鏄惁鍏抽棴鐣岄潰(褰撹缃负false鏃�,鍙兘鎵嬪姩鍏抽棴)
+        /// </summary>
+        public bool CloseByConfirm = true;
+        /// <summary>
         /// 鍒楄〃鎺т欢
         /// </summary>
         private VerticalListControl listView = null;
@@ -27,7 +31,7 @@
         #region 鈻� 鍒濆鍖朹____________________________
 
         /// <summary>
-        /// 鏈夋爣棰樼殑寮圭獥鍨嬭彍鍗曠紪杈戞帶浠�
+        /// 鏈夋爣棰樼殑寮圭獥鍨嬭彍鍗曠紪杈戞帶浠�(涓嶉渶瑕佸姞鍏ョ埗鎺т欢,AddRowMenu娣诲姞鑿滃崟)
         /// </summary>
         /// <param name="i_RowCount">鑿滃崟琛屾暟(涓嶅惈鏍囬)</param>
         /// <param name="i_title">鏍囬</param>
@@ -53,17 +57,18 @@
             //鍙栨秷
             base.btnCancel.ButtonClickEvent += (sender, e) =>
             {
-                base.Close();
                 this.FinishEvent?.Invoke(0);
-                this.FinishEvent = null;
+                this.Close();
             };
 
             //纭
             base.btnConfirm.ButtonClickEvent += (sender, e) =>
             {
-                base.Close();
                 this.FinishEvent?.Invoke(1);
-                this.FinishEvent = null;
+                if (this.CloseByConfirm == true)
+                {
+                    this.Close();
+                }
             };
 
             //鍒楄〃鎺т欢
@@ -82,8 +87,9 @@
         /// </summary>
         /// <param name="i_textView">宸﹁竟鏄剧ず鐨勬枃瀛�</param>
         /// <param name="i_textValue">鍙宠竟鏄剧ず鐨勫��(</param>
-        /// <param name="clickEvent">鍗曞嚮鑿滃崟鎵ц鐨勪簨浠�(鍙傛暟涓哄彸杈规樉绀哄�肩殑閭d釜鎺т欢)</param>
-        public void AddRowMenu(string i_textView, string i_textValue, Action<NormalViewControl> clickEvent)
+        /// <param name="clickEvent">鍗曞嚮鑿滃崟鎵ц鐨勪簨浠�(鍙傛暟1:宸﹁竟鏍囬鎺т欢,鍙傛暟2:鍙宠竟鏄剧ず鍊肩殑閭d釜鎺т欢)</param>
+        /// <param name="addRightArrow">鏄惁娣诲姞鍙崇澶�</param>
+        public void AddRowMenu(string i_textView, string i_textValue, Action<NormalViewControl, NormalViewControl> clickEvent, bool addRightArrow = true)
         {
             //鍏堝垵濮嬪寲鎺т欢
             this.InitControl();
@@ -101,21 +107,24 @@
             //琛�
             var rowContr = new FrameRowControl();
             rowContr.LeftOffset = Application.GetRealWidth(20) - HdlControlResourse.XXLeft;
-            rowContr.RightOffset = - rowContr.LeftOffset;
+            rowContr.RightOffset = -rowContr.LeftOffset;
             rowContr.Width = this.listView.Width;
             rowContr.Height = this.RowHeight;
             this.listView.AddChidren(rowContr);
             //鏄剧ず鏂囨湰
-            var btnView = rowContr.AddLeftCaption(i_textView, 150);
+            var btnView = rowContr.AddLeftCaption(i_textView, 300);
             btnView.Width = btnView.GetRealWidthByText();
             btnView.TextColor = CSS_Color.FirstLevelTitleColor;
             //娣诲姞鍙崇澶�
-            rowContr.AddRightArrow();
+            if (addRightArrow == true)
+            {
+                rowContr.AddRightArrow();
+            }
             //娣诲姞鍙宠竟鐨勬枃鏈�
-            var btnValue = rowContr.AddMostRightView(i_textValue, 150);
+            var btnValue = rowContr.AddMostRightView(i_textValue, 200);
             rowContr.ButtonClickEvent += (sender, e) =>
             {
-                clickEvent?.Invoke(btnValue);
+                clickEvent?.Invoke(btnView, btnValue);
             };
         }
 
diff --git a/HDL_ON/UI/UI0-Stan/Controls/BottomControls/BottomItemSelectControl.cs b/HDL_ON/UI/UI0-Stan/Controls/BottomControls/BottomItemSelectControl.cs
index ec3f199..79e0950 100644
--- a/HDL_ON/UI/UI0-Stan/Controls/BottomControls/BottomItemSelectControl.cs
+++ b/HDL_ON/UI/UI0-Stan/Controls/BottomControls/BottomItemSelectControl.cs
@@ -7,7 +7,7 @@
 namespace HDL_ON.Stan
 {
     /// <summary>
-    /// 搴曢儴椤圭洰閫夋嫨鎺т欢
+    /// 搴曢儴椤圭洰閫夋嫨鎺т欢(涓嶉渶瑕佸姞鍏ョ埗鎺т欢,AddRowMenu娣诲姞鑿滃崟)
     /// </summary>
     public class BottomItemSelectControl: BottomDialogCommon
     {
@@ -39,7 +39,7 @@
         #region 鈻� 鍒濆鍖朹____________________________
 
         /// <summary>
-        /// 鏈夋爣棰樼殑寮圭獥鍨嬭彍鍗曢�夋嫨鎺т欢
+        /// 鏈夋爣棰樼殑寮圭獥鍨嬭彍鍗曢�夋嫨鎺т欢(涓嶉渶瑕佸姞鍏ョ埗鎺т欢,AddRowMenu娣诲姞鑿滃崟)
         /// </summary>
         /// <param name="i_RowCount">鑿滃崟琛屾暟(涓嶅惈鏍囬)</param>
         /// <param name="i_title">鏍囬</param>
@@ -147,7 +147,7 @@
             rowContr.Height = this.RowHeight;
             this.listView.AddChidren(rowContr);
             //鏄剧ず鏂囨湰
-            var btnView = rowContr.AddLeftCaption(i_text, 150);
+            var btnView = rowContr.AddLeftCaption(i_text, 300);
             btnView.TextColor = CSS_Color.FirstLevelTitleColor;
             //閫夋嫨鍥炬爣
             var btnIcon = rowContr.AddMostRightEmptyIcon(28, 28);
diff --git a/HDL_ON/UI/UI0-Stan/Controls/BottomControls/BottomMenuSelectControl.cs b/HDL_ON/UI/UI0-Stan/Controls/BottomControls/BottomMenuSelectControl.cs
new file mode 100644
index 0000000..a67a2a6
--- /dev/null
+++ b/HDL_ON/UI/UI0-Stan/Controls/BottomControls/BottomMenuSelectControl.cs
@@ -0,0 +1,150 @@
+锘縰sing Shared;
+using HDL_ON.UI.CSS;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace HDL_ON.Stan
+{
+    /// <summary>
+    /// 搴曢儴寮圭獥鐨勮彍鍗曢�夋嫨鎺т欢(涓嶉渶瑕佸姞鍏ョ埗鎺т欢,AddMenu娣诲姞鑿滃崟)
+    /// </summary>
+    public class BottomMenuSelectControl
+    {
+        #region 鈻� 鍙橀噺澹版槑___________________________
+
+        /// <summary>
+        /// 鑿滃崟楂樺害
+        /// </summary>
+        private int menuHeight = Application.GetRealHeight(44);
+        /// <summary>
+        /// 鑿滃崟妗屽竷鎺т欢
+        /// </summary>
+        private FrameLayout frameMenuTable = null;
+        /// <summary>
+        /// 鏁翠釜寮圭獥瀵硅薄
+        /// </summary>
+        private Dialog FrameDialog = null;
+        /// <summary>
+        /// 鐐瑰嚮鑳屾櫙鏃�,鏄惁鍏抽棴寮圭獥
+        /// </summary>
+        public bool ClickBackClose = true;
+
+        #endregion
+
+        #region 鈻� 鍒濆鍖朹____________________________
+
+        /// <summary>
+        /// 搴曢儴寮圭獥鐨勮彍鍗曢�夋嫨鎺т欢(涓嶉渶瑕佸姞鍏ョ埗鎺т欢,AddMenu娣诲姞鑿滃崟)
+        /// </summary>
+        /// <param name="i_menuCount">鑿滃崟鎬绘暟(涓嶅惈鍙栨秷鑿滃崟)</param>
+        public BottomMenuSelectControl(int i_menuCount)
+        {
+            //鍒濆鍖栨帶浠�
+            this.InitControl(i_menuCount);
+        }
+
+        /// <summary>
+        /// 鍒濆鍖栨帶浠�
+        /// </summary>
+        /// <param name="menuCount">鑿滃崟鎬绘暟(涓嶅惈鍙栨秷鑿滃崟)</param>
+        private void InitControl(int menuCount)
+        {
+            //鏁翠釜鐏拌壊鐣岄潰
+            this.FrameDialog = new Dialog();
+            FrameDialog.Show();
+
+            var dialogBody = new NormalFrameLayout();
+            dialogBody.Height = FrameDialog.Height;
+            FrameDialog.AddChidren(dialogBody);
+            dialogBody.ButtonClickEvent += (sender, e) =>
+            {
+                if (ClickBackClose == true)
+                {
+                    FrameDialog.Close();
+                }
+            };
+
+            //鍙栨秷鑿滃崟
+            var frameCancel = new FrameLayout();
+            frameCancel.Y = dialogBody.Height - this.menuHeight - Application.GetRealHeight(12);
+            frameCancel.Gravity = Gravity.CenterHorizontal;
+            frameCancel.Radius = (uint)Application.GetRealHeight(12);
+            frameCancel.Width = Application.GetRealWidth(343);
+            frameCancel.Height = this.menuHeight;
+            frameCancel.BackgroundColor = CSS_Color.MainBackgroundColor;
+            FrameDialog.AddChidren(frameCancel);
+            var btnCancel = new NormalViewControl(Application.GetRealWidth(150), this.menuHeight, false);
+            btnCancel.Gravity = Gravity.Center;
+            btnCancel.TextAlignment = TextAlignment.Center;
+            btnCancel.TextColor = CSS_Color.AuxiliaryColor2;
+            btnCancel.TextSize = CSS_FontSize.SubheadingFontSize;
+            btnCancel.TextID = StringId.Cancel;
+            frameCancel.AddChidren(btnCancel);
+            btnCancel.ButtonClickEvent += (sender, e) =>
+            {
+                //鍏抽棴鐣岄潰
+                FrameDialog.Close();
+            };
+
+            //鑿滃崟鐨勬甯冩帶浠�
+            int framebackHeight = this.menuHeight * menuCount;
+            this.frameMenuTable = new FrameLayout();
+            frameMenuTable.Y = frameCancel.Y - framebackHeight - Application.GetRealHeight(8);
+            frameMenuTable.Height = framebackHeight;
+            frameMenuTable.Width = Application.GetRealWidth(343);
+            frameMenuTable.Gravity = Gravity.CenterHorizontal;
+            frameMenuTable.BackgroundColor = CSS_Color.MainBackgroundColor;
+            frameMenuTable.Radius = (uint)Application.GetRealWidth(12);
+            FrameDialog.AddChidren(frameMenuTable);
+        }
+
+        #endregion
+
+        #region 鈻� 涓�鑸柟娉昣__________________________
+
+        /// <summary>
+        /// 娣诲姞鑿滃崟
+        /// </summary>
+        /// <param name="strMenu">鑿滃崟鏂囨湰</param>
+        /// <param name="selectEvent">鑿滃崟閫夋嫨鐨勪簨浠�</param>
+        /// <param name="textColor">鏂囨湰棰滆壊(璁剧疆涓�0,鍒欎娇鐢ㄩ粯璁ょ殑钃濊壊瀛椾綋)</param>
+        /// <param name="clickClose">鑿滃崟鐐瑰嚮鏃�,鏄惁鏃犳潯浠跺叧闂晫闈�</param>
+        public void AddMenu(string strMenu, Action selectEvent, uint textColor = 0, bool clickClose = true)
+        {
+            //绾�
+            if (this.frameMenuTable.ChildrenCount > 0)
+            {
+                var btnLine = new NormalViewControl(frameMenuTable.Width, HdlControlResourse.BottomLineHeight, false);
+                btnLine.BackgroundColor = CSS_Color.DividingLineColor;
+                btnLine.Y = this.frameMenuTable.GetChildren(this.frameMenuTable.ChildrenCount - 1).Bottom;
+                this.frameMenuTable.AddChidren(btnLine);
+            }
+
+            //鑿滃崟
+            var btnMenu = new NormalViewControl(Application.GetRealWidth(300), this.menuHeight, false);
+            if (this.frameMenuTable.ChildrenCount > 0)
+            {
+                btnMenu.Y = this.frameMenuTable.GetChildren(this.frameMenuTable.ChildrenCount - 1).Bottom;
+            }
+            btnMenu.Gravity = Gravity.CenterHorizontal;
+            btnMenu.TextAlignment = TextAlignment.Center;
+            btnMenu.TextColor = textColor == 0 ? CSS_Color.MainColor : textColor;
+            btnMenu.TextSize = CSS_FontSize.SubheadingFontSize;
+            btnMenu.Text = strMenu;
+            this.frameMenuTable.AddChidren(btnMenu);
+            btnMenu.ButtonClickEvent += (sender, e) =>
+            {
+                if (clickClose == true)
+                {
+                    //鍏抽棴鐣岄潰
+                    FrameDialog.Close();
+                }
+                selectEvent?.Invoke();
+                selectEvent = null;
+            };
+        }
+
+        #endregion
+    }
+}
diff --git a/HDL_ON/UI/UI0-Stan/Controls/BottomControls/BottomSomeDaySelectControl.cs b/HDL_ON/UI/UI0-Stan/Controls/BottomControls/BottomSomeDaySelectControl.cs
new file mode 100644
index 0000000..cfec92d
--- /dev/null
+++ b/HDL_ON/UI/UI0-Stan/Controls/BottomControls/BottomSomeDaySelectControl.cs
@@ -0,0 +1,176 @@
+锘縰sing Shared;
+using HDL_ON.UI.CSS;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace HDL_ON.Stan
+{
+    /// <summary>
+    /// 搴曢儴閫夋嫨涓�涓湀鍐呯殑涓�浜涙棩鏈熺殑鎺т欢,涓嶉渶瑕佸姞鍒扮埗鎺т欢,InitControl鎵ц鍒濆鍖�
+    /// </summary>
+    public class BottomSomeDaySelectControl : BottomDialogCommon
+    {
+        #region 鈻� 鍙橀噺澹版槑___________________________
+
+        /// <summary>
+        /// 缁撴潫浜嬩欢(0:鐐瑰嚮浜嗗彇娑�  1:鐐瑰嚮浜嗙‘瀹�,鍙傛暟鏄�夋嫨鐨勬棩)
+        /// </summary>
+        public Action<int, List<int>> FinishEvent = null;
+        /// <summary>
+        /// 鐩墠閫夋嫨鐨勬棩鏈�
+        /// </summary>
+        private List<int> listSelectDay = new List<int>();
+        /// <summary>
+        /// 鐩爣鏈堜唤
+        /// </summary>
+        private int targetMonth = 0;
+
+        #endregion
+
+        #region 鈻� 鍒濆鍖朹____________________________
+
+        /// <summary>
+        /// 搴曢儴閫夋嫨涓�涓湀鍐呯殑涓�浜涙棩鏈熺殑鎺т欢,涓嶉渶瑕佸姞鍒扮埗鎺т欢,InitControl鎵ц鍒濆鍖�
+        /// </summary>
+        /// <param name="i_title">鏍囬</param>
+        /// <param name="clickBackClose">鐐瑰嚮鑳屾櫙鏃�,鏄惁鍏抽棴寮圭獥</param>
+        /// <param name="i_month">鏄剧ず鎵ц鏈堢殑鏃ユ湡,璁剧疆涓�0鏃�,榛樿鏄剧ず31澶�</param>
+        public BottomSomeDaySelectControl(string i_title = "", bool clickBackClose = true, int i_month = 0)
+        {
+            base.ClickBackClose = clickBackClose;
+            base.StrTitle = i_title;
+            base.RowCount = 5;
+            this.targetMonth = i_month;
+        }
+
+        /// <summary>
+        /// 鍒濆鍖栨帶浠�
+        /// </summary>
+        /// <param name="listSelect">榛樿閫夋嫨(鏃�)</param>
+        public void InitControl(List<int> listSelect)
+        {
+            //宸茬粡鍒濆鍖�
+            if (base.btnCancel != null) { return; }
+
+            this.listSelectDay.AddRange(listSelect);
+            //鍒濆鍖栧簳灞傛帶浠�
+            var frameWhiteBack = base.InitBaseControl();
+
+            //鍙栨秷
+            base.btnCancel.ButtonClickEvent += (sender, e) =>
+            {
+                base.Close();
+                this.FinishEvent?.Invoke(0, null);
+                this.FinishEvent = null;
+            };
+            //纭
+            base.btnConfirm.ButtonClickEvent += (sender, e) =>
+            {
+                //鏈夐�夋嫨浜嗘墠鑳界偣纭
+                if (this.listSelectDay.Count>0)
+                {
+                    base.Close();
+
+                    //灏忕殑鍦ㄥ墠,澶х殑鍦ㄥ悗
+                    var listDay = new List<int>();
+                    for (int i = 1; i <= 31; i++)
+                    {
+                        if (listSelectDay.Contains(i) == false) { continue; }
+                        listDay.Add(i);
+                    }
+                    this.FinishEvent?.Invoke(1, listDay);
+                    this.FinishEvent = null;
+                }
+            };
+            //鍒濆鍖栨棩鏈熷垪琛ㄦ帶浠�
+            this.InitDayListControl(frameWhiteBack);
+        }
+
+        /// <summary>
+        /// 鍒濆鍖栨棩鏈熷垪琛ㄦ帶浠�
+        /// </summary>
+        private void InitDayListControl(NormalFrameLayout frameWhiteBack)
+        {
+            //鑾峰彇鏄剧ず鐨勫ぉ鏁�
+            var dayCount = this.GetDayCount();
+            //鍒濆X杞�16
+            int xxValue = Application.GetRealWidth(16);
+            //鍒濆Y杞�58
+            int yyValue = Application.GetRealHeight(68);
+            for (int i = 1; i <= dayCount; i++)
+            {
+                int intDay = i;
+                var btnContr = new NormalViewControl(Application.GetRealWidth(30), Application.GetRealWidth(30), false);
+                btnContr.X = xxValue;
+                btnContr.Y = yyValue;
+                btnContr.Radius = (uint)Application.GetRealWidth(15);
+                btnContr.Text = intDay.ToString();
+                btnContr.TextAlignment = TextAlignment.Center;
+                btnContr.TextColor = CSS_Color.FirstLevelTitleColor;
+                btnContr.SelectedTextColor = CSS_Color.MainBackgroundColor;
+                btnContr.SelectedBackgroundColor = CSS_Color.MainColor;
+                btnContr.BackgroundColor = CSS_Color.viewTranslucence;
+                frameWhiteBack.AddChidren(btnContr);
+
+                //鎹㈠埌涓嬩竴琛�(姣�7涓竴琛�)
+                if (i % 7 == 0)
+                {
+                    xxValue = Application.GetRealWidth(16);
+                    //涓婁笅闂磋窛涓�10
+                    yyValue = btnContr.Bottom + Application.GetRealHeight(10);
+                }
+                else
+                {
+                    //宸﹀彸闂磋窛涓�16
+                    xxValue = btnContr.Right + Application.GetRealWidth(16);
+                }
+                btnContr.ButtonClickEvent += (sender, e) =>
+                {
+                    btnContr.IsSelected = !btnContr.IsSelected;
+                    if (btnContr.IsSelected == true)
+                    {
+                        //娣诲姞缂撳瓨
+                        this.listSelectDay.Add(intDay);
+                    }
+                    else
+                    {
+                        //绉婚櫎缂撳瓨
+                        this.listSelectDay.Remove(intDay);
+                    }
+                };
+                //鏄惁鍒濆閫夋嫨
+                btnContr.IsSelected = this.listSelectDay.Contains(intDay);
+            }
+        }
+
+        #endregion
+
+        #region 鈻� 涓�鑸柟娉昣__________________________
+
+        /// <summary>
+        /// 鑾峰彇澶╂暟
+        /// </summary>
+        /// <returns></returns>
+        private int GetDayCount()
+        {
+            if (this.targetMonth < 1 || this.targetMonth > 12) { return 31; }
+
+            int two = DateTime.IsLeapYear(DateTime.Now.Year) == true ? 29 : 28;
+            int[] arry = new int[] { 31, two, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
+
+            return arry[this.targetMonth - 1];
+        }
+
+        /// <summary>
+        /// 鍏抽棴鐣岄潰
+        /// </summary>
+        public override void Close()
+        {
+            base.Close();
+            this.FinishEvent = null;
+        }
+
+        #endregion
+    }
+}
diff --git a/HDL_ON/UI/UI0-Stan/Controls/BottomControls/BottomTimeSelectControl.cs b/HDL_ON/UI/UI0-Stan/Controls/BottomControls/BottomTimeSelectControl.cs
index 924fa9d..40db4f7 100644
--- a/HDL_ON/UI/UI0-Stan/Controls/BottomControls/BottomTimeSelectControl.cs
+++ b/HDL_ON/UI/UI0-Stan/Controls/BottomControls/BottomTimeSelectControl.cs
@@ -7,7 +7,7 @@
 namespace HDL_ON.Stan
 {
     /// <summary>
-    /// 搴曢儴鏃堕棿閫夋嫨鎺т欢
+    /// 搴曢儴鏃堕棿閫夋嫨鎺т欢(鏃跺拰鍒�),涓嶉渶瑕佸姞鍒扮埗鎺т欢
     /// </summary>
     public class BottomTimeSelectControl : BottomDialogCommon
     {
@@ -17,24 +17,24 @@
         /// 缁撴潫浜嬩欢(0:鐐瑰嚮浜嗗彇娑�  1:鐐瑰嚮浜嗙‘瀹�,绗簩,涓夊弬鏁颁负鏃跺拰鍒�)
         /// </summary>
         public Action<int, int, int> FinishEvent = null;
-        /// <summary>
-        /// 灏忔椂鍙栧�艰寖鍥�
+        /// <summary>
+        /// 灏忔椂鍙栧�艰寖鍥�
         /// </summary>
         List<int> hRange = new List<int>();
-        /// <summary>
-        /// 鍒嗛挓鍙栧�艰寖鍥�
+        /// <summary>
+        /// 鍒嗛挓鍙栧�艰寖鍥�
         /// </summary>
-        List<int> mRange = new List<int>();
-        /// <summary>
-        /// 鏃堕棿鎺т欢
-        /// </summary>
-        UIPickerView pickerView;
-        //閫夋嫨鐨勬椂涓庡垎
-        int selectHour = 0;
-        int selectMinute = 0;
-        //XX鏃�
-        List<string> listHour ;
-        //XX鍒�
+        List<int> mRange = new List<int>();
+        /// <summary>
+        /// 鏃堕棿鎺т欢
+        /// </summary>
+        UIPickerView pickerView;
+        //閫夋嫨鐨勬椂涓庡垎
+        int selectHour = 0;
+        int selectMinute = 0;
+        //XX鏃�
+        List<string> listHour;
+        //XX鍒�
         List<string> listMinute;
 
 
@@ -43,16 +43,16 @@
         #region 鈻� 鍒濆鍖朹____________________________
 
         /// <summary>
-        /// 搴曢儴鏃堕棿閫夋嫨鎺т欢
+        /// 搴曢儴鏃堕棿閫夋嫨鎺т欢(鏃跺拰鍒�),涓嶉渶瑕佸姞鍒扮埗鎺т欢
         /// </summary>
         /// <param name="i_title">鏍囬</param>
         /// <param name="clickBackClose">鐐瑰嚮鑳屾櫙鏃�,鏄惁鍏抽棴寮圭獥</param>
         public BottomTimeSelectControl(string i_title = "", bool clickBackClose = true)
         {
             base.ClickBackClose = clickBackClose;
-            base.StrTitle = i_title;
-
-
+            base.StrTitle = i_title;
+            base.RowCount = 5;
+
             for (int i = 0; i <= 23; i++)
             {
                 hRange.Add(i);
@@ -61,23 +61,23 @@
             {
                 mRange.Add(i);
             }
-        }
-
-
+        }
+
+
         /// <summary>
-        /// 搴曢儴鏃堕棿閫夋嫨鎺т欢
+        /// 搴曢儴鏃堕棿閫夋嫨鎺т欢(鏃跺拰鍒�),涓嶉渶瑕佸姞鍒扮埗鎺т欢
         /// </summary>
         /// <param name="i_title">鏍囬</param>
         /// <param name="clickBackClose">鐐瑰嚮鑳屾櫙鏃�,鏄惁鍏抽棴寮圭獥</param>
-        public BottomTimeSelectControl(List<int> hoursRange,List<int> minuteRange ,int rowCount, string i_title = "", bool clickBackClose = true)
+        public BottomTimeSelectControl(List<int> hoursRange, List<int> minuteRange, int rowCount, string i_title = "", bool clickBackClose = true)
         {
             base.ClickBackClose = clickBackClose;
             base.StrTitle = i_title;
 
-            hRange = hoursRange;
-            mRange = minuteRange;
-
-            base.RowCount = rowCount;
+            hRange = hoursRange;
+            mRange = minuteRange;
+
+            base.RowCount = rowCount;
 
         }
 
@@ -92,9 +92,15 @@
             //宸茬粡鍒濆鍖�
             if (base.btnCancel != null) { return; }
 
+            this.selectHour = i_hour;
+            this.selectMinute = i_minute;
+
             //鍒濆鍖栧簳灞傛帶浠�
             var frameWhiteBack = base.InitBaseControl();
-            frameWhiteBack.Height = Application.GetRealHeight(contentView);
+            if (contentView != -1)
+            {
+                frameWhiteBack.Height = Application.GetRealHeight(contentView);
+            }
             //frameWhiteBack.Y = frameWhiteBack.Parent.Height - Application.GetRealHeight(297 + 20);
 
             //鍙栨秷
@@ -125,27 +131,27 @@
             //鏃堕棿鎺т欢
             pickerView = new UIPickerView();
             //鏃�
-            var strhour = Language.StringByID(StringId.h);
+            var strhour = HdlCommonLogic.Current.GetHourText();
             //鍒�
-            var strMinute = Language.StringByID(StringId.m);
-
-            if(!isHour)
-            {
-                strhour = Language.StringByID(StringId.m);
+            var strMinute = HdlCommonLogic.Current.GetMinuteText();
+            
+            if(!isHour)
+            {
+                strhour = Language.StringByID(StringId.m);
                 strMinute = Language.StringByID(StringId.s);
             }
 
             //XX鏃�
             listHour = new List<string>();// { "00" + strhour };
             //XX鍒�
-            listMinute = new List<string>();// { "00" + strMinute };
-            //for (int i = 1; i <= 23; i++)
-            foreach(var hItem in hRange)
+            listMinute = new List<string>();// { "00" + strMinute };
+            //for (int i = 1; i <= 23; i++)
+            foreach (var hItem in hRange)
             {
                 listHour.Add(hItem.ToString().PadLeft(2, '0') + strhour);
-            }
-            //for (int i = 1; i <= 59; i++)
-            foreach (var mItem in mRange)
+            }
+            //for (int i = 1; i <= 59; i++)
+            foreach (var mItem in mRange)
             {
                 listMinute.Add(mItem.ToString().PadLeft(2, '0') + strMinute);
             }
@@ -171,32 +177,57 @@
             };
         }
 
-        /// <summary>
-        /// 鐗规畩鐨勯泦鍚堥�夋嫨浜嬩欢锛屽噳闇告椂闂磋缃娇鐢�
+        /// <summary>
+        /// 鐗规畩鐨勯泦鍚堥�夋嫨浜嬩欢锛屽噳闇告椂闂磋缃娇鐢�
         /// </summary>
-        public void ChangePickerEvent()
-        {
+        public void ChangePickerEvent()
+        {
             pickerView.OnSelectChangeEvent = (value1, value2, value3) =>
-            {
-                if (value1 == 0 && value2 == 0)
-                {
-                    value2 = 1;
-                    pickerView.setCurrentItems(value1, value2, 0);
-                }
-                else if (value1 == 4 && value2 == 1)
-                {
-                    value2 = 0;
-                    pickerView.setCurrentItems(value1, value2, 0);
-                }
-                //else
-                {
-                    //鏇存敼绱㈠紩
-                    selectHour = Convert.ToInt32(listHour[value1].Substring(0, 2));
-                    selectMinute = Convert.ToInt32(listMinute[value2].Substring(0, 2));
+            {
+                if (value1 == 0 && value2 == 0)
+                {
+                    value2 = 1;
+                    pickerView.setCurrentItems(value1, value2, 0);
                 }
-            };
-        }
+                else if (value1 == 4 && value2 == 1)
+                {
+                    value2 = 0;
+                    pickerView.setCurrentItems(value1, value2, 0);
+                }
+                else
+                {
+                    //鏇存敼绱㈠紩
+                    selectHour = Convert.ToInt32(listHour[value1].Substring(0, 2));
+                    selectMinute = Convert.ToInt32(listMinute[value2].Substring(0, 2));
+                }
+            };
+        }
 
+        /// <summary>
+        /// 鐗规畩鐨勯泦鍚堥�夋嫨浜嬩欢锛屽満鏅椂闂磋缃娇鐢�
+        /// </summary>
+        public void ChangePickerEvent2()
+        {
+            pickerView.OnSelectChangeEvent = (value1, value2, value3) =>
+            {
+                if (value1 == 60 && value2 == 60)
+                {
+                    value2 = 0;
+                    pickerView.setCurrentItems(value1, value2, 0);
+                }
+                //else if (value1 == 4 && value2 == 1)
+                //{
+                //    value2 = 0;
+                //    pickerView.setCurrentItems(value1, value2, 0);
+                //}
+                //else
+                //{
+                //    //鏇存敼绱㈠紩
+                //    selectHour = Convert.ToInt32(listHour[value1].Substring(0, 2));
+                //    selectMinute = Convert.ToInt32(listMinute[value2].Substring(0, 2));
+                //}
+            };
+        }
         #endregion
 
         #region 鈻� 涓�鑸柟娉昣__________________________
diff --git a/HDL_ON/UI/UI0-Stan/Controls/CompoundControls/BatteryPersentControl.cs b/HDL_ON/UI/UI0-Stan/Controls/CompoundControls/BatteryPersentControl.cs
index bf88dae..2ba65dc 100644
--- a/HDL_ON/UI/UI0-Stan/Controls/CompoundControls/BatteryPersentControl.cs
+++ b/HDL_ON/UI/UI0-Stan/Controls/CompoundControls/BatteryPersentControl.cs
@@ -7,7 +7,7 @@
 namespace HDL_ON.Stan
 {
     /// <summary>
-    /// 鐢垫睜鐧惧垎姣旀帶浠�
+    /// 鐢垫睜鐧惧垎姣旀帶浠�(楂樹负25)
     /// </summary>
     public class BatteryPersentControl : NormalFrameLayout
     {
@@ -21,13 +21,17 @@
         /// 杩涘害鏉�
         /// </summary>
         private NormalViewControl btnProgress = null;
+        /// <summary>
+        /// 鍥炬爣鎺т欢
+        /// </summary>
+        private IconViewControl btnIcon = null;
 
         #endregion
 
         #region 鈻� 鍒濆鍖朹____________________________
 
         /// <summary>
-        /// 鐢垫睜鐧惧垎姣旀帶浠�
+        /// 鐢垫睜鐧惧垎姣旀帶浠�(楂樹负25)
         /// </summary>
         public BatteryPersentControl()
         {
@@ -39,19 +43,23 @@
         /// <summary>
         /// 鍒濆鍖栨帶浠�
         /// </summary>
-        public void InitControl()
+        /// <param name="showPersent">鏄惁鍦ㄥ彸杈规樉绀虹櫨鍒嗘瘮</param>
+        public void InitControl(bool showPersent = true)
         {
-            var btnIcon = new IconViewControl(24);
-            btnIcon.UnSelectedImagePath = "FunctionIcon/Electrical/WeepRobot/Battery.png";
+            this.btnIcon = new IconViewControl(24);
+            btnIcon.UnSelectedImagePath = "Public/BatteryEnough.png";
             this.AddChidren(btnIcon);
 
             //鐢垫睜鐧惧垎姣�
-            this.btnBatteryView = new NormalViewControl(30, 16, true);
-            btnBatteryView.X = btnIcon.Right + Application.GetRealWidth(4);
-            btnBatteryView.Y = btnIcon.Y + (btnIcon.Height - Application.GetRealHeight(16)) / 2;
-            btnBatteryView.TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel;
-            btnBatteryView.TextColor = CSS_Color.PromptingColor1;
-            this.AddChidren(btnBatteryView);
+            if (showPersent == true)
+            {
+                this.btnBatteryView = new NormalViewControl(30, 16, true);
+                btnBatteryView.X = btnIcon.Right + Application.GetRealWidth(4);
+                btnBatteryView.Y = btnIcon.Y + (btnIcon.Height - Application.GetRealHeight(16)) / 2;
+                btnBatteryView.TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel;
+                btnBatteryView.TextColor = CSS_Color.PromptingColor1;
+                this.AddChidren(btnBatteryView);
+            }
 
             //杩涘害鏉℃帶浠�
             this.btnProgress = new NormalViewControl(this.GetPictrueRealSize(15), this.GetPictrueRealSize(8), false);
@@ -72,23 +80,23 @@
         public void SetValue(decimal i_value)
         {
             int myWidth = (int)((i_value / 100) * this.GetPictrueRealSize(15));
-            this.btnBatteryView.Text = i_value + "%";
+            if (this.btnBatteryView != null)
+            {
+                this.btnBatteryView.Text = i_value + "%";
+            }
+
             this.btnProgress.Width = myWidth;
             if (i_value <= 20)
             {
-                if (this.btnProgress.BackgroundColor == CSS_Color.PromptingColor1)
-                {
-                    //鍙樼孩鑹�
-                    this.btnProgress.BackgroundColor = 0xfff62f48;
-                }
+                //鍙樼孩鑹�
+                this.btnProgress.BackgroundColor = 0xfff62f48;
+                this.btnIcon.UnSelectedImagePath = "Public/BatteryNot.png";
             }
             else
             {
-                if (this.btnProgress.BackgroundColor == 0xfff62f48)
-                {
-                    //鍙樼孩鑹�
-                    this.btnProgress.BackgroundColor = CSS_Color.PromptingColor1;
-                }
+                //鍙樼伆鑹�
+                this.btnProgress.BackgroundColor = CSS_Color.PromptingColor1;
+                this.btnIcon.UnSelectedImagePath = "Public/BatteryEnough.png";
             }
         }
 
diff --git a/HDL_ON/UI/UI0-Stan/Controls/CompoundControls/SeekBarImageControl.cs b/HDL_ON/UI/UI0-Stan/Controls/CompoundControls/SeekBarImageControl.cs
index 8c66d48..6579b0d 100644
--- a/HDL_ON/UI/UI0-Stan/Controls/CompoundControls/SeekBarImageControl.cs
+++ b/HDL_ON/UI/UI0-Stan/Controls/CompoundControls/SeekBarImageControl.cs
@@ -7,7 +7,8 @@
 namespace HDL_ON.Stan
 {
     /// <summary>
-    /// 宸﹀彸婊戝姩鐨勮繘搴︽潯鎺т欢
+    /// <para>宸﹀彸婊戝姩鐨勮繘搴︽潯鎺т欢(楂樺害涓�54 宸﹀彸闂磋窛涓�20)</para>
+    /// <para>濡傛灉鏄姞鍦≒ageLayout閲岄潰鐨勮瘽,鍔犲叆鐖舵帶浠朵箣鍚�,璇疯皟鐢˙indPageLayout()</para>
     /// </summary>
     public class SeekBarImageControl : DiyImageSeekBar
     {
@@ -112,20 +113,25 @@
         /// 涓婃柟鏄剧ず鐨勬枃鏈�
         /// </summary>
         private Button btnTopView = null;
+        /// <summary>
+        /// 缁戝畾PageLayout锛屼簨浠跺啿绐�,闇�瑕佺壒娈婂鐞�
+        /// </summary>
+        private PageLayout pageLayoutBind = null;
 
         #endregion
 
         #region 鈻� 鍒濆鍖朹____________________________
 
         /// <summary>
-        /// 宸﹀彸婊戝姩鐨勮繘搴︽潯鎺т欢(楂樺害涓�54 宸﹀彸闂磋窛涓�20)
+        /// <para>宸﹀彸婊戝姩鐨勮繘搴︽潯鎺т欢(楂樺害涓�54 宸﹀彸闂磋窛涓�20)</para>
+        /// <para>濡傛灉鏄姞鍦≒ageLayout閲岄潰鐨勮瘽,鍔犲叆鐖舵帶浠朵箣鍚�,璇疯皟鐢˙indPageLayout()</para>
         /// </summary>
         /// <param name="i_width">瀹藉害,闈炵湡瀹炲��,瀹為檯瀹藉害浼氬姞涓婂乏鍙抽棿璺�</param>
         public SeekBarImageControl(int i_width)
         {
             this.ProgressChangeDelayTime = 0;
 
-            this.Width = Application.GetRealWidth(i_width) + Application.GetRealWidth(20) * 2;
+            this.Width = Application.GetRealWidth(i_width) + m_SeekBarPadding * 2;
             this.Height = Application.GetRealHeight(54);
             //鍦嗙悆鐨勯珮搴�
             this.ThumbImageHeight = Application.GetRealHeight(54);
@@ -178,8 +184,27 @@
                 this.OnStopTrackingTouchEvent -= this.MyStopTrackingTouchEvent;
                 return;
             }
+            if (this.pageLayoutBind != null && this.pageLayoutBind.ScrollEnabled == false)
+            {
+                //浜嬩欢鍐茬獊,鐗规畩澶勭悊,璁﹑ageLayout杩樺師婊戝姩
+                this.pageLayoutBind.ScrollEnabled = true;
+            }
             //寮硅捣浜嬩欢涓嶉渶瑕佸垽鏂椂闂�
             this.ProgressChangedEvent(1, value);
+        }
+
+        /// <summary>
+        /// 鎵嬫寚寮�濮嬬偣鍑讳簨浠�
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="value"></param>
+        private void MyStartTrackingTouchEvent(object sender, bool value)
+        {
+            if (this.pageLayoutBind != null && this.pageLayoutBind.ScrollEnabled == true)
+            {
+                //浜嬩欢鍐茬獊,鐗规畩澶勭悊,璁﹑ageLayout涓嶈兘婊戝姩
+                this.pageLayoutBind.ScrollEnabled = false;
+            }
         }
 
         #endregion
@@ -237,11 +262,44 @@
         #region 鈻� 涓�鑸柟娉昣__________________________
 
         /// <summary>
+        /// 缁戝畾PageLayout
+        /// </summary>
+        public void BindPageLayout()
+        {
+            //鑾峰彇PageLayout
+            this.pageLayoutBind = this.GetParentPageLayout();
+            if (this.pageLayoutBind == null) { return; }
+
+            this.OnStartTrackingTouchEvent -= this.MyStartTrackingTouchEvent;
+            this.OnStartTrackingTouchEvent += this.MyStartTrackingTouchEvent;
+        }
+
+        /// <summary>
+        /// 鑾峰彇鐖舵帶浠剁殑PageLayout
+        /// </summary>
+        /// <returns></returns>
+        private PageLayout GetParentPageLayout()
+        {
+            ViewGroup viewGroup = this.Parent;
+            while (true)
+            {
+                if (viewGroup == null) { return null; }
+                else if (viewGroup is PageLayout)
+                {
+                    return (PageLayout)viewGroup;
+                }
+                viewGroup = viewGroup.Parent;
+            }
+        }
+
+        /// <summary>
         /// 鎺т欢鎽ф瘉
         /// </summary>
         public override void RemoveFromParent()
         {
+            this.pageLayoutBind = null;
             this.ProgressChangedEvent = null;
+
             base.RemoveFromParent();
         }
 
diff --git a/HDL_ON/UI/UI0-Stan/Controls/FrameLayoutControls/FrameLayoutStatuControl.cs b/HDL_ON/UI/UI0-Stan/Controls/FrameLayoutControls/FrameLayoutStatuControl.cs
index 73cbd27..e01c3bb 100644
--- a/HDL_ON/UI/UI0-Stan/Controls/FrameLayoutControls/FrameLayoutStatuControl.cs
+++ b/HDL_ON/UI/UI0-Stan/Controls/FrameLayoutControls/FrameLayoutStatuControl.cs
@@ -105,9 +105,9 @@
                 button.ButtonClickEvent -= ChildrenUpEvent;
                 button.ButtonClickEvent += ChildrenUpEvent;
             }
-            else if (view is ImageView)
+            else if (view is ImageView || view is Button)
             {
-                //鑷韩涔熸坊鍔犱簨浠�
+                //涓哄瓙鎺т欢娣诲姞浜嬩欢
                 view.MouseUpEventHandler -= ChildrenUpEvent;
                 view.MouseUpEventHandler += ChildrenUpEvent;
             }
@@ -145,7 +145,7 @@
         /// </summary>
         /// <param name="view">瀛愭帶浠�</param>
         /// <param name="chidrenBindMode">缁戝畾妯″紡</param>
-        public void AddChidren(View view, ChidrenBindMode chidrenBindMode = ChidrenBindMode.BindEvent)
+        public void AddChidren(View view, ChidrenBindMode chidrenBindMode)
         {
             base.AddChidren(view);
 
diff --git a/HDL_ON/UI/UI0-Stan/Controls/FrameLayoutControls/FrameRowControl.cs b/HDL_ON/UI/UI0-Stan/Controls/FrameLayoutControls/FrameRowControl.cs
index ad91a5a..3c79f52 100644
--- a/HDL_ON/UI/UI0-Stan/Controls/FrameLayoutControls/FrameRowControl.cs
+++ b/HDL_ON/UI/UI0-Stan/Controls/FrameLayoutControls/FrameRowControl.cs
@@ -6,7 +6,7 @@
 namespace HDL_ON.Stan
 {
     /// <summary>
-    /// 鍋氭垚涓�涓猂owLayout鍨嬬殑FrameLayout
+    /// 鍋氭垚涓�涓猂owLayout鍨嬬殑FrameLayout(搴曞眰鐨勯珮搴︿负44)
     /// </summary>
     public class FrameRowControl : FrameLayoutStatuControl
     {
@@ -42,7 +42,7 @@
         #region 鈻� 鍒濆鍖朹____________________________
 
         /// <summary>
-        /// 鍋氭垚涓�涓猂owLayout鍨嬬殑FrameLayout
+        /// 鍋氭垚涓�涓猂owLayout鍨嬬殑FrameLayout(搴曞眰鐨勯珮搴︿负44)
         /// </summary>
         /// <param name="i_ChidrenYaxis">瀛愭帶浠禮杞村亸绉婚噺(銆愬垪琛ㄦ帶浠剁殑rowSpace/2銆戝嵆鍙�,涓嶆噦榛樿涓�0鍗冲彲)</param>
         public FrameRowControl(int i_ChidrenYaxis = 0) : base(i_ChidrenYaxis)
@@ -66,7 +66,7 @@
                 //宸茬粡娣诲姞浜嗗簳绾�
                 return btnBottomLine;
             }
-            int lineWidth = this.Width - HdlControlResourse.XXLeft * 2 - LeftOffset - RightOffset;
+            int lineWidth = this.Width - HdlControlResourse.XXLeft * 2 - LeftOffset + RightOffset;
             int XX = HdlControlResourse.XXLeft + LeftOffset;
             if (leftIconSize > 0)
             {
@@ -82,6 +82,26 @@
             return btnBottomLine;
         }
 
+        /// <summary>
+        /// 鎵嬪姩绉婚櫎搴曠嚎(鏈変簺鏃跺�欓渶瑕佽繖绉嶇壒娈婃晥鏋�)
+        /// </summary>
+        public void RemoveBottomLine()
+        {
+            for (int i = 0; i < this.ChildrenCount; i++)
+            {
+                var myView = this.GetChildren(i);
+                //杩欓噷鏄簳绾跨殑楂樺害鍜孻杞�
+                if (myView == null || myView.Height != HdlControlResourse.BottomLineHeight
+                    || myView.Y != this.Height - HdlControlResourse.BottomLineHeight)
+                {
+                    continue;
+                }
+                //绉婚櫎搴曠嚎
+                myView.RemoveFromParent();
+                break;
+            }
+        }
+
         #endregion
 
         #region 鈻� 娣诲姞宸﹁竟Caption____________________
diff --git a/HDL_ON/UI/UI0-Stan/Controls/MessageControls/ShowMsgControl.cs b/HDL_ON/UI/UI0-Stan/Controls/MessageControls/ShowMsgControl.cs
index 3081f6f..b888536 100644
--- a/HDL_ON/UI/UI0-Stan/Controls/MessageControls/ShowMsgControl.cs
+++ b/HDL_ON/UI/UI0-Stan/Controls/MessageControls/ShowMsgControl.cs
@@ -63,7 +63,7 @@
             this.buttonOkText = i_buttonOkText == null ? Language.StringByID(StringId.Confirm) : i_buttonOkText;
             this.buttonCancelText = i_buttonCancelText == null ? Language.StringByID(StringId.Cancel) : i_buttonCancelText;
             this.msgType = i_msgType;
-            this.msgText = i_msg;
+            this.msgText = i_msg.Replace("{0}", "\r\n");
             this.WaitTime = i_waitTime;
 
             if (i_msgType == ShowMsgType.Tip)
@@ -92,8 +92,21 @@
                     myTip = null;
                     return;
                 }
-                //鍒濆鍖栨帶浠�
-                this.InitMsgControl();
+                if (this.msgType == ShowMsgType.TipRemind || this.msgType == ShowMsgType.TipSuccess)
+                {
+                    //鍒濆鍖栨帶浠�
+                    this.InitExTipControl();
+                }
+                else if (this.msgType == ShowMsgType.ConfirmSuccess || this.msgType == ShowMsgType.ConfirmFail)
+                {
+                    //鍒濆鍖栨帶浠�
+                    this.InitConfirmSuccessTypeContorl();
+                }
+                else
+                {
+                    //鍒濆鍖栨帶浠�
+                    this.InitMsgControl();
+                }
             }
             catch { }
         }
@@ -148,8 +161,9 @@
             frameMain.AddChidren(frameCenter);
 
             //鏍囬
-            var btnTitle = new NormalViewControl(frameCenter.Width, Application.GetRealHeight(22), false);
+            var btnTitle = new NormalViewControl(frameCenter.Width - HdlControlResourse.XXLeft * 2, Application.GetRealHeight(22), false);
             btnTitle.Y = Application.GetRealHeight(20);
+            btnTitle.Gravity = Gravity.CenterHorizontal;
             btnTitle.TextColor = CSS_Color.MainColor;
             btnTitle.TextSize = CSS_FontSize.SubheadingFontSize;
             btnTitle.TextAlignment = TextAlignment.Center;
@@ -263,15 +277,143 @@
             this.StartWaitTime(btnConfirm);
         }
 
+        /// <summary>
+        /// 鍒濆鍖栫壒娈婄殑tip鎺т欢,浠呮敮鎸� TipRemind 鍜� TipSuccess
+        /// </summary>
+        private void InitExTipControl()
+        {
+            //鑾峰彇褰撳墠鐨勭晫闈�
+            var nowActionForm = MainPage.BasePageView.GetChildren(MainPage.BasePageView.ChildrenCount - 1) as ViewGroup;
+            if (nowActionForm == null)
+            {
+                return;
+            }
+            //涓绘帶浠�
+            var frameMain = new NormalFrameLayout();
+            frameMain.Height = nowActionForm.Height;
+            frameMain.Width = nowActionForm.Width;
+            nowActionForm.AddChidren(frameMain);
+            frameMain.ButtonClickEvent += (sender, e) =>
+            {
+                frameMain.RemoveFromParent();
+            };
+
+            //璁$畻鐢�
+            var btnTemp = new ButtonCtrBase();
+            btnTemp.Text = msgText.Replace("\r\n", string.Empty);
+            //鑾峰彇杩欎釜鏄剧ず鐨勫唴瀹圭殑楂樺害(钃濇箹鐨勯粦鑹茶儗鏅殑瀹藉害涓�198,鐒跺悗鍐嶅噺鍘讳綑鐧�)
+            int rowCount = btnTemp.GetRealRowCountByText(Application.GetRealWidth(198) - HdlControlResourse.XXLeft * 2);
+            //鍐嶇湅鐪嬪畠鍘熸潵鎸夋崲琛岀鍒嗗壊涓哄嚑琛�
+            var myArry = msgText.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries);
+            //鐪嬬湅璋佺殑琛屾暟澶�,灏辩敤璋佺殑
+            if (myArry.Length > rowCount)
+            {
+                rowCount = myArry.Length;
+            }
+            int contentHeight = rowCount * Application.GetRealHeight(20);
+            //钃濇箹榛戣壊鑳屾櫙鐨刌杞翠负302
+            var frameBlack = new FrameLayout();
+            //濡傛灉鏄琛屾椂,鍑忔帀涓�琛岀殑楂樺害,鍒欏緱鍑烘柊澧炲姞鐨勯珮搴�,鐒跺悗鍐嶉櫎浠�2,鍒欎负Y杞村師濮嬪崰姣�
+            frameBlack.Y = Application.GetRealHeight(302) - (contentHeight - Application.GetRealHeight(20)) / 2;
+            frameBlack.Width = Application.GetRealWidth(198);
+            //瀹為檯璁$畻鍑烘潵鐨勯珮搴︿负 62+鏂囨湰楂樺害+16
+            frameBlack.Height = Application.GetRealHeight(62) + contentHeight + Application.GetRealHeight(16);
+            frameBlack.Radius = (uint)Application.GetRealWidth(12);
+            frameBlack.Gravity = Gravity.CenterHorizontal;
+            frameBlack.BackgroundColor = CSS_Color.DialogTransparentColor1;
+            frameMain.AddChidren(frameBlack);
+
+            //鍥炬爣
+            var btnIcon = new IconViewControl(42);
+            btnIcon.Y = Application.GetRealHeight(10);
+            btnIcon.Gravity = Gravity.CenterHorizontal;
+            btnIcon.UnSelectedImagePath = this.msgType == ShowMsgType.TipSuccess ? "Public/MsgIcon/TipSuccessIcon.png" : "Public/MsgIcon/TipIconWhite.png";
+            frameBlack.AddChidren(btnIcon);
+
+            //鏄剧ず鏂囨湰
+            var btnText = new NormalViewControl(frameBlack.Width - HdlControlResourse.XXLeft * 2, contentHeight, false);
+            btnText.Y = btnIcon.Bottom + Application.GetRealHeight(10);
+            btnText.TextAlignment = TextAlignment.Center;
+            btnText.TextColor = CSS_Color.MainBackgroundColor;
+            btnText.Gravity = Gravity.CenterHorizontal;
+            btnText.IsMoreLines = true;
+            btnText.Text = this.msgText;
+            frameBlack.AddChidren(btnText);
+
+            //寮�鍚叧闂椂闂�
+            this.StartCloseTime(frameMain);
+        }
+
+        /// <summary>
+        /// 鍒濆鍖栫‘璁ゆ垚鍔熷瀷鎺т欢,浠呮敮鎸� ConfirmSuccess 鍜� ConfirmFail
+        /// </summary>
+        private void InitConfirmSuccessTypeContorl()
+        {
+            var dialogForm = new Dialog();
+            dialogForm.BackgroundColor = CSS_Color.DialogTransparentColor1;
+            //涓绘帶浠�
+            var frameMain = new NormalFrameLayout();
+            dialogForm.AddChidren(frameMain);
+            dialogForm.Show();
+
+            //鐧借壊鑳屾櫙
+            var frameBack = new FrameLayout();
+            frameBack.Y = Application.GetRealHeight(223);
+            frameBack.Gravity = Gravity.CenterHorizontal;
+            frameBack.Width = Application.GetRealWidth(288);
+            frameBack.Height = Application.GetRealHeight(245);
+            frameBack.BackgroundColor = CSS_Color.MainBackgroundColor;
+            frameBack.Radius = (uint)Application.GetRealWidth(12);
+            frameMain.AddChidren(frameBack);
+
+            //澶у浘鏍�(钃濇箹涓�,瀹冮珮鍑虹櫧鑹插尯鍩�70鍍忕礌,鍥犱负楂樺鐨勬瘮鐜囨槸涓嶄竴鏍风殑,鎵�浠ラ渶瑕佽绠椾竴涓嬫瘮鐜�)
+            decimal decProportion = 70m / 160;
+            var btnIcon = new IconViewControl(160);
+            btnIcon.Y = frameBack.Y - (int)(decProportion * btnIcon.IconSize);
+            btnIcon.Gravity = Gravity.CenterHorizontal;
+            btnIcon.UnSelectedImagePath = this.msgType == ShowMsgType.ConfirmSuccess ? "Public/Dialog/DialogTipTitleIcon_1.png" : "Public/Dialog/DialogTipTitleIcon_2.png";
+            frameMain.AddChidren(btnIcon);
+
+            //娑堟伅
+            var btnMsg = new NormalViewControl(frameMain.Width - HdlControlResourse.XXLeft * 2, Application.GetRealHeight(50), false);
+            //鍙栧ぇ鍥炬爣鐨勪笅閮ㄩ珮搴�,鐒跺悗鍐嶅姞闂磋窛10
+            btnMsg.Y = btnIcon.Height - (frameBack.Y - btnIcon.Y) + Application.GetRealHeight(10);
+            btnMsg.Gravity = Gravity.CenterHorizontal;
+            btnMsg.TextAlignment = TextAlignment.TopCenter;
+            btnMsg.IsMoreLines = true;
+            btnMsg.TextSize = CSS_FontSize.SubheadingFontSize;
+            btnMsg.TextColor = CSS_Color.MainColor;
+            btnMsg.Text = this.msgText;
+            frameBack.AddChidren(btnMsg);
+
+            //纭鎸夐挳
+            var btnConfirm = new BottomClickButton(220);
+            btnConfirm.Text = this.buttonOkText;
+            btnConfirm.Y = Application.GetRealHeight(169);
+            frameBack.AddChidren(btnConfirm);
+            btnConfirm.ButtonClickEvent += (sender, e) =>
+            {
+                //鍏抽棴鐣岄潰
+                dialogForm.Close();
+                //鍥炶皟鍑芥暟
+                this.ConfirmClickEvent?.Invoke();
+                this.ConfirmClickEvent = null;
+                this.CancelClickEvent = null;
+            };
+
+            //寮�鍚瓑寰呮椂闂�
+            this.StartWaitTime(btnConfirm);
+        }
+
         #endregion
 
         #region 鈻� 寮�鍚瓑寰呮椂闂確______________________
 
         /// <summary>
-        /// 寮�鍚瓑寰呮椂闂�(姝ゅ嚱鏁板彧鐢ㄤ簬瀹夊崜)
+        /// 寮�鍚瓑寰呮椂闂�
         /// </summary>
         /// <param name="btnConfirm">纭鎸夐挳</param>
-        private void StartWaitTime(NormalViewControl btnConfirm)
+        private void StartWaitTime(ButtonCtrBase btnConfirm)
         {
             if (this.WaitTime <= 0)
             {
@@ -303,35 +445,25 @@
         }
 
         /// <summary>
-        /// 寮�鍚瓑寰呮椂闂�
+        /// 寮�鍚叧闂椂闂�
         /// </summary>
-        /// <param name="btnConfirm">纭鎸夐挳</param>
-        private void StartWaitTime(ButtonCtrBase btnConfirm)
+        /// <param name="frameMain">涓荤晫闈�</param>
+        private void StartCloseTime(FrameLayout frameMain)
         {
             if (this.WaitTime <= 0)
             {
                 return;
             }
-            //涓嶈兘鐐瑰嚮
-            btnConfirm.CanClick = false;
-
             HdlThreadLogic.Current.RunThread(() =>
             {
-                //鏄剧ず鍓╀綑绛夊緟鏃堕棿
-                while (btnConfirm.Parent != null && this.WaitTime >= 0)
+                while (frameMain.Parent != null && this.WaitTime >= 0)
                 {
-                    HdlThreadLogic.Current.RunMain(() =>
-                    {
-                        btnConfirm.Text = this.buttonOkText + "(" + this.WaitTime + ")";
-                    }, ShowErrorMode.NO);
                     System.Threading.Thread.Sleep(1000);
                     this.WaitTime--;
                 }
                 HdlThreadLogic.Current.RunMain(() =>
                 {
-                    //鍙互鐐瑰嚮
-                    btnConfirm.Text = this.buttonOkText;
-                    btnConfirm.CanClick = true;
+                    frameMain?.RemoveFromParent();
 
                 }, ShowErrorMode.NO);
             });
diff --git a/HDL_ON/UI/UI0-Stan/Controls/NormalControls/NormalViewControl.cs b/HDL_ON/UI/UI0-Stan/Controls/NormalControls/NormalViewControl.cs
index b16a121..f1eb9b7 100644
--- a/HDL_ON/UI/UI0-Stan/Controls/NormalControls/NormalViewControl.cs
+++ b/HDL_ON/UI/UI0-Stan/Controls/NormalControls/NormalViewControl.cs
@@ -6,7 +6,7 @@
 namespace HDL_ON.Stan
 {
     /// <summary>
-    /// 骞冲嚒鏅�氱殑鎺т欢,鍩烘湰鍙槸鐢ㄦ潵鏄剧ず鉁�
+    /// 骞冲嚒鏅�氱殑鎺т欢,鍩烘湰鍙槸鐢ㄦ潵鏄剧ず鉁�(姝e父鏂囨湰瀛椾綋棰滆壊(0xFF798394),鏂囧瓧鍚戝乏闈犻綈)
     /// </summary>
     public class NormalViewControl : ButtonCtrBase
     {
@@ -19,16 +19,6 @@
         public NormalViewControl(int i_Width, int i_Height, bool real)
         {
             this.InitSize(i_Width, i_Height, real);
-        }
-
-        /// <summary>
-        /// 骞冲嚒鏅�氱殑鎺т欢,鍩烘湰鍙槸鐢ㄦ潵鏄剧ず(姝e父鏂囨湰瀛椾綋棰滆壊,鏂囧瓧鍚戝乏闈犻綈),楂樺害涓烘爣鍑嗛珮搴�
-        /// </summary>
-        /// <param name="i_Width">瀹藉害</param>
-        /// <param name="real">鏄惁璁$畻鐪熷疄鍊�</param>
-        public NormalViewControl(int i_Width, bool real)
-        {
-            this.InitSize(i_Width, real);
         }
     }
 }
diff --git a/HDL_ON/UI/UI0-Stan/Controls/TextInputControls/TextInputControl.cs b/HDL_ON/UI/UI0-Stan/Controls/TextInputControls/TextInputControl.cs
index ec3605d..dcf1f0a 100644
--- a/HDL_ON/UI/UI0-Stan/Controls/TextInputControls/TextInputControl.cs
+++ b/HDL_ON/UI/UI0-Stan/Controls/TextInputControls/TextInputControl.cs
@@ -6,7 +6,7 @@
 namespace HDL_ON.Stan
 {
     /// <summary>
-    /// 鍋氭垚涓�涓緭鍏ユ鎺т欢
+    /// 鍋氭垚涓�涓緭鍏ユ鎺т欢,鏍囧噯瀛椾綋棰滆壊(0xFF798394)锛屾枃瀛楀悜宸﹂潬榻�,14鍙峰瓧
     /// </summary>
     public class TextInputControl : TextInputBase
     {
@@ -17,7 +17,7 @@
         #region 鈻� 鍒濆鍖朹____________________________
 
         /// <summary>
-        /// 鍋氭垚涓�涓緭鍏ユ鎺т欢(姝e父鏂囨湰瀛椾綋棰滆壊)
+        /// 鍋氭垚涓�涓緭鍏ユ鎺т欢,鏍囧噯瀛椾綋棰滆壊(0xFF798394)锛屾枃瀛楀悜宸﹂潬榻�,14鍙峰瓧
         /// </summary>
         /// <param name="i_Width">瀹藉害</param>
         /// <param name="i_Height">楂樺害</param>
diff --git a/HDL_ON/UI/UI0-Stan/Controls/TextInputControls/TextInputDialog.cs b/HDL_ON/UI/UI0-Stan/Controls/TextInputControls/TextInputDialog.cs
new file mode 100644
index 0000000..b7f0a28
--- /dev/null
+++ b/HDL_ON/UI/UI0-Stan/Controls/TextInputControls/TextInputDialog.cs
@@ -0,0 +1,238 @@
+锘縰sing Shared;
+using HDL_ON.UI.CSS;
+using System;
+using System.Text;
+
+namespace HDL_ON.Stan
+{
+    /// <summary>
+    /// 鏂囨湰杈撳叆鐨勫脊绐楃晫闈�(涓嶇敤鍔犲叆鐖舵帶浠�)
+    /// </summary>
+    public class TextInputDialog
+    {
+        #region 鈻� 鍙橀噺澹版槑___________________________
+
+        /// <summary>
+        /// 鏍囬鏂囨湰
+        /// </summary>
+        private string titleText = string.Empty;
+        /// <summary>
+        /// 鍒濆鍊�
+        /// </summary>
+        private string textValue = string.Empty;
+        /// <summary>
+        /// 褰撹緭鍏ユ涓虹┖鐧芥椂鐨勬彁绀烘枃鏈�
+        /// </summary>
+        private string emptyMsg = string.Empty;
+        /// <summary>
+        /// 纭鎸夐挳鐨勬枃鏈�
+        /// </summary>
+        private string buttonOkText = string.Empty;
+        /// <summary>
+        /// 鍙栨秷鎸夐挳鐨勬枃鏈�
+        /// </summary>
+        private string buttonCancelText = string.Empty;
+        /// <summary>
+        /// 鏄惁鏄瘑鐮佽緭鍏�
+        /// </summary>
+        private bool isPassword = false;
+
+        #endregion
+
+        #region 鈻� 鍒濆鍖朹____________________________
+
+        /// <summary>
+        /// 鏂囨湰杈撳叆鐨勫脊绐楃晫闈�(涓嶇敤鍔犲叆鐖舵帶浠�)
+        /// </summary>
+        /// <param name="i_title">鏍囬鏂囨湰</param>
+        /// <param name="i_text">鍒濆鍊�</param>
+        /// <param name="i_emptyMsg">褰撹緭鍏ユ涓虹┖鐧芥椂鐨勬彁绀烘枃鏈�</param>
+        /// <param name="i_buttonOkText">纭鎸夐挳鐨勬枃鏈�</param>
+        /// <param name="i_buttonCancelText">鍙栨秷鎸夐挳鐨勬枃鏈�</param>
+        /// <param name="i_isPassword">鏄惁鏄瘑鐮佽緭鍏�</param>
+        public TextInputDialog(string i_title, string i_text, string i_emptyMsg, string i_buttonOkText = null, string i_buttonCancelText = null, bool i_isPassword = false)
+        {
+            this.titleText = i_title;
+            this.textValue = i_text;
+            this.emptyMsg = i_emptyMsg;
+
+            //纭鎸夐挳鏂囨湰
+            this.buttonOkText = i_buttonOkText == null ? Language.StringByID(StringId.Confirm) : i_buttonOkText;
+            this.buttonCancelText = i_buttonCancelText == null ? Language.StringByID(StringId.Cancel) : i_buttonCancelText;
+
+            this.isPassword = i_isPassword;
+        }
+
+        #endregion
+
+        #region 鈻� 寮圭獥鏄剧ず___________________________
+
+        /// <summary>
+        /// 寮圭獥鏄剧ず
+        /// </summary>
+        /// <param name="finishEvent">鍥炶皟鍑芥暟,鍙傛暟涓鸿緭鍏ユ鐨勫��</param>
+        public void Show(Action<string> finishEvent)
+        {
+            var dialogForm = new Dialog();
+            dialogForm.BackgroundColor = CSS_Color.DialogTransparentColor1;
+            //涓绘帶浠�
+            var frameMain = new NormalFrameLayout();
+            dialogForm.AddChidren(frameMain);
+            dialogForm.Show();
+
+            //涓棿鍖哄煙
+            var frameCenter = new NormalFrameLayout();
+            frameCenter.Gravity = Gravity.Center;
+            frameCenter.Width = Application.GetRealWidth(270);
+            frameCenter.Height = Application.GetRealHeight(50);
+            frameCenter.BackgroundColor = CSS_Color.MainBackgroundColor;
+            frameCenter.Radius = (uint)Application.GetMinRealAverage(10);
+            frameMain.AddChidren(frameCenter);
+
+            //鏍囬
+            var btnTitle = new NormalViewControl(frameCenter.Width - HdlControlResourse.XXLeft * 2, Application.GetRealHeight(24), false);
+            btnTitle.Y = Application.GetRealHeight(19);
+            btnTitle.Gravity = Gravity.CenterHorizontal;
+            btnTitle.TextColor = CSS_Color.MainColor;
+            btnTitle.TextSize = CSS_FontSize.SubheadingFontSize;
+            btnTitle.TextAlignment = TextAlignment.Center;
+            btnTitle.IsBold = true;
+            btnTitle.Text = this.titleText.Replace("{0}", "\r\n");
+            btnTitle.Height = Application.GetRealHeight(24) * btnTitle.GetRealRowCountByText();
+            btnTitle.IsMoreLines = true;
+            frameCenter.AddChidren(btnTitle);
+
+            //杈撳叆妗嗙殑鑳屾櫙
+            var frameInput = new FrameLayout();
+            frameInput.Y = btnTitle.Bottom + Application.GetRealHeight(16);
+            frameInput.Width = Application.GetRealWidth(222);
+            frameInput.Height = Application.GetRealHeight(40);
+            frameInput.Gravity = Gravity.CenterHorizontal;
+            frameInput.Radius = (uint)Application.GetRealWidth(4);
+            frameInput.BackgroundColor = CSS_Color.BackgroundColor;
+            frameCenter.AddChidren(frameInput);
+            //杈撳叆妗�
+            var txtInput = new TextInputControl(174, 24, true);
+            txtInput.X = Application.GetRealWidth(12);
+            txtInput.Gravity = Gravity.CenterVertical;
+            txtInput.TextColor = CSS_Color.FirstLevelTitleColor;
+            txtInput.Text = this.textValue;
+            frameInput.AddChidren(txtInput);
+
+            //瀵嗙爜鍨�
+            if (this.isPassword == true)
+            {
+                txtInput.IsNumberKeyboardType = true;
+                txtInput.SecureTextEntry = true;
+                //瀵嗙爜鍙鍥炬爣
+                var btnIcon = new IconViewControl(24);
+                btnIcon.X = txtInput.Right + Application.GetRealWidth(8);
+                btnIcon.Gravity = Gravity.CenterVertical;
+                btnIcon.UnSelectedImagePath = "LoginIcon/HidePasswordIcon.png";
+                btnIcon.SelectedImagePath = "LoginIcon/ShowPasswordIcon.png";
+                frameInput.AddChidren(btnIcon);
+                btnIcon.ButtonClickEvent += (sender, e) =>
+                {
+                    btnIcon.IsSelected = !btnIcon.IsSelected;
+                    txtInput.SecureTextEntry = !txtInput.SecureTextEntry;
+                };
+            }
+            else
+            {
+                //鍙栨秷鍥炬爣
+                var btnIcon = new IconViewControl(24);
+                btnIcon.X = txtInput.Right + Application.GetRealWidth(8);
+                btnIcon.Gravity = Gravity.CenterVertical;
+                btnIcon.UnSelectedImagePath = "LoginIcon/1.png";
+                frameInput.AddChidren(btnIcon);
+                btnIcon.ButtonClickEvent += (sender, e) =>
+                {
+                    txtInput.Text = string.Empty;
+                };
+            }
+
+            //閿欒鏄剧ず娑堟伅
+            var btnErrorMsg = new NormalViewControl(frameInput.Width, Application.GetRealHeight(21), false);
+            btnErrorMsg.Y = frameInput.Bottom;
+            btnErrorMsg.Gravity = Gravity.CenterHorizontal;
+            btnErrorMsg.TextColor = CSS_Color.WarningColor;
+            btnErrorMsg.Text = this.emptyMsg.Replace("{0}", "\r\n");
+            btnErrorMsg.IsMoreLines = true;
+            btnErrorMsg.TextAlignment = TextAlignment.TopLeft;
+            btnErrorMsg.Height = Application.GetRealHeight(21) * btnErrorMsg.GetRealRowCountByText();
+            btnErrorMsg.Visible = false;
+            frameCenter.AddChidren(btnErrorMsg);
+
+            //搴曢儴鎸夐挳鐨勯珮搴�
+            int buttomButtonHeigth = Application.GetRealHeight(43);
+            //璋冩暣鐧借壊妗屽竷鐨勯珮搴﹀拰鍧愭爣
+            frameCenter.Height = frameInput.Bottom + Application.GetRealHeight(31) + buttomButtonHeigth;
+            //鐧借壊鑳屾櫙鍦ㄨ摑婀栦笂鐨勫潗鏍囦负264,楂樺害涓�172  鐒跺悗璁╁畠鎸夎繖涓瘮渚嬬疆浜庢甯�
+            frameCenter.Y = Application.GetRealHeight(264) - (frameCenter.Height - Application.GetRealHeight(172)) / 2;
+
+            //鍙栨秷
+            var btnCancel = new NormalViewControl(frameCenter.Width / 2, buttomButtonHeigth, false);
+            btnCancel.Gravity = Gravity.BottomLeft;
+            btnCancel.TextAlignment = TextAlignment.Center;
+            btnCancel.TextSize = CSS_FontSize.SubheadingFontSize;
+            btnCancel.Text = this.buttonCancelText;
+            frameCenter.AddChidren(btnCancel);
+            btnCancel.ButtonClickEvent += (sender, e) =>
+            {
+                //鍏抽棴鐣岄潰
+                dialogForm.Close();
+                finishEvent = null;
+            };
+            //绾�
+            var btnLine = new NormalViewControl(frameCenter.Width / 2, HdlControlResourse.BottomLineHeight, false);
+            btnLine.Y = btnCancel.Y - HdlControlResourse.BottomLineHeight;
+            btnLine.BackgroundColor = CSS_Color.DividingLineColor;
+            frameCenter.AddChidren(btnLine);
+
+            //纭
+            var btnConfirm = new NormalViewControl(frameCenter.Width - btnCancel.Width, buttomButtonHeigth + HdlControlResourse.BottomLineHeight, false);
+            btnConfirm.X = btnCancel.Right;
+            btnConfirm.Y = btnLine.Y;
+            btnConfirm.TextAlignment = TextAlignment.Center;
+            btnConfirm.TextSize = CSS_FontSize.SubheadingFontSize;
+            btnConfirm.TextColor = CSS_Color.MainBackgroundColor;
+            btnConfirm.BackgroundColor = CSS_Color.MainColor;
+            btnConfirm.Text = this.buttonOkText;
+            frameCenter.AddChidren(btnConfirm);
+            btnConfirm.SetCornerWithSameRadius((uint)Application.GetMinRealAverage(10), HDLUtils.RectCornerBottomRight);
+            btnConfirm.ButtonClickEvent += (sender, e) =>
+            {
+                string inputValue = txtInput.Text.Trim();
+                if (inputValue == string.Empty && string.IsNullOrEmpty(this.emptyMsg) != true)
+                {
+                    //绌虹櫧鐨勬椂鍊�,鎻愮ず娑堟伅
+                    btnErrorMsg.Visible = true;
+
+                    //鐪嬬湅娑堟伅鏄剧ず鐨勬帶浠舵湁娌℃湁澶т簬31,澶т簬鐨勮瘽,鍒欑畻鍑哄畠澧炲姞鐨勫搴�(31鏄緭鍏ユ鍒板簳閮ㄦ寜閽甕杞寸殑绌虹櫧鍖哄煙)
+                    int value = 0;
+                    if (btnErrorMsg.Height > Application.GetRealHeight(31))
+                    {
+                        //5鏄笌搴曢儴鎸夐挳Y杞寸殑闂磋窛
+                        value = btnErrorMsg.Height - Application.GetRealHeight(31) + Application.GetRealHeight(5);
+                    }
+                    //璋冩暣鐧借壊妗屽竷鐨勯珮搴﹀拰鍧愭爣
+                    frameCenter.Height = frameInput.Bottom + Application.GetRealHeight(31) + buttomButtonHeigth + value;
+                    //鐧借壊鑳屾櫙鍦ㄨ摑婀栦笂鐨勫潗鏍囦负264,楂樺害涓�172  鐒跺悗璁╁畠鎸夎繖涓瘮渚嬬疆浜庢甯�
+                    frameCenter.Y = Application.GetRealHeight(264) - (frameCenter.Height - Application.GetRealHeight(172)) / 2;
+                    //涓や釜鎸夐挳缃簳
+                    btnCancel.Gravity = Gravity.BottomLeft;
+                    btnLine.Y = btnCancel.Y - HdlControlResourse.BottomLineHeight;
+                    btnConfirm.Y = btnLine.Y;
+
+                    return;
+                }
+                //鍏抽棴鐣岄潰
+                dialogForm.Close();
+                //鍥炶皟鍑芥暟
+                finishEvent?.Invoke(txtInput.Text.Trim());
+            };
+        }
+
+        #endregion
+    }
+}
diff --git a/HDL_ON/UI/UI0-Stan/Enum/CommonEnum.cs b/HDL_ON/UI/UI0-Stan/Enum/CommonEnum.cs
index ed47b7e..0eff468 100644
--- a/HDL_ON/UI/UI0-Stan/Enum/CommonEnum.cs
+++ b/HDL_ON/UI/UI0-Stan/Enum/CommonEnum.cs
@@ -10,25 +10,82 @@
     public enum ShowMsgType
     {
         /// <summary>
-        /// 鏅�氭彁绀虹被鍨�
+        /// <para>鏅�氭彁绀虹被鍨�(涓嬮潰杩欑鏍峰紡)</para>
+        /// <para>鈺攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈺�</para>
+        /// <para>鈹�       鎻愮ず       鈹�</para>
+        /// <para>鈹�    鏄剧ず鐨勬秷鎭�    鈹�</para>
+        /// <para>鈹溾攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�</para>
+        /// <para>鈹�       纭       鈹�</para>
+        /// <para>鈺扳攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈺�</para>
         /// </summary>
         Normal = 1,
         /// <summary>
-        /// 纭绫诲瀷
+        /// <para>纭绫诲瀷(涓嬮潰杩欑鏍峰紡)</para>
+        /// <para>鈺攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈺�</para>
+        /// <para>鈹�       鎻愮ず       鈹�</para>
+        /// <para>鈹�    鏄剧ず鐨勬秷鎭�    鈹�</para>
+        /// <para>鈹溾攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�</para>
+        /// <para>鈹�  鍙栨秷  鈹� 纭   鈹�</para>
+        /// <para>鈺扳攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈺�</para>
         /// </summary>
         Confirm = 2,
         /// <summary>
-        /// 閿欒绫诲瀷
+        /// <para>閿欒绫诲瀷(涓嬮潰杩欑鏍峰紡)</para>
+        /// <para>鈺攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈺�</para>
+        /// <para>鈹�       閿欒       鈹�</para>
+        /// <para>鈹�    鏄剧ず鐨勬秷鎭�    鈹�</para>
+        /// <para>鈹溾攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�</para>
+        /// <para>鈹�       纭       鈹�</para>
+        /// <para>鈺扳攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈺�</para>
         /// </summary>
         Error = 3,
         /// <summary>
-        /// Tip绫诲瀷
+        /// <para>Tip绫诲瀷(涓嬮潰杩欑鏍峰紡)</para>
+        /// <para>鈺攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈺�</para>
+        /// <para>鈹�    鏄剧ず鐨勬秷鎭�    鈹�</para>
+        /// <para>鈺扳攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈺�</para>
         /// </summary>
         Tip = 4,
         /// <summary>
-        /// 鎻愰啋绫诲瀷
+        /// <para>Tip鎻愰啋绫诲瀷1(涓嬮潰杩欑鏍峰紡)</para>
+        /// <para>鈺攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈺�</para>
+        /// <para>鈹� 涓夎褰㈡劅鍙瑰彿灏忓浘鏍� 鈹�</para>
+        /// <para>鈹�    鏄剧ず鐨勬秷鎭�      鈹�</para>
+        /// <para>鈺扳攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈺�</para>
         /// </summary>
-        Remind = 5
+        TipRemind = 5,
+        /// <summary>
+        /// <para>Tip鎻愰啋绫诲瀷2(涓嬮潰杩欑鏍峰紡)</para>
+        /// <para>鈺攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈺�</para>
+        /// <para>鈹�   鍦嗗舰鎵撳嬀灏忓浘鏍�   鈹�</para>
+        /// <para>鈹�     鏄剧ず鐨勬秷鎭�     鈹�</para>
+        /// <para>鈺扳攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈺�</para>
+        /// </summary>
+        TipSuccess = 6,
+        /// <summary>
+        /// <para>鎴愬姛纭绫诲瀷(涓嬮潰杩欑鏍峰紡)</para>
+        /// <para></para>
+        /// <para>鈺攢鈹�鍦嗗舰鎵撳嬀鐨勫ぇ鍥炬爣鈹�鈹�鈺�</para>
+        /// <para>鈹�                        鈹�</para>
+        /// <para>鈹�       鏄剧ず鐨勬秷鎭�       鈹�</para>
+        /// <para>鈹�    鈺攢鈹�鈹�鈹�鈹�鈹�鈺�    鈹�</para>
+        /// <para>鈹�    鈹�    纭    鈹�    鈹�</para>
+        /// <para>鈹�    鈺扳攢鈹�鈹�鈹�鈹�鈹�鈺�    鈹� </para>
+        /// <para>鈺扳攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈺�</para>
+        /// </summary>
+        ConfirmSuccess = 7,
+        /// <summary>
+        /// <para>澶辫触纭绫诲瀷(涓嬮潰杩欑鏍峰紡)</para>
+        /// <para></para>
+        /// <para>鈺攢鈹�鍦嗗舰鎵撳弶鐨勫ぇ鍥炬爣鈹�鈹�鈺�</para>
+        /// <para>鈹�                        鈹�</para>
+        /// <para>鈹�       鏄剧ず鐨勬秷鎭�       鈹�</para>
+        /// <para>鈹�    鈺攢鈹�鈹�鈹�鈹�鈹�鈺�    鈹�</para>
+        /// <para>鈹�    鈹�    纭    鈹�    鈹�</para>
+        /// <para>鈹�    鈺扳攢鈹�鈹�鈹�鈹�鈹�鈺�    鈹� </para>
+        /// <para>鈺扳攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈺�</para>
+        /// </summary>
+        ConfirmFail = 8,
     }
 
     /// <summary>
diff --git a/HDL_ON/UI/UI0-Stan/Form/AppGestureSecurityForm.cs b/HDL_ON/UI/UI0-Stan/Form/AppGestureSecurityForm.cs
new file mode 100644
index 0000000..e765ba7
--- /dev/null
+++ b/HDL_ON/UI/UI0-Stan/Form/AppGestureSecurityForm.cs
@@ -0,0 +1,172 @@
+锘縰sing HDL_ON.UI.CSS;
+using Shared;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace HDL_ON.Stan
+{
+    /// <summary>
+    /// App鎵嬪娍楠岃瘉鐣岄潰
+    /// </summary>
+    public class AppGestureSecurityForm : EditorCommonForm
+    {
+        #region 鈻� 鍙橀噺澹版槑___________________________
+
+        /// <summary>
+        /// <para>Action浜嬩欢</para>   
+        /// <para>1:瀵嗙爜杈撳叆缁撴潫,杩欎釜鏃跺��,绗簩涓弬鏁颁负杈撳叆鐨勫瘑鐮�</para>
+        /// <para>2:鐐瑰嚮浜嗗簳閮ㄧ殑娑堟伅</para>
+        /// </summary>
+        public Action<int, string> ActionEvent = null;
+        /// <summary>
+        /// 鎵嬪娍鎺т欢
+        /// </summary>
+        private GestureLockView gestureLockView = null;
+        /// <summary>
+        /// 娑堟伅鎺т欢
+        /// </summary>
+        private NormalViewControl btnMsg = null;
+
+        #endregion
+
+        #region 鈻� 鍒濆鍖朹____________________________
+
+        /// <summary>
+        /// 鐢婚潰鏄剧ず(搴曞眰浼氬浐瀹氳皟鐢ㄦ鏂规硶锛屽�熶互瀹屾垚鐢婚潰鍒涘缓)
+        /// </summary>
+        /// <param name="addTopFrame">鏄惁娣诲姞澶撮儴Frame</param>
+        /// <param name="i_title">鏍囬淇℃伅</param>
+        /// <param name="i_bottomMsg">搴曢儴鏄剧ず鐨勪俊鎭</param>
+        public void ShowForm(bool addTopFrame, string i_title, string i_bottomMsg)
+        {
+            //涓嶅厑璁稿乏婊�
+            this.ScrollLeftEnabled = false;
+
+            if (addTopFrame == false)
+            {
+                //娓呯┖澶撮儴鍏ㄩ儴鎺т欢
+                topFrameLayout.RemoveAll();
+                //鐒跺悗璁╄儗鏅壊涓�浣撳寲
+                topFrameLayout.BackgroundColor = bodyFrameLayout.BackgroundColor;
+                topMenuFrameLayout.BackgroundColor = bodyFrameLayout.BackgroundColor;
+            }
+            else
+            {
+                //楠岃瘉鎵嬪娍瀵嗙爜
+                base.SetTitleText(Language.StringByID(StringId.VerifyGesturePassword));
+            }
+
+            //鍒濆鍖栦腑閮ㄤ俊鎭�
+            this.InitMiddleFrame(i_title, i_bottomMsg);
+        }
+
+        /// <summary>
+        /// 鍒濆鍖栦腑閮ㄤ俊鎭�
+        /// </summary>
+        /// <param name="i_title">鏍囬淇℃伅</param>
+        /// <param name="i_bottomMsg">搴曢儴鏄剧ず鐨勪俊鎭</param>
+        private void InitMiddleFrame(string i_title, string i_bottomMsg)
+        {
+            //娓呯┖bodyFrame
+            this.ClearBodyFrame();
+
+            //鏍囬
+            var btnTitle = new NormalViewControl(bodyFrameLayout.Width - HdlControlResourse.XXLeft * 2, Application.GetRealHeight(36), false);
+            btnTitle.Y = Application.GetRealHeight(164) - topFrameLayout.Bottom;
+            btnTitle.Gravity = Gravity.CenterHorizontal;
+            btnTitle.TextAlignment = TextAlignment.Center;
+            btnTitle.IsBold = true;
+            btnTitle.TextColor = CSS_Color.FirstLevelTitleColor;
+            btnTitle.TextSize = CSS_FontSize.EmphasisFontSize_Secondary;
+            btnTitle.Text = i_title;
+            bodyFrameLayout.AddChidren(btnTitle);
+
+            //璇风粯鍒跺浘妗�
+            this.btnMsg = new NormalViewControl(bodyFrameLayout.Width - HdlControlResourse.XXLeft * 2, Application.GetRealHeight(72), false);
+            btnMsg.Y = btnTitle.Bottom;
+            btnMsg.Gravity = Gravity.CenterHorizontal;
+            btnMsg.TextAlignment = TextAlignment.TopCenter;
+            btnMsg.IsBold = true;
+            btnMsg.IsMoreLines = true;
+            btnMsg.SelectedTextColor = CSS_Color.WarningColor;
+            btnMsg.TextID = StringId.PleaseDrawPattern;
+            bodyFrameLayout.AddChidren(btnMsg);
+
+            //鍘熷瀹冧笌btnDrawMsg鐨勯棿闅旀槸14
+            this.gestureLockView = new GestureLockView();
+            gestureLockView.Y = btnMsg.Bottom;
+            gestureLockView.Gravity = Gravity.CenterHorizontal;
+            gestureLockView.Width = Application.GetRealWidth(215);
+            gestureLockView.Height = Application.GetRealWidth(215);
+            gestureLockView.LockViewCorrectColor = CSS_Color.MainColor;//0xFF00FF00,//榛樿鍜屾纭� 鏃舵樉绀虹殑棰滆壊
+            gestureLockView.LockViewErrorColor = 0xFFFF0000; //閿欒鏃� 鏄剧ず鐨勯鑹�
+            gestureLockView.BackgroundColor = CSS_Color.BackgroundColor;
+            bodyFrameLayout.AddChidren(gestureLockView);
+            gestureLockView.SetSolidType(true);
+            //婊戝姩缁撴潫 鍥炶皟瀵嗙爜缁撴灉鍜屽瘑鐮侀暱搴�
+            gestureLockView.OnLockVerifyEvent += (selectNumStr, selectCount) =>
+            {
+                //鑷楠岃瘉瀵嗙爜锛屾彁绀烘纭垨鑰呴敊璇� false涓烘樉绀虹孩鑹查敊璇�, 鑷閫夋嫨璋冪敤鏃舵満
+                this.gestureLockView.showCorrectStatus(false);
+                if (selectCount < 4)
+                {
+                    //鑷冲皯杩炴帴4涓偣锛岃閲嶆柊缁樺埗
+                    btnMsg.Text = Language.StringByID(StringId.DrawingLengthError);
+                    btnMsg.TextColor = CSS_Color.WarningColor;
+                    return;
+                }
+                this.ActionEvent?.Invoke(1, selectNumStr);
+            };
+
+            //搴曢儴娑堟伅
+            if (string.IsNullOrEmpty(i_bottomMsg) == false)
+            {
+                var btnBottomTip = new NormalViewControl(bodyFrameLayout.Width - HdlControlResourse.XXLeft * 2, 20, false);
+                btnBottomTip.Y = Application.GetRealHeight(517) - topFrameLayout.Bottom;
+                btnBottomTip.Gravity = Gravity.CenterHorizontal;
+                btnBottomTip.TextAlignment = TextAlignment.TopCenter;
+                btnBottomTip.TextColor = CSS_Color.MainColor;
+                btnBottomTip.Text = i_bottomMsg;
+                btnBottomTip.Height = btnBottomTip.GetRealRowCountByText() * Application.GetRealHeight(24);
+                btnBottomTip.IsMoreLines = true;
+                bodyFrameLayout.AddChidren(btnBottomTip);
+                btnBottomTip.ButtonClickEvent += (sender, e) =>
+                {
+                    this.ActionEvent?.Invoke(2, null);
+                };
+            }
+        }
+
+        #endregion
+
+        #region 鈻� 鐣岄潰鍏抽棴___________________________
+
+        /// <summary>
+        /// 鐣岄潰鍏抽棴
+        /// </summary>
+        public override void CloseFormBefore()
+        {
+            base.CloseFormBefore();
+
+            this.ActionEvent = null;
+
+        }
+
+        #endregion
+
+        #region 鈻� 涓�鑸柟娉昣__________________________
+
+        /// <summary>
+        /// 鏄剧ず閿欒娑堟伅
+        /// </summary>
+        /// <param name="i_errorMsg">闇�瑕佹樉绀虹殑閿欒娑堟伅</param>
+        public void ShowErrorMsg(string i_errorMsg)
+        {
+            btnMsg.Text = i_errorMsg;
+            btnMsg.TextColor = CSS_Color.WarningColor;
+        }
+
+        #endregion
+    }
+}
diff --git a/HDL_ON/UI/UI0-Stan/Form/AppNumPasswordSecurityForm.cs b/HDL_ON/UI/UI0-Stan/Form/AppNumPasswordSecurityForm.cs
new file mode 100644
index 0000000..f2f5ec2
--- /dev/null
+++ b/HDL_ON/UI/UI0-Stan/Form/AppNumPasswordSecurityForm.cs
@@ -0,0 +1,233 @@
+锘縰sing HDL_ON.UI.CSS;
+using Shared;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace HDL_ON.Stan
+{
+    /// <summary>
+    /// App鏁板瓧瀵嗙爜楠岃瘉鐣岄潰
+    /// </summary>
+    public class AppNumPasswordSecurityForm : EditorCommonForm
+    {
+        #region 鈻� 鍙橀噺澹版槑___________________________
+
+        /// <summary>
+        /// <para>Action浜嬩欢</para>   
+        /// <para>1:瀵嗙爜杈撳叆缁撴潫,杩欎釜鏃跺��,绗簩涓弬鏁颁负杈撳叆鐨勫瘑鐮�</para>
+        /// <para>2:鐐瑰嚮浜嗗簳閮ㄧ殑娑堟伅</para>
+        /// </summary>
+        public Action<int, string> ActionEvent = null;
+        /// <summary>
+        /// 鍥炬爣鎺т欢闆嗗悎
+        /// </summary>
+        private List<IconViewControl> listIconContr = new List<IconViewControl>();
+        /// <summary>
+        /// 娑堟伅鎺т欢
+        /// </summary>
+        private NormalViewControl btnErrorMsg = null;
+        /// <summary>
+        /// 涓�涓珮搴︿负0鐨勮緭鍏ユ
+        /// </summary>
+        private EditText txtPassword = null;
+
+        #endregion
+
+        #region 鈻� 鍒濆鍖朹____________________________
+
+        /// <summary>
+        /// 鐢婚潰鏄剧ず(搴曞眰浼氬浐瀹氳皟鐢ㄦ鏂规硶锛屽�熶互瀹屾垚鐢婚潰鍒涘缓)
+        /// </summary>
+        /// <param name="addTopFrame">鏄惁娣诲姞澶撮儴Frame</param>
+        /// <param name="i_title">鏍囬淇℃伅</param>
+        /// <param name="i_bottomMsg">搴曢儴鏄剧ず鐨勪俊鎭</param>
+        public void ShowForm(bool addTopFrame, string i_title, string i_bottomMsg)
+        {
+            //涓嶅厑璁稿乏婊�
+            this.ScrollLeftEnabled = false;
+
+            if (addTopFrame == false)
+            {
+                //娓呯┖澶撮儴鍏ㄩ儴鎺т欢
+                topFrameLayout.RemoveAll();
+                //鐒跺悗璁╄儗鏅壊涓�浣撳寲
+                topFrameLayout.BackgroundColor = bodyFrameLayout.BackgroundColor;
+                topMenuFrameLayout.BackgroundColor = bodyFrameLayout.BackgroundColor;
+            }
+            else
+            {
+                //楠岃瘉鏁板瓧瀵嗙爜
+                base.SetTitleText(Language.StringByID(StringId.VerifyDigitalPassword));
+            }
+
+            //鍒濆鍖栦腑閮ㄤ俊鎭�
+            this.InitMiddleFrame(i_title, i_bottomMsg);
+        }
+
+        /// <summary>
+        /// 鍒濆鍖栦腑閮ㄤ俊鎭�
+        /// </summary>
+        /// <param name="i_title">鏍囬淇℃伅</param>
+        /// <param name="i_bottomMsg">搴曢儴鏄剧ず鐨勪俊鎭</param>
+        private void InitMiddleFrame(string i_title, string i_bottomMsg)
+        {
+            //娓呯┖bodyFrame
+            this.ClearBodyFrame();
+
+            //鏍囬
+            var btnTitle = new NormalViewControl(bodyFrameLayout.Width - HdlControlResourse.XXLeft * 2, Application.GetRealHeight(42), false);
+            btnTitle.Y = Application.GetRealHeight(228) - topFrameLayout.Bottom;
+            btnTitle.Gravity = Gravity.CenterHorizontal;
+            btnTitle.TextAlignment = TextAlignment.Center;
+            btnTitle.TextColor = CSS_Color.FirstLevelTitleColor;
+            btnTitle.TextSize = CSS_FontSize.SubheadingFontSize;
+            btnTitle.Text = i_title;
+            bodyFrameLayout.AddChidren(btnTitle);
+
+            //绗竴涓渾鍦�
+            var btnIcon1 = this.InitIconControl();
+            btnIcon1.X = Application.GetRealWidth(132);
+            btnIcon1.Y = btnTitle.Bottom + Application.GetRealWidth(10);
+
+            //绗簩涓渾鍦�
+            var btnIcon2 = this.InitIconControl();
+            btnIcon2.X = btnIcon1.Right + Application.GetRealWidth(16);
+            btnIcon2.Y = btnIcon1.Y;
+
+            //绗笁涓渾鍦�
+            var btnIcon3 = this.InitIconControl();
+            btnIcon3.X = btnIcon2.Right + Application.GetRealWidth(16);
+            btnIcon3.Y = btnIcon1.Y;
+
+            //绗洓涓渾鍦�
+            var btnIcon4 = this.InitIconControl();
+            btnIcon4.X = btnIcon3.Right + Application.GetRealWidth(16);
+            btnIcon4.Y = btnIcon1.Y;
+
+            //閿欒娑堟伅
+            this.btnErrorMsg = new NormalViewControl(bodyFrameLayout.Width - HdlControlResourse.XXLeft * 2, Application.GetRealHeight(24), false);
+            btnErrorMsg.Y = btnIcon1.Bottom + Application.GetRealHeight(4);
+            btnErrorMsg.Gravity = Gravity.CenterHorizontal;
+            btnErrorMsg.TextColor = CSS_Color.WarningColor;
+            btnErrorMsg.TextAlignment = TextAlignment.Center;
+            btnErrorMsg.IsMoreLines = true;
+            bodyFrameLayout.AddChidren(btnErrorMsg);
+
+            //搴曢儴娑堟伅
+            if (string.IsNullOrEmpty(i_bottomMsg) == false)
+            {
+                var btnBottomTip = new NormalViewControl(bodyFrameLayout.Width - HdlControlResourse.XXLeft * 2, 20, false);
+                btnBottomTip.Y = Application.GetRealHeight(517) - topFrameLayout.Bottom;
+                btnBottomTip.Gravity = Gravity.CenterHorizontal;
+                btnBottomTip.TextAlignment = TextAlignment.TopCenter;
+                btnBottomTip.TextColor = CSS_Color.MainColor;
+                btnBottomTip.Text = i_bottomMsg;
+                btnBottomTip.Height = btnBottomTip.GetRealRowCountByText() * Application.GetRealHeight(24);
+                btnBottomTip.IsMoreLines = true;
+                bodyFrameLayout.AddChidren(btnBottomTip);
+                btnBottomTip.ButtonClickEvent += (sender, e) =>
+                {
+                    this.ActionEvent?.Invoke(2, null);
+                };
+            }
+
+            //瀵嗙爜杈撳叆妗�
+            this.txtPassword = new EditText();
+            txtPassword.IsNumberKeyboardType = true;
+            txtPassword.Height = 1;
+            bodyFrameLayout.AddChidren(txtPassword);
+            txtPassword.Foucs = true;
+            txtPassword.TextChangeEventHandler = (sender, e) =>
+            {
+                string passwrod = txtPassword.Text.Trim();
+                btnErrorMsg.Text = string.Empty;
+                for (int i = 0; i < 4; i++)
+                {
+                    if (i < passwrod.Length)
+                    { 
+                        //瀹炲績鍥炬爣
+                        this.listIconContr[i].IsSelected = true;
+                    }
+                    else 
+                    { 
+                        //绌哄績鍥炬爣
+                        this.listIconContr[i].IsSelected = false; 
+                    }
+                }
+                if (passwrod.Length == 4)
+                {
+                    //鍏抽棴杈撳叆娉�
+                    Application.HideSoftInput();
+
+                    this.ActionEvent?.Invoke(1, passwrod);
+                }
+            };
+
+            bodyFrameLayout.ButtonClickEvent += (sedner, e) =>
+            {
+                txtPassword.Foucs = true;
+            };
+            btnIcon1.ButtonClickEvent += (sender, e) => { bodyFrameLayout.ButtonClickEvent(null, null); };
+            btnIcon2.ButtonClickEvent += (sender, e) => { bodyFrameLayout.ButtonClickEvent(null, null); };
+            btnIcon3.ButtonClickEvent += (sender, e) => { bodyFrameLayout.ButtonClickEvent(null, null); };
+            btnIcon4.ButtonClickEvent += (sender, e) => { bodyFrameLayout.ButtonClickEvent(null, null); };
+        }
+
+        /// <summary>
+        /// 鍒濆鍖栧浘鏍囨帶浠�
+        /// </summary>
+        /// <returns></returns>
+        private IconViewControl InitIconControl()
+        {
+            var btnIcon1 = new IconViewControl(16);
+            btnIcon1.BorderColor = CSS_Color.FirstLevelTitleColor;
+            btnIcon1.BorderWidth = (uint)Application.GetRealWidth(1);
+            btnIcon1.Radius = (uint)Application.GetRealWidth(8);
+            btnIcon1.BackgroundColor = CSS_Color.MainBackgroundColor;
+            btnIcon1.SelectedBackgroundColor = CSS_Color.FirstLevelTitleColor;
+            bodyFrameLayout.AddChidren(btnIcon1);
+
+            //鍔犲叆缂撳瓨
+            this.listIconContr.Add(btnIcon1);
+
+            return btnIcon1;
+        }
+
+        #endregion
+
+        #region 鈻� 鐣岄潰鍏抽棴___________________________
+
+        /// <summary>
+        /// 鐣岄潰鍏抽棴
+        /// </summary>
+        public override void CloseFormBefore()
+        {
+            base.CloseFormBefore();
+
+            this.ActionEvent = null;
+        }
+
+        #endregion
+
+        #region 鈻� 涓�鑸柟娉昣__________________________
+
+        /// <summary>
+        /// 鏄剧ず閿欒娑堟伅
+        /// </summary>
+        /// <param name="i_errorMsg">闇�瑕佹樉绀虹殑閿欒娑堟伅</param>
+        public void ShowErrorMsg(string i_errorMsg)
+        {
+            this.txtPassword.Text = string.Empty;
+            btnErrorMsg.Text = i_errorMsg;
+            btnErrorMsg.Height = btnErrorMsg.GetRealRowCountByText() * Application.GetRealHeight(24);
+            //鍏ㄩ儴寮勬垚绌哄績鍥炬爣
+            for (int i = 0; i < this.listIconContr.Count; i++)
+            {
+                this.listIconContr[i].IsSelected = false;
+            }
+        }
+
+        #endregion
+    }
+}
diff --git a/HDL_ON/UI/UI0-Stan/Form/Base/CommonFormBase.cs b/HDL_ON/UI/UI0-Stan/Form/Base/CommonFormBase.cs
index 06422ea..11911e0 100644
--- a/HDL_ON/UI/UI0-Stan/Form/Base/CommonFormBase.cs
+++ b/HDL_ON/UI/UI0-Stan/Form/Base/CommonFormBase.cs
@@ -16,7 +16,26 @@
         /// <summary>
         /// 鐢婚潰鐨処D(鑷姩缂栧彿,鍞竴涓婚敭,鍜屽悇椤甸潰骞舵棤浠讳綍閫昏緫鍏崇郴,浣嗘槸瀹冪殑鐢ㄥ澶х潃鍛�)
         /// </summary>
-        public string FormID = string.Empty;
+        public string FormID = string.Empty;
+        /// <summary>
+        /// 宸︽粦浣胯兘
+        /// </summary>
+        private bool m_ScrollLeftEnabled = true;
+        /// <summary>
+        /// 宸︽粦浣胯兘(鐣岄潰鍏抽棴鏃�,搴曞眰浼氳繕鍘�,鏃犻渶鍐嶅鐞�)
+        /// </summary>
+        public bool ScrollLeftEnabled
+        {
+            get { return m_ScrollLeftEnabled; }
+            set
+            {
+                if (MainPage.BasePageView.ScrollEnabled != value)
+                {
+                    MainPage.BasePageView.ScrollEnabled = value;
+                    this.m_ScrollLeftEnabled = value;
+                }
+            }
+        }
 
         #endregion
 
@@ -182,19 +201,6 @@
         #endregion
 
         #region 鈻� 涓�鑸殑鏂规硶_________________________
-
-        /// <summary>
-        /// 鏄剧ず淇℃伅妗�
-        /// </summary>
-        /// <param name="msgType">淇℃伅绫诲瀷</param>
-        /// <param name="msg">淇℃伅</param>
-        /// <param name="action">鍗曞嚮纭鍚庢墽琛岀殑鍥炶皟鍑芥暟</param>
-        /// <param name="buttonText">鎸夐挳鐨勬枃鏈�</param>
-        /// <param name="i_waitTime">绛夊緟鏃堕棿,鍗曚綅涓虹,璁剧疆纭鎸夐挳鍦ㄥ闀挎椂闂村悗鎵嶈兘澶熺偣鍑�</param>
-        public void ShowMassage(ShowMsgType msgType, string msg, Action action = null, string buttonText = null, int i_waitTime = -1)
-        {
-            HdlMessageLogic.Current.ShowMassage(msgType, msg, action, buttonText, i_waitTime);
-        }
 
         /// <summary>
         /// 鍒ゆ柇褰撳墠姝e湪娲诲姩鐨勭晫闈㈡槸鍚︽槸褰撳墠杩欎釜鐣岄潰
@@ -233,6 +239,24 @@
             return value1;
         }
 
+        /// <summary>
+        /// 鑾峰彇鏂囨湰鐨勭湡瀹炲搴�
+        /// </summary>
+        /// <param name="i_text">闇�瑕佽绠楃殑鏂囨湰</param>
+        /// <param name="i_size">瀛椾綋澶у皬</param>
+        /// <param name="i_isBold">鏄惁鏄矖浣�</param>
+        /// <returns></returns>
+        public int GetTextRealWidth(string i_text, int i_size, bool i_isBold = false)
+        {
+            //瀹氫箟涓�涓复鏃剁殑鎺т欢
+            var btnTemp = new ButtonCtrBase();
+            btnTemp.TextSize = i_size;
+            btnTemp.IsBold = i_isBold;
+            btnTemp.Text = i_text;
+
+            return btnTemp.GetRealWidthByText();
+        }
+
         #endregion
 
         #region 鈻� 鍙嶅皠鏂规硶___________________________
diff --git a/HDL_ON/UI/UI0-Stan/Form/Base/EditorCommonForm.cs b/HDL_ON/UI/UI0-Stan/Form/Base/EditorCommonForm.cs
index a592744..85164ed 100644
--- a/HDL_ON/UI/UI0-Stan/Form/Base/EditorCommonForm.cs
+++ b/HDL_ON/UI/UI0-Stan/Form/Base/EditorCommonForm.cs
@@ -124,7 +124,35 @@
             btnTilte.TextSize = UI.CSS.CSS_FontSize.HeadlineFontSize;
             btnTilte.TextColor = UI.CSS.CSS_Color.FirstLevelTitleColor;
             topFrameLayout.AddChidren(btnTilte);
-            topFrameLayout.AddTag("txtTitle", btnTilte);
+            topFrameLayout.AddTag("txtTitle", btnTilte);
+#if DEBUG
+            btnTilte.MouseLongEventHandler += (sender, e) =>
+            {
+
+                var form = new BottomMenuSelectControl(3);
+                form.AddMenu("鍒囨崲涓轰腑鏂�", () =>
+                {
+                    Language.CurrentLanguage = "Chinese";
+                    //娓呴櫎鍏ㄩ儴鎺т欢
+                    this.ClearBodyFrame();
+                    //鎵цShowForm()鏂规硶瀹炵幇閲嶆柊鍔犺浇
+                    this.LoadShowFormMethod(this.m_parameter);
+                });
+                form.AddMenu("鍒囨崲涓鸿嫳鏂�", () =>
+                {
+                    Language.CurrentLanguage = "English";
+                    //娓呴櫎鍏ㄩ儴鎺т欢
+                    this.ClearBodyFrame();
+                    //鎵цShowForm()鏂规硶瀹炵幇閲嶆柊鍔犺浇
+                    this.LoadShowFormMethod(this.m_parameter);
+                });
+                form.AddMenu("鏌ョ湅鏈湴鏂囦欢", () =>
+                {
+                    var form2 = new HideOptionDirectoryListForm();
+                    form2.AddForm();
+                });
+            };
+#endif
         }
 
         #endregion
@@ -290,7 +318,7 @@
         #region 鈻� 娣诲姞鍒楄〃娑堟伅鏄剧ず鎺т欢_______________
 
         /// <summary>
-        /// 娣诲姞鍒楄〃娑堟伅鏄剧ず鎺т欢,杩斿洖鐨勬槸鏈�鍚庝竴涓帶浠剁殑搴曢儴鍧愭爣(娌$湅鎳傝繖涓嚱鏁板墠,璇峰嬁浣跨敤)
+        /// 娣诲姞鍒楄〃娑堟伅鏄剧ず鎺т欢,杩斿洖鐢熸垚鐨勬帶浠�(娌$湅鎳傝繖涓嚱鏁板墠,璇峰嬁浣跨敤,瀹冧笉浼氬府璁$畻鎹㈣)
         /// </summary>
         /// <param name="frameTable">妗屽竷瀹瑰櫒鎺т欢</param>
         /// <param name="i_msg">鏄剧ず鐨勬秷鎭�(鎹㈣璇蜂娇鐢ㄣ�恵0}銆戣繘琛屽垎鍓�)</param>
@@ -305,7 +333,7 @@
         /// </param>
         /// <param name="i_width">鏂囨湰瀹藉害,鐪熷疄鍊�,褰撲负-1鏃�,鍐呴儴鑷姩璁$畻</param>
         /// <returns></returns>
-        public int AddListMsgControls(FrameLayout frameTable, string i_msg, int i_fontSize, uint i_fontColor, int i_height,
+        public List<NormalViewControl> AddListMsgControls(FrameLayout frameTable, string i_msg, int i_fontSize, uint i_fontColor, int i_height,
             int i_yy, TextAlignment alignment = TextAlignment.Center, bool special = false, int i_width = -1)
         {
             var listMsg = i_msg.Split(new string[] { "{0}" }, StringSplitOptions.RemoveEmptyEntries);
@@ -354,7 +382,7 @@
                 }
 
                 //鐗规畩澶勭悊
-                if (special == true && alignment == TextAlignment.Center)
+                if (special == true)
                 {
                     //璁剧疆瀹冪殑鐪熷疄瀹藉害(瀵箂pecial鍙橀噺鏈夌敤)
                     int realWidth = btnMsg.GetRealWidthByText();
@@ -372,7 +400,7 @@
                 i_yy = btnMsg.Bottom + Application.GetRealHeight(4);
             }
             //鐗规畩澶勭悊
-            if (special == true && alignment == TextAlignment.Center)
+            if (special == true)
             {
                 foreach (var contr in listContr)
                 {
@@ -381,7 +409,7 @@
                 }
             }
 
-            return i_yy - Application.GetRealHeight(4);
+            return listContr;
         }
 
         #endregion
@@ -447,7 +475,7 @@
         public void RemoveBackButton()
         {
             //绉婚櫎杩斿洖閿�
-            var back = (NormalViewControl)topFrameLayout.GetTagByKey("btnBack");
+            var back = (PicViewControl)topFrameLayout.GetTagByKey("btnBack");
             topFrameLayout.RemoveTag("btnBack");
             back?.RemoveFromParent();
 
diff --git a/HDL_ON/UI/UI0-Stan/Form/DeviceFunctionCardCommonForm.cs b/HDL_ON/UI/UI0-Stan/Form/DeviceFunctionCardCommonForm.cs
index 1250082..ccceeed 100644
--- a/HDL_ON/UI/UI0-Stan/Form/DeviceFunctionCardCommonForm.cs
+++ b/HDL_ON/UI/UI0-Stan/Form/DeviceFunctionCardCommonForm.cs
@@ -23,6 +23,10 @@
         /// </summary>
         public Action SettionFinishEvent = null;
         /// <summary>
+        /// 宸﹀彸缈婚〉鐨勬帶浠剁殑浜嬩欢
+        /// </summary>
+        public Action<int> PageChangeEvent = null;
+        /// <summary>
         /// 宸﹀彸鏁翠釜缈婚〉鐨勬帶浠�
         /// </summary>
         private PageLayout pageLayout = null;
@@ -51,14 +55,14 @@
         /// </summary>
         public NormalFrameLayout FrameWhiteCentet2 = null;
 
-        /// <summary>
-        /// 鏄惁鏄剧ず鏀惰棌鎸夐挳
+        /// <summary>
+        /// 鏄惁鏄剧ず鏀惰棌鎸夐挳
         /// </summary>
         public bool ShowColltionButton = true;
         #endregion
-
+
         #region 鈻� 鍒濆鍖朹____________________________
-
+
         /// <summary>
         /// 鐢婚潰鏄剧ず(搴曞眰浼氬浐瀹氳皟鐢ㄦ鏂规硶锛屽�熶互瀹屾垚鐢婚潰鍒涘缓)
         /// </summary>
@@ -95,6 +99,7 @@
             {
                 //璁剧疆搴曢儴涓や釜鎸夐挳鐨勭姸鎬�
                 this.SetBottomTwoButtonStatu();
+                this.PageChangeEvent?.Invoke(index);
             };
 
             //鍒濆鍖栫涓�涓储寮曠殑妗屽竷
@@ -140,7 +145,8 @@
             btnRoomName.Text = device.GetRoomListName();
             btnRoomName.Width = btnRoomName.GetRealWidthByText();
             FrameWhiteCentet1.AddChidren(btnRoomName);
-            if (ShowColltionButton)
+            //鎴愬憳娌℃湁鏀惰棌鍔熻兘
+            //if (DB_ResidenceData.Instance.CurrentRegion.isOtherShare == false && ShowColltionButton)
             {
                 var btnCollection = new IconViewControl(40);
                 btnCollection.X = Application.GetRealWidth(273);
@@ -212,6 +218,10 @@
                 this.pageLayout.PageIndex = 0;
                 //璁剧疆搴曢儴涓や釜鎸夐挳鐨勭姸鎬�
                 this.SetBottomTwoButtonStatu();
+                if (this.FrameWhiteCentet2 != null && this.pageLayout.ScrollEnabled == false)
+                {
+                    this.pageLayout.ScrollEnabled = true;
+                }
             };
             this.btnBottomTwo = new NormalViewControl(14, 6, true);
             btnBottomTwo.X = btnBottomOne.Right + Application.GetRealWidth(8);
@@ -224,6 +234,10 @@
                 this.pageLayout.PageIndex = 1;
                 //璁剧疆搴曢儴涓や釜鎸夐挳鐨勭姸鎬�
                 this.SetBottomTwoButtonStatu();
+                if (this.FrameWhiteCentet2 != null && this.pageLayout.ScrollEnabled == false)
+                {
+                    this.pageLayout.ScrollEnabled = true;
+                }
             };
         }
 
@@ -248,7 +262,40 @@
 
         #endregion
 
+        #region 鈻� 鐣岄潰鍏抽棴___________________________
+
+        /// <summary>
+        /// 鐣岄潰鍏抽棴
+        /// </summary>
+        public override void CloseFormBefore()
+        {
+            base.CloseFormBefore();
+
+            this.SettionFinishEvent = null;
+            this.PageChangeEvent = null;
+        }
+
+        #endregion
+
         #region 鈻� 涓�鑸柟娉昣__________________________
+
+        /// <summary>
+        /// 鑾峰彇澶撮儴鍙宠竟鐨勩�愯缃�戝浘鏍囨帶浠�
+        /// </summary>
+        /// <returns></returns>
+        public PicViewControl GetTopSettingIcon()
+        {
+            for (int i = 0; i < topFrameLayout.ChildrenCount; i++)
+            {
+                var myView = topFrameLayout.GetChildren(i);
+                if (myView == null || myView.Name != "btnSetting")
+                {
+                    continue;
+                }
+                return myView as PicViewControl;
+            }
+            return null;
+        }
 
         /// <summary>
         /// 娣诲姞澶撮儴銆愯缃�戠殑鍥炬爣
@@ -257,18 +304,20 @@
         /// <param name="btnHigherDeviceName">涓婁竴绾х晫闈㈢殑璁惧鍚嶅瓧鎺т欢(鍘熸潵on鐨勬鏋跺お鍧�)</param>
         private void AddTopSettingIcon(Button btnHigherDeviceName, Button btnHigherRoom)
         {
-            //濡傛灉鏄垚鍛樻病鏈夊姛鑳�
-            //if (DB_ResidenceData.Instance.CurrentRegion.isOtherShare == true)
-            //{
-            //    return;
-            //}
-            //璁剧疆鍥炬爣
+            //璁剧疆鍥炬爣(闂ㄩ攣鐣岄潰闇�瑕佸�熺敤杩欎釜鍥炬爣鐨刋杞村拰Y杞�,鎵�浠ュ姞杩涙潵)
             var btnSetting = new PicViewControl(28, 28);
             btnSetting.X = Application.GetRealWidth(337);
             btnSetting.Y = Application.GetRealHeight(9);
             btnSetting.UnSelectedImagePath = "Public/FuncInfoSetIcon.png";
+            btnSetting.Name = "btnSetting";
             topFrameLayout.AddChidren(btnSetting);
 
+            //濡傛灉鏄垚鍛樻病鏈夊姛鑳�
+            if (DB_ResidenceData.Instance.CurrentRegion.isOtherShare == true)
+            {
+                btnSetting.Visible = false;
+            }
+
             btnSetting.ButtonClickEvent += (sender, e) =>
             {
                 var infoView = new UI.FunctionBaseInfoSetPage(this.device, () =>
diff --git a/HDL_ON/UI/UI0-Stan/Form/HideOptionSearchAllFile.cs b/HDL_ON/UI/UI0-Stan/Form/HideOptionSearchAllFile.cs
index 32fe362..583ea5e 100644
--- a/HDL_ON/UI/UI0-Stan/Form/HideOptionSearchAllFile.cs
+++ b/HDL_ON/UI/UI0-Stan/Form/HideOptionSearchAllFile.cs
@@ -115,7 +115,7 @@
             bodyFrameLayout.AddChidren(btnButon);
             btnButon.ButtonClickEvent += (sender, e) =>
             {
-                this.ShowMassage(ShowMsgType.Confirm, "鏄惁娓呴櫎璇ユ枃浠跺す", () =>
+                HdlMessageLogic.Current.ShowMassage(ShowMsgType.Confirm, "鏄惁娓呴櫎璇ユ枃浠跺す", () =>
                 {
                     try
                     {
@@ -124,7 +124,7 @@
                     }
                     catch (Exception ex)
                     {
-                        this.ShowMassage(ShowMsgType.Error, "娓呴櫎缂撳瓨鏂囦欢澶瑰紓甯�");
+                        HdlMessageLogic.Current.ShowMassage(ShowMsgType.Error, "娓呴櫎缂撳瓨鏂囦欢澶瑰紓甯�");
                     }
                 });
             };
diff --git a/HDL_ON/UI/UI0-Stan/Logic/HdlCheckLogic.cs b/HDL_ON/UI/UI0-Stan/Logic/HdlCheckLogic.cs
new file mode 100644
index 0000000..fcc986b
--- /dev/null
+++ b/HDL_ON/UI/UI0-Stan/Logic/HdlCheckLogic.cs
@@ -0,0 +1,246 @@
+锘縰sing Shared;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace HDL_ON.Stan
+{
+    /// <summary>
+    /// 鍏遍�氭娴嬮�昏緫
+    /// </summary>
+    public class HdlCheckLogic
+    {
+        #region 鈻� 鍙橀噺澹版槑___________________________
+
+        /// <summary>
+        /// 鍏遍�氭娴嬮�昏緫
+        /// </summary>
+        private static HdlCheckLogic m_Current = null;
+        /// <summary>
+        /// 鍏遍�氭娴嬮�昏緫
+        /// </summary>
+        public static HdlCheckLogic Current
+        {
+            get
+            {
+                if (m_Current == null)
+                {
+                    m_Current = new HdlCheckLogic();
+                }
+                return m_Current;
+            }
+        }
+
+        /// <summary>
+        /// 楠岃瘉璁よ瘉鐨勬鏁�
+        /// </summary>
+        private int checkSecurityCount = 3;
+
+        #endregion
+
+        #region 鈻� 楠岃瘉瑙i攣璁よ瘉_______________________
+
+        /// <summary>
+        /// 楠岃瘉瑙i攣璁よ瘉
+        /// </summary>
+        /// <param name="addTopFrame">楠岃瘉鐣岄潰鏄惁娣诲姞澶撮儴Frame(鍙鎵嬪娍瀵嗙爜鍜屾暟瀛楀瘑鐮佹湁鏁�)</param>
+        /// <param name="successEvent">楠岃瘉鎴愬姛涔嬪悗鐨勫洖璋冨嚱鏁�,澶辫触涓嶄細鍥炶皟(0:娌℃湁璁剧疆鏈夐獙璇� 1:楠岃瘉鎴愬姛锛�</param>
+        /// <param name="loadPageBeforEvent">鍔犺浇鎸囧畾瑙i攣璁よ瘉鐣岄潰涔嬪墠鐨勪簨浠�,0:鍙栨秷褰撳墠楠岃瘉骞跺垏鎹㈠埌鍏朵粬鏂瑰紡,1:鏁板瓧瀵嗙爜,2:鎵嬪娍瀵嗙爜,3:鎸囩汗瀵嗙爜,4:闈㈠ID</param>
+        public void CheckUnlockSecurity(bool addTopFrame, Action<int> successEvent, Action<string> loadPageBeforEvent = null)
+        {
+            //楠岃瘉鎸囩汗鍜岄潰瀹筰d閮戒娇鐢ㄦ寚绾归獙璇�
+            if (UserInfo.Current.appUnlockType.Contains("3") || UserInfo.Current.appUnlockType.Contains("4"))
+            {
+                //鍏堟妸杩欎釜涓滆タ缃┖
+                TouchIDUtils.Instance.OnHDLTouchIDStateBackEvent = null;
+
+                TouchIDUtils.TouchIDSupperType type = TouchIDUtils.getTouchIDSupperType();
+                if (type == TouchIDUtils.TouchIDSupperType.TouchID)
+                {
+                    //閫氱煡浣跨敤鎸囩汗楠岃瘉
+                    loadPageBeforEvent?.Invoke("3");
+
+                    //Touch ID楠岃瘉
+                    TouchIDUtils.Instance.OnHDLTouchIDStateBackEvent += (sender2, e2) =>
+                    {
+                        if (e2 == TouchIDUtils.TouchIDState.Success)
+                        {
+                            //娆℃暟杩樺師
+                            this.checkSecurityCount = 3;
+
+                            //TouchID楠岃瘉鎴愬姛
+                            successEvent?.Invoke(1);
+                            successEvent = null;
+                            loadPageBeforEvent = null;
+                            TouchIDUtils.Instance.OnHDLTouchIDStateBackEvent = null;
+                        }
+                        else if (e2 == TouchIDUtils.TouchIDState.InputPassword)
+                        {
+                            //閫氱煡鍙栨秷浜嗛獙璇�,鍒囨崲涓哄叾浠栭獙璇�
+                            loadPageBeforEvent?.Invoke("0");
+
+                            //浣跨敤瀵嗙爜鎴栬�呮墜鍔垮瘑鐮佽В閿佽璇�
+                            this.CheckUnlockSecurityByPassword(addTopFrame, successEvent, loadPageBeforEvent);
+                        }
+                    };
+                    //鎻愮ず鏁板瓧瀵嗙爜楠岃瘉杩樻槸缁樺埗鎵嬪娍楠岃瘉
+                    string strTitle = this.GetVerificationTitleString();
+
+                    TouchIDUtils.Instance.showTouchIDWithDescribe(strTitle, Language.StringByID(StringId.PleaseVerifyTheFingerprint));
+                }
+                //浠栧叧闂簡鎵嬫満鐨勬寚绾归獙璇�
+                else
+                {
+                    //浣跨敤瀵嗙爜鎴栬�呮墜鍔垮瘑鐮佽В閿佽璇�
+                    this.CheckUnlockSecurityByPassword(addTopFrame, successEvent, loadPageBeforEvent);
+                }
+            }
+            else
+            {
+                //浣跨敤瀵嗙爜鎴栬�呮墜鍔垮瘑鐮佽В閿佽璇�
+                this.CheckUnlockSecurityByPassword(addTopFrame, successEvent, loadPageBeforEvent);
+            }
+        }
+
+        /// <summary>
+        /// 浣跨敤瀵嗙爜鎴栬�呮墜鍔垮瘑鐮佽В閿佽璇�
+        /// </summary>
+        /// <param name="addTopFrame">楠岃瘉鐣岄潰鏄惁娣诲姞澶撮儴Frame(鍙鎵嬪娍瀵嗙爜鍜屾暟瀛楀瘑鐮佹湁鏁�)</param>
+        /// <param name="successEvent">楠岃瘉鎴愬姛涔嬪悗鐨勫洖璋冨嚱鏁�,澶辫触涓嶄細鍥炶皟(0:娌℃湁璁剧疆鏈夐獙璇� 1:楠岃瘉鎴愬姛锛�</param>
+        /// <param name="loadPageBeforEvent">鍔犺浇鎸囧畾瑙i攣璁よ瘉鐣岄潰涔嬪墠鐨勪簨浠�,1:鏁板瓧瀵嗙爜,2:鎵嬪娍瀵嗙爜,3:鎸囩汗瀵嗙爜,4:闈㈠ID</param>
+        private void CheckUnlockSecurityByPassword(bool addTopFrame, Action<int> successEvent, Action<string> loadPageBeforEvent = null)
+        {
+            if (UserInfo.Current.appUnlockType.Contains("1"))
+            {
+                //閫氱煡浣跨敤鏁板瓧瀵嗙爜楠岃瘉
+                loadPageBeforEvent?.Invoke("1");
+
+                //鏄剧ず鏁板瓧瀵嗙爜瑙i攣璁よ瘉鐣岄潰
+                this.ShowAppNumPasswordSecurityForm(addTopFrame, successEvent);
+            }
+            else if (UserInfo.Current.appUnlockType.Contains("2"))
+            {
+                //閫氱煡浣跨敤鎵嬪娍瀵嗙爜楠岃瘉
+                loadPageBeforEvent?.Invoke("2");
+
+                //鏄剧ず鎵嬪娍瀵嗙爜瑙i攣璁よ瘉鐣岄潰
+                this.ShowAppGestureSecurityForm(addTopFrame, successEvent);
+            }
+            else
+            {
+                //娌℃湁璁剧疆鏈夐獙璇�
+                successEvent?.Invoke(0);
+                successEvent = null;
+            }
+        }
+
+        /// <summary>
+        /// 鏄剧ず鏁板瓧瀵嗙爜瑙i攣璁よ瘉鐣岄潰
+        /// </summary>
+        /// <param name="addTopFrame">楠岃瘉鐣岄潰鏄惁娣诲姞澶撮儴Frame(鍙鎵嬪娍瀵嗙爜鍜屾暟瀛楀瘑鐮佹湁鏁�)</param>
+        /// <param name="successEvent">楠岃瘉鎴愬姛涔嬪悗鐨勫洖璋冨嚱鏁�,澶辫触涓嶄細鍥炶皟(0:娌℃湁璁剧疆鏈夐獙璇� 1:楠岃瘉鎴愬姛锛�</param>
+        private void ShowAppNumPasswordSecurityForm(bool addTopFrame, Action<int> successEvent)
+        {
+            var form = new AppNumPasswordSecurityForm();
+            form.AddForm(addTopFrame, Language.StringByID(StringId.PlsEntryPassword), string.Empty);
+            form.ActionEvent += (div, password) =>
+            {
+                //瀵嗙爜杈撳叆缁撴潫
+                if (div == 1)
+                {
+                    //瀵嗙爜姝g‘
+                    if (UserInfo.Current.appUnlockPasswrod == password)
+                    {
+                        //娆℃暟杩樺師
+                        this.checkSecurityCount = 3;
+
+                        form.CloseForm();
+                        //鍥炶皟
+                        successEvent?.Invoke(1);
+                        successEvent = null;
+                    }
+                    else
+                    {
+                        this.checkSecurityCount--;
+                        if (this.checkSecurityCount == 0)
+                        {
+                            //绠$悊鍛樿韩浠介獙璇佸け璐�,璇烽噸鏂扮櫥褰�
+                            HdlMessageLogic.Current.ShowMassage(ShowMsgType.Tip, Language.StringByID(StringId.CheckAdminFailAndLoginAgain));
+                            HDLCommon.Current.Logout();
+
+                            this.checkSecurityCount = 3;
+                            return;
+                        }
+                        //楠岃瘉澶辫触锛屽瘑鐮侀敊璇�.
+                        form.ShowErrorMsg(Language.StringByID(StringId.AuthenticationFailedPasswordError));
+                    }
+                }
+            };
+        }
+
+        /// <summary>
+        /// 鏄剧ず鎵嬪娍瀵嗙爜瑙i攣璁よ瘉鐣岄潰
+        /// </summary>
+        /// <param name="addTopFrame">楠岃瘉鐣岄潰鏄惁娣诲姞澶撮儴Frame(鍙鎵嬪娍瀵嗙爜鍜屾暟瀛楀瘑鐮佹湁鏁�)</param>
+        /// <param name="successEvent">楠岃瘉鎴愬姛涔嬪悗鐨勫洖璋冨嚱鏁�,澶辫触涓嶄細鍥炶皟(0:娌℃湁璁剧疆鏈夐獙璇� 1:楠岃瘉鎴愬姛锛�</param>
+        private void ShowAppGestureSecurityForm(bool addTopFrame, Action<int> successEvent)
+        {
+            var form = new AppGestureSecurityForm();
+            form.AddForm(addTopFrame, Language.StringByID(StringId.VerifyGesturePassword), string.Empty);
+            form.SetTitleText(string.Empty);
+            form.ActionEvent += (div, password) =>
+            {
+                //瀵嗙爜杈撳叆缁撴潫
+                if (div == 1)
+                {
+                    //瀵嗙爜姝g‘
+                    if (UserInfo.Current.appUnlockPasswrod == password)
+                    {
+                        //娆℃暟杩樺師
+                        this.checkSecurityCount = 3;
+
+                        form.CloseForm();
+                        //鍥炶皟
+                        successEvent?.Invoke(1);
+                        successEvent = null;
+                    }
+                    else
+                    {
+                        this.checkSecurityCount--;
+                        if (this.checkSecurityCount == 0)
+                        {
+                            //绠$悊鍛樿韩浠介獙璇佸け璐�,璇烽噸鏂扮櫥褰�
+                            HdlMessageLogic.Current.ShowMassage(ShowMsgType.Tip, Language.StringByID(StringId.CheckAdminFailAndLoginAgain));
+                            HDLCommon.Current.Logout();
+
+                            this.checkSecurityCount = 3;
+                            return;
+                        }
+
+                        //楠岃瘉澶辫触锛屽瘑鐮侀敊璇�.
+                        form.ShowErrorMsg(Language.StringByID(StringId.AuthenticationFailedPasswordError));
+                    }
+                }
+            };
+        }
+
+        /// <summary>
+        /// 鍒ゆ柇鏄惁鏁板瓧楠岃瘉銆佸惁鍒欑粯鍒舵墜鍔块獙璇�
+        /// </summary>
+        /// <returns></returns>
+        private string GetVerificationTitleString()
+        {
+            //浼樺厛浣跨敤瀵嗙爜楠岃瘉,瀵嗙爜楠岃瘉鍜屾墜鍔块獙璇佷笉鍏卞瓨
+            if (UserInfo.Current.appUnlockType.Contains("1") == true)
+            {
+                return Language.StringByID(StringId.PasswordVerification);
+            }
+            else
+            {
+                return Language.StringByID(StringId.GestureVerification);
+            }
+        }
+
+        #endregion
+    }
+}
diff --git a/HDL_ON/UI/UI0-Stan/Logic/HdlCommonLogic.cs b/HDL_ON/UI/UI0-Stan/Logic/HdlCommonLogic.cs
new file mode 100644
index 0000000..2f2f53a
--- /dev/null
+++ b/HDL_ON/UI/UI0-Stan/Logic/HdlCommonLogic.cs
@@ -0,0 +1,433 @@
+锘縰sing Shared;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace HDL_ON.Stan
+{
+    /// <summary>
+    /// 涓�鑸殑鍏遍�氶�昏緫鏂规硶
+    /// </summary>
+    public class HdlCommonLogic
+    {
+        #region 鈻� 鍙橀噺澹版槑___________________________
+
+        /// <summary>
+        /// 鐣岄潰鐩稿叧鐨勯�昏緫
+        /// </summary>
+        private static HdlCommonLogic m_Current;
+        /// <summary>
+        /// 鐣岄潰鐩稿叧鐨勯�昏緫
+        /// </summary>
+        public static HdlCommonLogic Current
+        {
+            get
+            {
+                if (m_Current == null)
+                {
+                    m_Current = new HdlCommonLogic();
+                }
+                return m_Current;
+            }
+        }
+
+        #endregion
+
+        #region 鈻� 16杩涘埗杞寲_________________________
+
+        /// <summary>
+        /// 灏�16杩涘埗鐨勬枃鏈炕璇戜负姝e父鏂囨湰
+        /// </summary>
+        /// <param name="hexText">16杩涘埗鐨勬枃鏈�</param>
+        /// <param name="count">浠ュ灏戜釜瀛楄妭涓轰竴缁�</param>
+        /// <returns></returns>
+        public string TranslateHexadecimalIntoText(string hexText, int count = 2)
+        {
+            string textValue = string.Empty;
+            while (hexText.Length > 0)
+            {
+                string temp = hexText.Substring(0, count);
+                hexText = hexText.Substring(count);
+                int value = Convert.ToInt32(temp, 16);
+                textValue += ((char)value).ToString();
+            }
+            return textValue;
+        }
+
+        /// <summary>
+        /// 灏嗘枃鏈炕璇戜负16杩涘埗鐨勬枃鏈�
+        /// </summary>
+        /// <param name="text">鎸囧畾鏂囨湰</param>
+        /// <returns></returns>
+        public string TranslateTextIntoHexadecimal(string text)
+        {
+            string textValue = string.Empty;
+            foreach (char c in text)
+            {
+                int value = Convert.ToInt32(c);
+                textValue += Convert.ToString(value, 16);
+            }
+            return textValue;
+        }
+
+        #endregion
+
+        #region 鈻� 鍔犲瘑鍜岃В瀵哶________________________
+
+        /// <summary>
+        /// 鍔犲瘑瀵嗙爜
+        /// </summary>
+        /// <param name="keys"></param>
+        /// <param name="strPsw"></param>
+        /// <returns></returns>
+        public string EncryptPassword(string keys, string strPsw)
+        {
+            try
+            {
+                if (string.IsNullOrEmpty(strPsw) == true)
+                {
+                    return strPsw;
+                }
+                var des = new System.Security.Cryptography.DESCryptoServiceProvider();
+                byte[] inputByteArray = Encoding.Default.GetBytes(strPsw);
+                des.Key = ASCIIEncoding.ASCII.GetBytes(keys);
+                des.IV = ASCIIEncoding.ASCII.GetBytes(keys);
+                var ms = new System.IO.MemoryStream();
+                var cs = new System.Security.Cryptography.CryptoStream(ms, des.CreateEncryptor(), System.Security.Cryptography.CryptoStreamMode.Write);
+                cs.Write(inputByteArray, 0, inputByteArray.Length);
+                cs.FlushFinalBlock();
+                StringBuilder ret = new StringBuilder();
+                foreach (byte b in ms.ToArray())
+                {
+                    ret.AppendFormat("{0:X2}", b);
+                }
+                return ret.ToString().ToLower();
+            }
+            catch { return strPsw; }
+        }
+
+        /// <summary>
+        /// 瑙e瘑瀵嗙爜
+        /// </summary>
+        /// <param name="strPsw"></param>
+        /// <returns></returns>
+        public string DecryptPassword(string keys, string strPsw)
+        {
+            try
+            {
+                if (strPsw == string.Empty)
+                {
+                    return strPsw;
+                }
+                var des = new System.Security.Cryptography.DESCryptoServiceProvider();
+
+                byte[] inputByteArray = new byte[strPsw.Length / 2];
+                for (int x = 0; x < strPsw.Length / 2; x++)
+                {
+                    int i = (Convert.ToInt32(strPsw.Substring(x * 2, 2), 16));
+                    inputByteArray[x] = (byte)i;
+                }
+
+                des.Key = ASCIIEncoding.ASCII.GetBytes(keys);
+                des.IV = ASCIIEncoding.ASCII.GetBytes(keys);
+                var ms = new System.IO.MemoryStream();
+                var cs = new System.Security.Cryptography.CryptoStream(ms, des.CreateDecryptor(), System.Security.Cryptography.CryptoStreamMode.Write);
+                cs.Write(inputByteArray, 0, inputByteArray.Length);
+                cs.FlushFinalBlock();
+
+                StringBuilder ret = new StringBuilder();
+
+                return System.Text.Encoding.Default.GetString(ms.ToArray());
+            }
+            catch { return strPsw; }
+        }
+        #endregion
+
+        #region 鈻� 鏃堕棿杞崲___________________________
+
+        /// <summary>
+        /// 灏唘tc鏃堕棿绫诲瀷鐨勫瓧绗︿覆(杩欑鏍煎紡:2019-11-11T11:31:01),杞崲涓烘湰鍦版椂闂�
+        /// </summary>
+        /// <param name="utcTimeText">utc鏃堕棿,杩欑鏍煎紡:2019-11-11T11:31:01</param>
+        /// <returns></returns>
+        public DateTime ConvertUtcTimeToLocalTime(string utcTimeText)
+        {
+            var utcTime = Convert.ToDateTime(utcTimeText);
+            return TimeZoneInfo.ConvertTimeFromUtc(utcTime, TimeZoneInfo.Local);
+        }
+
+        /// <summary>
+        /// 灏唘tc鏃堕棿绫诲瀷鐨勫瓧绗︿覆(杩欑鏍煎紡:1597302318861,13浣嶆暟),杞崲涓烘湰鍦版椂闂�
+        /// </summary>
+        /// <param name="utcTimeText">utc鏃堕棿,杩欑鏍煎紡:1597302318861,13浣嶆暟</param>
+        /// <returns></returns>
+        public DateTime ConvertUtcTimeToLocalTime2(string utcTimeText)
+        {
+            DateTime dtStart = new DateTime(1970, 1, 1);
+            long lTime = long.Parse(utcTimeText + "0000");
+            TimeSpan toNow = new TimeSpan(lTime);
+            DateTime utcTime = dtStart.Add(toNow);
+
+            return TimeZoneInfo.ConvertTimeFromUtc(utcTime, TimeZoneInfo.Local);
+        }
+
+        /// <summary>
+        /// 鍗曠函鐨勫皢鏃堕棿绫诲瀷鐨勫瓧绗︿覆(杩欑鏍煎紡:1597302318861,13浣嶆暟),杞崲鏃堕棿绫诲瀷
+        /// </summary>
+        /// <param name="timeText"></param>
+        /// <returns></returns>
+        public DateTime ConvertTextToTime(string timeText)
+        {
+            DateTime dtStart = new DateTime(1970, 1, 1);
+            long lTime = long.Parse(timeText + "0000");
+            TimeSpan toNow = new TimeSpan(lTime);
+            return dtStart.Add(toNow);
+        }
+
+        /// <summary>
+        /// 杞崲涓烘棩鏈熸枃鏈�(鑰冭檻涓嫳鏂囷紝杩斿洖鏍煎紡:2021骞�9鏈�1鏃�(涓枃鎯呭喌)  Sept 1,2021(鑻辨枃))
+        /// </summary>
+        /// <param name="i_month">鏈�</param>
+        /// <param name="i_day">鏃�</param>
+        /// <param name="i_year">骞�(鍙互鐪佺暐)</param>
+        /// <returns></returns>
+        public string ConvertDayText(int i_month, int i_day, int i_year = -1)
+        {
+            //涓枃
+            if (Language.CurrentLanguage == "Chinese")
+            {
+                string txt = i_month + Language.StringByID(StringId.month) + i_day + Language.StringByID(StringId.day);
+                if (i_year != -1)
+                {
+                    txt = i_year + Language.StringByID(StringId.Years) + txt;
+                }
+                return txt;
+            }
+            //鑻辨枃
+            string yearText = i_year == -1 ? string.Empty : "," + i_year.ToString();
+            if (i_month == 1) { return "Jan " + i_day + yearText; }
+            if (i_month == 2) { return "Feb " + i_day + yearText; }
+            if (i_month == 3) { return "Mar " + i_day + yearText; }
+            if (i_month == 4) { return "Apr " + i_day + yearText; }
+            if (i_month == 5) { return "May " + i_day + yearText; }
+            if (i_month == 6) { return "Jun " + i_day + yearText; }
+            if (i_month == 7) { return "Jul " + i_day + yearText; }
+            if (i_month == 8) { return "Aug " + i_day + yearText; }
+            if (i_month == 9) { return "Sept " + i_day + yearText; }
+            if (i_month == 10) { return "Oct " + i_day + yearText; }
+            if (i_month == 11) { return "Nov " + i_day + yearText; }
+            if (i_month == 12) { return "Dec " + i_day + yearText; }
+            return string.Empty;
+        }
+
+        /// <summary>
+        /// 鑾峰彇鏃堕棿鐨勭炕璇戞枃鏈�
+        /// </summary>
+        /// <param name="second"></param>
+        /// <param name="hourText">灏忔椂鐨勬枃鏈�</param>
+        /// <param name="minuText">鍒嗙殑鏂囨湰</param>
+        /// <param name="secondText">绉掔殑鏂囨湰</param>
+        /// <returns></returns>
+        public string GetTimeString(int second, string hourText, string minuText, string secondText)
+        {
+            if (second == 0) { return string.Empty; }
+
+            string timeStr = string.Empty;
+            int hour = second / 3600;
+            int minu = second % 3600 / 60;
+            int sec = second % 60;
+
+            //涓枃
+            if (Language.CurrentLanguage == "Chinese")
+            {
+                if (hour > 0) { timeStr += hour + hourText; }
+                if (minu > 0) { timeStr += minu + minuText; }
+                if (sec > 0) { timeStr += sec + secondText; }
+            }
+            //鑻辨枃
+            else
+            {
+                if (hour > 0) { timeStr += hour + "h"; }
+                if (minu > 0) { timeStr += minu + "min"; }
+                if (sec > 0) { timeStr += sec + "s"; }
+            }
+            return timeStr;
+        }
+
+        /// <summary>
+        /// 鑾峰彇鏈堢殑绠�鍐欐枃鏈�(鑰冭檻涓嫳鏂囷紝杩斿洖鏍煎紡:鏈�(涓枃鎯呭喌)  Sept.(鑻辨枃))
+        /// </summary>
+        /// <param name="i_month">鏈�</param>
+        /// <returns></returns>
+        public string GetMonthShortText(int i_month)
+        {
+            //涓枃
+            if (Language.CurrentLanguage == "Chinese")
+            {
+                return Language.StringByID(StringId.month);
+            }
+            //鑻辨枃
+            if (i_month == 1) { return "Jan."; }
+            if (i_month == 2) { return "Feb."; }
+            if (i_month == 3) { return "Mar."; }
+            if (i_month == 4) { return "Apr."; }
+            if (i_month == 5) { return "May."; }
+            if (i_month == 6) { return "Jun."; }
+            if (i_month == 7) { return "Jul."; }
+            if (i_month == 8) { return "Aug."; }
+            if (i_month == 9) { return "Sept."; }
+            if (i_month == 10) { return "Oct."; }
+            if (i_month == 11) { return "Nov."; }
+            if (i_month == 12) { return "Dec."; }
+            return string.Empty;
+        }
+
+        /// <summary>
+        /// 鑾峰彇灏忔椂鐨勬枃鏈�(涓嫳鏂�)
+        /// </summary>
+        /// <returns></returns>
+        public string GetHourText()
+        {
+            //涓枃
+            if (Language.CurrentLanguage == "Chinese")
+            {
+                //灏忔椂
+                return Language.StringByID(StringId.h);
+            }
+            //鑻辨枃
+            return "h";
+        }
+
+        /// <summary>
+        /// 鑾峰彇鍒嗛挓鐨勬枃鏈�(涓嫳鏂�)
+        /// </summary>
+        /// <returns></returns>
+        public string GetMinuteText()
+        {
+            //涓枃
+            if (Language.CurrentLanguage == "Chinese")
+            {
+                //鍒�
+                return Language.StringByID(StringId.m);
+            }
+            //鑻辨枃
+            return "min";
+        }
+
+        /// <summary>
+        /// 鑾峰彇鍒嗛挓鐨勬枃鏈�(涓嫳鏂�)
+        /// </summary>
+        /// <returns></returns>
+        public string GetSecondText()
+        {
+            //涓枃
+            if (Language.CurrentLanguage == "Chinese")
+            {
+                //绉�
+                return Language.StringByID(StringId.s);
+            }
+            //鑻辨枃
+            return "s";
+        }
+
+        #endregion
+
+        #region 鈻� 绯荤粺鍓垏鏉縚________________________
+
+        /// <summary>
+        /// 灏嗘枃鏈鍒跺埌绯荤粺鐨勫壀鍒囨澘
+        /// </summary>
+        /// <param name="i_text">闇�瑕佸鍒惰繘鍘荤殑涓滆タ</param>
+        /// <param name="i_msg">澶嶅埗鎴愬姛涔嬪悗,鏄剧ず鐨勬枃鏈�,鍙互涓簄ull</param>
+        public void SetTextToShearPlate(string i_text, string i_msg)
+        {
+#if __Android__
+            var cm = (Android.Content.ClipboardManager)Application.Activity.GetSystemService(Android.Content.Context.ClipboardService);
+            // 灏嗘枃鏈唴瀹规斁鍒扮郴缁熷壀璐存澘閲屻��
+            cm.Text = i_text;
+#endif
+            //鏄剧ずtip娑堟伅
+            HdlMessageLogic.Current.ShowMassage(ShowMsgType.Tip, i_msg);
+        }
+
+        #endregion
+
+        #region 鈻� 涓�鑸柟娉昣__________________________
+
+        /// <summary>
+        /// 妫�娴嬫棩鏈熸槸鍚﹀悎娉�
+        /// </summary>
+        /// <param name="i_year">骞�</param>
+        /// <param name="i_month">鏈�</param>
+        /// <param name="i_day">鏃�</param>
+        /// <returns></returns>
+        public bool CheckDateIsRight(int i_year, int i_month, int i_day)
+        {
+            if (i_year <= 0) { i_year = DateTime.Now.Year; }
+
+            int two = DateTime.IsLeapYear(i_year) == true ? 29 : 28;
+            int[] arry = new int[] { 31, two, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
+
+            if (i_month < 1 || i_month > 12) { return false; }
+
+            return i_day <= arry[i_month - 1];
+        }
+
+        /// <summary>
+        /// 妫�娴嬫槸鍚︽槸绾暟瀛�
+        /// </summary>
+        /// <param name="i_text"></param>
+        /// <returns></returns>
+        public bool CheckIsNumber(string i_text)
+        {
+            foreach (var c in i_text)
+            {
+                if (char.IsNumber(c) == false)
+                {
+                    return false;
+                }
+            }
+            return true;
+        }
+
+        /// <summary>
+        /// 浠庝竴鍫嗘枃瀛椾腑,鑾峰彇杩欎竴鍫嗘枃瀛楅噷闈㈡暟瀛楀瓧绗︿覆鐨勬渶闀块暱搴�
+        /// </summary>
+        /// <param name="listText"></param>
+        /// <returns></returns>
+        public int GetNumberMaxLength(List<string> listText)
+        {
+            int maxLength = 0;
+            foreach (var text in listText)
+            {
+                string value = string.Empty;
+                foreach (var c in text)
+                {
+                    if (char.IsNumber(c) == true)
+                    {
+                        //鏁板瓧
+                        value += c.ToString();
+                        continue;
+                    }
+                    else if (value != string.Empty)
+                    {
+                        //鍒ゆ柇鏁板瓧闀垮害
+                        if (maxLength <= value.Length)
+                        {
+                            maxLength = value.Length;
+                        }
+                        value = string.Empty;
+                    }
+                }
+                //鍒ゆ柇鏁板瓧闀垮害
+                if (maxLength <= value.Length)
+                {
+                    maxLength = value.Length;
+                }
+            }
+            return maxLength;
+        }
+
+        #endregion
+    }
+}
diff --git a/HDL_ON/UI/UI0-Stan/Logic/HdlFormLogic.cs b/HDL_ON/UI/UI0-Stan/Logic/HdlFormLogic.cs
index 8b74ab9..df687cc 100644
--- a/HDL_ON/UI/UI0-Stan/Logic/HdlFormLogic.cs
+++ b/HDL_ON/UI/UI0-Stan/Logic/HdlFormLogic.cs
@@ -115,6 +115,8 @@
                 try
                 {
                     var Myform = actionForm as EditorCommonForm;
+                    //閲嶇疆宸︽粦浣胯兘
+                    Myform.ScrollLeftEnabled = Myform.ScrollLeftEnabled;
                     //瑙﹀彂鐣岄潰鍐嶆婵�娲荤殑浜嬩欢
                     Myform.FormActionAgainEvent();
                 }
diff --git a/HDL_ON/UI/UI0-Stan/Logic/HdlMessageLogic.cs b/HDL_ON/UI/UI0-Stan/Logic/HdlMessageLogic.cs
index 4cbc8da..615bb1d 100644
--- a/HDL_ON/UI/UI0-Stan/Logic/HdlMessageLogic.cs
+++ b/HDL_ON/UI/UI0-Stan/Logic/HdlMessageLogic.cs
@@ -41,8 +41,9 @@
         /// <param name="msg">淇℃伅</param>
         /// <param name="action">鍗曞嚮纭鍚庢墽琛岀殑鍥炶皟鍑芥暟</param>
         /// <param name="buttonText">鎸夐挳鐨勬枃鏈�</param>
+        /// <param name="buttonCacel">鍙栨秷鎸夐挳鐨勬枃鏈�</param>
         /// <param name="i_waitTime">绛夊緟鏃堕棿,鍗曚綅涓虹,璁剧疆纭鎸夐挳鍦ㄥ闀挎椂闂村悗鎵嶈兘澶熺偣鍑�</param>
-        public void ShowMassage(ShowMsgType msgType, string msg, Action action = null, string buttonText = null, int i_waitTime = -1)
+        public void ShowMassage(ShowMsgType msgType, string msg, Action action = null, string buttonText = null, string buttonCacel = null, int i_waitTime = -1)
         {
             //绌哄璞℃椂锛屼笉鏄剧ず
             if (string.IsNullOrEmpty(msg))
@@ -51,7 +52,7 @@
             }
             HdlThreadLogic.Current.RunMain(() =>
             {
-                var alert = new ShowMsgControl(msgType, msg, buttonText, null, i_waitTime);
+                var alert = new ShowMsgControl(msgType, msg, buttonText, buttonCacel, i_waitTime);
                 if (action != null)
                 {
                     alert.ConfirmClickEvent += () =>
diff --git a/HDL_ON/UI/UI0-Stan/Resourse/HdlControlResourse.cs b/HDL_ON/UI/UI0-Stan/Resourse/HdlControlResourse.cs
index 0efd68c..ceca9b1 100644
--- a/HDL_ON/UI/UI0-Stan/Resourse/HdlControlResourse.cs
+++ b/HDL_ON/UI/UI0-Stan/Resourse/HdlControlResourse.cs
@@ -30,7 +30,7 @@
         /// </summary>
         public static int XXLeft = Application.GetRealWidth(16);
         /// <summary>
-        /// VerticalScrolViewLayout鎺т欢涓�琛岀殑楂樺害(鍙拡瀵规爣鍑嗗瀷鍒楄〃寮忕敾闈�)
+        /// VerticalScrolViewLayout鎺т欢涓�琛岀殑楂樺害(鍙拡瀵规爣鍑嗗瀷鍒楄〃寮忕敾闈�,,44楂樺害)
         /// </summary>
         public static int ListViewRowHeight = Application.GetRealHeight(44);
         /// <summary>
diff --git a/HDL_ON/UI/UI1-Login/ForgetPasswordPage.cs b/HDL_ON/UI/UI1-Login/ForgetPasswordPage.cs
index b63cf28..9dfb338 100644
--- a/HDL_ON/UI/UI1-Login/ForgetPasswordPage.cs
+++ b/HDL_ON/UI/UI1-Login/ForgetPasswordPage.cs
@@ -350,7 +350,6 @@
                 TextSize = CSS_FontSize.TextFontSize,
                 PlaceholderTextColor = CSS_Color.PromptingColor1,
                 PlaceholderText = Language.StringByID(StringId.PlsEntryVerificationCode),
-                IsNumberKeyboardType = true
             };
             verificationCodeView.AddChidren(etVerificationCode);
 
diff --git a/HDL_ON/UI/UI1-Login/LoginPage.cs b/HDL_ON/UI/UI1-Login/LoginPage.cs
index 344424f..bf0e438 100644
--- a/HDL_ON/UI/UI1-Login/LoginPage.cs
+++ b/HDL_ON/UI/UI1-Login/LoginPage.cs
@@ -199,8 +199,7 @@
                 //return;
                 if (b)
                 {
-                    etAccount.Text = "15626203746";//娴嬭瘯鏈嶅姟鍣�
-                    //etAccount.Text = "13375012446";//娴嬭瘯鏈嶅姟鍣�
+                    etAccount.Text = "13375012446";//娴嬭瘯鏈嶅姟鍣�
                     //etAccount.Text = "1033326940@qq.com";
                     //etAccount.Text = "18022428438";//wjc
                     //etAccount.Text = "13602944661";//kx
@@ -216,8 +215,7 @@
                     //etAccount.Text = "BB01010101@evoyo.com";//鍙瀵硅
                     //etAccount.Text = "13168123446";
                     //etAccount.Text = "13676202754";//宸存灄鏈嶅姟鍣�
-                    //etAccount.Text = "13602944661";//kx
-                    etAccount.Text = "551775569@qq.com";//wcf
+                    etAccount.Text = "13602944661";//kx
                     //etAccount.Text = "18666455392";//13375012446//13602944661//tzy 18778381374
                     //etAccount.Text = "15971583093";// gs//tzy 274116637@qq.com//Sumant.Bhatia@havells.com 鍥藉鏈嶅姟鍣ㄦ祴璇�
                 }
diff --git a/HDL_ON/UI/UI1-Login/RegisterPage.cs b/HDL_ON/UI/UI1-Login/RegisterPage.cs
index e6225f9..0885191 100644
--- a/HDL_ON/UI/UI1-Login/RegisterPage.cs
+++ b/HDL_ON/UI/UI1-Login/RegisterPage.cs
@@ -607,7 +607,6 @@
                 TextSize = CSS_FontSize.TextFontSize,
                 PlaceholderTextColor = CSS_Color.PromptingColor1,
                 PlaceholderText = Language.StringByID(StringId.PlsEntryVerificationCode),
-                IsNumberKeyboardType = true
             };
             verificationCodeView.AddChidren(etVerificationCode);
 
diff --git a/HDL_ON/UI/UI2/1-HomePage/HomePage.cs b/HDL_ON/UI/UI2/1-HomePage/HomePage.cs
index 0d4f5f3..871b7a1 100644
--- a/HDL_ON/UI/UI2/1-HomePage/HomePage.cs
+++ b/HDL_ON/UI/UI2/1-HomePage/HomePage.cs
@@ -35,21 +35,13 @@
         /// </summary>
         FrameLayout environmentalView;
         /// <summary>
-        /// 褰撳墠娓╁害淇℃伅-瀹ゅ
+        /// 褰撳墠娓╁害淇℃伅
         /// </summary>
         TextButton btnTempValues;
         /// <summary>
-        /// 褰撳墠婀垮害淇℃伅-瀹ゅ
+        /// 褰撳墠婀垮害淇℃伅
         /// </summary>
         TextButton btnHumidityValues;
-        /// <summary>
-        /// 褰撳墠娓╁害淇℃伅-瀹ゅ唴
-        /// </summary>
-        TextButton btnIndoorTempValues;
-        /// <summary>
-        /// 褰撳墠婀垮害淇℃伅-瀹ゅ唴
-        /// </summary>
-        TextButton btnIndoorHumiValues;
         /// <summary>
         /// 褰撳墠pm2.5鐘舵��
         /// </summary>
@@ -192,27 +184,9 @@
                 };
                 topView.AddChidren(environmentalView);
                 #region 鐜鏁版嵁
-                var tempSensorList = FunctionList.List.GetEnvirSensorsList().FindAll((obj) => obj.spk == SPK.SensorTemperature);
-                var humiSensorList = FunctionList.List.GetEnvirSensorsList().FindAll((obj) => obj.spk == SPK.SensorHumidity);
-
-                var btnEnvirValuesTitle = new Button() {
-                    X = Application.GetRealWidth(12),
-                    Gravity = Gravity.CenterVertical,
-                    TextColor = CSS_Color.MainBackgroundColor,
-                    TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
-                    TextID = StringId.InOutdoor,
-                    TextAlignment = TextAlignment.CenterLeft,
-                };
-                if (tempSensorList.Count > 0 || humiSensorList.Count > 0)
-                {
-                    btnEnvirValuesTitle.Width = Application.GetRealWidth(8)+ btnEnvirValuesTitle.GetTextWidth();
-                }
-                environmentalView.AddChidren(btnEnvirValuesTitle);
-
                 Button btnTempIcon = new Button()
                 {
-                    X = btnEnvirValuesTitle.Right,//+ Application.GetRealWidth(4),
-                    //X = Application.GetRealWidth(12),
+                    X = Application.GetRealWidth(12),
                     Gravity = Gravity.CenterVertical,
                     Width = Application.GetMinRealAverage(16),
                     Height = Application.GetMinRealAverage(16),
@@ -223,44 +197,18 @@
                 btnTempValues = new TextButton()
                 {
                     X = btnTempIcon.Right + Application.GetRealWidth(4),
+                    Width = Application.GetRealWidth(30),
                     Gravity = Gravity.CenterVertical,
                     TextColor = CSS_Color.MainBackgroundColor,
                     TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
                     Text = MainPage.cityInfo.temperature + "掳",
                     TextAlignment = TextAlignment.CenterLeft,
                 };
-                btnTempValues.Width = btnTempValues.GetTextWidth();
                 environmentalView.AddChidren(btnTempValues);
-
-                btnIndoorTempValues = new TextButton()
-                {
-                    X = btnTempValues.Right,
-                    Gravity = Gravity.CenterVertical,
-                    TextColor = CSS_Color.MainBackgroundColor,
-                    TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
-                    TextAlignment = TextAlignment.CenterLeft,
-                    Text = "/--掳",
-                };
-                if (tempSensorList.Count > 0)
-                {
-                    double tempTotalValues = 0;
-                    foreach (var temp in tempSensorList)
-                    {
-                        double tempValue = 0;
-                        double.TryParse(temp.GetAttrState(FunctionAttributeKey.Value), out tempValue);
-                        tempTotalValues += tempValue;
-                    }
-                    if (tempTotalValues > 0)
-                    {
-                        btnIndoorTempValues.Text = "/" + tempTotalValues + "掳";
-                    }
-                    btnIndoorTempValues.Width = btnIndoorTempValues.GetTextWidth();
-                }
-                environmentalView.AddChidren(btnIndoorTempValues);
 
                 Button btnHumidityIcon = new Button()
                 {
-                    X = btnIndoorTempValues.Right + Application.GetRealWidth(8),
+                    X = btnTempValues.Right + Application.GetRealWidth(2),
                     Gravity = Gravity.CenterVertical,
                     Width = Application.GetMinRealAverage(16),
                     Height = Application.GetMinRealAverage(16),
@@ -271,44 +219,18 @@
                 btnHumidityValues = new TextButton()
                 {
                     X = btnHumidityIcon.Right + Application.GetRealWidth(4),
+                    Width = Application.GetRealWidth(30),
                     Gravity = Gravity.CenterVertical,
                     TextColor = CSS_Color.MainBackgroundColor,
                     TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
                     Text = MainPage.cityInfo.humidity + "%",
                     TextAlignment = TextAlignment.CenterLeft,
                 };
-                btnHumidityValues.Width = btnHumidityValues.GetTextWidth();
                 environmentalView.AddChidren(btnHumidityValues);
-
-                btnIndoorHumiValues = new TextButton()
-                {
-                    X = btnHumidityValues.Right,
-                    Gravity = Gravity.CenterVertical,
-                    TextColor = CSS_Color.MainBackgroundColor,
-                    TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
-                    TextAlignment = TextAlignment.CenterLeft,
-                    Text = "/--%",
-                };
-                if (tempSensorList.Count > 0)
-                {
-                    double humiTotalValues = 0;
-                    foreach (var humi in humiSensorList)
-                    {
-                        double humiValue = 0;
-                        double.TryParse(humi.GetAttrState(FunctionAttributeKey.Value), out humiValue);
-                        humiTotalValues += humiValue;
-                    }
-                    if (humiTotalValues > 0)
-                    {
-                        btnIndoorHumiValues.Text = "/" + humiTotalValues + "%";
-                    }
-                    btnIndoorHumiValues.Width = btnIndoorHumiValues.GetTextWidth();
-                }
-                environmentalView.AddChidren(btnIndoorHumiValues);
 
                 Button btnPm25Icon = new Button()
                 {
-                    X = btnIndoorHumiValues.Right + Application.GetRealWidth(4),
+                    X = btnHumidityValues.Right + Application.GetRealWidth(2),
                     Gravity = Gravity.CenterVertical,
                     Width = Application.GetMinRealAverage(16),
                     Height = Application.GetMinRealAverage(16),
@@ -319,13 +241,13 @@
                 btnPm25Values = new TextButton()
                 {
                     X = btnPm25Icon.Right + Application.GetRealWidth(4),
+                    Width = Application.GetRealWidth(130),
                     Gravity = Gravity.CenterVertical,
                     TextColor = CSS_Color.MainBackgroundColor,
                     TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
                     Text = MainPage.cityInfo.pm25,
                     TextAlignment = TextAlignment.CenterLeft,
                 };
-                btnPm25Values.Width = btnPm25Values.GetTextWidth();
                 environmentalView.AddChidren(btnPm25Values);
                 #endregion
 
@@ -461,86 +383,7 @@
 
 
 #if DEBUG
-            FunctionList.List.Functions.Add(new Function() { spk = SPK.PjtIr, name = "娴嬭瘯鎶曞奖浠�",
-                                        attributes = new List<FunctionAttributes>() {
-                                            new FunctionAttributes(){ key = "on_off",curValue= "on",state = "on" },
-                                            new FunctionAttributes(){ key = "computer",value = new List<string>(){"鐢佃剳" } },
-                                            new FunctionAttributes(){ key = "video",value = new List<string>(){"瑙嗛" } },
-                                            new FunctionAttributes(){ key = "source",value = new List<string>(){"淇″彿婧�" } },
-                                            new FunctionAttributes(){ key = "zoom+",value = new List<string>(){"鍙樼劍+" } },
-                                            new FunctionAttributes(){ key = "zoom-",value = new List<string>(){"鍙樼劍-" } },
-                                            new FunctionAttributes(){ key = "page+",value = new List<string>(){"鐢婚潰+" } },
-                                            new FunctionAttributes(){ key = "page-",value = new List<string>(){"鐢婚潰-" } },
-                                            new FunctionAttributes(){ key = "menu",value = new List<string>(){"鑿滃崟" } },
-                                            new FunctionAttributes(){ key = "ok",value = new List<string>(){"纭" } },
-                                            new FunctionAttributes(){ key = "up",value = new List<string>(){"涓�" } },
-                                            new FunctionAttributes(){ key = "left",value = new List<string>(){"宸�" } },
-                                            new FunctionAttributes(){ key = "right",value = new List<string>(){"鍙�" } },
-                                            new FunctionAttributes(){ key = "down",value = new List<string>(){"涓�" } },
-                                            new FunctionAttributes(){ key = "exit",value = new List<string>(){"閫�鍑�" } },
-                                            new FunctionAttributes(){ key = "volume+",value = new List<string>(){"闊抽噺+" } },
-                                            new FunctionAttributes(){ key = "volume-",value = new List<string>(){"闊抽噺-" } },
-                                            new FunctionAttributes(){ key = "mute",value = new List<string>(){"闈欓煶" } },
-                                            new FunctionAttributes(){ key = "auto",value = new List<string>(){"鑷姩" } },
-                                            new FunctionAttributes(){ key = "pause",value = new List<string>(){"鏆傚仠" } },
-                                        }
-            });
-
-            FunctionList.List.Functions.Add(new Function()
-            {
-                spk = SPK.StbIr,
-                name = "娴嬭瘯鏈洪《鐩�",
-                attributes = new List<FunctionAttributes>() {
-                                            new FunctionAttributes(){ key = "on_off",curValue= "on",state = "on" },
-                                            new FunctionAttributes(){ key = "computer",value = new List<string>(){"鐢佃剳" } },
-                                            new FunctionAttributes(){ key = "video",value = new List<string>(){"瑙嗛" } },
-                                            new FunctionAttributes(){ key = "source",value = new List<string>(){"淇″彿婧�" } },
-                                            new FunctionAttributes(){ key = "zoom+",value = new List<string>(){"鍙樼劍+" } },
-                                            new FunctionAttributes(){ key = "zoom-",value = new List<string>(){"鍙樼劍-" } },
-                                            new FunctionAttributes(){ key = "page+",value = new List<string>(){"鐢婚潰+" } },
-                                            new FunctionAttributes(){ key = "page-",value = new List<string>(){"鐢婚潰-" } },
-                                            new FunctionAttributes(){ key = "menu",value = new List<string>(){"鑿滃崟" } },
-                                            new FunctionAttributes(){ key = "ok",value = new List<string>(){"纭" } },
-                                            new FunctionAttributes(){ key = "up",value = new List<string>(){"涓�" } },
-                                            new FunctionAttributes(){ key = "left",value = new List<string>(){"宸�" } },
-                                            new FunctionAttributes(){ key = "right",value = new List<string>(){"鍙�" } },
-                                            new FunctionAttributes(){ key = "down",value = new List<string>(){"涓�" } },
-                                            new FunctionAttributes(){ key = "exit",value = new List<string>(){"閫�鍑�" } },
-                                            new FunctionAttributes(){ key = "volume+",value = new List<string>(){"闊抽噺+" } },
-                                            new FunctionAttributes(){ key = "volume-",value = new List<string>(){"闊抽噺-" } },
-                                            new FunctionAttributes(){ key = "mute",value = new List<string>(){"闈欓煶" } },
-                                            new FunctionAttributes(){ key = "auto",value = new List<string>(){"鑷姩" } },
-                                            new FunctionAttributes(){ key = "pause",value = new List<string>(){"鏆傚仠" } },
-                                        }
-            });
-
-            FunctionList.List.Functions.Add(new Function()
-            {
-                spk = SPK.TvIr,
-                name = "娴嬭瘯鐢佃",
-                attributes = new List<FunctionAttributes>() {
-                                            new FunctionAttributes(){ key = "on_off",curValue= "on",state = "on" },
-                                            new FunctionAttributes(){ key = "computer",value = new List<string>(){"鐢佃剳" } },
-                                            new FunctionAttributes(){ key = "video",value = new List<string>(){"瑙嗛" } },
-                                            new FunctionAttributes(){ key = "source",value = new List<string>(){"淇″彿婧�" } },
-                                            new FunctionAttributes(){ key = "zoom+",value = new List<string>(){"鍙樼劍+" } },
-                                            new FunctionAttributes(){ key = "zoom-",value = new List<string>(){"鍙樼劍-" } },
-                                            new FunctionAttributes(){ key = "page+",value = new List<string>(){"鐢婚潰+" } },
-                                            new FunctionAttributes(){ key = "page-",value = new List<string>(){"鐢婚潰-" } },
-                                            new FunctionAttributes(){ key = "menu",value = new List<string>(){"鑿滃崟" } },
-                                            new FunctionAttributes(){ key = "ok",value = new List<string>(){"纭" } },
-                                            new FunctionAttributes(){ key = "up",value = new List<string>(){"涓�" } },
-                                            new FunctionAttributes(){ key = "left",value = new List<string>(){"宸�" } },
-                                            new FunctionAttributes(){ key = "right",value = new List<string>(){"鍙�" } },
-                                            new FunctionAttributes(){ key = "down",value = new List<string>(){"涓�" } },
-                                            new FunctionAttributes(){ key = "exit",value = new List<string>(){"閫�鍑�" } },
-                                            new FunctionAttributes(){ key = "volume+",value = new List<string>(){"闊抽噺+" } },
-                                            new FunctionAttributes(){ key = "volume-",value = new List<string>(){"闊抽噺-" } },
-                                            new FunctionAttributes(){ key = "mute",value = new List<string>(){"闈欓煶" } },
-                                            new FunctionAttributes(){ key = "auto",value = new List<string>(){"鑷姩" } },
-                                            new FunctionAttributes(){ key = "pause",value = new List<string>(){"鏆傚仠" } },
-                                        }
-            });
+            //FunctionList.List.Functions.Add(new Function() { spk = SPK.ClothesHanger, name = "娴嬭瘯鍑夐湼", attributes = new List<FunctionAttributes> { new FunctionAttributes { key = FunctionAttributeKey.HotDry } ,new FunctionAttributes { key = FunctionAttributeKey.HotDryTime } ,new FunctionAttributes { key = FunctionAttributeKey.HotDryTimeLeft } } });
 #endif
 
         }
@@ -840,11 +683,6 @@
                 };
                 view.AddChidren(btnIcon);
 
-
-                btnIcon.UnSelectedImagePath = $"FunctionIcon/Icon/HomeIcon/{function.IconName}_blue.png";
-                btnIcon.SelectedImagePath = $"FunctionIcon/Icon/HomeIcon/{function.IconName}_white.png";
-
-
                 Button btnName;
                 btnName = new Button()
                 {
@@ -946,17 +784,14 @@
                     LoadEvent_ControlCurtain(function, btnCurtainClose, btnCurtainOpen);
                 }
 
-                else if (function.spk == SPK.ElectricTV || function.spk == SPK.TvIr || function.spk == SPK.TvXmIr
-                    || function.spk == SPK.StbIr || function.spk == SPK.PjtIr)
+                else if (function.spk == SPK.ElectricTV || function.spk == SPK.TvIr)
                 {
-                    //btnIcon.UnSelectedImagePath = $"FunctionIcon/Icon/HomeIcon/{function.IconName}_blue.png";
-                    //btnIcon.SelectedImagePath = $"FunctionIcon/Icon/HomeIcon/{function.IconName}_white.png";
-
+                    btnIcon.UnSelectedImagePath = "FunctionIcon/Electrical/TVIcon.png";
                     Button btnPower;
                     btnPower = new Button()
                     {
                         X = Application.GetRealWidth(131),
-                        Y = Application.GetRealHeight(80),
+                        Y = Application.GetRealHeight(70),
                         Width = Application.GetRealWidth(32),
                         Height = Application.GetRealWidth(32),
                         UnSelectedImagePath = "Public/PowerClose.png",
@@ -1136,7 +971,7 @@
                 btnIcon.MouseUpEventHandler = skipControlPageEvent;
                 btnState.MouseUpEventHandler = skipControlPageEvent;
                 //鐢佃涓嶉渶瑕佹洿鏂扮姸鎬�
-                if(function.spk!= SPK.ElectricTV && function.spk != SPK.StbIr && function.spk != SPK.PjtIr)
+                if(function.spk!= SPK.ElectricTV)
                 {
                     UpdataFunctionStates(function);
                 }
diff --git a/HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs b/HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs
index 1883317..f4596b8 100644
--- a/HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs
+++ b/HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs
@@ -21,59 +21,6 @@
                 bodyView.btnPm25Values.Text = MainPage.cityInfo.pm25 == null ? "--" : MainPage.cityInfo.pm25;
             }
         }
-
-        /// <summary>
-        /// 鏇存柊瀹ゅ唴浼犳劅鍣ㄦ暟鎹�-婀垮害
-        /// </summary>
-        public static void LoadEvent_RefreshEnvirIndoorHumi()
-        {
-            Application.RunOnMainThread(() =>
-            {
-                if (bodyView != null)
-                {
-                    var humiSensorList = FunctionList.List.GetEnvirSensorsList().FindAll((obj) => obj.spk == SPK.SensorHumidity);
-                    double humiTotalValues = 0;
-                    foreach (var temp in humiSensorList)
-                    {
-                        double humiValue = 0;
-                        double.TryParse(temp.GetAttrState(FunctionAttributeKey.Value), out humiValue);
-                        humiTotalValues += humiValue;
-                    }
-                    if (humiTotalValues > 0)
-                    {
-                        bodyView.btnIndoorHumiValues.Text = "/" + humiTotalValues + "%";
-                    }
-                    bodyView.btnIndoorHumiValues.Width = bodyView.btnIndoorHumiValues.GetTextWidth();
-                }
-            });
-        }
-
-        /// <summary>
-        /// 鏇存柊瀹ゅ唴浼犳劅鍣ㄦ暟鎹�-鏅氱偣
-        /// </summary>
-        public static void LoadEvent_RefreshEnvirIndoorTemp()
-        { 
-            Application.RunOnMainThread(() =>
-            {
-                if (bodyView != null)
-                {
-                    var tempSensorList = FunctionList.List.GetEnvirSensorsList().FindAll((obj) => obj.spk == SPK.SensorTemperature);
-                    double tempTotalValues = 0;
-                    foreach (var temp in tempSensorList)
-                    {
-                        double tempValue = 0;
-                        double.TryParse(temp.GetAttrState(FunctionAttributeKey.Value), out tempValue);
-                        tempTotalValues += tempValue;
-                    }
-                    if (tempTotalValues > 0)
-                    {
-                        bodyView.btnIndoorTempValues.Text = "/" + tempTotalValues + "掳";
-                    }
-                    bodyView.btnIndoorTempValues.Width = bodyView.btnIndoorTempValues.GetTextWidth();
-                }
-            });
-        }
-
         /// <summary>
         /// 鏇存柊鍔熻兘鍒楄〃涓婚〉
         /// </summary>
diff --git a/HDL_ON/UI/UI2/2-Classification/ClassificationPage.cs b/HDL_ON/UI/UI2/2-Classification/ClassificationPage.cs
index 2f3552a..544fcaa 100644
--- a/HDL_ON/UI/UI2/2-Classification/ClassificationPage.cs
+++ b/HDL_ON/UI/UI2/2-Classification/ClassificationPage.cs
@@ -475,9 +475,10 @@
                         break;
                     case ShowFunction.EnergyMonitoring:
                         #region 鑳芥簮
-                        functionCount = FunctionList.List.GetEnergyList().Count;
-                        functionOnCount = FunctionList.List.GetEnergyList().FindAll((obj) => obj.trait_on_off.curValue.ToString() == "on").Count;
+                        functionCount = FunctionList.List.GetElectricals().Count;
+                        functionOnCount = FunctionList.List.GetElectricals().FindAll((obj) => obj.trait_on_off.curValue.ToString() == "on").Count;
                         #endregion
+                        //functionCount = 1;
                         break;
                     case ShowFunction.Environmental:
                         #region 鐜鏁版嵁
@@ -562,12 +563,11 @@
                 {
                     X = Application.GetRealWidth(16),
                     Y = Application.GetRealHeight(14),
-                    Width = Application.GetRealWidth(140),
+                    Width = Application.GetRealWidth(120),
                     Height = Application.GetRealHeight(24),
                     TextColor = CSS_Color.FirstLevelTitleColor,
                     TextSize = CSS_FontSize.TextFontSize,
                     TextAlignment = TextAlignment.CenterLeft,
-                    IsMoreLines = true,
                 };
                 functionView.AddChidren(btnName);
 
diff --git a/HDL_ON/UI/UI2/2-Classification/FunctionControlZoneBLL.cs b/HDL_ON/UI/UI2/2-Classification/FunctionControlZoneBLL.cs
index 6f234d8..4791f34 100644
--- a/HDL_ON/UI/UI2/2-Classification/FunctionControlZoneBLL.cs
+++ b/HDL_ON/UI/UI2/2-Classification/FunctionControlZoneBLL.cs
@@ -81,7 +81,7 @@
             {
                 btnSwitch.IsSelected = !btnSwitch.IsSelected;
 
-                if(function.spk == SPK.IrLearn || function.spk == SPK.TvIr || function.spk == SPK.TvXmIr)
+                if(function.spk == SPK.IrLearn || function.spk == SPK.TvIr)
                 {
                     new System.Threading.Thread(() => {
                         System.Threading.Thread.Sleep(2000);
diff --git a/HDL_ON/UI/UI2/2-Classification/RoomPage.cs b/HDL_ON/UI/UI2/2-Classification/RoomPage.cs
index 9b05c24..64eaf63 100644
--- a/HDL_ON/UI/UI2/2-Classification/RoomPage.cs
+++ b/HDL_ON/UI/UI2/2-Classification/RoomPage.cs
@@ -77,7 +77,7 @@
 
             foreach (var function in room.GetRoomFunctions(false))
             {
-                if (function.Spk_Prefix == FunctionCategory.Sensor || function.spk == SPK.ElectricEnergy)
+                if (function.Spk_Prefix == FunctionCategory.Sensor)
                 {
                     continue;
                 }
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/AddInputType.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/AddInputType.cs
index 3f835d8..41b3be7 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/AddInputType.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/AddInputType.cs
@@ -1,5 +1,4 @@
 锘縰sing System;
-using System.Collections.Generic;
 using Shared;
 namespace HDL_ON.UI.UI2.Intelligence.Automation
 {
@@ -28,7 +27,7 @@
                 BackgroundColor = CSS.CSS_Color.viewMiddle,
             };
             this.AddChidren(viewLayout);
-            #region 鏃堕棿  鍔熻兘 瀹ゅ鍙樺寲
+            #region 鏃堕棿  鍔熻兘
             //鏃堕棿
             LogicView.SelectTypeView timeView = new LogicView.SelectTypeView();
             timeView.btnText.TextID = StringId.time;
@@ -59,9 +58,9 @@
             {
                 viewLayout.AddChidren(shiwaiView.FLayoutView());
             }
-           
             #endregion
 
+
             #region  鎵�鏈夌偣鍑讳簨浠�
             //鏃堕棿
             timeView.btnClick.MouseUpEventHandler += (sen, e) => {
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/AddTarget.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/AddTarget.cs
index d185e19..d3bb907 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/AddTarget.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/AddTarget.cs
@@ -46,7 +46,7 @@
             LogicView.SelectTypeView delayView = new LogicView.SelectTypeView();
             delayView.frameLayout.Y = sceneView.frameLayout.Bottom;
             delayView.btnText.TextID = StringId.delayLogic;
-            delayView.btnIcon.UnSelectedImagePath = "LogicIcon/time.png";
+            delayView.btnIcon.UnSelectedImagePath = "LogicIcon/delayed.png";
             //viewLayout.AddChidren(delayView.FLayoutView());
             #endregion
 
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/ConditionDeviceFunList.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/ConditionDeviceFunList.cs
index 5e24b64..47f2d15 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/ConditionDeviceFunList.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/ConditionDeviceFunList.cs
@@ -175,21 +175,6 @@
                         }
                     }
                     break;
-                case SPK.SenesorMegahealth:
-                    {
-                        LogicView.FunTypeView view = new LogicView.FunTypeView();
-                        view.btnText.TextID = StringId.mubiaozhuangtai ;//鐩爣鐘舵��
-                        fLayout.AddChidren(view.FLayoutView());
-                        view.btnClick.MouseUpEventHandler += (sender, e) =>
-                        {
-                            DeviceView(device, view.btnState, StringId.wuren, StringId.diedao);
-                        };
-                        if (edit)
-                        {
-                            GetEditState(device, index, view.btnState, null, null, null);
-                        }
-                    }
-                    break;
 
             }
             #region  淇濆瓨
@@ -283,11 +268,6 @@
                             keyVlaue = "status";
                         }
                         break;
-                    case SPK.SenesorMegahealth:
-                        {
-                            keyVlaue = "action_state";
-                        }
-                        break;
 
                 }
                 switch (intValue)
@@ -314,21 +294,12 @@
                             value = "off";
                         }
                         break;
-                    case StringId.youren:
-                        {
+                    case StringId.youren: {
                             value = "true";
                         }
                         break;
-                    case StringId.wuren:
-                        {
-                            if (device.spk == SPK.SenesorMegahealth)
-                            {
-                                value = "uninhabited";
-                            }
-                            else
-                            {
-                                value = "false";
-                            }
+                    case StringId.wuren: {
+                            value = "false";
                         }
                         break;
                     case StringId.kaiqi:
@@ -341,19 +312,14 @@
                             value = "close";
                         }
                         break;
-                    case StringId.zaixian:
-                        {
+                    case StringId.zaixian: {
                             keyVlaue = "dismantle";
                             value = "true";
-                        }; break;
+                        };break;
                     case StringId.buzaixian:
                         {
                             keyVlaue = "dismantle";
                             value = "false";
-                        }; break;
-                    case StringId.diedao:
-                        {
-                            value = "fall";
                         }; break;
                 }
                 //鏄剧ず鏂囨湰
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/InpOrOutLogicMethod.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/InpOrOutLogicMethod.cs
index c888bc1..0dede77 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/InpOrOutLogicMethod.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/InpOrOutLogicMethod.cs
@@ -297,22 +297,6 @@
                                         inputView.btnState.Text = str;
                                     }
                                     break;
-                                case SPK.SenesorMegahealth:
-                                    {
-                                        foreach (var dic in dicList)
-                                        {
-                                            string value = dic["value"];
-                                            if (value == "fall")
-                                            {
-                                                inputView.btnState.Text = Language.StringByID(StringId.diedao);
-                                            }
-                                            else
-                                            {
-                                                inputView.btnState.Text = Language.StringByID(StringId.wuren);
-                                            }
-                                        }
-                                    }
-                                    break;
 
                             }
                         }
@@ -942,7 +926,7 @@
                         break;
                     case "3":
                         {
-                            targetView.btnIcon.UnSelectedImagePath = "LogicIcon/time.png";
+                            targetView.btnIcon.UnSelectedImagePath = "LogicIcon/delayed.png";
                             foreach (var dic in dicList)
                             {
                                 string value = dic["value"];
@@ -1384,22 +1368,6 @@
 
                             }
 
-                        }
-                    }
-                    break;
-                case SPK.SenesorMegahealth:
-                    {
-                        foreach (var dic in dicList)
-                        {
-                            string value = dic["value"];
-                            if (value == "fall")
-                            {
-                                button1.Text = Language.StringByID(StringId.diedao);
-                            }
-                            else
-                            {
-                                button1.Text = Language.StringByID(StringId.wuren);
-                            }
                         }
                     }
                     break;
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/LogicMethod.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/LogicMethod.cs
index d40c649..461b095 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/LogicMethod.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/LogicMethod.cs
@@ -308,7 +308,6 @@
                 case SPK.SensorPir:
                 case SPK.SensorDoorWindow:
                 case SPK.SensoruUtrasonic:
-                case SPK.SenesorMegahealth:
                     {
                         strPath = "LogicIcon/sensor.png";
                     }
@@ -326,21 +325,13 @@
         {
             List<string> deviceStrTypeList = new List<string>();
             deviceStrTypeList.Clear();
-            var lightjosn = deviceList.Find((device) =>
-            device.spk == SPK.LightSwitch
-            || device.spk == SPK.LightDimming
-            || device.spk == SPK.LightCCT
-            || device.spk == SPK.LightRGB
-            || device.spk == SPK.LightRGBW);
+            var lightjosn = deviceList.Find((device) => device.spk == SPK.LightSwitch || device.spk == SPK.LightDimming || device.spk == SPK.LightCCT || device.spk == SPK.LightRGB || device.spk == SPK.LightRGBW);
             if (lightjosn != null)
             {
                 deviceStrTypeList.Add(Language.StringByID(StringId.Lights));
             }
 
-            var curtainjosn = deviceList.Find((device) =>
-            device.spk == SPK.CurtainSwitch
-            || device.spk == SPK.CurtainTrietex
-            || device.spk == SPK.CurtainRoller);
+            var curtainjosn = deviceList.Find((device) => device.spk == SPK.CurtainSwitch || device.spk == SPK.CurtainTrietex || device.spk == SPK.CurtainRoller);
             if (curtainjosn != null)
             {
                 deviceStrTypeList.Add(Language.StringByID(StringId.Curtain));
@@ -366,7 +357,6 @@
             || device.spk == SPK.SensorPir
             || device.spk == SPK.SensorDoorWindow
             || device.spk == SPK.SensoruUtrasonic
-            || device.spk == SPK.SenesorMegahealth
             );
             if (sensor != null)
             {
@@ -416,8 +406,7 @@
                 functionTypeList.Add(SPK.SensorPir);
                 functionTypeList.Add(SPK.SensorDoorWindow);
                 functionTypeList.Add(SPK.SensoruUtrasonic);
-                functionTypeList.Add(SPK.SenesorMegahealth);
-
+              
             }
             return functionTypeList;
 
@@ -452,7 +441,6 @@
                         deviceTypeList.Add(SPK.SensorPir);
                         deviceTypeList.Add(SPK.SensorDoorWindow);
                         deviceTypeList.Add(SPK.SensoruUtrasonic);
-                        deviceTypeList.Add(SPK.SenesorMegahealth);
                     }
                     break;
                 case target_if:
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/LogicView/TimeView.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/LogicView/TimeView.cs
index a36dc65..e199ffc 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/LogicView/TimeView.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/LogicView/TimeView.cs
@@ -203,7 +203,7 @@
         {
             //鍒濆鍖栧垪琛�
             var hList = new List<string>();
-            for (int i = 0; i < 24; i++)
+            for (int i = 0; i < 23; i++)
             {
                 if (i < 10)
                 {
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/MainView.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/MainView.cs
index ae546df..a1d1ecd 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/MainView.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/MainView.cs
@@ -279,6 +279,7 @@
                     var jay = jArray[a];
                     //鏁版嵁杩斿簭鍒楀寲涓篖ogic瀵硅薄
                     var str = Newtonsoft.Json.JsonConvert.SerializeObject(jay);
+                    Console.WriteLine("鑾峰彇閫昏緫==="+str);
                     var logic = Newtonsoft.Json.JsonConvert.DeserializeObject<Logic>(str);
                     if (logic != null)
                     {
@@ -287,39 +288,38 @@
                         if (if_logic == null)
                         {
 
-                            Logic newlogic = new Logic();
-                            newlogic.name = logic.name;
-                            newlogic.userLogicId = logic.userLogicId;
-                            newlogic.sid = logic.sid;
-                            newlogic.relation = logic.relation;
-                            newlogic.enable = logic.enable;
-                            newlogic.cycle = logic.cycle;
-                            for (int i = 0; i < logic.input.Count; i++)
-                            {
-                                if (logic.input[i] == null || string.IsNullOrEmpty(logic.input[i].condition_type))
-                                {
-                                    //闃叉璋冭瘯杞欢涔变紶涓滆タ涓婃潵;
-                                    //闃叉鏈夌┖瀵硅薄锛�
-                                    //姝e父鎯呭喌涓嬩笉浼氬嚭鐜扮殑鐜拌薄锛�
-                                    continue;
-                                }
-                                newlogic.input.Add(logic.input[i]);
-                            }
-                            for (int i = 0; i < logic.output.Count; i++)
-                            {
-                                if (logic.output[i] == null || string.IsNullOrEmpty(logic.output[i].target_type))
-                                {
-                                    //闃叉璋冭瘯杞欢涔变紶涓滆タ涓婃潵;
-                                    //闃叉鏈夌┖瀵硅薄锛�
-                                    //姝e父鎯呭喌涓嬩笉浼氳鐜拌薄锛�
-                                    continue;
-                                }
-                                newlogic.output.Add(logic.output[i]);
-                            }
-                            newlogic.noticeConfig = logic.noticeConfig;
-                            newlogic.pushConfigs = logic.pushConfigs;
+                            //Logic newlogic = new Logic();
+                            //newlogic.name = logic.name;
+                            //newlogic.userLogicId = logic.userLogicId;
+                            //newlogic.sid = logic.sid;
+                            //newlogic.relation = logic.relation;
+                            //newlogic.enable = logic.enable;
+                            //newlogic.cycle = logic.cycle;
+                            //for (int i = 0; i < logic.input.Count; i++)
+                            //{
+                            //    if (logic.input[i] == null || string.IsNullOrEmpty(logic.input[i].condition_type))
+                            //    {
+                            //        //闃叉璋冭瘯杞欢涔变紶涓滆タ涓婃潵;
+                            //        //闃叉鏈夌┖瀵硅薄锛�
+                            //        //姝e父鎯呭喌涓嬩笉浼氬嚭鐜扮殑鐜拌薄锛�
+                            //        continue;
+                            //    }
+                            //    newlogic.input.Add(logic.input[i]);
+                            //}
+                            //for (int i = 0; i < logic.output.Count; i++)
+                            //{
+                            //    if (logic.output[i] == null || string.IsNullOrEmpty(logic.output[i].target_type))
+                            //    {
+                            //        //闃叉璋冭瘯杞欢涔变紶涓滆タ涓婃潵;
+                            //        //闃叉鏈夌┖瀵硅薄锛�
+                            //        //姝e父鎯呭喌涓嬩笉浼氳鐜拌薄锛�
+                            //        continue;
+                            //    }
+                            //    newlogic.output.Add(logic.output[i]);
+                            //}
+                        
                             //娣诲姞閫昏緫
-                            Logic.LogicList.Add(newlogic);
+                            Logic.LogicList.Add(logic);
                         }
                     }
 
@@ -511,7 +511,7 @@
             }
         }
         /// <summary>
-        /// 鍒ゆ柇缃戝叧绫诲瀷(0:bus缃戝叧锛�1:A鍗忚缃戝叧)
+        /// 鍒ゆ柇缃戝叧绫诲瀷
         /// </summary>
         /// <returns></returns>
         public static bool IsGatewayType
@@ -522,7 +522,11 @@
                 {
                     return true;
                 }
-                return false;
+                else
+                {
+                    return false;
+
+                }
             }
         }
     }
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/Send.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/Send.cs
index acc205b..65ad0e0 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/Send.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/Send.cs
@@ -164,13 +164,14 @@
                 logicIfon.Add("pushConfigs", pushConfigsArray);
                 logicjArray.Add(logicIfon);
                 var jObject = new JObject { { "homeId", LogicMethod.HomeId }, { "logics", logicjArray } };
-                responsePackNew = RequestServerhomeId(jObject, NewAPI.API_POST_Logic_Add,5);
+                responsePackNew = RequestServerhomeId(jObject, NewAPI.API_POST_Logic_Add);
                 //濡傛灉鏄痶oken杩囨湡鍒欏埛鏂皌oken
                 if (responsePackNew.Code == StateCode.TOKEN_EXPIRED)
                 {
                     RefreshToken();
                     AddLogic(logic);
                 }
+                Console.WriteLine("娣诲姞閫昏緫===" + logicjArray);
             }
             catch (Exception e)
             {
@@ -274,7 +275,7 @@
 
                 logicjArray.Add(logicIfon);
                 var jObject = new JObject { { "homeId", LogicMethod.HomeId }, { "logics", logicjArray } };
-                responsePackNew = RequestServerhomeId(jObject, NewAPI.API_POST_Logic_Update,5);
+                responsePackNew = RequestServerhomeId(jObject, NewAPI.API_POST_Logic_Update);
                 //濡傛灉鏄痶oken杩囨湡鍒欏埛鏂皌oken
                 if (responsePackNew.Code == StateCode.TOKEN_EXPIRED)
                 {
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/Weather.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/Weather.cs
index e0d3cbc..b31cb89 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/Weather.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/Weather.cs
@@ -46,6 +46,7 @@
             weatherView.btnLine.Width = Application.GetRealWidth(375 - 16 - 16);
             weatherView.btnText.TextID = StringId.tianqibianhua;
             viewLayout.AddChidren(weatherView.FLayoutView());
+
             //绌烘皵璐ㄩ噺
             LogicView.SelectTypeView kongqiViewk = new LogicView.SelectTypeView(); 
             kongqiViewk.frameLayout.Y = weatherView.frameLayout.Bottom;
@@ -56,6 +57,7 @@
             kongqiViewk.btnText.TextID = StringId.kongqizhiliang;
             viewLayout.AddChidren(kongqiViewk.FLayoutView());
             #endregion
+
             #region  鎵�鏈夌偣鍑讳簨浠�
             //瀹ゅ娓┿�佹箍搴︺�丳M2.5鍙樺寲
             airqualityView.btnClick.MouseUpEventHandler += (sen, e) => {
diff --git a/HDL_ON/UI/UI2/3-Intelligence/IntelligencePage.cs b/HDL_ON/UI/UI2/3-Intelligence/IntelligencePage.cs
index d647195..b6247cd 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/IntelligencePage.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/IntelligencePage.cs
@@ -412,12 +412,12 @@
                     SelectedImagePath = "Collection/CollectionIcon.png",
                     IsSelected = scene.collect,
                 };
-                view.AddChidren(btnCollection);
+                //view.AddChidren(btnCollection);
                 //2020-12-16 濡傛灉鏄垚鍛橀殣钘忔敹钘忓姛鑳�
-                //if (!DB_ResidenceData.Instance.CurrentRegion.isOtherShare)
-                //{
-                //    view.AddChidren(btnCollection);
-                //}
+                if (!DB_ResidenceData.Instance.CurrentRegion.isOtherShare)
+                {
+                    view.AddChidren(btnCollection);
+                }
                 btnCollection.MouseUpEventHandler = (sender, e) => {
                     scene.collect = btnCollection.IsSelected = !btnCollection.IsSelected;
                     scene.CollectScene();
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/MiniRemoteControl/AddMiniRemoteControlDirection1Page.cs b/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/AddMiniRemoteControlDirection1Page.cs
similarity index 94%
rename from HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/MiniRemoteControl/AddMiniRemoteControlDirection1Page.cs
rename to HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/AddMiniRemoteControlDirection1Page.cs
index f80aa7a..e0fe98b 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/MiniRemoteControl/AddMiniRemoteControlDirection1Page.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/AddMiniRemoteControlDirection1Page.cs
@@ -50,13 +50,13 @@
 
             //闀挎寜绾㈠閬ユ帶鍣ㄦ寜閽�10绉掞紝鎸囩ず鐏摑鑹插揩闂�
             var strMsg = Language.StringByID(StringId.AddInfraredRemoteControlMsg1);
-            var intYY = this.AddListMsgControls(bodyFrameLayout, strMsg, CSS.CSS_FontSize.TextFontSize,
+            var listContr = this.AddListMsgControls(bodyFrameLayout, strMsg, CSS.CSS_FontSize.TextFontSize,
                 CSS.CSS_Color.FirstLevelTitleColor, Application.GetRealHeight(20), Application.GetRealHeight(408));
 
             //璇风‘淇濇偍鐨勮摑鐗欏凡寮�鍚苟澶勪簬鍙互琚悳绱㈢姸鎬�
             strMsg = Language.StringByID(StringId.AddInfraredRemoteControlMsg2);
             this.AddListMsgControls(bodyFrameLayout, strMsg, CSS.CSS_FontSize.PromptFontSize_FirstLevel,
-                CSS.CSS_Color.PromptingColor1, Application.GetRealHeight(18), intYY + Application.GetRealHeight(4));
+                CSS.CSS_Color.PromptingColor1, Application.GetRealHeight(18), listContr[listContr.Count - 1].Bottom + Application.GetRealHeight(4));
 
             //涓嬩竴姝�
             var btnNext = this.AddBottomClickButton(Language.StringByID(StringId.Next));
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/MiniRemoteControl/AddMiniRemoteControlDirection2Page.cs b/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/AddMiniRemoteControlDirection2Page.cs
similarity index 100%
rename from HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/MiniRemoteControl/AddMiniRemoteControlDirection2Page.cs
rename to HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/AddMiniRemoteControlDirection2Page.cs
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/MiniRemoteControl/AddMiniRemoteControlDirection3Page.cs b/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/AddMiniRemoteControlDirection3Page.cs
similarity index 96%
rename from HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/MiniRemoteControl/AddMiniRemoteControlDirection3Page.cs
rename to HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/AddMiniRemoteControlDirection3Page.cs
index 3d08125..2332a70 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/MiniRemoteControl/AddMiniRemoteControlDirection3Page.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/AddMiniRemoteControlDirection3Page.cs
@@ -78,12 +78,12 @@
             //鐩墠鍙敮鎸�2.4G WiFi缃戠粶
             //鏆備笉鏀寔甯︽湁涓枃瀛楃鐨刉iFi鍚嶇О
             var strMsg = Language.StringByID(StringId.AddInfraredRemoteControlMsg4);
-            int yy = this.AddListMsgControls(bodyFrameLayout, strMsg, CSS.CSS_FontSize.TextFontSize, CSS.CSS_Color.TextualColor,
+            var listContr = this.AddListMsgControls(bodyFrameLayout, strMsg, CSS.CSS_FontSize.TextFontSize, CSS.CSS_Color.TextualColor,
                 Application.GetRealHeight(20), btnWifi.Bottom + Application.GetRealHeight(16), TextAlignment.CenterLeft);
 
             //wifi琛�
             var rowWifi = new RowLayoutControl();
-            rowWifi.Y = yy + Application.GetRealHeight(32);
+            rowWifi.Y = listContr[listContr.Count - 1].Bottom + Application.GetRealHeight(32);
             bodyFrameLayout.AddChidren(rowWifi);
             //wifi鍚嶅瓧
             var txtWifi = rowWifi.frameTable.AddLeftInput(wifiName, 200);
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/MiniRemoteControl/AddMiniRemoteControlDirection4Page.cs b/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/AddMiniRemoteControlDirection4Page.cs
similarity index 98%
rename from HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/MiniRemoteControl/AddMiniRemoteControlDirection4Page.cs
rename to HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/AddMiniRemoteControlDirection4Page.cs
index 2c7f627..70f04f8 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/MiniRemoteControl/AddMiniRemoteControlDirection4Page.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/AddMiniRemoteControlDirection4Page.cs
@@ -203,12 +203,12 @@
 
             //鍙互寮�濮嬩娇鐢ㄧ孩澶栭仴鎺у姛鑳斤紒
             var strMsg = Language.StringByID(StringId.AddInfraredRemoteControlMsg7);
-            int yy = this.AddListMsgControls(bodyFrameLayout, strMsg, CSS.CSS_FontSize.TextFontSize, CSS.CSS_Color.TextualColor,
+            var listContr = this.AddListMsgControls(bodyFrameLayout, strMsg, CSS.CSS_FontSize.TextFontSize, CSS.CSS_Color.TextualColor,
                 Application.GetRealHeight(20), btnFail.Bottom + Application.GetRealHeight(8));
 
             //寮�濮嬩娇鐢�
             var btnUse = new BottomClickButton(220);
-            btnUse.Y = yy + Application.GetRealHeight(60);
+            btnUse.Y = listContr[listContr.Count - 1].Bottom + Application.GetRealHeight(60);
             btnUse.TextID = StringId.StartUse;
             bodyFrameLayout.AddChidren(btnUse);
             btnUse.ButtonClickEvent += (sender, e) =>
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/MiniRemoteControl/AddThirdPartyDeviceMenuListPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/AddThirdPartyDeviceMenuListPage.cs
similarity index 100%
rename from HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/MiniRemoteControl/AddThirdPartyDeviceMenuListPage.cs
rename to HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/AddThirdPartyDeviceMenuListPage.cs
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/SenesorMegahealth/AddSenesorMegahealthDirection1Page.cs b/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/SenesorMegahealth/AddSenesorMegahealthDirection1Page.cs
deleted file mode 100644
index ed1e894..0000000
--- a/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/SenesorMegahealth/AddSenesorMegahealthDirection1Page.cs
+++ /dev/null
@@ -1,187 +0,0 @@
-锘縰sing HDL_ON.DAL.Server;
-using HDL_ON.Entity;
-using HDL_ON.Stan;
-using Shared;
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-namespace HDL_ON.UI
-{
-    /// <summary>
-    /// 娣诲姞姣背娉㈡楠�1鐣岄潰
-    /// </summary>
-    public class AddSenesorMegahealthDirection1Page : EditorCommonForm
-    {
-        #region 鈻� 鍙橀噺澹版槑___________________________
-
-        /// <summary>
-        /// 娣诲姞璁惧瀹屾垚涔嬪悗鐨勫洖璋冧簨浠�
-        /// </summary>
-        public Action<Function> AddDeviceEvent = null;
-
-        #endregion
-
-        #region 鈻� 鍒濆鍖朹____________________________
-        /// <summary>
-        /// 鐢婚潰鏄剧ず(搴曞眰浼氬浐瀹氳皟鐢ㄦ鏂规硶锛屽�熶互瀹屾垚鐢婚潰鍒涘缓)
-        /// </summary>
-        public void ShowForm(IntegratedBrandDevice device)
-        {
-            if (Language.CurrentLanguage == "Chinese")
-            {
-                //璁剧疆澶撮儴淇℃伅
-                base.SetTitleText(Language.StringByID(StringId.Add) + device.productName);
-            }
-            else
-            {
-                base.SetTitleText(Language.StringByID(StringId.Add) + " " + device.productName);
-            }
-            //杩欎釜鐣岄潰鐨勮儗鏅渶瑕佺櫧鑹�
-            bodyFrameLayout.BackgroundColor = UI.CSS.CSS_Color.MainBackgroundColor;
-
-            //鍒濆鍖栦腑閮ㄤ俊鎭�
-            this.InitMiddleFrame();
-        }
-
-        /// <summary>
-        /// 鍒濆鍖栦腑閮ㄤ俊鎭�
-        /// </summary>
-        private void InitMiddleFrame()
-        {
-            //鍥剧墖
-            var btnPic = new PicViewControl(132, 132);
-            btnPic.Y = Application.GetRealHeight(69);
-            btnPic.Gravity = Gravity.CenterHorizontal;
-            btnPic.UnSelectedImagePath = "PersonalCenter/AddDevice/SenesorMegahealthBg.png";
-            bodyFrameLayout.AddChidren(btnPic);
-
-            //璇疯緭鍏ヨ澶囨満涓婄殑sn鐮�
-            var textView = new FrameLayout()
-            {
-                Y = Application.GetRealHeight(309-64),
-                Gravity = Gravity.CenterHorizontal,
-                Width = Application.GetRealWidth(319),
-                Height = Application.GetRealHeight(44),
-            };
-            bodyFrameLayout.AddChidren(textView);
-            textView.AddChidren(new Button() { Y = Application.GetRealHeight(43), Height = 1, BackgroundColor = CSS.CSS_Color.DividingLineColor });
-
-            EditText editText = new EditText()
-            {
-                TextAlignment = TextAlignment.Center,
-                TextColor = CSS.CSS_Color.FirstLevelTitleColor,
-                PlaceholderText = Language.StringByID(StringId.PlsEntrySNCode),
-                PlaceholderTextColor = CSS.CSS_Color.PromptingColor1,
-                TextSize = CSS.CSS_FontSize.TextFontSize,
-            };
-            textView.AddChidren(editText);
-
-            Button btnScan = new Button()
-            {
-                Width = Application.GetRealWidth(32),
-                Height = Application.GetRealWidth(32),
-                Gravity = Gravity.CenterVertical,
-                X = Application.GetRealWidth(275),
-                UnSelectedImagePath = "Public/Scan.png"
-            };
-            textView.AddChidren(btnScan);
-            btnScan.MouseUpEventHandler = (sender, e) =>
-            {
-                Scan.OpenScan((scanString) =>
-                {
-                    editText.Text = scanString;
-                });
-            };
-
-
-
-
-            //涓嬩竴姝�
-            var btnNext = this.AddBottomClickButton(Language.StringByID(StringId.Next));
-            btnNext.ButtonClickEvent += (sender, e) =>
-            {
-                var snCode = editText.Text.Trim();
-                if(string.IsNullOrEmpty(snCode))
-                {
-                    editText.PlaceholderTextColor = CSS.CSS_Color.WarningColor;
-                }
-                else
-                {
-
-                    var waitPage = new Loading();
-                    waitPage.Start();
-                    new System.Threading.Thread(() => {
-                        try
-                        {
-                            var pm = new HttpServerRequest();
-                            var pack = pm.IndependentRegister3TyDevcie(SPK.SenesorMegahealth, snCode,Language.StringByID(StringId.SenesorMillimeterWave));
-                            if (pack.Code == StateCode.SUCCESS)
-                            {
-                                //var revData = Newtonsoft.Json.JsonConvert.DeserializeObject<List<IntegratedBrandDevice>>(pack.Data.ToString());
-                                Application.RunOnMainThread(() =>
-                                {
-                                    waitPage.Hide();
-                                    var tipDialog = new OperationResultDisPalyPage();
-                                    tipDialog.LoadPage(true, Language.StringByID(StringId.AddSuccess), "", Language.StringByID(StringId.CanStartUsingZhaoguanMillimeterWave), Language.StringByID(StringId.Next));
-                                    tipDialog.Show();
-                                    AddDeviceEvent?.Invoke(new Function());
-                                    this.CloseForm();
-                                });
-                            }else if(pack.Code == "10801")
-                            {
-                                var mes = "";
-                                if (Language.CurrentLanguage == "Chinese")
-                                {
-                                    mes = "璇ヨ澶囧凡缁忚娣诲姞銆�";
-                                }
-                                else
-                                {
-                                    mes = "This device has been added.";
-                                }
-                                Application.RunOnMainThread(() =>
-                                {
-                                    var tip = new Tip()
-                                    {
-                                        Text = mes,
-                                        CloseTime = 2,
-                                        Direction = AMPopTipDirection.None
-                                    };
-                                    tip.Show(MainPage.BaseView);
-                                });
-                            }
-                            else
-                            {
-                                IMessageCommon.Current.ShowErrorInfoAlter(pack.Code);
-                            }
-                        }
-                        catch (Exception ex)
-                        {
-                            MainPage.Log("2--::" + ex.Message);
-                        }
-                        finally
-                        {
-                            Application.RunOnMainThread(() => { waitPage.Hide(); });
-                        }
-                    })
-                    { IsBackground = true }.Start();
-                }
-            };
-        }
-
-        #endregion
-
-        #region 鈻� 鍏抽棴鐣岄潰___________________________
-
-        /// <summary>
-        /// 鍏抽棴鐣岄潰
-        /// </summary>
-        public override void CloseFormBefore()
-        {
-            this.AddDeviceEvent = null;
-            base.CloseFormBefore();
-        }
-
-        #endregion
-    }
-}
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/SenesorMegahealth/SenesorMegahealthManagerPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/SenesorMegahealth/SenesorMegahealthManagerPage.cs
deleted file mode 100644
index 4c24a2c..0000000
--- a/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/SenesorMegahealth/SenesorMegahealthManagerPage.cs
+++ /dev/null
@@ -1,134 +0,0 @@
-锘縰sing HDL_ON.DAL.Server;
-using HDL_ON.Entity;
-using HDL_ON.Stan;
-using HDL_ON.UI.UI2.PersonalCenter.PirDevice;
-using Shared;
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-namespace HDL_ON.UI
-{
-    /// <summary>
-    /// 娣诲姞姣背娉㈡楠�1鐣岄潰
-    /// </summary>
-    public class SenesorMegahealthManagerPage : EditorCommonForm
-    {
-        #region 鈻� 鍙橀噺澹版槑___________________________
-
-        /// <summary>
-        /// 娣诲姞璁惧瀹屾垚涔嬪悗鐨勫洖璋冧簨浠�
-        /// </summary>
-        public Action DelDeviceEvent = null;
-
-        Function function = null;
-        #endregion
-
-        #region 鈻� 鍒濆鍖朹____________________________
-        /// <summary>
-        /// 鐢婚潰鏄剧ず(搴曞眰浼氬浐瀹氳皟鐢ㄦ鏂规硶锛屽�熶互瀹屾垚鐢婚潰鍒涘缓)
-        /// </summary>
-        public void ShowForm(Function device)
-        {
-            function = device;
-            //璁剧疆澶撮儴淇℃伅
-            base.SetTitleText(Language.StringByID(StringId.Add) + device.name);
-            //杩欎釜鐣岄潰鐨勮儗鏅渶瑕佺櫧鑹�
-            bodyFrameLayout.BackgroundColor = CSS.CSS_Color.BackgroundColor;
-
-            //鍒濆鍖栦腑閮ㄤ俊鎭�
-            this.InitMiddleFrame();
-        }
-
-        /// <summary>
-        /// 鍒濆鍖栦腑閮ㄤ俊鎭�
-        /// </summary>
-        private void InitMiddleFrame()
-        {
-            //鍥剧墖
-            var btnPic = new PicViewControl(132, 132);
-            btnPic.Y = Application.GetRealHeight(69);
-            btnPic.Gravity = Gravity.CenterHorizontal;
-            btnPic.UnSelectedImagePath = "PersonalCenter/AddDevice/SenesorMegahealthBg.png";
-            bodyFrameLayout.AddChidren(btnPic);
-
-            var btnTip = new Button()
-            {
-                Y = Application.GetRealHeight(309 - 44),
-                Gravity = Gravity.CenterHorizontal,
-                Width = Application.GetRealWidth(319),
-                Height = Application.GetRealHeight(84),
-                IsMoreLines = true,
-                TextAlignment = TextAlignment.Center,
-                TextColor = CSS.CSS_Color.FirstLevelTitleColor,
-                TextSize = CSS.CSS_FontSize.SubheadingFontSize,
-            };
-            bodyFrameLayout.AddChidren(btnTip);
-
-            if (Language.CurrentLanguage == "Chinese")
-            {
-                btnTip.Text = "璇ヨ澶囧凡娣诲姞鍒板畨闃蹭紶鎰熷櫒绫诲埆锛屽彲鍒板搴斿姛鑳芥澘鍧楁煡鐪�";
-            }
-            else
-            {
-                btnTip.Text = "The device has been added to the security sensor category, which can be viewed in the corresponding function block.";
-            }
-
-            var btnDel = new Button() {
-                Y= Application.GetRealHeight(617-64),
-                Height = Application.GetRealHeight(50),
-                TextAlignment = TextAlignment.Center,
-                TextColor = CSS.CSS_Color.WarningColor,
-                TextSize = CSS.CSS_FontSize.SubheadingFontSize,
-                TextID = StringId.DeleteDevice,
-                BackgroundColor = CSS.CSS_Color.MainBackgroundColor,
-            };
-            bodyFrameLayout.AddChidren(btnDel);
-
-            btnDel.MouseUpEventHandler = (sender, e) => {
-                var pack = PirSend.DeleteDevice(function.deviceId);
-                if (pack.Code == StateCode.SUCCESS)
-                {
-                    DelDeviceEvent?.Invoke();
-                    this.CloseForm();
-                    var mes = "";
-                    if (Language.CurrentLanguage == "Chinese")
-                    {
-                        mes = "璁惧鍒犻櫎鎴愬姛銆�";
-                    }
-                    else
-                    {
-                        mes = "Device deleted successfully.";
-                    }
-                    var tip = new Tip()
-                    {
-                        Text = mes,
-                        CloseTime = 2,
-                        Direction = AMPopTipDirection.None
-                    };
-                    tip.Show(MainPage.BaseView);
-                }
-                else
-                {
-                    IMessageCommon.Current.ShowErrorInfoAlter(pack.Code);
-                }
-            };
-
-        }
-
-        #endregion
-
-        #region 鈻� 鍏抽棴鐣岄潰___________________________
-
-        /// <summary>
-        /// 鍏抽棴鐣岄潰
-        /// </summary>
-        public override void CloseFormBefore()
-        {
-            this.DelDeviceEvent = null;
-            base.CloseFormBefore();
-        }
-
-        #endregion
-    }
-}
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/AddDevciePage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/AddDevciePage.cs
index 19fe9ea..c7da6e2 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/AddDevciePage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/AddDevciePage.cs
@@ -49,9 +49,10 @@
             new System.Threading.Thread(() => {
                 try
                 {
-                    var pm = new HttpServerRequest();
+                    var pm = new DAL.Server.HttpServerRequest();
+                    //var result = pm.Get3tyBindBrandList
                     var pack = pm.Get3TyBrandDeviceList(brand.productPlatform, brand.productBrand);
-                    if (pack.Code == StateCode.SUCCESS)
+                    if (pack.Code == DAL.Server.StateCode.SUCCESS)
                     {
                         var revData = Newtonsoft.Json.JsonConvert.DeserializeObject<List<IntegratedBrandDevice>>(pack.Data.ToString());
                         Application.RunOnMainThread(() =>
@@ -145,14 +146,6 @@
                             form.AddDeviceEvent = (functionObj) => {
                                 refreshView.BeginHeaderRefreshing();
                             }; 
-                            break;
-                        case SPK.SenesorMegahealth:
-                            var form1 = new AddSenesorMegahealthDirection1Page();
-                            form1.AddForm(device);
-                            form1.AddDeviceEvent = (functionObj) => {
-                                refreshView.BeginHeaderRefreshing();
-                                this.RemoveFromParent();
-                            };
                             break;
                     }
                 };
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/DeviceListPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/DeviceListPage.cs
index 9c98518..8bb2fcd 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/DeviceListPage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/DeviceListPage.cs
@@ -62,22 +62,9 @@
                     if (pack.Code == DAL.Server.StateCode.SUCCESS)
                     {
                         var revData = Newtonsoft.Json.JsonConvert.DeserializeObject<Function3tyBrandObj>(pack.Data.ToString());
-
                         Application.RunOnMainThread(() =>
                         {
-                            contentView.RemoveAll();
-                            if (revData.list.Count > 0)
-                            {
-                                LoadRow(revData.list);
-                            }
-                            else
-                            {
-                                var tipView = new EmptyTipView(Language.StringByID(StringId.NotAddedAnyDevices),160)
-                                {
-                                    Gravity = Gravity.CenterHorizontal,
-                                };
-                                contentView.AddChidren(tipView);
-                            }
+                            LoadRow(revData.list);
                         });
                     }
                     else
@@ -99,6 +86,7 @@
 
         void LoadRow(List<Function> deviceList)
         {
+            contentView.RemoveAll();
             bool isFrist = true;
             foreach (var device in deviceList)
             {
@@ -164,15 +152,7 @@
                     switch (device.spk)
                     {
                         case SPK.IrModule:
-                            new UI2.PersonalCenter.PirDevice.PirMethod().MainView(this, device,()=> {});
-                            break;
-                        case SPK.SenesorMegahealth:
-                            var smPage = new SenesorMegahealthManagerPage();
-                            smPage.AddForm(device);
-                            smPage.DelDeviceEvent = () =>
-                            {
-                                contentView.BeginHeaderRefreshing();
-                            };
+                            new UI2.PersonalCenter.PirDevice.Method().MainView(this, device,()=> {});
                             break;
                     }
                 };
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/AddButton.cs b/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/AddButton.cs
index 1783c17..01a45e5 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/AddButton.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/AddButton.cs
@@ -151,7 +151,7 @@
                         //绉婚櫎娣诲姞鎸夐挳鐣岄潰
                         this.RemoveFromParent();
                         //绉婚櫎涔嬪墠鍙兘瀛樺湪鐨勭晫闈�
-                        PirMethod.RemoveView("AddControl");
+                        Method.RemoveView("AddControl");
                         //鍔犺浇鏁版嵁鐣岄潰
                         AddControl addControl = new AddControl();
                         MainPage.BasePageView.AddChidren(addControl);
@@ -161,7 +161,7 @@
                     else
                     {
                         replication.RemView();
-                        PirMethod method = new PirMethod();
+                        Method method = new Method();
                         method.ErrorShow(null,"娣诲姞澶辫触");
                     }
 
@@ -176,7 +176,7 @@
         public override void RemoveFromParent()
         {
             //鍒锋柊鎸囧畾鐣岄潰
-            PirMethod.RefreshView("PirMain");
+            Method.RefreshView("PirMain");
             base.RemoveFromParent();
         }
     }
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/AddControl.cs b/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/AddControl.cs
index fbbb8c7..b10aae1 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/AddControl.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/AddControl.cs
@@ -143,7 +143,7 @@
                 //绉婚櫎褰撳墠鐣岄潰
                 this.RemoveFromParent();
                 //鍙兘涔嬪墠宸茬粡瀛樺湪璇ョ晫闈�
-                PirMethod.RemoveView("AddControlComplete");
+                Method.RemoveView("AddControlComplete");
                 AddControlComplete addControlComplete = new AddControlComplete();
                 MainPage.BasePageView.AddChidren(addControlComplete);
                 addControlComplete.Show(control, false);
@@ -162,7 +162,7 @@
             View.Buttons buttons = new View.Buttons();
             buttons.AddButton2(vv, control.status, (obj) =>
             {
-                PirMethod.ThreadSend(control, (responsePackNew) =>
+                Method.ThreadSend(control, (responsePackNew) =>
                 {
                     var buttonObj = control.status.Find((c) => c.value == obj.value);
                     if (buttonObj != null)
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/AddControlComplete.cs b/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/AddControlComplete.cs
index dd7c026..ba1829d 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/AddControlComplete.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/AddControlComplete.cs
@@ -113,11 +113,11 @@
                     //娣诲姞鎵�鏈夐仴鎺у悕绉板垪琛�
                     list.Add(Pir.currPir.FunctioList[i].name);
                 }
-                PirMethod method = new PirMethod();
+                Method method = new Method();
                 method.EditControlName(StringId.editName, list, control.name, (name, dialog) =>
                 {
                     //鍙戦�佹洿鏂板悕绉板懡浠�
-                    PirMethod.ThreadSend(new Control { deviceId = control.deviceId, name = name }, (responsePackNew) =>
+                    Method.ThreadSend(new Control { deviceId = control.deviceId, name = name }, (responsePackNew) =>
                     {
                         //鍏抽棴绐楀彛
                         dialog.Close();
@@ -133,7 +133,7 @@
             //鎵�灞炲尯鍩熺偣鍑讳簨浠�
             quyuPatchView.btnClick.MouseUpEventHandler += (sender, e) =>
             {
-                PirMethod method = new PirMethod();
+                Method method = new Method();
                 method.ManagementPosition(GetFunction(control.deviceId), () =>
                 {
                     //鏇存柊鍖哄煙
@@ -145,12 +145,12 @@
             {
                 if (bool_library)
                 {//缁х画娣诲姞搴撶殑閬ユ帶鍣�
-                    PirMethod.RefreshView("PirMain");//鍒锋柊鎸囩偣鐣岄潰
+                    Method.RefreshView("PirMain");//鍒锋柊鎸囩偣鐣岄潰
                     this.RemoveFromParent();
                 }
                 else
                 {//缁х画娣诲姞鑷畾涔夌殑閬ユ帶鍣�
-                    PirMethod method = new PirMethod();
+                    Method method = new Method();
                     method.AddControl(this, (controlDevice) =>
                     {
                         AddButton addButton = new AddButton();
@@ -164,7 +164,7 @@
             saveView.btnClick.MouseUpEventHandler += (sender, e) =>
             {
                 //鍒锋柊鎸囩偣鐣岄潰
-                PirMethod.RefreshView("PirMain");
+                Method.RefreshView("PirMain");
                 //绉婚櫎鎵�鏈夌晫闈�
                 MainPage.BasePageView.RemoveViewByTag("PirView");
             };
@@ -191,7 +191,7 @@
         public override void RemoveFromParent()
         {
             //鍒锋柊鎸囧畾鐣岄潰
-            PirMethod.RefreshView("PirMain");
+            Method.RefreshView("PirMain");
             base.RemoveFromParent();
         }
     }
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/BrandList.cs b/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/BrandList.cs
index 1299e74..92d6fe4 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/BrandList.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/BrandList.cs
@@ -18,8 +18,7 @@
                 string s = brandList[str].brandName;
                 strList.Add(s);
             }
-            var dicList = GetDateList(strList);
-            JLCountrycode.CountryCodeView.Current.ShowSortSelection(Language.StringByID(StringId.xuanzehongwaipinpai), dicList, (countryName) =>
+            JLCountrycode.CountryCodeView.Current.ShowSortSelection("閫夋嫨绾㈠鍝佺墝", GetDateList(strList), (countryName) =>
             {
 
                 var brandObj = brandList.Find((c) => c.brandName == countryName);
@@ -61,7 +60,6 @@
                         {
                             if (libraryList.Count < 40)
                             {
-                                //闄愬埗40涓簱锛�
                                 libraryList.Add(library);
                             }
                         }
@@ -70,7 +68,7 @@
                 }
                 else
                 {
-                    PirMethod method = new PirMethod();
+                    Method method = new Method();
                     method.ErrorShow(responsePackNew, "");
                 }
             }, id, "鍝佺墝绾㈠鐮佸簱鍒楄〃");
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/EditControl.cs b/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/EditControl.cs
index 0c14256..09c130c 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/EditControl.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/EditControl.cs
@@ -57,10 +57,10 @@
                 {
                     list.Add(Pir.currPir.FunctioList[i].name);
                 }
-                PirMethod method = new PirMethod();
+                Method method = new Method();
                 method.EditControlName(StringId.editName,list, control.name, (name, dialog) =>
                 {
-                    PirMethod.ThreadSend(new Control { deviceId = control.deviceId, name = name }, (responsePackNew) =>
+                    Method.ThreadSend(new Control { deviceId = control.deviceId, name = name }, (responsePackNew) =>
                     {
                         dialog.Close();
                         editNameFLayout.btnEditText.Text = name;
@@ -73,7 +73,7 @@
             //閬ユ帶鍣ㄦ墍灞炲尯鍩熼�変腑浜嬩欢
             areaFLayout.btnClick.MouseUpEventHandler += (sender, e) =>
             {
-                PirMethod method = new PirMethod();
+                Method method = new Method();
                 method.ManagementPosition(control, () =>
                 {
                     //鏇存柊鍖哄煙
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/Matching.cs b/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/Matching.cs
index ecd6e28..41c544c 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/Matching.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/Matching.cs
@@ -148,7 +148,6 @@
             };
             fLayout.AddChidren(succeedBtn);
             #endregion
-
             #region 鐐瑰嚮浜嬩欢
             //琛ㄧず搴撳垪琛ㄧ储寮曞��(鐩墠鍙�20涓簱)
             int index = 1; 
@@ -177,6 +176,7 @@
                 code = 1;
                 GetBtnText(testBtn, code, spk);
             };
+           
             //娴嬭瘯Text
             testBtn.MouseUpEventHandler += (sender, e) =>
             {
@@ -184,7 +184,7 @@
                 var library = libraryList[index - 1];
                 var control = GetControl(spk, testBtn.TextID, library);
                 //鍙戦�佹祴璇曠爜鍛戒护
-                PirMethod.ThreadSend(control, (responsePackNew) => { }, "搴撶爜娴嬭瘯", "frame", this, null);
+                Method.ThreadSend(control, (responsePackNew) => { }, "搴撶爜娴嬭瘯", "frame", this, null);
                 if (code == 3) {
                     //鏍囪鏈�鍚庨偅涓爜
                     if_bool = true;
@@ -221,20 +221,7 @@
                 {
                     var library = libraryList[index-1];
                     var control = GetControl(spk, testBtn.TextID, library);
-                    if (spk == SPK.TvIr)
-                    {
-                        //澶囨敞锛氫紵鍗楄姹傚皬绫崇數瑙嗘崲鎺塻pk=ir.tvxm锛堝惉璇存槸涓存椂瑙e喅鏂规锛�
-                        var brand = brandList.Find((c) => c.id == library.brandId);
-                        if (brand != null)
-                        {
-                            if (brand.brandName.Contains("灏忕背") || brand.brandName.Contains("Xiaomi"))
-                            {
-                                //鏇存崲spk
-                                control.spk = "ir.tvxm";
-                            }
-                        }
-                    }
-                    PirMethod method = new PirMethod();
+                    Method method = new Method();
                     //鍙戦�佸簱娣诲姞閬ユ帶鍣ㄥ懡浠�
                     method.ThreadAddControl(control, this, (device) =>  
                     {
@@ -313,136 +300,6 @@
                         }
                     }
                     break;
-                case SPK.FanIr:
-                    {
-                        switch (textInt)
-                        {
-                            case StringId.dianyuan:
-                                {
-                                    key = "on_off";
-                                    value = "on";
-                                }
-                                break;
-                            case StringId.zhongsu:
-                                {
-                                    key = "middle";
-                                    value = "";
-                                }
-                                break;
-                            case StringId.yaotou:
-                                {
-                                    key = "swing";
-                                    value = "";
-                                }
-                                break;
-                        }
-                    }
-                    break;
-                case SPK.PjtIr:
-                    {
-                        switch (textInt)
-                        {
-                            case StringId.dianyuan:
-                                {
-                                    key = "on_off";
-                                    value = "on";
-                                }
-                                break;
-                            case StringId.yinliangjia:
-                                {
-                                    key = "volume+";
-                                    value = "";
-                                }
-                                break;
-                            case StringId.yinliangjian:
-                                {
-                                    key = "volume-";
-                                    value = "";
-                                }
-                                break;
-                        }
-                    }
-                    break;
-                case SPK.StbIr:
-                    {
-                        switch (textInt)
-                        {
-                            case StringId.dianyuan:
-                                {
-                                    key = "on_off";
-                                    value = "on";
-                                }
-                                break;
-                            case StringId.yinliangjia:
-                                {
-                                    key = "volume+";
-                                    value = "";
-                                }
-                                break;
-                            case StringId.yinliangjian:
-                                {
-                                    key = "volume-";
-                                    value = "";
-                                }
-                                break;
-                        }
-                    }
-                    break;
-                case SPK.DvDIr:
-                    {
-
-                    }
-                    break;
-                case SPK.PurifierIr:
-                    {
-                        switch (textInt)
-                        {
-                            case StringId.dianyuan:
-                                {
-                                    key = "on_off";
-                                    value = "on";
-                                }
-                                break;
-                            case StringId.zidong:
-                                {
-                                    key = "auto";
-                                    value = "";
-                                }
-                                break;
-                            case StringId.jingyin:
-                                {
-                                    key = "mute";
-                                    value = "0";
-                                }
-                                break;
-                        }
-                    }
-                    break;
-                case SPK.HeaterIr:
-                    {
-                        switch (textInt)
-                        {
-                            case StringId.dianyuan:
-                                {
-                                    key = "on_off";
-                                    value = "on";
-                                }
-                                break;
-                            case StringId.wendujia:
-                                {
-                                    key = "temp+";
-                                    value = "";
-                                }
-                                break;
-                            case StringId.wendujian:
-                                {
-                                    key = "temp-";
-                                    value = "";
-                                }
-                                break;
-                        }
-                    }
-                    break;
             }
             AttributesStatus buttonObj = new AttributesStatus();
             buttonObj.key = key;
@@ -516,121 +373,6 @@
                             case 3:
                                 {
                                     textValue = StringId.jingyin;
-                                }
-                                break;
-                        }
-                    }
-                    break;
-                case SPK.FanIr:
-                    {
-                        switch (code)
-                        {
-                            case 1:
-                                {
-                                    textValue = StringId.dianyuan;
-                                }
-                                break;
-                            case 2:
-                                {
-                                    textValue = StringId.zhongsu;
-                                }
-                                break;
-                            case 3:
-                                {
-                                    textValue = StringId.yaotou;
-                                }
-                                break;
-                        }
-                    }
-                    break;
-                case SPK.PjtIr:
-                    {
-                        switch (code)
-                        {
-                            case 1:
-                                {
-                                    textValue = StringId.dianyuan;
-                                }
-                                break;
-                            case 2:
-                                {
-                                    textValue = StringId.yinliangjia;
-                                }
-                                break;
-                            case 3:
-                                {
-                                    textValue = StringId.yinliangjian;
-                                }
-                                break;
-                        }
-                    }
-                    break;
-                case SPK.StbIr:
-                    {
-                        switch (code)
-                        {
-                            case 1:
-                                {
-                                    textValue = StringId.dianyuan;
-                                }
-                                break;
-                            case 2:
-                                {
-                                    textValue = StringId.yinliangjia;
-                                }
-                                break;
-                            case 3:
-                                {
-                                    textValue = StringId.yinliangjian;
-                                }
-                                break;
-                        }
-                    }
-                    break;
-                case SPK.DvDIr:
-                    {
-
-                    }
-                    break;
-                case SPK.PurifierIr:
-                    {
-                        switch (code)
-                        {
-                            case 1:
-                                {
-                                    textValue = StringId.dianyuan;
-                                }
-                                break;
-                            case 2:
-                                {
-                                    textValue = StringId.zidong;
-                                }
-                                break;
-                            case 3:
-                                {
-                                    textValue = StringId.jingyin;
-                                }
-                                break;
-                        }
-                    }
-                    break;
-                case SPK.HeaterIr:
-                    {
-                        switch (code)
-                        {
-                            case 1:
-                                {
-                                    textValue = StringId.dianyuan;
-                                }
-                                break;
-                            case 2:
-                                {
-                                    textValue = StringId.wendujia;
-                                }
-                                break;
-                            case 3:
-                                {
-                                    textValue = StringId.wendujian;
                                 }
                                 break;
                         }
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/PirMethod.cs b/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/Method.cs
similarity index 90%
rename from HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/PirMethod.cs
rename to HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/Method.cs
index d8193c1..b464ec2 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/PirMethod.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/Method.cs
@@ -6,7 +6,7 @@
 
 namespace HDL_ON.UI.UI2.PersonalCenter.PirDevice
 {
-    public class PirMethod
+    public class Method
     {
 
         /// <summary>
@@ -79,22 +79,22 @@
         {
             View.TipView tipView = new View.TipView();
             tipView.InputBox(frameLayout, "", (name, frame) =>
-            {
-                if (Pir.currPir != null && Pir.currPir.FunctioList.Count < 10)
-                {
-                    Control control = new Control();
-                    control.name = name;
-                    control.type = "learn";
-                    control.spk = "ir.learn";
-                    control.deviceId = Pir.currPir.deviceId;
-                    ThreadAddControl(control, frame, action);
-                }
-                else
-                {
-                    View.TipView tt = new View.TipView();
-                    tt.TipBox(StringId.tip, StringId.bunengchaoguo10);
-                }
-            }, false);
+             {
+                 if (Pir.currPir != null && Pir.currPir.FunctioList.Count < 10)
+                 {
+                     Control control = new Control();
+                     control.name = name;
+                     control.type = "learn";
+                     control.spk = "ir.learn";
+                     control.deviceId = Pir.currPir.deviceId;
+                     ThreadAddControl(control, frame, action);
+                 }
+                 else
+                 {
+                     View.TipView tt = new View.TipView();
+                     tt.TipBox(StringId.tip, StringId.bunengchaoguo10);
+                 }
+             }, false);
 
         }
         /// <summary>
@@ -223,7 +223,7 @@
                                 {
 
                                     if (null == PirDevice.Pir.pirDeviceList.Find((c) => c.deviceId == pirJosn.deviceId))
-                                    {
+                                    {
                                         PirDevice.Pir.pirDeviceList.Add(pirJosn);
                                     }
                                 }
@@ -252,7 +252,7 @@
                             else
                             {
                                 loading.Hide();
-                                PirMethod method = new PirMethod();
+                                Method method = new Method();
                                 method.ErrorShow(null, "璇诲彇绾㈠瀹濆垪琛ㄥけ璐�");
                             }
                         }
@@ -329,24 +329,24 @@
         public static void GetControlList(FrameLayout frame, Action action, Pir pirDevice)
         {
             ThreadSend(new Control { deviceId = pirDevice.deviceId }, (responsePackNew) =>
-            {
-                var jArray = JArray.Parse(responsePackNew.Data.ToString());
-                for (int a = 0; a < jArray.Count; a++)
-                {
-                    var jay = jArray[a];
-                    //鏁版嵁杩斿簭鍒楀寲涓篖ogic瀵硅薄
-                    var str = Newtonsoft.Json.JsonConvert.SerializeObject(jay);
-                    var pirJosn = Newtonsoft.Json.JsonConvert.DeserializeObject<Entity.Function>(str);
-                    if (pirJosn != null)
-                    {
-                        if (null == pirDevice.FunctioList.Find((c) => c.deviceId == pirJosn.deviceId))
-                        {
-                            pirDevice.FunctioList.Add(pirJosn);
-                        }
-                    }
-                }
-                action();
-            }, "鑾峰彇閬ユ帶鍣ㄥ垪琛�", "frame", frame, null);
+             {
+                 var jArray = JArray.Parse(responsePackNew.Data.ToString());
+                 for (int a = 0; a < jArray.Count; a++)
+                 {
+                     var jay = jArray[a];
+                     //鏁版嵁杩斿簭鍒楀寲涓篖ogic瀵硅薄
+                     var str = Newtonsoft.Json.JsonConvert.SerializeObject(jay);
+                     var pirJosn = Newtonsoft.Json.JsonConvert.DeserializeObject<Entity.Function>(str);
+                     if (pirJosn != null)
+                     {
+                         if (null == pirDevice.FunctioList.Find((c) => c.deviceId == pirJosn.deviceId))
+                         {
+                             pirDevice.FunctioList.Add(pirJosn);
+                         }
+                     }
+                 }
+                 action();
+             }, "鑾峰彇閬ユ帶鍣ㄥ垪琛�", "frame", frame, null);
 
         }
         /// <summary>
@@ -373,7 +373,7 @@
         /// <param name="frame">log鐖舵帶浠�</param>
         /// <param name="dialog">log鐖舵帶浠�</param>
         /// <param name="attributesStatus">瀛︿範鎸夐敭</param>
-        public static void ThreadSend(Control control, Action<ResponsePackNew> action, string str, string view, FrameLayout frame, Dialog dialog, Entity.AttributesStatus attributesStatus = null)
+        public static void ThreadSend(Control control, Action<ResponsePackNew> action, string str, string view, FrameLayout frame, Dialog dialog, Entity.AttributesStatus attributesStatus=null)
         {
 
             //鍔犺浇log
@@ -434,7 +434,7 @@
                         }
                         else
                         {
-                            PirMethod method = new PirMethod();
+                            Method method = new Method();
                             //鑷畾涔夐敊璇彁绀烘枃鏈�
                             string eorroText = "";
                             if (str == "鍒犻櫎")
@@ -562,26 +562,6 @@
                                 str = Language.StringByID(StringId.bunengchaoguo10);
                             }
                             break;
-                        case "14002":
-                            {
-                                str = Language.StringByID(StringId.bucunzaichanpin);
-                            }
-                            break;
-                        case "10805":
-                            {
-                                str = Language.StringByID(StringId.shebeibucunzai);
-                            }
-                            break;
-                        case "14006":
-                            {
-                                str = Language.StringByID(StringId.shebeibuzaixian);
-                            }
-                            break;
-                        case "9":
-                            {
-                                str = Language.StringByID(StringId.wangguanshebeibuzaixian);
-                            }
-                            break;
                         case "2":
                             {
                                 str = Language.StringByID(StringId.xitongweihuzhong);
@@ -688,10 +668,13 @@
         public string id = "";
         public List<Objects> objects = new List<Objects>();
         public string time_stamp = string.Empty;
+
+
     }
     [Serializable]
     public class Objects
     {
+
         public string sid = string.Empty;
         public string spk = string.Empty;
         public List<Attributes> attributes = new List<Attributes>();
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/PirMain.cs b/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/PirMain.cs
index 721151e..49bab2e 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/PirMain.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/PirMain.cs
@@ -61,7 +61,12 @@
 
             };
             middFLayout.AddChidren(addDevice);
-         
+            if (Pir.currPir.FunctioList.Count < 10)
+            {
+                //10涓仴鎺у櫒灏变細闅愯棌娣诲姞鍥炬爣
+                // middFLayout.AddChidren(addDevice);
+                addDevice.Visible = true;
+            }
             #endregion
 
             #region 鐣岄潰鐐瑰嚮浜嬩欢
@@ -71,7 +76,7 @@
                     ////鍏抽棴鍒锋柊View锛�
                     vv.EndHeaderRefreshing();
 
-                    PirMethod.GetControlList(this, () =>
+                    Method.GetControlList(this, () =>
                     {
                         Application.RunOnMainThread(() =>
                         {
@@ -103,7 +108,7 @@
                     //1=绌鸿皟;2=鐢佃;3=椋庢墖;4=鏈洪《鐩�;5=DVD/EVD/VCD;6=鎶曞奖浠�;7=鑷畾涔�;
                     if (if_value == 7)
                     {
-                        PirMethod method = new PirMethod();
+                        Method method = new Method();
                         method.AddControl(this, (control) =>
                         {
                             //鎴愬姛鍚庣Щ闄�;
@@ -116,7 +121,7 @@
                     }
                     else
                     {
-                        if (if_value == 6)
+                        if (if_value == 3 || if_value == 4 || if_value == 5 || if_value == 6)
                         {
                             new TipPopView().FlashingBox(Language.StringByID(StringId.zanshibuzhichigaigongneng));
                             return;
@@ -143,18 +148,13 @@
             ///鍒濆鍖栫晫闈�
             UIView(vv);
         }
+
         /// <summary>
         /// 鍔犺浇UI鐣岄潰
         /// </summary>
         /// <param name="vv">涓婁笅婊戞帶浠�</param>
         private void UIView(VerticalRefreshLayout vv)
         {
-            if (Pir.currPir.FunctioList.Count < 10)
-            {
-                //10涓仴鎺у櫒灏变細闅愯棌娣诲姞鍥炬爣
-                // middFLayout.AddChidren(addDevice);
-                addDevice.Visible = true;
-            }
             vv.RemoveAll();
             #region 绾㈠瀹濆浘鏍� 鐗堟湰鍙� 鍚嶇О 鐘舵��
             FrameLayout fLayout = new FrameLayout
@@ -208,7 +208,7 @@
                     TipPopView tipPopView = new TipPopView();
                     tipPopView.TipBox(StringId.tip, text, (dialog) =>
                     {
-                        PirMethod.ThreadSend(new Control { deviceId=control.deviceId}, (responsePackNew) =>
+                        Method.ThreadSend(new Control { deviceId=control.deviceId}, (responsePackNew) =>
                         {
                             dialog.Close();
                             var function = Pir.currPir.FunctioList.Find((c) => c.sid == Function.sid);
@@ -313,7 +313,7 @@
                 {
                     if (tag)
                     {
-                        PirMethod method = new PirMethod();
+                        Method method = new Method();
                         method.ErrorShow(responsePackNew, "");
                     }
                 }
@@ -360,7 +360,7 @@
                 }
                 else
                 {
-                    PirMethod method = new PirMethod();
+                    Method method = new Method();
                     method.ErrorShow(responsePackNew, "");
                 }
             }, id, "鍝佺墝鍒楄〃");
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/PirSend.cs b/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/PirSend.cs
index ced74cc..bd3c0d0 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/PirSend.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/PirSend.cs
@@ -171,13 +171,13 @@
                     var responsePackNew = RequestServerhomeId(jObject, NewAPI.API_POST_Ir_CodeStudy);
                     if (responsePackNew != null && responsePackNew.Code == "0" && responsePackNew.Data.ToString() != "")
                     {
-                        PirMethod method = new PirMethod();
-                        PirMethod.buttondata = "";
+                        Method method = new Method();
+                        Method.buttondata = "";
                         cloud = method.MqttDate("鎸夐敭", control.sid, 25);
                     }
                     else
                     {
-                        PirMethod method = new PirMethod();
+                        Method method = new Method();
                         method.ErrorShow(responsePackNew, "");
                     }
                 }
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/SetPir.cs b/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/SetPir.cs
index f75583a..152dde5 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/SetPir.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/SetPir.cs
@@ -82,10 +82,10 @@
             editNameFLayout.btnClick.MouseUpEventHandler += (sender, e) =>
             {
                 List<string> list = new List<string>();
-                PirMethod method = new PirMethod();
+                Method method = new Method();
                 method.EditControlName(StringId.editName, list, Pir.currPir.name, (name, dialog) =>
                 {
-                    PirMethod.ThreadSend(new Control { deviceId = Pir.currPir.deviceId, name = name }, (responsePackNew) =>
+                    Method.ThreadSend(new Control { deviceId = Pir.currPir.deviceId, name = name }, (responsePackNew) =>
                     {
                         dialog.Close();
                         editNameFLayout.btnEditText.Text = name;
@@ -103,7 +103,7 @@
                 tipPopView.TipBox(StringId.tip, text, (dialog) =>
                 {
 
-                    PirMethod.ThreadSend(new Control { deviceId = Pir.currPir.deviceId }, (responsePackNew) =>
+                    Method.ThreadSend(new Control { deviceId = Pir.currPir.deviceId }, (responsePackNew) =>
                     {
                         var pir = Pir.pirDeviceList.Find((c) => c.deviceId == Pir.currPir.deviceId);
                         if (pir != null)
@@ -112,7 +112,7 @@
                         }
                         dialog.Close();
                         this.RemoveFromParent();
-                        PirMethod.RemoveView("PirMain");
+                        Method.RemoveView("PirMain");
                     }, "鍒犻櫎", "dialog", null, dialog);
 
                 }, () =>
@@ -132,7 +132,7 @@
         public override void RemoveFromParent()
         {
             //鍒锋柊PirMain鐣岄潰
-            PirMethod.RefreshView("PirMain");
+            Method.RefreshView("PirMain");
             base.RemoveFromParent();
           
         }
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/View/Buttons.cs b/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/View/Buttons.cs
index 139d2a6..6a79288 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/View/Buttons.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/View/Buttons.cs
@@ -265,14 +265,14 @@
                     break;
                 case 5:
                     {
-                        iconPath = "PirIcon/projector.png";
-                        deviceNameIndex = StringId.touyingyi;
+                        iconPath = "PirIcon/dvd.png";
+                        deviceNameIndex = StringId.dvd;
                     }
                     break;
                 case 6:
                     {
-                        iconPath = "PirIcon/dvd.png";
-                        deviceNameIndex = StringId.dvd;
+                        iconPath = "PirIcon/projector.png";
+                        deviceNameIndex = StringId.touyingyi;
                     }
                     break;
                 case 7:
@@ -310,28 +310,29 @@
                 case 3:
                     {
                         //椋庢墖
-                        type = "fan-" + SPK.FanIr;
+                        // type = "fan-" + SPK.ElectricFan;
                     }
                     break;
                 case 4:
                     {
                         //鏈洪《鐩�
-                        type = "set_top_box-" + SPK.StbIr;
+                        //  type = "set_top_box-" + SPK.ElectricTV;
                     }
                     break;
                 case 5:
                     {
-                        //鎶曞奖浠�
-                        type = "projector-" + SPK.PjtIr;
+                        //褰辩鏈�
+                        // type = "dvd-" + SPK.ElectricTV;
                     }
                     break;
                 case 6:
                     {
-                        //褰辩鏈�
-                        type = "dvd-" + SPK.DvDIr;
-                        
+                        //鎶曞奖浠�
+                        //  type = "projector-" + SPK.ElectricTV;
                     }
                     break;
+
+
             }
             return type;
         }
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/View/PirView.cs b/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/View/PirView.cs
index b86d5ad..5b4fd79 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/View/PirView.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/View/PirView.cs
@@ -38,7 +38,7 @@
         {
             Y = Application.GetRealHeight(16),
             X = Application.GetRealWidth(72),
-            Width = Application.GetRealWidth(120+80),
+            Width = Application.GetRealWidth(120),
             Height = Application.GetRealHeight(20),
             //Text = pirDevice.name,
             TextAlignment = TextAlignment.CenterLeft,
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/ResidentialManagePage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/ResidentialManagePage.cs
index d285fbb..ee17871 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/ResidentialManagePage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/ResidentialManagePage.cs
@@ -57,33 +57,32 @@
         /// </summary>
         Button btnCommissioningAuthoritySwitchIcon;
 
-        #region F3闃舵
         #region 绠$悊鍛樻潈闄愯縼绉�
-        //FrameLayout administratorPermissionMigrationRow;
-        //Button btnAdministratorPermissionMigrationTitle;
-        //Button btnAdministratorPermissionMigrationExplan;
-        //Button btnAdministratorPermissionMigrationSkinIcon;
+        FrameLayout administratorPermissionMigrationRow;
+        Button btnAdministratorPermissionMigrationTitle;
+        Button btnAdministratorPermissionMigrationExplan;
+        Button btnAdministratorPermissionMigrationSkinIcon;
         #endregion
 
         #region 杩囨埛
-        ///// <summary>
-        ///// 
-        ///// </summary>
-        //FrameLayout transferRow;
-        ///// <summary>
-        ///// 
-        ///// </summary>
-        //Button btnTransferTitle;
-        ///// <summary>
-        ///// 
-        ///// </summary>
-        //Button btnTrasferExplan;
-        ///// <summary>
-        ///// 
-        ///// </summary>
-        //Button btnTrasferSkinIcon;
+        /// <summary>
+        /// 
+        /// </summary>
+        FrameLayout transferRow;
+        /// <summary>
+        /// 
+        /// </summary>
+        Button btnTransferTitle;
+        /// <summary>
+        /// 
+        /// </summary>
+        Button btnTrasferExplan;
+        /// <summary>
+        /// 
+        /// </summary>
+        Button btnTrasferSkinIcon;
         #endregion
-        #endregion
+
         #endregion
         /// <summary>
         /// 鏇存柊浣忓畢鍚嶇О鐨勫洖璋冨嚱鏁�
@@ -276,112 +275,112 @@
             roomManagementRow.AddChidren(btnRoomManagementSkinIcon);
             #endregion
 
-
-            #region F3闃舵
             #region 绠$悊鍛樻潈闄愯縼绉�
-            //contentView.AddChidren(new Button() { Height = Application.GetRealHeight(8) });
-            //administratorPermissionMigrationRow = new FrameLayout()
-            //{
-            //    Height = Application.GetRealHeight(65),
-            //    BackgroundColor = CSS_Color.MainBackgroundColor,
-            //};
+            contentView.AddChidren(new Button() { Height = Application.GetRealHeight(8) });
+            administratorPermissionMigrationRow = new FrameLayout()
+            {
+                Height = Application.GetRealHeight(65),
+                BackgroundColor = CSS_Color.MainBackgroundColor,
+            };
             //contentView.AddChidren(administratorPermissionMigrationRow);
 
-            //btnAdministratorPermissionMigrationTitle = new Button()
-            //{
-            //    X = Application.GetRealWidth(16),
-            //    Y = Application.GetRealHeight(10),
-            //    Width = Application.GetRealWidth(308),
-            //    Height = Application.GetRealHeight(24),
-            //    TextID = StringId.AdministratorPermissionMigration,
-            //    TextAlignment = TextAlignment.CenterLeft,
-            //    TextSize = CSS_FontSize.SubheadingFontSize,
-            //    TextColor = CSS_Color.FirstLevelTitleColor,
-            //};
-            //administratorPermissionMigrationRow.AddChidren(btnAdministratorPermissionMigrationTitle);
+            btnAdministratorPermissionMigrationTitle = new Button()
+            {
+                X = Application.GetRealWidth(16),
+                Y = Application.GetRealHeight(10),
+                Width = Application.GetRealWidth(308),
+                Height = Application.GetRealHeight(24),
+                TextID = StringId.AdministratorPermissionMigration,
+                TextAlignment = TextAlignment.CenterLeft,
+                TextSize = CSS_FontSize.SubheadingFontSize,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+            };
+            administratorPermissionMigrationRow.AddChidren(btnAdministratorPermissionMigrationTitle);
 
-            //btnAdministratorPermissionMigrationExplan = new Button()
-            //{
-            //    X = Application.GetRealWidth(16),
-            //    Y = btnAdministratorPermissionMigrationTitle.Bottom,
-            //    Width = Application.GetRealWidth(308),
-            //    Height = Application.GetRealHeight(21),
-            //    TextID = StringId.AdministratorPermissionMigrationExPlan,
-            //    TextAlignment = TextAlignment.CenterLeft,
-            //    TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
-            //    TextColor = CSS_Color.PromptingColor1,
-            //};
-            //administratorPermissionMigrationRow.AddChidren(btnAdministratorPermissionMigrationExplan);
+            btnAdministratorPermissionMigrationExplan = new Button()
+            {
+                X = Application.GetRealWidth(16),
+                Y = btnAdministratorPermissionMigrationTitle.Bottom,
+                Width = Application.GetRealWidth(308),
+                Height = Application.GetRealHeight(21),
+                TextID = StringId.AdministratorPermissionMigrationExPlan,
+                TextAlignment = TextAlignment.CenterLeft,
+                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+                TextColor = CSS_Color.PromptingColor1,
+            };
+            administratorPermissionMigrationRow.AddChidren(btnAdministratorPermissionMigrationExplan);
 
 
-            //btnAdministratorPermissionMigrationSkinIcon = new Button()
-            //{
-            //    X = Application.GetRealWidth(343),
-            //    Gravity = Gravity.CenterVertical,
-            //    Width = Application.GetMinRealAverage(16),
-            //    Height = Application.GetMinRealAverage(16),
-            //    UnSelectedImagePath = "Public/RightIcon.png",
-            //};
-            //administratorPermissionMigrationRow.AddChidren(btnAdministratorPermissionMigrationSkinIcon);
+            btnAdministratorPermissionMigrationSkinIcon = new Button()
+            {
+                X = Application.GetRealWidth(343),
+                Gravity = Gravity.CenterVertical,
+                Width = Application.GetMinRealAverage(16),
+                Height = Application.GetMinRealAverage(16),
+                UnSelectedImagePath = "Public/RightIcon.png",
+            };
+            administratorPermissionMigrationRow.AddChidren(btnAdministratorPermissionMigrationSkinIcon);
 
-            //administratorPermissionMigrationRow.AddChidren(
-            //    new Button()
-            //    {
-            //        Gravity = Gravity.CenterHorizontal,
-            //        Y = Application.GetRealHeight(64),
-            //        Height = Application.GetRealHeight(1),
-            //        Width = Application.GetRealWidth(343),
-            //        BackgroundColor = CSS_Color.DividingLineColor,
-            //    });
-            #endregion
+            administratorPermissionMigrationRow.AddChidren(
+                new Button()
+                {
+                    Gravity = Gravity.CenterHorizontal,
+                    Y = Application.GetRealHeight(64),
+                    Height = Application.GetRealHeight(1),
+                    Width = Application.GetRealWidth(343),
+                    BackgroundColor = CSS_Color.DividingLineColor,
+                });
             #endregion
 
-            #region F3闃舵
             #region 杩囨埛
-            //transferRow = new FrameLayout()
-            //{
-            //    Y = administratorPermissionMigrationRow.Bottom,
-            //    Height = Application.GetRealHeight(65),
-            //    BackgroundColor = CSS_Color.MainBackgroundColor,
-            //};
-            //contentView.AddChidren(transferRow);
+            transferRow = new FrameLayout()
+            {
+                Y = administratorPermissionMigrationRow.Bottom,
+                Height = Application.GetRealHeight(65),
+                BackgroundColor = CSS_Color.MainBackgroundColor,
+            };
+            //鏈夌綉鍏虫墠鑳借繃鎴�
+            if (DB_ResidenceData.Instance.HomeGateway != null && string.IsNullOrEmpty(DB_ResidenceData.Instance.HomeGateway.gatewayId) == false
+                && DB_ResidenceData.Instance.CurrentRegion.isOtherShare == false)
+            {
+                contentView.AddChidren(transferRow);
+            }
 
-            //btnTransferTitle = new Button()
-            //{
-            //    X = Application.GetRealWidth(16),
-            //    Y = Application.GetRealHeight(10),
-            //    Width = Application.GetRealWidth(308),
-            //    Height = Application.GetRealHeight(24),
-            //    TextID = StringId.Transfer,
-            //    TextAlignment = TextAlignment.CenterLeft,
-            //    TextSize = CSS_FontSize.SubheadingFontSize,
-            //    TextColor = CSS_Color.FirstLevelTitleColor,
-            //};
-            //transferRow.AddChidren(btnTransferTitle);
+            btnTransferTitle = new Button()
+            {
+                X = Application.GetRealWidth(16),
+                Y = Application.GetRealHeight(10),
+                Width = Application.GetRealWidth(308),
+                Height = Application.GetRealHeight(24),
+                TextID = StringId.Transfer,
+                TextAlignment = TextAlignment.CenterLeft,
+                TextSize = CSS_FontSize.SubheadingFontSize,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+            };
+            transferRow.AddChidren(btnTransferTitle);
 
-            //btnTrasferExplan = new Button()
-            //{
-            //    X = Application.GetRealWidth(16),
-            //    Y = btnTransferTitle.Bottom,
-            //    Width = Application.GetRealWidth(308),
-            //    Height = Application.GetRealHeight(21),
-            //    TextID = StringId.TransferExPlan,
-            //    TextAlignment = TextAlignment.CenterLeft,
-            //    TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
-            //    TextColor = CSS_Color.PromptingColor1,
-            //};
-            //transferRow.AddChidren(btnTrasferExplan);
+            btnTrasferExplan = new Button()
+            {
+                X = Application.GetRealWidth(16),
+                Y = btnTransferTitle.Bottom,
+                Width = Application.GetRealWidth(308),
+                Height = Application.GetRealHeight(21),
+                TextID = StringId.TransferExPlan,
+                TextAlignment = TextAlignment.CenterLeft,
+                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+                TextColor = CSS_Color.PromptingColor1,
+            };
+            transferRow.AddChidren(btnTrasferExplan);
 
-            //btnTrasferSkinIcon = new Button()
-            //{
-            //    X = Application.GetRealWidth(343),
-            //    Gravity = Gravity.CenterVertical,
-            //    Width = Application.GetMinRealAverage(16),
-            //    Height = Application.GetMinRealAverage(16),
-            //    UnSelectedImagePath = "Public/RightIcon.png",
-            //};
-            //transferRow.AddChidren(btnTrasferSkinIcon);
-            #endregion
+            btnTrasferSkinIcon = new Button()
+            {
+                X = Application.GetRealWidth(343),
+                Gravity = Gravity.CenterVertical,
+                Width = Application.GetMinRealAverage(16),
+                Height = Application.GetMinRealAverage(16),
+                UnSelectedImagePath = "Public/RightIcon.png",
+            };
+            transferRow.AddChidren(btnTrasferSkinIcon);
             #endregion
 
             #region 璋冭瘯鏉冮檺
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/ResidentialManagePageBLL.cs b/HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/ResidentialManagePageBLL.cs
index c874702..9faddfc 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/ResidentialManagePageBLL.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/ResidentialManagePageBLL.cs
@@ -14,8 +14,8 @@
             LoadEvent_SkipRoomsPage();
             LoadEvent_EditResidencName();
             LoadEvent_EditResidencAddress();
-            //LoadEvent_SkipAdminMigrationConfirmPage();
-            //LoadEvent_SkipTransferConfirmPage();
+            LoadEvent_SkipAdminMigrationConfirmPage();
+            LoadEvent_SkipTransferConfirmPage();
         }
 
         /// <summary>
@@ -150,41 +150,41 @@
         //    };
         //}
 
-        ///// <summary>
-        ///// 璺宠浆绠$悊鍛樻潈闄愯縼绉婚〉闈�
-        ///// </summary>
-        //void LoadEvent_SkipAdminMigrationConfirmPage()
-        //{
-        //    EventHandler<MouseEventArgs> eventHandler = (sender, e) => {
-        //        var skipPage = new AdminMigrationConfirmPage();
-        //        MainPage.BasePageView.AddChidren(skipPage);
-        //        skipPage.LoadPage();
-        //        MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
-        //    };
+        /// <summary>
+        /// 璺宠浆绠$悊鍛樻潈闄愯縼绉婚〉闈�
+        /// </summary>
+        void LoadEvent_SkipAdminMigrationConfirmPage()
+        {
+            EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
+            {
+                var skipPage = new AdminMigrationConfirmPage();
+                MainPage.BasePageView.AddChidren(skipPage);
+                skipPage.LoadPage();
+                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+            };
 
-        //    administratorPermissionMigrationRow.MouseUpEventHandler = eventHandler;
-        //    btnAdministratorPermissionMigrationTitle.MouseUpEventHandler = eventHandler;
-        //    btnAdministratorPermissionMigrationExplan.MouseUpEventHandler = eventHandler;
-        //    btnAdministratorPermissionMigrationSkinIcon.MouseUpEventHandler = eventHandler;
-        //}
+            administratorPermissionMigrationRow.MouseUpEventHandler = eventHandler;
+            btnAdministratorPermissionMigrationTitle.MouseUpEventHandler = eventHandler;
+            btnAdministratorPermissionMigrationExplan.MouseUpEventHandler = eventHandler;
+            btnAdministratorPermissionMigrationSkinIcon.MouseUpEventHandler = eventHandler;
+        }
 
-        ///// <summary>
-        ///// 璺宠浆杩囨埛椤甸潰
-        ///// </summary>
-        //void LoadEvent_SkipTransferConfirmPage()
-        //{
-        //    EventHandler<MouseEventArgs> eventHandler = (sender, e) => {
-        //        var skipPage = new TransferConfirmPage();
-        //        MainPage.BasePageView.AddChidren(skipPage);
-        //        skipPage.LoadPage();
-        //        MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
-        //    };
+        /// <summary>
+        /// 璺宠浆杩囨埛椤甸潰
+        /// </summary>
+        void LoadEvent_SkipTransferConfirmPage()
+        {
+            EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
+            {
+                var from = new TransferConfirmPage();
+                from.AddForm();
+            };
 
-        //    transferRow.MouseUpEventHandler = eventHandler;
-        //    btnTrasferExplan.MouseUpEventHandler = eventHandler;
-        //    btnTrasferSkinIcon.MouseUpEventHandler = eventHandler;
-        //    btnTransferTitle.MouseUpEventHandler = eventHandler;
-        //}
+            transferRow.MouseUpEventHandler = eventHandler;
+            btnTrasferExplan.MouseUpEventHandler = eventHandler;
+            btnTrasferSkinIcon.MouseUpEventHandler = eventHandler;
+            btnTransferTitle.MouseUpEventHandler = eventHandler;
+        }
         #endregion
 
     }
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/Transfer/TransferConfirmPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/Transfer/TransferConfirmPage.cs
index 9013b14..f9d3f82 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/Transfer/TransferConfirmPage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/Transfer/TransferConfirmPage.cs
@@ -1,141 +1,97 @@
 锘縰sing System;
 using Shared;
 using HDL_ON.UI.CSS;
+using HDL_ON.Stan;
 
 namespace HDL_ON.UI
 {
     /// <summary>
     /// 杩囨埛纭鎻愰啋鐣岄潰
     /// </summary>
-    public class TransferConfirmPage : FrameLayout
+    public class TransferConfirmPage : EditorCommonForm
     {
-        /// <summary>
-        /// 
-        /// </summary>
-        FrameLayout bodyView;
+        #region 鈻� 鍙橀噺澹版槑___________________________
 
-        public TransferConfirmPage()
+        #endregion
+
+        #region 鈻� 鍒濆鍖朹____________________________
+
+        /// <summary>
+        /// 鐢婚潰鏄剧ず(搴曞眰浼氬浐瀹氳皟鐢ㄦ鏂规硶锛屽�熶互瀹屾垚鐢婚潰鍒涘缓)
+        /// </summary>
+        public void ShowForm()
         {
-            bodyView = this;
+            //杩囨埛
+            base.SetTitleText(Language.StringByID(StringId.Transfer));
+
+            //鍒濆鍖栦腑閮ㄤ俊鎭�
+            this.InitMiddleFrame();
         }
 
         /// <summary>
-        /// 
+        /// 鍒濆鍖栦腑閮ㄤ俊鎭�
         /// </summary>
-        public void LoadPage()
+        private void InitMiddleFrame()
         {
-            BackgroundColor = CSS_Color.MainBackgroundColor;
+            //娓呯┖bodyFrame
+            this.ClearBodyFrame();
 
-            new TopViewDiv(bodyView, Language.StringByID(StringId.Transfer)).LoadTopView();
+            //璐﹀彿鑷繁鐨勫ご鍍�
+            var btnHeadImage = new ImageView();
+            btnHeadImage.X = Application.GetRealWidth(48);
+            btnHeadImage.Y = Application.GetRealHeight(32);
+            btnHeadImage.Width = Application.GetRealWidth(84);
+            btnHeadImage.Height = Application.GetRealWidth(84);
+            btnHeadImage.Radius = (uint)Application.GetRealWidth(42);
+            btnHeadImage.ImagePath = UserInfo.Current.headImagePagePath;
+            bodyFrameLayout.AddChidren(btnHeadImage);
 
-            #region 澶村儚
-            FrameLayout headView = new FrameLayout()
+            //绠ご
+            var btnArrow = new PicViewControl(84, 32);
+            btnArrow.X = btnHeadImage.Right + Application.GetRealWidth(12);
+            btnArrow.Y = Application.GetRealHeight(58);
+            btnArrow.UnSelectedImagePath = "PersonalCenter/Transfer.png";
+            bodyFrameLayout.AddChidren(btnArrow);
+
+            //涓�涓粯璁ゅご鍍�
+            var btnHead2 = new IconViewControl(102);
+            btnHead2.X = btnArrow.Right + Application.GetRealWidth(3);
+            btnHead2.Y = Application.GetRealHeight(26);
+            btnHead2.UnSelectedImagePath = "PersonalCenter/Head.png";
+            bodyFrameLayout.AddChidren(btnHead2);
+
+            //鎮ㄧ殑浣忓畢灏嗚繃鎴风粰鍏朵粬HDL璐﹀彿
+            this.AddListMsgControls(bodyFrameLayout, Language.StringByID(StringId.YourHomeWillBeTransferredToOtherAccounts), CSS_FontSize.SubheadingFontSize,
+                CSS_Color.FirstLevelTitleColor, Application.GetRealHeight(23), btnHead2.Bottom + Application.GetRealHeight(12));
+
+            //璇锋敞鎰�:
+            var btnAttention = new NormalViewControl(200, 18, true);
+            btnAttention.X = HdlControlResourse.XXLeft;
+            btnAttention.Y = btnHeadImage.Bottom + Application.GetRealHeight(84);
+            btnAttention.TextID = StringId.Attention;
+            btnAttention.TextSize = CSS_FontSize.PromptFontSize_FirstLevel;
+            btnAttention.TextColor = CSS_Color.FirstLevelTitleColor;
+            bodyFrameLayout.AddChidren(btnAttention);
+
+            //1.璇ヤ綇瀹呯殑鏁版嵁锛堜簯绔暟鎹級灏嗗叏閮ㄨ浆绉荤粰鏂扮殑鎴蜂富
+            //2.杩囨埛鍚庯紝鍘熸湁鐨勬垚鍛樺皢鑷姩瑙g粦璇ヤ綇瀹�
+            //3.鏂版埛涓昏处鍙蜂负鏈夋晥鐨凥DL璐﹀彿
+            //4.鎺ユ敹鏂硅处鍙蜂笌杞Щ鏂硅处鍙蜂笉鍙负鍚屼竴涓处鍙�
+            var listContr = this.AddListMsgControls(bodyFrameLayout, Language.StringByID(StringId.TransferreConfirmMsg1), CSS_FontSize.PromptFontSize_FirstLevel,
+                CSS_Color.TextualColor, Application.GetRealHeight(18), btnAttention.Bottom + Application.GetRealHeight(8), TextAlignment.CenterLeft);
+
+            //纭
+            var btnConfirm = new BottomClickButton(220);
+            btnConfirm.Y = listContr[listContr.Count - 1].Bottom + Application.GetRealHeight(75);
+            btnConfirm.TextID = StringId.ConfirmTransferre;
+            bodyFrameLayout.AddChidren(btnConfirm);
+            btnConfirm.ButtonClickEvent += (sender, e) =>
             {
-                Y = Application.GetRealHeight(72),
-                Height = Application.GetRealHeight(132),
+                var form = new TransferInputPage();
+                form.AddForm();
             };
-            bodyView.AddChidren(headView);
-
-
-            ImageView myHeadImage = new ImageView()
-            {
-                X = Application.GetRealWidth(48),
-                Y = Application.GetRealHeight(96),
-                Width = Application.GetRealWidth(84),
-                Height = Application.GetRealWidth(84),
-                Radius = (uint)Application.GetRealWidth(42),
-                ImagePath = UserInfo.Current.headImagePagePath,
-                Gravity = Gravity.CenterVertical,
-            };
-            headView.AddChidren(myHeadImage);
-
-            ImageView transferImage = new ImageView()
-            {
-                X = Application.GetRealWidth(144),
-                Y = Application.GetRealHeight(96),
-                Width = Application.GetRealWidth(84),
-                Height = Application.GetRealWidth(32),
-                ImagePath = "PersonalCenter/Transfer.png",
-                Gravity = Gravity.Center,
-            };
-            headView.AddChidren(transferImage);
-
-            ImageView otherHeadImage = new ImageView()
-            {
-                X = Application.GetRealWidth(231),
-                Y = Application.GetRealHeight(96),
-                Width = Application.GetRealWidth(101),
-                Height = Application.GetRealWidth(101),
-                ImagePath = "PersonalCenter/Head.png",
-                Gravity = Gravity.CenterVertical,
-            };
-            headView.AddChidren(otherHeadImage);
-
-            #endregion
-
-            var btnTip = new Button()
-            {
-                Y = headView.Bottom,
-                X = Application.GetRealWidth(16),
-                Width = Application.GetRealWidth(343),
-                Height = Application.GetRealHeight(22),
-                TextAlignment = TextAlignment.Center,
-                TextColor = CSS_Color.FirstLevelTitleColor,
-                TextSize = CSS_FontSize.SubheadingFontSize,
-                Text = "鎮ㄧ殑浣忓畢灏嗚繃鎴风粰鍏朵粬HDL璐﹀彿",
-            };
-            bodyView.AddChidren(btnTip);
-
-
-            //璇锋敞鎰�
-            var btnPleaseNote = new Button()
-            {
-                Y = btnTip.Bottom + Application.GetRealHeight(38),
-                X = Application.GetRealWidth(16),
-                Width = Application.GetRealWidth(343),
-                Height = Application.GetRealHeight(17),
-                TextAlignment = TextAlignment.CenterLeft,
-                TextColor = CSS_Color.FirstLevelTitleColor,
-                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
-                Text = "璇锋敞鎰忥細",
-            };
-            bodyView.AddChidren(btnPleaseNote);
-
-            //璇锋敞鎰忕殑鍐呭
-            var btnPleaseNoteStr = new Button()
-            {
-                Y = btnPleaseNote.Bottom + Application.GetRealHeight(8),
-                X = Application.GetRealWidth(16),
-                Width = Application.GetRealWidth(343),
-                Height = Application.GetRealHeight(170),
-                TextAlignment = TextAlignment.TopLeft,
-                TextColor = CSS_Color.TextualColor,
-                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
-                IsMoreLines = true,
-                Text = "1.璇ヤ綇瀹呮偍鐨勬暟鎹紙浜戠鏁版嵁锛夊皢鍏ㄩ儴杞Щ缁欐柊鐨勬埛涓� \n\n2.杩囨埛鍚庯紝鍘熸湁鐨勬垚鍛樺皢鑷姩瑙g粦璇ヤ綇瀹� \n\n3.鏂版埛涓昏处鍙蜂负鏈夋晥鐨凥DL璐﹀彿 \n\n4.鎺ユ敹鏂硅处鍙蜂笌杞Щ鏂硅处鍙蜂笉鍙负鍚屼竴涓处鍙� (缁戝畾鐨勫叾浠栫櫥褰�)",
-            };
-            bodyView.AddChidren(btnPleaseNoteStr);
-
-            //
-            var btnConfirm = new ConfirmButton()
-            {
-                Y = Application.GetRealHeight(456),
-                Text = "纭杩囨埛",
-            };
-            bodyView.AddChidren(btnConfirm);
-
-            btnConfirm.MouseUpEventHandler = (sender, e) => {
-                //Utlis.ShowTip("鏆備笉鏀寔");
-
-                var skipPage = new TransferInputPage();
-                MainPage.BasePageView.AddChidren(skipPage);
-                skipPage.LoadPage();
-                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
-                
-            };
-
         }
 
+        #endregion
     }
-
 }
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/Transfer/TransferInputPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/Transfer/TransferInputPage.cs
index 6ad0dcc..286f85a 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/Transfer/TransferInputPage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/Transfer/TransferInputPage.cs
@@ -1,159 +1,160 @@
 锘縰sing System;
 using Shared;
 using HDL_ON.UI.CSS;
+using HDL_ON.Stan;
 
 namespace HDL_ON.UI
 {
     /// <summary>
     /// 杩囨埛杈撳叆璐﹀彿鐣岄潰
     /// </summary>
-    public class TransferInputPage : FrameLayout
+    public class TransferInputPage : EditorCommonForm
     {
-        /// <summary>
-        /// 
-        /// </summary>
-        FrameLayout bodyView;
+        #region 鈻� 鍙橀噺澹版槑___________________________
 
-        public TransferInputPage()
+        #endregion
+
+        #region 鈻� 鍒濆鍖朹____________________________
+
+        /// <summary>
+        /// 鐢婚潰鏄剧ず(搴曞眰浼氬浐瀹氳皟鐢ㄦ鏂规硶锛屽�熶互瀹屾垚鐢婚潰鍒涘缓)
+        /// </summary>
+        public void ShowForm()
         {
-            bodyView = this;
+            //杩囨埛
+            base.SetTitleText(Language.StringByID(StringId.Transfer));
+
+            //鍒濆鍖栦腑閮ㄤ俊鎭�
+            this.InitMiddleFrame();
         }
 
         /// <summary>
-        /// 
+        /// 鍒濆鍖栦腑閮ㄤ俊鎭�
         /// </summary>
-        public void LoadPage()
+        private void InitMiddleFrame()
         {
-            BackgroundColor = CSS_Color.BackgroundColor;
+            //娓呯┖bodyFrame
+            this.ClearBodyFrame();
 
-            new TopViewDiv(bodyView, Language.StringByID(StringId.Transfer)).LoadTopView();
+            //鐧借壊鑳屾櫙
+            var frameBack = new FrameLayout();
+            frameBack.Y = Application.GetRealHeight(8);
+            frameBack.BackgroundColor = CSS_Color.MainBackgroundColor;
+            bodyFrameLayout.AddChidren(frameBack);
 
-            #region 璐﹀彿濉啓
-            var accountView = new FrameLayout()
+            //璇疯緭鍏ユ帴鏀舵柟璐﹀彿
+            var rowInput = new FrameRowControl();
+            rowInput.Height = Application.GetRealHeight(50);
+            frameBack.AddChidren(rowInput);
+            //鍥炬爣
+            rowInput.AddLeftIcon(24, "LoginIcon/AccountIcon.png");
+            //杈撳叆妗�
+            var txtInput = rowInput.AddLeftInput(string.Empty, 300);
+            txtInput.PlaceholderText = Language.StringByID(StringId.PleaseInputReceiverAccount);
+            //搴曠嚎
+            rowInput.AddBottomLine();
+            //鍙樻洿瀹瑰櫒楂樺害
+            frameBack.Height = rowInput.Bottom + Application.GetRealHeight(10);
+
+            //杩囨埛
+            var btnMigrate = new BottomClickButton(220);
+            btnMigrate.TextID = StringId.Transfer;
+            btnMigrate.Y = frameBack.Bottom + Application.GetRealHeight(79);
+            bodyFrameLayout.AddChidren(btnMigrate);
+            btnMigrate.ButtonClickEvent += (sender, e) =>
             {
-                Y = Application.GetRealHeight(72),
-                Height = Application.GetRealHeight(50),
-                BackgroundColor = CSS_Color.MainBackgroundColor
-            };
-            bodyView.AddChidren(accountView);
+                string account = txtInput.Text.Trim();
+                if (account == string.Empty)
+                {
+                    return;
+                }
+                if (account == UserInfo.Current.userEmailInfo || account == UserInfo.Current.userMobileInfo)
+                {
+                    //涓嶈兘鑷繁杩囨埛缁欒嚜宸�
+                    HdlMessageLogic.Current.ShowMassage(ShowMsgType.Tip, Language.StringByID(StringId.YouCannotTransferOwnershipToYourself));
+                    return;
+                }
+                //鎼滅储璐﹀彿淇℃伅
+                var accountInfo = this.SearchAccountInfoByAccount(account);
+                if (accountInfo == null)
+                {
+                    return;
+                }
 
-            var btnAccountIcon = new Button()
+                this.CloseForm();
+
+                var form = new TransferUserConfirmPage();
+                form.AddForm(accountInfo);
+            };
+
+            //鎵弿浜岀淮鐮�
+            var btnQrcode = new NormalViewControl(220, 32, true);
+            btnQrcode.Y = btnMigrate.Bottom + Application.GetRealWidth(6);
+            btnQrcode.TextColor = CSS_Color.MainColor;
+            btnQrcode.Gravity = Gravity.CenterHorizontal;
+            btnQrcode.TextAlignment = TextAlignment.Center;
+            btnQrcode.TextID = StringId.ScanQRCoden;
+            bodyFrameLayout.AddChidren(btnQrcode);
+            btnQrcode.ButtonClickEvent += (sender, e) =>
             {
-                X = Application.GetRealWidth(16),
-                Gravity = Gravity.CenterVertical,
-                Width = Application.GetMinRealAverage(24),
-                Height = Application.GetMinRealAverage(24),
-                UnSelectedImagePath = "LoginIcon/AccountIcon.png",
+                Scan.OpenScan((scanString) =>
+                {
+                    if (string.IsNullOrEmpty(scanString) == true)
+                    {
+                        return;
+                    }
+                    if (scanString == UserInfo.Current.userEmailInfo || scanString == UserInfo.Current.userMobileInfo)
+                    {
+                        //涓嶈兘鑷繁杩囨埛缁欒嚜宸�
+                        HdlMessageLogic.Current.ShowMassage(ShowMsgType.Tip, Language.StringByID(StringId.YouCannotTransferOwnershipToYourself));
+                        return;
+                    }
+                    //鎼滅储璐﹀彿淇℃伅
+                    var accountInfo = this.SearchAccountInfoByAccount(scanString);
+                    if (accountInfo == null)
+                    {
+                        return;
+                    }
+                    this.CloseForm();
+
+                    var form = new TransferUserConfirmPage();
+                    form.AddForm(accountInfo);
+                });
             };
-            accountView.AddChidren(btnAccountIcon);
-
-            var etAccount = new EditText()
-            {
-                X = Application.GetRealWidth(52),
-                Width = Application.GetRealWidth(307),
-                TextAlignment = TextAlignment.CenterLeft,
-                TextColor = CSS_Color.FirstLevelTitleColor,
-                TextSize = CSS_FontSize.TextFontSize,
-                PlaceholderTextColor = CSS_Color.PromptingColor1,
-                PlaceholderText = "璇疯緭鍏ユ帴鏀舵柟璐﹀彿",
-            };
-            accountView.AddChidren(etAccount);
-
-            var btnLine = new Button()
-            {
-                BackgroundColor = CSS_Color.DividingLineColor,
-                Height = Application.GetRealHeight(1),
-                Y = accountView.Height - Application.GetRealHeight(1),
-                X = Application.GetRealWidth(16),
-                Width = Application.GetRealWidth(343),
-            };
-            accountView.AddChidren(btnLine);
-            #endregion
-
-            #region 璐﹀彿濉啓
-            var accountConfirmView = new FrameLayout()
-            {
-                Y = accountView.Bottom,
-                Height = Application.GetRealHeight(50),
-                BackgroundColor = CSS_Color.MainBackgroundColor
-            };
-            bodyView.AddChidren(accountConfirmView);
-
-            var btnAccountConfirmIcon = new Button()
-            {
-                X = Application.GetRealWidth(16),
-                Gravity = Gravity.CenterVertical,
-                Width = Application.GetMinRealAverage(24),
-                Height = Application.GetMinRealAverage(24),
-                UnSelectedImagePath = "LoginIcon/AccountIcon.png",
-            };
-            accountConfirmView.AddChidren(btnAccountConfirmIcon);
-
-            var etAccountConfirm = new EditText()
-            {
-                X = Application.GetRealWidth(52),
-                Width = Application.GetRealWidth(307),
-                TextAlignment = TextAlignment.CenterLeft,
-                TextColor = CSS_Color.FirstLevelTitleColor,
-                TextSize = CSS_FontSize.TextFontSize,
-                PlaceholderTextColor = CSS_Color.PromptingColor1,
-                PlaceholderText = "璇峰啀娆¤緭鍏ユ帴鏀舵柟璐﹀彿",
-            };
-            accountConfirmView.AddChidren(etAccountConfirm);
-
-            //var btnLine2 = new Button()
-            //{
-            //    BackgroundColor = CSS_Color.DividingLineColor,
-            //    Height = Application.GetRealHeight(1),
-            //    Y = accountConfirmView.Height - Application.GetRealHeight(1),
-            //};
-            //accountConfirmView.AddChidren(btnLine2);
-            #endregion
-
-            var btnTip = new Button()
-            {
-                Y = accountConfirmView.Bottom + Application.GetRealHeight(12),
-                X = Application.GetRealWidth(16),
-                Width = Application.GetRealWidth(343),
-                TextAlignment = TextAlignment.TopLeft,
-                TextColor = CSS_Color.AuxiliaryColor2,
-                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
-                Text = "*璇风‘璁よ处鍙锋棤璇紝鍦ㄦ暟鎹浆绉昏繃绋嬩腑涓嶅彲鍙栨秷鎿嶄綔",
-                IsMoreLines = true
-
-            };
-            bodyView.AddChidren(btnTip);
-
-            var btnConfirm = new ConfirmButton()
-            {
-                Y = Application.GetRealHeight(251),
-                Text = "杩囨埛",
-            };
-            bodyView.AddChidren(btnConfirm);
-
-            btnConfirm.MouseUpEventHandler = (sender, e) => {
-                var skipPage = new TransferUserConfirmPage();
-                MainPage.BasePageView.AddChidren(skipPage);
-                skipPage.LoadPage();
-                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
-            };
-
-            Button btnEmailOption = new Button()
-            {
-                Y = btnConfirm.Bottom + Application.GetRealWidth(6),
-                Width = Application.GetRealWidth(220),
-                Height = Application.GetRealWidth(32),
-                TextSize = CSS_FontSize.TextFontSize,
-                TextColor = CSS_Color.MainColor,
-                Gravity = Gravity.CenterHorizontal,
-                TextAlignment = TextAlignment.Center,
-                Text = "鎵弿浜岀淮鐮佽繃鎴�"
-            };
-            bodyView.AddChidren(btnEmailOption);
-
-          
         }
 
+        #endregion
+
+        #region 鈻� 鎼滅储璐﹀彿___________________________
+
+        /// <summary>
+        /// 鎼滅储璐﹀彿淇℃伅
+        /// </summary>
+        /// <param name="i_account">鎼滅储鐨勮处鍙�</param>
+        /// <returns></returns>
+        private AccountInfoResult SearchAccountInfoByAccount(string i_account)
+        {
+            var result = new DAL.Server.HttpServerRequest().GetMemberInfoByAccount(i_account);
+            if (result.Code == DAL.Server.StateCode.ACCOUNT_NOT_EXIST)
+            {
+                //鐩爣璐﹀彿骞朵笉瀛樺湪
+                HdlMessageLogic.Current.ShowMassage(ShowMsgType.Tip, Language.StringByID(StringId.TargetAcountDoesNotExist));
+                return null;
+            }
+            if (result.Code != DAL.Server.StateCode.SUCCESS)
+            {
+                DAL.Server.IMessageCommon.Current.ShowErrorInfoAlter(result.Code);
+                return null;
+            }
+            var accountInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<AccountInfoResult>(result.Data.ToString());
+            accountInfo.Account = i_account;
+            if (accountInfo.MemberName == string.Empty)
+            {
+                accountInfo.MemberName = accountInfo.Account;
+            }
+            return accountInfo;
+        }
+
+        #endregion
     }
-
 }
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/Transfer/TransferResidenceResultPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/Transfer/TransferResidenceResultPage.cs
new file mode 100644
index 0000000..f9b1297
--- /dev/null
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/Transfer/TransferResidenceResultPage.cs
@@ -0,0 +1,108 @@
+锘縰sing System;
+using Shared;
+using HDL_ON.UI.CSS;
+using HDL_ON.Stan;
+using System.Collections.Generic;
+
+namespace HDL_ON.UI
+{
+    /// <summary>
+    /// 杩囨埛缁撴灉鐣岄潰
+    /// </summary>
+    public class TransferResidenceResultPage : EditorCommonForm
+    {
+        #region 鈻� 鍙橀噺澹版槑___________________________
+
+        /// <summary>
+        /// 缁撴潫浜嬩欢
+        /// </summary>
+        public Action FinishEvent = null;
+
+        #endregion
+
+        #region 鈻� 鍒濆鍖朹____________________________
+
+        /// <summary>
+        /// 鐢婚潰鏄剧ず(搴曞眰浼氬浐瀹氳皟鐢ㄦ鏂规硶锛屽�熶互瀹屾垚鐢婚潰鍒涘缓)
+        /// </summary>
+        /// <param name="i_accountInfo">鐢ㄦ埛瀵硅薄淇℃伅</param>
+        /// <param name="i_success">鏄惁鎴愬姛</param>
+        public void ShowForm(AccountInfoResult i_accountInfo, bool i_success)
+        {
+            this.ScrollLeftEnabled = false;
+            //杩囨埛
+            base.SetTitleText(Language.StringByID(StringId.Transfer));
+
+            //鍒濆鍖栦腑閮ㄤ俊鎭�
+            this.InitMiddleFrame(i_accountInfo, i_success);
+
+            //绉婚櫎杩斿洖閿�
+            base.RemoveBackButton();
+        }
+
+        /// <summary>
+        /// 鍒濆鍖栦腑閮ㄤ俊鎭�
+        /// </summary>
+        /// <param name="i_accountInfo">鐢ㄦ埛瀵硅薄淇℃伅</param>
+        /// <param name="i_success">鏄惁鎴愬姛</param>
+        private void InitMiddleFrame(AccountInfoResult i_accountInfo, bool i_success)
+        {
+            //娓呯┖bodyFrame
+            this.ClearBodyFrame();
+
+            //鍥剧墖
+            var btnPictrue = new PicViewControl(180, 180);
+            btnPictrue.Y = Application.GetRealHeight(32);
+            btnPictrue.Gravity = Gravity.CenterHorizontal;
+            btnPictrue.UnSelectedImagePath = i_success == true ? "Public/TipIcon_Successfully.png" : "Public/TipIcon_Failed.png";
+            bodyFrameLayout.AddChidren(btnPictrue);
+
+            List<NormalViewControl> listContr = null;
+            if (i_success == true)
+            {
+                //鐢ㄦ埛{0}宸茬粡鎴愪负浣忓畢琛岀鐞嗗憳
+                string strMsg = Language.StringByID(StringId.CongratulationsXXBecomingNNAdministrator).Replace("{0}", i_accountInfo.MemberName);
+                listContr = this.AddListMsgControls(bodyFrameLayout, strMsg, CSS_FontSize.SubheadingFontSize, CSS_Color.MainColor, Application.GetRealHeight(24),
+                    btnPictrue.Bottom + Application.GetRealHeight(16));
+                //璇ヤ綇瀹呯殑淇℃伅灏嗗湪鎮ㄧ殑璐﹀彿涓垹闄�
+                var btnMsg2 = new NormalViewControl(bodyFrameLayout.Width - HdlControlResourse.XXLeft * 2, Application.GetRealHeight(18), false);
+                btnMsg2.Y = listContr[listContr.Count - 1].Bottom + Application.GetRealHeight(8);
+                btnMsg2.TextAlignment = TextAlignment.Center;
+                btnMsg2.Gravity = Gravity.CenterHorizontal;
+                btnMsg2.TextSize = CSS_FontSize.PromptFontSize_FirstLevel;
+                btnMsg2.TextID = StringId.ResidenceDataWillBeDeletedFromYourAccount;
+                bodyFrameLayout.AddChidren(btnMsg2);
+            }
+            else
+            {
+                //杩囨埛澶辫触
+                string strMsg = Language.StringByID(StringId.TransferFail);
+                listContr = this.AddListMsgControls(bodyFrameLayout, strMsg, CSS_FontSize.SubheadingFontSize, CSS_Color.AuxiliaryColor2, Application.GetRealHeight(24),
+                    btnPictrue.Bottom + Application.GetRealHeight(16));
+                //璇烽噸鏂板皾璇�
+                var btnMsg2 = new NormalViewControl(bodyFrameLayout.Width - HdlControlResourse.XXLeft * 2, Application.GetRealHeight(18), false);
+                btnMsg2.Y = listContr[listContr.Count - 1].Bottom + Application.GetRealHeight(8);
+                btnMsg2.TextAlignment = TextAlignment.Center;
+                btnMsg2.Gravity = Gravity.CenterHorizontal;
+                btnMsg2.TextSize = CSS_FontSize.PromptFontSize_FirstLevel;
+                btnMsg2.TextID = StringId.PleaseTryAgain;
+                bodyFrameLayout.AddChidren(btnMsg2);
+            }
+
+            //瀹屾垚
+            var btnConfirm = new BottomClickButton(220);
+            btnConfirm.Y = Application.GetRealHeight(337);
+            btnConfirm.TextID = i_success == true ? StringId.Complete : StringId.Retry;
+            bodyFrameLayout.AddChidren(btnConfirm);
+            btnConfirm.ButtonClickEvent += (sender, e) =>
+            {
+                this.CloseForm();
+                //鍥炶皟鍑芥暟
+                this.FinishEvent?.Invoke();
+                this.FinishEvent = null;
+            };
+        }
+
+        #endregion
+    }
+}
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/Transfer/TransferUserConfirmPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/Transfer/TransferUserConfirmPage.cs
index e29f3fd..4a5c393 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/Transfer/TransferUserConfirmPage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/Transfer/TransferUserConfirmPage.cs
@@ -1,68 +1,124 @@
 锘縰sing System;
 using Shared;
 using HDL_ON.UI.CSS;
+using HDL_ON.Stan;
 
 namespace HDL_ON.UI
 {
     /// <summary>
-    /// 杩囨埛璐﹀彿纭鐣岄潰
-    /// 涓汉璧勬枡
+    /// 杩囨埛璐﹀彿涓汉璧勬枡纭鐣岄潰
     /// </summary>
-    public class TransferUserConfirmPage : FrameLayout
+    public class TransferUserConfirmPage : EditorCommonForm
     {
-        /// <summary>
-        /// 
-        /// </summary>
-        FrameLayout bodyView;
+        #region 鈻� 鍙橀噺澹版槑___________________________
 
-        public TransferUserConfirmPage()
+        /// <summary>
+        /// 璐﹀彿淇℃伅
+        /// </summary>
+        private AccountInfoResult accountInfo = null;
+
+        #endregion
+
+        #region 鈻� 鍒濆鍖朹____________________________
+
+        /// <summary>
+        /// 鐢婚潰鏄剧ず(搴曞眰浼氬浐瀹氳皟鐢ㄦ鏂规硶锛屽�熶互瀹屾垚鐢婚潰鍒涘缓)
+        /// </summary>
+        /// <param name="i_accountInfo"></param>
+        public void ShowForm(AccountInfoResult i_accountInfo)
         {
-            bodyView = this;
+            this.accountInfo = i_accountInfo;
+
+            //涓汉璧勬枡
+            base.SetTitleText(Language.StringByID(StringId.Profile));
+
+            //鍒濆鍖栦腑閮ㄤ俊鎭�
+            this.InitMiddleFrame();
         }
 
         /// <summary>
-        /// 
+        /// 鍒濆鍖栦腑閮ㄤ俊鎭�
         /// </summary>
-        public void LoadPage()
+        private void InitMiddleFrame()
         {
-            BackgroundColor = CSS_Color.BackgroundColor;
+            //娓呯┖bodyFrame
+            this.ClearBodyFrame();
 
-            new TopViewDiv(bodyView, "涓汉璧勬枡").LoadTopView();
+            //涓婇儴鐨勭櫧鑹茶儗鏅�
+            var frameBack1 = new FrameLayout();
+            frameBack1.BackgroundColor = CSS_Color.MainBackgroundColor;
+            frameBack1.Height = Application.GetRealHeight(204);
+            bodyFrameLayout.AddChidren(frameBack1);
 
-            var headView = new FrameLayout()
+            //澶村儚
+            var btnHeadImage = new ImageView();
+            btnHeadImage.Y = Application.GetRealHeight(32);
+            btnHeadImage.Gravity = Gravity.CenterHorizontal;
+            btnHeadImage.Width = Application.GetRealWidth(84);
+            btnHeadImage.Height = Application.GetRealWidth(84);
+            btnHeadImage.Radius = (uint)Application.GetRealWidth(42);
+            btnHeadImage.ImagePath = "LoginIcon/2.png";
+            frameBack1.AddChidren(btnHeadImage);
+
+            //鏄电О
+            var btnName = new NormalViewControl(frameBack1.Width - HdlControlResourse.XXLeft * 2, Application.GetRealHeight(24), false);
+            btnName.Y = btnHeadImage.Bottom + Application.GetRealHeight(11);
+            btnName.Gravity = Gravity.CenterHorizontal;
+            btnName.IsBold = true;
+            btnName.TextSize = CSS_FontSize.SubheadingFontSize;
+            btnName.TextColor = CSS_Color.FirstLevelTitleColor;
+            btnName.Text = accountInfo.MemberName;
+            btnName.TextAlignment = TextAlignment.Center;
+            frameBack1.AddChidren(btnName);
+
+            //璐﹀彿
+            var btnAccount = new NormalViewControl(frameBack1.Width - HdlControlResourse.XXLeft * 2, Application.GetRealHeight(16), false);
+            btnAccount.Y = btnName.Bottom + Application.GetRealHeight(7);
+            btnAccount.Gravity = Gravity.CenterHorizontal;
+            btnAccount.TextSize = CSS_FontSize.PromptFontSize_FirstLevel;
+            btnAccount.TextAlignment = TextAlignment.Center;
+            btnAccount.Text = accountInfo.Account;
+            frameBack1.AddChidren(btnAccount);
+
+            //纭鐨勭櫧鑹茶儗鏅�
+            var frameBack2 = new FrameLayout();
+            frameBack2.Y = frameBack1.Bottom + Application.GetRealHeight(8);
+            frameBack2.Height = Application.GetRealHeight(50);
+            frameBack2.BackgroundColor = CSS_Color.MainBackgroundColor;
+            bodyFrameLayout.AddChidren(frameBack2);
+            //纭杩囨埛
+            var btnConform = new NormalViewControl(200, 24, true);
+            btnConform.Gravity = Gravity.Center;
+            btnConform.TextSize = CSS_FontSize.SubheadingFontSize;
+            btnConform.TextAlignment = TextAlignment.Center;
+            btnConform.TextColor = CSS_Color.MainColor;
+            btnConform.TextID = StringId.ConfirmTransferre;
+            frameBack2.AddChidren(btnConform);
+            btnConform.ButtonClickEvent += (sender, e) =>
             {
-                Y = Application.GetRealHeight(64),
-                Height = Application.GetRealHeight(204),
-                BackgroundColor = CSS_Color.MainBackgroundColor,
+                //濡傛灉璁剧疆鏈夊畨鍏ㄩ獙璇�,鍒欓渶瑕侀獙璇�
+                HdlCheckLogic.Current.CheckUnlockSecurity(true, (div) =>
+                {
+                    var form = new TransferingResidenceForm();
+                    form.AddForm(this.accountInfo);
+                });
             };
-            bodyView.AddChidren(headView);
 
-            ImageView myHeadImage = new ImageView()
+            HdlThreadLogic.Current.RunThread(() =>
             {
-                Y = Application.GetRealHeight(32),
-                Width = Application.GetRealWidth(84),
-                Height = Application.GetRealWidth(84),
-                Radius = (uint)Application.GetRealWidth(42),
-                ImagePath = UserInfo.Current.headImagePagePath,
-                Gravity = Gravity.CenterHorizontal,
-            };
-            headView.AddChidren(myHeadImage);
-
-            var btnConfirm = new Button()
-            {
-                Y = headView.Bottom + Application.GetRealHeight(8),
-                Height = Application.GetRealHeight(50),
-                TextAlignment = TextAlignment.Center,
-                TextColor = CSS_Color.MainColor,
-                TextSize = CSS_FontSize.SubheadingFontSize,
-                BackgroundColor = CSS_Color.MainBackgroundColor,
-                Text = "纭杩囨埛"
-
-            };
-            bodyView.AddChidren(btnConfirm);
-
+                //鐢ㄧ嚎绋嬪幓涓嬭浇澶村儚
+                var headImageBytes = ImageUtlis.Current.DownHeadImageByImageKey(this.accountInfo.MemberHeadIcon, true);
+                if (headImageBytes != null && headImageBytes.Length > 0)
+                {
+                    HdlThreadLogic.Current.RunMain(() =>
+                    {
+                        btnHeadImage.ImageBytes = headImageBytes;
+                    }, ShowErrorMode.NO);
+                }
+            }); 
         }
 
+        #endregion
     }
 
 }
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/Transfer/TransferingResidencePage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/Transfer/TransferingResidencePage.cs
new file mode 100644
index 0000000..20484cb
--- /dev/null
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/Transfer/TransferingResidencePage.cs
@@ -0,0 +1,295 @@
+锘縰sing System;
+using Shared;
+using HDL_ON.UI.CSS;
+using HDL_ON.Stan;
+using System.Collections.Generic;
+
+namespace HDL_ON.UI
+{
+    /// <summary>
+    /// 鎵ц杩囨埛鎿嶄綔鐨勭晫闈�
+    /// </summary>
+    public class TransferingResidenceForm : EditorCommonForm
+    {
+        #region 鈻� 鍙橀噺澹版槑___________________________
+
+        /// <summary>
+        /// 鎴愬憳淇℃伅
+        /// </summary>
+        private AccountInfoResult accountResult = null;
+
+        #endregion
+
+        #region 鈻� 鍒濆鍖朹____________________________
+
+        /// <summary>
+        /// 鐢婚潰鏄剧ず(搴曞眰浼氬浐瀹氳皟鐢ㄦ鏂规硶锛屽�熶互瀹屾垚鐢婚潰鍒涘缓)
+        /// </summary>
+        /// <param name="i_accountResult">璐﹀彿淇℃伅</param>
+        public void ShowForm(AccountInfoResult i_accountResult)
+        {
+            this.ScrollLeftEnabled = false;
+
+            this.accountResult = i_accountResult;
+
+            //杩囨埛
+            base.SetTitleText(Language.StringByID(StringId.Transfer));
+
+
+            //鍒濆鍖栦腑閮ㄤ俊鎭�
+            this.InitMiddleFrame();
+        }
+
+        /// <summary>
+        /// 鍒濆鍖栦腑閮ㄤ俊鎭�
+        /// </summary>
+        private void InitMiddleFrame()
+        {
+            //娓呯┖bodyFrame
+            this.ClearBodyFrame();
+
+            //涓讳汉鐨勫浘鏍�
+            var btnAdminIcon = new ImageView();
+            btnAdminIcon.Y = Application.GetRealHeight(112);
+            btnAdminIcon.X = Application.GetRealWidth(48);
+            btnAdminIcon.Height = this.GetPictrueRealSize(70);
+            btnAdminIcon.Width = this.GetPictrueRealSize(70);
+            btnAdminIcon.Radius = (uint)this.GetPictrueRealSize(70) / 2;
+            btnAdminIcon.ImagePath = UserInfo.Current.headImagePagePath;
+            bodyFrameLayout.AddChidren(btnAdminIcon);
+            //涓讳汉鍚嶅瓧  (浠ヤ腑闂翠负鍩哄噯,宸﹀彸闂磋窛16)
+            var btnAdminName = new NormalViewControl((btnAdminIcon.Right + btnAdminIcon.X) - HdlControlResourse.XXLeft * 2, Application.GetRealHeight(48), false);
+            btnAdminName.X = HdlControlResourse.XXLeft;
+            btnAdminName.Y = btnAdminIcon.Bottom + Application.GetRealHeight(10);
+            btnAdminName.IsBold = true;
+            btnAdminName.IsMoreLines = true;
+            btnAdminName.TextAlignment = TextAlignment.TopCenter;
+            btnAdminName.TextSize = CSS_FontSize.SubheadingFontSize;
+            btnAdminName.Text = string.IsNullOrEmpty(UserInfo.Current.userName) == true ? UserInfo.Current.AccountString : UserInfo.Current.userName;
+            bodyFrameLayout.AddChidren(btnAdminName);
+
+            //澶村儚
+            var imageByte = ImageUtlis.Current.ReadFile(this.accountResult.MemberHeadIcon);
+            var btnUserIcon = new ImageView();
+            btnUserIcon.Y = btnAdminIcon.Y;
+            btnUserIcon.X = bodyFrameLayout.Width - Application.GetRealWidth(48) - this.GetPictrueRealSize(70);
+            btnUserIcon.Height = this.GetPictrueRealSize(70);
+            btnUserIcon.Width = this.GetPictrueRealSize(70);
+            btnUserIcon.Radius = (uint)this.GetPictrueRealSize(70) / 2;
+            if (imageByte != null && imageByte.Length > 0)
+            {
+                btnUserIcon.ImageBytes = imageByte;
+            }
+            else
+            {
+                btnUserIcon.ImagePath = "LoginIcon/2.png";
+            }
+            bodyFrameLayout.AddChidren(btnUserIcon);
+
+            //鏄电О  (浠ヤ腑闂翠负鍩哄噯,宸﹀彸闂磋窛50)
+            var btnName = new NormalViewControl(btnAdminName.Width, btnAdminName.Height, false);
+            btnName.X = bodyFrameLayout.Width - btnAdminName.X - btnAdminName.Width;
+            btnName.Y = btnAdminName.Y;
+            btnName.IsBold = true;
+            btnName.IsMoreLines = true;
+            btnName.TextAlignment = TextAlignment.TopCenter;
+            btnName.TextSize = CSS_FontSize.SubheadingFontSize;
+            btnName.Text = accountResult.MemberName;
+            bodyFrameLayout.AddChidren(btnName);
+
+            //寮�鍚繛鎺ョ殑鍋囨兂鍔ㄧ敾鏁堟灉绾跨▼
+            this.StartConcetionAnimeteThread(btnAdminIcon.Right + Application.GetRealWidth(16));
+
+            //缁堟
+            var btnCancel = new BottomClickButton();
+            btnCancel.Y = Application.GetRealHeight(519);
+            btnCancel.TextID = StringId.Terminate;
+            bodyFrameLayout.AddChidren(btnCancel);
+            btnCancel.ButtonClickEvent += (sender, e) =>
+            {
+                this.CloseForm();
+            };
+
+            //鍒濆鍖栨秷鎭帶浠�
+            this.InitMsgControl();
+        }
+
+        #endregion
+
+        #region 鈻� 鍋囨兂鍔ㄧ敾___________________________
+
+        /// <summary>
+        /// 寮�鍚繛鎺ョ殑鍋囨兂鍔ㄧ敾鏁堟灉绾跨▼
+        /// </summary>
+        private void StartConcetionAnimeteThread(int XX)
+        {
+            //鐢熸垚鐐瑰彿鍥炬牱
+            int pointXX = XX;
+            int pointWidth = Application.GetRealWidth(4);
+            int pointSpace = Application.GetRealWidth(9);
+            for (int i = 0; i < 9; i++)
+            {
+                var btnPoint = new NormalViewControl(pointWidth, pointWidth, false);
+                btnPoint.Radius = (uint)pointWidth / 2;
+                btnPoint.BackgroundColor = CSS_Color.PromptingColor1;
+                btnPoint.Y = Application.GetRealHeight(144);
+                btnPoint.X = pointXX;
+                bodyFrameLayout.AddChidren(btnPoint);
+                pointXX = btnPoint.Right + pointSpace;
+            }
+
+            var listPoint = new List<int>();
+            //璺冲姩鐨勯棿璺�
+            int jumpSpace = pointWidth + pointSpace;
+            for (int i = 0; i < 9; i++)
+            {
+                //X杞�+Index*(鍥炬爣澶у皬+闂磋窛)
+                listPoint.Add(XX + i * jumpSpace);
+            }
+
+            var btnRound = new IconViewControl(8);
+            btnRound.Radius = (uint)btnRound.IconSize / 2;
+            btnRound.BackgroundColor = CSS_Color.MainColor;
+            btnRound.X = listPoint[0] - (btnRound.IconSize - pointWidth) / 2;
+            btnRound.Y = Application.GetRealHeight(142);
+            bodyFrameLayout.AddChidren(btnRound);
+
+            HdlThreadLogic.Current.RunThread(() =>
+            {
+                int index = 1;
+                while (this.Parent != null)
+                {
+                    System.Threading.Thread.Sleep(500);
+                    HdlThreadLogic.Current.RunMain(() =>
+                    {
+                        if (btnRound != null)
+                        {
+                            btnRound.X = listPoint[index];
+                            index++;
+                            if (index == listPoint.Count)
+                            {
+                                index = 0;
+                            }
+                        }
+                    });
+                }
+            });
+        }
+
+        #endregion
+
+        #region 鈻� 鎵ц杩囨埛___________________________
+
+        /// <summary>
+        /// 鎵ц杩囨埛
+        /// </summary>
+        private void DoTransferResidence()
+        {
+            this.ShowProgressBar();
+            System.Threading.Thread.Sleep(1500);
+            //杩囨埛
+            bool success = new DAL.Server.HttpServerRequest().TransferResidence(this.accountResult.Account);
+
+            this.CloseProgressBar();
+            HdlThreadLogic.Current.RunMain(() =>
+            {
+                var form = new TransferResidenceResultPage();
+                form.AddForm(this.accountResult, success);
+                form.FinishEvent += () =>
+                {
+                    if (success == false)
+                    {
+                        //閲嶈瘯
+                        HdlThreadLogic.Current.RunThread(() =>
+                        {
+                            //鎵ц杩囨埛
+                            this.DoTransferResidence();
+                        });
+                    }
+                    else
+                    {
+                        for (int i = 0; i < UserInfo.Current.regionList.Count; i++)
+                        {
+                            //绉婚櫎褰撳墠浣忓畢Id
+                            if (UserInfo.Current.regionList[i].id == Entity.DB_ResidenceData.Instance.CurrentRegion.id)
+                            {
+                                UserInfo.Current.regionList.RemoveAt(i);
+                                UserInfo.Current.SaveUserInfo();
+                                break;
+                            }
+                        }
+                        //鍏抽棴鎵�鏈夌晫闈�
+                        HdlFormLogic.Current.CloseAllOpenForm();
+
+                        if (UserInfo.Current.regionList.Count == 0)
+                        {
+                            //娌℃湁浣忓畢浜�,杩斿洖鐧婚檰鐣岄潰
+                            HDLCommon.Current.Logout();
+                        }
+                        else
+                        {
+                            Entity.DB_ResidenceData.Instance.CurrentRegion = UserInfo.Current.regionList[0];
+                            Entity.DB_ResidenceData.Instance.SaveResidenceData();
+                            //鍒锋柊浣忓畢鏁版嵁
+                            Common.ApiUtlis.Ins.DownloadData();
+
+                            //鑾峰彇涓婚〉鐨勯偅涓鍣�
+                            var userPage = MainPage.BasePageView.GetChildren(MainPage.BasePageView.ChildrenCount - 1) as UserPage;
+                            if (userPage != null)
+                            {
+                                //鍒锋柊涓汉涓績鐣岄潰
+                                MainPage.CurPageIndex = 1;
+                                userPage.ChoosePersonalCenter();
+                            }
+                        }
+                    }
+                };
+            });
+        }
+
+        #endregion
+
+        #region 鈻� 涓�鑸柟娉昣__________________________
+
+        /// <summary>
+        /// 鍒濆鍖栨秷鎭帶浠�
+        /// </summary>
+        private void InitMsgControl()
+        {
+            string msg = Language.StringByID(StringId.IsTransferingPleaseWaitting);
+
+            //姝e湪杩囨埛缁欑敤鎴�,璇风◢鍚�...
+            var btnMsg = new NormalViewControl(bodyFrameLayout.Width, Application.GetRealHeight(20), false);
+            btnMsg.Y = Application.GetRealHeight(288);
+            btnMsg.TextAlignment = TextAlignment.Center;
+            btnMsg.TextSize = CSS_FontSize.PromptFontSize_FirstLevel;
+            btnMsg.Text = msg;
+            bodyFrameLayout.AddChidren(btnMsg);
+
+            HdlThreadLogic.Current.RunThread(() =>
+            {
+                int timeOut = 15;
+                while (timeOut >= 0 && this.Parent != null)
+                {
+                    HdlThreadLogic.Current.RunMain(() =>
+                    {
+                        btnMsg.Text = msg + timeOut + "s";
+                        if (timeOut == 0)
+                        {
+                            btnMsg.Text = msg;
+                        }
+                    }, ShowErrorMode.NO);
+                    System.Threading.Thread.Sleep(1000);
+                    timeOut--;
+                }
+                if (timeOut <= 0)
+                {
+                    //鎵ц杩囨埛鎿嶄綔
+                    this.DoTransferResidence();
+                }
+            });
+        }
+
+        #endregion
+    }
+}
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/UnlockSetting/AppUnlockPasswordPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/UnlockSetting/AppUnlockPasswordPage.cs
index 706facf..ccb481a 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/UnlockSetting/AppUnlockPasswordPage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/UnlockSetting/AppUnlockPasswordPage.cs
@@ -147,7 +147,7 @@
             etPassword = new EditText()
             {
                 Y = Application.GetRealWidth(100),
-                Height = Application.GetRealWidth(0),
+                Height = 1,
                 Foucs = true,
                 //Visible = false,
                 IsNumberKeyboardType = true,
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/UnlockSetting/AppUnlockSettingsPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/UnlockSetting/AppUnlockSettingsPage.cs
index 72283d9..6eb3d6b 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/UnlockSetting/AppUnlockSettingsPage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/UnlockSetting/AppUnlockSettingsPage.cs
@@ -61,18 +61,18 @@
         //Button btnSecurityBg;
 
 
-        ///// <summary>
-        ///// 璁剧疆闂ㄩ攣閫夐」鎻愮ず
-        ///// </summary>
-        //Button btnDoorlockSelectionTip;
-        ///// <summary>
-        ///// 璁剧疆闂ㄩ攣閫夐」閫変腑鍥炬爣
-        ///// </summary>
-        //Button btnDoorlockSelectionIcon;
-        ///// <summary>
-        ///// 璁剧疆闂ㄩ攣閫夐」鑳屾櫙
-        ///// </summary>
-        //Button btnDoorlockBg;
+        /// <summary>
+        /// 璁剧疆闂ㄩ攣閫夐」鎻愮ず
+        /// </summary>
+        Button btnDoorlockSelectionTip;
+        /// <summary>
+        /// 璁剧疆闂ㄩ攣閫夐」閫変腑鍥炬爣
+        /// </summary>
+        Button btnDoorlockSelectionIcon;
+        /// <summary>
+        /// 璁剧疆闂ㄩ攣閫夐」鑳屾櫙
+        /// </summary>
+        Button btnDoorlockBg;
         #endregion
 
         /// <summary>
@@ -369,46 +369,46 @@
 
 
             #region Doorlock
-            //optionView.AddChidren(new Button() { Width = Application.GetRealWidth(16) });
+            optionView.AddChidren(new Button() { Width = Application.GetRealWidth(16) });
 
-            //FrameLayout doorlockDiv = new FrameLayout()
-            //{
-            //    Width = Application.GetRealWidth(94),
-            //};
-            //optionView.AddChidren(doorlockDiv);
+            FrameLayout doorlockDiv = new FrameLayout()
+            {
+                Width = Application.GetRealWidth(94),
+            };
+            optionView.AddChidren(doorlockDiv);
 
-            //btnDoorlockBg = new Button()
-            //{
-            //    Height = Application.GetRealWidth(174),
-            //    UnSelectedImagePath = "PersonalCenter/AppUnlockSetting/4.png",
-            //    SelectedImagePath = "PersonalCenter/AppUnlockSetting/4On.png"
-            //};
-            //doorlockDiv.AddChidren(btnDoorlockBg);
+            btnDoorlockBg = new Button()
+            {
+                Height = Application.GetRealWidth(174),
+                UnSelectedImagePath = "PersonalCenter/AppUnlockSetting/4.png",
+                SelectedImagePath = "PersonalCenter/AppUnlockSetting/4On.png"
+            };
+            doorlockDiv.AddChidren(btnDoorlockBg);
 
-            //btnDoorlockSelectionIcon = new Button()
-            //{
-            //    X = Application.GetRealWidth(5),
-            //    Y = Application.GetRealWidth(174),
-            //    Width = Application.GetRealWidth(30),
-            //    Height = Application.GetRealWidth(30),
-            //    UnSelectedImagePath = "Public/ChooseIcon.png",
-            //    SelectedImagePath = "Public/ChooseOnIcon.png",
-            //};
-            //doorlockDiv.AddChidren(btnDoorlockSelectionIcon);
+            btnDoorlockSelectionIcon = new Button()
+            {
+                X = Application.GetRealWidth(5),
+                Y = Application.GetRealWidth(174),
+                Width = Application.GetRealWidth(30),
+                Height = Application.GetRealWidth(30),
+                UnSelectedImagePath = "Public/ChooseIcon.png",
+                SelectedImagePath = "Public/ChooseOnIcon.png",
+            };
+            doorlockDiv.AddChidren(btnDoorlockSelectionIcon);
 
-            //btnDoorlockSelectionTip = new Button()
-            //{
-            //    X = Application.GetRealWidth(30),
-            //    Y = Application.GetRealWidth(174),
-            //    Width = Application.GetRealWidth(74),
-            //    Height = Application.GetRealWidth(30),
-            //    TextID = StringId.RemoteUnlocking,
-            //    TextAlignment = TextAlignment.CenterLeft,
-            //    TextColor = CSS_Color.FirstLevelTitleColor,
-            //    SelectedTextColor = CSS_Color.MainColor,
-            //    TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel
-            //};
-            //doorlockDiv.AddChidren(btnDoorlockSelectionTip);
+            btnDoorlockSelectionTip = new Button()
+            {
+                X = Application.GetRealWidth(30),
+                Y = Application.GetRealWidth(174),
+                Width = Application.GetRealWidth(74),
+                Height = Application.GetRealWidth(30),
+                TextID = StringId.RemoteUnlocking,
+                TextAlignment = TextAlignment.CenterLeft,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                SelectedTextColor = CSS_Color.MainColor,
+                TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel
+            };
+            doorlockDiv.AddChidren(btnDoorlockSelectionTip);
             #endregion
             #endregion
 
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/UnlockSetting/AppUnlockSettingsPageBLL.cs b/HDL_ON/UI/UI2/4-PersonalCenter/UnlockSetting/AppUnlockSettingsPageBLL.cs
index d045730..43e9dc3 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/UnlockSetting/AppUnlockSettingsPageBLL.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/UnlockSetting/AppUnlockSettingsPageBLL.cs
@@ -34,7 +34,7 @@
                     btnStartupBg.IsSelected = btnStartupSelectionIcon.IsSelected = btnStartupSelectionTip.IsSelected = false;
                     #region F3闃舵
                     //btnSecurityBg.IsSelected = btnSecuritySelectionIcon.IsSelected = btnSecuritySelectionTip.IsSelected = false;
-                    //btnDoorlockBg.IsSelected = btnDoorlockSelectionIcon.IsSelected = btnDoorlockSelectionTip.IsSelected = false;
+                    btnDoorlockBg.IsSelected = btnDoorlockSelectionIcon.IsSelected = btnDoorlockSelectionTip.IsSelected = false;
                     #endregion
 
                     btnTipMsg.TextID = StringId.UnprotectedTipMsg;
@@ -176,49 +176,49 @@
             //btnSecuritySelectionIcon.MouseUpEventHandler = eventHandler3;
             //btnSecuritySelectionTip.MouseUpEventHandler = eventHandler3;
 
-            //EventHandler<MouseEventArgs> eventHandler4 = (sender, e) =>
-            //{
-            //    bool result = !btnDoorlockBg.IsSelected;
-            //    if (!result)
-            //    {
-            //        //濡傛灉鍙墿杩滅▼寮�閿佷笉鑳藉彇娑堣繙绋嬪紑閿�
-            //        if (!CheckIfCanDeselect("3")) return;
-            //    }
+            EventHandler<MouseEventArgs> eventHandler4 = (sender, e) =>
+            {
+                bool result = !btnDoorlockBg.IsSelected;
+                if (!result)
+                {
+                    //濡傛灉鍙墿杩滅▼寮�閿佷笉鑳藉彇娑堣繙绋嬪紑閿�
+                    if (!CheckIfCanDeselect("3")) return;
+                }
 
-            //    btnDoorlockBg.IsSelected = btnDoorlockSelectionIcon.IsSelected = btnDoorlockSelectionTip.IsSelected = result;
+                btnDoorlockBg.IsSelected = btnDoorlockSelectionIcon.IsSelected = btnDoorlockSelectionTip.IsSelected = result;
 
-            //    btnTipMsg.Text = Language.StringByID(StringId.RemoteUnlockingTipMsg);
-            //    if (result)
-            //    {
-            //        btnUnprotectedBg.IsSelected = btnUnprotectedSelectionIcon.IsSelected = btnUnprotectedSelectionTip.IsSelected = false;
-            //        if (!UserInfo.Current.appUnlockPage.Contains("3"))
-            //        {
-            //            UserInfo.Current.appUnlockPage.Add("3");
-            //            if (UserInfo.Current.appUnlockPasswrod != "")
-            //                UserInfo.Current.SaveUserInfo();
-            //        }
-            //        unlockOptionView.Visible = true;
-            //    }
-            //    else
-            //    {
-            //        if (UserInfo.Current.appUnlockPage.Contains("3"))
-            //        {
-            //            UserInfo.Current.appUnlockPage.Remove("3");
-            //        }
-            //        if (UserInfo.Current.appUnlockPage.Count == 0)
-            //        {
-            //            btnUnprotectedBg.IsSelected = btnUnprotectedSelectionIcon.IsSelected = btnUnprotectedSelectionTip.IsSelected = true;
-            //            btnTipMsg.TextID = StringId.UnprotectedTipMsg;
-            //            UserInfo.Current.appUnlockPasswrod = "";
-            //            unlockOptionView.Visible = false;
-            //            refreshAction();
-            //        }
-            //        UserInfo.Current.SaveUserInfo();
-            //    }
-            //};
-            //btnDoorlockBg.MouseUpEventHandler = eventHandler4;
-            //btnDoorlockSelectionIcon.MouseUpEventHandler = eventHandler4;
-            //btnDoorlockSelectionTip.MouseUpEventHandler = eventHandler4;
+                btnTipMsg.Text = Language.StringByID(StringId.RemoteUnlockingTipMsg);
+                if (result)
+                {
+                    btnUnprotectedBg.IsSelected = btnUnprotectedSelectionIcon.IsSelected = btnUnprotectedSelectionTip.IsSelected = false;
+                    if (!UserInfo.Current.appUnlockPage.Contains("3"))
+                    {
+                        UserInfo.Current.appUnlockPage.Add("3");
+                        if (UserInfo.Current.appUnlockPasswrod != "")
+                            UserInfo.Current.SaveUserInfo();
+                    }
+                    unlockOptionView.Visible = true;
+                }
+                else
+                {
+                    if (UserInfo.Current.appUnlockPage.Contains("3"))
+                    {
+                        UserInfo.Current.appUnlockPage.Remove("3");
+                    }
+                    if (UserInfo.Current.appUnlockPage.Count == 0)
+                    {
+                        btnUnprotectedBg.IsSelected = btnUnprotectedSelectionIcon.IsSelected = btnUnprotectedSelectionTip.IsSelected = true;
+                        btnTipMsg.TextID = StringId.UnprotectedTipMsg;
+                        UserInfo.Current.appUnlockPasswrod = "";
+                        unlockOptionView.Visible = false;
+                        refreshAction();
+                    }
+                    UserInfo.Current.SaveUserInfo();
+                }
+            };
+            btnDoorlockBg.MouseUpEventHandler = eventHandler4;
+            btnDoorlockSelectionIcon.MouseUpEventHandler = eventHandler4;
+            btnDoorlockSelectionTip.MouseUpEventHandler = eventHandler4;
             #endregion
         }
 
@@ -244,11 +244,11 @@
                 //    btnSecurityBg.IsSelected = btnSecuritySelectionIcon.IsSelected = btnSecuritySelectionTip.IsSelected = true;
                 //    btnTipMsg.Text = Language.StringByID(StringId.DefenseAndUndefenseTipMsg);
                 //}
-                //if (UserInfo.Current.appUnlockPage.Contains("3"))
-                //{
-                //    btnDoorlockBg.IsSelected = btnDoorlockSelectionIcon.IsSelected = btnDoorlockSelectionTip.IsSelected = true;
-                //    btnTipMsg.Text = Language.StringByID(StringId.RemoteUnlockingTipMsg);
-                //}
+                if (UserInfo.Current.appUnlockPage.Contains("3"))
+                {
+                    btnDoorlockBg.IsSelected = btnDoorlockSelectionIcon.IsSelected = btnDoorlockSelectionTip.IsSelected = true;
+                    btnTipMsg.Text = Language.StringByID(StringId.RemoteUnlockingTipMsg);
+                }
                 #endregion
             }
         }
diff --git a/HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/AcControlPage.cs b/HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/AcControlPage.cs
index 9aa7f00..4416835 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/AcControlPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/AcControlPage.cs
@@ -472,7 +472,6 @@
                 };
             }
         }
-
         /// <summary>
         /// 鍔犺浇棰濆瀵圭孩澶栨寜閽晫闈�
         /// </summary>
diff --git a/HDL_ON/UI/UI2/FuntionControlView/ArmSensor/SenesorMegahealthPage.cs b/HDL_ON/UI/UI2/FuntionControlView/ArmSensor/SenesorMegahealthPage.cs
deleted file mode 100644
index 7e35058..0000000
--- a/HDL_ON/UI/UI2/FuntionControlView/ArmSensor/SenesorMegahealthPage.cs
+++ /dev/null
@@ -1,183 +0,0 @@
-锘縰sing Shared;
-using HDL_ON.Stan;
-using HDL_ON.UI.CSS;
-using HDL_ON.Entity;
-using System.Collections.Generic;
-using System;
-
-namespace HDL_ON.UI
-{
-    public class SenesorMegahealthPage : DeviceFunctionCardCommonForm
-    {
-        #region 鈻� 鍙橀噺澹版槑___________________________
-
-        /// <summary>
-        /// 鍥炬爣
-        /// </summary>
-        private IconViewControl btnIcon = null;
-        /// <summary>
-        /// 鏂囨湰鎺т欢
-        /// </summary>
-        private NormalViewControl btnSuctionView = null;
-
-        #endregion
-
-        #region 鈻� 鍒濆鍖朹____________________________
-
-        /// <summary>
-        /// 鍒濆鍖栫櫧鑹插尯鍩熺殑鍐呭
-        /// </summary>
-        public override void InitFrameWhiteContent()
-        {
-            base.SetTitleText(Language.StringByID(StringId.SenesorMillimeterWave));
-
-            //娣诲姞绗簩绱㈠紩椤�
-            this.AddSecondPage();
-            //鍒濆鍖栫涓�涓储寮曢〉鐨勫唴瀹�
-            this.InitFrameWhiteContent1();
-            //鍒濆鍖栫浜屼釜绱㈠紩椤电殑鍐呭
-            this.InitFrameWhiteContent2();
-
-            //鍒锋柊褰撳墠璁惧鐨勭姸鎬佺紦瀛�
-            this.RefreshNowDeviceStatuMemory(this.device);
-            //鍒锋柊鐣岄潰鐘舵��
-            this.RefreshFormStatu();
-            //璇诲彇鐘舵��
-            new System.Threading.Thread(() =>
-            {
-                if (device.spk == SPK.SenesorMegahealth)
-                {
-                    DriverLayer.Control.Ins.SendReadCommand(device, true);
-                }
-            })
-            { IsBackground = true }.Start();
-        }
-
-        /// <summary>
-        /// 鍒濆鍖栫涓�涓储寮曢〉鐨勫唴瀹�
-        /// </summary>
-        private void InitFrameWhiteContent1()
-        {
-            btnIcon = new IconViewControl(198)
-            {
-                Gravity = Gravity.CenterHorizontal,
-                Y = Application.GetRealWidth(146),
-                UnSelectedImagePath = "FunctionIcon/ArmSensor/UnderProtectionBgIcon.png",
-            };
-            FrameWhiteCentet1.AddChidren(btnIcon);
-
-            btnSuctionView = new NormalViewControl(300, 84, true)
-            {
-                Gravity = Gravity.CenterHorizontal,
-                Y = btnIcon.Bottom,
-                TextAlignment = TextAlignment.Center,
-                TextSize = CSS_FontSize.TextFontSize,
-                TextColor = CSS_Color.TextualColor,
-                SelectedTextColor = CSS_Color.MainColor,
-            };
-            FrameWhiteCentet1.AddChidren(btnSuctionView);
-        }
-
-        /// <summary>
-        /// 鍒濆鍖栫浜屼釜绱㈠紩椤电殑鍐呭
-        /// </summary>
-        private void InitFrameWhiteContent2()
-        {
-            var paging = new ArmSensorHistroyPaging(device);
-            paging.InitFrame(FrameWhiteCentet2);
-        }
-
-        #endregion
-
-        #region 鈻� 璁惧鐘舵�佸弽棣坃______________________
-
-        /// <summary>
-        /// 璁惧鐘舵�佸弽棣�
-        /// </summary>
-        /// <param name="i_LocalDevice"></param>
-        public override void DeviceStatuPush(Function i_LocalDevice)
-        {
-            //涓嶆槸鍚屼竴涓笢瑗�
-            if (this.device.sid != i_LocalDevice.sid) { return; }
-
-            //鍒锋柊褰撳墠璁惧鐨勭姸鎬佺紦瀛�
-            this.RefreshNowDeviceStatuMemory(i_LocalDevice);
-            //鍒锋柊鐣岄潰鐘舵��
-            this.RefreshFormStatu();
-        }
-
-        #endregion
-
-        #region 鈻� 鍙戦�佸悇绉嶅懡浠______________________
-
-        #endregion
-
-        #region 鈻� 鍒锋柊鐣岄潰鐘舵�乢______________________
-
-        /// <summary>
-        /// 鍒锋柊鐣岄潰鐘舵��
-        /// </summary>
-        private void RefreshFormStatu()
-        {
-            Application.RunOnMainThread(() => {
-                var temp = device.attributes.Find((sta) => sta.key == FunctionAttributeKey.ActionStatus);
-                if (temp != null)
-                {
-                    if (temp.state == "fall")   //璺屽��
-                    {
-                        btnIcon.UnSelectedImagePath = "FunctionIcon/ArmSensor/SomeoneFellBgIcon.png";
-                        btnSuctionView.TextID = StringId.SomeoneFell;
-                        btnSuctionView.IsSelected = true;
-                    }
-                    else if (temp.state == "uninhabited")//鏃犱汉
-                    {
-                        btnIcon.UnSelectedImagePath = "FunctionIcon/ArmSensor/UnderProtectionBgIcon.png";
-                        btnSuctionView.TextID = StringId.UnderProtection;
-                        btnSuctionView.IsSelected = false;
-                    }
-                    else//鏈変汉
-                    {
-                        btnIcon.UnSelectedImagePath = "FunctionIcon/ArmSensor/SomeoneInBgIcon.png";
-                        btnSuctionView.TextID = StringId.SomeoneIn;
-                        btnSuctionView.IsSelected = true;
-                    }
-                }
-            });
-        }
-
-        #endregion
-
-        #region 鈻� 涓�鑸柟娉昣__________________________
-
-        /// <summary>
-        /// 鍒锋柊褰撳墠璁惧鐨勭姸鎬佺紦瀛�
-        /// </summary>
-        private void RefreshNowDeviceStatuMemory(Function i_LocalDevice)
-        {
-            //foreach (var data in i_LocalDevice.status)
-            //{
-            //    if (data.key == FunctionAttributeKey.Status)
-            //    {
-            //        Application.RunOnMainThread(() =>
-            //        {
-            //            if (data.value.ToLower() == "open")
-            //            {
-            //                this.btnIcon.IsSelected = true;
-            //                this.btnSuctionView.IsSelected = true;
-            //                this.btnSuctionView.TextID = StringId.Open;
-            //            }
-            //            else
-            //            {
-            //                this.btnIcon.IsSelected = false;
-            //                this.btnSuctionView.IsSelected = false;
-            //                this.btnSuctionView.TextID = StringId.Close;
-            //            }
-            //        });
-            //    }
-            //}
-        }
-
-        #endregion
-    }
-
-}
diff --git a/HDL_ON/UI/UI2/FuntionControlView/ArmSensor/SensorDoorWinwsPage.cs b/HDL_ON/UI/UI2/FuntionControlView/ArmSensor/SensorDoorWinwsPage.cs
index 57a3ff5..0d777d9 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/ArmSensor/SensorDoorWinwsPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/ArmSensor/SensorDoorWinwsPage.cs
@@ -29,7 +29,7 @@
         /// </summary>
         public override void InitFrameWhiteContent()
         {
-            base.SetTitleText(Language.StringByID(StringId.Sensor));
+            base.SetTitleText(device.name);
 
             //娣诲姞绗簩绱㈠紩椤�
             this.AddSecondPage();
diff --git a/HDL_ON/UI/UI2/FuntionControlView/ArmSensor/SensorPirPage.cs b/HDL_ON/UI/UI2/FuntionControlView/ArmSensor/SensorPirPage.cs
index 36879be..1599610 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/ArmSensor/SensorPirPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/ArmSensor/SensorPirPage.cs
@@ -28,7 +28,7 @@
         public override void InitFrameWhiteContent()
         {
             base.ShowColltionButton = false;
-            base.SetTitleText(Language.StringByID(StringId.Sensor));
+            base.SetTitleText(device.name);
 
             //娣诲姞绗簩绱㈠紩椤�
             this.AddSecondPage();
diff --git a/HDL_ON/UI/UI2/FuntionControlView/ArmSensor/SensorSmokePage.cs b/HDL_ON/UI/UI2/FuntionControlView/ArmSensor/SensorSmokePage.cs
index 2b28caf..67ae126 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/ArmSensor/SensorSmokePage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/ArmSensor/SensorSmokePage.cs
@@ -27,7 +27,7 @@
         /// </summary>
         public override void InitFrameWhiteContent()
         {
-            base.SetTitleText(Language.StringByID(StringId.Sensor));
+            base.SetTitleText(device.name);
 
             //娣诲姞绗簩绱㈠紩椤�
             this.AddSecondPage();
diff --git a/HDL_ON/UI/UI2/FuntionControlView/ArmSensor/SensorWaterImmersionPage.cs b/HDL_ON/UI/UI2/FuntionControlView/ArmSensor/SensorWaterImmersionPage.cs
index 074c6ad..b2c3e3e 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/ArmSensor/SensorWaterImmersionPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/ArmSensor/SensorWaterImmersionPage.cs
@@ -27,7 +27,7 @@
         /// </summary>
         public override void InitFrameWhiteContent()
         {
-            base.SetTitleText(Language.StringByID(StringId.Sensor));
+            base.SetTitleText(device.name);
 
             //娣诲姞绗簩绱㈠紩椤�
             this.AddSecondPage();
diff --git a/HDL_ON/UI/UI2/FuntionControlView/DoorLock/DoorLockAlwaysOnListPage.cs b/HDL_ON/UI/UI2/FuntionControlView/DoorLock/DoorLockAlwaysOnListPage.cs
new file mode 100644
index 0000000..6b12d60
--- /dev/null
+++ b/HDL_ON/UI/UI2/FuntionControlView/DoorLock/DoorLockAlwaysOnListPage.cs
@@ -0,0 +1,398 @@
+锘縰sing Shared;
+using HDL_ON.UI.CSS;
+using HDL_ON.Stan;
+using System;
+using System.Collections.Generic;
+using System.Text;
+using HDL_ON.Entity;
+
+namespace HDL_ON.UI
+{
+    /// <summary>
+    /// 闂ㄩ攣甯稿紑鑷姩鍖栧垪琛ㄧ晫闈�
+    /// </summary>
+    public class DoorLockAlwaysOnListPage : EditorCommonForm
+    {
+        #region 鈻� 鍙橀噺澹版槑___________________________
+
+        /// <summary>
+        /// 涓婇儴Frame鐨勫鍣ㄦ帶浠�
+        /// </summary>
+        private FrameLayout frameTopBack = null;
+        /// <summary>
+        /// 涓嬮儴Frame鐨勫鍣ㄦ帶浠�
+        /// </summary>
+        private FrameLayout frameBottomBack = null;
+        /// <summary>
+        /// 鑷姩鍖栧垪琛ㄦ帶浠�
+        /// </summary>
+        private VerticalListControl listView = null;
+        /// <summary>
+        /// 闂ㄩ攣淇℃伅
+        /// </summary>
+        private DoorLockAlwayOnInfo doorLockInfo = new DoorLockAlwayOnInfo();
+        /// <summary>
+        /// 闂ㄩ攣瀵硅薄
+        /// </summary>
+        private Function doorDevice = null;
+
+        #endregion
+
+        #region 鈻� 鍒濆鍖朹____________________________
+
+        /// <summary>
+        /// 鐢婚潰鏄剧ず(搴曞眰浼氬浐瀹氳皟鐢ㄦ鏂规硶锛屽�熶互瀹屾垚鐢婚潰鍒涘缓)
+        /// </summary>
+        /// <param name="i_doorDevice">闂ㄩ攣瀵硅薄</param>
+        public void ShowForm(Function i_doorDevice)
+        {
+            this.doorDevice = i_doorDevice;
+
+            //甯稿紑
+            base.SetTitleText(Language.StringByID(StringId.AlwaysOn));
+
+            //鍒濆鍖栦腑閮ㄤ俊鎭�
+            this.InitMiddleFrame();
+        }
+
+        /// <summary>
+        /// 鍒濆鍖栦腑閮ㄤ俊鎭�
+        /// </summary>
+        private void InitMiddleFrame()
+        {
+            //娓呯┖bodyFrame
+            this.ClearBodyFrame();
+
+            //鍒濆鍖栦笂閮ㄦ帶浠�
+            this.InitTopTopBackControl();
+
+            //鍒濆鍖栦笅閮ㄦ帶浠�
+            this.InitBottomBackControl();
+        }
+
+        #endregion
+
+        #region 鈻� 鍒濆鍖栦笂閮ㄦ帶浠禵____________________
+
+        /// <summary>
+        /// 鍒濆鍖栦笂閮ㄦ帶浠�
+        /// </summary>
+        private void InitTopTopBackControl()
+        {
+            if (this.frameTopBack == null || this.frameTopBack.Parent == null)
+            {
+                this.frameTopBack = new FrameLayout();
+                frameTopBack.BackgroundColor = CSS_Color.MainBackgroundColor;
+                bodyFrameLayout.AddChidren(frameTopBack);
+            }
+            else
+            {
+                this.frameTopBack.RemoveAll();
+            }
+
+            //濡傛灉涓嶅浜庡父寮�妯″紡
+            if (this.doorLockInfo.IsAlwayOpen == false)
+            {
+                //閿佺殑鍥剧墖
+                var btnPic = new PicViewControl(102, 102);
+                btnPic.Y = Application.GetRealHeight(28);
+                btnPic.Gravity = Gravity.CenterHorizontal;
+                btnPic.UnSelectedImagePath = "FunctionIcon/DoorLock/UnLockPictrue2.png";
+                this.frameTopBack.AddChidren(btnPic);
+                btnPic.ButtonClickEvent += (sender, e) =>
+                {
+                    this.doorLockInfo.IsAlwayOpen = true;
+                    //閲嶆柊鍒濆鍖栦笂閮ㄦ帶浠�
+                    this.InitTopTopBackControl();
+                };
+
+                //鏃舵晥鎬у父寮�璁剧疆
+                var rowSettion = new FrameRowControl();
+                rowSettion.Y = btnPic.Bottom + Application.GetRealHeight(32);
+                this.frameTopBack.AddChidren(rowSettion);
+                rowSettion.AddLeftCaption(Language.StringByID(StringId.TimelyAlwaysOnSetting), 350);
+                rowSettion.AddRightArrow();
+                rowSettion.AddBottomLine();
+                rowSettion.ButtonClickEvent += (sender, e) =>
+                {
+                    //璁剧疆甯稿紑妯″紡鍚巤0}鎮ㄧ殑闂ㄩ攣灏嗗浜庢墦寮�鐘舵�亄0}鏄惁缁х画寮�鍚�
+                    HdlMessageLogic.Current.ShowMassage(ShowMsgType.Confirm, Language.StringByID(StringId.OpenAlwayOnConfirmMsg), () =>
+                    {
+                        var form = new DoorLockExpireTimeSettionPage();
+                        form.ShowForm();
+                        form.FinishEvent += (hour) =>
+                        {
+                            //宸插紑鍚�
+                            //HdlMessageLogic.Current.ShowMassage(ShowMsgType.ConfirmSuccess, Language.StringByID(StringId.AlreadyOpened), () =>
+                            //{
+
+                            //});
+                            //甯稿紑妯″紡鍏抽棴璁剧疆澶辨晥锛岃閲嶈瘯
+                            HdlMessageLogic.Current.ShowMassage(ShowMsgType.ConfirmFail, Language.StringByID(StringId.AlwayOnFailTimeSettionFailMsg), () =>
+                            {
+                            });
+                        };
+
+                    }, Language.StringByID(StringId.ConfirmOpen));
+                };
+
+                //鍙樻洿瀹瑰櫒楂樺害
+                this.frameTopBack.Height = rowSettion.Bottom + Application.GetRealHeight(12);
+            }
+            //濡傛灉澶勪簬甯稿紑妯″紡
+            else
+            {
+                //閿佺殑鍥剧墖
+                var btnPic = new PicViewControl(102, 102);
+                btnPic.Y = Application.GetRealHeight(28);
+                btnPic.Gravity = Gravity.CenterHorizontal;
+                btnPic.UnSelectedImagePath = "FunctionIcon/DoorLock/UnLockPictrue1.png";
+                this.frameTopBack.AddChidren(btnPic);
+
+                //鍏抽棴鎸夐挳
+                var btnClose = new BottomClickButton(220);
+                btnClose.Y = btnPic.Bottom + Application.GetRealHeight(28);
+                btnClose.TextID = StringId.Close;
+                this.frameTopBack.AddChidren(btnClose);
+                btnClose.ButtonClickEvent += (sender, e) =>
+                {
+                    this.doorLockInfo.IsAlwayOpen = false;
+                    //閲嶆柊鍒濆鍖栦笂閮ㄦ帶浠�
+                    this.InitTopTopBackControl();
+                };
+
+                //甯稿紑妯″紡灏嗕簬{12.31 14:59}鍏抽棴
+                var listMsg = Language.StringByID(StringId.AlwaysOnWillCloseOnTime).Split(new string[] { "{0}" }, StringSplitOptions.None);
+                int widthCount = 0;
+                //甯稿紑妯″紡灏嗕簬
+                var btnMsg1 = new NormalViewControl(100, 20, true);
+                btnMsg1.Y = btnClose.Bottom + Application.GetRealHeight(32);
+                btnMsg1.TextColor = CSS_Color.FirstLevelTitleColor;
+                btnMsg1.Text = listMsg[0];
+                btnMsg1.Width = btnMsg1.GetRealWidthByText();
+                this.frameTopBack.AddChidren(btnMsg1);
+                widthCount += btnMsg1.Width;
+                //鏃堕棿(12.31 14:59)
+                var startTime = this.doorLockInfo.StartTime.AddHours(this.doorLockInfo.AlwayOpenHour);
+                var btnMsgTime = new NormalViewControl(100, 20, true);
+                btnMsgTime.Y = btnMsg1.Y;
+                btnMsgTime.TextColor = CSS_Color.AuxiliaryColor2;
+                btnMsgTime.Text = HdlCommonLogic.Current.ConvertDayText(startTime.Month, startTime.Day, startTime.Year) + " " + startTime.ToString("HH:mm");
+                btnMsgTime.Width = btnMsgTime.GetRealWidthByText();
+                this.frameTopBack.AddChidren(btnMsgTime);
+                widthCount += btnMsgTime.Width;
+
+                NormalViewControl btnMsg2 = null;
+                if (listMsg.Length > 1)
+                {
+                    //鍏抽棴
+                    btnMsg2 = new NormalViewControl(100, 20, true);
+                    btnMsg2.Y = btnMsg1.Y;
+                    btnMsg2.TextColor = CSS_Color.FirstLevelTitleColor;
+                    btnMsg2.Text = listMsg[1];
+                    btnMsg2.Width = btnMsg2.GetRealWidthByText();
+                    this.frameTopBack.AddChidren(btnMsg2);
+                    widthCount += btnMsg2.Width;
+                }
+                //璁╄繖涓変釜涓滆タ灞呬腑
+                int defultXX = (this.frameTopBack.Width - widthCount) / 2;
+                btnMsg1.X = defultXX;
+                btnMsgTime.X = btnMsg1.Right;
+                if (btnMsg2 != null)
+                {
+                    btnMsg2.X = btnMsgTime.Right;
+                }
+
+                //鍙樻洿瀹瑰櫒楂樺害
+                this.frameTopBack.Height = btnMsgTime.Bottom + Application.GetRealHeight(16);
+            }
+            //鍒锋柊涓嬮儴Frame鎺т欢鐨勫潗鏍囧拰楂樺害
+            this.RefreshBottomFrameHeightAndLocation();
+        }
+
+        #endregion
+
+        #region 鈻� 鍒濆鍖栦笅閮ㄦ帶浠禵____________________
+
+        /// <summary>
+        /// 鍒濆鍖栦笅閮ㄦ帶浠�
+        /// </summary>
+        private void InitBottomBackControl()
+        {
+            if (this.frameBottomBack == null || this.frameBottomBack.Parent == null)
+            {
+                this.frameBottomBack = new FrameLayout();
+                frameBottomBack.BackgroundColor = CSS_Color.MainBackgroundColor;
+                bodyFrameLayout.AddChidren(frameBottomBack);
+                //甯稿紑鑷姩鍖�
+                var rowSettion = new FrameRowControl();
+                rowSettion.Y = Application.GetRealHeight(6);
+                frameBottomBack.AddChidren(rowSettion);
+                var btnCation = rowSettion.AddLeftCaption(Language.StringByID(StringId.AutomationAlwaysOn), 300);
+                btnCation.TextSize = CSS_FontSize.SubheadingFontSize;
+                btnCation.TextColor = CSS_Color.FirstLevelTitleColor;
+                btnCation.IsBold = true;
+                //娣诲姞鍥炬爣
+                var btnAddIcon = rowSettion.AddMostRightEmptyIcon(38, 38);
+                btnAddIcon.UnSelectedImagePath = "Public/AddIcon.png";
+                btnAddIcon.ButtonClickEvent += (sender, e) =>
+                {
+                    var form = new DoorLockAlwaysOnManagerPage();
+                    form.AddForm(new object[] { null });
+                };
+
+                //鍒楄〃鎺т欢
+                this.listView = new VerticalListControl();
+                frameBottomBack.AddChidren(listView);
+            }
+            else
+            {
+                this.frameBottomBack.RemoveAll();
+                this.listView.RemoveAll();
+            }
+            //鍒锋柊涓嬮儴Frame鎺т欢鐨勫潗鏍囧拰楂樺害
+            this.RefreshBottomFrameHeightAndLocation();
+
+            //娴嬭瘯
+            for (int i = 0; i < 2; i++)
+            {
+                //娣诲姞鑷姩鍖栨潯浠舵帶浠�
+                this.AddAutomationControl(new AlwayOnAutomationInfo());
+            }
+        }
+
+        #endregion
+
+        #region 鈻� 娣诲姞鑷姩鍖栨潯浠舵帶浠禵________________
+
+        /// <summary>
+        /// 娣诲姞鑷姩鍖栨潯浠舵帶浠�
+        /// </summary>
+        /// <param name="i_info">鑷姩鍖栦俊鎭�</param>
+        private void AddAutomationControl(AlwayOnAutomationInfo i_info)
+        {
+            //瀹瑰櫒鎺т欢
+            var rowBack = new RowLayout();
+            rowBack.LineColor = CSS_Color.viewTranslucence;
+            rowBack.SubViewWidth = Application.GetRealWidth(80);
+            rowBack.Height = Application.GetRealHeight(100);
+            this.listView.AddChidren(rowBack);
+
+            //娑堟伅
+            var btnMsg = new NormalViewControl(rowBack.Width - HdlControlResourse.XXLeft * 2, Application.GetRealHeight(20), false);
+            btnMsg.X = HdlControlResourse.XXLeft;
+            btnMsg.Y = Application.GetRealHeight(10);
+            btnMsg.TextColor = CSS_Color.FirstLevelTitleColor;
+            if (i_info.IsOpenAlwayOn == true)
+            {
+                //9:00 - 鎵撳紑甯稿紑妯″紡
+                btnMsg.Text = i_info.Hour + ":" + i_info.Minute.ToString().PadLeft(2, '0') + " - " + Language.StringByID(StringId.OpenAlwaysOnModel);
+            }
+            else
+            {
+                //9:00 - 鍏抽棴甯稿紑妯″紡
+                btnMsg.Text = i_info.Hour + ":" + i_info.Minute.ToString().PadLeft(2, '0') + " - " + Language.StringByID(StringId.CloseAlwaysOnModel);
+            }
+            rowBack.AddChidren(btnMsg);
+
+            //鍛ㄦ湡
+            var btnTimeLoop = new NormalViewControl(rowBack.Width - HdlControlResourse.XXLeft * 2, Application.GetRealHeight(18), false);
+            btnTimeLoop.X = btnMsg.X;
+            btnTimeLoop.Y = btnMsg.Bottom + Application.GetRealHeight(4);
+            btnTimeLoop.TextSize = CSS_FontSize.PromptFontSize_FirstLevel;
+            btnTimeLoop.TextColor = CSS_Color.PromptingColor1;
+            btnTimeLoop.Text = "鍛ㄤ竴 - 鍛ㄤ簲";
+            rowBack.AddChidren(btnTimeLoop);
+
+            //鍥炬爣琛屾帶浠�
+            var rowIcon = new FrameRowControl();
+            rowIcon.Gravity = Gravity.BottomCenter;
+            rowBack.AddChidren(rowIcon);
+
+            //鍏堢敾搴曠嚎
+            rowIcon.AddBottomLine();
+
+            //鍥哄畾鐨勪笁涓浘鏍�
+            var btnIcon1 = rowIcon.AddLeftIcon(28, "Phone/LogicIcon/selectTheTime.png");
+            var btnIcon2 = rowIcon.AddLeftIcon(20, "Phone/LogicIcon/link.png");
+            btnIcon2.X = btnIcon1.Right + Application.GetRealWidth(8);
+            var btnIcon3 = rowIcon.AddLeftIcon(28, "FunctionIcon/DoorLock/NormallyOpenIcon3.png");
+            btnIcon3.X = btnIcon2.Right + Application.GetRealWidth(8);
+
+            //寮�鍏�
+            var btnSwitch = rowIcon.AddMostRightSwitchIcon();
+            btnSwitch.ButtonClickEvent += (sender, e) =>
+            {
+                btnSwitch.IsSelected = !btnSwitch.IsSelected;
+            };
+
+            //缂栬緫
+            var btnEditor = new NormalViewControl(rowBack.SubViewWidth, rowBack.Height, false);
+            btnEditor.TextAlignment = TextAlignment.Center;
+            btnEditor.TextSize = CSS_FontSize.SubheadingFontSize;
+            btnEditor.TextColor = CSS_Color.MainBackgroundColor;
+            btnEditor.BackgroundColor = CSS_Color.AuxiliaryColor1;
+            btnEditor.TextID = StringId.Edit;
+            rowBack.AddRightView(btnEditor);
+            btnEditor.ButtonClickEvent += (sender, e) =>
+            {
+                //杩樺師
+                rowBack.HideRightMenu();
+                var form = new DoorLockAlwaysOnManagerPage();
+                form.AddForm(new object[] { i_info });
+            };
+            //鍒犻櫎
+            var btnDelete = new NormalViewControl(rowBack.SubViewWidth, rowBack.Height, false);
+            btnDelete.TextAlignment = TextAlignment.Center;
+            btnDelete.TextSize = CSS_FontSize.SubheadingFontSize;
+            btnDelete.TextColor = CSS_Color.MainBackgroundColor;
+            btnDelete.BackgroundColor = CSS_Color.AuxiliaryColor2;
+            btnDelete.TextID = StringId.Del;
+            rowBack.AddRightView(btnDelete);
+            btnDelete.ButtonClickEvent += (sender, e) =>
+            {
+                //鏄惁瑕佸垹闄よ嚜鍔ㄥ寲?
+                HdlMessageLogic.Current.ShowMassage(ShowMsgType.Confirm, Language.StringByID(StringId.delAutomation), () =>
+                {
+                    rowBack.RemoveFromParent();
+                });
+            };
+        }
+
+        #endregion
+
+        #region 鈻� 涓�鑸柟娉昣__________________________
+
+        /// <summary>
+        /// 鍒锋柊涓嬮儴Frame鎺т欢鐨勫潗鏍囧拰楂樺害
+        /// </summary>
+        private void RefreshBottomFrameHeightAndLocation()
+        {
+            if (this.frameBottomBack != null)
+            {
+                this.frameBottomBack.Y = this.frameTopBack.Bottom + Application.GetRealHeight(8);
+                this.frameBottomBack.Height = bodyFrameLayout.Height - this.frameBottomBack.Y;
+            }
+            if (this.listView != null)
+            {
+                //杩欎釜Y杞村浐瀹�
+                this.listView.Y = Application.GetRealHeight(58);
+                this.listView.Height = this.frameBottomBack.Height - this.listView.Y;
+            }
+        }
+
+        #endregion
+
+        #region 鈻� 鐣岄潰鍏抽棴___________________________
+
+        /// <summary>
+        /// 鐣岄潰鍏抽棴
+        /// </summary>
+        public override void CloseFormBefore()
+        {
+            base.CloseFormBefore();
+        }
+
+        #endregion
+    }
+}
diff --git a/HDL_ON/UI/UI2/FuntionControlView/DoorLock/DoorLockAlwaysOnManagerPage.cs b/HDL_ON/UI/UI2/FuntionControlView/DoorLock/DoorLockAlwaysOnManagerPage.cs
new file mode 100644
index 0000000..3db55fd
--- /dev/null
+++ b/HDL_ON/UI/UI2/FuntionControlView/DoorLock/DoorLockAlwaysOnManagerPage.cs
@@ -0,0 +1,535 @@
+锘縰sing Shared;
+using HDL_ON.UI.CSS;
+using HDL_ON.Stan;
+using System;
+using System.Collections.Generic;
+using System.Text;
+using HDL_ON.Entity;
+
+namespace HDL_ON.UI
+{
+    /// <summary>
+    /// 闂ㄩ攣甯稿紑鑷姩鍖栫紪杈戠晫闈�
+    /// </summary>
+    public class DoorLockAlwaysOnManagerPage : EditorCommonForm
+    {
+        #region 鈻� 鍙橀噺澹版槑___________________________
+
+        /// <summary>
+        /// 甯稿紑鑷姩鍖栦俊鎭�
+        /// </summary>
+        private AlwayOnAutomationInfo automationInfo = null;
+        /// <summary>
+        /// 涓�浜涙枃鏈�
+        /// </summary>
+        private Dictionary<string, string> dicText = new Dictionary<string, string>();
+
+        #endregion
+
+        #region 鈻� 鍒濆鍖朹____________________________
+
+        /// <summary>
+        /// 鐢婚潰鏄剧ず(搴曞眰浼氬浐瀹氳皟鐢ㄦ鏂规硶锛屽�熶互瀹屾垚鐢婚潰鍒涘缓)
+        /// </summary>
+        public void ShowForm(AlwayOnAutomationInfo info)
+        {
+            this.automationInfo = info;
+            if (info == null)
+            {
+                this.automationInfo = new AlwayOnAutomationInfo();
+                //鏂板缓鑷姩鍖�
+                base.SetTitleText(Language.StringByID(StringId.newAutomation));
+            }
+            else
+            {
+                //缂栬緫鑷姩鍖�
+                base.SetTitleText(Language.StringByID(StringId.editAutomation));
+            }
+
+            this.dicText["鍛�1"] = Language.StringByID(StringId.monday);
+            this.dicText["鍛�2"] = Language.StringByID(StringId.tuesday);
+            this.dicText["鍛�3"] = Language.StringByID(StringId.wednesday);
+            this.dicText["鍛�4"] = Language.StringByID(StringId.thursday);
+            this.dicText["鍛�5"] = Language.StringByID(StringId.friday);
+            this.dicText["鍛�6"] = Language.StringByID(StringId.saturday);
+            this.dicText["鍛�7"] = Language.StringByID(StringId.sunday);
+
+            //鍒濆鍖栦腑閮ㄤ俊鎭�
+            this.InitMiddleFrame();
+        }
+
+        /// <summary>
+        /// 鍒濆鍖栦腑閮ㄤ俊鎭�
+        /// </summary>
+        private void InitMiddleFrame()
+        {
+            //娓呯┖bodyFrame
+            this.ClearBodyFrame();
+
+            //鍒濆鍖栨潯浠舵帶浠�
+            this.InitConditionControl();
+            //鍒濆鍖栫洰鏍囨帶浠�
+            this.InitTargetControl();
+            //鍒濆鍖栧惊鐜柟寮忔帶浠�
+            this.InitLoopControl();
+
+            //纭鎸夐挳
+            var btnSave = this.AddBottomClickButton(Language.StringByID(StringId.Confirm));
+            btnSave.ButtonClickEvent += (sender, e) =>
+            {
+            };
+        }
+
+        #endregion
+
+        #region 鈻� 鍒濆鍖栨潯浠舵帶浠禵____________________
+
+        /// <summary>
+        /// 鍒濆鍖栨潯浠舵帶浠�
+        /// </summary>
+        private void InitConditionControl()
+        {
+            //濡傛灉
+            var btnIf = new NormalViewControl(300, 22, true);
+            btnIf.X = HdlControlResourse.XXLeft;
+            btnIf.Y = Application.GetRealHeight(12);
+            btnIf.TextID = StringId.ifCondition;
+            btnIf.TextSize = CSS_FontSize.SubheadingFontSize;
+            btnIf.TextColor = CSS_Color.FirstLevelTitleColor;
+            btnIf.IsBold = true;
+            bodyFrameLayout.AddChidren(btnIf);
+
+            //鐧借壊鑳屾櫙瀹瑰櫒
+            var frameBack = new FrameLayout();
+            frameBack.Y = btnIf.Bottom + Application.GetRealHeight(12);
+            frameBack.Width = Application.GetRealWidth(343);
+            frameBack.Height = Application.GetRealHeight(88);
+            frameBack.Gravity = Gravity.CenterHorizontal;
+            frameBack.BackgroundColor = CSS_Color.MainBackgroundColor;
+            frameBack.Radius = (uint)Application.GetRealWidth(12);
+            bodyFrameLayout.AddChidren(frameBack);
+
+            //鏉′欢
+            var rowConditon = new FrameRowControl();
+            rowConditon.LeftOffset = Application.GetRealWidth(12) - HdlControlResourse.XXLeft;
+            rowConditon.Width = frameBack.Width;
+            frameBack.AddChidren(rowConditon);
+            var btnConditon = rowConditon.AddLeftCaption(Language.StringByID(StringId.Condtion), 300);
+            btnConditon.TextColor = CSS_Color.FirstLevelTitleColor;
+            //搴曠嚎
+            rowConditon.AddBottomLine();
+
+            //鏃跺埢
+            var rowTime = new FrameRowControl();
+            rowTime.Y = rowConditon.Bottom;
+            rowTime.LeftOffset = Application.GetRealWidth(12) - HdlControlResourse.XXLeft;
+            rowTime.Width = frameBack.Width;
+            frameBack.AddChidren(rowTime);
+            rowTime.AddLeftIcon(28, "LogicIcon/time.png");
+            var btnTime = rowTime.AddLeftCaption(Language.StringByID(StringId.hour), 300);
+            btnTime.TextColor = CSS_Color.FirstLevelTitleColor;
+            rowTime.AddRightArrow();
+            var btnValue = rowTime.AddMostRightView(this.automationInfo.Hour + ":" + this.automationInfo.Minute.ToString().PadLeft(2, '0'), 80);
+            rowTime.ButtonClickEvent += (sender, e) =>
+            {
+                //鏃堕棿閫夋嫨寮圭獥
+                var form = new BottomTimeSelectControl();
+                form.InitControl(this.automationInfo.Hour, this.automationInfo.Minute);
+                form.FinishEvent += (div, selectHour, selectMin) =>
+                {
+                    if (div != 1) { return; }
+                    this.automationInfo.Hour = selectHour;
+                    this.automationInfo.Minute = selectMin;
+                    btnValue.Text = this.automationInfo.Hour + ":" + this.automationInfo.Minute.ToString().PadLeft(2, '0');
+                };
+            };
+        }
+
+        #endregion
+
+        #region 鈻� 鍒濆鍖栫洰鏍囨帶浠禵____________________
+
+        /// <summary>
+        /// 鍒濆鍖栫洰鏍囨帶浠�
+        /// </summary>
+        private void InitTargetControl()
+        {
+            //灏辨墽琛�
+            var btnExecuted = new NormalViewControl(300, 22, true);
+            btnExecuted.X = HdlControlResourse.XXLeft;
+            btnExecuted.Y = Application.GetRealHeight(154);
+            btnExecuted.TextID = StringId.isExecuted;
+            btnExecuted.TextSize = CSS_FontSize.SubheadingFontSize;
+            btnExecuted.TextColor = CSS_Color.FirstLevelTitleColor;
+            btnExecuted.IsBold = true;
+            bodyFrameLayout.AddChidren(btnExecuted);
+
+            //鐧借壊鑳屾櫙瀹瑰櫒
+            var frameBack = new FrameLayout();
+            frameBack.Y = btnExecuted.Bottom + Application.GetRealHeight(12);
+            frameBack.Width = Application.GetRealWidth(343);
+            frameBack.Height = Application.GetRealHeight(88);
+            frameBack.Gravity = Gravity.CenterHorizontal;
+            frameBack.BackgroundColor = CSS_Color.MainBackgroundColor;
+            frameBack.Radius = (uint)Application.GetRealWidth(12);
+            bodyFrameLayout.AddChidren(frameBack);
+
+            //鍔ㄤ綔琛屾帶浠�
+            var rowAction = new FrameRowControl();
+            rowAction.LeftOffset = Application.GetRealWidth(12) - HdlControlResourse.XXLeft;
+            rowAction.Width = frameBack.Width;
+            frameBack.AddChidren(rowAction);
+            //鍔ㄤ綔
+            var btnAction = rowAction.AddLeftCaption(Language.StringByID(StringId.Action), 300);
+            btnAction.TextColor = CSS_Color.FirstLevelTitleColor;
+            //搴曠嚎
+            rowAction.AddBottomLine();
+
+            //甯稿紑妯″紡琛屾帶浠�
+            var rowModel = new FrameRowControl();
+            rowModel.Y = rowAction.Bottom;
+            rowModel.LeftOffset = Application.GetRealWidth(12) - HdlControlResourse.XXLeft;
+            rowModel.Width = frameBack.Width;
+            frameBack.AddChidren(rowModel);
+            //鍥炬爣
+            rowModel.AddLeftIcon(28, "FunctionIcon/DoorLock/NormallyOpenIcon2.png");
+            //甯稿紑妯″紡
+            var btnAlwayOn = rowModel.AddLeftCaption(Language.StringByID(StringId.AlwaysOnModel), 300);
+            btnAlwayOn.TextColor = CSS_Color.FirstLevelTitleColor;
+            //鍙崇澶�
+            rowModel.AddRightArrow();
+            //鍊�
+            var btnValue = rowModel.AddMostRightView(this.automationInfo.IsOpenAlwayOn == true ?
+                Language.StringByID(StringId.kaiqi) : Language.StringByID(StringId.Close), 80);
+
+            rowModel.ButtonClickEvent += (sender, e) =>
+            {
+                //閫夋嫨寮圭獥
+                var form = new BottomMenuSelectControl(2);
+                //寮�鍚�
+                form.AddMenu(Language.StringByID(StringId.kaiqi), () =>
+                {
+                    this.automationInfo.IsOpenAlwayOn = true;
+                    btnValue.Text = Language.StringByID(StringId.kaiqi);
+                });
+                //鍏抽棴
+                form.AddMenu(Language.StringByID(StringId.Close), () =>
+                {
+                    this.automationInfo.IsOpenAlwayOn = false;
+                    btnValue.Text = Language.StringByID(StringId.Close);
+                },CSS_Color.PromptingColor1);
+            };
+        }
+
+        #endregion
+
+        #region 鈻� 鍒濆鍖栧惊鐜柟寮忔帶浠禵________________
+
+        /// <summary>
+        /// 鍒濆鍖栧惊鐜柟寮忔帶浠�
+        /// </summary>
+        private void InitLoopControl()
+        {
+            //寰幆鏂瑰紡
+            var btnloop = new NormalViewControl(300, 22, true);
+            btnloop.X = HdlControlResourse.XXLeft;
+            btnloop.Y = Application.GetRealHeight(296);
+            btnloop.TextID = StringId.cyclic;
+            btnloop.TextSize = CSS_FontSize.SubheadingFontSize;
+            btnloop.TextColor = CSS_Color.FirstLevelTitleColor;
+            btnloop.IsBold = true;
+            bodyFrameLayout.AddChidren(btnloop);
+
+            //鍛ㄦ湡鐨勭櫧鑹茶儗鏅鍣�
+            var frameDayBack = new FrameLayout();
+            frameDayBack.Y = btnloop.Bottom + Application.GetRealHeight(12);
+            frameDayBack.Width = Application.GetRealWidth(343);
+            frameDayBack.Height = Application.GetRealHeight(50);
+            frameDayBack.Gravity = Gravity.CenterHorizontal;
+            frameDayBack.BackgroundColor = CSS_Color.MainBackgroundColor;
+            frameDayBack.Radius = (uint)Application.GetRealWidth(12);
+            bodyFrameLayout.AddChidren(frameDayBack);
+
+            //鍛ㄦ湡琛屾帶浠�
+            var rowLoop = new FrameRowControl();
+            rowLoop.LeftOffset = Application.GetRealWidth(12) - HdlControlResourse.XXLeft;
+            rowLoop.Width = frameDayBack.Width;
+            rowLoop.Height = Application.GetRealHeight(50);
+            frameDayBack.AddChidren(rowLoop);
+            //鍛ㄦ湡
+            var cycleText = this.GetLoopCondtionText();
+            var btnCycle = rowLoop.AddLeftCaption(cycleText, 270);
+            btnCycle.TextColor = CSS_Color.FirstLevelTitleColor;
+            btnCycle.IsMoreLines = false;//璁╁畠涓嶆崲琛屼簡,涓嶇劧鏈夌偣闅剧湅
+            //鍙崇澶�
+            rowLoop.AddRightArrow();
+            rowLoop.ButtonClickEvent += (sender, e) =>
+            {
+                //鏄剧ず鍛ㄦ湡寰幆閰嶇疆绐楀彛
+                this.ShowLoopMethordSettionDialog(btnCycle);
+            };
+
+            //鎺ㄩ�佺殑鐧借壊鑳屾櫙瀹瑰櫒
+            var framePushBack = new FrameLayout();
+            framePushBack.Y = frameDayBack.Bottom + Application.GetRealHeight(8);
+            framePushBack.Width = Application.GetRealWidth(343);
+            framePushBack.Height = Application.GetRealHeight(100);
+            framePushBack.Gravity = Gravity.CenterHorizontal;
+            framePushBack.BackgroundColor = CSS_Color.MainBackgroundColor;
+            framePushBack.Radius = (uint)Application.GetRealWidth(12);
+            bodyFrameLayout.AddChidren(framePushBack);
+
+            //鎺ㄩ�佽鎺т欢
+            var rowPush = new FrameRowControl();
+            rowPush.Width = framePushBack.Width;
+            rowPush.Height = Application.GetRealHeight(50);
+            rowPush.LeftOffset = Application.GetRealWidth(12) - HdlControlResourse.XXLeft;
+            framePushBack.AddChidren(rowPush);
+            //鎵ц鎺ㄩ��
+            var btnPush = rowPush.AddLeftCaption(Language.StringByID(StringId.push), 300);
+            btnPush.TextColor = CSS_Color.FirstLevelTitleColor;
+            //搴曠嚎
+            rowPush.AddBottomLine();
+            //鎺ㄩ�佺殑寮�鍏虫寜閽�
+            var btnPushSwitch = rowPush.AddMostRightSwitchIcon();
+            btnPushSwitch.ButtonClickEvent += (sender, e) =>
+            {
+                btnPushSwitch.IsSelected = !btnPushSwitch.IsSelected;
+            };
+
+            //鍙戦�侀�氱煡琛屾帶浠�
+            var rowNotice = new FrameRowControl();
+            rowNotice.Y = rowPush.Bottom;
+            rowNotice.Width = framePushBack.Width;
+            rowNotice.Height = Application.GetRealHeight(50);
+            rowNotice.LeftOffset = Application.GetRealWidth(12) - HdlControlResourse.XXLeft;
+            framePushBack.AddChidren(rowNotice);
+            //鍙戦�侀�氱煡
+            var btnNotice = rowNotice.AddLeftCaption(Language.StringByID(StringId.notification), 300);
+            btnNotice.TextColor = CSS_Color.FirstLevelTitleColor;
+            //鍙崇澶�
+            rowNotice.AddRightArrow();
+            rowNotice.ButtonClickEvent += (sender, e) =>
+            {
+                var form = new UI2.Intelligence.Automation.InputPushText();
+                MainPage.BasePageView.AddChidren(form);
+                //form.Show(this.automationInfo.PushSettion);
+                form.Show();
+                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+                //form.action += (pushInfo) =>
+                //{
+                //    //璧嬪��
+                //    this.automationInfo.PushSettion = pushInfo;
+                //};
+            };
+        }
+
+        #endregion
+
+        #region 鈻� 鏄剧ず鍛ㄦ湡寰幆閰嶇疆绐楀彛_______________
+
+        /// <summary>
+        /// 鏄剧ず鍛ㄦ湡寰幆閰嶇疆绐楀彛
+        /// </summary>
+        private void ShowLoopMethordSettionDialog(NormalViewControl btnCycle)
+        {
+            //涔嬪墠閫夋嫨鐨勬帶浠�
+            NormalViewControl btnOldView = null;
+
+            var form = new BottomItemEditorControl(4, Language.StringByID(StringId.cyclic));
+            form.ClickConfirmClose = false;
+            //鎵ц涓�娆�
+            form.AddRowMenu(Language.StringByID(StringId.performA), string.Empty, (btnView, btnValue) =>
+            {
+                this.automationInfo.LoopDiv = 1;
+                if (btnOldView != null)
+                {
+                    //杩樺師棰滆壊
+                    btnOldView.TextColor = CSS_Color.FirstLevelTitleColor;
+                }
+                //鍙樻洿棰滆壊
+                btnView.TextColor = CSS_Color.textConfirmColor;
+                btnOldView = btnView;
+                //鍙樻洿鏄剧ず鏂囨湰
+                btnCycle.Text = this.GetLoopCondtionText();
+
+            }, false);
+
+            //姣忓ぉ
+            form.AddRowMenu(Language.StringByID(StringId.days), string.Empty, (btnView, btnValue) =>
+            {
+                this.automationInfo.LoopDiv = 2;
+                if (btnOldView != null)
+                {
+                    //杩樺師棰滆壊
+                    btnOldView.TextColor = CSS_Color.FirstLevelTitleColor;
+                }
+                //鍙樻洿棰滆壊
+                btnView.TextColor = CSS_Color.textConfirmColor;
+                btnOldView = btnView;
+                //鍙樻洿鏄剧ず鏂囨湰
+                btnCycle.Text = this.GetLoopCondtionText();
+
+            }, false);
+
+            //姣忓懆
+            form.AddRowMenu(Language.StringByID(StringId.weekly), string.Empty, (btnView, btnValue) =>
+            {
+                //鍏抽棴寮圭獥,鏄剧ず鍛ㄦ湡寰幆(鏄熸湡)鐨勯厤缃獥鍙�
+                form.Close();
+                this.ShowLoopMethordWeekDialog(btnCycle);
+            });
+
+            //姣忔湀
+            form.AddRowMenu(Language.StringByID(StringId.monthly), string.Empty, (btnView, btnValue) =>
+            {
+                //鍏抽棴寮圭獥,鏄剧ず鍛ㄦ湡寰幆(鏈堜唤)鐨勯厤缃獥鍙�
+                form.Close();
+                this.ShowLoopMethordMonthDialog(btnCycle);
+            });
+
+            form.FinishEvent += (div) =>
+            {
+                //褰撶偣鍑讳簡纭鏃�,濡傛灉杩樻病閫夋嫨锛屽垯鏃犲弽搴�
+                if (div != 1 || btnOldView == null) { return; }
+
+                form.Close();
+            };
+        }
+
+        /// <summary>
+        /// 鏄剧ず鍛ㄦ湡寰幆(鏄熸湡)鐨勯厤缃獥鍙�
+        /// </summary>
+        private void ShowLoopMethordWeekDialog(NormalViewControl btnCycle)
+        {
+            //鏄熸湡涓�鍒版槦鏈熸棩
+            var listText = new List<string>();
+            listText.Add(this.dicText["鍛�1"]);
+            listText.Add(this.dicText["鍛�2"]);
+            listText.Add(this.dicText["鍛�3"]);
+            listText.Add(this.dicText["鍛�4"]);
+            listText.Add(this.dicText["鍛�5"]);
+            listText.Add(this.dicText["鍛�6"]);
+            listText.Add(this.dicText["鍛�7"]);
+
+            var listSelect = new List<int>();
+            if (this.automationInfo.LoopDiv == 3)
+            {
+                //涔嬪墠閫夋嫨鐨勬槸杩欎釜鍖哄垎鎵嶈兘鏈夐粯璁ら�夋嫨
+                foreach (var value in this.automationInfo.ListLoopValue)
+                {
+                    //榛樿閫夋嫨
+                    listSelect.Add(value - 1);
+                }
+            }
+
+            var form = new BottomItemSelectControl(7, Language.StringByID(StringId.cyclic));
+            form.AddRowMenu(listText, listSelect);
+            form.FinishEvent += (div, listIndex) =>
+            {
+                if (div == 0)
+                {
+                    //濡傛灉鐐瑰嚮浜嗗彇娑�,鍒欒皟璧� 鍛ㄦ湡寰幆閰嶇疆绐楀彛
+                    this.ShowLoopMethordSettionDialog(btnCycle);
+                    return;
+                }
+                //鏇存敼缂撳瓨
+                this.automationInfo.LoopDiv = 3;
+                this.automationInfo.ListLoopValue = new List<int>();
+
+                foreach (var index in listIndex)
+                {
+                    this.automationInfo.ListLoopValue.Add(index + 1);
+                }
+                //鍙樻洿鏄剧ず鏂囨湰
+                btnCycle.Text = this.GetLoopCondtionText();
+            };
+        }
+
+        /// <summary>
+        /// 鏄剧ず鍛ㄦ湡寰幆(鏈堜唤)鐨勯厤缃獥鍙�
+        /// </summary>
+        private void ShowLoopMethordMonthDialog(NormalViewControl btnCycle)
+        {
+            var listSelect = new List<int>();
+            if (this.automationInfo.LoopDiv == 4)
+            {
+                //涔嬪墠閫夋嫨鐨勬槸杩欎釜鍖哄垎鎵嶈兘鏈夐粯璁ら�夋嫨
+                foreach (var value in this.automationInfo.ListLoopValue)
+                {
+                    //榛樿閫夋嫨
+                    listSelect.Add(value);
+                }
+            }
+
+            var form = new BottomSomeDaySelectControl(Language.StringByID(StringId.monthly));
+            form.InitControl(listSelect);
+            form.FinishEvent += (div, listIndex) =>
+            {
+                if (div == 0)
+                {
+                    //濡傛灉鐐瑰嚮浜嗗彇娑�,鍒欒皟璧� 鍛ㄦ湡寰幆閰嶇疆绐楀彛
+                    this.ShowLoopMethordSettionDialog(btnCycle);
+                    return;
+                }
+                //鏇存敼缂撳瓨
+                this.automationInfo.LoopDiv = 4;
+                this.automationInfo.ListLoopValue = new List<int>();
+
+                foreach (var day in listIndex)
+                {
+                    this.automationInfo.ListLoopValue.Add(day);
+                }
+                //鍙樻洿鏄剧ず鏂囨湰
+                btnCycle.Text = this.GetLoopCondtionText();
+            };
+        }
+
+        #endregion
+
+        #region 鈻� 涓�鑸柟娉昣__________________________
+
+        /// <summary>
+        /// 鑾峰彇寰幆鏉′欢鐨勭炕璇戞枃鏈�
+        /// </summary>
+        /// <returns></returns>
+        private string GetLoopCondtionText()
+        {
+            //鎵ц涓�娆�
+            if (this.automationInfo.LoopDiv == 1)
+            {
+                return Language.StringByID(StringId.performA);
+            }
+            //姣忓ぉ
+            else if (this.automationInfo.LoopDiv == 2)
+            {
+                return Language.StringByID(StringId.days);
+            }
+            //姣忓懆
+            else if (this.automationInfo.LoopDiv == 3)
+            {
+                var textValue = string.Empty;
+                foreach (var weekValue in this.automationInfo.ListLoopValue)
+                {
+                    textValue += this.dicText["鍛�" + weekValue] + ",";
+                }
+                //鍘绘帀鏈�鍚庣殑閫楀彿
+                return textValue.Substring(0, textValue.Length - 1);
+            }
+            //姣忔湀
+            else if (this.automationInfo.LoopDiv == 4)
+            {
+                var textValue = Language.StringByID(StringId.monthly) + " ";
+                foreach (var day in this.automationInfo.ListLoopValue)
+                {
+                    textValue += day.ToString() + ",";
+                }
+                //鍘绘帀鏈�鍚庣殑閫楀彿
+                return textValue.Substring(0, textValue.Length - 1);
+            }
+            return string.Empty;
+        }
+
+        #endregion
+    }
+}
diff --git a/HDL_ON/UI/UI2/FuntionControlView/DoorLock/DoorLockExpireTimeSettionPage.cs b/HDL_ON/UI/UI2/FuntionControlView/DoorLock/DoorLockExpireTimeSettionPage.cs
new file mode 100644
index 0000000..47931d2
--- /dev/null
+++ b/HDL_ON/UI/UI2/FuntionControlView/DoorLock/DoorLockExpireTimeSettionPage.cs
@@ -0,0 +1,188 @@
+锘縰sing Shared;
+using HDL_ON.UI.CSS;
+using HDL_ON.Stan;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace HDL_ON.UI
+{
+    /// <summary>
+    /// 闂ㄩ攣甯稿紑妯″紡澶辨晥鏃堕棿璁剧疆鐣岄潰(涓嶉渶瑕佹坊鍔犲埌鐖舵帶浠�)
+    /// </summary>
+    public class DoorLockExpireTimeSettionPage
+    {
+        #region 鈻� 鍙橀噺澹版槑___________________________
+
+        /// <summary>
+        /// 缁撴潫浜嬩欢(鍙傛暟涓�,杈撳叆鐨勫皬鏃�)
+        /// </summary>
+        public Action<int> FinishEvent = null;
+
+        #endregion
+
+        #region 鈻� 鍒濆鍖朹____________________________
+
+        /// <summary>
+        /// 鐣岄潰鏄剧ず
+        /// </summary>
+        public void ShowForm()
+        {
+            var dialogForm = new Dialog();
+            dialogForm.BackgroundColor = CSS_Color.DialogTransparentColor1;
+            //涓绘帶浠�
+            var frameMain = new NormalFrameLayout();
+            dialogForm.AddChidren(frameMain);
+            dialogForm.Show();
+            frameMain.ButtonClickEvent += (sender, e) =>
+            {
+                dialogForm.Close();
+                this.FinishEvent = null;
+            };
+
+            //涓棿鍖哄煙
+            var frameCenter = new NormalFrameLayout();
+            frameCenter.Y = Application.GetRealHeight(239);
+            frameCenter.Gravity = Gravity.CenterHorizontal;
+            frameCenter.Width = Application.GetRealWidth(270);
+            frameCenter.Height = Application.GetRealHeight(172);
+            frameCenter.BackgroundColor = CSS_Color.MainBackgroundColor;
+            frameCenter.BorderColor = 0x00000000;
+            frameCenter.BorderWidth = 0;
+            frameCenter.Radius = (uint)Application.GetMinRealAverage(10);
+            frameMain.AddChidren(frameCenter);
+
+            //澶辨晥璁剧疆
+            var btnTitle = new NormalViewControl(frameCenter.Width - HdlControlResourse.XXLeft * 2, Application.GetRealHeight(22), false);
+            btnTitle.Y = Application.GetRealHeight(20);
+            btnTitle.Gravity = Gravity.CenterHorizontal;
+            btnTitle.TextColor = CSS_Color.MainColor;
+            btnTitle.TextSize = CSS_FontSize.SubheadingFontSize;
+            btnTitle.TextAlignment = TextAlignment.Center;
+            btnTitle.IsBold = true;
+            btnTitle.Text = Language.StringByID(StringId.FailTimeSeetion);
+            frameCenter.AddChidren(btnTitle);
+
+            //甯稿紑妯″紡灏嗕簬{0}灏忔椂鍚庡け鏁�
+            string[] strArryMsg = Language.StringByID(StringId.AlwayOnWillCloseAtTimeMsg).Split(new string[] { "{0}" }, StringSplitOptions.RemoveEmptyEntries);
+
+            //甯稿紑妯″紡灏嗕簬
+            var btnMsg1 = new NormalViewControl(Application.GetRealWidth(76), Application.GetRealHeight(32), false);
+            btnMsg1.X = Application.GetRealWidth(20);
+            btnMsg1.Y = btnTitle.Bottom + Application.GetRealHeight(20);
+            btnMsg1.TextSize = CSS_FontSize.PromptFontSize_FirstLevel;
+            btnMsg1.IsMoreLines = true;
+            btnMsg1.Text = strArryMsg[0].Trim();
+            frameCenter.AddChidren(btnMsg1);
+
+            //澶辨晥鏃堕棿鐨勮儗鏅鍣�
+            var frameTime = new FrameLayout();
+            frameTime.X = btnMsg1.Right + Application.GetRealWidth(12);
+            frameTime.Y = btnMsg1.Y;
+            frameTime.Width = Application.GetRealWidth(62);
+            frameTime.Height = Application.GetRealHeight(32);
+            frameTime.Radius = (uint)Application.GetRealWidth(4);
+            frameTime.BackgroundColor = CSS_Color.BackgroundColor;
+            frameCenter.AddChidren(frameTime);
+            //澶辨晥鏃堕棿杈撳叆鎺т欢
+            var txtInput = new TextInputControl(frameTime.Width - Application.GetRealWidth(10 * 2), frameTime.Height, false);
+            txtInput.TextColor = CSS_Color.FirstLevelTitleColor;
+            txtInput.Gravity = Gravity.CenterHorizontal;
+            txtInput.TextAlignment = TextAlignment.Center;
+            txtInput.Text = "12";
+            txtInput.MaxByte = 2;
+            txtInput.IsNumberKeyboardType = true;
+            frameTime.AddChidren(txtInput);
+
+            //灏忔椂鍚庡け鏁�
+            var btnMsg2 = new NormalViewControl(btnMsg1.Width, btnMsg1.Height, false);
+            btnMsg2.X = frameTime.Right + Application.GetRealWidth(12);
+            btnMsg2.Y = btnMsg1.Y;
+            btnMsg2.TextSize = CSS_FontSize.PromptFontSize_FirstLevel;
+            btnMsg2.IsMoreLines = true;
+            btnMsg2.Text = strArryMsg.Length > 1 ? strArryMsg[1].Trim() : string.Empty;
+            frameCenter.AddChidren(btnMsg2);
+
+            //閿欒鏄剧ず娑堟伅
+            var btnErrorMsg = new NormalViewControl(frameCenter.Width - Application.GetRealWidth(20) * 2, Application.GetRealHeight(21), false);
+            btnErrorMsg.Y = btnMsg1.Bottom;
+            btnErrorMsg.Gravity = Gravity.CenterHorizontal;
+            btnErrorMsg.TextColor = CSS_Color.WarningColor;
+            btnErrorMsg.IsMoreLines = true;
+            btnErrorMsg.TextAlignment = TextAlignment.TopLeft;
+            //btnErrorMsg.Height = Application.GetRealHeight(21) * btnErrorMsg.GetRealRowCountByText();
+            btnErrorMsg.Visible = false;
+            frameCenter.AddChidren(btnErrorMsg);
+
+            //纭
+            var btnConfirm = new NormalViewControl(frameCenter.Width, Application.GetRealHeight(45), false);
+            btnConfirm.Gravity = Gravity.BottomCenter;
+            btnConfirm.TextAlignment = TextAlignment.Center;
+            btnConfirm.TextSize = CSS_FontSize.SubheadingFontSize;
+            btnConfirm.TextColor = CSS_Color.MainBackgroundColor;
+            btnConfirm.BackgroundColor = CSS_Color.MainColor;
+            btnConfirm.Text = Language.StringByID(StringId.Confirm);
+            frameCenter.AddChidren(btnConfirm);
+            btnConfirm.SetCornerWithSameRadius((uint)Application.GetMinRealAverage(10), HDLUtils.RectCornerBottomLeft | HDLUtils.RectCornerBottomRight);
+            btnConfirm.ButtonClickEvent += (sender, e) =>
+            {
+                //妫�娴嬭緭鍏ョ殑鏃堕棿鏄惁姝g‘
+                var errorMsg = this.CheckInputTime(txtInput.Text.Trim());
+                if (errorMsg != string.Empty)
+                {
+                    //鐪嬬湅娑堟伅鏄剧ず鐨勬帶浠舵湁娌℃湁澶т簬34,澶т簬鐨勮瘽,鍒欑畻鍑哄畠澧炲姞鐨勫搴�(34鏄緭鍏ユ鍒板簳閮ㄦ寜閽甕杞寸殑绌虹櫧鍖哄煙)
+                    int value = 0;
+                    if (btnErrorMsg.Height > Application.GetRealHeight(34))
+                    {
+                        //5鏄笌搴曢儴鎸夐挳Y杞寸殑闂磋窛
+                        value = btnErrorMsg.Height - Application.GetRealHeight(34) + Application.GetRealHeight(5);
+                    }
+                    //璋冩暣鐧借壊妗屽竷鐨勯珮搴﹀拰鍧愭爣
+                    frameCenter.Height = frameTime.Bottom + Application.GetRealHeight(34) + btnConfirm.Height + value;
+                    //鐧借壊鑳屾櫙鍦ㄨ摑婀栦笂鐨勫潗鏍囦负239,楂樺害涓�172  鐒跺悗璁╁畠鎸夎繖涓瘮渚嬬疆浜庢甯�
+                    frameCenter.Y = Application.GetRealHeight(239) - (frameCenter.Height - Application.GetRealHeight(172)) / 2;
+                    btnConfirm.Gravity = Gravity.BottomCenter;
+                    //鎸夐挳缃簳
+                    return;
+                }
+                //鍏抽棴鐣岄潰
+                dialogForm.Close();
+                //鍥炶皟鍑芥暟
+                FinishEvent?.Invoke(Convert.ToInt32(txtInput.Text.Trim()));
+                FinishEvent = null;
+            };
+        }
+
+        #endregion
+
+        #region 鈻� 涓�鑸柟娉昣__________________________
+
+        /// <summary>
+        /// 妫�娴嬭緭鍏ョ殑鏃堕棿鏄惁姝g‘
+        /// </summary>
+        /// <param name="i_value">杈撳叆鐨勬椂闂�</param>
+        /// <returns></returns>
+        private string CheckInputTime(string i_value)
+        {
+            if (i_value == string.Empty)
+            {
+                //璇疯緭鍏ュけ鏁堟椂闂�
+                return Language.StringByID(StringId.PleaseInputFailTime);
+            }
+            int value = Convert.ToInt32(i_value);
+            if (value < 1)
+            {
+                //澶辨晥鏃堕棿涓嶈兘灏忎簬1灏忔椂
+                return Language.StringByID(StringId.InvalidTimeLessThan1);
+            }
+            if (value > 72)
+            {
+                //澶辨晥鏃堕棿涓嶈兘澶т簬72灏忔椂
+                return Language.StringByID(StringId.InvalidTimeMoreThan72);
+            }
+            return string.Empty;
+        }
+
+        #endregion
+    }
+}
diff --git a/HDL_ON/UI/UI2/FuntionControlView/DoorLock/DoorLockHistoryInfoPage.cs b/HDL_ON/UI/UI2/FuntionControlView/DoorLock/DoorLockHistoryInfoPage.cs
new file mode 100644
index 0000000..0deeb41
--- /dev/null
+++ b/HDL_ON/UI/UI2/FuntionControlView/DoorLock/DoorLockHistoryInfoPage.cs
@@ -0,0 +1,174 @@
+锘縰sing Shared;
+using HDL_ON.UI.CSS;
+using HDL_ON.Stan;
+using System;
+using System.Collections.Generic;
+using System.Text;
+using HDL_ON.Entity;
+
+namespace HDL_ON.UI
+{
+    /// <summary>
+    /// 闂ㄩ攣鍘嗗彶璁板綍鐨勭晫闈�(澶氶棬閿佹椂,鎵嶈兘杩涙潵)
+    /// </summary>
+    public class DoorLockHistoryInfoPage : EditorCommonForm
+    {
+        #region 鈻� 鍙橀噺澹版槑___________________________
+
+        /// <summary>
+        /// 闂ㄩ攣璁惧鍒楄〃
+        /// </summary>
+        private List<Function> listDevice = new List<Function>();
+        /// <summary>
+        /// 鎴愬憳鍒楄〃
+        /// </summary>
+        private List<ResidenceMemberInfo> listMember = null;
+        /// <summary>
+        /// 榛樿閫夋嫨鐨勭敤鎴�
+        /// </summary>
+        private List<string> listSelectUser = new List<string> { "all" };
+        /// <summary>
+        /// 榛樿閫夋嫨鐨勫紑閿佹柟寮�
+        /// </summary>
+        private List<string> listUnlock = new List<string> { "all" };
+        /// <summary>
+        /// 榛樿閫夋嫨鐨勪俊鎭被鍨�
+        /// </summary>
+        private List<string> listMsgType = new List<string> { "all" };
+
+        #endregion
+
+        #region 鈻� 鍒濆鍖朹____________________________
+
+        /// <summary>
+        /// 鐢婚潰鏄剧ず(搴曞眰浼氬浐瀹氳皟鐢ㄦ鏂规硶锛屽�熶互瀹屾垚鐢婚潰鍒涘缓)
+        /// </summary>
+        /// <param name="i_listDevice">闂ㄩ攣璁惧鍒楄〃</param>
+        public void ShowForm(List<Function> i_listDevice)
+        {
+            this.listDevice.AddRange(i_listDevice);
+
+            //鍘嗗彶璁板綍
+            base.SetTitleText(Language.StringByID(StringId.HistoryLog));
+
+            //鍒濆鍖栧ご閮ㄧ瓫閫夋帶浠�
+            this.InitTopScreenControl();
+
+            //鍒濆鍖栦腑閮ㄤ俊鎭�
+            this.InitMiddleFrame();
+        }
+
+        /// <summary>
+        /// 鍒濆鍖栦腑閮ㄤ俊鎭�
+        /// </summary>
+        private void InitMiddleFrame()
+        {
+            //娓呯┖bodyFrame
+            this.ClearBodyFrame();
+        }
+
+        #endregion
+
+        #region 鈻� 鍒濆鍖栫瓫閫夋帶浠禵____________________
+
+        /// <summary>
+        /// 鍒濆鍖栧ご閮ㄧ瓫閫夋帶浠�
+        /// </summary>
+        private void InitTopScreenControl()
+        {
+            //鍙充笂瑙掔殑绛涢�夋帶浠�
+            var btnScreenContr = new PicViewControl(28, 28);
+            btnScreenContr.X = Application.GetRealWidth(337);
+            btnScreenContr.Y = Application.GetRealHeight(9);
+            btnScreenContr.UnSelectedImagePath = "FunctionIcon/DoorLock/Screen.png";
+            topFrameLayout.AddChidren(btnScreenContr);;
+            btnScreenContr.ButtonClickEvent += (sender, e) =>
+            {
+                //鍒濆鍖栨垚鍛樺垪琛ㄤ俊鎭�
+                if (this.InitMemberListInfo() == false)
+                {
+                    return;
+                }
+
+                var form = new DoorLockHistoryTypeScreenPage(null, this.listMember);
+                form.InitControl(null, this.listSelectUser, this.listUnlock, this.listMsgType);
+                form.FinishEvent += (list1, list2, list3, list4) =>
+                {
+                    //鏇存敼缂撳瓨
+                    this.listSelectUser.Clear();
+                    this.listSelectUser.AddRange(list2);
+
+                    this.listUnlock.Clear();
+                    this.listUnlock.AddRange(list3);
+
+                    this.listMsgType.Clear();
+                    this.listMsgType.AddRange(list4);
+                };
+            };
+        }
+
+        #endregion
+
+        #region 鈻� 鍒濆鍖栨垚鍛樺垪琛ㄤ俊鎭痏________________
+
+        /// <summary>
+        /// 鍒濆鍖栨垚鍛樺垪琛ㄤ俊鎭�
+        /// </summary>
+        /// <returns></returns>
+        private bool InitMemberListInfo()
+        {
+            //宸茬粡鍒濆鍖�
+            if (this.listMember != null) { return true; }
+
+            //涓昏处鍙烽渶瑕佸幓鑾峰彇鎴愬憳鍒楄〃,鑰屽瓙璐﹀彿鍙兘浠栬嚜宸�
+            if (DB_ResidenceData.Instance.CurrentRegion.isOtherShare == false)
+            {
+                //鑾峰彇鎴愬憳鍒楄〃
+                var responePack = new DAL.Server.HttpServerRequest().GetResidenceMemberAccount();
+                if (responePack.Code == DAL.Server.StateCode.SUCCESS)
+                {
+                    this.listMember = Newtonsoft.Json.JsonConvert.DeserializeObject<List<ResidenceMemberInfo>>(responePack.Data.ToString());
+                }
+                //澶辫触
+                else
+                {
+                    //鎻愮ず
+                    DAL.Server.IMessageCommon.Current.ShowErrorInfoAlter(responePack.Code);
+                    return false;
+                }
+            }
+            else
+            {
+                //鍏堝垵濮嬪寲
+                this.listMember = new List<ResidenceMemberInfo>();
+            }
+
+            //鑷韩鍔犺繘鍘�,鑷繁浣嶄簬棣栦綅
+            var info = new ResidenceMemberInfo();
+            info.childAccountId = OnAppConfig.Instance.LastLoginUserId;
+            info.childAccountType = DB_ResidenceData.Instance.CurrentRegion.isOtherShare == false ? "ADMIN" : "ORDINARY";
+            info.nickName = UserInfo.Current.userName;
+            this.listMember.Insert(0, info);
+            if (string.IsNullOrEmpty(info.nickName))
+            {
+                info.nickName = UserInfo.Current.AccountString;
+            }
+
+            foreach (var info2 in this.listMember)
+            {
+                //璁剧疆鐢ㄦ埛鏄电О
+                if (string.IsNullOrEmpty(info2.nickName))
+                {
+                    info2.nickName = info2.memberName;
+                }
+            }
+
+            return true;
+        }
+        #endregion
+
+        #region 鈻� 涓�鑸柟娉昣__________________________
+
+        #endregion
+    }
+}
diff --git a/HDL_ON/UI/UI2/FuntionControlView/DoorLock/DoorLockHistoryTypeScreenPage.cs b/HDL_ON/UI/UI2/FuntionControlView/DoorLock/DoorLockHistoryTypeScreenPage.cs
new file mode 100644
index 0000000..e6736a1
--- /dev/null
+++ b/HDL_ON/UI/UI2/FuntionControlView/DoorLock/DoorLockHistoryTypeScreenPage.cs
@@ -0,0 +1,531 @@
+锘縰sing Shared;
+using HDL_ON.UI.CSS;
+using HDL_ON.Stan;
+using System;
+using System.Collections.Generic;
+using System.Text;
+using HDL_ON.Entity;
+
+namespace HDL_ON.UI
+{
+    /// <summary>
+    /// 闂ㄩ攣鍘嗗彶璁板綍鐨勭瓫閫夌晫闈�(涓嶉渶瑕佸姞鍏ョ埗鎺т欢)
+    /// </summary>
+    public class DoorLockHistoryTypeScreenPage : BottomDialogCommon
+    {
+        #region 鈻� 鍙橀噺澹版槑___________________________
+
+        /// <summary>
+        /// <para>[1]銆侀�夋嫨鐨勯棬閿佸搧鐗� all:鍏ㄩ儴</para>
+        /// <para>[2]銆侀�夋嫨鐨勭敤鎴� all:鍏ㄩ儴</para>
+        /// <para>[3]銆侀�夋嫨鐨勫紑閿佹柟寮� all:鍏ㄩ儴</para>
+        /// <para>[4]銆侀�夋嫨鐨勪俊鎭被鍨� all:鍏ㄩ儴 1锛氬紑閿佷俊鎭�  2:鎶ヨ绫讳俊鎭�</para>
+        /// </summary>
+        public Action<List<string>, List<string>, List<string>, List<string>> FinishEvent = null;
+        /// <summary>
+        /// 闂ㄩ攣璁惧,褰撲笉涓簄ull鏃�,灏嗕細鍑虹幇銆愰攣鐨勫瀷鍙枫�戠殑绛涢�夐�夐」
+        /// </summary>
+        private List<Function> listDevice = null;
+        /// <summary>
+        /// 鎴愬憳鍒楄〃
+        /// </summary>
+        private List<ResidenceMemberInfo> listMember = null;
+        /// <summary>
+        /// 榛樿閫夋嫨鐨勯棬閿佸搧鐗�
+        /// </summary>
+        private List<string> listSelectSpk = null;
+        /// <summary>
+        /// 榛樿閫夋嫨鐨勭敤鎴�
+        /// </summary>
+        private List<string> listSelectUser = null;
+        /// <summary>
+        /// 榛樿閫夋嫨鐨勫紑閿佹柟寮�
+        /// </summary>
+        private List<string> listUnlock = null;
+        /// <summary>
+        /// 榛樿閫夋嫨鐨勪俊鎭被鍨�
+        /// </summary>
+        private List<string> listMsgType = null;
+
+        #endregion
+
+        #region 鈻� 鍒濆鍖朹____________________________
+
+        /// <summary>
+        /// 闂ㄩ攣鍘嗗彶璁板綍鐨勭瓫閫夌晫闈�(涓嶉渶瑕佸姞鍏ョ埗鎺т欢)
+        /// </summary>
+        /// <param name="i_listDevice">闂ㄩ攣璁惧,褰撲笉涓簄ull鏃�,灏嗕細鍑虹幇銆愰攣鐨勫瀷鍙枫�戠殑绛涢�夐�夐」</param>
+        /// <param name="i_listMember">鎴愬憳鍒楄〃</param>
+        public DoorLockHistoryTypeScreenPage(List<Function> i_listDevice, List<ResidenceMemberInfo> i_listMember)
+        {
+            //涔嬪悗浼氳嚜鍔ㄨ皟鏁寸殑
+            base.RowCount = 7;
+            //绛涢��
+            base.StrTitle = Language.StringByID(StringId.Screen);
+
+            this.listDevice = i_listDevice;
+            this.listMember = i_listMember;
+        }
+
+        /// <summary>
+        /// 鍒濆鍖栨帶浠�
+        /// </summary>
+        /// <param name="i_listSelectSpk">榛樿閫夋嫨鐨勯棬閿佸搧鐗�</param>
+        /// <param name="i_listSelectUser">榛樿閫夋嫨鐨勭敤鎴�</param>
+        /// <param name="i_listUnlock">榛樿閫夋嫨鐨勫紑閿佹柟寮�</param>
+        /// <param name="i_listMsgType">榛樿閫夋嫨鐨勪俊鎭被鍨�</param>
+        public void InitControl(List<string> i_listSelectSpk, List<string> i_listSelectUser, List<string> i_listUnlock, List<string> i_listMsgType)
+        {
+            //宸茬粡鍒濆鍖�
+            if (base.btnCancel != null) { return; }
+
+            //鍚堝苟List闆嗗悎
+            this.MergeList(ref this.listSelectSpk, i_listSelectSpk);
+            this.MergeList(ref this.listSelectUser, i_listSelectUser);
+            this.MergeList(ref this.listUnlock, i_listUnlock);
+            this.MergeList(ref this.listMsgType, i_listMsgType);
+
+            //鍒濆鍖栧簳灞傛帶浠�
+            var frameWhiteBack = base.InitBaseControl(Application.CurrentWidth, false);
+            //鍙栨秷
+            base.btnCancel.ButtonClickEvent += (sender, e) =>
+            {
+                this.Close();
+            };
+
+            //纭
+            base.btnConfirm.ButtonClickEvent += (sender, e) =>
+            {
+                this.FinishEvent?.Invoke(listSelectSpk, listSelectUser, listUnlock, listMsgType);
+                this.Close();
+            };
+            //鍒楄〃鎺т欢
+            var listView = new VerticalFrameControl();
+            listView.Y = btnConfirm.Bottom;
+            listView.Height = this.RowCount * this.RowHeight;
+            frameWhiteBack.AddChidren(listView);
+
+            //鍒濆鍖栧垪琛ㄦ帶浠�
+            this.InitListControl(frameWhiteBack, listView);
+        }
+
+        /// <summary>
+        /// 鍒濆鍖栧垪琛ㄦ帶浠�
+        /// </summary>
+        /// <param name="listView"></param>
+        private void InitListControl(NormalFrameLayout frameWhiteBack, VerticalFrameControl listView)
+        {
+            //鍒濆Y杞翠负18
+            int yy = Application.GetRealHeight(18);
+
+            //鍒濆鍖栭攣鎸夐挳
+            yy = this.InitLockButton(listView, yy);
+            if (this.listDevice != null && this.listDevice.Count > 0)
+            {
+                //濡傛灉listDevice涓嶄负null鐨勮瘽,闇�瑕� + 20
+                yy += Application.GetRealHeight(20);
+            }
+
+            //鍒濆鍖栫敤鎴锋寜閽�(杩斿洖鏈�搴曢儴鐨勫潗鏍�)
+            yy = this.InitUserButton(listView, yy);
+
+            //鍒濆鍖栧紑閿佹柟寮忔寜閽�(杩斿洖鏈�搴曢儴鐨勫潗鏍�)
+            yy = this.InitUnLockButton(listView, yy + Application.GetRealHeight(20));
+
+            //鍒濆鍖栦俊鎭被鍨嬫寜閽�(杩斿洖鏈�搴曢儴鐨勫潗鏍�)
+            yy = this.InitMessageTypeButton(listView, yy + Application.GetRealHeight(20));
+
+            //鍐嶅姞涓婁竴涓簳閮ㄩ棿璺�
+            var frameSpace = new FrameLayout();
+            frameSpace.Height = Application.GetRealHeight(16);
+            frameSpace.Y = yy;
+            listView.frameTable.AddChidren(frameSpace);
+
+            //璋冩暣涓�涓嬮珮搴�
+            int realHeight = Application.GetRealHeight(500);
+            listView.AdjustTableHeight();
+            if (listView.frameTable.Height < realHeight)
+            {
+                //500涓烘渶澶ч珮搴�,濡傛灉姣�500灏�,鍒欑敤褰撳墠鐨勭湡瀹為珮搴�
+                realHeight = listView.frameTable.Height;
+            }
+            listView.Height = realHeight;
+            frameWhiteBack.Height = base.btnConfirm.Bottom + listView.Height;
+            //璋冩暣涓�涓嬪潗鏍�
+            frameWhiteBack.Gravity = Gravity.BottomCenter;
+        }
+
+        #endregion
+
+        #region 鈻� 鍏ㄩ儴鐐瑰嚮鎸夐挳_______________________
+
+        /// <summary>
+        /// 鍒濆鍖栭攣鎸夐挳(杩斿洖鏈�搴曢儴鐨勫潗鏍�)
+        /// </summary>
+        /// <param name="listView">鍒楄〃鎺т欢</param>
+        /// <param name="yy">鍒濆Y杞村潗鏍�</param>
+        /// <returns></returns>
+        private int InitLockButton(VerticalFrameControl listView, int yy)
+        {
+            //鑾峰彇鎵�鏈夐棬閿佺殑鍝佺墝
+            var dicLockBrand = this.GetAllLockBrand();
+            if (dicLockBrand.Count > 0)
+            {
+                //鎺т欢闆嗗悎
+                var listLockContr = new List<NormalViewControl>();
+                //閿�
+                var btnLock = new NormalViewControl(150, 20, true);
+                btnLock.X = Application.GetRealHeight(24);
+                btnLock.Y = yy;
+                btnLock.TextID = StringId.Lock;
+                listView.frameTable.AddChidren(btnLock);
+                //鍏ㄩ儴
+                var btnContr1 = this.InitSelectButton(Language.StringByID(StringId.All), listLockContr, this.listSelectSpk, this.listSelectSpk.Contains("all"));
+                btnContr1.MainKey = "all";
+                listLockContr.Add(btnContr1);
+                foreach (var strSpk in dicLockBrand.Keys)
+                {
+                    //鍒濆鍖栨寜閽�
+                    var btnContr2 = this.InitSelectButton(dicLockBrand[strSpk], listLockContr, this.listSelectSpk, this.listSelectSpk.Contains(strSpk));
+                    btnContr2.MainKey = strSpk;
+                    listLockContr.Add(btnContr2);
+                }
+                //鏀剧疆鎵�鏈夌殑鎸夐挳鍒板鍣�,杩斿洖鏈�搴曢儴鎺т欢鐨勫簳閮ㄥ潗鏍�
+                yy = this.SetAllButtonToFrame(listView.frameTable, listLockContr, btnLock.Bottom + Application.GetRealHeight(8));
+            }
+            return yy;
+        }
+
+        /// <summary>
+        /// 鍒濆鍖栫敤鎴锋寜閽�(杩斿洖鏈�搴曢儴鐨勫潗鏍�)
+        /// </summary>
+        /// <param name="listView">鍒楄〃鎺т欢</param>
+        /// <param name="yy">鍒濆Y杞村潗鏍�</param>
+        /// <returns></returns>
+        private int InitUserButton(VerticalFrameControl listView, int yy)
+        {
+            //鎺т欢闆嗗悎
+            var listContr = new List<NormalViewControl>();
+            //鐢ㄦ埛
+            var btnLock = new NormalViewControl(150, 20, true);
+            btnLock.X = Application.GetRealHeight(24);
+            btnLock.Y = yy;
+            btnLock.TextID = StringId.User;
+            listView.frameTable.AddChidren(btnLock);
+            //鍏ㄩ儴
+            var btnContr1 = this.InitSelectButton(Language.StringByID(StringId.All), listContr, this.listSelectUser, this.listSelectUser.Contains("all"));
+            btnContr1.MainKey = "all";
+            listContr.Add(btnContr1);
+            foreach (var info in this.listMember)
+            {
+                //鍒濆鍖栨寜閽�
+                var btnContr2 = this.InitSelectButton(info.nickName, listContr, this.listSelectUser, this.listSelectUser.Contains(info.childAccountId));
+                btnContr2.MainKey = info.childAccountId;
+                listContr.Add(btnContr2);
+            }
+            //鏀剧疆鎵�鏈夌殑鎸夐挳鍒板鍣�,杩斿洖鏈�搴曢儴鎺т欢鐨勫簳閮ㄥ潗鏍�
+            yy = this.SetAllButtonToFrame(listView.frameTable, listContr, btnLock.Bottom + Application.GetRealHeight(8));
+            return yy;
+        }
+
+        /// <summary>
+        /// 鍒濆鍖栧紑閿佹柟寮忔寜閽�(杩斿洖鏈�搴曢儴鐨勫潗鏍�)
+        /// </summary>
+        /// <param name="listView">鍒楄〃鎺т欢</param>
+        /// <param name="yy">鍒濆Y杞村潗鏍�</param>
+        /// <returns></returns>
+        private int InitUnLockButton(VerticalFrameControl listView, int yy)
+        {
+            //鎺т欢闆嗗悎
+            var listContr = new List<NormalViewControl>();
+            //寮�閿佹柟寮�
+            var btnLock = new NormalViewControl(150, 20, true);
+            btnLock.X = Application.GetRealHeight(24);
+            btnLock.Y = yy;
+            btnLock.TextID = StringId.UnlockingMode;
+            listView.frameTable.AddChidren(btnLock);
+            //鍏ㄩ儴
+            var btnContr1 = this.InitSelectButton(Language.StringByID(StringId.All), listContr, this.listUnlock, this.listUnlock.Contains("all"));
+            btnContr1.MainKey = "all";
+            listContr.Add(btnContr1);
+            //鎸囩汗
+            btnContr1 = this.InitSelectButton(Language.StringByID(StringId.Fingerprints), listContr, this.listUnlock, this.listUnlock.Contains("15"));
+            btnContr1.MainKey = "15";
+            listContr.Add(btnContr1);
+            //瀵嗙爜
+            btnContr1 = this.InitSelectButton(Language.StringByID(StringId.Password), listContr, this.listUnlock, this.listUnlock.Contains("0"));
+            btnContr1.MainKey = "0";
+            listContr.Add(btnContr1);
+            //鍗�
+            btnContr1 = this.InitSelectButton(Language.StringByID(StringId.Card), listContr, this.listUnlock, this.listUnlock.Contains("3"));
+            btnContr1.MainKey = "3";
+            listContr.Add(btnContr1);
+            //閽ュ寵
+            btnContr1 = this.InitSelectButton(Language.StringByID(StringId.Key), listContr, this.listUnlock, this.listUnlock.Contains("key"));
+            btnContr1.MainKey = "key";
+            listContr.Add(btnContr1);
+            //甯稿紑
+            btnContr1 = this.InitSelectButton(Language.StringByID(StringId.AlwaysOn), listContr, this.listUnlock, this.listUnlock.Contains("9000"));
+            btnContr1.MainKey = "9000";
+            listContr.Add(btnContr1);
+            //涓存椂瀵嗙爜寮�閿�
+            btnContr1 = this.InitSelectButton(Language.StringByID(StringId.TemporaryPasswordUnlocking), listContr, this.listUnlock, this.listUnlock.Contains("temp"));
+            btnContr1.MainKey = "temp";
+            listContr.Add(btnContr1);
+
+            //鏀剧疆鎵�鏈夌殑鎸夐挳鍒板鍣�,杩斿洖鏈�搴曢儴鎺т欢鐨勫簳閮ㄥ潗鏍�
+            yy = this.SetAllButtonToFrame(listView.frameTable, listContr, btnLock.Bottom + Application.GetRealHeight(8));
+            return yy;
+        }
+
+        /// <summary>
+        /// 鍒濆鍖栦俊鎭被鍨嬫寜閽�(杩斿洖鏈�搴曢儴鐨勫潗鏍�)
+        /// </summary>
+        /// <param name="listView">鍒楄〃鎺т欢</param>
+        /// <param name="yy">鍒濆Y杞村潗鏍�</param>
+        /// <returns></returns>
+        private int InitMessageTypeButton(VerticalFrameControl listView, int yy)
+        {
+            //鎺т欢闆嗗悎
+            var listContr = new List<NormalViewControl>();
+            //淇℃伅绫诲瀷
+            var btnTitle = new NormalViewControl(150, 20, true);
+            btnTitle.X = Application.GetRealHeight(24);
+            btnTitle.Y = yy;
+            btnTitle.TextID = StringId.UnlockingMode;
+            listView.frameTable.AddChidren(btnTitle);
+            //鍏ㄩ儴
+            var btnContr1 = this.InitSelectButton(Language.StringByID(StringId.All), listContr, this.listMsgType, this.listMsgType.Contains("all"));
+            btnContr1.MainKey = "all";
+            listContr.Add(btnContr1);
+            //寮�閿佷俊鎭�
+            btnContr1 = this.InitSelectButton(Language.StringByID(StringId.UnlockingMessage), listContr, this.listMsgType, this.listMsgType.Contains("1"));
+            btnContr1.MainKey = "1";
+            listContr.Add(btnContr1);
+            //鎶ヨ绫讳俊鎭�
+            btnContr1 = this.InitSelectButton(Language.StringByID(StringId.AlarmMessage), listContr, this.listMsgType, this.listMsgType.Contains("2"));
+            btnContr1.MainKey = "2";
+            listContr.Add(btnContr1);
+
+            //鏀剧疆鎵�鏈夌殑鎸夐挳鍒板鍣�,杩斿洖鏈�搴曢儴鎺т欢鐨勫簳閮ㄥ潗鏍�
+            yy = this.SetAllButtonToFrame(listView.frameTable, listContr, btnTitle.Bottom + Application.GetRealHeight(8));
+
+            return yy;
+        }
+
+        #endregion
+
+        #region 鈻� 鍒濆鍖栫偣鍑绘寜閽甠____________________
+
+        /// <summary>
+        /// 鍒濆鍖栫偣鍑绘寜閽�
+        /// </summary>
+        /// <param name="i_text">鏄剧ず鐨勬枃鏈�</param>
+        /// <param name="listContr">鐢熸垚鐨勬寜閽泦鍚�,鍦ㄧ敓鎴怳I杩囩▼涓�,璇峰嬁浣跨敤,鍥犱负瀹冭繕娌℃湁瀹屾垚</param>
+        /// <param name="listSelect">閫夋嫨鐨勪富閿�</param>
+        /// <param name="select">鏄惁鍒濆閫夋嫨</param>
+        /// <returns></returns>
+        private NormalViewControl InitSelectButton(string i_text, List<NormalViewControl> listContr, List<string> listSelectKey, bool select)
+        {
+            var btnContr = new NormalViewControl(98, 44, true);
+            btnContr.Radius = (uint)Application.GetRealWidth(8);
+            btnContr.TextAlignment = TextAlignment.Center;
+            btnContr.Text = i_text;
+            //璁剧疆鎸夐挳鐘舵��
+            this.SetButtonStatu(btnContr, select);
+
+            btnContr.ButtonClickEvent += (sender, e) =>
+            {
+                var value = btnContr.MainKey;
+                //鍙栨秷
+                if (listSelectKey.Contains(value) == true)
+                {
+                    if (value == "all" || listSelectKey.Count == 1)
+                    {
+                        //涓嶈兘鍙栨秷銆愬叏閮ㄣ��,骞朵笖鑷冲皯瑕侀�夋嫨涓�涓�
+                        return;
+                    }
+                    //璁剧疆鎸夐挳鐘舵��
+                    this.SetButtonStatu(btnContr, false);
+                    listSelectKey.Remove(value);
+                }
+                //閫夋嫨
+                else
+                {
+                    //璁剧疆鎸夐挳鐘舵��
+                    this.SetButtonStatu(btnContr, true);
+                    if (value == "all")
+                    {
+                        //銆愭墍鏈夈�戞寜閽浜庨�夋嫨鐘舵�佹椂,銆愭墍鏈夈�戞斁鍦ㄧ0浣嶇储寮�
+                        for (int i = 1; i < listContr.Count; i++)
+                        {
+                            //璁剧疆鎸夐挳鐘舵��
+                            this.SetButtonStatu(listContr[i], false);
+                            //绉婚櫎閫夋嫨
+                            listSelectKey.Remove(listContr[i].MainKey);
+                        }
+                    }
+                    else if (listSelectKey.Contains("all") == true)
+                    {
+                        //鎵�鏈夋寜閽彇娑�,銆愭墍鏈夋斁鍦ㄧ0浣嶇储寮曘��
+                        this.SetButtonStatu(listContr[0], false);
+                        listSelectKey.Remove("all");
+                    }
+                    listSelectKey.Add(value);
+                }
+            };
+
+            return btnContr;
+        }
+
+        #endregion
+
+        #region 鈻� 鏀剧疆鎵�鏈夋寜閽甠______________________
+
+        /// <summary>
+        /// 鏀剧疆鎵�鏈夌殑鎸夐挳鍒板鍣�,杩斿洖鏈�搴曢儴鎺т欢鐨勫簳閮ㄥ潗鏍�
+        /// </summary>
+        /// <param name="frameBack">瀹瑰櫒</param>
+        /// <param name="listContr">鍒楄〃鎺т欢</param>
+        /// <param name="i_yy">鍒濆Y杞�</param>
+        private int SetAllButtonToFrame(FrameLayout frameBack, List<NormalViewControl> listContr, int i_yy)
+        {
+            //鍒濆X杞�
+            int defultXX = Application.GetRealWidth(24);
+            int nowXX = defultXX;
+            //鎸夐挳闂寸殑闂磋窛
+            int space = Application.GetRealWidth(16);
+            //鎸夐挳鏈�澶у搴�
+            int maxWidth = Application.GetRealWidth(98) * 2 + space;
+            //鎸夐挳鏈�灏忓搴�
+            int minWidth = Application.GetRealWidth(98);
+
+            //妗屽竷鐨勫搴�
+            int tableWidth = frameBack.Width - nowXX * 2;
+
+            int bottomY = 0;
+            foreach (var contr in listContr)
+            {
+                //璁$畻瀹冪殑鐪熷疄瀹藉害,浣嗘槸涓嶈兘瓒呰繃鏈�澶у搴�
+                int realWidth = contr.GetRealWidthByText();
+                if (realWidth >= maxWidth)
+                {
+                    //鏈�澶у搴�
+                    realWidth = maxWidth;
+                }
+                else if (realWidth <= minWidth)
+                {
+                    //鏈�灏忓搴�
+                    realWidth = minWidth;
+                }
+                else
+                {
+                    //濡傛灉瀹冧粙浜庢渶灏忓拰鏈�澶т箣闂�,鍒欑敤瀹冪殑鐪熷疄鍊�+10,璁╁畠宸﹀彸鏈夌偣闂磋窛,鍗充娇瓒呰繃,搴旇涔熸病鍟ヤ簨
+                    realWidth += Application.GetRealWidth(10);
+                }
+                contr.Width = realWidth;
+                frameBack.AddChidren(contr);
+
+                //鍐嶈绠楀姞涓婂畠鏈夋病鏈夎秴杩囧彸杈圭晫(闇�瑕佸噺鎺夊垵濮媂杞�)
+                if (nowXX + realWidth - defultXX <= tableWidth)
+                {
+                    //娌℃湁瓒呰繃杈圭晫,鍙互鐩存帴娣诲姞
+                    contr.X = nowXX;
+                    contr.Y = i_yy;
+                }
+                else
+                {
+                    //濡傛灉瓒呰繃浜嗚竟鐣�,鍒欐崲琛�,閲嶇疆X杞�,Y杞村悜涓嬫帹绉�
+                    contr.X = defultXX;
+                    contr.Y = i_yy + contr.Height + space;
+                    i_yy = contr.Y;
+                }
+                //X杞村線鍙虫帹绉�
+                nowXX = contr.Right + space;
+                //搴曢儴鍧愭爣(杩斿洖鍊�)
+                bottomY = contr.Bottom;
+            }
+            return bottomY;
+        }
+
+        #endregion
+
+        #region 鈻� 涓�鑸柟娉昣__________________________
+
+        /// <summary>
+        /// 鑾峰彇鎵�鏈夐棬閿佺殑鍝佺墝
+        /// </summary>
+        /// <returns></returns>
+        private Dictionary<string, string> GetAllLockBrand()
+        {
+            if (this.listDevice == null || this.listDevice.Count == 0)
+            {
+                return new Dictionary<string, string>();
+            }
+
+            var dicData = new Dictionary<string, string>();
+            foreach (var device in this.listDevice)
+            {
+                if (device.spk == "door.sone")
+                {
+                    dicData[device.spk] = "S-ONE";
+                    continue;
+                }
+            }
+            return dicData;
+        }
+
+        /// <summary>
+        /// 璁剧疆鎸夐挳鐘舵��
+        /// </summary>
+        /// <param name="btnContr">鎺т欢</param>
+        /// <param name="select">鏄惁鏄�夋嫨鐘舵��</param>
+        private void SetButtonStatu(NormalViewControl btnContr, bool select)
+        {
+            if (select == false)
+            {
+                btnContr.TextColor = CSS_Color.FirstLevelTitleColor;
+                btnContr.BackgroundColor = CSS_Color.MainBackgroundColor;
+                btnContr.BorderWidth = 1;
+                btnContr.BorderColor = CSS_Color.PromptingColor1;
+            }
+            else
+            {
+                btnContr.TextColor = CSS_Color.MainBackgroundColor;
+                btnContr.BackgroundColor = CSS_Color.MainColor;
+                btnContr.BorderWidth = 0;
+                btnContr.BorderColor = CSS_Color.viewTranslucence;
+            }
+        }
+
+        /// <summary>
+        /// 鍚堝苟List闆嗗悎
+        /// </summary>
+        /// <param name="listTarget"></param>
+        /// <param name="listSource"></param>
+        private void MergeList(ref List<string> listTarget, List<string> listSource)
+        {
+            if (listSource == null) { return; }
+            if (listTarget == null)
+            {
+                listTarget = new List<string>();
+            }
+            listTarget.AddRange(listSource);
+            if (listTarget.Count == 0)
+            {
+                listTarget.Add("all");
+            }
+        }
+
+        /// <summary>
+        /// 鍏抽棴鐣岄潰
+        /// </summary>
+        public override void Close()
+        {
+            base.Close();
+            this.FinishEvent = null;
+        }
+
+        #endregion
+    }
+}
diff --git a/HDL_ON/UI/UI2/FuntionControlView/DoorLock/DoorLockListPage.cs b/HDL_ON/UI/UI2/FuntionControlView/DoorLock/DoorLockListPage.cs
new file mode 100644
index 0000000..914e3a1
--- /dev/null
+++ b/HDL_ON/UI/UI2/FuntionControlView/DoorLock/DoorLockListPage.cs
@@ -0,0 +1,231 @@
+锘縰sing Shared;
+using HDL_ON.Stan;
+using System;
+using System.Collections.Generic;
+using System.Text;
+using HDL_ON.UI.CSS;
+using HDL_ON.Entity;
+
+namespace HDL_ON.UI
+{
+    /// <summary>
+    /// 闂ㄩ攣鍒楄〃鐣岄潰(鏈夊涓棬閿佺殑鏃跺��,鎵嶄細鏄剧ず鐨勭晫闈�)
+    /// </summary>
+    public class DoorLockListPage : EditorCommonForm
+    {
+        #region 鈻� 鍙橀噺澹版槑___________________________
+
+        /// <summary>
+        /// 闂ㄩ攣璁惧鍒楄〃
+        /// </summary>
+        private List<Function> listDevice = new List<Function>();
+        /// <summary>
+        /// 鐢垫睜鎺т欢鍒楄〃(key:璁惧鐨剆id)
+        /// </summary>
+        private Dictionary<string, BatteryPersentControl> dicBatteryContr = new Dictionary<string, BatteryPersentControl>();
+        /// <summary>
+        /// 鍒楄〃鎺т欢
+        /// </summary>
+        private VerticalListControl listView = null;
+
+        #endregion
+
+        #region 鈻� 鍒濆鍖朹____________________________
+
+        /// <summary>
+        /// 鐢婚潰鏄剧ず(搴曞眰浼氬浐瀹氳皟鐢ㄦ鏂规硶锛屽�熶互瀹屾垚鐢婚潰鍒涘缓)
+        /// </summary>
+        /// <param name="i_listDevice">闂ㄩ攣璁惧鍒楄〃</param>
+        public void ShowForm(List<Function> i_listDevice)
+        {
+            this.listDevice.AddRange(i_listDevice);
+
+            //鏅鸿兘闂ㄩ攣
+            base.SetTitleText(Language.StringByID(StringId.DoorLock));
+
+            //鍒濆鍖栧ご閮ㄥ巻鍙茶褰曟帶浠�
+            this.InitTopHistoryControl();
+
+            //鍒濆鍖栦腑閮ㄤ俊鎭�
+            this.InitMiddleFrame();
+        }
+
+        /// <summary>
+        /// 鍒濆鍖栦腑閮ㄤ俊鎭�
+        /// </summary>
+        private void InitMiddleFrame()
+        {
+            //娓呯┖bodyFrame
+            this.ClearBodyFrame();
+
+            string nowSelectId = string.Empty;
+            //妤煎眰涓嬫媺鍥炬爣
+            var btnFloor = new NormalViewControl(100, Application.GetRealHeight(16), false);
+            var btnFloorIcon = new IconViewControl(16);
+            btnFloorIcon.X = HdlControlResourse.XXLeft;
+            btnFloorIcon.Y = Application.GetRealHeight(18);
+            btnFloorIcon.UnSelectedImagePath = "Public/DownIcon.png";
+            bodyFrameLayout.AddChidren(btnFloorIcon);
+            btnFloorIcon.ButtonClickEvent += (sender, e) =>
+            {
+                //鏄剧ず涓嬫媺鍒楄〃
+                var form = new FloorRoomSelectPopupView();
+                form.ShowDeviceFunctionView(btnFloor, this.listDevice, (selectId, listFunc) =>
+                {
+                    nowSelectId = selectId;
+                    //閲嶆柊鍒濆鍖栭棬閿佸垪琛ㄦ帶浠�
+                    this.InitDoorListControl(listFunc);
+
+                }, nowSelectId);
+            };
+            //妤煎眰
+            btnFloor.X = btnFloorIcon.Right + Application.GetRealWidth(2);
+            btnFloor.TextColor = CSS_Color.FirstLevelTitleColor;
+            btnFloor.TextSize = CSS_FontSize.PromptFontSize_FirstLevel;
+            btnFloor.Text = DB_ResidenceData.Instance.CurFloor.roomName;
+            btnFloor.Width = btnFloor.GetRealWidthByText();
+            bodyFrameLayout.AddChidren(btnFloor);
+            //璁╁畠鐩稿鍥炬爣灞呬腑
+            btnFloor.Y = btnFloorIcon.Y + (btnFloorIcon.Height - btnFloor.Height) / 2;
+            btnFloor.ButtonClickEvent += (sender, e) =>
+            {
+                btnFloorIcon.ButtonClickEvent(null, null);
+            };
+
+            //鍒楄〃鎺т欢
+            this.listView = new VerticalListControl();
+            listView.Y = Application.GetRealHeight(53);
+            listView.Height = bodyFrameLayout.Height - Application.GetRealHeight(53);
+            bodyFrameLayout.AddChidren(listView);
+
+            //鍒濆鍖栭棬閿佸垪琛ㄦ帶浠�
+            this.InitDoorListControl(this.listDevice);
+        }
+
+        #endregion
+
+        #region 鈻� 娣诲姞闂ㄩ攣鎺т欢_______________________
+
+        /// <summary>
+        /// 鍒濆鍖栭棬閿佸垪琛ㄦ帶浠�
+        /// </summary>
+        private void InitDoorListControl(List<Function> i_listDevice)
+        {
+            this.listView.RemoveAll();
+            this.dicBatteryContr = new Dictionary<string, BatteryPersentControl>();
+
+            //鐢熸垚闂ㄩ攣鎺т欢
+            foreach (var device in i_listDevice)
+            {
+                this.AddDoorControl(device);
+            }
+        }
+
+        /// <summary>
+        /// 娣诲姞闂ㄩ攣鎺т欢
+        /// </summary>
+        /// <param name="i_device">闂ㄩ攣瀵硅薄</param>
+        private void AddDoorControl(Function i_device)
+        {
+            //鐧借壊鑳屾櫙瀹瑰櫒
+            var frameBack = new FrameLayoutStatuControl();
+            frameBack.Width = Application.GetRealWidth(343);
+            frameBack.Height = Application.GetRealHeight(96);
+            frameBack.Radius = (uint)Application.GetRealWidth(12);
+            frameBack.Gravity = Gravity.CenterHorizontal;
+            frameBack.BackgroundColor = CSS_Color.MainBackgroundColor;
+            this.listView.AddChidren(frameBack);
+            //闂ㄩ攣鍥炬爣
+            var btnIcon = new IconViewControl(32);
+            btnIcon.X = Application.GetRealWidth(10);
+            btnIcon.Y = Application.GetRealHeight(15);
+            btnIcon.UnSelectedImagePath = "FunctionIcon/DoorLock/DoorLock.png";
+            frameBack.AddChidren(btnIcon, ChidrenBindMode.BindEvent);
+            //璁惧鍚嶅瓧
+            var btnName = new Button();
+            btnName.X = btnIcon.Right + Application.GetRealWidth(12);
+            btnName.Y = Application.GetRealHeight(12);
+            btnName.Width = Application.GetRealWidth(150);
+            btnName.Height = Application.GetRealHeight(20);
+            btnName.TextColor = CSS_Color.FirstLevelTitleColor;
+            btnName.TextAlignment = TextAlignment.CenterLeft;
+            btnName.Text = i_device.name;
+            frameBack.AddChidren(btnName, ChidrenBindMode.BindEvent);
+            //鎴块棿
+            var btnRoom = new Button();
+            btnRoom.X = btnName.X;
+            btnRoom.Y = btnName.Bottom + Application.GetRealHeight(4);
+            btnRoom.Width = Application.GetRealWidth(150);
+            btnRoom.Height = Application.GetRealHeight(15);
+            btnRoom.TextColor = CSS_Color.PromptingColor1;
+            btnRoom.TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel;
+            btnRoom.TextAlignment = TextAlignment.CenterLeft;
+            btnRoom.Text = i_device.GetRoomListName();
+            frameBack.AddChidren(btnRoom, ChidrenBindMode.BindEvent);
+            //鐢垫睜鍥炬爣
+            var btnBattery = new BatteryPersentControl();
+            btnBattery.Y = Application.GetRealHeight(62);
+            frameBack.AddChidren(btnBattery, ChidrenBindMode.BindEvent);
+            btnBattery.InitControl();
+            btnBattery.SetValue(80);
+            btnBattery.X = frameBack.Width - btnBattery.Width - Application.GetRealWidth(12);
+            this.dicBatteryContr[i_device.sid] = btnBattery;
+            frameBack.ButtonClickEvent += (sender, e) =>
+            {
+                var form = new DoorLockPage();
+                form.AddForm(i_device, new Button(), btnName, btnRoom);
+            };
+
+            //搴曢儴鍐嶅姞涓棿璺�
+            var frameSpace = new FrameLayout();
+            frameSpace.Height = Application.GetRealHeight(12);
+            this.listView.AddChidren(frameSpace);
+        }
+
+        #endregion
+
+        #region 鈻� 鍒濆鍖栧ご閮ㄥ巻鍙茶褰曞浘鏍嘷____________
+
+        /// <summary>
+        /// 鍒濆鍖栧ご閮ㄥ巻鍙茶褰曟帶浠�
+        /// </summary>
+        private void InitTopHistoryControl()
+        {
+            //鍘嗗彶璁板綍鍥炬爣
+            var btnIcon = new IconViewControl(28);
+            btnIcon.X = Application.GetRealWidth(337);
+            btnIcon.Y = Application.GetRealHeight(9);
+            btnIcon.UnSelectedImagePath = "FunctionIcon/DoorLock/History.png";
+            topFrameLayout.AddChidren(btnIcon);
+            btnIcon.ButtonClickEvent += (sender, e) =>
+            {
+                var form = new DoorLockHistoryInfoPage();
+                form.AddForm(this.listDevice);
+            };
+        }
+
+        #endregion
+
+        #region 鈻� 璁惧鐘舵�佹帹閫乢______________________
+
+        /// <summary>
+        /// 璁惧鐘舵�佹帹閫�
+        /// </summary>
+        /// <param name="i_LocalDevice"></param>
+        public override void DeviceStatuPush(Function i_LocalDevice)
+        {
+            //涓嶆槸鐩爣璁惧
+            if (this.dicBatteryContr.ContainsKey(i_LocalDevice.sid) == false)
+            {
+                return;
+            }
+
+        }
+
+        #endregion
+
+        #region 鈻� 涓�鑸柟娉昣__________________________
+
+        #endregion
+    }
+}
diff --git a/HDL_ON/UI/UI2/FuntionControlView/DoorLock/DoorLockPage.cs b/HDL_ON/UI/UI2/FuntionControlView/DoorLock/DoorLockPage.cs
new file mode 100644
index 0000000..5b6d5ca
--- /dev/null
+++ b/HDL_ON/UI/UI2/FuntionControlView/DoorLock/DoorLockPage.cs
@@ -0,0 +1,1065 @@
+锘縰sing Shared;
+using HDL_ON.Stan;
+using System;
+using System.Collections.Generic;
+using System.Text;
+using HDL_ON.UI.CSS;
+using HDL_ON.Entity;
+
+namespace HDL_ON.UI
+{
+    /// <summary>
+    /// 闂ㄩ攣鐨勬帶鍒剁晫闈�
+    /// </summary>
+    public class DoorLockPage : DeviceFunctionCardCommonForm
+    {
+        #region 鈻� 鍙橀噺澹版槑___________________________
+
+        /// <summary>
+        /// 鐢垫睜鎺т欢
+        /// </summary>
+        private BatteryPersentControl batteryControl = null;
+        /// <summary>
+        /// 鍦ㄧ嚎鍥炬爣鎺т欢
+        /// </summary>
+        private IconViewControl btnOnlineIcon = null;
+        /// <summary>
+        /// 鍦ㄧ嚎鏂囨湰鎺т欢
+        /// </summary>
+        private NormalViewControl btnOnlineView = null;
+        /// <summary>
+        /// 澹伴煶鍥炬爣
+        /// </summary>
+        private IconViewControl btnVoice = null;
+        /// <summary>
+        /// 澹伴煶鐨勬粦鍔ㄦ潯鎺т欢
+        /// </summary>
+        private SeekBarImageControl seekBarVoiceControl = null;
+        /// <summary>
+        /// 澹伴煶鐧惧垎姣�
+        /// </summary>
+        private NormalViewControl btnVoicePersent = null;
+        /// <summary>
+        /// 甯稿紑妯″紡鍥炬爣
+        /// </summary>
+        private IconViewControl btnNormallyOpenIcon = null;
+        /// <summary>
+        /// 涓棿鐨勫紑閿佹垨鑰呭叧閿佸浘鐗囨帶浠�
+        /// </summary>
+        private PicViewControl picLockControl = null;
+        /// <summary>
+        /// 涓存椂瀵嗙爜tab椤典腑闂寸殑鎺т欢瀹瑰櫒(瀹冪殑Y杞存槸 涓�閿紑閿�/涓存椂瀵嗙爜寮�閿佺殑搴曢儴(绮椾綋瀛椾綋)+4)
+        /// </summary>
+        private FrameLayout frameTempPsw = null;
+        /// <summary>
+        /// 1:閫夋嫨鐨勬槸涓�閿紑閿� 2:閫夋嫨鐨勬槸涓存椂瀵嗙爜寮�閿�
+        /// </summary>
+        private int nowSelectMenu = 1;
+        /// <summary>
+        /// 闂ㄩ攣鏁版嵁
+        /// </summary>
+        private DoorLockData doorLockData = new DoorLockData();
+        /// <summary>
+        /// 闂ㄩ攣鐨勫巻鍙茶褰�
+        /// </summary>
+        private List<DoorHistoryLog> listHistoryLog = null;
+        /// <summary>
+        /// 鎴愬憳鍒楄〃
+        /// </summary>
+        private List<ResidenceMemberInfo> listMember = null;
+        /// <summary>
+        /// 鏂囨湰缂撳瓨
+        /// </summary>
+        private Dictionary<string, string> dicText = new Dictionary<string, string>();
+
+        #endregion
+
+        #region 鈻� 鍒濆鍖朹____________________________
+
+        /// <summary>
+        /// 闂ㄩ攣鐨勬帶鍒剁晫闈�
+        /// </summary>
+        public DoorLockPage()
+        {
+            //闂ㄩ攣涓嶅厑璁告敹钘�
+            this.ShowColltionButton = false;
+        }
+
+        /// <summary>
+        /// 鍒濆鍖栫櫧鑹插尯鍩熺殑鍐呭
+        /// </summary>
+        public override void InitFrameWhiteContent()
+        {
+            //鏅鸿兘闂ㄩ攣
+            base.SetTitleText(Language.StringByID(StringId.DoorLock));
+
+            this.dicText["宸茶繛鎺�"] = Language.StringByID(StringId.Connected);
+            this.dicText["鏈繛鎺�"] = Language.StringByID(StringId.UnConnected);
+
+            //宸﹀彸缈婚〉鐨勪簨浠�
+            base.PageChangeEvent += (index) =>
+            {
+                if (index == 1)
+                {
+                    //鍒濆鍖栭棬閿佸巻鍙茶褰曚互鍙婃帶浠�
+                    this.InitDoorHistoryLogAndControl();
+                }
+            };
+
+            //鍒锋柊褰撳墠璁惧鐨勭姸鎬佺紦瀛�
+            this.RefreshNowDeviceStatuMemory(this.device);
+            //鍒濆鍖栫涓�涓储寮曢〉鐨勫唴瀹�
+            this.InitFrameWhiteContent1();
+            //鍒濆鍖栫浜屼釜绱㈠紩椤�(鍘嗗彶璁板綍)
+            this.InitFrameWhiteContent2();
+            //鍒锋柊鐣岄潰鐘舵��
+            this.RefreshFormStatu();
+        }
+
+        /// <summary>
+        /// 鍒濆鍖栫涓�涓储寮曢〉鐨勫唴瀹�
+        /// </summary>
+        private void InitFrameWhiteContent1()
+        {
+            //鐢垫睜鎺т欢
+            this.batteryControl = new BatteryPersentControl();
+            //瀹冩湁涓渶灏忕殑X杞�
+            batteryControl.X = Application.GetRealWidth(104) > base.btnRoomName.Right ?
+                Application.GetRealWidth(104) : base.btnRoomName.Right + Application.GetRealWidth(4);
+            FrameWhiteCentet1.AddChidren(batteryControl);
+            if (batteryControl.Height > base.btnRoomName.Height)
+            {
+                //涓�涓槸25锛屼竴涓槸21锛屽紕涓嶅噯鍒板簳璋佹洿楂�,鍥犱负璁$畻鏂规硶涓嶄竴鏍�
+                batteryControl.Y = base.btnRoomName.Y - (batteryControl.Height - base.btnRoomName.Height) / 2;
+            }
+            else
+            {
+                batteryControl.Y = base.btnRoomName.Y + (batteryControl.Height - base.btnRoomName.Height) / 2;
+            }
+            batteryControl.InitControl();
+            batteryControl.SetValue(100);
+
+            //鍦ㄧ嚎鐘舵��
+            this.btnOnlineIcon = new IconViewControl(24);
+            btnOnlineIcon.X = batteryControl.Right + Application.GetRealWidth(12);
+            btnOnlineIcon.Y = batteryControl.Y;
+            btnOnlineIcon.UnSelectedImagePath = "FunctionIcon/DoorLock/Connect.png";
+            FrameWhiteCentet1.AddChidren(btnOnlineIcon);
+            //鍦ㄧ嚎鏂囨湰
+            this.btnOnlineView = new NormalViewControl(Application.GetRealWidth(100), btnOnlineIcon.Height, false);
+            btnOnlineView.X = btnOnlineIcon.Right + Application.GetRealWidth(4);
+            btnOnlineView.Y = btnOnlineIcon.Y;
+            btnOnlineView.TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel;
+            btnOnlineView.TextColor = CSS_Color.PromptingColor1;
+            btnOnlineView.TextID = StringId.Connected;
+            FrameWhiteCentet1.AddChidren(btnOnlineView);
+            //鍙充笂瑙掗厤缃粨鏉熺殑浜嬩欢
+            base.SettionFinishEvent += () =>
+            {
+                //浠庢柊璁剧疆鍧愭爣
+                batteryControl.X = Application.GetRealWidth(104) > base.btnRoomName.Right ?
+                     Application.GetRealWidth(104) : base.btnRoomName.Right + Application.GetRealWidth(4);
+                btnOnlineIcon.X = batteryControl.Right + Application.GetRealWidth(12);
+                btnOnlineView.X = btnOnlineIcon.Right + Application.GetRealWidth(4);
+            };
+
+            //涓棿鐨勫紑閿佹垨鑰呭叧閿佸浘鐗囨帶浠�
+            this.picLockControl = new PicViewControl(256, 260);
+            picLockControl.Y = Application.GetRealHeight(129);
+            picLockControl.Gravity = Gravity.CenterHorizontal;
+            picLockControl.UnSelectedImagePath = "FunctionIcon/DoorLock/LockPictrue1.png";
+            FrameWhiteCentet1.AddChidren(picLockControl);
+            picLockControl.ButtonClickEvent += (sender, e) =>
+            {
+                //涓�閿紑閿�
+                this.DoOneKeyToUnlockDoor();
+            };
+
+            //涓存椂瀵嗙爜鐨勬帶浠跺鍣�
+            this.frameTempPsw = new FrameLayout();
+            frameTempPsw.Y = Application.GetRealHeight(129);
+            frameTempPsw.Height = Application.GetRealHeight(260);
+            frameTempPsw.Visible = false;
+            FrameWhiteCentet1.AddChidren(frameTempPsw);
+
+            //澹伴煶
+            this.btnVoice = new IconViewControl(24);
+            btnVoice.UnSelectedImagePath = "FunctionIcon/DoorLock/Voice.png";
+            btnVoice.X = Application.GetRealWidth(23);
+            btnVoice.Y = Application.GetRealHeight(410);
+            FrameWhiteCentet1.AddChidren(btnVoice);
+
+            //澹伴煶鐨勬粦鍔ㄦ潯
+            this.seekBarVoiceControl = new SeekBarImageControl(215);
+            seekBarVoiceControl.Gravity = Gravity.CenterHorizontal;
+            FrameWhiteCentet1.AddChidren(seekBarVoiceControl);
+            seekBarVoiceControl.Y = btnVoice.Y - (seekBarVoiceControl.Height - btnVoice.Height) / 2;
+            //缁戝畾PageLayout鎺т欢
+            seekBarVoiceControl.BindPageLayout();
+
+            //澹伴煶鐧惧垎姣�
+            this.btnVoicePersent = new NormalViewControl(Application.GetRealWidth(50), btnVoice.Height, false);
+            btnVoicePersent.X = seekBarVoiceControl.Right + Application.GetRealWidth(8) - seekBarVoiceControl.SeekBarPadding;
+            btnVoicePersent.Y = btnVoice.Y;
+            btnVoicePersent.TextColor = CSS_Color.PromptingColor1;
+            btnVoicePersent.TextSize = CSS_FontSize.PromptFontSize_FirstLevel;
+            btnVoicePersent.Text = "100%";
+            FrameWhiteCentet1.AddChidren(btnVoicePersent);
+
+            seekBarVoiceControl.ProgressChangedEvent += (div, value) =>
+            {
+                btnVoicePersent.Text = value + "%";
+                if (div == 1)
+                {
+                }
+            };
+
+            //鍒濆鍖栧紑閿佽彍鍗�(涓�閿紑閿�,涓存椂瀵嗙爜寮�閿�)
+            this.InitUnLockMenuControl();
+            //鍒濆鍖栧簳閮ㄨ彍鍗曞浘鏍�
+            this.InitBottomMenuIconControl();
+        }
+
+        /// <summary>
+        /// 鍒濆鍖栧紑閿佽彍鍗�(涓�閿紑閿�,涓存椂瀵嗙爜寮�閿�)
+        /// </summary>
+        private void InitUnLockMenuControl()
+        {
+            //濡傛灉鏄垚鍛�,鍒欏彧鏈変竴閿紑閿�
+            if (DB_ResidenceData.Instance.CurrentRegion.isOtherShare == true)
+            {
+                //涓�閿紑閿�
+                var btnOneKey = new NormalViewControl(100, 25, true);
+                btnOneKey.Y = Application.GetRealHeight(100);
+                btnOneKey.TextSize = CSS_FontSize.HeadlineFontSize;
+                btnOneKey.TextColor = CSS_Color.MainColor;
+                btnOneKey.Text = Language.StringByID(StringId.OneKeyUnlocking);
+                btnOneKey.Width = this.GetTextRealWidth(btnOneKey.Text, CSS_FontSize.HeadlineFontSize, true);
+                btnOneKey.Gravity = Gravity.CenterHorizontal;
+                btnOneKey.IsBold = true;
+                FrameWhiteCentet1.AddChidren(btnOneKey);
+            }
+            else
+            {
+                //涓�閿紑閿�
+                var btnOneKey = new NormalViewControl(100, 25, true);
+                btnOneKey.Y = Application.GetRealHeight(100);
+                btnOneKey.TextSize = Language.CurrentLanguage == "Chinese" ? CSS_FontSize.HeadlineFontSize : CSS_FontSize.SubheadingFontSize;
+                btnOneKey.TextColor = CSS_Color.MainColor;
+                btnOneKey.Text = Language.StringByID(StringId.OneKeyUnlocking);
+                btnOneKey.TextAlignment = TextAlignment.CenterRight;
+                btnOneKey.IsBold = true;
+                btnOneKey.Width = this.GetTextRealWidth(btnOneKey.Text, CSS_FontSize.HeadlineFontSize, true);
+                FrameWhiteCentet1.AddChidren(btnOneKey);
+                btnOneKey.X = Application.GetRealWidth(140) - btnOneKey.Width;
+
+                //涓存椂瀵嗙爜寮�閿�
+                var btnTempPsw = new NormalViewControl(100, 25, true);
+                btnTempPsw.X = btnOneKey.Right + Application.GetRealWidth(36);
+                btnTempPsw.Y = btnOneKey.Y;
+                btnTempPsw.TextColor = CSS_Color.PromptingColor1;
+                btnTempPsw.Text = Language.StringByID(StringId.TemporaryPasswordUnlocking);
+                btnTempPsw.Width = this.GetTextRealWidth(btnTempPsw.Text, CSS_FontSize.HeadlineFontSize, true);
+                FrameWhiteCentet1.AddChidren(btnTempPsw);
+
+                btnOneKey.ButtonClickEvent += (sender, e) =>
+                {
+                    //閫夋嫨鐨勬槸鍚屼竴涓�,鍒欎笉澶勭悊
+                    if (this.nowSelectMenu == 1) { return; }
+                    this.nowSelectMenu = 1;
+
+                    btnOneKey.IsBold = true;
+                    btnOneKey.TextSize = Language.CurrentLanguage == "Chinese" ? CSS_FontSize.HeadlineFontSize : CSS_FontSize.SubheadingFontSize;
+                    btnOneKey.TextColor = CSS_Color.MainColor;
+
+                    btnTempPsw.IsBold = false;
+                    btnTempPsw.TextSize = CSS_FontSize.TextFontSize;
+                    btnTempPsw.TextColor = CSS_Color.PromptingColor1;
+
+                    //璁剧疆涓棿瀹瑰櫒鎺т欢鍙鍖�
+                    this.SetMiddleFrameControlVisible();
+                };
+
+                btnTempPsw.ButtonClickEvent += (sender, e) =>
+                {
+                    //閫夋嫨鐨勬槸鍚屼竴涓�,鍒欎笉澶勭悊
+                    if (this.nowSelectMenu == 2) { return; }
+                    this.nowSelectMenu = 2;
+
+                    btnOneKey.IsBold = false;
+                    btnOneKey.TextSize = CSS_FontSize.TextFontSize;
+                    btnOneKey.TextColor = CSS_Color.PromptingColor1;
+
+                    btnTempPsw.IsBold = true;
+                    btnTempPsw.TextSize = Language.CurrentLanguage == "Chinese" ? CSS_FontSize.HeadlineFontSize : CSS_FontSize.SubheadingFontSize;
+                    btnTempPsw.TextColor = CSS_Color.MainColor;
+
+                    //璁剧疆涓棿瀹瑰櫒鎺т欢鍙鍖�
+                    this.SetMiddleFrameControlVisible();
+                };
+            }
+        }
+
+        #endregion
+
+        #region 鈻� 鍒濆鍖栫浜屼釜绱㈠紩椤�(鍘嗗彶璁板綍)_______
+
+        /// <summary>
+        /// 鍒濆鍖栫浜屼釜绱㈠紩椤�(鍘嗗彶璁板綍)
+        /// </summary>
+        private void InitFrameWhiteContent2()
+        {
+            //娣诲姞绗簩涓猵age
+            this.AddSecondPage();
+        }
+
+        /// <summary>
+        /// 鍒濆鍖栭棬閿佸巻鍙茶褰曚互鍙婃帶浠�
+        /// </summary>
+        private void InitDoorHistoryLogAndControl()
+        {
+            //宸茬粡鍒濆鍖�
+            if (this.listHistoryLog != null) { return; }
+
+            this.ShowProgressBar();
+            HdlThreadLogic.Current.RunThread(() =>
+            {
+                //鍒濆鍖栨垚鍛樺垪琛ㄤ俊鎭�
+                if (this.InitMemberListInfo() == false)
+                {
+                    this.CloseProgressBar();
+                    return;
+                }
+                //鑾峰彇闂ㄩ攣鍘嗗彶璁板綍
+                this.listHistoryLog = new DAL.Server.HttpServerRequest().GetDoorHistoryLogs(this.device);
+                this.CloseProgressBar();
+                if (this.listHistoryLog == null)
+                {
+                    return;
+                }
+                HdlThreadLogic.Current.RunMain(() =>
+                {
+                    //鍒濆鍖栭棬閿佸巻鍙茶褰曞垪琛ㄦ帶浠�
+                    this.InitDoorHistoryLogListControl(this.listHistoryLog);
+                });
+            });
+        }
+
+        /// <summary>
+        /// 鍒濆鍖栭棬閿佸巻鍙茶褰曞垪琛ㄦ帶浠�
+        /// </summary>
+        /// <param name="listLog">鏄剧ず鐨勯棬閿佽褰�</param>
+        private void InitDoorHistoryLogListControl(List<DoorHistoryLog> listLog)
+        {
+            //鎸夊勾鍒嗙粍
+            var dicData = new Dictionary<int, List<DoorHistoryLog>>();
+            foreach (var info in listLog)
+            {
+                var year = info.Time.Year;
+                if (dicData.ContainsKey(year) == false)
+                {
+                    dicData[year] = new List<DoorHistoryLog>();
+                }
+                dicData[year].Add(info);
+            }
+
+            //鍏堟竻绌�
+            base.FrameWhiteCentet2.RemoveAll();
+
+            //鏃ュ織
+            var btnLog = new NormalViewControl(150, 35, true);
+            btnLog.Y = Application.GetRealHeight(15);
+            btnLog.X = HdlControlResourse.XXLeft;
+            btnLog.TextSize = CSS_FontSize.EmphasisFontSize_FirstLevel;
+            btnLog.TextColor = CSS_Color.FirstLevelTitleColor;
+            btnLog.TextID = StringId.Log;
+            FrameWhiteCentet2.AddChidren(btnLog);
+
+            //鍒楄〃瀹瑰櫒
+            var listView = new VerticalFrameControl();
+            listView.Y = Application.GetRealHeight(72);
+            listView.Height = base.FrameWhiteCentet2.Height - Application.GetRealHeight(72);
+            base.FrameWhiteCentet2.AddChidren(listView);
+
+            //鍒濆Y杞翠负0
+            int yy = 0;
+            foreach (var strYear in dicData.Keys)
+            {
+                //骞�
+                var btnYear = new NormalViewControl(100, 24, true);
+                btnYear.X = HdlControlResourse.XXLeft;
+                btnYear.Y = yy;
+                btnYear.TextColor = CSS_Color.FirstLevelTitleColor;
+                btnYear.TextSize = CSS_FontSize.SubheadingFontSize;
+                btnYear.Text = strYear.ToString();
+                //涓枃
+                if (Language.CurrentLanguage == "Chinese")
+                {
+                    btnYear.Text += Language.StringByID(StringId.Years);
+                }
+                listView.frameTable.AddChidren(btnYear);
+
+                //骞翠笌娑堟伅璁板綍鐨勯棿璺濅负14
+                yy = btnYear.Bottom + Application.GetRealHeight(14);
+                foreach (var logInfo in dicData[strYear])
+                {
+                    //娑堟伅
+                    var btnMsg = new NormalViewControl(295, 20, true);
+                    btnMsg.Y = yy;
+                    btnMsg.Gravity = Gravity.CenterHorizontal;
+                    btnMsg.TextColor = CSS_Color.FirstLevelTitleColor;
+                    btnMsg.Text = logInfo.StrMsg;
+                    listView.frameTable.AddChidren(btnMsg);
+                    //鏃堕棿
+                    var btnTime = new NormalViewControl(200, 18, true);
+                    btnTime.Y = btnMsg.Bottom + Application.GetRealHeight(2);
+                    btnTime.X = btnMsg.X;
+                    btnTime.TextSize = CSS_FontSize.PromptFontSize_FirstLevel;
+                    btnTime.TextColor = CSS_Color.PromptingColor1;
+                    btnTime.Text = HdlCommonLogic.Current.ConvertDayText(logInfo.Time.Month, logInfo.Time.Day) + " " + logInfo.Time.ToString("HH:mm");
+                    listView.frameTable.AddChidren(btnTime);
+                    //绾�
+                    var btnLine = new NormalViewControl(btnMsg.Width, HdlControlResourse.BottomLineHeight, false);
+                    btnLine.Y = btnTime.Bottom + Application.GetRealHeight(11);
+                    btnLine.Gravity = Gravity.CenterHorizontal;
+                    btnLine.BackgroundColor = CSS_Color.DividingLineColor;
+                    listView.frameTable.AddChidren(btnLine);
+                    //涓ゆ潯娑堟伅鐨勯棿璺濅负10
+                    yy = btnLine.Bottom + Application.GetRealHeight(10);
+                }
+                //骞翠笌骞翠箣闂寸殑闂磋窛涓�24
+                yy += Application.GetRealHeight(24);
+            }
+            //璋冩暣妗屽竷楂樺害
+            listView.AdjustTableHeight();
+        }
+
+        #endregion
+
+        #region 鈻� 鍒濆鍖栧簳閮ㄨ彍鍗曞浘鏍嘷________________
+
+        /// <summary>
+        /// 鍒濆鍖栧簳閮ㄨ彍鍗曞浘鏍�
+        /// </summary>
+        private void InitBottomMenuIconControl()
+        {
+            //濡傛灉鏄垚鍛�,鍒欏彧鏈夊紑閿佹柟寮忕鐞�
+            if (DB_ResidenceData.Instance.CurrentRegion.isOtherShare == true)
+            {
+                //寮�閿佹柟寮忕鐞嗗浘鏍�
+                var btnManagerIcon = new IconViewControl(40);
+                btnManagerIcon.Gravity = Gravity.CenterHorizontal;
+                btnManagerIcon.Y = Application.GetRealHeight(466);
+                btnManagerIcon.UnSelectedImagePath = "FunctionIcon/DoorLock/UnLockManager.png";
+                this.FrameWhiteCentet1.AddChidren(btnManagerIcon);
+                btnManagerIcon.ButtonClickEvent += (sender, e) =>
+                {
+                    //鍒濆鍖栨垚鍛樺垪琛ㄤ俊鎭�
+                    if (this.InitMemberListInfo() == false)
+                    {
+                        return;
+                    }
+                    var form = new DoorLockUnlockMethordManagerPage();
+                    form.AddForm(this.device, this.listMember);
+                };
+            }
+            else
+            {
+                //寮�閿佹柟寮忕鐞嗗浘鏍�
+                var btnManagerIcon = new IconViewControl(40);
+                btnManagerIcon.Y = Application.GetRealHeight(466);
+                btnManagerIcon.UnSelectedImagePath = "FunctionIcon/DoorLock/UnLockManager.png";
+                this.FrameWhiteCentet1.AddChidren(btnManagerIcon);
+                btnManagerIcon.X = (this.FrameWhiteCentet1.Width - btnManagerIcon.Width * 2 - Application.GetRealWidth(40)) / 2;
+                btnManagerIcon.ButtonClickEvent += (sender, e) =>
+                {
+                    //鍒濆鍖栨垚鍛樺垪琛ㄤ俊鎭�
+                    if (this.InitMemberListInfo() == false)
+                    {
+                        return;
+                    }
+                    var form = new DoorLockUnlockMethordManagerPage();
+                    form.AddForm(this.device, this.listMember);
+                };
+
+                //甯稿紑妯″紡鍥炬爣
+                this.btnNormallyOpenIcon = new IconViewControl(40);
+                btnNormallyOpenIcon.X = btnManagerIcon.Right + Application.GetRealWidth(40);
+                btnNormallyOpenIcon.Y = btnManagerIcon.Y;
+                btnNormallyOpenIcon.UnSelectedImagePath = "FunctionIcon/DoorLock/NormallyOpenIcon2.png";
+                this.FrameWhiteCentet1.AddChidren(btnNormallyOpenIcon);
+                btnNormallyOpenIcon.ButtonClickEvent += (sender, e) =>
+                {
+                    var form = new DoorLockAlwaysOnListPage();
+                    form.AddForm(this.device);
+                };
+            }
+        }
+
+        #endregion
+
+        #region 鈻� 鍒濆鍖栦复鏃跺瘑鐮佹帶浠禵________________
+
+        /// <summary>
+        /// 鍒濆鍖栦复鏃跺瘑鐮佹帶浠�
+        /// </summary>
+        private void InitTempPasswordControl()
+        {
+            this.frameTempPsw.RemoveAll();
+
+            //鐢熸垚涓存椂瀵嗙爜鐨勮儗鏅浘鐗�
+            var picBack = new PicViewControl(258, 165);
+            picBack.Gravity = Gravity.CenterHorizontal;
+            picBack.UnSelectedImagePath = "FunctionIcon/DoorLock/CrearPswBackgroud.png";
+            this.frameTempPsw.AddChidren(picBack);
+
+            //瀵嗙爜鏄剧ず鎺т欢
+            var btnPassword = new NormalViewControl(150, 50, true);
+            btnPassword.Gravity = Gravity.CenterHorizontal;
+            btnPassword.TextSize = CSS_FontSize.SubheadingFontSize;
+            btnPassword.TextColor = CSS_Color.MainBackgroundColor;
+            btnPassword.TextAlignment = TextAlignment.Center;
+            this.frameTempPsw.AddChidren(btnPassword);
+
+            //濡傛灉娌℃湁涓存椂瀵嗙爜
+            if (this.doorLockData.TempPassword == string.Empty)
+            {
+                //褰撴病鏈変复鏃跺瘑鐮佹椂,杩欎釜鑳屾櫙鏀惧湪涓棿
+                picBack.Y = Application.GetRealHeight(47);
+                //鍥犱负鍥剧墖鐨勫帇缂╅棶棰�,杩欎釜Y杞村拰钃濇箹鐨勪笉涓�鏍�,钃濇箹鏄�99
+                btnPassword.Y = Application.GetRealHeight(88);
+
+                //鐢熸垚涓存椂瀵嗙爜
+                btnPassword.TextID = StringId.CreatTemporaryPassword;
+                btnPassword.ButtonClickEvent += (sender, e) =>
+                {
+                    //鏄剧ず鐢熸垚涓存椂瀵嗙爜鐨勫脊绐楃晫闈�
+                    this.ShowCreatTemporaryPasswordDialog(DateTime.Now, DateTime.Now.AddDays(1).AddMinutes(-1));
+                };
+            }
+            //鎷ユ湁涓存椂瀵嗙爜
+            else
+            {
+                //鏄剧ず涓存椂瀵嗙爜
+                btnPassword.Text = this.doorLockData.TempPassword;
+                //鍥犱负鍥剧墖鐨勫帇缂╅棶棰�,杩欎釜Y杞村拰钃濇箹鐨勪笉涓�鏍�,钃濇箹鏄�51
+                btnPassword.Y = Application.GetRealHeight(40);
+
+                //鍒犻櫎涓存椂瀵嗙爜鍥炬爣
+                var btnDelete = new IconViewControl(28);
+                btnDelete.UnSelectedImagePath = "FunctionIcon/DoorLock/Delete.png";
+                btnDelete.X = Application.GetRealWidth(19);
+                btnDelete.Y = Application.GetRealHeight(115);
+                this.frameTempPsw.AddChidren(btnDelete);
+                btnDelete.ButtonClickEvent += (sender, e) =>
+                {
+                    //娓呴櫎褰撳墠涓存椂瀵嗙爜锛�
+                    HdlMessageLogic.Current.ShowMassage(ShowMsgType.Confirm, Language.StringByID(StringId.ClearTempPsswordMsg), () =>
+                    {
+                        //娓呯┖涓存椂瀵嗙爜
+                        this.doorLockData.TempPassword = string.Empty;
+                        this.doorLockData.StatrtTime = string.Empty;
+                        this.doorLockData.EndTime = string.Empty;
+                        //閲嶆柊鍒濆鍖栦复鏃跺瘑鐮佹帶浠�
+                        this.InitTempPasswordControl();
+                    });
+                };
+
+                //澶嶅埗涓存椂瀵嗙爜鍥炬爣
+                var btnCopy = new IconViewControl(28);
+                btnCopy.UnSelectedImagePath = "FunctionIcon/DoorLock/Shard.png";
+                btnCopy.X = this.frameTempPsw.Width - btnCopy.IconSize - btnDelete.X;
+                btnCopy.Y = btnDelete.Y;
+                this.frameTempPsw.AddChidren(btnCopy);
+                btnCopy.ButtonClickEvent += (sender, e) =>
+                {
+                    //涓存椂瀵嗙爜宸茬粡澶嶅埗
+                    HdlCommonLogic.Current.SetTextToShearPlate(this.doorLockData.TempPassword, Language.StringByID(StringId.TempPsswordHasBeenCopy));
+                };
+
+                //鐢熸晥鏃堕棿
+                var frameEffective = this.CreatEffectiveTimeControl(this.frameTempPsw, Language.StringByID(StringId.EffectiveTime), this.doorLockData.StatrtTime);
+                frameEffective.X = Application.GetRealWidth(24);
+                frameEffective.Y = Application.GetRealHeight(180);
+
+                //澶辨晥鏃堕棿
+                var frameFailure = this.CreatEffectiveTimeControl(this.frameTempPsw, Language.StringByID(StringId.FailureTime), this.doorLockData.EndTime);
+                frameFailure.X = this.frameTempPsw.Width - frameFailure.Width - frameEffective.X;
+                frameFailure.Y = frameEffective.Y;
+
+                //-
+                var btnLine = new NormalViewControl(frameFailure.X - frameEffective.Right, frameFailure.Height, false);
+                btnLine.X = frameEffective.Right;
+                btnLine.Y = frameEffective.Y;
+                btnLine.Text = "-";
+                btnLine.TextAlignment = TextAlignment.Center;
+                btnLine.TextColor = CSS_Color.FirstLevelTitleColor;
+                btnLine.TextSize = CSS_FontSize.PromptFontSize_FirstLevel;
+                this.frameTempPsw.AddChidren(btnLine);
+            }
+        }
+
+        /// <summary>
+        /// 鐢熸垚鐢熸晥/澶辨晥鏃堕棿鎺т欢
+        /// </summary>
+        /// <param name="frameTempPsw">鐖舵帶浠�</param>
+        /// <param name="i_text">鏄剧ず鐨勬枃鏈�</param>
+        /// <param name="i_time">鏄剧ず鐨勬椂闂�</param>
+        /// <returns></returns>
+        private FrameLayout CreatEffectiveTimeControl(FrameLayout frameTempPsw, string i_text, string i_time)
+        {
+            //绾挎鑳屾櫙鎺т欢
+            var frameBack = new FrameLayout();
+            frameBack.Width = Application.GetRealWidth(120);
+            frameBack.Height = Application.GetRealHeight(50);
+            frameBack.Radius = (uint)Application.GetRealWidth(7);
+            frameBack.BorderWidth = 1;
+            frameBack.BorderColor = CSS_Color.PromptingColor1;
+            frameTempPsw.AddChidren(frameBack);
+
+            //鏄剧ず鏂囨湰
+            var btnText = new NormalViewControl(frameBack.Width, Application.GetRealHeight(18), false);
+            btnText.Y = Application.GetRealHeight(8);
+            btnText.TextColor = CSS_Color.FirstLevelTitleColor;
+            btnText.TextSize = CSS_FontSize.PromptFontSize_FirstLevel;
+            btnText.Text = i_text;
+            btnText.TextAlignment = TextAlignment.Center;
+            frameBack.AddChidren(btnText);
+
+            //鏄剧ず鏃堕棿
+            var btnTime = new NormalViewControl(frameBack.Width, Application.GetRealHeight(18), false);
+            btnTime.Y = btnText.Bottom;
+            btnTime.TextColor = CSS_Color.FirstLevelTitleColor;
+            btnTime.TextSize = CSS_FontSize.PromptFontSize_FirstLevel;
+            btnTime.Text = i_time;
+            btnTime.TextAlignment = TextAlignment.Center;
+            frameBack.AddChidren(btnTime);
+
+            return frameBack;
+        }
+
+        #endregion
+
+        #region 鈻� 鐢熸垚涓存椂瀵嗙爜_______________________
+
+        /// <summary>
+        /// 鏄剧ず鐢熸垚涓存椂瀵嗙爜鐨勫脊绐楃晫闈�
+        /// </summary>
+        private void ShowCreatTemporaryPasswordDialog(DateTime startTime, DateTime endTime)
+        {
+            //榛樿鏃堕棿Form-To涓轰竴澶�
+            var contr = new BottomItemEditorControl(2, string.Empty);
+            //鐐瑰嚮纭鏃�,涓嶅叧闂晫闈�
+            contr.CloseByConfirm = false;
+
+            //鐢熸晥鏃堕棿
+            var effectiveTime = Language.StringByID(StringId.EffectiveTime);
+            contr.AddRowMenu(effectiveTime, startTime.ToString("yyyy.MM.dd HH:mm"), (btnView, btnValue) =>
+            {
+                //鍏虫帀鐣岄潰,鐒跺悗閲嶆柊璋冭捣鏉�
+                contr.Close();
+
+                var form = new DoorLockSelectTimePage();
+                form.AddForm(startTime);
+                form.SelectFinshEvent += (selectTime) =>
+                {
+                    //閲嶆柊璋冭捣鐣岄潰
+                    this.ShowCreatTemporaryPasswordDialog(selectTime, endTime);
+                };
+            });
+
+            //澶辨晥鏃堕棿
+            var failTime = Language.StringByID(StringId.FailureTime);
+            contr.AddRowMenu(failTime, endTime.ToString("yyyy.MM.dd HH:mm"), (btnView, btnValue) =>
+            {
+                //鍏虫帀鐣岄潰,鐒跺悗閲嶆柊璋冭捣鏉�
+                contr.Close();
+
+                var form = new DoorLockSelectTimePage();
+                form.AddForm(endTime);
+                form.SelectFinshEvent += (selectTime) =>
+                {
+                    //閲嶆柊璋冭捣鐣岄潰
+                    this.ShowCreatTemporaryPasswordDialog(startTime, selectTime);
+                };
+            });
+            contr.FinishEvent += (div) =>
+            {
+                //鐐瑰嚮浜嗙敓鎴�
+                if (div == 1)
+                {
+                    if (this.CheckEffectiveTime(startTime, endTime) == false)
+                    {
+                        return;
+                    }
+                    //鍏虫帀鐣岄潰
+                    contr.Close();
+
+                    //鐢熸垚涓存椂瀵嗙爜
+                    this.doorLockData.TempPassword = "987654";
+                    this.doorLockData.StatrtTime = startTime.ToString("yyyy.MM.dd HH:mm");
+                    this.doorLockData.EndTime = endTime.ToString("yyyy.MM.dd HH:mm");
+                    //閲嶆柊鍒濆鍖栦复鏃跺瘑鐮佹帶浠�
+                    this.InitTempPasswordControl();
+                }
+            };
+
+            //闇�瑕佸垵濮嬪寲涔嬪悗,鎸夐挳鎵嶄笉浼氫负null  鍙樻洿銆愮敓鎴愩�戞寜閽殑瀹藉害鍜孹杞�
+            contr.btnConfirm.TextID = StringId.Generate;
+            contr.btnConfirm.Width = contr.btnConfirm.GetRealWidthByText();
+            contr.btnConfirm.X = contr.btnConfirm.Parent.Width - contr.btnConfirm.Width - contr.btnCancel.X;
+        }
+
+        /// <summary>
+        /// 妫�娴嬬敓鏁堟椂闂存槸鍚︽纭�
+        /// </summary>
+        /// <param name="startTime">鐢熸晥鏃堕棿</param>
+        /// <param name="endTime">澶辨晥鏃堕棿</param>
+        /// <returns></returns>
+        private bool CheckEffectiveTime(DateTime startTime, DateTime endTime)
+        {
+            if (startTime >= endTime)
+            {
+                //鐢熸晥鏃堕棿蹇呴』澶т簬澶辨晥鏃堕棿
+                HdlMessageLogic.Current.ShowMassage(ShowMsgType.Tip, Language.StringByID(StringId.EffectiveTimeMustBeOverFailureTime));
+                return false;
+            }
+            return true;
+        }
+
+        #endregion
+
+        #region 鈻� 璁惧鐘舵�佸弽棣坃______________________
+
+        /// <summary>
+        /// 璁惧鐘舵�佸弽棣�
+        /// </summary>
+        /// <param name="i_LocalDevice"></param>
+        public override void DeviceStatuPush(Function i_LocalDevice)
+        {
+            //涓嶆槸鍚屼竴涓笢瑗�
+            if (this.device.sid != i_LocalDevice.sid) { return; }
+
+            //鍒锋柊褰撳墠璁惧鐨勭姸鎬佺紦瀛�
+            this.RefreshNowDeviceStatuMemory(i_LocalDevice);
+            //鍒锋柊鐣岄潰鐘舵��
+            this.RefreshFormStatu();
+        }
+
+        #endregion
+
+        #region 鈻� 鍒锋柊鐣岄潰鐘舵�乢______________________
+
+        /// <summary>
+        /// 鍒锋柊鐣岄潰鐘舵��
+        /// </summary>
+        private void RefreshFormStatu()
+        {
+            //濡傛灉涓嶅湪绾�
+            if (this.doorLockData.IsOnline == false)
+            {
+                //寮�閿佸浘鐗�
+                this.picLockControl.UnSelectedImagePath = "FunctionIcon/DoorLock/LockPictrue2.png";
+                //杩炴帴鐘舵��
+                this.btnOnlineIcon.UnSelectedImagePath = "FunctionIcon/DoorLock/UnConnect.png";
+                this.btnOnlineView.Text = this.dicText["鏈繛鎺�"];
+                this.btnOnlineView.TextColor = CSS_Color.AuxiliaryColor2;
+                //甯稿紑妯″紡鍥炬爣
+                if (this.btnNormallyOpenIcon != null)
+                {
+                    this.btnNormallyOpenIcon.UnSelectedImagePath = "FunctionIcon/DoorLock/NormallyOpenIcon2.png";
+                }
+            }
+            else
+            {
+                //寮�閿佸浘鐗�
+                this.picLockControl.UnSelectedImagePath = this.doorLockData.Open == true ? "FunctionIcon/DoorLock/UnLockPictrue3.png" : "FunctionIcon/DoorLock/LockPictrue1.png";
+                //杩炴帴鐘舵��
+                this.btnOnlineIcon.UnSelectedImagePath = "FunctionIcon/DoorLock/Connect.png";
+                this.btnOnlineView.Text = this.dicText["宸茶繛鎺�"];
+                this.btnOnlineView.TextColor = CSS_Color.PromptingColor1;
+                //甯稿紑妯″紡鍥炬爣
+                if (this.btnNormallyOpenIcon != null)
+                {
+                    this.btnNormallyOpenIcon.UnSelectedImagePath = "FunctionIcon/DoorLock/NormallyOpenIcon1.png";
+                }
+            }
+        }
+
+        /// <summary>
+        /// 璁剧疆涓棿瀹瑰櫒鎺т欢鍙鍖�
+        /// </summary>
+        private void SetMiddleFrameControlVisible()
+        {
+            //濡傛灉閫夋嫨鐨勬槸 涓�閿紑閿�
+            if (this.nowSelectMenu == 1)
+            {
+                this.picLockControl.Visible = true;
+                this.frameTempPsw.Visible = false;
+            }
+            else
+            {
+                this.picLockControl.Visible = false;
+                this.frameTempPsw.Visible = true;
+                //涓存椂瀵嗙爜宸茬粡鍙樻洿,闇�瑕佸埛鏂扮晫闈�
+                if (this.doorLockData.IsTempPasswordChanged == true)
+                {
+                    //鍒濆鍖栦复鏃跺瘑鐮佹帶浠�
+                    this.InitTempPasswordControl();
+                    this.doorLockData.IsTempPasswordChanged = false;
+                }
+            }
+        }
+
+        #endregion
+
+        #region 鈻� 鍙戦�佸悇绉嶅懡浠______________________
+
+        /// <summary>
+        /// 鍙戦�佸紑鍏冲懡浠�
+        /// </summary>
+        private void SendSwitchComand()
+        {
+            //this.btnSwitch.CanClick = false;
+
+            //string statu = this.btnSwitch.IsSelected == true ? "off" : "on";
+            //HdlThreadLogic.Current.RunThread(() =>
+            //{
+            //    var dic = new Dictionary<string, string>();
+            //    dic.Add(FunctionAttributeKey.OnOff, statu);
+            //    Control.Ins.SendWriteCommand(this.device, dic, true);
+            //    HdlThreadLogic.Current.RunMain(() =>
+            //    {
+            //        this.btnSwitch.CanClick = true;
+            //    });
+            //});
+        }
+
+        #endregion
+
+        #region 鈻� 鍒濆鍖栨垚鍛樺垪琛ㄤ俊鎭痏________________
+
+        /// <summary>
+        /// 鍒濆鍖栨垚鍛樺垪琛ㄤ俊鎭�
+        /// </summary>
+        /// <returns></returns>
+        private bool InitMemberListInfo()
+        {
+            //宸茬粡鍒濆鍖�
+            if (this.listMember != null) { return true; }
+
+            //涓昏处鍙烽渶瑕佸幓鑾峰彇鎴愬憳鍒楄〃,鑰屽瓙璐﹀彿鍙兘浠栬嚜宸�
+            if (DB_ResidenceData.Instance.CurrentRegion.isOtherShare == false)
+            {
+                //鑾峰彇鎴愬憳鍒楄〃
+                var responePack = new DAL.Server.HttpServerRequest().GetResidenceMemberAccount();
+                if (responePack.Code == DAL.Server.StateCode.SUCCESS)
+                {
+                    this.listMember = Newtonsoft.Json.JsonConvert.DeserializeObject<List<ResidenceMemberInfo>>(responePack.Data.ToString());
+                }
+                //澶辫触
+                else
+                {
+                    //鎻愮ず
+                    DAL.Server.IMessageCommon.Current.ShowErrorInfoAlter(responePack.Code);
+                    return false;
+                }
+            }
+            else
+            {
+                //鍏堝垵濮嬪寲
+                this.listMember = new List<ResidenceMemberInfo>();
+            }
+
+            //鑷韩鍔犺繘鍘�,鑷繁浣嶄簬棣栦綅
+            var info = new ResidenceMemberInfo();
+            info.childAccountId = OnAppConfig.Instance.LastLoginUserId;
+            info.childAccountType = DB_ResidenceData.Instance.CurrentRegion.isOtherShare == false ? "ADMIN" : "ORDINARY";
+            info.nickName = UserInfo.Current.userName;
+            this.listMember.Insert(0, info);
+            if (string.IsNullOrEmpty(info.nickName))
+            {
+                info.nickName = UserInfo.Current.AccountString;
+            }
+
+            foreach (var info2 in this.listMember)
+            {
+                //璁剧疆鐢ㄦ埛鏄电О
+                if (string.IsNullOrEmpty(info2.nickName))
+                {
+                    info2.nickName = info2.memberName;
+                }
+            }
+
+            return true;
+        }
+        #endregion
+
+        #region 鈻� 涓�閿紑閿乢__________________________
+
+        /// <summary>
+        /// 涓�閿紑閿�
+        /// </summary>
+        private void DoOneKeyToUnlockDoor()
+        {
+            if (this.doorLockData.IsOnline == false)
+            {
+                //璁惧涓嶅湪绾�
+                HdlMessageLogic.Current.ShowMassage(ShowMsgType.TipRemind, Language.StringByID(StringId.DeviceNotOnline), null, null, null, 2);
+                return;
+            }
+            //绗竴娆′娇鐢紝璇峰厛缁戝畾闂ㄩ攣瀵嗙爜
+            //HdlMessageLogic.Current.ShowMassage(ShowMsgType.Confirm, Language.StringByID(StringId.PleaseBindTheDoorPswFirst), () =>
+            //{
+            //    var form = new TextInputDialog(Language.StringByID(StringId.PleaseInputDoorAdminPassword), string.Empty, Language.StringByID(StringId.PleaseInputDoorAdminPassword), null, null, true);
+            //    form.Show((password) =>
+            //    {
+            //        //闂ㄩ攣缁戝畾鎴愬姛
+            //        HdlMessageLogic.Current.ShowMassage(ShowMsgType.ConfirmSuccess, Language.StringByID(StringId.BindDoorLockSuccess), () =>
+            //        {
+            //        });
+            //    });
+            //});
+
+            if (UserInfo.Current.appUnlockPage.Contains("3") == true)
+            {
+                //璋冭捣瀹夊叏璁よ瘉
+                HdlCheckLogic.Current.CheckUnlockSecurity(true, (div) =>
+                {
+                    //閿佸凡鎵撳紑
+                    if (div == 1)
+                    {
+                        HdlMessageLogic.Current.ShowMassage(ShowMsgType.TipSuccess, Language.StringByID(StringId.LockIsOpened), null, null, null, 2);
+                    }
+                    else
+                    {
+                        //涓轰簡瀹夊叏锛岃璺宠浆鑷充釜浜轰腑蹇儃0}璁剧疆涓汉瀵嗙爜锛屽苟搴旂敤浜庨棬閿佸紑閿�
+                        HdlMessageLogic.Current.ShowMassage(ShowMsgType.Confirm, Language.StringByID(StringId.JumpToPersonalCentetToSetPasswordMsg), () =>
+                        {
+                            var page = new AppUnlockSettingsPage();
+                            MainPage.BasePageView.AddChidren(page);
+                            page.LoadPage();
+                            MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+
+                        }, Language.StringByID(StringId.Jump));
+                    }
+                });
+            }
+            else
+            {
+                //涓轰簡瀹夊叏锛岃璺宠浆鑷充釜浜轰腑蹇儃0}璁剧疆涓汉瀵嗙爜锛屽苟搴旂敤浜庨棬閿佸紑閿�
+                HdlMessageLogic.Current.ShowMassage(ShowMsgType.Confirm, Language.StringByID(StringId.JumpToPersonalCentetToSetPasswordMsg), () =>
+                {
+                    var page = new AppUnlockSettingsPage();
+                    MainPage.BasePageView.AddChidren(page);
+                    page.LoadPage();
+                    MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+
+                }, Language.StringByID(StringId.Jump));
+            }
+        }
+
+        #endregion
+
+        #region 鈻� 涓�鑸柟娉昣__________________________
+
+        /// <summary>
+        /// 鍒锋柊褰撳墠璁惧鐨勭姸鎬佺紦瀛�
+        /// </summary>
+        private void RefreshNowDeviceStatuMemory(Function i_LocalDevice)
+        {
+            this.doorLockData.IsOnline = i_LocalDevice.online;
+            for (int i = 0; i < i_LocalDevice.attributes.Count; i++)
+            {
+                var data = i_LocalDevice.attributes[i];
+                //闂ㄩ攣鐘舵��
+                if (data.key == "status")
+                {
+                    if (data.state == "open") { this.doorLockData.Open = true; }
+                    else if (data.state == "normal_open")
+                    {
+                        //甯稿紑妯″紡
+                        this.doorLockData.Open = true;
+                        this.doorLockData.NormalOpen = true;
+                    }
+                    else
+                    {
+                        this.doorLockData.Open = false;
+                        this.doorLockData.NormalOpen = false;
+                    }
+                }
+                //闊抽噺
+                else if (data.key == "volume")
+                {
+                    var value = data.state;
+                    if (value != string.Empty)
+                    {
+                        this.doorLockData.Voice = Convert.ToInt32(value);
+                    }
+                }
+                //鐢垫睜鐧惧垎姣�
+                else if (data.key == "battery_percentage")
+                {
+                    var value = data.state;
+                    if (value != string.Empty)
+                    {
+                        this.doorLockData.BatteryPersent = Convert.ToInt32(value);
+                    }
+                }
+            }
+        }
+
+        #endregion
+
+        #region 鈻� 缁撴瀯浣揰____________________________
+
+        /// <summary>
+        /// 闂ㄩ攣鐨勬暟鎹�
+        /// </summary>
+        private class DoorLockData
+        {
+            /// <summary>
+            /// 鏄惁鎵撳紑
+            /// </summary>
+            public bool Open = true;
+            /// <summary>
+            /// 鐢垫睜鐢甸噺
+            /// </summary>
+            public int BatteryPersent = 0;
+            /// <summary>
+            /// 鏄惁鍦ㄧ嚎
+            /// </summary>
+            public bool IsOnline = false;
+            /// <summary>
+            /// 鏄惁闈欓煶
+            /// </summary>
+            public bool Mute = false;
+            /// <summary>
+            /// 闊抽噺
+            /// </summary>
+            public int Voice = 0;
+            /// <summary>
+            /// 鏄惁澶勪簬甯稿紑妯″紡
+            /// </summary>
+            public bool NormalOpen = false;
+            /// <summary>
+            /// 涓存椂瀵嗙爜
+            /// </summary>
+            public string TempPassword = string.Empty;
+            /// <summary>
+            /// 涓存椂瀵嗙爜鏄惁琚彉鏇�
+            /// </summary>
+            public bool IsTempPasswordChanged = true;
+            /// <summary>
+            /// 涓存椂瀵嗙爜鐢熸晥鏃堕棿(2020.03.17 13:27)
+            /// </summary>
+            public string StatrtTime = string.Empty;
+            /// <summary>
+            /// 涓存椂瀵嗙爜澶辨晥鏃堕棿(2020.03.17 13:27)
+            /// </summary>
+            public string EndTime = string.Empty;
+        }
+
+        #endregion
+    }
+}
diff --git a/HDL_ON/UI/UI2/FuntionControlView/DoorLock/DoorLockSelectTimePage.cs b/HDL_ON/UI/UI2/FuntionControlView/DoorLock/DoorLockSelectTimePage.cs
new file mode 100644
index 0000000..349efc6
--- /dev/null
+++ b/HDL_ON/UI/UI2/FuntionControlView/DoorLock/DoorLockSelectTimePage.cs
@@ -0,0 +1,120 @@
+锘縰sing Shared;
+using HDL_ON.UI.CSS;
+using HDL_ON.Stan;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace HDL_ON.UI
+{
+    /// <summary>
+    /// 闂ㄩ攣鐨勯�夋嫨鏃ユ湡鏃堕棿鐣岄潰
+    /// </summary>
+    public class DoorLockSelectTimePage : EditorCommonForm
+    {
+        #region 鈻� 鍙橀噺澹版槑___________________________
+
+        /// <summary>
+        /// 閫夋嫨缁撴潫鐨勪簨浠�
+        /// </summary>
+        public Action<DateTime> SelectFinshEvent = null;
+        /// <summary>
+        /// 閫夋嫨鐨勬椂闂�
+        /// </summary>
+        private DateTime selectDateTime;
+
+        #endregion
+
+        #region 鈻� 鍒濆鍖朹____________________________
+
+        /// <summary>
+        /// 鐢婚潰鏄剧ず(搴曞眰浼氬浐瀹氳皟鐢ㄦ鏂规硶锛屽�熶互瀹屾垚鐢婚潰鍒涘缓)
+        /// </summary>
+        /// <param name="i_dateTime">涓�涓椂闂�</param>
+        public void ShowForm(DateTime i_dateTime)
+        {
+            this.selectDateTime = i_dateTime;
+
+            //閫夋嫨鏃堕棿
+            base.SetTitleText(Language.StringByID(StringId.SelectTime));
+
+            //鍒濆鍖栦腑閮ㄤ俊鎭�
+            this.InitMiddleFrame();
+        }
+
+        /// <summary>
+        /// 鍒濆鍖栦腑閮ㄤ俊鎭�
+        /// </summary>
+        private void InitMiddleFrame()
+        {
+            //娓呯┖bodyFrame
+            this.ClearBodyFrame();
+
+            //閫夋嫨鏃ユ湡
+            var rowDate = new RowLayoutControl();
+            rowDate.BackgroundColor = CSS_Color.MainBackgroundColor;
+            bodyFrameLayout.AddChidren(rowDate);
+            rowDate.frameTable.AddLeftCaption(Language.StringByID(StringId.SelectDate), 300);
+            rowDate.frameTable.AddRightArrow();
+            rowDate.frameTable.AddBottomLine();
+            var btnDay = rowDate.frameTable.AddMostRightView(this.selectDateTime.ToString("yyyy.MM.dd"), 300);
+            rowDate.frameTable.ButtonClickEvent += (sender, e) =>
+            {
+                //鏄剧ず鏃ユ湡閫夋嫨鐨勫簳閮ㄥ脊绐�
+                var contr = new BottomDateSelectControl();
+                contr.InitControl(this.selectDateTime.Year, this.selectDateTime.Month, this.selectDateTime.Day, 1, 1);
+                contr.FinishEvent += (div, year, month, day) =>
+                {
+                    //瑕嗙洊鏃堕棿
+                    if (div == 1)
+                    {
+                        this.selectDateTime = new DateTime(year, month, day, this.selectDateTime.Hour, this.selectDateTime.Minute, 0);
+                        btnDay.Text = this.selectDateTime.ToString("yyyy.MM.dd");
+                    }
+                };
+            };
+
+            //閫夋嫨鏃堕棿
+            var rowTime = new RowLayoutControl();
+            rowTime.Y = rowDate.Bottom;
+            rowTime.BackgroundColor = CSS_Color.MainBackgroundColor;
+            bodyFrameLayout.AddChidren(rowTime);
+            rowTime.frameTable.AddLeftCaption(Language.StringByID(StringId.SelectTime), 300);
+            rowTime.frameTable.AddRightArrow();
+            var btnTime = rowTime.frameTable.AddMostRightView(this.selectDateTime.ToString("HH:mm"), 300);
+            rowTime.frameTable.ButtonClickEvent += (sender, e) =>
+            {
+                //鏄剧ず鏃ユ湡閫夋嫨鐨勫簳閮ㄥ脊绐�
+                var contr = new BottomTimeSelectControl();
+                contr.RowCount = 5;
+                contr.InitControl(this.selectDateTime.Hour, this.selectDateTime.Minute, -1);
+                contr.FinishEvent += (div, hour, minute) =>
+                {
+                    //瑕嗙洊鏃堕棿
+                    if (div == 1)
+                    {
+                        this.selectDateTime = new DateTime(this.selectDateTime.Year, this.selectDateTime.Month, this.selectDateTime.Day, hour, minute, 0);
+                        btnTime.Text = this.selectDateTime.ToString("HH:mm");
+                    }
+                };
+            };
+        }
+
+        #endregion
+
+        #region 鈻� 鐣岄潰鍏抽棴___________________________
+
+        /// <summary>
+        /// 鐣岄潰鍏抽棴
+        /// </summary>
+        public override void CloseFormBefore()
+        {
+            base.CloseFormBefore();
+            //璋冪敤鍥炶皟浜嬩欢
+            this.SelectFinshEvent?.Invoke(this.selectDateTime);
+            this.SelectFinshEvent = null;
+        }
+
+        #endregion
+    }
+}
diff --git a/HDL_ON/UI/UI2/FuntionControlView/DoorLock/DoorLockUnlockMethordManagerPage.cs b/HDL_ON/UI/UI2/FuntionControlView/DoorLock/DoorLockUnlockMethordManagerPage.cs
new file mode 100644
index 0000000..e3b0a5c
--- /dev/null
+++ b/HDL_ON/UI/UI2/FuntionControlView/DoorLock/DoorLockUnlockMethordManagerPage.cs
@@ -0,0 +1,713 @@
+锘縰sing Shared;
+using HDL_ON.UI.CSS;
+using HDL_ON.Stan;
+using System;
+using System.Collections.Generic;
+using System.Text;
+using HDL_ON.Entity;
+using HDL_ON.DAL.Server;
+
+namespace HDL_ON.UI
+{
+    /// <summary>
+    /// 闂ㄩ攣鐨勯�夋嫨鏃ユ湡鏃堕棿鐣岄潰
+    /// </summary>
+    public class DoorLockUnlockMethordManagerPage : EditorCommonForm
+    {
+        #region 鈻� 鍙橀噺澹版槑___________________________
+
+        /// <summary>
+        /// 鍒楄〃鎺т欢
+        /// </summary>
+        private VerticalFrameControl listView = null;
+        /// <summary>
+        /// 寮�閿佹柟寮忓垪琛�
+        /// </summary>
+        private List<UnlockMethordInfo> listUnlockInfo = new List<UnlockMethordInfo>();
+        /// <summary>
+        /// 鎴愬憳鍒楄〃
+        /// </summary>
+        private List<ResidenceMemberInfo> listMember = null;
+        /// <summary>
+        /// 鐧借壊鑳屾櫙鐨勫鍣ㄦ帶浠堕泦鍚�(鍧愭爣鍙樻洿鏃朵娇鐢�)
+        /// </summary>
+        private List<NormalFrameLayout> listWhiteFrame = new List<NormalFrameLayout>();
+        /// <summary>
+        /// 閫夋嫨鐨勫満鏅�(key:闂ㄩ攣鐨勬暟鎹簱涓婚敭    value:鍦烘櫙鍒楄〃鐨勪富閿�)
+        /// </summary>
+        private Dictionary<string, List<string>> dicSelectScene = new Dictionary<string, List<string>>();
+        /// <summary>
+        /// 闂ㄩ攣瀵硅薄
+        /// </summary>
+        private Function doorDevice = null;
+
+        #endregion
+
+        #region 鈻� 鍒濆鍖朹____________________________
+
+        /// <summary>
+        /// 鐢婚潰鏄剧ず(搴曞眰浼氬浐瀹氳皟鐢ㄦ鏂规硶锛屽�熶互瀹屾垚鐢婚潰鍒涘缓)
+        /// </summary>
+        /// <param name="i_doorDevice">闂ㄩ攣瀵硅薄</param>
+        /// <param name="i_listMember">鎴愬憳鍒楄〃</param>
+        public void ShowForm(Function i_doorDevice, List<ResidenceMemberInfo> i_listMember)
+        {
+            this.doorDevice = i_doorDevice;
+            this.listMember = i_listMember;
+            this.dicSelectScene = new Dictionary<string, List<string>>();
+
+            //寮�閿佹柟寮忕鐞�
+            base.SetTitleText(Language.StringByID(StringId.UnlockingManagement));
+
+            //鍒濆鍖栦腑閮ㄤ俊鎭�
+            this.InitMiddleFrame();
+        }
+
+        /// <summary>
+        /// 鍒濆鍖栦腑閮ㄤ俊鎭�
+        /// </summary>
+        private void InitMiddleFrame()
+        {
+            //娓呯┖bodyFrame
+            this.ClearBodyFrame();
+
+            //鍒楄〃鎺т欢
+            this.listView = new VerticalFrameControl();
+            listView.Height = bodyFrameLayout.Height;
+            bodyFrameLayout.AddChidren(listView);
+
+            //鎵撳紑杞湀鐨勯偅涓笢瑗�
+            this.ShowProgressBar();
+            HdlThreadLogic.Current.RunThread(() =>
+            {
+                //鍒濆鍖栧紑閿佹柟寮忎俊鎭垪琛�
+                var result = this.InitUnlockMethordInfoFromClound();
+                //鍏抽棴杞湀鐨勯偅涓笢瑗�
+                this.CloseProgressBar();
+                if (result == false)
+                {
+                    return;
+                }
+                HdlThreadLogic.Current.RunMain(() =>
+                {
+                    //鍒濆鍖栨湭鍒嗛厤鎺т欢
+                    this.InitNotAssignControl();
+                    //鍒濆鍖栧叏閮ㄦ垚鍛樻帶浠�
+                    this.InitAllMemberControl();
+                    //璋冩暣妗屽竷澶у皬
+                    this.listView.AdjustTableHeight();
+                });
+            });
+        }
+
+        #endregion
+
+        #region 鈻� 鍒濆鍖栨湭鍒嗛厤鎺т欢___________________
+
+        /// <summary>
+        /// 鍒濆鍖栨湭鍒嗛厤鎺т欢
+        /// </summary>
+        private void InitNotAssignControl()
+        {
+            //鍏堝垵濮嬪寲
+            this.listWhiteFrame = new List<NormalFrameLayout>();
+
+            //鑾峰彇鏈垎閰嶇殑寮�閿佹柟寮�
+            var listInfo = new List<UnlockMethordInfo>();
+            foreach (var info in this.listUnlockInfo)
+            {
+                if (info.UserId != string.Empty)
+                {
+                    continue;
+                }
+                listInfo.Add(info);
+            }
+            //鐧借壊鑳屾櫙瀹瑰櫒
+            var frameBack = new NormalFrameLayout();
+            frameBack.Y = Application.GetRealHeight(12);
+            frameBack.Width = Application.GetRealWidth(343);
+            frameBack.Gravity = Gravity.CenterHorizontal;
+            frameBack.MainKey = "NotAssign";
+            frameBack.Radius = (uint)Application.GetRealWidth(12);
+            frameBack.Height = Application.GetRealHeight(50);
+            frameBack.BackgroundColor = CSS_Color.MainBackgroundColor;
+            frameBack.Visible = listInfo.Count > 0;
+            this.listView.frameTable.AddChidren(frameBack);
+            this.listWhiteFrame.Add(frameBack);
+
+            //鏈垎閰�
+            var frameRow = new FrameRowControl();
+            frameBack.AddChidren(frameRow);
+            var btnNotAssign = frameRow.AddLeftCaption(Language.StringByID(StringId.Unallocated), 300);
+            btnNotAssign.TextSize = CSS_FontSize.SubheadingFontSize;
+            btnNotAssign.TextColor = CSS_Color.FirstLevelTitleColor;
+            frameRow.AddBottomLine();
+
+            for (int i = 0; i < listInfo.Count; i++)
+            {
+                //娣诲姞瀵嗙爜琛屾帶浠�
+                this.AddUnlockPasswordRowControl(frameBack, listInfo[i], i != listInfo.Count - 1);
+            }
+            //璋冩暣妗屽竷楂樺害
+            listView.AdjustChidrenFrameHeight(frameBack, 0);
+        }
+
+        #endregion
+
+        #region 鈻� 鍒濆鍖栨垚鍛樻帶浠禵____________________
+
+        /// <summary>
+        /// 鍒濆鍖栧叏閮ㄦ垚鍛樻帶浠�
+        /// </summary>
+        private void InitAllMemberControl()
+        {
+            //澶村儚鍒楄〃
+            var listIcon = new List<ImageView>();
+            foreach (var info in this.listMember)
+            {
+                //鏍规嵁鎴愬憳淇℃伅鍒濆鍖栨垚鍛樻帶浠�
+                var btnIcon = this.InitMemberControlByMemberInfo(info);
+                listIcon.Add(btnIcon);
+            }
+            //鍐嶅姞涓�涓┖鐧介棿闅�
+            var frameSpace = new NormalFrameLayout();
+            frameSpace.Height = Application.GetRealHeight(12);
+            frameSpace.Y = this.listView.frameTable.GetChildren(this.listView.frameTable.ChildrenCount - 1).Bottom;
+            this.listView.frameTable.AddChidren(frameSpace);
+            this.listWhiteFrame.Add(frameSpace);
+
+            //涓嬭浇鐢ㄦ埛澶村儚
+            this.DownLoadUserIcon(listIcon);
+        }
+
+        /// <summary>
+        /// 鏍规嵁鎴愬憳淇℃伅鍒濆鍖栨垚鍛樻帶浠�
+        /// </summary>
+        private ImageView InitMemberControlByMemberInfo(ResidenceMemberInfo memberInfo)
+        {
+            //鑾峰彇鍒嗛厤缁欒繖涓垚鍛樼殑寮�閿佹柟寮�
+            var listInfo = new List<UnlockMethordInfo>();
+            foreach (var info in this.listUnlockInfo)
+            {
+                if (info.UserId != memberInfo.childAccountId)
+                {
+                    continue;
+                }
+                listInfo.Add(info);
+            }
+
+            //鐧借壊鑳屾櫙瀹瑰櫒
+            var frameBack = new NormalFrameLayout();
+            frameBack.Width = Application.GetRealWidth(343);
+            if (listInfo.Count > 0)
+            {
+                frameBack.Y = this.listView.frameTable.GetChildren(this.listView.frameTable.ChildrenCount - 1).Bottom + Application.GetRealHeight(12);
+            }
+            else
+            {
+                //濡傛灉娌℃湁寮�閿佹柟寮�,鍒欐殏鏃堕殣钘�
+                frameBack.Visible = false;
+            }
+            frameBack.Gravity = Gravity.CenterHorizontal;
+            frameBack.MainKey = memberInfo.childAccountId;
+            frameBack.Radius = (uint)Application.GetRealWidth(12);
+            frameBack.Height = Application.GetRealHeight(80);
+            frameBack.BackgroundColor = CSS_Color.MainBackgroundColor;
+            this.listView.frameTable.AddChidren(frameBack);
+            this.listWhiteFrame.Add(frameBack);
+
+            //鐢ㄦ埛琛�
+            var frameUserRow = new FrameRowControl();
+            frameUserRow.Width = frameBack.Width;
+            frameUserRow.Height = Application.GetRealHeight(80);
+            frameBack.AddChidren(frameUserRow);
+            //鐢ㄦ埛澶村儚
+            var btnUserIcon = new ImageView();
+            btnUserIcon.X = HdlControlResourse.XXLeft;
+            btnUserIcon.Width = Application.GetRealWidth(48);
+            btnUserIcon.Height = Application.GetRealWidth(48);
+            btnUserIcon.Gravity = Gravity.CenterVertical;
+            btnUserIcon.ImagePath = "LoginIcon/2.png";
+            btnUserIcon.Radius = (uint)btnUserIcon.Height / 2;
+            frameUserRow.AddChidren(btnUserIcon, ChidrenBindMode.NotBind);
+            //鐢ㄦ埛鍚�
+            var btnUserName = frameUserRow.AddLeftCaption(memberInfo.nickName, 150);
+            btnUserName.X = btnUserIcon.Right + Application.GetRealWidth(12);
+            btnUserName.TextColor = CSS_Color.FirstLevelTitleColor;
+            //搴曠嚎
+            frameUserRow.AddBottomLine();
+            //鎴愬憳韬唤鑳屾櫙鍥剧墖
+            var frameUserType = new FrameLayout();
+            frameUserType.X = Application.GetRealWidth(220);
+            frameUserType.Y = Application.GetRealHeight(16);
+            frameUserType.Height = Application.GetRealHeight(58);
+            frameUserType.Width = Application.GetRealWidth(180);
+            frameUserType.BackgroundImagePath = "PersonalCenter/UserTypebg2.png";//鐢ㄦ渶闀垮浘鏍囩殑閭d釜
+            frameUserRow.AddChidren(frameUserType, ChidrenBindMode.NotBind);
+            //鎴愬憳韬唤缈昏瘧
+            var btnUserTypeName = new NormalViewControl(270, 54, true);
+            btnUserTypeName.X = Application.GetRealWidth(35);
+            btnUserTypeName.Y = Application.GetRealHeight(-2);
+            btnUserTypeName.TextColor = CSS_Color.MainBackgroundColor;
+            btnUserTypeName.TextSize = CSS_FontSize.PromptFontSize_FirstLevel;
+            btnUserTypeName.TextID = memberInfo.childAccountType == "ADMIN" ? StringId.Administrators : StringId.Member;
+            btnUserTypeName.Width = btnUserTypeName.GetRealWidthByText();
+            frameUserType.AddChidren(btnUserTypeName);
+            //鎸夌収鎺т欢瀹為檯闀垮害,鍙樻洿鑳屾櫙鍥剧殑X杞�  Application.GetRealWidth(10)涓哄彸杈逛綑鐧�
+            frameUserType.X = frameBack.Width - btnUserTypeName.X - btnUserTypeName.Width - Application.GetRealWidth(10);
+
+            for (int i = 0; i < listInfo.Count; i++)
+            {
+                //娣诲姞瀵嗙爜琛屾帶浠�
+                this.AddUnlockPasswordRowControl(frameBack, listInfo[i], i != listInfo.Count - 1);
+            }
+            //璋冩暣妗屽竷楂樺害
+            listView.AdjustChidrenFrameHeight(frameBack, 0);
+
+            return btnUserIcon;
+        }
+
+        #endregion
+
+        #region 鈻� 鐢熸垚瀵嗙爜琛屾帶浠禵____________________
+
+        /// <summary>
+        /// 鐢熸垚瀵嗙爜琛屾帶浠�
+        /// </summary>
+        /// <param name="frameFather">鐖舵帶浠�</param>
+        /// <param name="unlockInfo">寮�閿佹柟寮忎俊鎭�</param>
+        /// <param name="addLine">鏄惁娣诲姞搴曠嚎</param>
+        private void AddUnlockPasswordRowControl(NormalFrameLayout frameFather, UnlockMethordInfo unlockInfo, bool addLine)
+        {
+            //琛屾帶浠�
+            var frameRow = new FrameRowControl();
+            frameRow.MainKey = unlockInfo.Id;
+            frameRow.RightOffset = Application.GetRealWidth(-32);
+            if (frameFather.ChildrenCount > 0)
+            {
+                //寰�鏈�搴曚笅娣诲姞
+                frameRow.Y = frameFather.GetChildren(frameFather.ChildrenCount - 1).Bottom;
+            }
+            frameFather.AddChidren(frameRow);
+            if (addLine == true)
+            {
+                frameRow.AddBottomLine();
+            }
+
+            //寮�閿佹柟寮忓娉�
+            var btnCaption = frameRow.AddLeftCaption(unlockInfo.Remark, 120);
+            btnCaption.TextColor = CSS_Color.FirstLevelTitleColor;
+
+            //鍦烘櫙鑱斿姩鍥炬爣
+            IconViewControl btnScene = null;
+            //澶囨敞缂栬緫鍥炬爣
+            IconViewControl btnEditor = null;
+            //鍒嗛厤鍥炬爣
+            IconViewControl btnMove = null;
+            //鍒犻櫎鍥炬爣
+            IconViewControl btnDelete = null;
+            //鏇村鍥炬爣
+            var btnMore = frameRow.AddMostRightEmptyIcon(28, 28);
+            btnMore.UnSelectedImagePath = "FunctionIcon/DoorLock/More.png";
+            btnMore.SelectedImagePath = "FunctionIcon/DoorLock/Hide.png";
+            btnMore.ButtonClickEvent += (sender, e) =>
+            {
+                btnMore.IsSelected = !btnMore.IsSelected;
+                btnEditor.Visible = btnMore.IsSelected;
+                btnMove.Visible = btnMore.IsSelected;
+                btnDelete.Visible = btnMore.IsSelected;
+
+                //鍙樻洿鍒嗕韩鍦烘櫙鍥炬爣鐨刋杞�
+                int intSceneX = btnMore.IsSelected == true ? btnEditor.X : btnMore.X;
+                btnScene.X = intSceneX - btnScene.Width - Application.GetRealWidth(12);
+            };
+            //鍒犻櫎鍥炬爣
+            btnDelete = new IconViewControl(28);
+            btnDelete.UnSelectedImagePath = "FunctionIcon/DoorLock/Delete.png";
+            btnDelete.Gravity = Gravity.CenterVertical;
+            btnDelete.X = btnMore.X - btnDelete.Width - Application.GetRealWidth(12);
+            btnDelete.Visible = false;
+            frameRow.AddChidren(btnDelete, ChidrenBindMode.NotBind);
+            btnDelete.ButtonClickEvent += (sender, e) =>
+            {
+                //鍒犻櫎鎿嶄綔灏嗚鍚屾浜庡疄浣撻攣涓妠0}鏄惁杩橀渶瑕佸垹闄わ紵
+                HdlMessageLogic.Current.ShowMassage(ShowMsgType.Confirm, Language.StringByID(StringId.DeleteUnlockingMethordMsg), () =>
+                {
+                    //鍒犻櫎寮�閿佹柟寮�
+                    this.DeleteUnlockMethrod(frameFather, unlockInfo);
+
+                }, Language.StringByID(StringId.ConfirmDeletion));
+            };
+
+            //鍒嗛厤鍥炬爣
+            btnMove = new IconViewControl(28);
+            btnMove.UnSelectedImagePath = "FunctionIcon/DoorLock/Redistribution.png";
+            btnMove.Gravity = Gravity.CenterVertical;
+            btnMove.X = btnDelete.X - btnMove.Width - Application.GetRealWidth(12);
+            btnMove.Visible = false;
+            frameRow.AddChidren(btnMove, ChidrenBindMode.NotBind);
+            btnMove.ButtonClickEvent += (sender, e) =>
+            {
+                //鍒嗛厤寮�閿佹柟寮�
+                this.DistributeUnlockMethord(frameFather, unlockInfo);
+            };
+
+            //缂栬緫鍥炬爣
+            btnEditor = new IconViewControl(28);
+            btnEditor.UnSelectedImagePath = "FunctionIcon/DoorLock/Editor.png";
+            btnEditor.Gravity = Gravity.CenterVertical;
+            btnEditor.X = btnMove.X - btnEditor.Width - Application.GetRealWidth(12);
+            btnEditor.Visible = false;
+            frameRow.AddChidren(btnEditor, ChidrenBindMode.NotBind);
+            btnEditor.ButtonClickEvent += (sender, e) =>
+            {
+                new UI.PublicAssmebly().LoadDialog_EditParater(StringId.EditorRemarkName, btnCaption.Text,(textValue)=>
+                {
+                    btnCaption.Text = textValue;
+
+                }, StringId.RemarkNameCanNotEmpty, 0, new List<string>());
+            };
+
+            //鍦烘櫙鑱斿姩鍥炬爣
+            btnScene = new IconViewControl(28);
+            btnScene.UnSelectedImagePath = "FunctionIcon/DoorLock/BindScene.png";
+            btnScene.Gravity = Gravity.CenterVertical;
+            btnScene.X = btnMore.X - btnScene.Width - Application.GetRealWidth(12);
+            frameRow.AddChidren(btnScene, ChidrenBindMode.NotBind);
+            btnScene.ButtonClickEvent += (sender, e) =>
+            {
+                //鏄剧ず閫夋嫨鍦烘櫙寮圭獥
+                this.ShowSelectSceneDialog(unlockInfo);
+            };
+        }
+
+        #endregion
+
+        #region 鈻� 璋冩暣鐧借壊瀹瑰櫒鎺т欢鐨勫潗鏍囧強楂樺害_______
+
+        /// <summary>
+        /// 璋冩暣鍏ㄩ儴鐧借壊瀹瑰櫒鎺т欢鐨勫潗鏍�
+        /// </summary>
+        private void AdjustAllWhiteFrameLocation()
+        {
+            //鍒濆Y杞�
+            int defultYY = 0;
+            for (int i = 0; i < this.listWhiteFrame.Count; i++)
+            {
+                var frame = this.listWhiteFrame[i];
+                //涓嶆樉绀虹殑,涓嶅仛澶勭悊
+                if (frame.Visible == false) { continue; }
+                //鐧借壊瀹瑰櫒闂寸殑闂磋窛涓�12锛屾渶鍚庝竴涓槸浣欑櫧,涓嶉渶瑕佸啀娣诲姞闂磋窛
+                frame.Y = i != this.listWhiteFrame.Count - 1 ? defultYY + Application.GetRealHeight(12) : defultYY;
+
+                defultYY = frame.Bottom;
+            }
+        }
+
+        /// <summary>
+        /// 璋冩暣鐧借壊瀹瑰櫒鎺т欢鐨勯珮搴�
+        /// </summary>
+        /// <param name="frameFather">鎸囧畾鐧借壊鍖哄煙鐨勫鍣ㄦ帶浠�</param>
+        private void AdjustWhiteFrameHeight(NormalFrameLayout frameFather)
+        {
+            if (frameFather.ChildrenCount == 1)
+            {
+                //濡傛灉杩欎釜瀹瑰櫒閲岄潰宸茬粡娌℃湁浜嗗紑閿佹柟寮�,鍒欏皢瀹冪疆椤�,骞堕殣钘�
+                frameFather.Y = 0;
+                frameFather.Visible = false;
+            }
+            else
+            {
+                //浠庢柊璁$畻瀹冪殑楂樺害
+                var rowLast = frameFather.GetChildren(frameFather.ChildrenCount - 1);
+                frameFather.Height = rowLast.Bottom;
+                if (rowLast is FrameRowControl)
+                {
+                    //灏嗗畠鐨勫簳绾跨Щ闄ゆ帀
+                    ((FrameRowControl)rowLast).RemoveBottomLine();
+                }
+            }
+        }
+
+        #endregion
+
+        #region 鈻� 鍒濆鍖栧紑閿佹柟寮忎俊鎭垪琛╛____________
+
+        /// <summary>
+        /// 鍒濆鍖栧紑閿佹柟寮忎俊鎭垪琛�
+        /// </summary>
+        /// <returns></returns>
+        private bool InitUnlockMethordInfoFromClound()
+        {
+            //鍏堝垵濮嬩紭鍖�
+            this.listUnlockInfo = new List<UnlockMethordInfo>();
+
+            for (int i = 0; i < 2; i++)
+            {
+                var unlockInfo = new UnlockMethordInfo();
+                unlockInfo.Id = "MimaKey" + i.ToString();
+                unlockInfo.Remark = "瀵嗙爜" + i;
+                this.listUnlockInfo.Add(unlockInfo);
+            }
+            for (int i = 0; i < 2; i++)
+            {
+                var unlockInfo = new UnlockMethordInfo();
+                unlockInfo.Id = "ZhiwenKey" + i.ToString();
+                unlockInfo.Remark = "鎸囩汗" + i;
+                this.listUnlockInfo.Add(unlockInfo);
+            }
+            return true;
+        }
+
+        /// <summary>
+        /// 寮�閿佹柟寮忎俊鎭�
+        /// </summary>
+        private class UnlockMethordInfo
+        {
+            /// <summary>
+            /// 鏁版嵁搴撲富閿�
+            /// </summary>
+            public string Id = string.Empty;
+            /// <summary>
+            /// 瀵嗙爜澶囨敞
+            /// </summary>
+            public string Remark = string.Empty;
+            /// <summary>
+            /// 鐢ㄦ埛璐﹀彿id
+            /// </summary>
+            public string UserId = string.Empty;
+        }
+
+        #endregion
+
+        #region 鈻� 鏄剧ず閫夋嫨鍦烘櫙寮圭獥___________________
+
+        /// <summary>
+        /// 鏄剧ず閫夋嫨鍦烘櫙寮圭獥
+        /// </summary>
+        /// <param name="unlockInfo">寮�閿佹柟寮�</param>
+        private void ShowSelectSceneDialog(UnlockMethordInfo unlockInfo)
+        {
+            if (FunctionList.List.scenes.Count == 0)
+            {
+                //妫�娴嬩笉鍒板彲渚涢�夋嫨鐨勫満鏅�
+                HdlMessageLogic.Current.ShowMassage(ShowMsgType.Tip, Language.StringByID(StringId.NotHadCanSelectScene));
+                return;
+            }
+            var listText = new List<string>();
+            var listSelectIndex = new List<int>();
+            var listSelect = new List<string>();
+            if (this.dicSelectScene.ContainsKey(unlockInfo.Id) == true)
+            {
+                //褰撳墠宸茬粡閫夋嫨浜嗙殑鍦烘櫙
+                listSelect = this.dicSelectScene[unlockInfo.Id];
+            }
+
+            for (int i = 0; i < FunctionList.List.scenes.Count; i++)
+            {
+                var info = FunctionList.List.scenes[i];
+                listText.Add(info.name);
+                if (listSelect.Contains(info.userSceneId) == true)
+                {
+                    //鍒濆閫夋嫨
+                    listSelectIndex.Add(i);
+                }
+            }
+            //璋冭捣寮圭獥
+            var form = new BottomItemSelectControl(FunctionList.List.scenes.Count, Language.StringByID(StringId.SelectScene));
+            form.AddRowMenu(listText, listSelectIndex);
+            form.FinishOnlyEvent += (div, selectIndex) =>
+            {
+                if (div == 1)
+                {
+                    this.dicSelectScene[unlockInfo.Id] = new List<string>();
+                    this.dicSelectScene[unlockInfo.Id].Add(FunctionList.List.scenes[selectIndex].userSceneId);
+                }
+            };
+        }
+
+        #endregion
+
+        #region 鈻� 鍒犻櫎寮�閿佹柟寮廮______________________
+
+        /// <summary>
+        /// 鍒犻櫎寮�閿佹柟寮�
+        /// </summary>
+        /// <param name="frameFather">鐖舵帶浠�</param>
+        /// <param name="unlockInfo">寮�閿佷俊鎭�</param>
+        private void DeleteUnlockMethrod(NormalFrameLayout frameFather, UnlockMethordInfo unlockInfo)
+        {
+            //绉婚櫎鎸囧畾寮�閿佹柟寮忕殑琛屾帶浠�
+            this.RemoveUnlockMethrodRowControl(frameFather, unlockInfo);
+
+            //璋冩暣鐧借壊瀹瑰櫒鎺т欢鐨勯珮搴�
+            this.AdjustWhiteFrameHeight(frameFather);
+
+            //璋冩暣鍏ㄩ儴鐧借壊瀹瑰櫒鎺т欢鐨勫潗鏍�
+            this.AdjustAllWhiteFrameLocation();
+        }
+
+        /// <summary>
+        /// 绉婚櫎鎸囧畾寮�閿佹柟寮忕殑琛屾帶浠�
+        /// </summary>
+        /// <param name="frameFather">鐖舵帶浠�</param>
+        /// <param name="unlockInfo">寮�閿佷俊鎭�</param>
+        private void RemoveUnlockMethrodRowControl(NormalFrameLayout frameFather, UnlockMethordInfo unlockInfo)
+        {
+            //浠庣储寮�1寮�濮�,鍥犱负绱㈠紩0鏄爣棰�
+            for (int i = 1; i < frameFather.ChildrenCount; i++)
+            {
+                var row = frameFather.GetChildren(i) as FrameRowControl;
+                if (row == null || row.MainKey != unlockInfo.Id)
+                {
+                    //涓嶆槸瀹�
+                    continue;
+                }
+                //绉婚櫎鎺夊畠
+                row.RemoveFromParent();
+                break;
+            }
+            //鐒跺悗閲嶆柊鏁翠竴涓嬪叏閮ㄨ鐨刌杞�
+            int newYY = frameFather.GetChildren(0).Bottom;
+            for (int i = 1; i < frameFather.ChildrenCount; i++)
+            {
+                var row = frameFather.GetChildren(i) as FrameRowControl;
+                if (row == null)
+                {
+                    //鐞嗚涓婂簲璇ヤ笉浼�
+                    continue;
+                }
+                row.Y = newYY;
+                newYY = row.Bottom;
+            }
+        }
+
+        #endregion
+
+        #region 鈻� 鍒嗛厤寮�閿佹柟寮廮______________________
+
+        /// <summary>
+        /// 鍒嗛厤寮�閿佹柟寮�
+        /// </summary>
+        /// <param name="frameFather">鐖舵帶浠�</param>
+        /// <param name="unlockInfo">寮�閿佷俊鎭�</param>
+        private void DistributeUnlockMethord(NormalFrameLayout frameFather, UnlockMethordInfo unlockInfo)
+        {
+            //濡傛灉鏄湭鍒嗛厤鐨勫紑閿佹柟寮�,鍒欏脊璧锋垚鍛橀�夋嫨绐楀彛
+            if (frameFather.MainKey == "NotAssign")
+            {
+                var listText = new List<string>();
+                foreach (var info in this.listMember)
+                {
+                    listText.Add(info.nickName);
+                }
+                //璋冭捣寮圭獥
+                var form = new BottomItemSelectControl(this.listMember.Count, Language.StringByID(StringId.AssignTo));
+                form.AddRowMenu(listText, new List<int>());
+                form.FinishOnlyEvent += (div, selectIndex) =>
+                {
+                    if (div == 1)
+                    {
+                        //绉婚櫎鎸囧畾寮�閿佹柟寮忕殑琛屾帶浠�
+                        this.RemoveUnlockMethrodRowControl(frameFather, unlockInfo);
+                        //璋冩暣鐧借壊瀹瑰櫒鎺т欢鐨勯珮搴�
+                        this.AdjustWhiteFrameHeight(frameFather);
+                        //娣诲姞鏂扮殑寮�閿佹柟寮忚鎺т欢
+                        this.AddNewUnlockMethrodRowControl(this.listMember[selectIndex].childAccountId, unlockInfo);
+                        //璋冩暣鍏ㄩ儴鐧借壊瀹瑰櫒鎺т欢鐨勫潗鏍�
+                        this.AdjustAllWhiteFrameLocation();
+                        //璋冩暣妗屽竷楂樺害
+                        listView.AdjustTableHeight();
+                    }
+                };
+            }
+            //濡傛灉鏄垚鍛樼殑,鍒欐妸瀹冩斁鍥炴湭鍒嗛厤
+            else
+            {
+                //绉婚櫎鎸囧畾寮�閿佹柟寮忕殑琛屾帶浠�
+                this.RemoveUnlockMethrodRowControl(frameFather, unlockInfo);
+                //璋冩暣鐧借壊瀹瑰櫒鎺т欢鐨勯珮搴�
+                this.AdjustWhiteFrameHeight(frameFather);
+                //娣诲姞鏂扮殑寮�閿佹柟寮忚鎺т欢鍒版湭鍒嗛厤
+                this.AddNewUnlockMethrodRowControl("NotAssign", unlockInfo);
+                //璋冩暣鍏ㄩ儴鐧借壊瀹瑰櫒鎺т欢鐨勫潗鏍�
+                this.AdjustAllWhiteFrameLocation();
+                //璋冩暣妗屽竷楂樺害
+                listView.AdjustTableHeight();
+            }
+        }
+
+        /// <summary>
+        /// 娣诲姞鏂扮殑寮�閿佹柟寮忚鎺т欢
+        /// </summary>
+        /// <param name="i_childId">userId</param>
+        /// <param name="unlockInfo">寮�閿佹柟寮忎俊鎭�</param>
+        private void AddNewUnlockMethrodRowControl(string i_childId, UnlockMethordInfo unlockInfo)
+        {
+            NormalFrameLayout fatherFrame = null;
+            foreach (var frame in this.listWhiteFrame)
+            {
+                //鑾峰彇鎸囧畾鐨勭埗鎺т欢
+                if (frame.MainKey != i_childId) { continue; }
+                fatherFrame = frame;
+                break;
+            }
+            //搴旇涓嶄細瀛樺湪
+            if (fatherFrame == null) { return; }
+
+            if (fatherFrame.ChildrenCount > 1)
+            {
+                //鍏堜负鏈�鍚庝竴琛岀敾搴曠嚎
+                var lastRow = fatherFrame.GetChildren(fatherFrame.ChildrenCount - 1) as FrameRowControl;
+                lastRow?.AddBottomLine();
+            }
+            else
+            {
+                //瀹冨彲浠ユ樉绀哄嚭鏉ヤ簡
+                fatherFrame.Visible = true;
+            }
+            //鍚戞寚瀹氱殑瀹瑰櫒娣诲姞寮�閿佹柟寮忔帶浠�
+            this.AddUnlockPasswordRowControl(fatherFrame, unlockInfo, true);
+            //璋冩暣鐧借壊瀹瑰櫒鎺т欢鐨勯珮搴�
+            this.AdjustWhiteFrameHeight(fatherFrame);
+        }
+
+        #endregion
+
+        #region 鈻� 涓嬭浇鐢ㄦ埛澶村儚_______________________
+
+        /// <summary>
+        /// 涓嬭浇鐢ㄦ埛澶村儚
+        /// </summary>
+        /// <param name="listIcon">澶村儚鎺т欢鍒楄〃,瀹冪殑绱㈠紩鍜宼his.listMember涓�鑷�</param>
+        private void DownLoadUserIcon(List<ImageView> listIcon)
+        {
+            //绱㈠紩0鏄綋鍓嶇殑鐧婚檰璐﹀彿
+            listIcon[0].ImagePath = UserInfo.Current.headImagePagePath;
+            HdlThreadLogic.Current.RunThread(() =>
+            {
+                for (int i = 1; i < this.listMember.Count; i++)
+                {
+                    var resultData = ImageUtlis.Current.DownHeadImageByImageKey(this.listMember[i].memberHeadIcon, true, this.listMember[i].childAccountRegionUrl);
+                    if (this.Parent == null)
+                    {
+                        //鐣岄潰宸茬粡鍏抽棴
+                        return;
+                    }
+                    if (resultData != null && resultData.Length > 0)
+                    {
+                        int nowIndex = i;
+                        HdlThreadLogic.Current.RunMain(() =>
+                        {
+                            listIcon[nowIndex].ImageBytes = resultData;
+                        }, ShowErrorMode.NO);
+                    }
+                    System.Threading.Thread.Sleep(200);
+                }
+
+            }, ShowErrorMode.NO);
+        }
+
+        #endregion
+    }
+}
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Electrical/IrFanPage.cs b/HDL_ON/UI/UI2/FuntionControlView/Electrical/IrFanPage.cs
deleted file mode 100644
index ab85ff9..0000000
--- a/HDL_ON/UI/UI2/FuntionControlView/Electrical/IrFanPage.cs
+++ /dev/null
@@ -1,10 +0,0 @@
-锘縰sing System;
-namespace HDL_ON.UI.UI2.FuntionControlView.Electrical
-{
-    public class IrFanPage
-    {
-        public IrFanPage()
-        {
-        }
-    }
-}
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Electrical/PjtPage.cs b/HDL_ON/UI/UI2/FuntionControlView/Electrical/PjtPage.cs
deleted file mode 100644
index 523142c..0000000
--- a/HDL_ON/UI/UI2/FuntionControlView/Electrical/PjtPage.cs
+++ /dev/null
@@ -1,674 +0,0 @@
-锘縰sing System;
-using System.Collections.Generic;
-using HDL_ON.DriverLayer;
-using HDL_ON.Entity;
-using HDL_ON.UI.CSS;
-using Shared;
-
-namespace HDL_ON.UI
-{
-    /// <summary>
-    /// 鎶曞奖浠〉闈�
-    /// </summary>
-    public class PjtPage : FrameLayout
-    {
-        #region 鎺т欢闆嗗悎
-        FrameLayout bodyView;
-        /// <summary>
-        /// 鍔熻兘鍚嶇О鎸夐挳
-        /// </summary>
-        Button btnFunctionName;
-        /// <summary>
-        /// 鎴块棿妤煎眰淇℃伅鎸夐挳
-        /// </summary>
-        Button btnFromFoorAndRoom;
-        /// <summary>
-        /// 鏀惰棌鎸夐挳
-        /// </summary>
-        Button btnCollection;
-
-        FrameLayout topMenuView;
-        Button btnTopMenuUp;
-        Button btnTopMenuLeft;
-        Button btnTopMenuRight;
-        Button btnTopMenuDown;
-        Button btnOk;
-        FrameLayout channleView;
-        Button btnChlReduce;
-        Button btnChlPlus;
-        FrameLayout volView;
-        Button btnVolReduce;
-        Button btnVolPlus;
-        Button btnBack;
-        Button btnMenu;
-        Button btnMore;
-        Button btnPower;
-
-        #endregion
-
-        #region 鍖哄煙鍙橀噺
-        //TV tvTemp = new TV();
-        Function device;
-        Button btnCollection_Out;
-        Button btnFunctionName_Out;
-        Button btnFromFloor_Out;
-        /// <summary>
-        /// 鍒锋柊鏄剧ず淇℃伅
-        /// </summary>
-        Action actionRefresh;
-        #endregion
-
-        public PjtPage(Function func)
-        {
-            bodyView = this;
-            device = func;
-        }
-
-
-        public void LoadPage(Button btnCollectionIcon, Button btnFunctionNameOut, Button btnFromFloorOut)
-        {
-            bodyView.BackgroundColor = CSS_Color.BackgroundColor;
-            btnCollection_Out = btnCollectionIcon;
-            btnFunctionName_Out = btnFunctionNameOut;
-            btnFromFloor_Out = btnFromFloorOut;
-
-            FrameLayout controlView = new FrameLayout()
-            {
-                Gravity = Gravity.CenterHorizontal,
-                Y = Application.GetRealHeight(88),
-                Width = Application.GetRealWidth(327),
-                Height = Application.GetRealHeight(526),
-                BackgroundImagePath = "Public/Fragmentbg.png",
-            };
-            bodyView.AddChidren(controlView);
-
-            btnFunctionName = new Button()
-            {
-                X = Application.GetRealWidth(16),
-                Y = Application.GetRealHeight(14),
-                Width = Application.GetRealWidth(270),
-                Height = Application.GetRealHeight(37),
-                TextColor = CSS_Color.FirstLevelTitleColor,
-                TextAlignment = TextAlignment.CenterLeft,
-                TextSize = CSS_FontSize.EmphasisFontSize_FirstLevel,
-                Text = device.name,
-            };
-            controlView.AddChidren(btnFunctionName);
-
-            btnFromFoorAndRoom = new Button()
-            {
-                X = Application.GetRealWidth(16),
-                Y = btnFunctionName.Bottom,
-                Width = Application.GetRealWidth(270),
-                Height = Application.GetRealHeight(21),
-                TextColor = CSS_Color.PromptingColor1,
-                TextAlignment = TextAlignment.CenterLeft,
-                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
-                Text = device.GetRoomListName()
-            };
-            controlView.AddChidren(btnFromFoorAndRoom);
-
-            btnCollection = new Button()
-            {
-                X = Application.GetRealWidth(273),
-                Y = Application.GetRealHeight(14),
-                Width = Application.GetMinRealAverage(40),
-                Height = Application.GetMinRealAverage(40),
-                SelectedImagePath = "Collection/CollectionIcon.png",
-                UnSelectedImagePath = "Collection/CollectionGrayIcon.png",
-                IsSelected = device.collect
-            };
-            controlView.AddChidren(btnCollection);
-            //2020-12-16 濡傛灉鏄垚鍛橀殣钘忔敹钘忓姛鑳�
-            //if (!DB_ResidenceData.Instance.CurrentRegion.isOtherShare)
-            //{
-            //    controlView.AddChidren(btnCollection);
-            //}
-
-
-
-            #region 杞洏鎺у埗鍖哄煙
-            topMenuView = new FrameLayout()
-            {
-                Y = Application.GetRealHeight(88),
-                Gravity = Gravity.CenterHorizontal,
-                Width = Application.GetRealWidth(199),
-                Height = Application.GetRealWidth(199),
-                BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png",
-            };
-            controlView.AddChidren(topMenuView);
-
-            btnTopMenuUp = new Button()
-            {
-                Gravity = Gravity.CenterHorizontal,
-                Width = Application.GetRealWidth(80),
-                Height = Application.GetRealWidth(50),
-            };
-            topMenuView.AddChidren(btnTopMenuUp);
-
-            btnTopMenuLeft = new Button()
-            {
-                Gravity = Gravity.CenterVertical,
-                Width = Application.GetRealWidth(50),
-                Height = Application.GetRealWidth(80),
-            };
-            topMenuView.AddChidren(btnTopMenuLeft);
-
-            btnTopMenuRight = new Button()
-            {
-                X = Application.GetRealWidth(150),
-                Gravity = Gravity.CenterVertical,
-                Width = Application.GetRealWidth(50),
-                Height = Application.GetRealWidth(80),
-            };
-            topMenuView.AddChidren(btnTopMenuRight);
-
-            btnTopMenuDown = new Button()
-            {
-                Y = Application.GetRealWidth(150),
-                Gravity = Gravity.CenterHorizontal,
-                Width = Application.GetRealWidth(80),
-                Height = Application.GetRealWidth(50),
-            };
-            topMenuView.AddChidren(btnTopMenuDown);
-
-            btnOk = new Button()
-            {
-                Gravity = Gravity.Center,
-                Width = Application.GetRealWidth(100),
-                Height = Application.GetRealWidth(100),
-            };
-            topMenuView.AddChidren(btnOk);
-
-
-
-            #endregion
-
-
-            #region 棰戦亾闊抽噺璋冭妭
-            channleView = new FrameLayout()
-            {
-                X = Application.GetRealWidth(26),
-                Y = Application.GetRealHeight(246),
-                Width = Application.GetRealWidth(44),
-                Height = Application.GetRealWidth(102),
-                BackgroundImagePath = "FunctionIcon/Electrical/TV/MenuBgIcon.png",
-            };
-            controlView.AddChidren(channleView);
-
-            btnChlPlus = new Button()
-            {
-                Gravity = Gravity.CenterHorizontal,
-                Y = Application.GetRealHeight(10),
-                Width = Application.GetRealWidth(24),
-                Height = Application.GetRealWidth(24),
-                UnSelectedImagePath = "FunctionIcon/Electrical/TV/PlusIcon.png"
-            };
-            channleView.AddChidren(btnChlPlus);
-
-            Button btnChlText;
-            btnChlText = new Button()
-            {
-                Gravity = Gravity.CenterVertical,
-                Height = Application.GetRealWidth(23),
-                TextAlignment = TextAlignment.Center,
-                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
-                TextColor = CSS_Color.FirstLevelTitleColor,
-                TextID = StringId.Canvas,
-            };
-            channleView.AddChidren(btnChlText);
-
-            btnChlReduce = new Button()
-            {
-                Gravity = Gravity.CenterHorizontal,
-                Y = Application.GetRealWidth(66),
-                Width = Application.GetRealWidth(24),
-                Height = Application.GetRealWidth(24),
-                UnSelectedImagePath = "FunctionIcon/Electrical/TV/ReduceIcon.png"
-            };
-            channleView.AddChidren(btnChlReduce);
-
-            volView = new FrameLayout()
-            {
-                X = Application.GetRealWidth(257),
-                Y = Application.GetRealHeight(246),
-                Width = Application.GetRealWidth(44),
-                Height = Application.GetRealWidth(102),
-                BackgroundImagePath = "FunctionIcon/Electrical/TV/MenuBgIcon.png",
-            };
-            controlView.AddChidren(volView);
-
-            btnVolPlus = new Button()
-            {
-                Gravity = Gravity.CenterHorizontal,
-                Y = Application.GetRealHeight(10),
-                Width = Application.GetRealWidth(24),
-                Height = Application.GetRealWidth(24),
-                UnSelectedImagePath = "FunctionIcon/Electrical/TV/PlusIcon.png"
-            };
-            volView.AddChidren(btnVolPlus);
-
-            Button btnVolText;
-            btnVolText = new Button()
-            {
-                Gravity = Gravity.CenterVertical,
-                Height = Application.GetRealWidth(23),
-                TextAlignment = TextAlignment.Center,
-                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
-                TextColor = CSS_Color.FirstLevelTitleColor,
-                TextID = StringId.Vol,
-            };
-            volView.AddChidren(btnVolText);
-
-            btnVolReduce = new Button()
-            {
-                Gravity = Gravity.CenterHorizontal,
-                Y = Application.GetRealWidth(66),
-                Width = Application.GetRealWidth(24),
-                Height = Application.GetRealWidth(24),
-                UnSelectedImagePath = "FunctionIcon/Electrical/TV/ReduceIcon.png"
-            };
-            volView.AddChidren(btnVolReduce);
-
-
-
-            #endregion
-
-            #region 搴曢儴鎺у埗鍖哄煙
-            btnBack = new Button()
-            {
-                X = Application.GetRealWidth(52),
-                Y = Application.GetRealHeight(466),
-                Width = Application.GetRealWidth(32),
-                Height = Application.GetRealWidth(32),
-                UnSelectedImagePath = "FunctionIcon/Electrical/TV/TVBackIcon.png",
-            };
-            controlView.AddChidren(btnBack);
-
-
-            btnMenu = new Button()
-            {
-                X = Application.GetRealWidth(116),
-                Y = Application.GetRealHeight(466),
-                Width = Application.GetRealWidth(32),
-                Height = Application.GetRealWidth(32),
-                UnSelectedImagePath = "FunctionIcon/Electrical/TV/TVMenuIcon.png",
-            };
-            controlView.AddChidren(btnMenu);
-
-            btnMore = new Button()
-            {
-                X = Application.GetRealWidth(180),
-                Y = Application.GetRealHeight(466),
-                Width = Application.GetRealWidth(32),
-                Height = Application.GetRealWidth(32),
-                UnSelectedImagePath = "FunctionIcon/AC/More.png",
-            };
-            controlView.AddChidren(btnMore);
-
-            btnMore.MouseUpEventHandler = (sender, e) => {
-              LoadDialog_IrMoreView();
-            };
-
-            btnPower = new Button()
-            {
-                X = Application.GetRealWidth(244),
-                Y = Application.GetRealHeight(466),
-                Width = Application.GetRealWidth(32),
-                Height = Application.GetRealWidth(32),
-                UnSelectedImagePath = "FunctionIcon/Electrical/TV/TVPowerIcon.png",
-            };
-            controlView.AddChidren(btnPower);
-
-            #endregion
-
-            new TopViewDiv(bodyView, Language.StringByID(StringId.PJT)).LoadTopView_FunctionTop(device, actionRefresh);
-            DriverLayer.Control.Ins.SendReadCommand(device);
-
-            LoadEventList();
-
-        }
-
-
-        /// <summary>
-        /// 鍔犺浇棰濆瀵圭孩澶栨寜閽晫闈�
-        /// </summary>
-        void LoadDialog_IrMoreView()
-        {
-            Dialog dialog = new Dialog();
-
-            var div = new FrameLayout();
-            dialog.AddChidren(div);
-            div.MouseUpEventHandler = (sender, e) => {
-                dialog.Close();
-            };
-
-            var bodyView = new FrameLayout()
-            {
-                Y = Application.GetRealHeight(427),//667
-                Height = Application.GetRealHeight(240),
-                BackgroundColor = CSS_Color.MainBackgroundColor,
-            };
-            div.AddChidren(bodyView);
-
-            var contentView = new VerticalScrolViewLayout()
-            {
-                Y = Application.GetRealHeight(16),
-                Gravity = Gravity.CenterHorizontal,
-                Width = Application.GetRealWidth(296 + 200),
-            };
-            bodyView.AddChidren(contentView);
-
-
-            var row = new FrameLayout()
-            {
-                Height = Application.GetRealHeight(60),
-                Width = Application.GetRealWidth(296),
-                Gravity = Gravity.CenterHorizontal,
-            };
-            contentView.AddChidren(row);
-
-            int index = 0;
-            List<FunctionAttributes> attrList = new List<FunctionAttributes>();
-            attrList.AddRange(device.attributes);
-            attrList.Add(new FunctionAttributes()
-            {
-                key = "+",
-            });
-
-            foreach (var attr in attrList)
-            {
-                if (attr.key == "up"
-                    || attr.key == "down"
-                    || attr.key == "right"
-                    || attr.key == "left"
-                    || attr.key == "zoom+"
-                    || attr.key == "zoom-"
-                    || attr.key == "volume+"
-                    || attr.key == "volume-"
-                    || attr.key == "back"
-                    || attr.key == "menu"
-                    || attr.key == FunctionAttributeKey.OnOff
-                    )
-                {
-                    continue;
-                }
-                if (index != 0 && index % 3 == 0)
-                {
-                    row = new FrameLayout()
-                    {
-                        Height = Application.GetRealHeight(56),
-                        Width = Application.GetRealWidth(296),
-                        Gravity = Gravity.CenterHorizontal,
-                    };
-                    contentView.AddChidren(row);
-                }
-                if (attr.key == "+")
-                {
-                    var addView = new FrameLayout()
-                    {
-                        Gravity = Gravity.CenterVertical,
-                        Width = Application.GetRealWidth(88),
-                        Height = Application.GetRealHeight(40),
-                        Radius = (uint)Application.GetRealHeight(18),
-                        BorderColor = CSS_Color.PromptingColor1,
-                        BorderWidth = (uint)Application.GetRealWidth(2),
-                    };
-
-
-                    if (index % 3 == 1)
-                    {
-                        addView.Gravity = Gravity.Center;
-                    }
-                    else if (index % 3 == 2)
-                    {
-                        addView.X = Application.GetRealWidth(208);
-                    }
-                    row.AddChidren(addView);
-
-                    var btnAdd = new Button()
-                    {
-                        Gravity = Gravity.Center,
-                        UnSelectedImagePath = "Public/PlusSignIcon.png",
-                        Width = Application.GetRealWidth(32),
-                        Height = Application.GetRealWidth(32),
-                    };
-                    addView.AddChidren(btnAdd);
-
-                    btnAdd.MouseUpEventHandler = (sender, e) =>
-                    {
-                        dialog.Close();
-                        Action action = () => {
-                            LoadDialog_IrMoreView();
-                        };
-                        var addButton = new AcControlPage_AddIrButton(action);
-                        MainPage.BasePageView.AddChidren(addButton);
-                        addButton.Show(device);
-                        MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
-                    };
-
-
-                }
-                else
-                {
-
-                    var btn = new Button()
-                    {
-                        Gravity = Gravity.CenterVertical,
-                        Width = Application.GetRealWidth(88),
-                        Height = Application.GetRealHeight(40),
-                        Radius = (uint)Application.GetRealHeight(18),
-                        BorderColor = CSS_Color.PromptingColor1,
-                        BorderWidth = (uint)Application.GetRealWidth(2),
-                        TextAlignment = TextAlignment.Center,
-                        TextSize = CSS_FontSize.TextFontSize,
-                        TextColor = CSS_Color.FirstLevelTitleColor,
-                        SelectedTextColor = CSS_Color.MainBackgroundColor,
-                        SelectedBackgroundColor = CSS_Color.MainColor,
-                    };
-                    if (attr.value.Count > 0)
-                    {
-                        btn.Text = attr.value[0];
-                    }
-                    if (index % 3 == 1)
-                    {
-                        btn.Gravity = Gravity.Center;
-                    }
-                    else if (index % 3 == 2)
-                    {
-                        btn.X = Application.GetRealWidth(208);
-                    }
-                    row.AddChidren(btn);
-
-                    btn.MouseUpEventHandler = (sender, e) =>
-                    {
-                        Dictionary<string, string> d = new Dictionary<string, string>();
-                        d.Add(attr.key, "");
-                        Control.Ins.SendWriteCommand(device, d);
-
-                        new System.Threading.Thread(() =>
-                        {
-                            System.Threading.Thread.Sleep(2000);
-                            Application.RunOnMainThread(() =>
-                            {
-                                btn.IsSelected = false;
-                            });
-                        })
-                        { IsBackground = true }.Start();
-                    };
-
-                }
-
-                index++;
-            }
-
-            dialog.Show();
-        }
-
-
-
-        
-        /// <summary>
-        /// 鍔犺浇浜嬩欢鍒楄〃
-        /// </summary>
-        void LoadEventList()
-        {
-            LoadControlEvent();
-            LoadCollectionEvent();
-
-            //鍥為��鍒锋柊淇℃伅浜嬩欢
-            actionRefresh = () => {
-                btnFunctionName.Text = btnFunctionName_Out.Text = device.name;
-                btnFromFloor_Out.Text = btnFromFoorAndRoom.Text = device.GetRoomListName();
-                device.UpdataFuncitonInfo();
-            };
-        }
-
-        /// <summary>
-        /// 鏀惰棌鍔熻兘鎸夐挳浜嬩欢
-        /// </summary>
-        void LoadCollectionEvent()
-        {
-            btnCollection.MouseUpEventHandler += (sender, e) => {
-                btnCollection.IsSelected = device.collect = btnCollection_Out.IsSelected = !btnCollection.IsSelected;
-                device.CollectFunction();
-            };
-        }
-
-        /// <summary>
-        /// 鍔犺浇鎺у埗浜嬩欢
-        /// </summary>
-        void LoadControlEvent()
-        {
-
-            btnChlPlus.MouseUpEventHandler = (sender, e) =>
-            {
-                if (DB_ResidenceData.Instance.GatewayType == 1)
-                {
-                    Dictionary<string, string> d = new Dictionary<string, string>();
-                    d.Add("zoom+", "");
-                    Control.Ins.SendWriteCommand(device, d);
-                }
-            };
-            btnChlReduce.MouseUpEventHandler = (sender, e) =>
-            {
-                if (DB_ResidenceData.Instance.GatewayType == 1)
-                {
-                    Dictionary<string, string> d = new Dictionary<string, string>();
-                    d.Add("zoom-", "");
-                    Control.Ins.SendWriteCommand(device, d);
-                }
-            };
-            btnVolPlus.MouseUpEventHandler = (sender, e) =>
-            {
-                if (DB_ResidenceData.Instance.GatewayType == 1)
-                {
-                    Dictionary<string, string> d = new Dictionary<string, string>();
-                    d.Add("volume+", "");
-                    Control.Ins.SendWriteCommand(device, d);
-                }
-            };
-            btnVolReduce.MouseUpEventHandler = (sender, e) =>
-            {
-                if (DB_ResidenceData.Instance.GatewayType == 1)
-                {
-                    Dictionary<string, string> d = new Dictionary<string, string>();
-                    d.Add("volume-", "");
-                    Control.Ins.SendWriteCommand(device, d);
-                }
-            };
-            btnBack.MouseUpEventHandler = (sender, e) =>
-            {
-                if (DB_ResidenceData.Instance.GatewayType == 1)
-                {
-                    Dictionary<string, string> d = new Dictionary<string, string>();
-                    d.Add("return", "");
-                    Control.Ins.SendWriteCommand(device, d);
-                }
-            };
-            btnPower.MouseUpEventHandler = (sender, e) =>
-            {
-                if (DB_ResidenceData.Instance.GatewayType == 1)
-                {
-                    Dictionary<string, string> d = new Dictionary<string, string>();
-                    d.Add("on_off", "");
-                    Control.Ins.SendWriteCommand(device, d);
-                }
-            };
-
-
-            btnTopMenuUp.MouseDownEventHandler = (sender, e) => {
-                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIconUp.png";
-            };
-            btnTopMenuDown.MouseDownEventHandler = (sender, e) => {
-                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIconDown.png";
-            };
-            btnTopMenuLeft.MouseDownEventHandler = (sender, e) => {
-                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIconLeft.png";
-            };
-            btnTopMenuRight.MouseDownEventHandler = (sender, e) => {
-                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIconRight.png";
-            };
-            btnOk.MouseDownEventHandler = (sender, e) => {
-                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIconOk.png";
-            };
-            btnMenu.MouseUpEventHandler = (sender, e) =>
-            {
-                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png";
-                if (DB_ResidenceData.Instance.GatewayType == 1)
-                {
-                    Dictionary<string, string> d = new Dictionary<string, string>();
-                    d.Add("menu", "");
-                    Control.Ins.SendWriteCommand(device, d);
-                }
-            };
-            btnTopMenuUp.MouseUpEventHandler = (sender, e) => {
-                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png";
-                if (DB_ResidenceData.Instance.GatewayType == 1)
-                {
-                    Dictionary<string, string> d = new Dictionary<string, string>();
-                    d.Add("up", "");
-                    Control.Ins.SendWriteCommand(device, d);
-                }
-            };
-            btnTopMenuLeft.MouseUpEventHandler = (sender, e) => {
-                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png";
-                if (DB_ResidenceData.Instance.GatewayType == 1)
-                {
-                    Dictionary<string, string> d = new Dictionary<string, string>();
-                    d.Add("left", "");
-                    Control.Ins.SendWriteCommand(device, d);
-                }
-            };
-            btnTopMenuRight.MouseUpEventHandler = (sender, e) => {
-                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png";
-                if (DB_ResidenceData.Instance.GatewayType == 1)
-                {
-                    Dictionary<string, string> d = new Dictionary<string, string>();
-                    d.Add("right", "");
-                    Control.Ins.SendWriteCommand(device, d);
-                }
-            };
-            btnTopMenuDown.MouseUpEventHandler = (sender, e) => {
-                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png";
-                if (DB_ResidenceData.Instance.GatewayType == 1)
-                {
-                    Dictionary<string, string> d = new Dictionary<string, string>();
-                    d.Add("down", "");
-                    Control.Ins.SendWriteCommand(device, d);
-                }
-            };
-            btnOk.MouseUpEventHandler = (sender, e) => {
-                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png";
-                if (DB_ResidenceData.Instance.GatewayType == 1)
-                {
-                    Dictionary<string, string> d = new Dictionary<string, string>();
-                    d.Add("ok", "");
-                    Control.Ins.SendWriteCommand(device, d);
-                }
-            };
-
-        }
-
-    }
-}
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Electrical/StbPage.cs b/HDL_ON/UI/UI2/FuntionControlView/Electrical/StbPage.cs
deleted file mode 100644
index b96c396..0000000
--- a/HDL_ON/UI/UI2/FuntionControlView/Electrical/StbPage.cs
+++ /dev/null
@@ -1,637 +0,0 @@
-锘縰sing System;
-using Shared;
-using HDL_ON.UI.CSS;
-using HDL_ON.Entity;
-using System.Collections.Generic;
-using HDL_ON.DriverLayer;
-
-namespace HDL_ON.UI
-{
-    public class StbPage : FrameLayout
-    {
-        #region 鎺т欢闆嗗悎
-        StbPage bodyView;
-        /// <summary>
-        /// 鍔熻兘鍚嶇О鎸夐挳
-        /// </summary>
-        Button btnFunctionName;
-        /// <summary>
-        /// 鎴块棿妤煎眰淇℃伅鎸夐挳
-        /// </summary>
-        Button btnFromFoorAndRoom;
-        /// <summary>
-        /// 鏀惰棌鎸夐挳
-        /// </summary>
-        Button btnCollection;
-
-        Button btnMenu;
-        FrameLayout topMenuView;
-        Button btnTopMenuUp;
-        Button btnTopMenuLeft;
-        Button btnTopMenuRight;
-        Button btnTopMenuDown;
-        Button btnOk;
-        FrameLayout channleView;
-        Button btnChlReduce;
-        Button btnChlPlus;
-        FrameLayout volView;
-        Button btnVolReduce;
-        Button btnVolPlus;
-        Button btnBack;
-        Button btnMore;
-        Button btn123;
-        Button btnMute;
-        Button btnPower;
-
-        #endregion
-
-        #region 鍖哄煙鍙橀噺
-        Function function;
-        Button btnCollection_Out;
-        Button btnFunctionName_Out;
-        Button btnFromFloor_Out;
-        /// <summary>
-        /// 鍒锋柊鏄剧ず淇℃伅
-        /// </summary>
-        Action actionRefresh;
-        #endregion
-
-        public StbPage(Function func)
-        {
-            bodyView = this;
-            function = func;
-        }
-
-
-        public void LoadPage(Button btnCollectionIcon, Button btnFunctionNameOut, Button btnFromFloorOut)
-        {
-            bodyView.BackgroundColor = CSS_Color.BackgroundColor;
-            btnCollection_Out = btnCollectionIcon;
-            btnFunctionName_Out = btnFunctionNameOut;
-            btnFromFloor_Out = btnFromFloorOut;
-
-            FrameLayout controlView = new FrameLayout()
-            {
-                Gravity = Gravity.CenterHorizontal,
-                Y = Application.GetRealHeight(88),
-                Width = Application.GetRealWidth(327),
-                Height = Application.GetRealHeight(526),
-                BackgroundImagePath = "Public/Fragmentbg.png",
-            };
-            bodyView.AddChidren(controlView);
-
-            btnFunctionName = new Button()
-            {
-                X = Application.GetRealWidth(16),
-                Y = Application.GetRealHeight(14),
-                Width = Application.GetRealWidth(270),
-                Height = Application.GetRealHeight(37),
-                TextColor = CSS_Color.FirstLevelTitleColor,
-                TextAlignment = TextAlignment.CenterLeft,
-                TextSize = CSS_FontSize.EmphasisFontSize_FirstLevel,
-                Text = function.name,
-            };
-            controlView.AddChidren(btnFunctionName);
-
-            btnFromFoorAndRoom = new Button()
-            {
-                X = Application.GetRealWidth(16),
-                Y = btnFunctionName.Bottom,
-                Width = Application.GetRealWidth(270),
-                Height = Application.GetRealHeight(21),
-                TextColor = CSS_Color.PromptingColor1,
-                TextAlignment = TextAlignment.CenterLeft,
-                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
-                Text = function.GetRoomListName()
-            };
-            controlView.AddChidren(btnFromFoorAndRoom);
-
-            btnCollection = new Button()
-            {
-                X = Application.GetRealWidth(273),
-                Y = Application.GetRealHeight(14),
-                Width = Application.GetMinRealAverage(40),
-                Height = Application.GetMinRealAverage(40),
-                SelectedImagePath = "Collection/CollectionIcon.png",
-                UnSelectedImagePath = "Collection/CollectionGrayIcon.png",
-                IsSelected = function.collect
-            };
-            controlView.AddChidren(btnCollection);
-            //2020-12-16 濡傛灉鏄垚鍛橀殣钘忔敹钘忓姛鑳�
-            //if (!DB_ResidenceData.Instance.CurrentRegion.isOtherShare)
-            //{
-            //    controlView.AddChidren(btnCollection);
-            //}
-
-
-
-            #region 杞洏鎺у埗鍖哄煙
-            topMenuView = new FrameLayout()
-            {
-                Y = Application.GetRealHeight(88),
-                Gravity = Gravity.CenterHorizontal,
-                Width = Application.GetRealWidth(199),
-                Height = Application.GetRealWidth(199),
-                BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png",
-            };
-            controlView.AddChidren(topMenuView);
-
-            btnTopMenuUp = new Button()
-            {
-                Gravity = Gravity.CenterHorizontal,
-                Width = Application.GetRealWidth(80),
-                Height = Application.GetRealWidth(50),
-            };
-            topMenuView.AddChidren(btnTopMenuUp);
-
-            btnTopMenuLeft = new Button()
-            {
-                Gravity = Gravity.CenterVertical,
-                Width = Application.GetRealWidth(50),
-                Height = Application.GetRealWidth(80),
-            };
-            topMenuView.AddChidren(btnTopMenuLeft);
-
-            btnTopMenuRight = new Button()
-            {
-                X = Application.GetRealWidth(150),
-                Gravity = Gravity.CenterVertical,
-                Width = Application.GetRealWidth(50),
-                Height = Application.GetRealWidth(80),
-            };
-            topMenuView.AddChidren(btnTopMenuRight);
-
-            btnTopMenuDown = new Button()
-            {
-                Y = Application.GetRealWidth(150),
-                Gravity = Gravity.CenterHorizontal,
-                Width = Application.GetRealWidth(80),
-                Height = Application.GetRealWidth(50),
-            };
-            topMenuView.AddChidren(btnTopMenuDown);
-
-            btnOk = new Button()
-            {
-                Gravity = Gravity.Center,
-                Width = Application.GetRealWidth(100),
-                Height = Application.GetRealWidth(100),
-            };
-            topMenuView.AddChidren(btnOk);
-
-
-
-            #endregion
-
-
-            #region 棰戦亾闊抽噺璋冭妭
-            channleView = new FrameLayout()
-            {
-                X = Application.GetRealWidth(26),
-                Y = Application.GetRealHeight(246),
-                Width = Application.GetRealWidth(44),
-                Height = Application.GetRealWidth(102),
-                BackgroundImagePath = "FunctionIcon/Electrical/TV/MenuBgIcon.png",
-            };
-            controlView.AddChidren(channleView);
-
-            btnChlPlus = new Button()
-            {
-                Gravity = Gravity.CenterHorizontal,
-                Y = Application.GetRealHeight(10),
-                Width = Application.GetRealWidth(24),
-                Height = Application.GetRealWidth(24),
-                UnSelectedImagePath = "FunctionIcon/Electrical/TV/PlusIcon.png"
-            };
-            channleView.AddChidren(btnChlPlus);
-
-            Button btnChlText;
-            btnChlText = new Button()
-            {
-                Gravity = Gravity.CenterVertical,
-                Height = Application.GetRealWidth(23),
-                TextAlignment = TextAlignment.Center,
-                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
-                TextColor = CSS_Color.FirstLevelTitleColor,
-                TextID = StringId.Chl,
-            };
-            channleView.AddChidren(btnChlText);
-
-            btnChlReduce = new Button()
-            {
-                Gravity = Gravity.CenterHorizontal,
-                Y = Application.GetRealWidth(66),
-                Width = Application.GetRealWidth(24),
-                Height = Application.GetRealWidth(24),
-                UnSelectedImagePath = "FunctionIcon/Electrical/TV/ReduceIcon.png"
-            };
-            channleView.AddChidren(btnChlReduce);
-
-            volView = new FrameLayout()
-            {
-                X = Application.GetRealWidth(257),
-                Y = Application.GetRealHeight(246),
-                Width = Application.GetRealWidth(44),
-                Height = Application.GetRealWidth(102),
-                BackgroundImagePath = "FunctionIcon/Electrical/TV/MenuBgIcon.png",
-            };
-            controlView.AddChidren(volView);
-
-            btnVolPlus = new Button()
-            {
-                Gravity = Gravity.CenterHorizontal,
-                Y = Application.GetRealHeight(10),
-                Width = Application.GetRealWidth(24),
-                Height = Application.GetRealWidth(24),
-                UnSelectedImagePath = "FunctionIcon/Electrical/TV/PlusIcon.png"
-            };
-            volView.AddChidren(btnVolPlus);
-
-            Button btnVolText;
-            btnVolText = new Button()
-            {
-                Gravity = Gravity.CenterVertical,
-                Height = Application.GetRealWidth(23),
-                TextAlignment = TextAlignment.Center,
-                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
-                TextColor = CSS_Color.FirstLevelTitleColor,
-                TextID = StringId.Vol,
-            };
-            volView.AddChidren(btnVolText);
-
-            btnVolReduce = new Button()
-            {
-                Gravity = Gravity.CenterHorizontal,
-                Y = Application.GetRealWidth(66),
-                Width = Application.GetRealWidth(24),
-                Height = Application.GetRealWidth(24),
-                UnSelectedImagePath = "FunctionIcon/Electrical/TV/ReduceIcon.png"
-            };
-            volView.AddChidren(btnVolReduce);
-
-
-
-            #endregion
-
-            #region 搴曢儴鎺у埗鍖哄煙
-            btnBack = new Button()
-            {
-                X = Application.GetRealWidth(52),
-                Y = Application.GetRealHeight(402),
-                Width = Application.GetRealWidth(32),
-                Height = Application.GetRealWidth(32),
-                UnSelectedImagePath = "FunctionIcon/Electrical/TV/TVBackIcon.png",
-            };
-            controlView.AddChidren(btnBack);
-
-            btnMenu = new Button()
-            {
-                X = Application.GetRealWidth(116),
-                Y = Application.GetRealHeight(402),
-                Width = Application.GetRealWidth(32),
-                Height = Application.GetRealWidth(32),
-                UnSelectedImagePath = "FunctionIcon/Electrical/TV/TVMenuIcon.png",
-            };
-            controlView.AddChidren(btnMenu);
-
-            btn123 = new Button()
-            {
-                X = Application.GetRealWidth(180),
-                Y = Application.GetRealHeight(402),
-                Width = Application.GetRealWidth(40),
-                Height = Application.GetRealWidth(40),
-                UnSelectedImagePath = "FunctionIcon/Electrical/TV/TV123Icon.png",
-            };
-            controlView.AddChidren(btn123);
-
-            btnMute = new Button()
-            {
-                X = Application.GetRealWidth(244),
-                Y = Application.GetRealHeight(402),
-                Width = Application.GetRealWidth(32),
-                Height = Application.GetRealWidth(32),
-                UnSelectedImagePath = "FunctionIcon/Electrical/TV/TVMuteIcon.png",
-            };
-            controlView.AddChidren(btnMute);
-
-            btnMore = new Button()
-            {
-                X = Application.GetRealWidth(116),
-                Y = Application.GetRealHeight(466),
-                Width = Application.GetRealWidth(32),
-                Height = Application.GetRealWidth(32),
-                UnSelectedImagePath = "FunctionIcon/AC/More.png",
-            };
-            controlView.AddChidren(btnMore);
-
-            btnPower = new Button()
-            {
-                X = Application.GetRealWidth(180),
-                Y = Application.GetRealHeight(466),
-                Width = Application.GetRealWidth(32),
-                Height = Application.GetRealWidth(32),
-                UnSelectedImagePath = "FunctionIcon/Electrical/TV/TVPowerIcon.png",
-            };
-            controlView.AddChidren(btnPower);
-
-            #endregion
-
-            LoadEventList();
-
-            new TopViewDiv(bodyView, Language.StringByID(StringId.STB)).LoadTopView_FunctionTop(function, actionRefresh);
-            DriverLayer.Control.Ins.SendReadCommand(function);
-
-        }
-
-
-        void ShowNumberView()
-        {
-            Dialog dialog = new Dialog();
-
-            FrameLayout dialogView = new FrameLayout()
-            {
-                AnimateSpeed = 0.3f,
-                Animate = Animate.DownToUp,
-            };
-            dialog.AddChidren(dialogView);
-
-            dialogView.MouseUpEventHandler = (sender, e) =>
-            {
-                dialog.Close();
-            };
-
-            FrameLayout numberView = new FrameLayout()
-            {
-                Y = Application.GetRealHeight(403),
-                Height = Application.GetRealHeight(264),
-                BackgroundColor = CSS_Color.MainBackgroundColor,
-            };
-            dialogView.AddChidren(numberView);
-
-            for (int i = 0; i < 10; i++)
-            {
-                Button btn = new Button()
-                {
-                    Width = Application.GetRealWidth(98),
-                    Height = Application.GetRealHeight(44),
-                    Radius = (uint)Application.GetRealWidth(8),
-                    BorderWidth = (uint)Application.GetRealWidth(1),
-                    BorderColor = CSS_Color.PromptingColor1,
-                    BackgroundColor = CSS_Color.MainBackgroundColor,
-                    SelectedBackgroundColor = CSS_Color.MainColor,
-                    TextColor = CSS_Color.FirstLevelTitleColor,
-                    SelectedTextColor = CSS_Color.MainBackgroundColor,
-                    IsBold = true,
-                    Text = i.ToString(),
-                    TextAlignment = TextAlignment.Center,
-                };
-                if (i == 1 || i == 4 || i == 7)
-                {
-                    btn.X = Application.GetRealWidth(24);
-
-                }
-                else if (i == 2 || i == 5 || i == 8)
-                {
-                    btn.X = Application.GetRealWidth(138);
-                }
-                else if (i == 3 || i == 6 || i == 9)
-                {
-                    btn.X = Application.GetRealWidth(252);
-                }
-                else
-                {
-                    btn.X = Application.GetRealWidth(138);
-                }
-                if (i == 0)
-                {
-                    btn.Y = Application.GetRealHeight(204);
-                }
-                else if (i < 4)
-                {
-                    btn.Y = Application.GetRealHeight(24);
-
-                }
-                else if (i < 7)
-                {
-                    btn.Y = Application.GetRealHeight(84);
-                }
-                else
-                {
-                    btn.Y = Application.GetRealHeight(144);
-                }
-                numberView.AddChidren(btn);
-                btn.MouseUpEventHandler = (sender, e) => {
-                    string index = (sender as Button).Text;
-                    btn.IsSelected = false;
-                    if (DB_ResidenceData.Instance.GatewayType == 1)
-                    {
-                        Dictionary<string, string> d = new Dictionary<string, string>();
-                        d.Add($"number_{index}", "");
-                        Control.Ins.SendWriteCommand(function, d);
-                    }
-                };
-                btn.MouseDownEventHandler = (sender, e) => {
-                    btn.IsSelected = true;
-                };
-            }
-
-
-
-            dialog.Show();
-        }
-
-        /// <summary>
-        /// 鍔犺浇浜嬩欢鍒楄〃
-        /// </summary>
-        void LoadEventList()
-        {
-            LoadControlEvent();
-            LoadCollectionEvent();
-
-            //鍥為��鍒锋柊淇℃伅浜嬩欢
-            actionRefresh = () => {
-                btnFunctionName.Text = btnFunctionName_Out.Text = function.name;
-                btnFromFloor_Out.Text = btnFromFoorAndRoom.Text = function.GetRoomListName();
-                function.UpdataFuncitonInfo();
-            };
-        }
-
-        /// <summary>
-        /// 鏀惰棌鍔熻兘鎸夐挳浜嬩欢
-        /// </summary>
-        void LoadCollectionEvent()
-        {
-            btnCollection.MouseUpEventHandler += (sender, e) => {
-                btnCollection.IsSelected = function.collect = btnCollection_Out.IsSelected = !btnCollection.IsSelected;
-                function.CollectFunction();
-            };
-        }
-
-        /// <summary>
-        /// 鍔犺浇鎺у埗浜嬩欢
-        /// </summary>
-        void LoadControlEvent()
-        {
-            btnMenu.MouseUpEventHandler = (sender, e) =>
-            {
-                if (DB_ResidenceData.Instance.GatewayType == 1)
-                {
-                    Dictionary<string, string> d = new Dictionary<string, string>();
-                    d.Add("av_tv", "");
-                    Control.Ins.SendWriteCommand(function, d);
-                }
-            };
-            btnChlPlus.MouseUpEventHandler = (sender, e) =>
-            {
-                if (DB_ResidenceData.Instance.GatewayType == 1)
-                {
-                    Dictionary<string, string> d = new Dictionary<string, string>();
-                    d.Add("ch+", "");
-                    Control.Ins.SendWriteCommand(function, d);
-                }
-            };
-            btnChlReduce.MouseUpEventHandler = (sender, e) =>
-            {
-                if (DB_ResidenceData.Instance.GatewayType == 1)
-                {
-                    Dictionary<string, string> d = new Dictionary<string, string>();
-                    d.Add("ch-", "");
-                    Control.Ins.SendWriteCommand(function, d);
-                }
-            };
-            btnVolPlus.MouseUpEventHandler = (sender, e) =>
-            {
-                if (DB_ResidenceData.Instance.GatewayType == 1)
-                {
-                    Dictionary<string, string> d = new Dictionary<string, string>();
-                    d.Add("volume+", "");
-                    Control.Ins.SendWriteCommand(function, d);
-                }
-            };
-            btnVolReduce.MouseUpEventHandler = (sender, e) =>
-            {
-                if (DB_ResidenceData.Instance.GatewayType == 1)
-                {
-                    Dictionary<string, string> d = new Dictionary<string, string>();
-                    d.Add("volume-", "");
-                    Control.Ins.SendWriteCommand(function, d);
-                }
-            };
-            btnBack.MouseUpEventHandler = (sender, e) =>
-            {
-                if (DB_ResidenceData.Instance.GatewayType == 1)
-                {
-                    Dictionary<string, string> d = new Dictionary<string, string>();
-                    d.Add("return", "");
-                    Control.Ins.SendWriteCommand(function, d);
-                }
-            };
-
-            btnMenu.MouseUpEventHandler = (sender, e) =>
-            {
-                if (DB_ResidenceData.Instance.GatewayType == 1)
-                {
-                    Dictionary<string, string> d = new Dictionary<string, string>();
-                    d.Add("menu", "");
-                    Control.Ins.SendWriteCommand(function, d);
-                }
-            };
-            btn123.MouseUpEventHandler = (sender, e) =>
-            {
-                ShowNumberView();
-            };
-            btnMute.MouseUpEventHandler = (sender, e) =>
-            {
-                if (DB_ResidenceData.Instance.GatewayType == 1)
-                {
-                    Dictionary<string, string> d = new Dictionary<string, string>();
-                    d.Add("mute", "");
-                    Control.Ins.SendWriteCommand(function, d);
-                }
-            };
-            btnPower.MouseUpEventHandler = (sender, e) =>
-            {
-                if (DB_ResidenceData.Instance.GatewayType == 1)
-                {
-                    Dictionary<string, string> d = new Dictionary<string, string>();
-                    d.Add("on_off", "");
-                    Control.Ins.SendWriteCommand(function, d);
-                }
-            };
-
-
-            btnTopMenuUp.MouseDownEventHandler = (sender, e) => {
-                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIconUp.png";
-            };
-            btnTopMenuDown.MouseDownEventHandler = (sender, e) => {
-                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIconDown.png";
-            };
-            btnTopMenuLeft.MouseDownEventHandler = (sender, e) => {
-                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIconLeft.png";
-            };
-            btnTopMenuRight.MouseDownEventHandler = (sender, e) => {
-                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIconRight.png";
-            };
-            btnOk.MouseDownEventHandler = (sender, e) => {
-                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIconOk.png";
-            };
-            btnMenu.MouseUpEventHandler = (sender, e) =>
-            {
-                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png";
-                if (DB_ResidenceData.Instance.GatewayType == 1)
-                {
-                    Dictionary<string, string> d = new Dictionary<string, string>();
-                    d.Add("menu", "");
-                    Control.Ins.SendWriteCommand(function, d);
-                }
-            };
-            btnTopMenuUp.MouseUpEventHandler = (sender, e) => {
-                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png";
-                if (DB_ResidenceData.Instance.GatewayType == 1)
-                {
-                    Dictionary<string, string> d = new Dictionary<string, string>();
-                    d.Add("up", "");
-                    Control.Ins.SendWriteCommand(function, d);
-                }
-            };
-            btnTopMenuLeft.MouseUpEventHandler = (sender, e) => {
-                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png";
-                if (DB_ResidenceData.Instance.GatewayType == 1)
-                {
-                    Dictionary<string, string> d = new Dictionary<string, string>();
-                    d.Add("left", "");
-                    Control.Ins.SendWriteCommand(function, d);
-                }
-            };
-            btnTopMenuRight.MouseUpEventHandler = (sender, e) => {
-                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png";
-                if (DB_ResidenceData.Instance.GatewayType == 1)
-                {
-                    Dictionary<string, string> d = new Dictionary<string, string>();
-                    d.Add("right", "");
-                    Control.Ins.SendWriteCommand(function, d);
-                }
-            };
-            btnTopMenuDown.MouseUpEventHandler = (sender, e) => {
-                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png";
-                if (DB_ResidenceData.Instance.GatewayType == 1)
-                {
-                    Dictionary<string, string> d = new Dictionary<string, string>();
-                    d.Add("down", "");
-                    Control.Ins.SendWriteCommand(function, d);
-                }
-            };
-            btnOk.MouseUpEventHandler = (sender, e) => {
-                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png";
-                if (DB_ResidenceData.Instance.GatewayType == 1)
-                {
-                    Dictionary<string, string> d = new Dictionary<string, string>();
-                    d.Add("ok", "");
-                    Control.Ins.SendWriteCommand(function, d);
-                }
-            };
-
-
-        }
-
-    }
-}
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Electrical/TVPageBLL.cs b/HDL_ON/UI/UI2/FuntionControlView/Electrical/TVPageBLL.cs
index 5fbf109..fd199d8 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Electrical/TVPageBLL.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Electrical/TVPageBLL.cs
@@ -163,24 +163,7 @@
                 }
             };
 
-            btnTopMenuUp.MouseDownEventHandler = (sender, e) => {
-                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIconUp.png";
-            };
-            btnTopMenuDown.MouseDownEventHandler = (sender, e) => {
-                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIconDown.png";
-            };
-            btnTopMenuLeft.MouseDownEventHandler = (sender, e) => {
-                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIconLeft.png";
-            };
-            btnTopMenuRight.MouseDownEventHandler = (sender, e) => {
-                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIconRight.png";
-            };
-            btnOk.MouseDownEventHandler = (sender, e) => {
-                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIconOk.png";
-            };
-
             btnTopMenuUp.MouseUpEventHandler = (sender, e) => {
-                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png";
                 if (DB_ResidenceData.Instance.GatewayType == 1)
                 {
                     Dictionary<string, string> d = new Dictionary<string, string>();
@@ -193,7 +176,6 @@
                 }
             };
             btnTopMenuLeft.MouseUpEventHandler = (sender, e) => {
-                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png";
                 if (DB_ResidenceData.Instance.GatewayType == 1)
                 {
                     Dictionary<string, string> d = new Dictionary<string, string>();
@@ -206,7 +188,6 @@
                 }
             };
             btnTopMenuRight.MouseUpEventHandler = (sender, e) => {
-                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png";
                 if (DB_ResidenceData.Instance.GatewayType == 1)
                 {
                     Dictionary<string, string> d = new Dictionary<string, string>();
@@ -219,7 +200,6 @@
                 }
             };
             btnTopMenuDown.MouseUpEventHandler = (sender, e) => {
-                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png";
                 if (DB_ResidenceData.Instance.GatewayType == 1)
                 {
                     Dictionary<string, string> d = new Dictionary<string, string>();
@@ -232,7 +212,6 @@
                 }
             };
             btnOk.MouseUpEventHandler = (sender, e) => {
-                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png";
                 if (DB_ResidenceData.Instance.GatewayType == 1)
                 {
                     Dictionary<string, string> d = new Dictionary<string, string>();
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaAirCleanerPage.cs b/HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaAirCleanerPage.cs
index d0199bb..2074184 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaAirCleanerPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaAirCleanerPage.cs
@@ -341,7 +341,7 @@
                 }
                 //璇风‘璁ゆ槸鍚﹀凡瀹為檯閲嶇疆婊よ姱骞舵寜{0}鐓ц鏄庝功瑕佹眰鎿嶄綔璁惧杩涜婊よ姱{0}瀵垮懡閲嶆柊璁℃椂
                 string msg = Language.StringByID(StringId.FilterElementResetMsg).Replace("{0}", "\r\n");
-                this.ShowMassage(ShowMsgType.Confirm, msg, () =>
+                HdlMessageLogic.Current.ShowMassage(ShowMsgType.Confirm, msg, () =>
                 {
                     //鍙戦�佷娇鑳藉懡浠�
                     this.SendEnableComand(null, "filter_reset", "true");
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaWeepRobotConsumablesMagPage.cs b/HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaWeepRobotConsumablesMagPage.cs
index 3d4d4c0..8532e4a 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaWeepRobotConsumablesMagPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaWeepRobotConsumablesMagPage.cs
@@ -104,7 +104,7 @@
                 else
                 {
                     //寮�鍚渶瑕佺‘璁�
-                    this.ShowMassage(ShowMsgType.Confirm, i_resetMsg, () =>
+                    HdlMessageLogic.Current.ShowMassage(ShowMsgType.Confirm, i_resetMsg, () =>
                     {
                         btnSwitch.IsSelected = !btnSwitch.IsSelected;
                         HdlThreadLogic.Current.RunThread(() =>
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Energy/EchartsOption_Energy.cs b/HDL_ON/UI/UI2/FuntionControlView/Energy/EchartsOption_Energy.cs
new file mode 100644
index 0000000..a6e82f6
--- /dev/null
+++ b/HDL_ON/UI/UI2/FuntionControlView/Energy/EchartsOption_Energy.cs
@@ -0,0 +1,150 @@
+锘縰sing System;
+using System.Collections.Generic;
+
+namespace HDL_ON.UI.UI2.EchartsOption_Energy
+{
+    public class EchartsOption_Energy
+    {
+        ///// <summary>
+        ///// 
+        ///// </summary>
+        public EchartTitle title  = new EchartTitle();
+        /// <summary>
+        /// 
+        /// </summary>
+        public EchartTooltip tooltip;
+        /// <summary>
+        /// 
+        /// </summary>
+        public EchartGrid grid = new EchartGrid();
+        /// <summary>
+        /// 
+        /// </summary>
+        public Echart_xAxis xAxis = new Echart_xAxis();
+        /// <summary>
+        /// 
+        /// </summary>
+        public Echart_yAxis yAxis = new Echart_yAxis();
+        /// <summary>
+        /// 
+        /// </summary>
+        public List<EchartSeriesItem> series =new List<EchartSeriesItem>();
+
+        public EchartsOption_Energy()
+        {
+            tooltip = new EchartTooltip
+            {
+                trigger = "axis",
+            };
+        }
+    }
+
+    public class EchartTitle
+    {
+        public string text;
+    }
+
+    /// <summary>
+    /// 绾挎潯灞炴��
+    /// </summary>
+    public class EchartLineStyle
+    {
+        /// <summary>
+        /// 鍧愭爣杞村埢搴︾嚎瀹�
+        /// type   |   string
+        /// 鍙�夛細
+        /// 'solid'
+        /// 'dashed'
+        /// 'dotted'
+        /// </summary>
+        public string type = "solid";
+        /// <summary>
+        /// 
+        /// </summary>
+        public int width = 1;
+        /// <summary>
+        /// 鍒诲害绾跨殑棰滆壊
+        /// </summary>
+        public string color = "#333";
+    }
+
+
+    public class EchartTooltip
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        public string trigger ="axis";
+    }
+
+    public class EchartGrid
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        public string left = "3%";
+        /// <summary>
+        /// 
+        /// </summary>
+        public string right = "4%";
+        /// <summary>
+        /// 
+        /// </summary>
+        public string bottom = "3%";
+        /// <summary>
+        /// 
+        /// </summary>
+        public bool containLabel = true;
+    }
+
+    /// <summary>
+    /// 鍧愭爣杞村睘鎬�
+    /// </summary>
+    public class Echart_xAxis
+    {
+        public string type = "category";
+        public List<string> data = new List<string>();
+        public int offset = 5;
+        public bool boundaryGap = false;
+    }
+    /// <summary>
+    /// 鍧愭爣杞村睘鎬�
+    /// </summary>
+    public class Echart_yAxis
+    {
+        public string type = "value";
+    }
+
+    public class EchartSeriesItem
+    {
+        /// <summary>
+        /// 瀹㈠巺
+        /// </summary>
+        public string name = "";
+        /// <summary>
+        /// 
+        /// </summary>
+        public string type = "line";
+        /// <summary>
+        /// 
+        /// </summary>
+        public bool smooth = true;
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public List<int> data;
+
+        /// <summary>
+        /// none 鍘绘帀鎷愮偣
+        /// </summary>
+        public string symbol = "none";
+        /// <summary>
+        /// 绾挎潯鏍峰紡
+        /// </summary>
+        public EchartLineStyle lineStyle;
+
+
+    }
+
+}
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Energy/EnergyMainPage.cs b/HDL_ON/UI/UI2/FuntionControlView/Energy/EnergyMainPage.cs
index a728cbc..e985552 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Energy/EnergyMainPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Energy/EnergyMainPage.cs
@@ -1,89 +1,25 @@
 锘縰sing System;
 using System.Collections.Generic;
 using HDL_ON.DAL.Server;
-using HDL_ON.DriverLayer;
 using HDL_ON.Entity;
 using HDL_ON.UI.CSS;
+using HDL_ON.UI.UI2.EchartsOption_Energy;
 using Shared;
 namespace HDL_ON.UI
 {
     public class EnergyMainPage : FrameLayout
     {
-        static EnergyMainPage bodyView;
-
-        /// <summary>
-        /// 椤堕儴鍖哄煙
-        /// </summary>
-        FrameLayout generalTableView;
-
-        /// <summary>
-        /// 瀹炴椂鍔熻��
-        /// </summary>
-        Button btnRealTimeData;
-        /// <summary>
-        /// 瀹炴椂鍔熻�楀崟浣�
-        /// </summary>
-        Button btnTotalValueUint;
-        /// <summary>
-        /// 鎬诲姛鑰�
-        /// </summary>
-        TextButton btnTotalValue;
-        /// <summary>
-        /// 鎬诲姛鑰�-楗煎浘
-        /// </summary>
-        MyEchartsViewOn myEchartsView_Pie;
-        /// <summary>
-        /// 鍘嗗彶鏁版嵁鍖哄煙
-        /// </summary>
-        FrameLayout diagramView;
-        /// <summary>
-        /// 鏇茬嚎鍥炬暟鎹畇tring
-        /// </summary>
-        EchartsOption_BrokenLine brokenLine;
-        /// <summary>
-        /// 鏇茬嚎鍥句笅鎷夋寜閽�
-        /// </summary>
-        Button btnDrodDown;
-
-
-        /// <summary>
-        /// 鎻掓煡璇㈢殑鑳芥簮鍒楄〃
-        /// </summary>
-        List<Function> queryList = new List<Function>();
-        /// <summary>
-        /// 鏌ヨ鏉′欢
-        /// hour銆亀eek銆乵onth
-        /// </summary>
-        string curQueryType = "hour";
-
-
-        /// <summary>
-        /// 鑳芥簮鍒楄〃鍖哄煙
-        /// </summary>
-        FrameLayout energyListView;
-        /// <summary>
-        /// 鍘嗗彶鏁版嵁鍥捐〃
-        /// </summary>
-        MyEchartsViewOn myEchartsView_Line;
-        /// <summary>
-        /// 鏇茬嚎鍥炬槸鍚﹀睍寮�
-        /// </summary>
-        bool isUnfoldOrStow = false;
-
-        List<Function> energyList = new List<Function>();
+        FrameLayout bodyView;
 
         List<uint> colorList = new List<uint>(){0xFF80AEFF, 0xFFFFD154, 0xFFFF9D54, 0xFFFE6A6A, 0xFFB183C3, 0xFFADE764,
                                         0xFFD7504B, 0xFFC6E579, 0xFFF4E001, 0xFFF0805A, 0xFF26C0C0};
         List<string> colorList2 = new List<string>() {
                                         "#80AEFF", "#FFD154", "#FF9D54", "#FE6A6A", "#B183C3", "#ADE764",
                                         "#D7504B", "#C6E579", "#F4E001", "#F0805A", "#26C0C0"};
-        /// <summary>
-        /// 涓婚〉
-        /// </summary>
+
         public EnergyMainPage()
         {
             bodyView = this;
-            energyList = FunctionList.List.GetEnergyList(); 
         }
 
         /// <summary>
@@ -102,18 +38,18 @@
             bodyView.AddChidren(contentView);
 
             #region 椤堕儴view
-            generalTableView = new FrameLayout()
+            var generalTableView = new FrameLayout()
             {
                 Gravity = Gravity.CenterHorizontal,
-                Y = Application.GetRealWidth(16),
+                Y = Application.GetRealHeight(16),
                 Width = Application.GetRealWidth(343),
-                Height = Application.GetRealWidth(148),//419//148
+                Height = Application.GetRealWidth(148),
                 Radius = (uint)Application.GetRealWidth(5),
                 BackgroundColor = CSS_Color.MainBackgroundColor,
             };
             contentView.AddChidren(generalTableView);
 
-            btnTotalValue = new TextButton()
+            TextButton btnTotalValue = new TextButton()
             {
                 X = Application.GetRealWidth(18),
                 Y = Application.GetRealWidth(24),
@@ -127,7 +63,9 @@
             };
             generalTableView.AddChidren(btnTotalValue);
 
-            btnTotalValueUint = new Button()
+            btnTotalValue.Width = btnTotalValue.GetTextWidth();
+
+            var btnTotalValueUint = new Button()
             {
                 X = btnTotalValue.Right,
                 Y = Application.GetRealWidth(24),
@@ -141,7 +79,7 @@
             };
             generalTableView.AddChidren(btnTotalValueUint);
 
-            btnRealTimeData = new Button()
+            var btnRealTimeData = new Button()
             {
                 X = Application.GetRealWidth(18),
                 Y = btnTotalValue.Bottom,
@@ -153,7 +91,7 @@
                 TextID = StringId.RealTimePowerConsumption,
             };
             generalTableView.AddChidren(btnRealTimeData);
-
+            btnRealTimeData.Text = Language.StringByID(StringId.RealTimePowerConsumption).Replace("{0}", "0");
 
             var echartsView = new FrameLayout()
             {
@@ -163,46 +101,42 @@
                 //Y = Application.GetRealWidth(16),
             };
             generalTableView.AddChidren(echartsView);
-            myEchartsView_Pie = new MyEchartsViewOn()
+            MyEchartsViewOn myEchartsView = new MyEchartsViewOn()
             {
                 Width = Application.GetRealWidth(118),
                 Height = Application.GetRealWidth(118),
             };
-            echartsView.AddChidren(myEchartsView_Pie);
 
+            echartsView.AddChidren(myEchartsView);
             Dictionary<string, string> list = new Dictionary<string, string>();
-            foreach(var ene in energyList)
-            {
-                double tt = 0;
-                double.TryParse(ene.GetAttrState(FunctionAttributeKey.TotalElectricity), out tt);
-                tt *= 100;//涔樹互100锛屽皬浜�1鏃犳硶鍔犺浇echart
-                list.Add(ene.name, tt.ToString());
-            }
-            myEchartsView_Pie.ShowWithOption(new EchartsOption_Pie().InitDateJson(list));
+            list.Add("鐢靛啺绠�", "12");
+            list.Add("鐢甸鎵�", "2");
+            list.Add("绌鸿皟", "9");
+            list.Add("娲楄。鏈�", "3");
+            list.Add("鐢佃剳", "33");
+            var echartsPie = new EchartsOption_Pie();
+            var echartRootJson = echartsPie.InitDateJson(list);
+            //var echartRootJsonString = Newtonsoft.Json.JsonConvert.SerializeObject(echartRootJson);
+            myEchartsView.ShowWithOption(echartRootJson);
 
-            btnDrodDown = new Button()
+
+            var btnDrodDown = new Button()
             {
                 Y = Application.GetRealWidth(118),
                 Width = Application.GetRealWidth(343),
                 Height = Application.GetRealWidth(30),
                 UnSelectedImagePath = "FunctionIcon/Energy/EnergyDrodDownIcon.png",
-                SelectedImagePath = "FunctionIcon/Energy/EnergyDrodUpIcon.png",
             };
-            initDiagramView();
             generalTableView.AddChidren(btnDrodDown);
-            btnDrodDown.MouseUpEventHandler = (sender, e) => {
-                isUnfoldOrStow = btnDrodDown.IsSelected = !btnDrodDown.IsSelected;
-                showDiagramView();
-            };
 
-            UpdataValue();
             #endregion
 
 
-            energyListView = new FrameLayout()
+            var energyList = FunctionList.List.GetEnergyList();
+            var energyListView = new FrameLayout()
             {
                 Y = generalTableView.Bottom + Application.GetRealWidth(8),
-                Height = Application.GetRealWidth(116 * energyList.Count + 50),
+                Height = Application.GetRealWidth(116 * energyList.Count),
             };
             contentView.AddChidren(energyListView);
             int index = 0;
@@ -210,58 +144,25 @@
             {
                 EnergyRow(energy, energyListView, index);
                 index++;
-                new System.Threading.Thread(() =>
-                {
-                    Control.Ins.SendReadCommand(energy);
-                })
-                { IsBackground = true }.Start();
             }
-
-
         }
+        FrameLayout diagramView;
+        List<Function> queryList = new List<Function>();
+        string curQueryType = "hour";
 
-        /// <summary>
-        /// 
-        /// </summary>
-        void showDiagramView()
+        void d1(FrameLayout contentView)
         {
-            if (isUnfoldOrStow)//灞曞紑
-            {
-                generalTableView.Height = Application.GetRealWidth(419);
-                btnDrodDown.Y = Application.GetRealWidth(389);
-                btnDrodDown.IsSelected = true;
-            }
-            else
-            {
-                generalTableView.Height = Application.GetRealWidth(148);
-                btnDrodDown.Y = Application.GetRealWidth(118);
-                btnDrodDown.IsSelected = false;
-            }
-
-            energyListView.Y = generalTableView.Bottom + Application.GetRealWidth(8);
-        }
-
-        /// <summary>
-        /// 鍔犺浇鏇茬嚎鍥�
-        /// </summary>
-        /// <param name="contentView"></param>
-        void initDiagramView()
-        {
-            brokenLine = new EchartsOption_BrokenLine();
-
-
             diagramView = new FrameLayout()
             {
-                Y = Application.GetRealWidth(136),
                 Gravity = Gravity.CenterHorizontal,
                 Width = Application.GetRealWidth(343),
-                Height = Application.GetRealWidth(281),
+                Height = Application.GetRealWidth(420),
                 BackgroundColor = CSS_Color.MainBackgroundColor,
                 Radius = (uint)Application.GetRealWidth(12),
                 BorderColor = 0x00000000,
                 BorderWidth = 0,
             };
-            generalTableView.AddChidren(diagramView);
+            contentView.AddChidren(diagramView);
 
             #region 閫夋嫨鏁版嵁鏃ユ湡鑼冨洿
             var showDataTypeView = new FrameLayout()
@@ -318,38 +219,26 @@
                 btnShowHistroyData_Month.IsSelected = false;
                 btnShowHistroyData_Week.IsSelected = false;
                 curQueryType = "hour";
-                brokenLine.YvalueText = "";
-                foreach (var enery in queryList)
-                {
-                    LoadMothed_GetHistoryData(enery,false);
-                }
+                d2();
             };
 
-            btnShowHistroyData_Week.MouseUpEventHandler = (sender, e) =>
-            {
-                showDataTypeView.BackgroundImagePath = "FunctionIcon/EnvironmentalScience/SensorHistoryBg2.png";
-                btnShowHistroyData_Day.IsSelected = false;
-                btnShowHistroyData_Month.IsSelected = false;
-                btnShowHistroyData_Week.IsSelected = true;
-                curQueryType = "week";
-                brokenLine.YvalueText = "";
-                foreach (var enery in queryList)
-                {
-                    LoadMothed_GetHistoryData(enery, false);
-                }
-            };
             btnShowHistroyData_Month.MouseUpEventHandler = (sender, e) =>
             {
                 showDataTypeView.BackgroundImagePath = "FunctionIcon/EnvironmentalScience/SensorHistoryBg3.png";
                 btnShowHistroyData_Day.IsSelected = false;
                 btnShowHistroyData_Month.IsSelected = true;
                 btnShowHistroyData_Week.IsSelected = false;
+                curQueryType = "week";
+                d2();
+            };
+            btnShowHistroyData_Week.MouseUpEventHandler = (sender, e) =>
+            {
+                showDataTypeView.BackgroundImagePath = "FunctionIcon/EnvironmentalScience/SensorHistoryBg2.png";
+                btnShowHistroyData_Day.IsSelected = false;
+                btnShowHistroyData_Month.IsSelected = false;
+                btnShowHistroyData_Week.IsSelected = true;
                 curQueryType = "month";
-                brokenLine.YvalueText = "";
-                foreach (var enery in queryList)
-                {
-                    LoadMothed_GetHistoryData(enery, false);
-                }
+                d2();
             };
 
             #endregion
@@ -357,107 +246,117 @@
             var historyDataView = new FrameLayout()
             {
                 Gravity = Gravity.CenterHorizontal,
-                Y = Application.GetRealWidth(52),
-                Height = Application.GetRealWidth(190),
+                Y = Application.GetRealHeight(52),
+                Width = Application.GetRealWidth(343 - 32),
+                Height = Application.GetRealHeight(270),
             };
             diagramView.AddChidren(historyDataView);
 
-            myEchartsView_Line = new MyEchartsViewOn()
-            {
-                Y = Application.GetRealWidth(10),
-                Height = Application.GetRealWidth(180),
-            };
-            historyDataView.AddChidren(myEchartsView_Line);
+            var myEchartsView = new MyEchartsViewOn();
+
+            historyDataView.AddChidren(myEchartsView);
+
         }
 
-        /// <summary>
-        /// 璇诲彇鍘嗗彶鏁版嵁
-        /// </summary>
-        void LoadMothed_GetHistoryData(Function sr,bool isDel)
+        void d2()
         {
-            if(isDel)//鍒犻櫎鏁版嵁鐜板疄
+            int index = 0;
+            var echartRootJson = new EchartsOption_Energy();
+            var seriesList = new List<EchartSeriesItem>();
+            foreach (var function in queryList)
             {
-                brokenLine.YvalueText = "";
-                foreach (var ene in queryList)
-                {
-                    brokenLine.YvalueText += ene.GetAttrState("ydata");
-                }
-                var opString = brokenLine.InitOption();
-
-                Application.RunOnMainThread(() =>
-                {
-                    myEchartsView_Line.ShowWithOption(opString);
-                });
-
-                return;
+                var seriesItem = d3(function, index, echartRootJson.xAxis.data);
+                seriesList.Add(seriesItem);
             }
-
+        }
+        /// <summary>
+        /// 鏌ヨ鍒楄〃
+        /// </summary>
+        /// <summary>
+        /// 璇诲彇浼犳劅鍣ㄥ巻鍙叉暟鎹�
+        /// </summary>
+        EchartSeriesItem d3(Function function, int index, List<string> xAxisData)
+        {
+            EchartSeriesItem sItem = null;
+            List<string> data = new List<string>();
             var loadPage = new Loading()
             {
                 LodingBackgroundColor = 0x88888888,
             };
             diagramView.AddChidren(loadPage);
 
-            new System.Threading.Thread(() =>
+            try
             {
-                try
+                Application.RunOnMainThread(() =>
                 {
-                    Application.RunOnMainThread(() =>
-                    {
-                        loadPage.Start(Language.StringByID(StringId.PleaseWait));
-                    });
+                    loadPage.Start(Language.StringByID(StringId.PleaseWait));
+                });
+                var sensorType = function.spk.Split(".")[1];
+                var revertObj = new HttpServerRequest().GetSensorHistory(curQueryType, function.deviceId, sensorType);
 
-                    var sensorType = sr.spk.Split(".")[1];
-                    var revertObj = new HttpServerRequest().GetSensorHistory(curQueryType, sr.deviceId, "total_electricity");
-                    if (revertObj != null)
+                if (revertObj != null)
+                {
+                    if (revertObj.Code == StateCode.SUCCESS)
                     {
-                        if (revertObj.Code == StateCode.SUCCESS)
+                        var revertData = Newtonsoft.Json.JsonConvert.DeserializeObject<List<EnvironmentalSensorHistor>>(revertObj.Data.ToString());
+
+                         sItem = new EchartSeriesItem
                         {
-                            var revertData = Newtonsoft.Json.JsonConvert.DeserializeObject<List<EnvironmentalSensorHistor>>(revertObj.Data.ToString());
+                            data = new List<int>(),
+                            lineStyle = new EchartLineStyle()
+                            {
+                                color = colorList2[index],
+#if __IOS__
+                                width = 5,
+#elif __ANDROID__
+                                        width = 2,
+#endif
+                            },
+                        };
 
-                            List<string> vs = new List<string>();
-                            if (brokenLine.YvalueText == "")
+                        try
+                        {
+                            foreach (var d in revertData)
                             {
-                                foreach (var data in revertData)
+                                if (xAxisData.Count == 0)
                                 {
-                                    vs.Add(data.fieldName);
+                                    data.Add(d.fieldName);
                                 }
-                                brokenLine.InitXdataText(vs);
+                                sItem.data.Add(Convert.ToInt32(d.fieldValue));
                             }
-                            if (sr.GetAttribute("ydata") == null)
-                            {
-                                sr.attributes.Add(new FunctionAttributes() { key = "ydata" });
-                            }
-                            sr.SetAttrState("ydata", brokenLine.InitYdataText(sr.name, revertData, sr.GetAttrState("color")) + ",");
+                            xAxisData.AddRange(data);
+                        }
+                        catch (Exception ex)
+                        {
+                            MainPage.Log($"revertData:{ex.Message}");
                         }
                     }
-                    brokenLine.yTitle = Language.StringByID(StringId.EnergyConsumption) + "(kW)";
-                    brokenLine.xTitle = Language.StringByID(StringId.timeMode);
-                    if(curQueryType != "hour")
+                    else
                     {
-                        brokenLine.xTitle = Language.StringByID(StringId.Date);
+                        Application.RunOnMainThread(() =>
+                        {
+                            IMessageCommon.Current.ShowErrorInfoAlter("", true, 2, Language.StringByID(StringId.GetSensorHistoryFailed), false);
+                        });
                     }
-                    var opString = brokenLine.InitOption();
+                }
+            }
+            catch (Exception ex)
+            {
+                MainPage.Log($"sensor history error : {ex.Message}");
+            }
+            finally
+            {
+                Application.RunOnMainThread(() =>
+                {
+                    loadPage.Hide();
+                });
+            }
+            return sItem;
 
-                    Application.RunOnMainThread(() =>
-                    {
-                        myEchartsView_Line.ShowWithOption(opString);
-                    });
-                }
-                catch (Exception ex)
-                {
-                    MainPage.Log($"sensor history error : {ex.Message}");
-                }
-                finally
-                {
-                    Application.RunOnMainThread(() =>
-                    {
-                        loadPage.Hide();
-                    });
-                }
-            })
-            { IsBackground = true }.Start();
+            //var echartRootJsonString = Newtonsoft.Json.JsonConvert.SerializeObject(echartRootJson);
+            //myEchartsView.ShowWithOptionJsonString(echartRootJsonString);
         }
+
 
         /// <summary>
         /// 
@@ -471,128 +370,16 @@
             };
             view.AddChidren(btnLine);
 
-            //瀹氫箟浠h〃鑹�
-            energy.attributes.Add(new FunctionAttributes() { key = "color", state = colorList2[index] });
-
-            var row = new EnergyRow(energy, colorList[index]);
-
-            row.SetHistory_Action = (isAdd) =>
+            var row = new FrameLayout()
             {
-                if (isAdd)
-                {
-                    if(!isUnfoldOrStow)//濡傛灉鏇茬嚎鍥炬病鏈夊姞杞藉嚭鏉ワ紝鍒欒嚜鍔ㄥ姞杞藉嚭鏉�
-                    {
-                        isUnfoldOrStow = true;
-                        showDiagramView();
-                    }
-                    queryList.Add(row.function);
-                    LoadMothed_GetHistoryData(row.function, false);
-                }
-                else
-                {
-                    queryList.Remove(row.function);
-                    LoadMothed_GetHistoryData(row.function, true);
-                    if (queryList.Count == 0)//濡傛灉鏌ヨ鍒楄〃涓�0锛岃嚜鍔ㄦ敹璧锋洸绾垮浘
-                    {
-                        isUnfoldOrStow = false;
-                        showDiagramView();
-                    }
-                }
+                Y = btnLine.Bottom,
+                Gravity = Gravity.CenterHorizontal,
+                Width = Application.GetRealWidth(343),
+                Height = Application.GetRealWidth(100),
+                Radius = (uint)Application.GetRealWidth(12),
+                BackgroundColor = CSS_Color.MainBackgroundColor,
             };
-
-
-            row.Y = btnLine.Bottom;
             view.AddChidren(row);
-            listButton_value.Add(row.btnValue);
-        }
-
-
-        public List<Button> listButton_value = new List<Button>();
-
-        /// <summary>
-        /// 鏇存柊鍔熻兘鐘舵��
-        /// </summary>
-        public static void UpdataStatus(Function updataTemp)
-        {
-            Application.RunOnMainThread(() =>
-            {
-                try
-                {
-                    if (bodyView == null)
-                        return;
-                    foreach (var btn in bodyView.listButton_value)
-                    {
-                        if (btn.Tag.ToString() == updataTemp.sid)
-                        {
-                            var newValue = updataTemp.GetAttrState(FunctionAttributeKey.Power);
-                            //if (newValue != btn.Text)
-                            {
-                                btn.Text = newValue;
-                                UpdataValue();
-                            }
-                        }
-                    }
-                }
-                catch (Exception ex)
-                {
-                    MainPage.Log($"{bodyView.GetType().Name } UpdataStates error : {ex.Message}");
-                }
-            });
-        }
-
-        /// <summary>
-        /// 鏇存柊鏁版嵁
-        /// </summary>
-        static void UpdataValue()
-        {
-            double totalValue = 0;
-            double realtimeValue = 0;
-            Dictionary<string, string> list = new Dictionary<string, string>();//楗煎浘鏁版嵁
-            foreach (var ene in bodyView.energyList)
-            {
-                double power = 0;
-                double.TryParse(ene.GetAttrState(FunctionAttributeKey.TotalElectricity), out power);
-                totalValue += power;
-
-                int realTimePower = 0;
-                int.TryParse(ene.GetAttrState(FunctionAttributeKey.Power), out realTimePower);
-                realtimeValue += realTimePower;
-
-                #region 楗煎浘鏁版嵁
-                double tt = 0;
-                double.TryParse(ene.GetAttrState(FunctionAttributeKey.TotalElectricity), out tt);
-                tt *= 100;//涔樹互100锛屽皬浜�1鏃犳硶鍔犺浇echart
-                list.Add(ene.name, tt.ToString());
-                #endregion
-            }
-            bodyView.btnTotalValue.Text = totalValue.ToString();
-            realtimeValue /= 1000;
-            bodyView.btnRealTimeData.Text = Language.StringByID(StringId.RealTimePowerConsumption).Replace("{0}", realtimeValue.ToString());
-            ///鍔ㄦ�佽幏鍙栨枃鏈搴�
-            bodyView.btnTotalValue.Width = bodyView.btnTotalValue.GetTextWidth() + Application.GetRealWidth(5);
-            bodyView.btnTotalValueUint.X = bodyView.btnTotalValue.Right;
-            //鍒锋柊楗煎浘
-            bodyView.myEchartsView_Pie.ShowWithOption(new EchartsOption_Pie().InitDateJson(list));
-
-        }
-    }
-
-
-    public class EnergyRow : FrameLayout
-    {
-        public Button btnValue;
-        Button btnShowData;
-        public Function function;
-        public Action<bool> SetHistory_Action;
-        public EnergyRow(Function energy, uint color)
-        {
-            function = energy;
-            Gravity = Gravity.CenterHorizontal;
-            Width = Application.GetRealWidth(343);
-            Height = Application.GetRealWidth(100);
-            Radius = (uint)Application.GetRealWidth(12);
-            BackgroundColor = CSS_Color.MainBackgroundColor;
-            Tag = energy.sid;
 
             var btnColorTip = new Button()
             {
@@ -600,13 +387,13 @@
                 Y = Application.GetRealWidth(16),
                 Width = Application.GetRealWidth(12),
                 Height = Application.GetRealWidth(12),
-                BackgroundColor = color
+                BackgroundColor = colorList[index],
             };
-            AddChidren(btnColorTip);
+            row.AddChidren(btnColorTip);
 
             var btnName = new Button()
             {
-                X = Application.GetRealWidth(28),
+                X = Application.GetRealWidth(8 + 10 + 32),
                 Y = Application.GetRealHeight(10),
                 Width = Application.GetRealWidth(200),
                 Height = Application.GetRealHeight(24),
@@ -615,11 +402,11 @@
                 TextColor = CSS_Color.FirstLevelTitleColor,
                 TextSize = CSS_FontSize.TextFontSize,
             };
-            AddChidren(btnName);
+            row.AddChidren(btnName);
 
             var btnFromFloor = new Button()
             {
-                X = Application.GetRealWidth(28),
+                X = Application.GetRealWidth(8 + 10 + 32),
                 Y = Application.GetRealHeight(10 + 24),
                 Width = Application.GetRealWidth(200),
                 Height = Application.GetRealHeight(18),
@@ -628,9 +415,9 @@
                 TextColor = CSS_Color.PromptingColor1,
                 TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
             };
-            AddChidren(btnFromFloor);
+            row.AddChidren(btnFromFloor);
 
-            btnValue = new Button()
+            var btnValue = new Button()
             {
                 X = Application.GetRealWidth(28),
                 Y = Application.GetRealWidth(57),
@@ -639,11 +426,9 @@
                 TextAlignment = TextAlignment.CenterLeft,
                 TextSize = CSS_FontSize.HeadlineFontSize,
                 TextColor = CSS_Color.FirstLevelTitleColor,
-                Text = energy.GetAttrState(FunctionAttributeKey.Power),
-                Tag = energy.sid,
-                IsBold = true,
+                Text = "---"
             };
-            AddChidren(btnValue);
+            row.AddChidren(btnValue);
 
 
             var btnSetting = new Button()
@@ -654,9 +439,9 @@
                 Height = Application.GetMinRealAverage(32),
                 UnSelectedImagePath = "Public/FuncInfoSetIcon.png",
             };
-            AddChidren(btnSetting);
+            row.AddChidren(btnSetting);
 
-            var btnSeltSensorValue = new Button()
+            Button btnSeltSensorValue = new Button()
             {
                 X = Application.GetRealWidth(16),
                 Y = Application.GetRealWidth(47),
@@ -667,8 +452,9 @@
                 IsBold = true,
                 TextSize = CSS_FontSize.HeadlineFontSize,
             };
-            AddChidren(btnSeltSensorValue);
+            row.AddChidren(btnSeltSensorValue);
 
+            Button btnShowData;
             btnShowData = new Button()
             {
                 X = Application.GetRealWidth(291),
@@ -677,16 +463,15 @@
                 Height = Application.GetMinRealAverage(32),
                 UnSelectedImagePath = "FunctionIcon/EnvironmentalScience/DiagramIcon.png",
                 SelectedImagePath = "FunctionIcon/EnvironmentalScience/DiagramIconOn.png",
-                IsSelected = false,
+                IsSelected = true,
             };
-            AddChidren(btnShowData);
+            row.AddChidren(btnShowData);
 
             btnSetting.MouseUpEventHandler = (sender, e) =>
             {
                 Action backAction = () =>
                 {
                     btnName.Text = energy.name;
-                    btnFromFloor.Text = energy.GetRoomListName();
                 };
                 var infoView = new FunctionBaseInfoSetPage(energy, backAction);
                 MainPage.BasePageView.AddChidren(infoView);
@@ -694,11 +479,6 @@
                 MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
             };
 
-            btnShowData.MouseUpEventHandler = (sender, e) => {
-                btnShowData.IsSelected = !btnShowData.IsSelected;
-                SetHistory_Action(btnShowData.IsSelected);
-            };
         }
-
     }
 }
\ No newline at end of file
diff --git a/HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EchartsOption_BrokenLine.cs b/HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EchartsOption_BrokenLine.cs
index 050adba..79ba10d 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EchartsOption_BrokenLine.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EchartsOption_BrokenLine.cs
@@ -4,140 +4,71 @@
 namespace HDL_ON.UI
 {
     /// <summary>
-    /// 鏇茬嚎鍥�
+    /// 楗煎浘
     /// </summary>
     public class EchartsOption_BrokenLine
     {
         /// <summary>
-        /// x杞存暟鎹�
-        /// </summary>
-        public string XvalueText = "";
-
-        /// <summary>
-        /// Y杞存暟鎹�
-        /// </summary>
-        public string YvalueText = "";
-        /// <summary>
-        /// x杞存爣棰�
-        /// </summary>
-        public string xTitle = "";
-        /// <summary>
-        /// y杞存爣棰�
-        /// </summary>
-        public string yTitle = "";
-
-
-        /// <summary>
-        /// 缁勮Option鏁版嵁
-        /// </summary>
-        /// <returns></returns>
-        public string InitOption()
-        {
-            //缁勮Value
-            var newstring = optionString.Replace("{0}", XvalueText);
-            newstring = newstring.Replace("{1}", YvalueText);
-            newstring = newstring.Replace("{10}", xTitle);
-            newstring = newstring.Replace("{20}", yTitle);
-            newstring = newstring.Replace(",,",",");
-            return newstring;
-        }
-
-        /// <summary>
-        /// 缁勮x杞存枃鏈�
+        /// 
         /// </summary>
         /// <param name="xData"></param>
-        public void InitXdataText(List<string> xData)
-        {
-            XvalueText = "";
-            foreach (var data in xData)
-            {
-                XvalueText += "'" + data + "',";
-            }
-        }
-
-        /// <summary>
-        /// 缁勮y杞存枃鏈�
-        /// </summary>
-        /// <param name="yData"></param>
-        public string InitYdataText(string name, List<EnvironmentalSensorHistor> yData, string color)
+        public void InitXdata (List<string> xData)
         {
             //缁勮Value
             string valueText = string.Empty;
-            var YvalueTextItem = @"{name:'{0}',
+            foreach (var data in xData)
+            {
+                valueText += "'" + data + "',";
+            }
+            optionString = optionString.Replace("{0}", valueText);
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="yData"></param>
+        public string GetYdata(string name, List<EnvironmentalSensorHistor> yData, string color)
+        {
+            //缁勮Value
+            string valueText = string.Empty;
+            var yAxisValue = @"{name:'{0}',
                             data:[{1}],
                             type:'line',
                             smooth:0.6,
                             symbol:'none',
                             color:'{2}'}
             ";
-            YvalueTextItem = YvalueTextItem.Replace("{0}", name);
+            yAxisValue = yAxisValue.Replace("{0}", name);
 
             foreach (var data in yData)
             {
                 valueText += "'" + data.fieldValue + "',";
             }
-            YvalueTextItem = YvalueTextItem.Replace("{1}", valueText);
-            YvalueTextItem = YvalueTextItem.Replace("{2}", color);
+            yAxisValue = yAxisValue.Replace("{1}", valueText);
+            yAxisValue = yAxisValue.Replace("{2}", color);
+            return yAxisValue;
+        }
 
-            if (YvalueText == "")
-            {
-                YvalueText = YvalueTextItem;
-            }
-            else
-            {
-                YvalueText += "," + YvalueTextItem;
-            }
-
-            return YvalueTextItem;
+        public void InitYdataString(string yData)
+        {
+            //缁勮Value
+            optionString = optionString.Replace("{1}", yData);
         }
 
 
-#if __IOS__
-        public string optionString = @"{
+        public string optionString =  @"{
                  tooltip: {
                     trigger: 'axis'
                     },
                     grid: {
-                         top: '10%',
-                        left: '10%',
-                        right: '10%',
-                        bottom: '10%',
-                    },
-                    xAxis: {
-                        name: '{10}',
-                        type: 'category',
-                        boundaryGap: false,
-                        data: [{0}],
-                        axisLabel : {
-                            fontSize:30,
-                        },
-                    },
-                    yAxis: {
-                        name: '{20}',
-                        type: 'value',
-                        axisLabel : {
-                            fontSize:30,
-                        },
-                    },
-                    series: [  
-                        {1}
-                    ]
-            }";
-#else
- public string optionString = @"{
-                 tooltip: {
-                    trigger: 'axis'
-                    },
-                    grid: {
-                         top: '10%',
-                        left: '10%',
-                        right: '10%',
-                        bottom: '15%',
+                        left: '3%',
+                        right: '4%',
+                        bottom: '3%',
                     },
                     xAxis: {
                         type: 'category',
                         boundaryGap: false,
-                        data: [{0}],
+                        data: [{0}]
                     },
                     yAxis: {
                         type: 'value',
@@ -146,17 +77,18 @@
                         {1}
                     ]
             }";
-#endif
 
         /// <summary>
         /// 棰滆壊鍒楄〃
         /// </summary>
         /// <returns></returns>
-        public List<string> ColorList()
+        public List<string> ColorList ()
         {
             var list = new List<string>();
             return list;
         }
     }
 
+
+
 }
\ No newline at end of file
diff --git a/HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EnvironmentalPage.cs b/HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EnvironmentalPage.cs
index 86d0ace..b5baaf1 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EnvironmentalPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EnvironmentalPage.cs
@@ -153,7 +153,7 @@
                 TextColor = CSS_Color.TextualColor,
                 TextAlignment = TextAlignment.CenterLeft,
                 TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
-                Text = $"{MainPage.cityInfo.highestTemperature}掳C",
+                Text = "--掳C",
             };
             topWeatherView.AddChidren(btnTempUpperLimitText);
 
@@ -176,7 +176,7 @@
                 TextColor = CSS_Color.TextualColor,
                 TextAlignment = TextAlignment.CenterLeft,
                 TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
-                Text = $"{MainPage.cityInfo.lowestTemperature}掳C",
+                Text = "--掳C",
             };
             topWeatherView.AddChidren(btnTempLowerLimitText);
 
@@ -706,52 +706,46 @@
         {
             Application.RunOnMainThread(() =>
             {
-                try
+                if (bodyView != null)
                 {
-                    if (bodyView != null)
+                    for (int i = 0; i < bodyView.sensorListView.ChildrenCount; i++)
                     {
-                        for (int i = 0; i < bodyView.sensorListView.ChildrenCount; i++)
+                        var sensorTag = updateTemp.sid;
+                        var view = bodyView.sensorListView.GetChildren(i);
+                        if (view.GetType() == typeof(FrameLayout))
                         {
-                            var sensorTag = updateTemp.sid;
-                            var view = bodyView.sensorListView.GetChildren(i);
-                            if (view.GetType() == typeof(FrameLayout))
+                            if (view.Tag.ToString() != sensorTag)
                             {
-                                if (view.Tag.ToString() != sensorTag)
+                                continue;
+                            }
+                            for (int j = 0; j < (view as FrameLayout).ChildrenCount; j++)
+                            {
+                                var btn = (view as FrameLayout).GetChildren(j);
+                                if (btn.GetType() == typeof(Button))
                                 {
-                                    continue;
-                                }
-                                for (int j = 0; j < (view as FrameLayout).ChildrenCount; j++)
-                                {
-                                    var btn = (view as FrameLayout).GetChildren(j);
-                                    if (btn.GetType() == typeof(Button))
+                                    if (btn.Tag != null)
                                     {
-                                        if (btn.Tag != null)
+                                        var tag = btn.Tag.ToString();
+                                        if (tag == "SensorValues")
                                         {
-                                            var tag = btn.Tag.ToString();
-                                            if (tag == "SensorValues")
-                                            {
-                                                (btn as Button).Text = updateTemp.GetAttrState(FunctionAttributeKey.Value);
-                                            }
-                                            else if (tag == "SensorLevel")
-                                            {
-                                                (btn as Button).TextID = bodyView.sensorTemp.GetLevelTextList(updateTemp.spk)[bodyView.sensorTemp.GetCurLevel(updateTemp) - 1];
-                                                (btn as Button).TextColor = bodyView.sensorTemp.GetLevelColorList(updateTemp.spk)[bodyView.sensorTemp.GetCurLevel(updateTemp) - 1];
-                                            }
+                                            (btn as Button).Text = updateTemp.GetAttrState(FunctionAttributeKey.Value);
+                                        }
+                                        else if (tag == "SensorLevel")
+                                        {
+                                            (btn as Button).TextID = bodyView.sensorTemp.GetLevelTextList(updateTemp.spk)[bodyView.sensorTemp.GetCurLevel(updateTemp) - 1];
+                                            (btn as Button).TextColor = bodyView.sensorTemp.GetLevelColorList(updateTemp.spk)[bodyView.sensorTemp.GetCurLevel(updateTemp) - 1];
                                         }
                                     }
-                                    else if (btn.GetType() == typeof(ArcSeekBar))
-                                    {
-                                        (btn as ArcSeekBar).ProgressBarColor = bodyView.sensorTemp.GetLevelColorList(updateTemp.spk)[bodyView.sensorTemp.GetCurLevel(updateTemp) - 1];
+                                }
+                                else if (btn.GetType() == typeof(ArcSeekBar))
+                                {
+                                    (btn as ArcSeekBar).ProgressBarColor = bodyView.sensorTemp.GetLevelColorList(updateTemp.spk)[bodyView.sensorTemp.GetCurLevel(updateTemp) - 1];
 
-                                        (btn as ArcSeekBar).Progress = (96 / bodyView.sensorTemp.GetLevelColorList(updateTemp.spk).Count) * bodyView.sensorTemp.GetCurLevel(updateTemp);
-                                    }
+                                    (btn as ArcSeekBar).Progress = (96 / bodyView.sensorTemp.GetLevelColorList(updateTemp.spk).Count) * bodyView.sensorTemp.GetCurLevel(updateTemp);
                                 }
                             }
                         }
                     }
-                }catch(Exception ex )
-                {
-                    MainPage.Log($"鏇存柊鐜浼犳劅鍣ㄧ晫闈㈠紓甯�:{ex.Message}");
                 }
             });
         }
diff --git a/HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EnvironmentalSensorPage.cs b/HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EnvironmentalSensorPage.cs
index f2c2ae5..0ddb270 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EnvironmentalSensorPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EnvironmentalSensorPage.cs
@@ -128,7 +128,7 @@
                 Gravity = Gravity.CenterHorizontal,
                 Y = Application.GetRealHeight(52),
                 Width = Application.GetRealWidth(343 - 32),
-                Height = Application.GetRealWidth(270),
+                Height = Application.GetRealHeight(270),
             };
             diagramView.AddChidren(historyDataView);
 
@@ -360,7 +360,7 @@
                     tipTextView.AddChidren(new Button()
                     {
                         Width = Application.GetRealWidth(43),
-                        TextID = StringId.SlightlyCold,
+                        TextID = StringId.ExtremelyCold,
                         TextAlignment = TextAlignment.Center,
                         TextColor = CSS_Color.FirstLevelTitleColor,
                         TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
@@ -475,7 +475,7 @@
                     tipValuesView.AddChidren(new Button()
                     {
                         Width = Application.GetRealWidth(151),
-                        Text = "40%",
+                        Text = "70",
                         TextAlignment = TextAlignment.Center,
                         TextColor = CSS_Color.FirstLevelTitleColor,
                         TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
@@ -483,7 +483,7 @@
                     tipValuesView.AddChidren(new Button()
                     {
                         Width = Application.GetRealWidth(151),
-                        Text = "70%",
+                        Text = "40",
                         TextAlignment = TextAlignment.Center,
                         TextColor = CSS_Color.FirstLevelTitleColor,
                         TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
@@ -491,7 +491,7 @@
                     tipTextView.AddChidren(new Button()
                     {
                         Width = Application.GetRealWidth(101),
-                        TextID = StringId.SensorReferenceHumidityTipLevel1,
+                        TextID = StringId.SensorReferenceTVOCTipLevel1,
                         TextAlignment = TextAlignment.Center,
                         TextColor = CSS_Color.FirstLevelTitleColor,
                         TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
@@ -499,7 +499,7 @@
                     tipTextView.AddChidren(new Button()
                     {
                         Width = Application.GetRealWidth(101),
-                        TextID = StringId.SensorReferenceHumidityTipLevel2,
+                        TextID = StringId.SensorReferenceTVOCTipLevel2,
                         TextAlignment = TextAlignment.Center,
                         TextColor = CSS_Color.FirstLevelTitleColor,
                         TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
@@ -507,7 +507,7 @@
                     tipTextView.AddChidren(new Button()
                     {
                         Width = Application.GetRealWidth(101),
-                        TextID = StringId.SensorReferenceHumidityTipLevel3,
+                        TextID = StringId.SensorReferenceTVOCTipLevel3,
                         TextAlignment = TextAlignment.Center,
                         TextColor = CSS_Color.FirstLevelTitleColor,
                         TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
@@ -839,7 +839,7 @@
                         }
 
                         var sensorType = sr.spk.Split(".")[1];
-                        var revertObj = new HttpServerRequest().GetSensorHistory(curQueryType, sr.deviceId,"value");
+                        var revertObj = new HttpServerRequest().GetSensorHistory(curQueryType, sr.deviceId,sensorType);
                         if (revertObj != null)
                         {
                             if (revertObj.Code == StateCode.SUCCESS)
@@ -853,18 +853,19 @@
                                     {
                                         vs.Add(data.fieldName);
                                     }
-                                    ebl.InitXdataText(vs);
+                                    ebl.InitXdata(vs);
                                 }
-                                yDataString += ebl.InitYdataText(sr.name, revertData, tipColorStringList[i]);
+                                yDataString += ebl.GetYdata(sr.name, revertData, tipColorStringList[i]);
                             }
                         }
                         i++;
                     }
 
+                    ebl.InitYdataString(yDataString);
 
                     Application.RunOnMainThread(() =>
                     {
-                        myEchartsView.ShowWithOption(ebl.InitOption());
+                        myEchartsView.ShowWithOption(ebl.optionString);
                     });
 
                 }
diff --git a/HDL_ON/UI/UI2/FuntionControlView/FoolHeating/FloorHeatingPage.cs b/HDL_ON/UI/UI2/FuntionControlView/FoolHeating/FloorHeatingPage.cs
index b90cd61..4fdf8ed 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/FoolHeating/FloorHeatingPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/FoolHeating/FloorHeatingPage.cs
@@ -138,11 +138,6 @@
             //    controlView.AddChidren(btnCollection);
             //}
 
-
-            var minValue = function.GetAttribute(FunctionAttributeKey.SetTemp).min;
-            var maxValue = function.GetAttribute(FunctionAttributeKey.SetTemp).max;
-            var progress = (int)Convert.ToDouble(function.GetAttrState(FunctionAttributeKey.SetTemp));
-
             arcBar = new DiyArcSeekBar()
             {
                 Gravity = Gravity.CenterHorizontal,
@@ -152,10 +147,10 @@
                 ProgressBarColor = CSS_Color.AuxiliaryColor1, // 0xFFFC9C04,
                 OfflineProgressBarColor = CSS_Color.PromptingColor2,
                 IsOffline = function.trait_on_off.curValue.ToString() == "off",
-                MinValue = minValue,//function.GetAttribute(FunctionAttributeKey.SetTemp).min,
-                MaxValue = maxValue,// function.GetAttribute(FunctionAttributeKey.SetTemp).max,
+                MinValue = function.GetAttribute(FunctionAttributeKey.SetTemp).min,
+                MaxValue = function.GetAttribute(FunctionAttributeKey.SetTemp).max,
                 ArcColor = CSS_Color.BackgroundColor,
-                Progress = progress,
+                Progress = Convert.ToInt32(function.GetAttrState(FunctionAttributeKey.SetTemp)),
 #if __IOS__
                 Y = Application.GetRealHeight(120+25),
                 Width = Application.GetRealWidth(260-40),
@@ -180,7 +175,7 @@
                 TextColor = CSS_Color.FirstLevelTitleColor,
                 TextSize = 56,
                 IsBold = true,
-                Text = progress.ToString(),
+                Text = function.GetAttrState(FunctionAttributeKey.SetTemp),
                 TextAlignment = TextAlignment.Center,
             };
             controlView.AddChidren(btnTemp);
diff --git a/HDL_ON/UI/UI2/FuntionControlView/FunctionBaseInfoSetPage.cs b/HDL_ON/UI/UI2/FuntionControlView/FunctionBaseInfoSetPage.cs
index 68f8232..ed8ba3b 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/FunctionBaseInfoSetPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/FunctionBaseInfoSetPage.cs
@@ -1,8 +1,6 @@
 锘縰sing System;
-using HDL_ON.DAL.Server;
 using HDL_ON.Entity;
 using HDL_ON.UI.CSS;
-using Newtonsoft.Json.Linq;
 using Shared;
 
 namespace HDL_ON.UI
@@ -52,21 +50,14 @@
             bodyView.BackgroundColor = CSS_Color.BackgroundColor;
             new TopViewDiv(bodyView, Language.StringByID(StringId.Setting)).LoadTopView(actionRefresh);
 
-            var contentView = new VerticalScrolViewLayout()
-            {
-                Y = Application.GetRealHeight(64),
-                Height = Application.GetRealHeight(600),
-                ScrollEnabled = false,
-            };
-            bodyView.AddChidren(contentView);
-
             #region name view
             var nameView = new FrameLayout()
             {
+                Y = Application.GetRealHeight(64),
                 Height = Application.GetRealHeight(50),
                 BackgroundColor = CSS_Color.MainBackgroundColor,
             };
-            contentView.AddChidren(nameView);
+            bodyView.AddChidren(nameView);
 
             var btnNameText = new Button()
             {
@@ -115,10 +106,11 @@
             #region 浣嶇疆绠$悊
             var locationMagtView = new FrameLayout()
             {
+                Y = nameView.Bottom,
                 Height = Application.GetRealHeight(55),
                 BackgroundColor = CSS_Color.MainBackgroundColor,
             };
-            contentView.AddChidren(locationMagtView);
+            bodyView.AddChidren(locationMagtView);
 
             var btnLocationMagtTitle = new Button()
             {
@@ -166,10 +158,11 @@
             #region 鍏变韩
             //var sharedView = new FrameLayout()
             //{
+            //    Y = locationMagtView.Bottom,
             //    Height = Application.GetRealHeight(55),
             //    BackgroundColor = CSS_Color.MainBackgroundColor,
             //};
-            //contentView.AddChidren(sharedView);
+            //bodyView.AddChidren(sharedView);
 
             //var btnSharedText = new Button()
             //{
@@ -207,10 +200,11 @@
             #region 娣诲姞鍒版闈�
             var addToDesktopView = new FrameLayout()
             {
+                Y = locationMagtView.Bottom,
                 Height = Application.GetRealHeight(55),
                 BackgroundColor = CSS_Color.MainBackgroundColor,
             };
-            contentView.AddChidren(addToDesktopView);
+            bodyView.AddChidren(addToDesktopView);
 
             var btnAddToDesktopText = new Button()
             {
@@ -235,128 +229,6 @@
 
             #endregion
 #endif
-
-            if (function.spk == SPK.ElectricEnergy)
-            {
-                #region 鑳芥簮鏁版嵁
-                var energyView1 = new FrameLayout()
-                {
-                    Height = Application.GetRealHeight(55),
-                    BackgroundColor = CSS_Color.MainBackgroundColor,
-                };
-                contentView.AddChidren(energyView1);
-
-                var btnEnergyText1 = new Button()
-                {
-                    X = Application.GetRealWidth(16),
-                    Width = Application.GetRealWidth(160),
-                    TextAlignment = TextAlignment.CenterLeft,
-                    TextColor = CSS_Color.FirstLevelTitleColor,
-                    TextSize = CSS_FontSize.SubheadingFontSize,
-                    TextID = StringId.RealTimeEnergyConsumption,
-                };
-                energyView1.AddChidren(btnEnergyText1);
-
-
-                double realTimePower = 0;
-                double.TryParse(function.GetAttrState(FunctionAttributeKey.Power), out realTimePower);
-                realTimePower /= 1000;
-
-                var energyValue1 = new Button()
-                {
-                    Width = Application.GetRealWidth(355),
-                    TextAlignment = TextAlignment.CenterRight,
-                    TextSize = CSS_FontSize.TextFontSize,
-                    TextColor = CSS_Color.PromptingColor1,
-                    Text = realTimePower + "kW",
-                };
-                energyView1.AddChidren(energyValue1);
-
-                energyView1.AddChidren(
-                    new Button()
-                    {
-                        Gravity = Gravity.CenterHorizontal,
-                        Y = Application.GetRealHeight(54),
-                        BackgroundColor = CSS_Color.DividingLineColor,
-                        Width = Application.GetRealWidth(343),
-                        Height = Application.GetRealHeight(1)
-                    });
-                //-----------------
-
-                var energyView2 = new FrameLayout()
-                {
-                    Height = Application.GetRealHeight(55),
-                    BackgroundColor = CSS_Color.MainBackgroundColor,
-                };
-                contentView.AddChidren(energyView2);
-
-                var btnEnergyText2 = new Button()
-                {
-                    X = Application.GetRealWidth(16),
-                    Width = Application.GetRealWidth(160),
-                    TextAlignment = TextAlignment.CenterLeft,
-                    TextColor = CSS_Color.FirstLevelTitleColor,
-                    TextSize = CSS_FontSize.SubheadingFontSize,
-                    TextID = StringId.EnergyConsumptionOfThisMonth,
-                };
-                energyView2.AddChidren(btnEnergyText2);
-
-                var btnEnergyValue2 = new Button()
-                {
-                    Width = Application.GetRealWidth(355),
-                    TextAlignment = TextAlignment.CenterRight,
-                    TextSize = CSS_FontSize.TextFontSize,
-                    TextColor = CSS_Color.PromptingColor1,
-                    Text = "--kW",
-                };
-                energyView2.AddChidren(btnEnergyValue2);
-
-                energyView2.AddChidren(
-                    new Button()
-                    {
-                        Gravity = Gravity.CenterHorizontal,
-                        Y = Application.GetRealHeight(54),
-                        BackgroundColor = CSS_Color.DividingLineColor,
-                        Width = Application.GetRealWidth(343),
-                        Height = Application.GetRealHeight(1)
-                    });
-
-                new System.Threading.Thread(() =>
-                {
-                    var pm = new HttpServerRequest();
-                    var data = pm.GetLastMonthHistory(function.deviceId, FunctionAttributeKey.TotalElectricity);
-                    if (data != null)
-                    {
-                        if (data.Code == StateCode.SUCCESS)
-                        {
-                            var dataPack = Newtonsoft.Json.JsonConvert.DeserializeObject<JObject>(data.Data.ToString());
-                            if (dataPack != null)
-                            {
-                                try
-                                {
-                                    var dataValue = dataPack.GetValue("monthDiff").ToString();
-                                    if (!string.IsNullOrEmpty(dataValue))
-                                    {
-                                        Application.RunOnMainThread(() =>
-                                        {
-                                            btnEnergyValue2.Text = dataValue + "kW鈥";
-                                        });
-                                    }
-                                }
-                                catch
-                                {
-
-                                }
-                            }
-                        }
-                    }
-
-                })
-                { IsBackground = true }.Start();
-
-                #endregion
-            }
-
             LoadEventList();
         }
 
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Video/VideoMainView.cs b/HDL_ON/UI/UI2/FuntionControlView/Video/VideoMainView.cs
index 109cdc4..3271e9e 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Video/VideoMainView.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Video/VideoMainView.cs
@@ -35,8 +35,8 @@
             pageView.AddChidren(view1);
             var view2 = new FrameLayout();
             pageView.AddChidren(view2);
-            ViewFrameLayout1(view1, listVideo, video);
-            ViewFrameLayout2(view2, listCall, video);
+            View1(view1, listVideo, video);
+            View2(view2, listCall, video);
             Button btn11 = new Button
             {
                 X = Application.GetRealWidth(170),
@@ -113,10 +113,8 @@
         /// <param name="view1">鐖舵帶浠�</param>
         /// <param name="list">闂ㄥ彛鏈哄垪琛�</param>
         /// <param name="videoClouds">褰撳墠鐨勫彲瑙嗗璁�</param>
-        void ViewFrameLayout1(FrameLayout view1, List<FlVideo> list, VideoClouds videoClouds)
+        void View1(FrameLayout view1, List<FlVideo> list, VideoClouds videoClouds)
         {
-
-
             #region 甯冨眬鐣岄潰
             var bjFl = new FrameLayout
             {
@@ -222,16 +220,17 @@
                 #region
                 var fLayout = new FrameLayout
                 {
-                    Width = Application.GetRealWidth(96),
+                    Width = Application.GetRealWidth(50),
                     Height = Application.GetRealWidth(48),
-                    X = Application.GetRealWidth(20 + (26 + 28 + 42) * j),
+                    X = Application.GetRealWidth(31 + (58 + 50) * j),
                     Y = Application.GetRealHeight(20 + (48 + 24) * line),
+
                 };
                 fL.AddChidren(fLayout);
 
                 var iconBtn = new Button
                 {
-                    Gravity=Gravity.CenterHorizontal,
+                    X = Application.GetRealWidth(11),
                     Width = Application.GetRealWidth(28),
                     Height = Application.GetRealWidth(28),
                     UnSelectedImagePath = "VideoIcon/weiqiangji.png",
@@ -241,8 +240,7 @@
                 var deviceNameBtn = new Button
                 {
                     Y = iconBtn.Bottom + Application.GetRealHeight(6),
-                    X = Application.GetRealWidth(6),
-                    Width = Application.GetRealWidth(96-12),
+                    Width = Application.GetRealWidth(50),
                     Height = Application.GetRealHeight(14),
                     TextSize = TextSize.Text10,
                     TextColor = CSS.CSS_Color.TextualColor,
@@ -308,7 +306,7 @@
         /// <param name="view2">鐖舵帶浠�</param>
         /// <param name="listCall">閫氳瘽璁板綍鍒楄〃</param>
         /// <param name="video">褰撳墠鐨勫彲瑙嗗璁�</param>
-        void ViewFrameLayout2(FrameLayout view2, List<CallView> listCall, VideoClouds video) 
+        void View2(FrameLayout view2, List<CallView> listCall, VideoClouds video)
         {
 
             var bjFl = new FrameLayout
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Video/VideoMethod.cs b/HDL_ON/UI/UI2/FuntionControlView/Video/VideoMethod.cs
index c7d4797..72536fd 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Video/VideoMethod.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Video/VideoMethod.cs
@@ -189,7 +189,7 @@
                         }
                         else
                         {
-                            PirMethod method = new PirMethod();
+                            Method method = new Method();
                             //鑷畾涔夐敊璇彁绀烘枃鏈�
                             string eorroText = "";
                             if (str == "鑾峰彇鍙瀵硅")
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Video/View/ShowDialog.cs b/HDL_ON/UI/UI2/FuntionControlView/Video/View/ShowDialog.cs
index cbb2043..814a7ed 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Video/View/ShowDialog.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Video/View/ShowDialog.cs
@@ -130,7 +130,7 @@
                 Height = Application.GetRealHeight(32),
                 Width = Application.GetRealWidth(82+5),
                 TextColor = MusicColor.SelectedColor,
-                TextSize =18,//24
+                TextSize =20,//24
                 TextAlignment = TextAlignment.Center,
                 IsBold = true,
                 Text = str1,
diff --git a/HDL_ON/UI/UI2/UserPage.cs b/HDL_ON/UI/UI2/UserPage.cs
index 4397173..44540a8 100644
--- a/HDL_ON/UI/UI2/UserPage.cs
+++ b/HDL_ON/UI/UI2/UserPage.cs
@@ -563,7 +563,7 @@
         /// <summary>
         /// 鍒囨崲鍒颁釜浜轰腑蹇冪晫闈�
         /// </summary>
-        void ChoosePersonalCenter()
+        public void ChoosePersonalCenter()
         {
 #if DEBUG
             if(MainPage.NoLoginMode)

--
Gitblit v1.8.0