### MyHouse V1.0.2502.0801 - *.[新增]适配新版接口。 ### SmartHouseAPI V1.0.2502.0801 - *.[新增]支持Docker部署,支持NAS。
252 lines
10 KiB
C#
252 lines
10 KiB
C#
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<CardInfo> list = new List<CardInfo>();
|
|
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;
|
|
}
|
|
}
|