Commit 522bf143 authored by tr's avatar tr

1、增加员工管理版块(初版:支持基本信息修改)

parent 67b0713a
......@@ -5,9 +5,12 @@ using System.Data;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;
using System.Web;
//
using System.Windows.Forms;
......@@ -440,6 +443,103 @@ namespace Tools.MyUtils
#endregion
#region 图片分离
/// <summary>
/// 图片分离:取回图片
/// </summary>
/// <param name="ds"></param>
public static void FetchImage(DataSet ds)
{
foreach (DataTable table in ds.Tables)
{
FetchImage(table);
}
}
/// <summary>
/// 图片分离:取回图片
/// </summary>
/// <param name="dt"></param>
public static void FetchImage(DataTable dt)
{
foreach (DataColumn col in dt.Columns)
{
if (col.DataType == typeof(byte[]))
{
foreach (DataRowView r in dt.DefaultView)
{
var colName = col.ColumnName;
if (r[colName] == DBNull.Value)
continue;
r[colName] = FetchImage((byte[])r[colName]);
r.EndEdit();
}
}
}
}
/// <summary>
/// 图片分离:取回图片
/// </summary>
/// <param name="dt"></param>
/// <param name="colName"></param>
public static void FetchImage(DataTable dt, string colName)
{
//不存在该列或列的数据类型不正确则不处理
if (dt == null || !dt.Columns.Contains(colName) || !dt.Columns[colName].DataType.FullName.Equals("System.Byte[]"))
return;
//
foreach (DataRowView r in dt.DefaultView)
{
if (r[colName] == DBNull.Value)
continue;
r[colName] = FetchImage(r[colName] as byte[]);
r.EndEdit();
}
}
/// <summary>
/// 图片分离:取回图片
/// </summary>
/// <param name="buffer"></param>
/// <returns></returns>
public static byte[] FetchImage(byte[] buffer)
{
if (buffer == null || buffer.Length != 32)
return buffer;
var url = $"http://jhdsoft.gicp.net:9203/hyerp/Download.aspx";
var md5 = Encoding.UTF8.GetString(buffer);
return DownloadByPost(url, md5);
}
/// <summary>
/// 【私有】下载文件
/// </summary>
/// <returns></returns>
private static byte[] DownloadByPost(string url, string md5)
{
byte[] result = null;
using (var web = new WebClient())
{
//初始化请求头
web.Proxy = null;
web.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
//编码参数列表
var sb = new StringBuilder();
sb.Append("md5=").Append(md5);
try
{
//以POST方式发送请求
result = web.UploadData(url, "POST", Encoding.UTF8.GetBytes(sb.ToString()));
}
catch (Exception)
{
return null;
}
}
return result;
}
#endregion
#region 生成Model
public static string GenModelHead(string tableName, string tableDescription)
......@@ -694,6 +794,6 @@ namespace Tools.MyUtils
}
#endregion
}
}
......@@ -60,6 +60,7 @@
<Reference Include="System" />
<Reference Include="System.Configuration" />
<Reference Include="System.Core" />
<Reference Include="System.Web" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
......@@ -258,6 +259,12 @@
<Compile Include="UI\wTaskBoard.Designer.cs">
<DependentUpon>wTaskBoard.cs</DependentUpon>
</Compile>
<Compile Include="UI\wUser.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="UI\wUser.Designer.cs">
<DependentUpon>wUser.cs</DependentUpon>
</Compile>
<Compile Include="UI\wXmlGenerator.cs">
<SubType>Form</SubType>
</Compile>
......@@ -365,6 +372,9 @@
<EmbeddedResource Include="UI\wTaskBoard.resx">
<DependentUpon>wTaskBoard.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="UI\wUser.resx">
<DependentUpon>wUser.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="UI\wXmlGenerator.resx">
<DependentUpon>wXmlGenerator.cs</DependentUpon>
</EmbeddedResource>
......
This diff is collapsed.
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;
//
using Tools.MyCommon;
using Tools.MyData;
using Tools.MyUtils;
namespace Tools.UI
{
public partial class wUser : wEditBasic
{
public wUser()
{
InitializeComponent();
}
//事件:窗体加载
private void wUser_Load(object sender, EventArgs e)
{
this.InitData();
this.InitUI();
}
//事件:添加
private void tsbAdd_Click(object sender, EventArgs e)
{
}
//事件:保存
private void tsbSave_Click(object sender, EventArgs e)
{
this.Save();
}
public override void InitData()
{
var link = Utils.GetDbLinkString204("FTT_Work");
this.InitDBHelper(link);
this.ModuleTableList = new List<TQuery> { new TQuery("AC_User", "SELECT * FROM dbo.AC_User") };
this._ds = this._db.GetData(this.ModuleTableList, true);
Utils.FetchImage(this._ds);
}
public override void InitUI()
{
//表格初始化
this.dgvDetail.AllowUserToAddRows = false;
this.dgvDetail.AutoGenerateColumns = false;
this.dgvDetail.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
//事件
this.dgvDetail.CellFormatting += DgvDetail_CellFormatting;
this.dgvDetail.DataError += DgvDetail_DataError;
//绑定数据源
this.dgvDetail.DataSource = this._ds.Tables[0].DefaultView;
}
//事件:单元格格式化
private void DgvDetail_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
var fieldName = this.dgvDetail.Columns[e.ColumnIndex].DataPropertyName;
if (fieldName.Equals("LoginPassword")
&& e.Value != null && e.Value.ToString().Length > 0)
{
e.Value = "*********";
}
}
//数据错误提示
private void DgvDetail_DataError(object sender, DataGridViewDataErrorEventArgs e)
{
Utils.Tip($"{this.dgvDetail.Columns[e.ColumnIndex].HeaderText}:{e.RowIndex}\r\n{e.Exception.Message}\r\n[{this._ds.Tables[0].DefaultView[e.RowIndex][e.ColumnIndex].ToString()}]");
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="Column4.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column7.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column1.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column8.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column9.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column3.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column6.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column2.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column5.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<metadata name="Column4.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column7.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column1.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column8.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column9.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column3.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column6.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column2.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column5.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
</root>
\ No newline at end of file
......@@ -36,6 +36,7 @@ namespace Tools
this.CreateModule("开发工具", typeof(UI.wDbAnlysis), "SQL效率分析", "tr:用于分析SQL查询效率(执行计划和IO计数)"),
this.CreateModule("开发工具", typeof(UI.wSysChecker), "检查配置工具", "tr:系统通用检查配置服务(通过存储过程检查)"),
//-------------------------------
this.CreateModule("行政工具", typeof(UI.wUser), "员工管理", "tr:员工状态及头像管理"),
this.CreateModule("行政工具", typeof(UI.wEvaluationOfEmployee), "员工考核", "tr:员工考核的记录工具"),
//-------------------------------
this.CreateModule("示例程序", typeof(UI.wAuditDemo), "审批示例", "tr:一个审批程序的示例"),
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment