using ryCommon; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace MyHouse.WebAPITool { public partial class FrmCardsView : RySkins.SKinForm { public FrmCardsView() { InitializeComponent(); OlvBankName.AspectGetter = delegate (object x) { return ((CardInfo)x).BankName; }; OlvCardNum.AspectGetter = delegate (object x) { return ((CardInfo)x).CardNum; }; OlvBillDate.AspectGetter = delegate (object x) { return "每月"+((CardInfo)x).BillDate+"日"; }; OlvRePayDate.AspectGetter = delegate (object x) { var row = (CardInfo)x; if (row.RePayDateMode == 0) { return "每月" + row.RePayDate + "日"; } else { return "账单日后第" + row.RePayDate + "天"; } }; OlvOutTime.AspectGetter = delegate (object x) { var OutTime = ((CardInfo)x).OutTime; return OutTime; }; OlvOutTime.AspectToStringConverter = delegate (object row, object x) { var OutTime = (long)x; if (OutTime == 0) { return "永不过期"; } return OutTime.ToDateTime().ToString("yyyy-MM-dd dddd"); }; OlvNextRePayDate.AspectGetter = delegate (object x) { var CardInfo = (CardInfo)x; if (CardInfo.RePayDate == 0) { return DateTime.MinValue; } return API.API.GetNextRepayDate(CalcDt, CardInfo.BillDate, CardInfo.RePayDateMode,CardInfo.RePayDate); }; OlvNextRePayDate.AspectToStringConverter = delegate (object row, object x) { var NextRePayDate = (DateTime)x; if (NextRePayDate == DateTime.MinValue) { return ""; } var str = NextRePayDate.ToString("yyyy-MM-dd dddd"); var monthcount = RyDate.GetMonthCount(DateTime.Now, NextRePayDate); if(DateTime.Now > NextRePayDate) { return str; } if (monthcount == 1) { return str + "(下月"+NextRePayDate.Day+"日)"; } else if (monthcount ==2) { return str + "(下下月" + NextRePayDate.Day + "日)"; } else if (monthcount == 0) { return str + "(本月" + NextRePayDate.Day + "日)"; } return NextRePayDate.ToString("yyyy-MM-dd dddd"); }; OlvDes.AspectGetter = delegate (object x) { return((CardInfo)x).Des; }; OlvFreeYear.AspectGetter = delegate (object x) { var CardInfo = (CardInfo)x; return CardInfo.FreeYearDate; }; OlvFreeYear.AspectToStringConverter = delegate (object row, object x) { var CardInfo = (CardInfo)row; if (CardInfo.StartTime == 0) { return "免年费"; } var FreeYearDate = CardInfo.FreeYearDate.ToDateTime(); var day = CardInfo.StartTime % 100; var month = (CardInfo.StartTime - day) / 100; var dt_start = new DateTime(DateTime.Now.Year, month, day); if (dt_start > DateTime.Now.Date) { dt_start = dt_start.AddYears(-1); } var dt_end = dt_start.AddYears(1); if(FreeYearDate>= dt_start && FreeYearDate< dt_end) { return "本年度已达标("+dt_start.ToString("yyyy-MM-dd")+"至"+ dt_end.AddDays(-1).ToString("yyyy-MM-dd") + ")"; } else { return "本年度尚未达标(" + dt_start.ToString("yyyy-MM-dd") + "至" + dt_end.AddDays(-1).ToString("yyyy-MM-dd") + ")"; } }; LvCards.FormatRow += LvCbResult_FormatRow; LvCards.FormatCell += LvCbResult_FormatCell; } private void LvCbResult_FormatCell(object sender, BrightIdeasSoftware.FormatCellEventArgs e) { var item = (CardInfo)e.Model; if(e.ColumnIndex==OlvDes.Index) { e.SubItem.ForeColor= Color.Gray; } else if (e.ColumnIndex == OlvFreeYear.Index) { if (e.SubItem.Text.IndexOfEx("已达标") >= 0 || e.SubItem.Text.IndexOfEx("免年费") >= 0) { e.SubItem.ForeColor = Color.Blue; } else { e.SubItem.ForeColor = Color.Red; } } } private void LvCbResult_FormatRow(object sender, BrightIdeasSoftware.FormatRowEventArgs e) { var item = (CardInfo)e.Model; if (!item.Enabled) { e.Item.ForeColor = Color.Gray; } } private void rySearch1_OnSearch(object sender, EventArgs e) { LvCards.ClearObjects(); List list = new List(); string post_str = "api=GetCardsList&name=" + RyWeb.WebDecode.UrlEncode(rySearch1.Text); var jsonResult = API.API.Post("Card", "GetCardsList", post_str); if (jsonResult.IsOK) { DataTable data = jsonResult.List; for (int i = 0; i < data.Rows.Count; i++) { DataRow row = data.Rows[i]; list.Add(new CardInfo() { Id = row["id"].ToInt(), BankName = row["BankName"].ToString(), CardNum = row["CardNum"].ToString(), BillDate = row["BillDate"].ToInt(), RePayDateMode = row["RePayDateMode"].ToInt(), RePayDate = row["RePayDate"].ToInt(), Enabled = row["Enabled"].ToInt()==1, OutTime = row["OutTime"].ToInt64(), StartTime = row["StartTime"].ToInt(), FreeYearDate = row["FreeYearDate"].ToInt64(), Des = row["Des"].ToString(), }); } } else { MessageBox.Show(jsonResult.ResultText, "错误代码:" + jsonResult.Result, MessageBoxButtons.OK, MessageBoxIcon.Warning); } LvCards.AddObjects(list); } private void FrmCardsView_Load(object sender, EventArgs e) { rySearch1.PerformClick(); LvCards.Sort(OlvNextRePayDate, SortOrder.Descending); } private void 添加银行卡ToolStripMenuItem_Click(object sender, EventArgs e) { FrmCardAdd frm = new FrmCardAdd(); if(frm.ShowDialog()==DialogResult.OK) { rySearch1.PerformClick(); } frm.Dispose(); } private void 修改银行卡ToolStripMenuItem_Click(object sender, EventArgs e) { var item = (CardInfo)LvCards.SelectedObject; if (item == null) { return; } FrmCardAdd frm = new FrmCardAdd(); frm.GetInfo(item.Id); if (frm.ShowDialog() == DialogResult.OK) { rySearch1.PerformClick(); } frm.Dispose(); } private DateTime CalcDt=DateTime.Now; private void DtPayDate_ValueChanged(object sender, EventArgs e) { CalcDt = DtPayDate.Value; LvCards.Refresh(); LvCards.Sort(OlvNextRePayDate, SortOrder.Descending); } private void 设置为年费达标ToolStripMenuItem_Click(object sender, EventArgs e) { if (RySkins.Msg.ShowMsg("确定要设置本年度年费已达标吗?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No) { return; } var item = (CardInfo)LvCards.SelectedObject; if (item == null) { return; } string post_str = "api=SetFreeYearPay&id=" + item.Id; var jsonResult = API.API.Post("Card", "SetFreeYearPay", post_str); if (jsonResult.IsOK) { RySkins.Msg.ShowMsg("已设置年费达标。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); rySearch1.PerformClick(); } else { API.API.ErrorJson(jsonResult); } } private void 删除银行卡ToolStripMenuItem_Click(object sender, EventArgs e) { if (LvCards.SelectedObject == null) { MessageBox.Show("请先选择要删除的项。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } var item = (CardInfo)LvCards.SelectedObject; var selectId = item.Id; if (RySkins.Msg.ShowMsg("确定要删除该项吗?一旦删除将不可恢复。", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No) { return; } string post_str = "api=DelCard&id=" + selectId; var jsonResult = API.API.Post("Card", "DelCard", post_str); if (jsonResult.IsOK) { LvCards.RemoveObject(item); } else { API.API.ErrorJson(jsonResult); } } } public class CardInfo { public int Id { get; set; } = 0; public string BankName { get; set; } = ""; public string CardNum { get; set; } = ""; public int BillDate { get; set; } = 0; public int RePayDateMode { get; set; } = 0; public int RePayDate{ get; set; } = 0; public bool Enabled { get; set; } = true; public int StartTime { get; set; } = 0; public long OutTime { get; set; } = 0; public string Des { get; set; } = ""; public long FreeYearDate { get; set; } = 0; } }