From a9d1161b1df96e7ddad566335989a1444e433ef5 Mon Sep 17 00:00:00 2001 From: wjc <1243177876@qq.com> Date: 星期二, 28 三月 2023 11:54:45 +0800 Subject: [PATCH] 2023年03月28日11:52:02 --- HDL_ON/UI/UI2/4-PersonalCenter/Visitor/VisitorQRCodePage.cs | 673 +++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 660 insertions(+), 13 deletions(-) diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/Visitor/VisitorQRCodePage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/Visitor/VisitorQRCodePage.cs index 01c9940..66a4f2a 100644 --- a/HDL_ON/UI/UI2/4-PersonalCenter/Visitor/VisitorQRCodePage.cs +++ b/HDL_ON/UI/UI2/4-PersonalCenter/Visitor/VisitorQRCodePage.cs @@ -1,31 +1,678 @@ -锘縰sing System; +锘�#if __Android__ + +using System; using HDL_ON.UI.CSS; using Shared; +using HDL_ON.DAL.Server; +using System.Collections.Generic; +using Com.Hdl.Hdllinphonesdk.Utils; +using Com.Hdl.Hdllinphonesdk.Dialog; namespace HDL_ON.UI.UI2.PersonalCenter.Visitor { public class VisitorQRCodePage : FrameLayout { - /// <summary> - /// 椤堕儴title - /// </summary> - FrameLayout topView; FrameLayout bodyView; + VerticalScrolViewLayout bodyScrolView; + private EditText phoneNumberEditText;// 鐢佃瘽鍙风爜EditText + private EditText pwdEditText;// 瀵嗙爜EditText + private Button randomBtn;//闅忔満瀵嗙爜Btn + private FrameLayout codeLayout; + private ImageView codeIV;// 浜岀淮鐮� + private Button codeSaveTipBtn; + private Button codeTip;//浜岀淮鐮佹湁鏁堟湡鎻愮ず + private Button visitorVoucherBtn; + private VisitorTempPassword tempPassword; + + Action backAction;// 鍚庨��鎸夐敭锛屽埛鏂癠I public VisitorQRCodePage() { - Action click = () => + bodyView = this; + } + + public VisitorQRCodePage(Action action,VisitorTempPassword pwd) + { + bodyView = this; + this.tempPassword = pwd; + backAction = action; + } + + public override void RemoveFromParent() + { + this.tempPassword = null; + backAction?.Invoke(); + base.RemoveFromParent(); + } + + public void LoadPage() + { +#region 椤堕儴瀵艰埅鏍� + if (tempPassword == null || tempPassword.id == null) { - VisitorHistoryPage page = new VisitorHistoryPage(); - MainPage.BasePageView.AddChidren(page); - page.LoadPage(); - MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; + tempPassword = new VisitorTempPassword(); + + Action click = () => + { + Action action = () => + { + LoadPage(); + }; + VisitorHistoryPage page = new VisitorHistoryPage(action); + MainPage.BasePageView.AddChidren(page); + page.LoadPage(); + MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; + }; + + bodyView.BackgroundColor = CSS_Color.BackgroundColor; + new TopViewDiv(bodyView, Language.StringByID(StringId.VisitorInvitation)) + .LoadTopView_SettingText(click, Language.StringByID(StringId.VisitorRecord)); + } + else + { + bodyView.BackgroundColor = CSS_Color.BackgroundColor; + new TopViewDiv(bodyView, Language.StringByID(StringId.VisitorInvitation)).LoadTopView(); + } +#endregion + + bodyScrolView = new VerticalScrolViewLayout() + { + Y = Application.GetRealHeight(64), + VerticalScrollBarEnabled = false, + BackgroundColor = CSS_Color.MainBackgroundColor, + }; + bodyView.AddChidren(bodyScrolView); + + // 鎻愮ず鏂囧瓧 + bodyScrolView.AddChidren(new Button() + { + Text = Language.StringByID(StringId.VisitorTip), + IsMoreLines = true, + TextSize = CSS_FontSize.PromptFontSize_FirstLevel, + TextColor = CSS_Color.PromptingColor1, + TextAlignment = TextAlignment.Center, + Padding = new Padding(0, Application.GetRealWidth(20), 0, Application.GetRealWidth(20)), + Height = Application.GetRealHeight(60), + }); + +#region 鎵嬫満鍙� + bodyScrolView.AddChidren(new Button() + { + Text = Language.StringByID(StringId.PhoneNumber), + Y = Application.GetRealWidth(10), + TextSize = CSS_FontSize.SubheadingFontSize, + TextColor = CSS_Color.FirstLevelTitleColor, + Height = Application.GetRealHeight(20), + Padding = new Padding(0, Application.GetRealWidth(20), 0, Application.GetRealWidth(20)), + TextAlignment = TextAlignment.CenterLeft, + }); + + phoneNumberEditText = new EditText() + { + Height = Application.GetRealHeight(45), + X = Application.GetRealWidth(20), + Width = Application.GetRealWidth(335), + TextSize = CSS_FontSize.TextFontSize, + TextColor = CSS_Color.FirstLevelTitleColor, + + PlaceholderText = Language.StringByID(StringId.InputPhoneNumberOfTheVisitor), + Text = tempPassword.phone, + IsNumberKeyboardType = true, + PlaceholderTextColor = CSS_Color.PromptingColor1, + }; + bodyScrolView.AddChidren(phoneNumberEditText); + //phoneNumberEditText.Foucs = true; + + // 鍒嗗壊绾� + bodyScrolView.AddChidren(new Button() + { + X = Application.GetRealWidth(20), + Width = Application.GetRealWidth(335), + Height = Application.GetRealHeight(1), + BackgroundColor = CSS_Color.DividingLineColor, + }); +#endregion + +#region 鍔ㄦ�佸瘑鐮� + bodyScrolView.AddChidren(new Button() { Height = Application.GetRealWidth(10), }); + bodyScrolView.AddChidren(new Button() + { + Text = Language.StringByID(StringId.linshimima), + TextSize = CSS_FontSize.SubheadingFontSize, + TextColor = CSS_Color.FirstLevelTitleColor, + Height = Application.GetRealHeight(20), + Padding = new Padding(0, Application.GetRealWidth(20), 0, Application.GetRealWidth(20)), + TextAlignment = TextAlignment.CenterLeft, + }); + + FrameLayout pwdLayout = new FrameLayout() + { + Height = Application.GetRealHeight(40), }; - bodyView.BackgroundColor = CSS_Color.BackgroundColor; - new TopViewDiv(bodyView, Language.StringByID(StringId.MemberPermissionManagement)).LoadTopView_SettingText(click, ""); + // 瀵嗙爜杈撳叆妗� + pwdEditText = new EditText() + { + X = Application.GetRealWidth(20), + TextSize = CSS_FontSize.TextFontSize, + TextColor = CSS_Color.FirstLevelTitleColor, + Width = Application.GetRealWidth(335), + PlaceholderText = Language.StringByID(StringId.Input6_DigitsTemporaryPassword), + IsNumberKeyboardType = true, + PlaceholderTextColor = CSS_Color.PromptingColor1, + }; + pwdLayout.AddChidren(pwdEditText); - // + //闅忔満瀵嗙爜Btn + randomBtn = new Button() + { + X = Application.GetRealWidth(275), + Width = Application.GetRealWidth(80), + Text = Language.StringByID(StringId.RandomGeneration), + TextAlignment = TextAlignment.CenterRight, + TextColor = CSS_Color.MainColor, + TextSize = CSS_FontSize.TextFontSize, + }; + pwdLayout.AddChidren(randomBtn); + bodyScrolView.AddChidren(pwdLayout); + + // 鍒嗗壊绾� + bodyScrolView.AddChidren(new Button() + { + X = Application.GetRealWidth(20), + Width = Application.GetRealWidth(335), + Height = Application.GetRealHeight(1), + BackgroundColor = CSS_Color.DividingLineColor, + }); +#endregion + +#region 浜岀淮鐮佺敓鏁堟椂闂� + FrameLayout startLayout = new FrameLayout() + { + Height = Application.GetRealHeight(40), + Y = Application.GetRealWidth(10), + }; + + startLayout.AddChidren(new Button() + { + Text = Language.StringByID(StringId.EffectiveTime), + X = Application.GetRealWidth(20), + Width = Application.GetRealWidth(130), + TextSize = CSS_FontSize.SubheadingFontSize, + TextColor = CSS_Color.FirstLevelTitleColor, + TextAlignment = TextAlignment.CenterLeft, + Enable = false, + }); + Button startTimeText = new Button() + { + X = Application.GetRealWidth(159), + Width = Application.GetRealWidth(150), + TextAlignment = TextAlignment.CenterRight, + TextSize = CSS_FontSize.TextFontSize, + TextColor = CSS_Color.FirstLevelTitleColor, + }; + if (tempPassword.tempPwd == null || tempPassword.tempPwd == "") + { + startTimeText.Text = "";// System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); + } + else + { + startTimeText.Text = tempPassword.validBeginTime; + } + + startLayout.AddChidren(startTimeText); + startLayout.AddChidren(new Button() + { + X = Application.GetRealWidth(339), + Gravity = Gravity.CenterVertical, + Width = Application.GetMinRealAverage(16), + Height = Application.GetMinRealAverage(16), + UnSelectedImagePath = "Public/Right.png", + Enable = false, + }); + Button startTimeBtn = new Button(); + startLayout.AddChidren(startTimeBtn); + // dialog鍥炶皟 + Action<string> startTimeAction = (str) => + { + startTimeText.Text = str + ":00"; + }; + startTimeBtn.MouseUpEventHandler += (sender, e) => + { + try + { + new LpTimeDialog(Application.Activity, new LpTimeDialogCallBak(startTimeAction)).Show(); + } + catch (Exception ex) + { + string error = ex.Message; + } + }; + bodyScrolView.AddChidren(startLayout); + // 鍒嗗壊绾� + bodyScrolView.AddChidren(new Button() + { + X = Application.GetRealWidth(20), + Width = Application.GetRealWidth(335), + Height = Application.GetRealHeight(1), + BackgroundColor = CSS_Color.DividingLineColor, + }); + +#endregion + +#region 浜岀淮鐮佸け鏁堟椂闂� + FrameLayout endLayout = new FrameLayout() + { + Height = Application.GetRealHeight(40), + Y = Application.GetRealWidth(10), + }; + + endLayout.AddChidren(new Button() + { + Text = Language.StringByID(StringId.FailureTime), + X = Application.GetRealWidth(20), + Width = Application.GetRealWidth(130), + TextSize = CSS_FontSize.SubheadingFontSize, + TextColor = CSS_Color.FirstLevelTitleColor, + TextAlignment = TextAlignment.CenterLeft, + Enable = false, + }); + Button endTimeText = new Button() + { + X = Application.GetRealWidth(159), + Width = Application.GetRealWidth(150), + TextAlignment = TextAlignment.CenterRight, + TextSize = CSS_FontSize.TextFontSize, + TextColor = CSS_Color.FirstLevelTitleColor, + Enable = false, + }; + if (tempPassword.tempPwd == null || tempPassword.tempPwd == "") + { + endTimeText.Text = "";// System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); + } + else + { + endTimeText.Text = tempPassword.validEndTime; + } + endLayout.AddChidren(endTimeText); + endLayout.AddChidren(new Button() + { + X = Application.GetRealWidth(339), + Gravity = Gravity.CenterVertical, + Width = Application.GetMinRealAverage(16), + Height = Application.GetMinRealAverage(16), + UnSelectedImagePath = "Public/Right.png", + Enable = false, + }); + Button endTimeBtn = new Button(); + endLayout.AddChidren(endTimeBtn); + bodyScrolView.AddChidren(endLayout); + // 鍒嗗壊绾� + bodyScrolView.AddChidren(new Button() + { + X = Application.GetRealWidth(20), + Width = Application.GetRealWidth(335), + Height = Application.GetRealHeight(1), + BackgroundColor = CSS_Color.DividingLineColor, + }); + // dialog鍥炶皟 + Action<string> endTimeAction = (str) => + { + endTimeText.Text = str + ":00"; + }; + endTimeBtn.MouseUpEventHandler += (sender, e) => + { + try + { + new LpTimeDialog(Application.Activity, new LpTimeDialogCallBak(endTimeAction)).Show(); + } + catch (Exception ex) + { + string error = ex.Message; + } + }; +#endregion + +#region 浜岀淮鐮� + bodyScrolView.AddChidren(new Button() { Height = Application.GetRealWidth(33), }); + codeLayout = new FrameLayout() + { + X = Application.GetRealWidth(117), + Width = Application.GetRealWidth(142), + Height = Application.GetRealWidth(142), + }; + bodyScrolView.AddChidren(codeLayout); + + // 浜岀淮鐮両magView + codeIV = new ImageView() + { + BackgroundColor = CSS_Color.BackgroundColor, + }; + codeLayout.AddChidren(codeIV); + + bodyScrolView.AddChidren(new Button() { Height = Application.GetRealWidth(20), }); + codeSaveTipBtn = new Button() + { + X = Application.GetRealWidth(16), + Width = Application.GetRealWidth(343), + Height = Application.GetRealWidth(20), + Text = Language.StringByID(StringId.LongPressQRCodeSave), + TextAlignment = TextAlignment.Center, + TextColor = CSS_Color.FirstLevelTitleColor, + Visible = false, + }; + bodyScrolView.AddChidren(codeSaveTipBtn); +#endregion + + bodyScrolView.AddChidren(new Button() { Height = Application.GetRealWidth(28), }); + visitorVoucherBtn = new Button() + { + X = Application.GetRealWidth(78), + Width = Application.GetRealWidth(220), + Height = Application.GetRealWidth(44), + BackgroundColor = CSS_Color.MainColor, + Radius = (uint)Application.GetRealWidth(44), + TextSize = CSS_FontSize.SubheadingFontSize, + TextAlignment = TextAlignment.Center, + TextColor = CSS_Color.textWhiteColor, + }; + bodyScrolView.AddChidren(visitorVoucherBtn); + + Action voucher_action = () => + { + if (codeIV.ImageBytes == null) + { + // 璇锋眰鏈嶅姟绔紝鐢熸垚涓存椂瀵嗙爜 + tempPassword.homeId = Entity.DB_ResidenceData.Instance.CurrentRegion.id; + tempPassword.phone = phoneNumberEditText.Text; + tempPassword.tempPwd = pwdEditText.Text; + tempPassword.validBeginTime = startTimeText.Text; + tempPassword.validEndTime = endTimeText.Text; + tempPassword.useCount = 1000; + CreateVisitorPassword(tempPassword); + } + else + { + // 鍒犻櫎璁垮涓存椂瀵嗙爜 + DelVisitorPassword(tempPassword); + } + }; + visitorVoucherBtn.MouseUpEventHandler += (sender, e) => + { + if (startTimeText.Text.Trim() == "") + { + var tip_dialog = new Tip() + { + Text = Language.StringByID(StringId.VisitorStartTime), + CloseTime = 2, + Direction = AMPopTipDirection.None + }; + tip_dialog.Show(MainPage.BaseView); + return; + } + + if (endTimeText.Text.Trim() == "") + { + var tip_dialog = new Tip() + { + Text = Language.StringByID(StringId.VisitorEndTime), + CloseTime = 2, + Direction = AMPopTipDirection.None + }; + tip_dialog.Show(MainPage.BaseView); + return; + } + + if (phoneNumberEditText.Text.Trim() == "" || phoneNumberEditText.Text.Trim().Length != 11) + { + var tip_dialog = new Tip() + { + Text = Language.StringByID(StringId.PhoneNumberErrorTip), + CloseTime = 2, + Direction = AMPopTipDirection.None + }; + tip_dialog.Show(MainPage.BaseView); + phoneNumberEditText.Foucs = true; + return; + } + + if (pwdEditText.Text.Trim() == "" || pwdEditText.Text.Trim().Length != 6) + { + var tip_dialog = new Tip() + { + Text = Language.StringByID(StringId.Input6_DigitsTemporaryPassword), + CloseTime = 2, + Direction = AMPopTipDirection.None + }; + tip_dialog.Show(MainPage.BaseView); + pwdEditText.Foucs = true; + return; + } + + string tip = ""; + string message = ""; + if (codeIV.ImageBytes == null) + { + tip = Language.StringByID(StringId.tip); + message = Language.StringByID(StringId.VisitorTipContent); + } + else + { + tip = Language.StringByID(StringId.tip); + message = Language.StringByID(StringId.VisitorDelTipContent); + } + new LpTipDialog(Application.Activity, tip, message, new LpTipDialogCallBack(voucher_action)).Show(); + }; + + //灏嗕簩缁寸爜淇濆瓨鍒版湰鍦扮浉鍐� + codeIV.MouseLongEventHandler += (sender, e) => + { +#if __Android__ + bool bol = HDLImageUtils.SaveImageToGallery(Application.Activity, + Scan.BytesFromText(tempPassword.tempPwd, codeIV.Width, codeIV.Height)); + + string msg = ""; + if (bol) + { + msg = Language.StringByID(StringId.SavedSuccessfully); + } + else + { + msg = Language.StringByID(StringId.saveFail); + } + + var tip_dialog = new Tip() + { + Text = msg, + CloseTime = 2, + Direction = AMPopTipDirection.None + }; + tip_dialog.Show(MainPage.BaseView); +#endif + }; + + if (tempPassword != null && tempPassword.id != null && tempPassword.id != "") + { + pwdEditText.Text = tempPassword.tempPwd; + pwdEditText.PlaceholderText = Language.StringByID(StringId.TemporaryPasswordInvalid); + pwdEditText.Enable = false; + phoneNumberEditText.Enable = false; + randomBtn.Visible = false; + startTimeBtn.Enable = false; + endTimeBtn.Enable = false; + } + else + { + pwdEditText.FoucsChanged = (sender, e) => + { + if (!pwdEditText.Foucs) + { + // 6浣嶅瘑鐮侀獙璇� + var tip_dialog = new Tip() + { + Text = Language.StringByID(StringId.Input6_DigitsTemporaryPassword), + CloseTime = 2, + Direction = AMPopTipDirection.None + }; + tip_dialog.Show(MainPage.BaseView); + } + }; + + randomBtn.MouseUpEventHandler += (sender, e) => + { + string tPwd = getRandomPwd(); + pwdEditText.Text = tPwd; + }; + + phoneNumberEditText.FoucsChanged = (sender, e) => + { + if (!phoneNumberEditText.Foucs) + { + //鎵嬫満鍙风爜閿欒鎻愮ず + if (!Utlis.CheckPhoneNumber(phoneNumberEditText.Text.Trim(), "86")) + { + var tip_dialog = new Tip() + { + Text = Language.StringByID(StringId.PhoneNumberErrorTip), + CloseTime = 2, + Direction = AMPopTipDirection.None + }; + tip_dialog.Show(MainPage.BaseView); + } + } + }; + } + + RefreshVisitorVoucherBtn(); + } + + /// <summary> + /// 鍒锋柊VisitorVoucherBtn鐘舵�� + /// </summary> + private void RefreshVisitorVoucherBtn() + { + if (tempPassword == null) return; + + if (tempPassword.tempPwd != null && tempPassword.tempPwd != "") + { + codeIV.ImageBytes = Scan.BytesFromText(tempPassword.tempPwd, codeIV.Width, codeIV.Height); + //鍒ゆ柇浜岀淮鐮佹槸鍚﹀け鏁� + DateTime endTime = DateTime.Parse(tempPassword.validEndTime); + DateTime currentTime = DateTime.Now; + if (currentTime > endTime || !tempPassword.status) + { + // 浜岀淮鐮佹湁鏁堟湡鎻愮ず + codeTip = new Button() + { + TextAlignment = TextAlignment.Center, + TextColor = CSS_Color.textWhiteColor, + BackgroundColor = CSS_Color.DialogTransparentColor1, + Text = Language.StringByID(StringId.QRcodeIsInvalid), + }; + codeLayout.AddChidren(codeTip); + visitorVoucherBtn.Visible = false; + } + visitorVoucherBtn.Text = Language.StringByID(StringId.CancleVisitorCredentials); + } + else + { + visitorVoucherBtn.Visible = true; + visitorVoucherBtn.Text = Language.StringByID(StringId.GenerateVisitorCredentials); + } + } + + /// <summary> + /// 娣诲姞涓存椂瀵嗙爜锛堣瀹㈠嚟璇侊級 + /// </summary> + /// <param name="homeId">浣忓畢id</param> + /// <param name="phone">璁垮鎵嬫満鍙�</param> + /// <param name="tempPwd">涓存椂瀵嗙爜</param> + /// <param name="validBeginTime">寮�濮嬫椂闂�</param> + /// <param name="validEndTime">缁撴潫鏃堕棿</param> + /// <param name="useCount">浣跨敤娆℃暟锛岄粯璁や竴涓暟鍊煎ぇ涓�浜涚殑</param> + /// <returns></returns> + private bool CreateVisitorPassword(VisitorTempPassword pwd) + { + var result = false; + Dictionary<string, object> dictionary = new Dictionary<string, object>(); + dictionary.Add("homeId", pwd.homeId); + dictionary.Add("phone", pwd.phone); + dictionary.Add("tempPwd", pwd.tempPwd); + dictionary.Add("validBeginTime", pwd.validBeginTime); + dictionary.Add("validEndTime", pwd.validEndTime); + dictionary.Add("useCount", pwd.useCount); + + var requestJson = HttpUtil.GetSignRequestJson(dictionary); + var pack = HttpUtil.RequestHttpsPost(NewAPI.API_POST_ADD_TEMP_PASSWORD, requestJson); + if (pack != null) + { + if (pack.Code == StateCode.SUCCESS) + { + pwd.id = pack.Data.ToString(); + codeIV.ImageBytes = Scan.BytesFromText(pwdEditText.Text, codeIV.Width, codeIV.Height); + codeSaveTipBtn.Visible = true; + RefreshVisitorVoucherBtn(); + } + else { + var tip_dialog = new Tip() + { + Text = pack.message, + CloseTime = 2, + Direction = AMPopTipDirection.None + }; + tip_dialog.Show(MainPage.BaseView); + } + } + return result; + } + + /// <summary> + /// 鍒犻櫎涓存椂瀵嗙爜(璁垮鍑瘉) + /// </summary> + /// <param name="home_id">浣忓畢id</param> + /// <param name="pwd_id">涓存椂瀵嗙爜id</param> + private bool DelVisitorPassword(VisitorTempPassword pwd) + { + Dictionary<string, object> dictionary = new Dictionary<string, object>(); + dictionary.Add("homeId", pwd.homeId); + dictionary.Add("id", pwd.id); + var result = false; + var requestJson = HttpUtil.GetSignRequestJson(dictionary); + var pack = HttpUtil.RequestHttpsPost(NewAPI.API_POST_DEL_TEMP_PASSWORD, requestJson); + if (pack != null) + { + if (pack.Code == StateCode.SUCCESS) + { + // 鍏抽棴褰撳墠鐣岄潰 + RemoveFromParent(); + } + } + RefreshVisitorVoucherBtn(); + return result; + } + + /// <summary> + /// 鐢熸垚6浣嶉殢鏈哄瘑鐮� + /// </summary> + /// <returns></returns> + private string getRandomPwd() + { + string pwd = ""; + for (int i = 0; i < 6; i++) + { + int math = new Random().Next(0, 9); + pwd += math; + } + return pwd; } } } +#else +using Shared; + +namespace HDL_ON.UI.UI2.PersonalCenter.Visitor +{ + public class VisitorQRCodePage : FrameLayout + { } +} +#endif \ No newline at end of file -- Gitblit v1.8.0