From c1de48884fa145a16a0f8bcee93274dcfaa0ff82 Mon Sep 17 00:00:00 2001 From: xm <1271024303@qq.com> Date: 星期四, 07 五月 2020 10:40:28 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/dev-tzy' into dev-2020xm --- ZigbeeApp/Shared/Phone/UserCenter/Member/MemberListForm.cs | 471 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 471 insertions(+), 0 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Member/MemberListForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Member/MemberListForm.cs new file mode 100755 index 0000000..d5b2cbd --- /dev/null +++ b/ZigbeeApp/Shared/Phone/UserCenter/Member/MemberListForm.cs @@ -0,0 +1,471 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Threading.Tasks; + +namespace Shared.Phone.UserCenter.Member +{ + /// <summary> + /// 鎴愬憳绠$悊鈽� + /// </summary> + public class MemberListForm : EditorCommonForm + { + #region 鈻� 鍙橀噺澹版槑___________________________ + + /// <summary> + /// 鍒楄〃鎺т欢 + /// </summary> + private VerticalListControl listView = null; + /// <summary> + /// 鎴愬憳澶村儚鎺т欢 + /// </summary> + private Dictionary<string, ImageView> dicIconControl = new Dictionary<string, ImageView>(); + /// <summary> + /// 鎴愬憳鐨勮处鍙�(鑾峰彇澶村儚鐢�) + /// </summary> + private Dictionary<string, string> dicMemberAccount = new Dictionary<string, string>(); + + #endregion + + #region 鈻� 鍒濆鍖朹____________________________ + + /// <summary> + /// 鐢婚潰鏄剧ず(搴曞眰浼氬浐瀹氳皟鐢ㄦ鏂规硶锛屽�熶互瀹屾垚鐢婚潰鍒涘缓) + /// </summary> + public void ShowForm() + { + //璁剧疆鏍囬淇℃伅 + base.SetTitleText(Language.StringByID(R.MyInternationalizationString.MenberManagement)); + + var titleIcon = new MostRightIconControl(69, 69); + titleIcon.UnSelectedImagePath = "Item/Add.png"; + topFrameLayout.AddChidren(titleIcon); + titleIcon.InitControl(); + titleIcon.ButtonClickEvent += (sender, e) => + { + var menuContr = new TopRightMenuControl(2, 2); + //鎵弿浜岀淮鐮� + string msg1 = Language.StringByID(R.MyInternationalizationString.uScanQRcode); + menuContr.AddRowMenu(msg1, "Item/ScanQRcodeIcon.png", "Item/ScanQRcodeIconSelected.png", () => + { + QRCode.ScanQRcode((qrCode) => + { + if (string.IsNullOrEmpty(qrCode) == true) + { + return; + } + //鎼滅储ID + this.SearchMemberInfo(qrCode); + }, + Language.StringByID(R.MyInternationalizationString.uCancel), + Language.StringByID(R.MyInternationalizationString.uFlashlamp), + msg1); + }); + //杈撳叆璐﹀彿 + string msg2 = Language.StringByID(R.MyInternationalizationString.uInputAccount); + menuContr.AddRowMenu(msg2, "Item/InputAccountIcon.png", "Item/InputAccountIconSelected.png", () => + { + var form = new AddMemberByIdForm(); + form.AddForm(); + }); + }; + + //鍒濆鍖栦腑閮ㄦ帶浠� + this.InitMiddleFrame(); + } + + + /// <summary> + /// 鍒濆鍖栦腑閮ㄦ帶浠� + /// </summary> + private void InitMiddleFrame() + { + //娓呯┖bodyFrame + this.ClearBodyFrame(); + + //鍒濆鍖栫敤鎴峰浘鏍� + this.InitUserIconControl(); + + //鍒濆鍖栧垪琛ㄦ帶浠� + this.InitMemberListControl(); + } + + #endregion + + #region 鈻� 鍒濆鍖栫敤鎴峰浘鏍嘷____________________ + + /// <summary> + /// 鍒濆鍖栫敤鎴峰浘鏍� + /// </summary> + private void InitUserIconControl() + { + var frameBack = new FrameLayout(); + frameBack.BackgroundColor = UserCenterColor.Current.White; + frameBack.Height = Application.GetRealHeight(438); + bodyFrameLayout.AddChidren(frameBack); + + //鐢ㄦ埛鍥炬爣 + var btnUserIcon = new ImageView(); + btnUserIcon.Height = this.GetPictrueRealSize(207); + btnUserIcon.Width = this.GetPictrueRealSize(207); + btnUserIcon.Radius = (uint)this.GetPictrueRealSize(207) / 2; + btnUserIcon.ImagePath = UserCenterResourse.UserInfo.UserIconFile; + btnUserIcon.Y = Application.GetRealHeight(46); + btnUserIcon.Gravity = Gravity.CenterHorizontal; + frameBack.AddChidren(btnUserIcon); + + //鏄电О + var btnName = new NormalViewControl(frameBack.Width, Application.GetRealHeight(60), false); + btnName.TextAlignment = TextAlignment.Center; + btnName.Y = btnUserIcon.Bottom + Application.GetRealHeight(20); + btnName.TextSize = 16; + btnName.Text = UserCenterResourse.UserInfo.UserName; ; + frameBack.AddChidren(btnName); + + //韬唤 + var btnAuthority = new NormalViewControl(frameBack.Width, Application.GetRealHeight(55), false); + btnAuthority.TextAlignment = TextAlignment.Center; + btnAuthority.Y = btnName.Bottom + Application.GetRealHeight(10); + btnAuthority.TextSize = 12; + btnAuthority.TextColor = UserCenterColor.Current.TextGrayColor1; + btnAuthority.Text = UserCenterResourse.UserInfo.AuthorityText; + frameBack.AddChidren(btnAuthority); + } + + #endregion + + #region 鈻� 鍒濆鍖栨垚鍛樺垪琛╛____________________ + + /// <summary> + /// 鍒濆鍖栨垚鍛樺垪琛� + /// </summary> + private void InitMemberListControl() + { + //鏍囬:鎴愬憳鍒楄〃 + var btnMenberTile = new NormalViewControl(800, 60, true); + btnMenberTile.X = ControlCommonResourse.XXLeft; + btnMenberTile.Y = Application.GetRealHeight(480); + btnMenberTile.TextColor = UserCenterColor.Current.TextColor1; + btnMenberTile.TextID = R.MyInternationalizationString.MenberList; + btnMenberTile.TextSize = 15; + bodyFrameLayout.AddChidren(btnMenberTile); + + var frameBack = new FrameLayout(); + frameBack.Y = btnMenberTile.Bottom + Application.GetRealHeight(23); + frameBack.Height = Application.GetRealHeight(11); + frameBack.BackgroundColor = UserCenterColor.Current.White; + bodyFrameLayout.AddChidren(frameBack); + + //娣诲姞鍙互鍚戜笅婊氬姩鐨勬帶浠� + listView = new VerticalListControl(12); + listView.Height = bodyFrameLayout.Height - frameBack.Bottom; + listView.BackgroundColor = UserCenterColor.Current.White; + listView.Y = frameBack.Bottom; + bodyFrameLayout.AddChidren(listView); + + HdlThreadLogic.Current.RunThread(() => + { + //鎬讳箣鍏堟竻绌哄叡浜枃浠跺す鍑嗘病閿� + HdlShardLogic.Current.ClearShardDirectory(); + //鍒濆鍖栨垚鍛樺垪琛� + this.InitMemberList(); + }); + } + + /// <summary> + /// 鍒濆鍖栨垚鍛樺垪琛� + /// </summary> + private async void InitMemberList() + { + //寮�鍚繘搴︽潯 + this.ShowProgressBar(); + + var pra = new MemberListInfoPra(); + string result = await UserCenterLogic.GetResponseDataByRequestHttps("ZigbeeUsers/GetSubAccountByDistributedMark", false, pra); + if (result == null) + { + //鍏抽棴杩涘害鏉� + this.CloseProgressBar(ShowReLoadMode.YES); + return; + } + if (this.Parent == null) + { + //鍏抽棴杩涘害鏉� + this.CloseProgressBar(); + return; + } + + List<MemberInfoRes> listInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<List<MemberInfoRes>>(result); + if (listInfo == null) + { + //鍏抽棴杩涘害鏉� + this.CloseProgressBar(ShowReLoadMode.YES); + return; + } + //鍏抽棴杩涘害鏉� + this.CloseProgressBar(); + + //鍏堟竻绌烘垚鍛樺垪琛ㄤ俊鎭� + UserCenterResourse.ListMemberInfo.Clear(); + + List<string> listCheck = new List<string>(); + foreach (MemberInfoRes infoRes in listInfo) + { + if (listCheck.Contains(infoRes.DistributedMark) == true + || infoRes.Account == UserCenterResourse.UserInfo.Phone + || infoRes.Account == UserCenterResourse.UserInfo.Email) + { + //濡傛灉鏄畠鑷繁鐨勮瘽锛屼笉鏄剧ず + continue; + } + if (UserCenterResourse.UserInfo.AuthorityNo != 1 && infoRes.AccountType != 0) + { + //涓嶈兘澶熻幏鍙栨潈闄愮瓑绾ф瘮浠栭珮鐨�(涓讳汉鑷繁鍙互鏃犺杩欎釜鍒ゆ柇) + continue; + } + + listCheck.Add(infoRes.DistributedMark); + //娣诲姞鎴愬憳淇℃伅鐨勭紦瀛� + UserCenterResourse.ListMemberInfo.Add(infoRes); + } + listInfo.Clear(); + //淇濆瓨鎴愬憳淇℃伅鐨勭紦瀛樺埌鏈湴鏂囦欢 + UserCenterLogic.SaveLocalMemberListInfo(); + if (UserCenterResourse.ListMemberInfo.Count == 0) + { + return; + } + HdlThreadLogic.Current.RunMain(() => + { + //娣诲姞鎴愬憳鍒楄〃 + this.AddMemberListRowByData(); + }); + } + + /// <summary> + /// 娣诲姞鎴愬憳鍒楄〃 + /// </summary> + private void AddMemberListRowByData() + { + if (this.Parent == null) + { + return; + } + var listNewInfo = UserCenterResourse.ListMemberInfo; + + int count = listNewInfo.Count - 1; + for (int i = 0; i < listNewInfo.Count; i++) + { + //娣诲姞鎴愬憳琛� + this.AddRowLayout(listNewInfo[i], i != count); + } + //璋冩暣鍒楄〃鎺т欢鐨勯珮搴� + listView.AdjustRealHeight(Application.GetRealHeight(23)); + //鑾峰彇鎴愬憳澶村儚 + this.GetMemberIcon(); + } + + #endregion + + #region 鈻� 娣诲姞鎴愬憳琛宊________________________ + + /// <summary> + /// 娣诲姞鎴愬憳琛� + /// </summary> + /// <param name="info">Info.</param> + /// <param name="addLine">addLine</param> + private void AddRowLayout(MemberInfoRes info, bool addLine) + { + var rowlayout = new FrameRowControl(listView.rowSpace / 2); + rowlayout.Height = Application.GetRealHeight(138); + rowlayout.MainKeys = info.Account; + listView.AddChidren(rowlayout); + + //鎴愬憳澶村儚鍥炬爣 + string iconPath = System.IO.Path.Combine(UserCenterResourse.AccountOption.UserPictruePath, info.DistributedMark + ".png"); + var btnIcon = new ImageView(); + btnIcon.X = ControlCommonResourse.XXLeft; + btnIcon.Gravity = Gravity.CenterVertical; + btnIcon.Height = this.GetPictrueRealSize(115); + btnIcon.Width = this.GetPictrueRealSize(115); + btnIcon.Radius = (uint)this.GetPictrueRealSize(115) / 2; + if (System.IO.File.Exists(iconPath) == true) + { + btnIcon.ImagePath = iconPath; + } + else + { + btnIcon.ImagePath = "Center/Admin.png"; + this.dicIconControl[info.DistributedMark] = btnIcon; + this.dicMemberAccount[info.DistributedMark] = info.Account; + } + rowlayout.AddChidren(btnIcon); + + //鎴愬憳鏄电О + string memberName = string.IsNullOrEmpty(info.UserName) == true ? info.Account : info.UserName; + var btnName = rowlayout.AddLeftCaption(memberName, 600, true); + btnName.X = ControlCommonResourse.XXLeft + btnIcon.Height + Application.GetRealWidth(35); + btnName.TextSize = 15; + rowlayout.AddChidren(btnName); + + if (addLine == true) + { + //搴曠嚎 + rowlayout.AddBottomLine(); + } + //鍙冲浘鏍� + rowlayout.AddRightArrow(); + rowlayout.ButtonClickEvent += (sender, e) => + { + var form = new MemberManagementForm(); + form.AddForm(info); + }; + } + + /// <summary> + /// 娣诲姞鎴愬憳琛�(澶栭儴璋冪敤) + /// </summary> + /// <param name="info"></param> + public void AddRowLayoutByOtherForm(MemberInfoRes info) + { + var myRow = listView.GetChildren(listView.ChildrenCount - 1); + if (myRow != null) + { + //鏈�鍚庝竴琛屽姞搴曠嚎 + ((FrameRowControl)myRow).AddBottomLine(); + } + this.AddRowLayout(info, false); + //璋冩暣鍒楄〃鎺т欢鐨勯珮搴� + listView.AdjustRealHeight(Application.GetRealHeight(23)); + } + + #endregion + + #region 鈻� 鑾峰彇鎴愬憳澶村儚_______________________ + + /// <summary> + /// 鑾峰彇鎴愬憳澶村儚 + /// </summary> + private void GetMemberIcon() + { + if (dicIconControl.Count == 0) + { + return; + } + HdlThreadLogic.Current.RunThread(async () => + { + var pra = new AccountInfoPra(); + foreach (var keys in dicMemberAccount.Keys) + { + if (this.Parent == null) + { + return; + } + pra.Account = dicMemberAccount[keys]; + var result = await UserCenterLogic.GetByteResponseDataByRequestHttps("ZigbeeUsers/GetSubAccountInfo", false, pra, new List<string>() { "NotSetAgain" }); + if (result == null) + { + continue; + } + var revertObj = Newtonsoft.Json.JsonConvert.DeserializeObject<Common.ResponseEntity.ResponsePack>(System.Text.Encoding.UTF8.GetString(result)); + if (revertObj == null || revertObj.ResponseData == null) + { + continue; + } + var infoResult = Newtonsoft.Json.JsonConvert.DeserializeObject<AccountInfoResult>(revertObj.ResponseData.ToString()); + if (infoResult.HeadImage != null) + { + //鍐欏叆澶村儚鍐呭 + string iconPath = System.IO.Path.Combine(UserCenterResourse.AccountOption.UserPictruePath, keys + ".png"); + Shared.IO.FileUtils.WriteFileByBytes(iconPath, infoResult.HeadImage); + HdlThreadLogic.Current.RunMain(() => + { + dicIconControl[keys].ImageBytes = Shared.IO.FileUtils.ReadFile(iconPath); + }); + } + } + }); + } + + #endregion + + #region 鈻� 鍒犻櫎鎸囧畾琛宊________________________ + + /// <summary> + /// 鍒犻櫎鎸囧畾琛�(澶栭儴璋冪敤) + /// </summary> + /// <param name="accountId"></param> + public void DeleteRowByAccount(string accountId) + { + for (int i = 0; ; i++) + { + var row = (FrameRowControl)listView.GetChildren(i); + if (row == null) + { + break; + } + if (row.MainKeys == accountId) + { + row.RemoveFromParent(); + //璋冩暣鍒楄〃鎺т欢鐨勯珮搴� + listView.AdjustRealHeight(Application.GetRealHeight(23)); + + break; + } + } + } + + #endregion + + #region 鈻� 鎼滅储ID_____________________________ + + /// <summary> + /// 鎼滅储鎸囧畾ID鐨勪俊鎭� + /// </summary> + /// <param name="accountId">鎴愬憳ID</param> + /// <param name="txtMsg">淇℃伅鎺т欢</param> + private async void SearchMemberInfo(string accountId) + { + var pra = new AccountInfoPra(); + pra.Account = accountId; + string result = await UserCenterLogic.GetResponseDataByRequestHttps("ZigbeeUsers/GetSubAccountInfo", false, pra, new List<string>() { "AccountNoExists" }); + if (result == null) + { + //寮傚父 + return; + } + if (result == string.Empty) + { + //鎴愬憳涓嶅瓨鍦� + var form = new MemberNotEsixtForm(); + form.AddForm(); + return; + } + + var infoResult = Newtonsoft.Json.JsonConvert.DeserializeObject<AccountInfoResult>(result); + infoResult.Account = accountId; + + Application.RunOnMainThread(() => + { + var form = new AddMemberInfoForm(); + form.AddForm(infoResult); + }); + } + + #endregion + + #region 鈻� 鐣岄潰閲嶆柊婵�娲讳簨浠禵__________________ + + /// <summary> + /// 鑷韩鐨勪笂灞傜晫闈㈠叧闂悗,瀹冭嚜韬浜庢渶涓婂眰鏃�,瑙﹀彂鐨勪簨浠� + /// </summary> + public override int FormActionAgainEvent() + { + //娓呯┖鍏变韩鏂囦欢澶� + HdlShardLogic.Current.ClearShardDirectory(); + + return 1; + } + + #endregion + } +} -- Gitblit v1.8.0