### MyHouse V1.0.2502.0801 - *.[新增]适配新版接口。 ### SmartHouseAPI V1.0.2502.0801 - *.[新增]支持Docker部署,支持NAS。
855 lines
33 KiB
C#
855 lines
33 KiB
C#
using BrightIdeasSoftware;
|
|
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.Threading;
|
|
using System.Windows.Forms;
|
|
|
|
namespace MyHouse.DbOp
|
|
{
|
|
public partial class FrmGoodsView : RySkins.SKinForm
|
|
{
|
|
string titleName = "物品";
|
|
public FrmGoodsView()
|
|
{
|
|
InitializeComponent();
|
|
OlvLocSNAndName.AspectGetter = delegate (object x) {
|
|
var item = ((LocationInfo)x);
|
|
return "【"+item.SN+"】"+item.Name;
|
|
};
|
|
LvLocation.CanExpandGetter = delegate (object x) {
|
|
var item = ((LocationInfo)x);
|
|
return item.ChildrenCount > 0;
|
|
};
|
|
LvLocation.ChildrenGetter = delegate (object x) {
|
|
var item = ((LocationInfo)x);
|
|
var list = LoadLocation(item.Id);
|
|
return list;
|
|
};
|
|
LvLocation.IsSimpleDragSource = true;
|
|
LvLocation.IsSimpleDropSink = true;
|
|
LvLocation.ModelCanDrop += delegate (object sender, ModelDropEventArgs e) {
|
|
e.Effect = DragDropEffects.None;
|
|
if(锁定不允许拖动ToolStripMenuItem.Checked)
|
|
{
|
|
e.InfoMessage = "当前拖动模式已关闭";return;
|
|
}
|
|
if (e.TargetModel == null)
|
|
return;
|
|
var TargetModel = (LocationInfo)e.TargetModel;
|
|
for (int i = 0; i < e.SourceModels.Count; i++)
|
|
{
|
|
var item_source = (LocationInfo)e.SourceModels[i];
|
|
if (item_source == TargetModel) { return; }
|
|
if (item_source.Id == TargetModel.ParentId) { return; }
|
|
if (TargetModel.IdPath.IndexOfEx("/"+item_source.Id+"/")>=0) { return; }
|
|
}
|
|
if (e.TargetModel is LocationInfo)
|
|
e.Effect = e.StandardDropActionFromKeys;
|
|
else
|
|
e.InfoMessage = "无法移动";
|
|
};
|
|
LvLocation.ModelDropped += delegate (object sender, ModelDropEventArgs e) {
|
|
var item_target = ((LocationInfo)e.TargetModel);
|
|
var list_source = e.SourceModels;
|
|
IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType);
|
|
List<GoodInfo> list = new List<GoodInfo>();
|
|
if (db.ConnDb(Itrycn_Db.SQLConnStr) == 1)
|
|
{
|
|
for (int i = 0; i < list_source.Count; i++)
|
|
{
|
|
var item_source = (LocationInfo)list_source[i];
|
|
db.ExecuteNonQuery("update Location set ParentId=" + item_target.Id+ " where id=" + item_source.Id);
|
|
var ds_loc = db.ReadData("select count(*) from Location where ParentId=" + item_source.ParentId);
|
|
if (ds_loc.HaveData())
|
|
{
|
|
db.ExecuteNonQuery("update Location set ChildrenCount=" + ds_loc.GetFirstRowCellValue() + " where id=" + item_source.ParentId);
|
|
}
|
|
ds_loc.Dispose();
|
|
Itrycn_Db.SetLocationIdPath(item_target.Id);
|
|
}
|
|
var ds_loc2 = db.ReadData("select count(*) from Location where ParentId=" + item_target.Id);
|
|
if (ds_loc2.HaveData())
|
|
{
|
|
db.ExecuteNonQuery("update Location set ChildrenCount=" + ds_loc2.GetFirstRowCellValue() + " where id=" + item_target.Id);
|
|
item_target.ChildrenCount = ds_loc2.GetFirstRowCellValue();
|
|
}
|
|
else { item_target.ChildrenCount = 0; }
|
|
ds_loc2.Dispose();
|
|
}
|
|
db.Free();
|
|
e.RefreshObjects();
|
|
};
|
|
TreeListView.TreeRenderer treeColumnRenderer = this.LvLocation.TreeColumnRenderer;
|
|
treeColumnRenderer.IsShowGlyphs = true;
|
|
treeColumnRenderer.UseTriangles = true;
|
|
OlvSN.AspectGetter = delegate (object x) { return ((GoodInfo)x).SN; };
|
|
OlvName.AspectGetter = delegate (object x) { return ((GoodInfo)x).Name; };
|
|
OlvCount.AspectGetter = delegate (object x) { return ((GoodInfo)x).Count; };
|
|
OlvCount.AspectToStringConverter = delegate (object row, object x)
|
|
{
|
|
var item = (GoodInfo)row;
|
|
return item.Count + " " + item.Unit;
|
|
};
|
|
OlvOutTime.AspectGetter = delegate (object x) { return ((GoodInfo)x).OutTimeStr; };
|
|
OlvCleanTime.AspectGetter = delegate (object x) { return ((GoodInfo)x).CleanTimeStr; };
|
|
OlvChargingTime.AspectGetter = delegate (object x) { return ((GoodInfo)x).ChargingTimeStr; };
|
|
this.objectListView1.RowHeight = 48;
|
|
this.objectListView1.UseAlternatingBackColors = false;
|
|
this.objectListView1.UseHotItem = false;
|
|
this.olvColumn1.Renderer = CreateDescribedTaskRenderer();
|
|
this.olvColumn1.AspectGetter = delegate (object x) {
|
|
var op = (OpInfo)x;
|
|
return op.OpTimeStr + " " + op.NickName;
|
|
};
|
|
LvGoods.FormatRow += LvGoods_FormatRow;
|
|
LvLocation.CellToolTipGetter = delegate (OLVColumn column, object x) { return ((LocationInfo)x).Des; };
|
|
}
|
|
|
|
private void LvGoods_FormatRow(object sender, FormatRowEventArgs e)
|
|
{
|
|
var row = (GoodInfo)e.Model;
|
|
if(row.TipOn)
|
|
{
|
|
if(row.Count<=row.TipCount)
|
|
{
|
|
e.Item.ForeColor = Color.Red;
|
|
}
|
|
else
|
|
{
|
|
e.Item.ForeColor = Color.Black;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
e.Item.ForeColor = Color.Black;
|
|
}
|
|
if(row.OutTime>0)
|
|
{
|
|
if(row.OutTime<=DateTime.Now.AddDays(7).ToInt64())
|
|
{
|
|
if (row.Count > 0)
|
|
{
|
|
e.Item.ForeColor = Color.Red;
|
|
}
|
|
else { e.Item.ForeColor = Color.Gray; ; }
|
|
}
|
|
}
|
|
if (row.Count <= 0)
|
|
{ e.Item.ForeColor = Color.Gray; ; }
|
|
}
|
|
|
|
private DescribedTaskRenderer CreateDescribedTaskRenderer()
|
|
{
|
|
// Let's create an appropriately configured renderer.
|
|
DescribedTaskRenderer renderer = new DescribedTaskRenderer();
|
|
renderer.DescriptionAspectName = "OpDes";
|
|
renderer.UseCustomCheckboxImages = true;
|
|
// Change the formatting slightly
|
|
renderer.TitleFont = new Font("微软雅黑", 10, FontStyle.Regular);
|
|
renderer.TitleColor = Color.Blue;
|
|
renderer.DescriptionFont = new Font("Tahoma", 9);
|
|
renderer.DescriptionColor = Color.Gray;
|
|
renderer.TopSpace = 2;
|
|
renderer.TitleDescriptionSpace = 1;
|
|
renderer.UseGdiTextRendering = true;
|
|
return renderer;
|
|
}
|
|
#region 需要修改的内容
|
|
private void RySearch1_OnSearch(object sender, EventArgs e)
|
|
{
|
|
//需要修改此处
|
|
ctlMyPage1.RecordCount = 1;
|
|
ctlMyPage1.GotoPageIndex(1);
|
|
}
|
|
private List<LocationInfo> LoadLocation(int ParentId)
|
|
{
|
|
#region 重新载入数据
|
|
var list = new List<LocationInfo>();
|
|
string post_str = "api=GetLocationByParentId&ParentId=" + ParentId;
|
|
var jsonResult = API.API.Post("Goods", "GetLocationByParentId", 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 LocationInfo()
|
|
{
|
|
Id = row["id"].ToInt(),
|
|
SN = row["SN"].ToString(),
|
|
Name = row["Name"].ToString(),
|
|
Img = row["img"].ToString(),
|
|
Des = row["Des"].ToString(),
|
|
IdPath = row["IdPath"].ToString(),
|
|
ChildrenCount = row["ChildrenCount"].ToInt(),
|
|
ParentId = row["ParentId"].ToInt(),
|
|
AddTime = row["AddTime"].ToInt64().ToDateTime()
|
|
});
|
|
}
|
|
}
|
|
return list;
|
|
#endregion
|
|
}
|
|
private void LoadLocation()
|
|
{
|
|
#region 重新载入数据
|
|
LvLocation.ClearObjects();
|
|
var list = new List<LocationInfo>();
|
|
//var list=LoadLocation(0);
|
|
list.Insert(0,new LocationInfo()
|
|
{
|
|
Id = 0,
|
|
SN = "-",
|
|
Name = "所有位置",
|
|
ChildrenCount = LoadLocation(0).Count
|
|
});
|
|
LvLocation.Roots = list;
|
|
LvLocation.Expand(list[0]);
|
|
#endregion
|
|
}
|
|
private void CtlMyPage1_OnPageChange(object sender, EventArgs e)
|
|
{
|
|
#region 重新载入数据
|
|
var LocationId = 0;
|
|
if (LvLocation.SelectedObject != null)
|
|
{
|
|
var item = (LocationInfo)LvLocation.SelectedObject;
|
|
if (item.Id > 0)
|
|
{
|
|
LocationId = item.Id;
|
|
}
|
|
}
|
|
var LowTip = ChkLowTip.Checked?1:0;
|
|
var page_index = ctlMyPage1.GetCurrPageIndex();
|
|
if (page_index == 0) { page_index = 1; }
|
|
LvGoods.ClearObjects();
|
|
List<GoodInfo> list = new List<GoodInfo>();
|
|
string post_str = "api=GetGoodsList&name=" + RyWeb.WebDecode.UrlEncode(rySearch1.Text)+ "&page="+ page_index+(page_index==1? "&getpagecount=1&LocationId="+ LocationId+ "&LowTip="+ LowTip : "");
|
|
var jsonResult = API.API.Post("Goods", "GetGoodsList", post_str);
|
|
if (jsonResult.IsOK)
|
|
{
|
|
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 GoodInfo()
|
|
{
|
|
Id=row["id"].ToInt(),
|
|
SN = row["SN"].ToString(),
|
|
Name = row["Name"].ToString(),
|
|
Count=row["iCount"].ToDouble(),
|
|
Unit = row["Unit"].ToString(),
|
|
LocationId = row["LocationId"].ToInt(),
|
|
Des = row["Des"].ToString(),
|
|
TipOn = row["TipOn"].ToBool(),
|
|
TipCount = row["TipCount"].ToDouble(),
|
|
OutTime = row["OutTime"].ToInt64(),
|
|
AddTime = row["AddTime"].ToInt64().ToDateTime(),
|
|
CleanInterval = row["CleanInterval"].ToInt(),
|
|
CleanTime = row["CleanTime"].ToInt64(),
|
|
ChargingInterval = row["ChargingInterval"].ToInt(),
|
|
ChargingTime = row["ChargingTime"].ToInt64(),
|
|
}) ;
|
|
}
|
|
}
|
|
LvGoods.AddObjects(list);
|
|
#endregion
|
|
}
|
|
private void GetRow(int id, int index)
|
|
{
|
|
#region 重新载入数据
|
|
string post_str = "api=GetGoods&id=" +id;
|
|
var jsonResult = API.API.Post("Goods", "GetGoods", post_str);
|
|
if (jsonResult.IsOK)
|
|
{
|
|
DataTable data = jsonResult.List;
|
|
if (data.Rows.Count>0)
|
|
{
|
|
DataRow row = data.Rows[0];
|
|
var item=(GoodInfo) LvGoods.GetModelObject(index);
|
|
item.SN = row["SN"].ToString();
|
|
item.Name = row["Name"].ToString();
|
|
item.Count = row["iCount"].ToDouble();
|
|
item.TipOn = row["TipOn"].ToBool();
|
|
item.TipCount = row["TipCount"].ToDouble();
|
|
item.Unit = row["Unit"].ToString();
|
|
item.LocationId = row["LocationId"].ToInt();
|
|
item.Des = row["Des"].ToString();
|
|
item.OutTime = row["OutTime"].ToInt64();
|
|
item.CleanInterval= row["CleanInterval"].ToInt();
|
|
item.ChargingInterval = row["ChargingInterval"].ToInt();
|
|
item.CleanTime = row["CleanTime"].ToInt64();
|
|
item.ChargingTime = row["ChargingTime"].ToInt64();
|
|
//添加剩余的项目
|
|
//添加完毕
|
|
LvGoods.UpdateObject(item);
|
|
}
|
|
}
|
|
#endregion
|
|
}
|
|
#endregion
|
|
|
|
private void BtnAdd_Click(object sender, EventArgs e)
|
|
{
|
|
var LocationId = 0;
|
|
if (LvLocation.SelectedObject != null)
|
|
{
|
|
var item = (LocationInfo)LvLocation.SelectedObject;
|
|
if (item.Id > 0)
|
|
{
|
|
LocationId = item.Id;
|
|
}
|
|
}
|
|
FrmGoodsAdd frm = new FrmGoodsAdd()
|
|
{
|
|
Text = "添加"+ titleName,
|
|
Icon = Icon,
|
|
isAdd = 1,
|
|
LocationId=LocationId
|
|
};
|
|
frm.GetByAdd();
|
|
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 (LvGoods.SelectedObject == null) { return; }
|
|
var item = (GoodInfo)LvGoods.SelectedObject;
|
|
var selectId = item.Id;
|
|
FrmGoodsAdd frm = new FrmGoodsAdd()
|
|
{
|
|
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, LvGoods.SelectedIndex);
|
|
}
|
|
});
|
|
frm.mr.ShowModal();
|
|
}
|
|
|
|
private void BtnDel_Click(object sender, EventArgs e)
|
|
{
|
|
if (LvGoods.SelectedObject == null) { MessageBox.Show("请先选择要删除的项。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; }
|
|
var item = (GoodInfo)LvGoods.SelectedObject;
|
|
var selectId = item.Id;
|
|
if (RySkins.Msg.ShowMsg("确定要删除该项吗?一旦删除将不可恢复。", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No)
|
|
{
|
|
return;
|
|
}
|
|
string post_str = "api=DelGoods&id=" + selectId;
|
|
var jsonResult = API.API.Post("Goods", "DelGoods", post_str);
|
|
if (jsonResult.IsOK)
|
|
{
|
|
LvGoods.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;
|
|
LoadLocation();
|
|
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 (LvGoods.SelectedObject == null) { return; }
|
|
var item = (GoodInfo)LvGoods.SelectedObject;
|
|
var selectId = item.Id;
|
|
FrmGoodsAdd frm = new FrmGoodsAdd()
|
|
{
|
|
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();
|
|
}
|
|
private void GetItemUI(int rowindex)
|
|
{
|
|
int id;
|
|
if (LvGoods.GetItemCount() > rowindex && rowindex >= 0)
|
|
{
|
|
var item =(GoodInfo)LvGoods.GetModelObject(rowindex);
|
|
id = item.Id;
|
|
TxtGoodsSN.Text = item.SN;
|
|
TxtGoodsName.Text = item.Name;
|
|
TxtGoodsSN.Tag = id;
|
|
TxtUnit.Text = item.Unit;
|
|
TxtLocation.Text = "";
|
|
BtnLocationImage.Tag = "";
|
|
TxtLocation.ToolTip = "";
|
|
TxtChargingTime.Text = item.ChargingTimeStr;
|
|
TxtCleanTime.Text =item.CleanTimeStr;
|
|
TxtCount.Text = item.Count.ToString().Replace(".00","");
|
|
Thread th = new Thread(Start);
|
|
th.Start();
|
|
void Start()
|
|
{
|
|
string post_str = "api=GetGoods&id=" + id;
|
|
var jsonResult = API.API.Post("Goods", "GetGoods", post_str);
|
|
if (jsonResult.IsOK)
|
|
{
|
|
DataTable data = jsonResult.List;
|
|
DataRow row = data.Rows[0];
|
|
new Thread(GetImage).Start();
|
|
void GetImage()
|
|
{
|
|
var image = API.WebDav.LoadPic(Public_Config.WebDav_VistorUrl + "/" + row["img"].ToString());
|
|
this.Invoke(new Action(() =>
|
|
{
|
|
PicLogo.Image = image;
|
|
}));
|
|
}
|
|
this.Invoke(new Action(() =>
|
|
{
|
|
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");
|
|
}));
|
|
post_str = "api=GetLocation&id=" + row["LocationId"].ToInt();
|
|
jsonResult = API.API.Post("Goods", "GetLocation", post_str);
|
|
if (jsonResult.IsOK)
|
|
{
|
|
DataTable data_loc = jsonResult.List;
|
|
DataRow row_loc = data_loc.Rows[0];
|
|
this.Invoke(new Action(() =>
|
|
{
|
|
TxtLocation.Text = "【" + row_loc["SN"].ToString() + "】" + row_loc["Name"].ToString();
|
|
TxtLocation.ToolTip = row_loc["Des"].ToString();
|
|
BtnLocationImage.Tag = row_loc["img"].ToString();
|
|
}));
|
|
}
|
|
objectListView1.ClearObjects();
|
|
List<OpInfo> list_op = new List<OpInfo>();
|
|
post_str = "api=GetLogs&id=" + id;
|
|
jsonResult = API.API.Post("Goods", "GetLogs", post_str);
|
|
if (jsonResult.IsOK)
|
|
{
|
|
DataTable data_log = jsonResult.List;
|
|
for (int i = 0; i < data_log.Rows.Count; i++)
|
|
{
|
|
DataRow reader_log = data_log.Rows[i];
|
|
string uName = Itrycn_Db.GetNickName(reader_log["UserId"].ToString());
|
|
list_op.Add(new OpInfo()
|
|
{
|
|
Id = reader_log["id"].ToInt(),
|
|
OpTime = reader_log["AddTime"].ToInt64().ToDateTime(),
|
|
NickName = uName,
|
|
OpDes = reader_log["Des"].ToString().Trim()
|
|
});
|
|
}
|
|
objectListView1.AddObjects(list_op);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
TxtGoodsName.Text = "";
|
|
TxtEditTime.Text = "";
|
|
TxtAddTime.Text = "";
|
|
TxtGoodsSN.Text = "";
|
|
TxtGoodsSN.Tag = 0;
|
|
TxtUnit.Text = "";
|
|
TxtCount.Text = "";
|
|
TxtDes.Text = "";
|
|
TxtLocation.Text = "";
|
|
BtnLocationImage.Tag = "";
|
|
TxtLocation.ToolTip = "";
|
|
TxtChargingTime.Text = "";
|
|
TxtCleanTime.Text = "";
|
|
PicLogo.Image = null;
|
|
objectListView1.ClearObjects();
|
|
return;
|
|
}
|
|
}
|
|
private void 物品出库ToolStripMenuItem_Click(object sender, EventArgs e)
|
|
{
|
|
if (LvGoods.SelectedObject == null) { return; }
|
|
var item = (GoodInfo)LvGoods.SelectedObject;
|
|
var id = item.Id;
|
|
FrmGoodsEntry frm = new FrmGoodsEntry();
|
|
frm.Icon = Icon;
|
|
frm.Text = "物品出库";
|
|
frm.IsAdd = false;
|
|
frm.GetInfo(id.ToString());
|
|
if (frm.ShowDialog() == DialogResult.OK)
|
|
{
|
|
var row_index = LvGoods.SelectedIndex;
|
|
GetRow(id,row_index);
|
|
GetItemUI(row_index);
|
|
}
|
|
frm.Dispose();
|
|
}
|
|
|
|
private void 物品入库ToolStripMenuItem_Click(object sender, EventArgs e)
|
|
{
|
|
if (LvGoods.SelectedObject == null) { return; }
|
|
var item = (GoodInfo)LvGoods.SelectedObject;
|
|
var id = item.Id;
|
|
FrmGoodsEntry frm = new FrmGoodsEntry();
|
|
frm.Icon = Icon;
|
|
frm.Text = "物品入库";
|
|
frm.IsAdd = true;
|
|
frm.GetInfo(id.ToString());
|
|
if (frm.ShowDialog() == DialogResult.OK)
|
|
{
|
|
var row_index = LvGoods.SelectedIndex;
|
|
GetRow(id, row_index);
|
|
GetItemUI(row_index);
|
|
}
|
|
frm.Dispose();
|
|
}
|
|
|
|
private void LvGoods_SelectionChanged(object sender, EventArgs e)
|
|
{
|
|
if (LvGoods.SelectedObject == null) { GetItemUI(-1); return; }
|
|
var row_index = LvGoods.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();
|
|
}
|
|
|
|
private void BtnLocationImage_Click(object sender, EventArgs e)
|
|
{
|
|
OTools.FrmPreview frm = new OTools.FrmPreview();
|
|
frm.pictureBox1.Image = API.WebDav.LoadPic(Public_Config.WebDav_VistorUrl + "/" + BtnLocationImage.Tag.ToString());
|
|
frm.ShowDialog();
|
|
frm.Dispose();
|
|
}
|
|
|
|
private void LvLocation_SelectionChanged(object sender, EventArgs e)
|
|
{
|
|
if (LvLocation.SelectedObject == null) { return; }
|
|
var item = (LocationInfo)LvLocation.SelectedObject;
|
|
PicLocLogo.Image = API.WebDav.LoadPic(Public_Config.WebDav_VistorUrl + "/" + item.Img);
|
|
rySearch1.PerformClick();
|
|
}
|
|
|
|
private void PicLocLogo_Click(object sender, EventArgs e)
|
|
{
|
|
OTools.FrmPreview frm = new OTools.FrmPreview();
|
|
frm.pictureBox1.Image = PicLocLogo.Image;
|
|
frm.ShowDialog();
|
|
frm.Dispose();
|
|
}
|
|
|
|
private void 刷新列表ToolStripMenuItem_Click(object sender, EventArgs e)
|
|
{
|
|
LoadLocation();
|
|
}
|
|
|
|
private void 位置编辑界面ToolStripMenuItem_Click(object sender, EventArgs e)
|
|
{
|
|
FrmLocationView frm=new FrmLocationView();
|
|
frm.ShowDialog();
|
|
frm.Dispose();
|
|
LoadLocation();
|
|
}
|
|
|
|
private void LvLocation_ItemActivate(object sender, EventArgs e)
|
|
{
|
|
Object model = this.LvLocation.SelectedObject;
|
|
if (model != null)
|
|
this.LvLocation.ToggleExpansion(model);
|
|
}
|
|
|
|
private void 编辑位置ToolStripMenuItem_Click(object sender, EventArgs e)
|
|
{
|
|
if (LvLocation.SelectedObject == null) { return; }
|
|
var item = (LocationInfo)LvLocation.SelectedObject;
|
|
var selectId = item.Id;
|
|
FrmLocationAdd frm = new FrmLocationAdd()
|
|
{
|
|
Text = "修改存储位置",
|
|
Icon = Icon,
|
|
isAdd = 0,
|
|
CanEditLoc = false
|
|
};
|
|
frm.GetInfo(selectId.ToString());
|
|
if(frm.ShowDialog() == DialogResult.OK)
|
|
{
|
|
string post_str = "api=GetLocation&id=" + selectId;
|
|
var jsonResult = API.API.Post("Goods", "GetLocation", post_str);
|
|
if (jsonResult.IsOK)
|
|
{
|
|
DataTable data = jsonResult.List;
|
|
if (data.Rows.Count>0)
|
|
{
|
|
DataRow row = data.Rows[0];
|
|
item.SN = row["SN"].ToString();
|
|
item.Name = row["Name"].ToString();
|
|
item.Img = row["img"].ToString();
|
|
item.Des = row["Des"].ToString();
|
|
item.IdPath = row["IdPath"].ToString();
|
|
item.ChildrenCount = row["ChildrenCount"].ToInt();
|
|
item.ParentId = row["ParentId"].ToInt();
|
|
LvLocation.RefreshObject(item);
|
|
}
|
|
}
|
|
}
|
|
frm.Dispose();
|
|
}
|
|
|
|
private void 添加位置ToolStripMenuItem_Click(object sender, EventArgs e)
|
|
{
|
|
if (LvLocation.SelectedObject == null) { return; }
|
|
var item = (LocationInfo)LvLocation.SelectedObject;
|
|
FrmLocationAdd frm = new FrmLocationAdd()
|
|
{
|
|
Text = "添加存储位置",
|
|
Icon = Icon,
|
|
isAdd = 1,
|
|
ParentId = item.Id
|
|
};
|
|
frm.GetByAdd();
|
|
if (frm.ShowDialog() == DialogResult.OK)
|
|
{
|
|
try
|
|
{
|
|
LvLocation.RefreshObject(item);
|
|
}
|
|
catch { }
|
|
}
|
|
frm.Dispose();
|
|
}
|
|
|
|
private void ChkLowTip_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
rySearch1.PerformClick();
|
|
}
|
|
|
|
private void 设置清洁充电时间ToolStripMenuItem_Click(object sender, EventArgs e)
|
|
{
|
|
if (LvGoods.SelectedObject == null) { return; }
|
|
var item = (GoodInfo)LvGoods.SelectedObject;
|
|
FrmSetOpTime frm = new FrmSetOpTime();
|
|
frm.TxtGoodsName.Text = "【" + item.SN + "】" + item.Name;
|
|
frm.OpId = item.Id;
|
|
if(frm.ShowDialog()==DialogResult.OK)
|
|
{
|
|
GetRow(item.Id, LvGoods.SelectedIndex);
|
|
GetItemUI(LvGoods.SelectedIndex);
|
|
}
|
|
frm.Dispose();
|
|
}
|
|
|
|
private void 复制web地址ToolStripMenuItem_Click(object sender, EventArgs e)
|
|
{
|
|
if (LvGoods.SelectedObject == null) { return; }
|
|
var item = (GoodInfo)LvGoods.SelectedObject;
|
|
RyFiles.CopyToClip("http://lfx88.top:888/ASPNET/MyHouse/ShowGoods.aspx?mode=goodsinfo&sn="+item.SN);
|
|
}
|
|
}
|
|
public class OpInfo
|
|
{
|
|
public int Id { get; set; }
|
|
public DateTime OpTime { get; set; }
|
|
public string OpTimeStr
|
|
{
|
|
get
|
|
{
|
|
string dt_str = OpTime.ToString("yyyy-MM-dd dddd HH:mm:ss");
|
|
if (OpTime.Date == DateTime.Now.Date)
|
|
{
|
|
dt_str = "今天 " + OpTime.ToString("HH:mm:ss");
|
|
}
|
|
else if (OpTime.Date.AddDays(1) == DateTime.Now.Date)
|
|
{
|
|
dt_str = "昨天 " + OpTime.ToString("HH:mm:ss");
|
|
}
|
|
else if (OpTime.Date.AddDays(2) == DateTime.Now.Date)
|
|
{
|
|
dt_str = "前天 " + OpTime.ToString("HH:mm:ss");
|
|
}
|
|
else if (OpTime.Year == DateTime.Now.Year)
|
|
{
|
|
dt_str = OpTime.ToString("MM-dd dddd HH:mm:ss");
|
|
}
|
|
return dt_str;
|
|
}
|
|
}
|
|
public string NickName { get; set; }
|
|
public string OpDes { get; set; }
|
|
}
|
|
class GoodInfo
|
|
{
|
|
/// <summary>
|
|
/// id
|
|
/// </summary>
|
|
public int Id{ get; set; }
|
|
/// <summary>
|
|
/// 编号
|
|
/// </summary>
|
|
public string SN { get; set; }
|
|
/// <summary>
|
|
/// 名称
|
|
/// </summary>
|
|
public string Name { get; set; }
|
|
/// <summary>
|
|
/// 数量
|
|
/// </summary>
|
|
public double Count { get; set; } = 0;
|
|
/// <summary>
|
|
/// 单位
|
|
/// </summary>
|
|
public string Unit { get; set; } = "";
|
|
/// <summary>
|
|
/// 备注
|
|
/// </summary>
|
|
public string Des { get; set; } = "";
|
|
/// <summary>
|
|
/// 位置id
|
|
/// </summary>
|
|
public int LocationId { get; set; } = 0;
|
|
/// <summary>
|
|
/// 过期时间
|
|
/// </summary>
|
|
public long OutTime { get; set; } = 0;
|
|
/// <summary>
|
|
/// 是否开启提醒
|
|
/// </summary>
|
|
public bool TipOn { get; set; } = false;
|
|
/// <summary>
|
|
/// 提醒阈值数量
|
|
/// </summary>
|
|
public double TipCount { get; set; } = 0;
|
|
/// <summary>
|
|
/// 过期时间字符串
|
|
/// </summary>
|
|
public string OutTimeStr
|
|
{
|
|
get {
|
|
if (OutTime == 0) { return "不过期"; }
|
|
return OutTime.ToDateTime().AddDays(-1).ToString("yyyy-MM-dd dddd");
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 添加时间
|
|
/// </summary>
|
|
public DateTime AddTime { get; set; }
|
|
/// <summary>
|
|
/// 添加时间字符串
|
|
/// </summary>
|
|
public string AddTimeStr
|
|
{
|
|
get { return AddTime.ToString("yyyy-MM-dd dddd HH:mm:ss"); }
|
|
}
|
|
/// <summary>
|
|
/// 清洁间隔
|
|
/// </summary>
|
|
public int CleanInterval { get; set; }
|
|
/// <summary>
|
|
/// 清洁时间
|
|
/// </summary>
|
|
public long CleanTime { get; set; }
|
|
/// <summary>
|
|
/// 清洁时间字符串
|
|
/// </summary>
|
|
public string CleanTimeStr
|
|
{
|
|
get {
|
|
if (CleanInterval == 0) { return ""; }
|
|
if (CleanTime == 0) { return "尚未清洁"; }
|
|
var dt = CleanTime.ToDateTime().AddDays(CleanInterval);
|
|
if (dt < DateTime.Now)
|
|
{
|
|
return dt.ToString("yyyy-MM-dd dddd") + "(已过期)";
|
|
}
|
|
else
|
|
{
|
|
return dt.ToString("yyyy-MM-dd dddd");
|
|
}
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 充电间隔
|
|
/// </summary>
|
|
public int ChargingInterval { get; set; }
|
|
/// <summary>
|
|
/// 充电时间
|
|
/// </summary>
|
|
public long ChargingTime { get; set; }
|
|
/// <summary>
|
|
/// 充电时间字符串
|
|
/// </summary>
|
|
public string ChargingTimeStr
|
|
{
|
|
get
|
|
{
|
|
if (ChargingInterval == 0) { return ""; }
|
|
if (ChargingTime == 0) { return "尚未充电"; }
|
|
var dt = ChargingTime.ToDateTime().AddDays(ChargingInterval);
|
|
if (dt < DateTime.Now)
|
|
{
|
|
return dt.ToString("yyyy-MM-dd dddd") + "(已过期)";
|
|
}
|
|
else
|
|
{
|
|
return dt.ToString("yyyy-MM-dd dddd");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|