From 1d77141ffe32e6ed314b6227c128eef2d97a7c56 Mon Sep 17 00:00:00 2001 From: TianMaiCheng <746290578@qq.com> Date: Tue, 3 Feb 2026 08:53:47 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=97=A5=E5=BF=97=E6=8E=A8?= =?UTF-8?q?=E9=80=81=EF=BC=8C=E5=A2=9E=E5=8A=A0=E6=88=BF=E6=80=81=E5=8F=98?= =?UTF-8?q?=E5=8C=96=E7=9A=84=E6=97=B6=E5=80=99=20=E6=96=AD=E7=94=B5?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CRICS_V3_1124.suo | Bin 12780544 -> 12780544 bytes Common/OnOffLineData.cs | 1 + Common/StructConverter.cs | 2 +- CommonEntity/DataTongJi.cs | 2 +- .../ConsoleApplication2.csproj | 2 +- ConsoleApplication2/Program.cs | 8 +++- Domain/SysHotel.cs | 4 ++ Domain/SysHotel.hbm.xml | 4 ++ RCUHost/Implement/GenericReceiverBase.cs | 2 +- RCUHost/Implement/HostServer.cs | 10 ++++- RCUHost/Implement/New_RoomStatusReceiver.cs | 28 +++++++------- RCUHost/Implement/UpdateHostReceiver.cs | 12 +++--- WebSite/Controllers/SysHotelController.cs | 10 +++++ WebSite/Global.asax.cs | 15 ++++++++ WebSite/Resource/en-US.Designer.cs | 36 ++++++++++++++++++ WebSite/Resource/en-US.resx | 12 ++++++ WebSite/Resource/zh-CN.Designer.cs | 36 ++++++++++++++++++ WebSite/Resource/zh-CN.resx | 12 ++++++ WebSite/Resource/zh-TW.Designer.cs | 36 ++++++++++++++++++ WebSite/Resource/zh-TW.resx | 12 ++++++ WebSite/Views/SysHotel/EditDockingInfo.ascx | 11 ++++++ 21 files changed, 229 insertions(+), 26 deletions(-) diff --git a/CRICS_V3_1124.suo b/CRICS_V3_1124.suo index 5d3a9c650760a2e43c5ce67148298f08df5955c3..1dd2740f0bf03f2dbd2814804d82f519a03c2ecd 100644 GIT binary patch delta 9260 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 diff --git a/Common/OnOffLineData.cs b/Common/OnOffLineData.cs index 8e96055..a4f6cb6 100644 --- a/Common/OnOffLineData.cs +++ b/Common/OnOffLineData.cs @@ -14,6 +14,7 @@ namespace Common public string EndPoint { get; set; } public string CurrentStatus { get; set; } public DateTime CurrentTime { get; set; } + public long UnixTime { get; set; } } } diff --git a/Common/StructConverter.cs b/Common/StructConverter.cs index 393b2a3..de024ea 100644 --- a/Common/StructConverter.cs +++ b/Common/StructConverter.cs @@ -77,7 +77,7 @@ namespace Common Marshal.Copy(bytes, startIndex, structPtr, size); structObj = Marshal.PtrToStructure(structPtr, type); } - catch (Exception) + catch (Exception ex) { } finally diff --git a/CommonEntity/DataTongJi.cs b/CommonEntity/DataTongJi.cs index edaa65c..15d2a24 100644 --- a/CommonEntity/DataTongJi.cs +++ b/CommonEntity/DataTongJi.cs @@ -339,7 +339,7 @@ namespace CommonEntity public string cmd_word { get; set; } public int frame_id { get; set; } - public string udp_raw { get; set; } + public byte[] udp_raw { get; set; } public int sys_lock_status { get; set; } public int report_count { get; set; } diff --git a/ConsoleApplication2/ConsoleApplication2.csproj b/ConsoleApplication2/ConsoleApplication2.csproj index 7b21eb6..14396ee 100644 --- a/ConsoleApplication2/ConsoleApplication2.csproj +++ b/ConsoleApplication2/ConsoleApplication2.csproj @@ -36,7 +36,7 @@ full false bin\Debug\ - DEBUG;TRACE + TRACE;DEBUG;AAA;BBB;CCC; prompt 4 diff --git a/ConsoleApplication2/Program.cs b/ConsoleApplication2/Program.cs index 7526bcc..d3ad2b9 100644 --- a/ConsoleApplication2/Program.cs +++ b/ConsoleApplication2/Program.cs @@ -275,7 +275,8 @@ namespace ConsoleApplication2 d1.device_id = hostNumber; d1.frame_id = zhenhao; d1.cmd_word = "0F"; - d1.udp_raw = Tools.ByteToString(data); + //d1.udp_raw = Tools.ByteToString(data); + d1.udp_raw = data; d1.direction = "下发"; List lll1 = new List(); @@ -300,6 +301,11 @@ namespace ConsoleApplication2 } static void Main(string[] args) { +#if AAA + Console.WriteLine("aaaaaaaaaaaaa"); +#endif + + AAA(); string aaa111 = "233003"; var bj1 = aaa111.Substring(0, 3); diff --git a/Domain/SysHotel.cs b/Domain/SysHotel.cs index 3cebbf4..9e863a0 100644 --- a/Domain/SysHotel.cs +++ b/Domain/SysHotel.cs @@ -440,5 +440,9 @@ namespace Domain ///// //public virtual string TCLAppSecret { get; set; } public virtual string ETV_HotelID { get; set; } + public virtual int SwitchRoomStatus_PowerOff2 { get; set; } + public virtual int SwitchRoomStatus_PowerOff4 { get; set; } + public virtual int SwitchRoomStatus_PowerOff8 { get; set; } + public virtual int SwitchRoomStatus_PowerOff16 { get; set; } } } diff --git a/Domain/SysHotel.hbm.xml b/Domain/SysHotel.hbm.xml index 8cacd5b..b5d0a4f 100644 --- a/Domain/SysHotel.hbm.xml +++ b/Domain/SysHotel.hbm.xml @@ -74,6 +74,10 @@ + + + + diff --git a/RCUHost/Implement/GenericReceiverBase.cs b/RCUHost/Implement/GenericReceiverBase.cs index b2380f2..294346e 100644 --- a/RCUHost/Implement/GenericReceiverBase.cs +++ b/RCUHost/Implement/GenericReceiverBase.cs @@ -246,7 +246,7 @@ namespace RCUHost.Implement d1.device_id = hostNumber; d1.frame_id = zhenhao; d1.cmd_word = "0F"; - d1.udp_raw = Tools.ByteToString(data); + d1.udp_raw = data; d1.direction = "下发"; List lll3 = new List(); diff --git a/RCUHost/Implement/HostServer.cs b/RCUHost/Implement/HostServer.cs index b211629..8a0233d 100644 --- a/RCUHost/Implement/HostServer.cs +++ b/RCUHost/Implement/HostServer.cs @@ -406,6 +406,7 @@ namespace RCUHost.Implement DataTongJi.TotalCount.TryAdd(TotalKey, u); } + //logger.Error("升级拉取指令:" + Tools.ByteToString(data)); udpClient.Send(data, data.Length, endPoint); // 使用同一个 Socket 发送回复 //udpClient.SendTo(data, endPoint); @@ -1247,6 +1248,10 @@ namespace RCUHost.Implement byte cmdType = context111.SystemHeader.Value.CmdType; + if (cmdType == 0x68) + { + logger.Error("收到升级返回:" + Tools.ByteToString(gga.Data)); + } ushort MyFrameNO = context111.SystemHeader.Value.FrameNo; byte[] framenolist = BitConverter.GetBytes(MyFrameNO); @@ -1274,6 +1279,7 @@ namespace RCUHost.Implement o.CurrentStatus = "on"; o.CurrentTime = DateTime.Now; o.EndPoint = EndPointStr; + o.UnixTime = Tools.GetUnixTime(); //新来的数据 var n = Newtonsoft.Json.JsonConvert.SerializeObject(o); @@ -1358,7 +1364,7 @@ namespace RCUHost.Implement d1.device_id = HostNNN; d1.frame_id = MyFrameNO; d1.cmd_word = "0F"; - d1.udp_raw = Tools.ByteToString(OriginalByte); + d1.udp_raw = OriginalByte; d1.direction = "上报"; string sss = Newtonsoft.Json.JsonConvert.SerializeObject(d1); CSRedisCacheHelper.Publish("redis-0X36-0X0F", sss); @@ -1857,7 +1863,7 @@ namespace RCUHost.Implement d1.device_id = HostNNN; d1.frame_id = MyFrameNO; d1.cmd_word = "36"; - d1.udp_raw = Tools.ByteToString(OriginalByte); + d1.udp_raw = OriginalByte; d1.direction = "上报"; List lll1 = new List(); diff --git a/RCUHost/Implement/New_RoomStatusReceiver.cs b/RCUHost/Implement/New_RoomStatusReceiver.cs index e543701..826bb12 100644 --- a/RCUHost/Implement/New_RoomStatusReceiver.cs +++ b/RCUHost/Implement/New_RoomStatusReceiver.cs @@ -827,21 +827,21 @@ namespace RCUHost.Implement #endregion case DeviceType.AirConditioner://空调 #region 空调 - //status = device.Value.StatusReceiver >> 15;//开关 - //int mode = (device.Value.StatusReceiver >> 13) & 0x03;//模式 - //int fanSpeed = (device.Value.StatusReceiver >> 11) & 0x03;//风速 - //int valve = (device.Value.StatusReceiver >> 10) & 0x01;//阀门 - //int temperature = (device.Value.StatusReceiver >> 5) & 0x1F;//设定温度 - //int currentTemp = device.Value.StatusReceiver & 0x01F;//当前温度(室内温度) - - int StatusReceiver = device.Value.StatusReceiver; - status = StatusReceiver >> 15;//开关 - int mode = (StatusReceiver >> 12) & 0x03;//模式 - int fanSpeed = (StatusReceiver >> 11) & 0x03;//风速 - int valve = (StatusReceiver >> 10) & 0x01;//阀门 - int temperature = (StatusReceiver >> 5) & 0x1F;//设定温度 - int currentTemp = StatusReceiver & 0x01F;//当前温度(室内温度) + status = device.Value.StatusReceiver >> 15;//开关 + int mode = (device.Value.StatusReceiver >> 13) & 0x03;//模式 + int fanSpeed = (device.Value.StatusReceiver >> 11) & 0x03;//风速 + int valve = (device.Value.StatusReceiver >> 10) & 0x01;//阀门 + int temperature = (device.Value.StatusReceiver >> 5) & 0x1F;//设定温度 + int currentTemp = device.Value.StatusReceiver & 0x01F;//当前温度(室内温度) + + + //status = StatusReceiver >> 15;//开关 + //int mode = (StatusReceiver >> 12) & 0x03;//模式 + //int fanSpeed = (StatusReceiver >> 11) & 0x03;//风速 + //int valve = (StatusReceiver >> 10) & 0x01;//阀门 + //int temperature = (StatusReceiver >> 5) & 0x1F;//设定温度 + //int currentTemp = StatusReceiver & 0x01F;//当前温度(室内温度) #region 任务 if (status == 1)//设备开 { diff --git a/RCUHost/Implement/UpdateHostReceiver.cs b/RCUHost/Implement/UpdateHostReceiver.cs index e13c7c3..76d1715 100644 --- a/RCUHost/Implement/UpdateHostReceiver.cs +++ b/RCUHost/Implement/UpdateHostReceiver.cs @@ -85,6 +85,8 @@ namespace RCUHost.Implement public override void Process(ReceiverContext context1) { int startIndex = StructConverter.SizeOf(context1.SystemHeader); + //var mydata = Tools.ByteToString(context1.Data); + //logger.Error(string.Format("升级返回:{0}", mydata)); UpdateHostPacketReply? reply1 = DecodeUpdateHostPacketReply(context1.Data, startIndex); var TTT = new Tuple(context1, reply1); //logger.Error(string.Format("收到tftp升级回复命令({0}:{1}):{2},解析结果:{3}", context.RemoteEndPoint.Address.ToString(), context.RemoteEndPoint.Port, Tools.ByteToString(context.Data), reply.HasValue)); @@ -96,8 +98,8 @@ namespace RCUHost.Implement var context = NNN.Item1; var reply = NNN.Item2; var updateHostWorker = this.updateHostList.FirstOrDefault(r => r.Host.HostNumber == context.SystemHeader.Value.HostNumber.ToString()); - var data= Tools.ByteToString( context1.Data); - logger.Error(string.Format("主机{0}升级返回:{1}", context.SystemHeader.Value.HostNumber.ToString(),data)); + var data = Tools.ByteToString(context1.Data); + logger.Error(string.Format("主机{0}升级返回:{1}", context.SystemHeader.Value.HostNumber.ToString(), data)); if (updateHostWorker == null) { return; @@ -215,10 +217,10 @@ namespace RCUHost.Implement /// 升级文件MD5值 private void SendUpdateRequest(Host host, string updateFileMd5, ushort blockNum, byte fileType, string fileName) { - logger.Error("主机升级:"+host.SysHotel.Code+":"+host.RoomNumber+" FileMd5:"+updateFileMd5+" FileName:"+fileName); + logger.Error("主机升级:" + host.SysHotel.Code + ":" + host.RoomNumber + " FileMd5:" + updateFileMd5 + " FileName:" + fileName); byte[] data = CreateUpdateRequestPacket(updateFileMd5, blockNum, fileType, fileName); - logger.Error("升级HostNumber为:"+host.HostNumber); - logger.Error("升级指令为:"+Tools.ByteToString(data)); + logger.Error("升级HostNumber为:" + host.HostNumber); + logger.Error("升级指令为:" + Tools.ByteToString(data)); Send(data, host.HostNumber, host.MAC);// host.IP, host.Port); } /// diff --git a/WebSite/Controllers/SysHotelController.cs b/WebSite/Controllers/SysHotelController.cs index 4384b60..2a36927 100644 --- a/WebSite/Controllers/SysHotelController.cs +++ b/WebSite/Controllers/SysHotelController.cs @@ -306,6 +306,10 @@ namespace WebSite.Controllers sysHotel.IsPushPMSData = entity.IsPushPMSData; sysHotel.HeTongNumber = entity.HeTongNumber; sysHotel.ETV_HotelID = entity.ETV_HotelID; + sysHotel.SwitchRoomStatus_PowerOff2 = entity.SwitchRoomStatus_PowerOff2; + sysHotel.SwitchRoomStatus_PowerOff4 = entity.SwitchRoomStatus_PowerOff4; + sysHotel.SwitchRoomStatus_PowerOff8 = entity.SwitchRoomStatus_PowerOff8; + sysHotel.SwitchRoomStatus_PowerOff16 = entity.SwitchRoomStatus_PowerOff16; //sysHotel.TCLAppId = entity.TCLAppId; //sysHotel.TCLAppSecret = entity.TCLAppSecret; SysHotelManager.Update(sysHotel); @@ -390,6 +394,12 @@ namespace WebSite.Controllers TakeOut.SysHotel.IsPushPMSData = entity.IsPushPMSData; TakeOut.SysHotel.HeTongNumber = entity.HeTongNumber; TakeOut.SysHotel.ETV_HotelID = entity.ETV_HotelID; + + + TakeOut.SysHotel.SwitchRoomStatus_PowerOff2 = entity.SwitchRoomStatus_PowerOff2; + TakeOut.SysHotel.SwitchRoomStatus_PowerOff4 = entity.SwitchRoomStatus_PowerOff4; + TakeOut.SysHotel.SwitchRoomStatus_PowerOff8 = entity.SwitchRoomStatus_PowerOff8; + TakeOut.SysHotel.SwitchRoomStatus_PowerOff16 = entity.SwitchRoomStatus_PowerOff16; //TakeOut.SysHotel.TCLAppId = entity.TCLAppId; //TakeOut.SysHotel.TCLAppSecret = entity.TCLAppSecret; diff --git a/WebSite/Global.asax.cs b/WebSite/Global.asax.cs index 2b9a109..7aecf97 100644 --- a/WebSite/Global.asax.cs +++ b/WebSite/Global.asax.cs @@ -47,6 +47,7 @@ namespace WebSite private IRoomStatusManager RoomStatusManager; private IDeviceControlReceiver DeviceControlReceiver; private IOverviewManager OverviewManager { get; set; } + public IHostModalManager HostModalManager { get; set; } public static IHostServer hostServer { get; set; } //private IGroupManager GroupManager; @@ -521,6 +522,7 @@ namespace WebSite RoomStatusManager = (IRoomStatusManager)cxt.GetObject("Manager.RoomStatus"); DeviceControlReceiver = (IDeviceControlReceiver)cxt.GetObject("RCUHost.DeviceControlReceiver"); OverviewManager = (IOverviewManager)cxt.GetObject("Manager.Overview"); + HostModalManager = (IHostModalManager)cxt.GetObject("Manager.HostModal"); _client = new syncstatus.syncstatusSoapClient(); Timer timer2 = new Timer(20000);//每20秒扫描一次 @@ -735,6 +737,19 @@ namespace WebSite Host host = HostManager.GetByRoomNumber(T1.Item2, T1.Item1); if (host != null) { + int status_id2 = host.SysHotel.SwitchRoomStatus_PowerOff2; + int status_id4 = host.SysHotel.SwitchRoomStatus_PowerOff4; + int status_id8 = host.SysHotel.SwitchRoomStatus_PowerOff8; + int status_id16 = host.SysHotel.SwitchRoomStatus_PowerOff16; + if (status_id2 != 0 || status_id4 != 0 || status_id8 != 0 || status_id16 != 0) + { + if (status_id2 == roomStatus.ID||status_id4==roomStatus.ID||status_id8==roomStatus.ID||status_id16==roomStatus.ID) + { + HostModal h1 = new HostModal(); + h1.Modal = new RoomTypeModal() { ModalAddress = "004000001", Type = DeviceType.ServiceInfo }; + HostModalManager.SetDevice(host, h1, 2, 0, 25, 0, 0, 0); + } + } HostManager.ChangeRoomStatus(host, T1.Item3); string Key = CacheKey.SyncRoomStatus + "_" + host.HostNumber; RoomStatusRequest ddd = new RoomStatusRequest(); diff --git a/WebSite/Resource/en-US.Designer.cs b/WebSite/Resource/en-US.Designer.cs index 0d42286..49ac721 100644 --- a/WebSite/Resource/en-US.Designer.cs +++ b/WebSite/Resource/en-US.Designer.cs @@ -1303,6 +1303,15 @@ namespace WebSite.Resource { } } + /// + /// 查找类似 Apartment for Rent​ 的本地化字符串。 + /// + internal static string ChuZu { + get { + return ResourceManager.GetString("ChuZu", resourceCulture); + } + } + /// /// 查找类似 Circuit 的本地化字符串。 /// @@ -1663,6 +1672,15 @@ namespace WebSite.Resource { } } + /// + /// 查找类似 For Rent​ 的本地化字符串。 + /// + internal static string DaiZu { + get { + return ResourceManager.GetString("DaiZu", resourceCulture); + } + } + /// /// 查找类似 Data 的本地化字符串。 /// @@ -6028,6 +6046,15 @@ namespace WebSite.Resource { } } + /// + /// 查找类似 Switch RoomStatus To Power Off 的本地化字符串。 + /// + internal static string RoomStatusSwitch { + get { + return ResourceManager.GetString("RoomStatusSwitch", resourceCulture); + } + } + /// /// 查找类似 Temp 的本地化字符串。 /// @@ -7657,6 +7684,15 @@ namespace WebSite.Resource { } } + /// + /// 查找类似 CheckOut 的本地化字符串。 + /// + internal static string TuiFang { + get { + return ResourceManager.GetString("TuiFang", resourceCulture); + } + } + /// /// 查找类似 TV 的本地化字符串。 /// diff --git a/WebSite/Resource/en-US.resx b/WebSite/Resource/en-US.resx index 97a47ad..2867527 100644 --- a/WebSite/Resource/en-US.resx +++ b/WebSite/Resource/en-US.resx @@ -2899,4 +2899,16 @@ Single circuit status WelcomeBGM + + Apartment for Rent​ + + + For Rent​ + + + CheckOut + + + Switch RoomStatus To Power Off + \ No newline at end of file diff --git a/WebSite/Resource/zh-CN.Designer.cs b/WebSite/Resource/zh-CN.Designer.cs index 75e96e9..f774087 100644 --- a/WebSite/Resource/zh-CN.Designer.cs +++ b/WebSite/Resource/zh-CN.Designer.cs @@ -1302,6 +1302,15 @@ namespace WebSite.Resource { } } + /// + /// 查找类似 出租 的本地化字符串。 + /// + internal static string ChuZu { + get { + return ResourceManager.GetString("ChuZu", resourceCulture); + } + } + /// /// 查找类似 回路 的本地化字符串。 /// @@ -1662,6 +1671,15 @@ namespace WebSite.Resource { } } + /// + /// 查找类似 待租 的本地化字符串。 + /// + internal static string DaiZu { + get { + return ResourceManager.GetString("DaiZu", resourceCulture); + } + } + /// /// 查找类似 数据 的本地化字符串。 /// @@ -6045,6 +6063,15 @@ namespace WebSite.Resource { } } + /// + /// 查找类似 状态更新断电​ 的本地化字符串。 + /// + internal static string RoomStatusSwitch { + get { + return ResourceManager.GetString("RoomStatusSwitch", resourceCulture); + } + } + /// /// 查找类似 客房温度 的本地化字符串。 /// @@ -7665,6 +7692,15 @@ namespace WebSite.Resource { } } + /// + /// 查找类似 退房 的本地化字符串。 + /// + internal static string TuiFang { + get { + return ResourceManager.GetString("TuiFang", resourceCulture); + } + } + /// /// 查找类似 电视 的本地化字符串。 /// diff --git a/WebSite/Resource/zh-CN.resx b/WebSite/Resource/zh-CN.resx index c19a4b0..e3a4562 100644 --- a/WebSite/Resource/zh-CN.resx +++ b/WebSite/Resource/zh-CN.resx @@ -2901,4 +2901,16 @@ 欢迎背景乐 + + 出租 + + + 待租 + + + 状态更新断电​ + + + 退房 + \ No newline at end of file diff --git a/WebSite/Resource/zh-TW.Designer.cs b/WebSite/Resource/zh-TW.Designer.cs index 91a72cd..ef792db 100644 --- a/WebSite/Resource/zh-TW.Designer.cs +++ b/WebSite/Resource/zh-TW.Designer.cs @@ -1302,6 +1302,15 @@ namespace WebSite.Resource { } } + /// + /// 查找类似 出租 的本地化字符串。 + /// + internal static string ChuZu { + get { + return ResourceManager.GetString("ChuZu", resourceCulture); + } + } + /// /// 查找类似 回路 的本地化字符串。 /// @@ -1662,6 +1671,15 @@ namespace WebSite.Resource { } } + /// + /// 查找类似 待租 的本地化字符串。 + /// + internal static string DaiZu { + get { + return ResourceManager.GetString("DaiZu", resourceCulture); + } + } + /// /// 查找类似 數據 的本地化字符串。 /// @@ -6045,6 +6063,15 @@ namespace WebSite.Resource { } } + /// + /// 查找类似 切換狀態即斷電 的本地化字符串。 + /// + internal static string RoomStatusSwitch { + get { + return ResourceManager.GetString("RoomStatusSwitch", resourceCulture); + } + } + /// /// 查找类似 客房溫度 的本地化字符串。 /// @@ -7667,6 +7694,15 @@ namespace WebSite.Resource { } } + /// + /// 查找类似 退房 的本地化字符串。 + /// + internal static string TuiFang { + get { + return ResourceManager.GetString("TuiFang", resourceCulture); + } + } + /// /// 查找类似 電視 的本地化字符串。 /// diff --git a/WebSite/Resource/zh-TW.resx b/WebSite/Resource/zh-TW.resx index e7748c0..a20781a 100644 --- a/WebSite/Resource/zh-TW.resx +++ b/WebSite/Resource/zh-TW.resx @@ -2903,4 +2903,16 @@ 歡迎詞背景樂 + + 出租 + + + 待租 + + + 切換狀態即斷電 + + + 退房 + \ No newline at end of file diff --git a/WebSite/Views/SysHotel/EditDockingInfo.ascx b/WebSite/Views/SysHotel/EditDockingInfo.ascx index e7f86e6..d3dc814 100644 --- a/WebSite/Views/SysHotel/EditDockingInfo.ascx +++ b/WebSite/Views/SysHotel/EditDockingInfo.ascx @@ -388,6 +388,17 @@ + + + + + + + /> <%: Html.Language("ChuZu")%> + /> <%: Html.Language("DaiZu")%> + /> <%: Html.Language("TuiFang")%> + + <%-- TCL 功能--%> <%--