SmartHouseAPI/Source/MyHouse/DbOp/FrmLocationView.cs
zilinsoft f0ff641ed4 ## 2025-02-08 星期六更新
### MyHouse    V1.0.2502.0801
- *.[新增]适配新版接口。
### SmartHouseAPI    V1.0.2502.0801
- *.[新增]支持Docker部署,支持NAS。
2025-02-08 17:01:20 +08:00

301 lines
11 KiB
C#

using ryCommon;
using ryCommonDb;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace MyHouse.DbOp
{
public partial class FrmLocationView : RySkins.SKinForm
{
string titleName = "存储位置";
public FrmLocationView()
{
InitializeComponent();
OlvSN.AspectGetter = delegate (object x) { return ((LocationInfo)x).SN; };
OlvName.AspectGetter = delegate (object x) { return ((LocationInfo)x).Name; };
OlvDes.AspectGetter = delegate (object x) { return ((LocationInfo)x).Des; };
OlvAddTime.AspectGetter = delegate (object x) { return ((LocationInfo)x).AddTimeStr; };
}
#region
private void RySearch1_OnSearch(object sender, EventArgs e)
{
ctlMyPage1.RecordCount = 1;
ctlMyPage1.GotoPageIndex(1);
}
private void CtlMyPage1_OnPageChange(object sender, EventArgs e)
{
#region
LvCbResult.ClearObjects();
var page_index = ctlMyPage1.GetCurrPageIndex();
if (page_index == 0) { page_index = 1; }
string post_str = "api=GetLocationList&name=" + RyWeb.WebDecode.UrlEncode(rySearch1.Text) + "&page=" + page_index + (page_index == 1 ? "&getpagecount=1": "");
var jsonResult = API.API.Post("Goods", "GetLocationList", post_str);
if (jsonResult.IsOK)
{
List<LocationInfo> list = new List<LocationInfo>();
if (page_index == 1)
{
ctlMyPage1.RecordCount = jsonResult.Get("pagecount", 0);
}
DataTable data = jsonResult.List;
for (int i = 0; i < data.Rows.Count; i++)
{
DataRow row = data.Rows[i];
list.Add(new LocationInfo()
{
Id = row["id"].ToInt(),
SN = row["SN"].ToString(),
Name = row["Name"].ToString(),
Img = row["img"].ToString(),
Des = row["Des"].ToString(),
AddTime = row["AddTime"].ToInt64().ToDateTime()
});
}
LvCbResult.AddObjects(list);
}
#endregion
}
private void GetRow(int id, int index)
{
#region
var jsonResult = API.API.Post("Goods", "GetLocation", "id=" + id);
if (jsonResult.IsOK)
{
DataTable data = jsonResult.List;
if (data.Rows.Count > 0)
{
DataRow row = data.Rows[0];
var item = (LocationInfo)LvCbResult.GetModelObject(index);
item.SN = row["SN"].ToString();
item.Name = row["Name"].ToString();
item.Img = row["img"].ToString();
item.Des = row["Des"].ToString();
//添加剩余的项目
//添加完毕
LvCbResult.UpdateObject(item);
}
}
#endregion
}
#endregion
private void BtnAdd_Click(object sender, EventArgs e)
{
FrmLocationAdd frm = new FrmLocationAdd()
{
Text = "添加"+ titleName,
Icon = Icon,
isAdd = 1
};
frm.mr = new ModalForm(this, frm);
frm.mr.OnDialogResult += new ModalForm.DialogResultHandler((object t, DialogResult dg) => {
if (dg == DialogResult.OK)
{
rySearch1.PerformClick();
}
});
frm.mr.ShowModal();
}
private void BtnEdit_Click(object sender, EventArgs e)
{
if (LvCbResult.SelectedObject == null) { return; }
var item = (LocationInfo)LvCbResult.SelectedObject;
var selectId = item.Id;
FrmLocationAdd frm = new FrmLocationAdd()
{
Text = "修改"+ titleName,
Icon = Icon,
isAdd = 0
};
frm.GetInfo(selectId.ToString());
frm.mr = new ModalForm(this, frm);
frm.mr.OnDialogResult += new ModalForm.DialogResultHandler((object t, DialogResult dg) => {
if (dg == DialogResult.OK)
{
GetRow(selectId, LvCbResult.SelectedIndex);
}
});
frm.mr.ShowModal();
}
private void BtnDel_Click(object sender, EventArgs e)
{
if (LvCbResult.SelectedObject == null) { MessageBox.Show("请先选择要删除的项。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; }
var item = (LocationInfo)LvCbResult.SelectedObject;
var selectId = item.Id;
if (RySkins.Msg.ShowMsg("确定要删除该项吗?一旦删除将不可恢复。", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No)
{
return;
}
string post_str = "api=DelLocation&id=" + selectId;
var jsonResult = API.API.Post("Goods", "DelLocation", post_str);
if (jsonResult.IsOK)
{
LvCbResult.RemoveObject(item);
}
else
{
API.API.ErrorJson(jsonResult);
}
}
private void FrmView_Load(object sender, EventArgs e)
{
Text = "浏览"+ titleName;
ToolStripMenuItem.Text = "添加"+ titleName;
ToolStripMenuItem.Text = "修改" + titleName;
ToolStripMenuItem.Text = "删除" + titleName;
rySearch1.PerformClick();
}
private void ToolStripMenuItem_Click(object sender, EventArgs e)
{
btnAdd.PerformClick();
}
private void ToolStripMenuItem_Click(object sender, EventArgs e)
{
btnEdit.PerformClick();
}
private void ToolStripMenuItem_Click(object sender, EventArgs e)
{
btnDel.PerformClick();
}
private void ToolStripMenuItem_Click(object sender, EventArgs e)
{
if (LvCbResult.SelectedObject == null) { return; }
var item = (LocationInfo)LvCbResult.SelectedObject;
var selectId = item.Id;
FrmLocationAdd frm = new FrmLocationAdd()
{
Text = "添加" + titleName,
Icon = Icon,
isAdd = 1
};
frm.GetInfo(selectId.ToString());
frm.mr = new ModalForm(this, frm);
frm.mr.OnDialogResult += new ModalForm.DialogResultHandler((object t, DialogResult dg) => {
if (dg == DialogResult.OK)
{
rySearch1.PerformClick();
}
});
frm.mr.ShowModal();
}
public bool IsSelectedMode { get; set; } = false;
public int SelectId { get; set; } = -1;
public string SelectName { get; set; } = "";
private void LvCbResult_DoubleClick(object sender, EventArgs e)
{
if (!IsSelectedMode) { return; }
if (LvCbResult.SelectedObject == null) { return; }
var item = (LocationInfo)LvCbResult.SelectedObject;
SelectId = item.Id;
SelectName = "【"+item.SN+"】"+ item.Name;
DialogResult = DialogResult.OK;
}
private void GetItemUI(int rowindex)
{
int id;
if (LvCbResult.GetItemCount() > rowindex && rowindex >= 0)
{
var item = (LocationInfo)LvCbResult.GetModelObject(rowindex);
id = item.Id;
TxtName.Text = item.Name;
var jsonResult = API.API.Post("Goods", "GetLocation", "id=" + id);
if (jsonResult.IsOK)
{
DataTable data = jsonResult.List;
if (data.Rows.Count > 0)
{
DataRow row = data.Rows[0];
TxtDes.Text = row["Des"].ToString();
TxtAddTime.Text = row["AddTime"].ToInt64().ToDateTime().ToString("yyyy-MM-dd dddd HH:mm");
TxtEditTime.Text = row["EditTime"].ToInt64().ToDateTime().ToString("yyyy-MM-dd dddd HH:mm");
PicLogo.Image = API.WebDav.LoadPic(Public_Config.WebDav_VistorUrl + "/" + row["img"].ToString());
}
}
}
else
{
TxtName.Text = "";
TxtEditTime.Text = "";
TxtAddTime.Text = "";
TxtDes.Text = "";
PicLogo.Image = null;
return;
}
}
private void LvCbResult_SelectionChanged(object sender, EventArgs e)
{
if (LvCbResult.SelectedObject == null) { GetItemUI(-1); return; }
var row_index = LvCbResult.SelectedIndex;
GetItemUI(row_index);
}
private void PicLogo_Click(object sender, EventArgs e)
{
OTools.FrmPreview frm = new OTools.FrmPreview();
frm.pictureBox1.Image = PicLogo.Image;
frm.ShowDialog();
frm.Dispose();
}
}
class LocationInfo
{
/// <summary>
/// id
/// </summary>
public int Id{ get; set; }
/// <summary>
/// 父id
/// </summary>
public int ParentId { get; set; } = 0;
/// <summary>
/// id路径
/// </summary>
public string IdPath { get; set; } = "";
/// <summary>
/// 直系子位置数量
/// </summary>
public int ChildrenCount { get; set; } = 0;
/// <summary>
/// 编号
/// </summary>
public string SN { get; set; }
/// <summary>
/// 名称
/// </summary>
public string Name { get; set; }
/// <summary>
/// 备注
/// </summary>
public string Des { get; set; } = "";
/// <summary>
/// 图片
/// </summary>
public string Img { get; set; } = "";
/// <summary>
/// 添加时间
/// </summary>
public DateTime AddTime { get; set; }
/// <summary>
/// 添加时间字符串
/// </summary>
public string AddTimeStr
{
get { return AddTime.ToString("yyyy-MM-dd dddd HH:mm:ss"); }
}
}
}