Browse Source

赶猪确认。

master
yibo 7 years ago
parent
commit
331321ac87
42 changed files with 5387 additions and 0 deletions
  1. +2
    -0
      .gitignore
  2. +28
    -0
      B3ButcherManageClient.sln
  3. +14
    -0
      ButcherManage.BO/Base/Base.cs
  4. +14
    -0
      ButcherManage.BO/Base/BaseInfo.cs
  5. +20
    -0
      ButcherManage.BO/Base/ExtensionObj.cs
  6. +14
    -0
      ButcherManage.BO/BaseInfo/ProductBatch.cs
  7. +25
    -0
      ButcherManage.BO/BaseInfo/Worker.cs
  8. +23
    -0
      ButcherManage.BO/Bill/PickOutConfirmDmo.cs
  9. +18
    -0
      ButcherManage.BO/Bill/PickOutConfirmLocal.cs
  10. +15
    -0
      ButcherManage.BO/Bill/PickOutRecord.cs
  11. +86
    -0
      ButcherManage.BO/ButcherManage.BO.csproj
  12. +13
    -0
      ButcherManage.BO/Enums/DriveType.cs
  13. +104
    -0
      ButcherManage.BO/LocalBL/PickOutConfirmBL.cs
  14. +36
    -0
      ButcherManage.BO/Properties/AssemblyInfo.cs
  15. +50
    -0
      ButcherManage.BO/Utils/AppContext.cs
  16. +141
    -0
      ButcherManage.BO/Utils/ClientRpc.cs
  17. +49
    -0
      ButcherManage.BO/Utils/DbUtil.cs
  18. +319
    -0
      ButcherManage.BO/Utils/Extensions.cs
  19. +43
    -0
      ButcherManage.BO/Utils/FormUtil.cs
  20. +126
    -0
      ButcherManage.BO/Utils/LoginUtil.cs
  21. +47
    -0
      ButcherManage.BO/Utils/XmlUtil.cs
  22. +94
    -0
      ButcherManage.Form/ButcherManage.Form.csproj
  23. +730
    -0
      ButcherManage.Form/Dialogs/CalendarSelecter.xaml
  24. +61
    -0
      ButcherManage.Form/Dialogs/CalendarSelecter.xaml.cs
  25. +543
    -0
      ButcherManage.Form/PickOutConfirm_/PickOutConfirm.Designer.cs
  26. +276
    -0
      ButcherManage.Form/PickOutConfirm_/PickOutConfirm.cs
  27. +159
    -0
      ButcherManage.Form/PickOutConfirm_/PickOutConfirm.resx
  28. +36
    -0
      ButcherManage.Form/Properties/AssemblyInfo.cs
  29. +1571
    -0
      ButcherManage.Install/ButcherManage.Install.vdproj
  30. +49
    -0
      ButcherManage.Login/App.xaml
  31. +95
    -0
      ButcherManage.Login/App.xaml.cs
  32. +119
    -0
      ButcherManage.Login/ButcherManage.Login.csproj
  33. BIN
      ButcherManage.Login/Images/login.png
  34. +38
    -0
      ButcherManage.Login/Login.xaml
  35. +100
    -0
      ButcherManage.Login/Login.xaml.cs
  36. +55
    -0
      ButcherManage.Login/Properties/AssemblyInfo.cs
  37. +8
    -0
      ButcherManage.Tools/App.xaml
  38. +16
    -0
      ButcherManage.Tools/App.xaml.cs
  39. +96
    -0
      ButcherManage.Tools/ButcherManage.Tools.csproj
  40. +16
    -0
      ButcherManage.Tools/MainWindow.xaml
  41. +83
    -0
      ButcherManage.Tools/MainWindow.xaml.cs
  42. +55
    -0
      ButcherManage.Tools/Properties/AssemblyInfo.cs

+ 2
- 0
.gitignore View File

@ -4,4 +4,6 @@
*.user
obj
bin
debug
release
_ReSharper.B3ButcherManageClient

+ 28
- 0
B3ButcherManageClient.sln View File

@ -45,6 +45,16 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OffLineQualityAndOrder", "O
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OutHouseView", "OutHouseView\OutHouseView.csproj", "{B91C97B1-8E29-41B9-980A-CC477717D699}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ButcherManage.BO", "ButcherManage.BO\ButcherManage.BO.csproj", "{B1ECBE2F-06FB-4E4C-9487-1497E0808C04}"
EndProject
Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "ButcherManage.Install", "ButcherManage.Install\ButcherManage.Install.vdproj", "{4AD5CD8C-BECA-4C4A-B6D4-C911CAD647DA}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ButcherManage.Tools", "ButcherManage.Tools\ButcherManage.Tools.csproj", "{26433793-6DB6-41FA-A531-8C674B79CFA0}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ButcherManage.Login", "ButcherManage.Login\ButcherManage.Login.csproj", "{AA93C97D-E13D-48C7-906F-92CEF2628547}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ButcherManage.Form", "ButcherManage.Form\ButcherManage.Form.csproj", "{97CECE9B-FDBA-483C-8BFE-CF118DF1A82B}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@ -133,6 +143,24 @@ Global
{B91C97B1-8E29-41B9-980A-CC477717D699}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B91C97B1-8E29-41B9-980A-CC477717D699}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B91C97B1-8E29-41B9-980A-CC477717D699}.Release|Any CPU.Build.0 = Release|Any CPU
{B1ECBE2F-06FB-4E4C-9487-1497E0808C04}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B1ECBE2F-06FB-4E4C-9487-1497E0808C04}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B1ECBE2F-06FB-4E4C-9487-1497E0808C04}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B1ECBE2F-06FB-4E4C-9487-1497E0808C04}.Release|Any CPU.Build.0 = Release|Any CPU
{4AD5CD8C-BECA-4C4A-B6D4-C911CAD647DA}.Debug|Any CPU.ActiveCfg = Debug
{4AD5CD8C-BECA-4C4A-B6D4-C911CAD647DA}.Release|Any CPU.ActiveCfg = Release
{26433793-6DB6-41FA-A531-8C674B79CFA0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{26433793-6DB6-41FA-A531-8C674B79CFA0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{26433793-6DB6-41FA-A531-8C674B79CFA0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{26433793-6DB6-41FA-A531-8C674B79CFA0}.Release|Any CPU.Build.0 = Release|Any CPU
{AA93C97D-E13D-48C7-906F-92CEF2628547}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AA93C97D-E13D-48C7-906F-92CEF2628547}.Debug|Any CPU.Build.0 = Debug|Any CPU
{AA93C97D-E13D-48C7-906F-92CEF2628547}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AA93C97D-E13D-48C7-906F-92CEF2628547}.Release|Any CPU.Build.0 = Release|Any CPU
{97CECE9B-FDBA-483C-8BFE-CF118DF1A82B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{97CECE9B-FDBA-483C-8BFE-CF118DF1A82B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{97CECE9B-FDBA-483C-8BFE-CF118DF1A82B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{97CECE9B-FDBA-483C-8BFE-CF118DF1A82B}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE


+ 14
- 0
ButcherManage.BO/Base/Base.cs View File

@ -0,0 +1,14 @@
using Forks.EnterpriseServices.DomainObjects2;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ButcherManage.BO
{
[KeyField("ID", KeyGenType.identity)]
public abstract class Base
{
public long ID { get; set; }
}
}

+ 14
- 0
ButcherManage.BO/Base/BaseInfo.cs View File

@ -0,0 +1,14 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ButcherManage.BO
{
public abstract class BaseInfo
{
public long ID { get; set; }
public string Name { get; set; }
}
}

+ 20
- 0
ButcherManage.BO/Base/ExtensionObj.cs View File

@ -0,0 +1,20 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ButcherManage.BO
{
public class ExtensionObj
{
public long? LongExt1 { get; set; }
public long? LongExt2 { get; set; }
public decimal? DecimalExt1 { get; set; }
public string StringExt1 { get; set; }
public string StringExt2 { get; set; }
}
}

+ 14
- 0
ButcherManage.BO/BaseInfo/ProductBatch.cs View File

@ -0,0 +1,14 @@
using Forks.EnterpriseServices.DomainObjects2;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ButcherManage.BO
{
[MapToTable("Butcher_ProductBatch")]
public class ProductBatch : BaseInfo
{
public DateTime? Date { get; set; }
}
}

+ 25
- 0
ButcherManage.BO/BaseInfo/Worker.cs View File

@ -0,0 +1,25 @@
using Forks.EnterpriseServices.DomainObjects2;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
namespace ButcherManage.BO
{
[MapToTable("Butcher_Worker")]
public class Worker : BaseInfo
{
public string Code { get; set; }
[DbColumn(AllowNull = false, DbType = SqlDbType.Binary, Length = 16)]
public byte[] Password { get; set; }
public string Role { get; set; }
[NonDmoProperty]
public IEnumerable<short> RoleList
{
get { return Role.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries).Select(x => short.Parse(x)); }
}
}
}

+ 23
- 0
ButcherManage.BO/Bill/PickOutConfirmDmo.cs View File

@ -0,0 +1,23 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ButcherManage.BO
{
public class PickOutConfirmDmo
{
public long ID { get; set; }
public int Order { get; set; }
public int PlanNumber { get; set; }
public string LiveColonyHouse_Name { get; set; }
public int? AlreadyNumber { get; set; }
//0:未开始,1:开始,-1:结束
public int ConfirmState { get; set; }
}
}

+ 18
- 0
ButcherManage.BO/Bill/PickOutConfirmLocal.cs View File

@ -0,0 +1,18 @@
using Forks.EnterpriseServices.DomainObjects2;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ButcherManage.BO
{
[MapToTable("Butcher_PickOutConfirmLocal")]
[KeyField("ID", KeyGenType.assigned)]
public class PickOutConfirmLocal
{
public long ID { get; set; }
public int AlreadyNumber { get; set; }
//0:未开始,1:开始,-1:结束
public int ConfirmState { get; set; }
}
}

+ 15
- 0
ButcherManage.BO/Bill/PickOutRecord.cs View File

@ -0,0 +1,15 @@
using Forks.EnterpriseServices.DomainObjects2;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ButcherManage.BO
{
[MapToTable("Butcher_PickOutRecord")]
public class PickOutRecord : Base
{
public long Order_ID { get; set; }
public int? Number { get; set; }
}
}

+ 86
- 0
ButcherManage.BO/ButcherManage.BO.csproj View File

@ -0,0 +1,86 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{B1ECBE2F-06FB-4E4C-9487-1497E0808C04}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>ButcherManage.BO</RootNamespace>
<AssemblyName>ButcherManage.BO</AssemblyName>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<ItemGroup>
<Reference Include="Forks.EnterpriseServices, Version=3.1.0.0, Culture=neutral, PublicKeyToken=7254430f49d10aae, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\tsref\release\Forks.EnterpriseServices.dll</HintPath>
</Reference>
<Reference Include="Forks.Utils, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7254430f49d10aae, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\tsref\release\Forks.Utils.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json, Version=4.0.3.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\tsref\release\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="BaseInfo\ProductBatch.cs" />
<Compile Include="BaseInfo\Worker.cs" />
<Compile Include="Base\Base.cs" />
<Compile Include="Base\BaseInfo.cs" />
<Compile Include="Base\ExtensionObj.cs" />
<Compile Include="Bill\PickOutConfirmDmo.cs" />
<Compile Include="Bill\PickOutConfirmLocal.cs" />
<Compile Include="Bill\PickOutRecord.cs" />
<Compile Include="Enums\DriveType.cs" />
<Compile Include="LocalBL\PickOutConfirmBL.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Utils\AppContext.cs" />
<Compile Include="Utils\ClientRpc.cs" />
<Compile Include="Utils\DbUtil.cs" />
<Compile Include="Utils\Extensions.cs" />
<Compile Include="Utils\FormUtil.cs" />
<Compile Include="Utils\LoginUtil.cs" />
<Compile Include="Utils\XmlUtil.cs" />
</ItemGroup>
<ItemGroup />
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

+ 13
- 0
ButcherManage.BO/Enums/DriveType.cs View File

@ -0,0 +1,13 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ButcherManage.BO.Enums
{
public enum
{
= 103,
}
}

+ 104
- 0
ButcherManage.BO/LocalBL/PickOutConfirmBL.cs View File

@ -0,0 +1,104 @@
using Forks.EnterpriseServices.DomainObjects2;
using Forks.EnterpriseServices.DomainObjects2.DQuery;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ButcherManage.BO.LocalBL
{
public static class PickOutConfirmBL
{
public static List<PickOutConfirmDmo> GetDmoList(DateTime butcherDate)
{
var json = SimpleRest.Call<string>("/MainSystem/B3ClientService/Rpcs/PickOutConfirmRpc/GetList", butcherDate);
var list = JsonConvert.DeserializeObject<List<PickOutConfirmDmo>>(json);
FillDetailWithLocal(list);
return list;
}
static void FillDetailWithLocal(List<PickOutConfirmDmo> list)
{
var query = new DQueryDom(new JoinAlias(typeof(PickOutConfirmLocal)));
query.Columns.Add(DQSelectColumn.Field("ID"));
query.Columns.Add(DQSelectColumn.Field("AlreadyNumber"));
query.Columns.Add(DQSelectColumn.Field("ConfirmState"));
query.Where.Conditions.Add(DQCondition.InList(DQExpression.Field("ID"), list.Select(x => DQExpression.Value(x.ID)).ToArray()));
using (var session = DmoSession.New())
{
using (var reader = session.ExecuteReader(query))
{
while (reader.Read())
{
var first = list.First(x => x.ID == (long)reader[0]);
first.AlreadyNumber = (int)reader[1];
first.ConfirmState = (int)reader[2];
}
}
}
}
public static void ChangeState(long id, int state)
{
using (var session = DmoSession.New())
{
Update<PickOutConfirmLocal>(session, id, "ConfirmState", state);
session.Commit();
}
}
public static void SaveRecord(PickOutRecord record)
{
using (var session = DmoSession.New())
{
if (record.ID == 0)
session.Insert(record);
else
session.Update(record);
UpdateAlreadyNumber(session, record.Order_ID);
session.Commit();
}
}
static void UpdateAlreadyNumber(IDmoSession session, long id)
{
var query = new DQueryDom(new JoinAlias(typeof(PickOutRecord)));
query.Columns.Add(DQSelectColumn.Sum("Number"));
query.Where.Conditions.Add(DQCondition.EQ("Order_ID", id));
var num = query.EExecuteScalar<int>(session);
Update<PickOutConfirmLocal>(session, id, "AlreadyNumber", num);
}
static void Update<T>(IDmoSession session, long id, string file, object value)
where T : new()
{
var type = typeof(T);
var query = new DQueryDom(new JoinAlias(type));
query.Where.Conditions.Add(DQCondition.EQ("ID", id));
query.Columns.Add(DQSelectColumn.Create(DQExpression.Value(1), "c"));
if (query.EExecuteScalar(session) == null)
{
var entity = new T();
type.GetProperty("ID").SetValue(entity, id);
type.GetProperty(file).SetValue(entity, value);
session.Insert(entity);
}
else
{
var update = new DQUpdateDom(type);
update.Where.Conditions.Add(DQCondition.EQ("ID", id));
update.Columns.Add(new DQUpdateColumn(file, value));
session.ExecuteNonQuery(update);
}
}
public static List<PickOutRecord> GetRecordList(long id)
{
var query = new DmoQuery(typeof(PickOutRecord));
query.Where.Conditions.Add(DQCondition.EQ("Order_ID", id));
query.OrderBy.Expressions.Add(DQOrderByExpression.Create("ID"));
return query.EExecuteList().Cast<PickOutRecord>().ToList();
}
}
}

+ 36
- 0
ButcherManage.BO/Properties/AssemblyInfo.cs View File

@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// 有关程序集的常规信息通过以下
// 特性集控制。更改这些特性值可修改
// 与程序集关联的信息。
[assembly: AssemblyTitle("ButcherManage.BO")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("ButcherManage.BO")]
[assembly: AssemblyCopyright("Copyright © 2018")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// 将 ComVisible 设置为 false 使此程序集中的类型
// 对 COM 组件不可见。 如果需要从 COM 访问此程序集中的类型,
// 则将该类型上的 ComVisible 特性设置为 true。
[assembly: ComVisible(false)]
// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
[assembly: Guid("312215bc-b734-42cd-a529-6f3b28bfce7f")]
// 程序集的版本信息由下面四个值组成:
//
// 主版本
// 次版本
// 生成号
// 修订号
//
// 可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值,
// 方法是按如下所示使用“*”:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

+ 50
- 0
ButcherManage.BO/Utils/AppContext.cs View File

@ -0,0 +1,50 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ButcherManage.BO.Utils
{
public static class AppContext
{
static ServerUrlConfig _connectInfo = ServerUrlConfig.Init();
public static ServerUrlConfig ConnectInfo { get { return _connectInfo; } }
static Worker _worker = null;
public static Worker Worker
{
get
{
if (_worker == null)
_worker = LoginUtil.InitUserFromLocal();
return _worker;
}
}
}
public class ServerUrlConfig
{
public static ServerUrlConfig Init()
{
return XmlUtil.DeserializeFromFile<ServerUrlConfig>();
}
public string ServerUrl { get; set; }
public bool LocalOffline { get; set; }
public string SqlConnection { get; set; }
private string _traceBackUrl = "default";
public string TraceBackUrl
{
get { return _traceBackUrl; }
set { _traceBackUrl = value; }
}
public void Save()
{
XmlUtil.SerializerObjToFile(this);
}
}
}

+ 141
- 0
ButcherManage.BO/Utils/ClientRpc.cs View File

@ -0,0 +1,141 @@
using ButcherManage.BO.Utils;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
namespace ButcherManage.BO
{
public static class SimpleRest {
static ClientRpc clientRpc;
public static T Call<T>(string method, params object[] args)
{
InitClientRpc();
return clientRpc.Call<T>(method, args);
}
static void InitClientRpc()
{
if (clientRpc != null)
return;
if (string.IsNullOrEmpty(AppContext.ConnectInfo.ServerUrl))
throw new Exception("请先配置服务器地址");
clientRpc = new ClientRpc(AppContext.ConnectInfo.ServerUrl);
}
}
public class ClientRpc
{
public ClientRpc(string url)
{
mUrl = url;
}
class _Error
{
public int? code { get; set; }
public string message { get; set; }
}
class _ErrorResposne
{
public _Error error { get; set; }
}
string mUrl;
public string Url
{
get
{
return mUrl;
}
}
public T Call<T>(string method, params object[] args)
{
var resp = DoCall<T>(method, args);
if (resp.error != null)
{
throw new Exception(string.Format("{0}:{1}", resp.error.code, resp.error.message));
}
return resp.result;
}
LRestClientReponse<T> DoCall<T>(string method, object[] args)
{
var request = (HttpWebRequest)WebRequest.Create(mUrl);
request.Method = "POST";
request.ContentType = "application/json";
var dic = new Dictionary<string, object>();
dic.Add("method", method);
dic.Add("id", 1);
dic.Add("params", args);
var json = JsonConvert.SerializeObject(dic);
var buffer = Encoding.UTF8.GetBytes(json);
var requestStream = request.GetRequestStream();
requestStream.Write(buffer, 0, buffer.Length);
var responseJson = GetResponseJSON(request);
try
{
var result = JsonConvert.DeserializeObject<LRestClientReponse<T>>(responseJson);
return result;
}
catch
{
try
{
var errorResponse = JsonConvert.DeserializeObject<_ErrorResposne>(responseJson);
if (errorResponse.error != null)
{
throw new Exception(errorResponse.error.message);
}
}
catch
{
throw new Exception("JSON反序列化失败:" + responseJson);
}
throw new Exception("JSON反序列化失败:" + responseJson);
}
}
public class LRestClientReponseError
{
public string code { get; set; }
public string message { get; set; }
public override string ToString()
{
return string.Format("{0}:{1}", code, message);
}
}
public class LRestClientReponse<T>
{
public long id { get; set; }
public LRestClientReponseError error { get; set; }
public T result { get; set; }
}
private static string GetResponseJSON(HttpWebRequest request)
{
var response = request.GetResponse();
using (var stream = response.GetResponseStream())
{
using (var reader = new StreamReader(stream, Encoding.UTF8))
{
return reader.ReadToEnd();
}
}
}
}
}

+ 49
- 0
ButcherManage.BO/Utils/DbUtil.cs View File

@ -0,0 +1,49 @@
using Forks.EnterpriseServices.DomainObjects2;
using Forks.Utils;
using Forks.Utils.Data;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
namespace ButcherManage.BO.Utils
{
public static class DbUtil
{
public static void UpdateDatabase(string sqlConnection)
{
using (ISqlUtil sqlUtil = new SqlUtil(sqlConnection))
{
var boTypes = GetTypes();
Dmo.UpdateTables(sqlUtil, boTypes);
}
}
static IEnumerable<Type> GetTypes()
{
var asm = Assembly.GetExecutingAssembly();
foreach (var t in asm.GetExportedTypes())
{
if (t.IsAbstract)
{
continue;
}
if (t.IsClass && IsMapTable(t))
{
yield return t;
}
}
}
static bool IsMapTable(Type t)
{
var attr = ReflectionUtil.GetAttribute<MapToTableAttribute>(t);
if (attr == null)
{
return false;
}
return true;
}
}
}

+ 319
- 0
ButcherManage.BO/Utils/Extensions.cs View File

@ -0,0 +1,319 @@
using ButcherManage.BO.Utils;
using Forks.EnterpriseServices.DomainObjects2;
using Forks.EnterpriseServices.DomainObjects2.DQuery;
using Forks.Utils;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ButcherManage.BO
{
public static class DmoSession
{
public static IDmoSessionWithTransaction New()
{
return Dmo.NewSession(AppContext.ConnectInfo.SqlConnection);
}
}
public static class Extensions
{
public static object EExecuteScalar(this DQueryDom query, IDmoSession session)
{
return session.ExecuteScalar(query);
}
public static object EExecuteScalar(this DQueryDom query)
{
using (var session = DmoSession.New())
{
return query.EExecuteScalar(session);
}
}
public static T EExecuteScalar<T>(this DQueryDom query, IDmoSession session)
{
return (T)query.EExecuteScalar(session);
}
public static T EExecuteScalar<T>(this DQueryDom query)
{
return (T)query.EExecuteScalar();
}
public static Tuple<T1, T2> EExecuteScalar<T1, T2>(this DQueryDom query, IDmoSession session)
{
var list = query.EExecuteList<T1, T2>(session);
if (list.Count == 0)
{
return null;
}
#if DEBUG
if (list.Count > 1)
{
throw new Exception(string.Format("期望返回1条记录实际返回{0}条", list.Count));
}
#endif
return list[0];
}
public static Tuple<T1, T2> EExecuteScalar<T1, T2>(this DQueryDom query)
{
using (var session = DmoSession.New())
{
return query.EExecuteScalar<T1, T2>(session);
}
}
public static Tuple<T1, T2, T3> EExecuteScalar<T1, T2, T3>(this DQueryDom query, IDmoSession session)
{
var list = query.EExecuteList<T1, T2, T3>(session);
if (list.Count == 0)
{
return null;
}
#if DEBUG
if (list.Count > 1)
{
throw new Exception(string.Format("期望返回1条记录实际返回{0}条", list.Count));
}
#endif
return list[0];
}
public static Tuple<T1, T2, T3> EExecuteScalar<T1, T2, T3>(this DQueryDom query)
{
using (var session = DmoSession.New())
{
return query.EExecuteScalar<T1, T2, T3>(session);
}
}
public static T EExecuteScalar<T>(this DmoQuery query) where T : class
{
var result = query.EExecuteList();
if (result.Count == 0)
{
return default(T);
}
if (result.Count > 1)
{
throw new Exception("ExecuteScalar返回多个数据");
}
return (T)result[0];
}
public static List<T> EExecuteList<T>(this DQueryDom query, IDmoSession session)
{
var list = new List<T>();
using (var reader = session.ExecuteReader(query))
{
while (reader.Read())
{
list.Add((T)reader[0]);
}
}
return list;
}
public static List<T> EExecuteList<T>(this DQueryDom query)
{
using (var session = DmoSession.New())
{
return query.EExecuteList<T>(session);
}
}
public static List<TDmo> EExecuteDmoList<TDmo>(this DQueryDom query, IDmoSession session, params string[] fields) where TDmo : new()
{
var type = typeof(TDmo);
PCheck.IsTrue(query.From.RootSource.Alias.DmoSource == DmoInfo.Get(type));
var dmoInfo = DmoInfo.Get(type);
if (fields.Length == 0)
{
fields = dmoInfo.Fields
.Select((item) => item.Name).ToArray();
}
#if DEBUG
else
{
foreach (var filed in fields)
{
if (!dmoInfo.Fields.Contains(filed))
{
throw new Exception(string.Format("对象{0}上不存在字段{1}的定义", type.Name, filed));
}
}
}
#endif
if (query.Columns.Count == 0)
{
foreach (var filed in fields)
{
query.Columns.Add(DQSelectColumn.Field(filed));
}
}
else if (query.Columns.Count != fields.Length)
{
throw new Exception("查询字段数量不匹配");
}
var indexSetDic = fields.ToDictionary((item) => Array.IndexOf<string>(fields, item), (item) => type.GetProperty(item).GetSetMethod());
var list = new List<TDmo>();
using (var reader = session.ExecuteReader(query))
{
while (reader.Read())
{
var dmo = new TDmo();
list.Add(dmo);
foreach (var pair in indexSetDic)
{
pair.Value.Invoke(dmo, new object[] { reader[pair.Key] });
}
}
}
return list;
}
public static List<TDmo> EExecuteDmoList<TDmo>(this DQueryDom query, params string[] fields) where TDmo : new()
{
using (var session = DmoSession.New())
{
return query.EExecuteDmoList<TDmo>(session, fields);
}
}
public static List<Tuple<T1, T2>> EExecuteList<T1, T2>(this DQueryDom query, IDmoSession session)
{
var list = new List<Tuple<T1, T2>>();
using (var reader = session.ExecuteReader(query))
{
while (reader.Read())
{
var value = new Tuple<T1, T2>(
(T1)reader[0],
(T2)reader[1]);
list.Add(value);
}
}
return list;
}
public static List<Tuple<T1, T2>> EExecuteList<T1, T2>(this DQueryDom query)
{
using (var session = DmoSession.New())
{
return query.EExecuteList<T1, T2>(session);
}
}
public static List<Tuple<T1, T2, T3>> EExecuteList<T1, T2, T3>(this DQueryDom query, IDmoSession session)
{
var list = new List<Tuple<T1, T2, T3>>();
using (var reader = session.ExecuteReader(query))
{
while (reader.Read())
{
var value = new Tuple<T1, T2, T3>(
(T1)reader[0],
(T2)reader[1],
(T3)reader[2]);
list.Add(value);
}
}
return list;
}
public static List<Tuple<T1, T2, T3>> EExecuteList<T1, T2, T3>(this DQueryDom query)
{
using (var session = DmoSession.New())
{
return query.EExecuteList<T1, T2, T3>(session);
}
}
public static List<Tuple<T1, T2, T3, T4>> EExecuteList<T1, T2, T3, T4>(this DQueryDom query)
{
using (var session = DmoSession.New())
{
return query.EExecuteList<T1, T2, T3, T4>(session);
}
}
public static List<Tuple<T1, T2, T3, T4>> EExecuteList<T1, T2, T3, T4>(this DQueryDom query, IDmoSession session)
{
var list = new List<Tuple<T1, T2, T3, T4>>();
using (var reader = session.ExecuteReader(query))
{
while (reader.Read())
{
var value = new Tuple<T1, T2, T3, T4>(
(T1)reader[0],
(T2)reader[1],
(T3)reader[2], (T4)reader[3]);
list.Add(value);
}
}
return list;
}
public static List<Tuple<T1, T2, T3, T4, T5>> EExecuteList<T1, T2, T3, T4, T5>(this DQueryDom query)
{
using (var session = DmoSession.New())
{
return query.EExecuteList<T1, T2, T3, T4, T5>(session);
}
}
public static List<Tuple<T1, T2, T3, T4, T5>> EExecuteList<T1, T2, T3, T4, T5>(this DQueryDom query, IDmoSession session)
{
var list = new List<Tuple<T1, T2, T3, T4, T5>>();
using (var reader = session.ExecuteReader(query))
{
while (reader.Read())
{
var value = new Tuple<T1, T2, T3, T4, T5>(
(T1)reader[0],
(T2)reader[1],
(T3)reader[2], (T4)reader[3], (T5)reader[4]);
list.Add(value);
}
}
return list;
}
public static IList EExecuteList(this DmoQuery query)
{
using (var session = DmoSession.New())
{
return session.ExecuteList(query);
}
}
public static void EExecute(this DQUpdateDom update)
{
using (var session = DmoSession.New())
{
session.ExecuteNonQuery(update);
session.Commit();
}
}
public static void EExecute(this DQDeleteDom delete)
{
using (var session = DmoSession.New())
{
session.ExecuteNonQuery(delete);
session.Commit();
}
}
}
}

+ 43
- 0
ButcherManage.BO/Utils/FormUtil.cs View File

@ -0,0 +1,43 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Reflection;
namespace ButcherManage.BO.Utils
{
public static class FormUtil
{
public static Form CreateFrom()
{
var dll = Path.Combine(Environment.CurrentDirectory, "ButcherManage.Form.dll");
if (!File.Exists(dll))
throw new Exception("缺少必要的程序集文件 ButcherManage.Form.dll");
var formType = typeof(IWithRoleForm);
Form form = null;
foreach (var type in Assembly.LoadFile(dll).GetTypes())
{
if (formType.IsAssignableFrom(type))
{
var instance = (IWithRoleForm)Activator.CreateInstance(type);
foreach (var item in instance.RoleName)
{
if (AppContext.Worker.RoleList.Contains(item))
return instance.Generate();
}
}
}
return form;
}
}
public interface IWithRoleForm
{
List<short> RoleName { get; }
Form Generate();
}
}

+ 126
- 0
ButcherManage.BO/Utils/LoginUtil.cs View File

@ -0,0 +1,126 @@
using Forks.EnterpriseServices.DomainObjects2;
using Forks.EnterpriseServices.DomainObjects2.DQuery;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
namespace ButcherManage.BO.Utils
{
public static class LoginUtil
{
const string WORKPATH = "Config\\Worker.ldb";
public static Worker InitUserFromLocal()
{
var work = new Worker();
if (!AppContext.ConnectInfo.LocalOffline)
{
if (File.Exists(WORKPATH))
work.Name = File.ReadAllText(WORKPATH);
}
else
{
using (var session = DmoSession.New())
{
var query = new DmoQuery(typeof(Worker));
var obj = session.ExecuteScalar(query);
if (obj != null)
work = (Worker)obj;
}
}
return work;
}
public static string GetWorkerNameByCode(string code)
{
string method = "/MainSystem/B3ClientService/Rpcs/LoginRpc/GetWorkerNameByCode";
var result = SimpleRest.Call<string>(method, code);
int r;
if (int.TryParse(result, out r))
{
if (r == 0)
throw new Exception("工号输入错误");
throw new Exception("账号被停用");
}
else
{
AppContext.Worker.Code = code;
return result;
}
}
public static void Login(string userName, string pwd)
{
RpcLogin(userName, pwd);
AppContext.Worker.Name = userName;
AppContext.Worker.Password = EncodePwd(pwd);
if (!AppContext.ConnectInfo.LocalOffline)
{
File.WriteAllText(WORKPATH, userName);
return;
}
using (var session = DmoSession.New())
{
var table = DmoInfo.Get(typeof(Worker)).MappedDBObject;
var sql = string.Format(@"delete from [{0}]", table);
session.ExecuteSqlNonQuery(sql);
session.Insert(AppContext.Worker);
session.Commit();
}
}
static void RpcLogin(string name, string pwd)
{
const string loginMethod = "/MainSystem/B3ClientService/Rpcs/LoginRpc/Login";
var r = SimpleRest.Call<long>(loginMethod, name, pwd);
if (r == 0)
throw new Exception("用户名密码错误");
else if (r == -1)
throw new Exception("账号被停用");
AppContext.Worker.ID = r;
const string wpfUserMethod = "/MainSystem/B3ClientService/Rpcs/LoginRpc/GetWorkerBindDrive";
AppContext.Worker.Role = SimpleRest.Call<string>(wpfUserMethod, AppContext.Worker.ID);
}
public static byte[] EncodePwd(string pwd)
{
using (MD5 md5 = MD5.Create())
return md5.ComputeHash(Encoding.Unicode.GetBytes(pwd));
}
public static bool TestConnection(int? millisecondsTimeout = null)
{
var url = AppContext.ConnectInfo.ServerUrl;
if (string.IsNullOrEmpty(url))
return false;
var uri = new Uri(url);
if (millisecondsTimeout == null)
{
millisecondsTimeout = 50;
}
return TestConnection(uri.Host, uri.Port, millisecondsTimeout.Value);
}
public static bool TestConnection(string host, int port, int millisecondsTimeout)
{
var client = new System.Net.Sockets.TcpClient();
try
{
var ar = client.BeginConnect(host, port, null, null);
ar.AsyncWaitHandle.WaitOne(millisecondsTimeout);
return client.Connected;
}
catch (Exception)
{
return false;
}
finally
{
client.Close();
}
}
}
}

+ 47
- 0
ButcherManage.BO/Utils/XmlUtil.cs View File

@ -0,0 +1,47 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Xml.Serialization;
namespace ButcherManage.BO.Utils
{
public static class XmlUtil
{
static string config = "Config";
public static void SerializerObjToFile(object obj, string fileName = "")
{
if (string.IsNullOrWhiteSpace(fileName))
{
fileName = Path.Combine(config, obj.GetType().Name + ".xml");
}
var ser = new XmlSerializer(obj.GetType());
using (var stream = File.Open(fileName, FileMode.Create))
{
ser.Serialize(stream, obj);
}
}
public static T DeserializeFromFile<T>(string fileName = "")
where T : new()
{
if (string.IsNullOrWhiteSpace(fileName))
{
fileName = Path.Combine(config, typeof(T).Name + ".xml");
}
if (!File.Exists(fileName))
{
return new T();
}
using (var reader = new StreamReader(fileName))
{
var xs = new XmlSerializer(typeof(T));
object obj = xs.Deserialize(reader);
reader.Close();
return (T)obj;
}
}
}
}

+ 94
- 0
ButcherManage.Form/ButcherManage.Form.csproj View File

@ -0,0 +1,94 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{97CECE9B-FDBA-483C-8BFE-CF118DF1A82B}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>ButcherManage</RootNamespace>
<AssemblyName>ButcherManage.Form</AssemblyName>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<ItemGroup>
<Reference Include="PresentationCore" />
<Reference Include="PresentationFramework" />
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xaml" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
<Reference Include="WindowsBase" />
<Reference Include="WinFormControl, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL" />
</ItemGroup>
<ItemGroup>
<Compile Include="Dialogs\CalendarSelecter.xaml.cs">
<DependentUpon>CalendarSelecter.xaml</DependentUpon>
</Compile>
<Compile Include="PickOutConfirm_\PickOutConfirm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="PickOutConfirm_\PickOutConfirm.Designer.cs">
<DependentUpon>PickOutConfirm.cs</DependentUpon>
</Compile>
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="PickOutConfirm_\PickOutConfirm.resx">
<DependentUpon>PickOutConfirm.cs</DependentUpon>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\ButcherManage.BO\ButcherManage.BO.csproj">
<Project>{b1ecbe2f-06fb-4e4c-9487-1497e0808c04}</Project>
<Name>ButcherManage.BO</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<Page Include="Dialogs\CalendarSelecter.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<PropertyGroup>
<PostBuildEvent>if $(Configuration)==Debug (
xcopy "$(ProjectDir)bin\debug\*.*" "$(ProjectDir)..\ButcherManage.Login\bin\debug\" /y
)</PostBuildEvent>
</PropertyGroup>
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

+ 730
- 0
ButcherManage.Form/Dialogs/CalendarSelecter.xaml View File

@ -0,0 +1,730 @@
<Window x:Class="ButcherManage.Dialogs.CalendarSelecter"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
WindowStartupLocation="CenterOwner"
Title="MainWindow"
Width="500"
Height="500"
WindowStyle="None" Background="{x:Null}"
AllowsTransparency="True"
MouseLeftButtonDown="DragWindow"
>
<Window.Resources>
<Style x:Key="CalendarStyle1"
TargetType="{x:Type Calendar}">
<!--日历控件的背景色,也可以改成绑定的-->
<Setter Property="Background"
Value="#f6f6f6" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Calendar}">
<StackPanel x:Name="PART_Root"
HorizontalAlignment="Center"
VerticalAlignment="Center">
<!--这个是日历控件的主体元件,也是内部元件PART_CalendarItem名称不要更改,可以改它的其它样式属性-->
<CalendarItem x:Name="PART_CalendarItem"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
Background="{TemplateBinding Background}"
Style="{TemplateBinding CalendarItemStyle}"
Height="{TemplateBinding Height}"
Width="{TemplateBinding Width}"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch" />
</StackPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<!--日历主体样式表-->
<Style x:Key="CalendarItemStyle1"
TargetType="{x:Type CalendarItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type CalendarItem}">
<ControlTemplate.Resources>
<DataTemplate x:Key="{x:Static CalendarItem.DayTitleTemplateResourceKey}">
<!--日历星期几的绑定样式,我格式化成周一,周二等-->
<TextBlock Foreground="#666666"
FontSize="16"
FontFamily="微软雅黑"
HorizontalAlignment="Center"
Margin="0 15"
Text="{Binding StringFormat=周{0} }"
VerticalAlignment="Center" />
</DataTemplate>
</ControlTemplate.Resources>
<Grid x:Name="PART_Root">
<Grid.Resources>
<!--设置日历控件 IsEnable=false 时的不可用遮罩层颜色,并且会播放过渡动画-->
<SolidColorBrush x:Key="DisabledColor"
Color="#A5FFFFFF" />
</Grid.Resources>
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="Normal" />
<VisualState x:Name="Disabled">
<!--设置日历控件 IsEnable=false 时遮罩层透明度0-1变色动画-->
<Storyboard>
<DoubleAnimation Duration="0"
To="1"
Storyboard.TargetProperty="Opacity"
Storyboard.TargetName="PART_DisabledVisual" />
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<Border BorderBrush="#cfcfcf"
BorderThickness="0"
Background="{TemplateBinding Background}"
CornerRadius="2">
<Border>
<Grid>
<Grid.Resources>
<!--日历头左箭头按钮样式模版-->
<ControlTemplate x:Key="PreviousButtonTemplate"
TargetType="{x:Type Button}">
<!--鼠标悬停在左箭头按钮上时改变鼠标指针样式-->
<Grid Cursor="Hand">
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="Normal" />
<VisualState x:Name="MouseOver">
<!--鼠标悬停在左箭头按钮上时左箭头颜色变化动画-->
<Storyboard>
<ColorAnimation Duration="0"
To="#FF73A9D8"
Storyboard.TargetProperty="(Shape.Fill).(SolidColorBrush.Color)"
Storyboard.TargetName="path" />
</Storyboard>
</VisualState>
<VisualState x:Name="Disabled">
<Storyboard>
<DoubleAnimation Duration="0"
To=".5"
Storyboard.TargetProperty="(Shape.Fill).(Brush.Opacity)"
Storyboard.TargetName="path" />
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<!--左箭头整个区域矩形块-->
<Rectangle Fill="#363636"
Opacity="1"
Stretch="Fill" />
<Grid>
<!--左箭头-->
<Path x:Name="path"
Data="M288.75,232.25 L288.75,240.625 L283,236.625 z"
Fill="#e0e0e0"
HorizontalAlignment="Left"
Height="15"
Width="15"
Margin="20,0,0,0"
Stretch="Fill"
VerticalAlignment="Center" />
</Grid>
</Grid>
</ControlTemplate>
<!--日历头右箭头按钮样式模版,这块跟左箭头样式模版没什么区别-->
<ControlTemplate x:Key="NextButtonTemplate"
TargetType="{x:Type Button}">
<Grid Cursor="Hand">
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="Normal" />
<VisualState x:Name="MouseOver">
<Storyboard>
<ColorAnimation Duration="0"
To="#FF73A9D8"
Storyboard.TargetProperty="(Shape.Fill).(SolidColorBrush.Color)"
Storyboard.TargetName="path" />
</Storyboard>
</VisualState>
<VisualState x:Name="Disabled">
<Storyboard>
<DoubleAnimation Duration="0"
To=".5"
Storyboard.TargetProperty="(Shape.Fill).(Brush.Opacity)"
Storyboard.TargetName="path" />
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<Rectangle Fill="#363636"
Opacity="1"
Stretch="Fill" />
<Grid>
<Path x:Name="path"
Data="M282.875,231.875 L282.875,240.375 L288.625,236 z"
Fill="#e0e0e0"
HorizontalAlignment="Right"
Height="15"
Width="15"
Margin="0,0,20,0"
Stretch="Fill"
VerticalAlignment="Center" />
</Grid>
</Grid>
</ControlTemplate>
<!--日历头中间年按钮样式模版-->
<ControlTemplate x:Key="HeaderButtonTemplate"
TargetType="{x:Type Button}">
<Grid Cursor="Hand">
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="Normal" />
<VisualState x:Name="MouseOver">
<Storyboard>
<ColorAnimation Duration="0"
To="#FF73A9D8"
Storyboard.TargetProperty="(TextElement.Foreground).(SolidColorBrush.Color)"
Storyboard.TargetName="buttonContent" />
</Storyboard>
</VisualState>
<VisualState x:Name="Disabled">
<Storyboard>
<DoubleAnimation Duration="0"
To=".5"
Storyboard.TargetProperty="Opacity"
Storyboard.TargetName="buttonContent" />
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<ContentPresenter x:Name="buttonContent"
ContentTemplate="{TemplateBinding ContentTemplate}"
Content="{TemplateBinding Content}"
TextElement.Foreground="#e0e0e0"
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
Margin="1,4,1,9"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}" />
</Grid>
</ControlTemplate>
</Grid.Resources>
<Grid.RowDefinitions>
<!--日历头,左箭头,年,右箭头-->
<RowDefinition Height="Auto" />
<!--日历内容,星期几和具体的日期几号几号-->
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<!--左箭头-->
<ColumnDefinition Width="Auto" />
<!--年-->
<ColumnDefinition Width="*" />
<!--右箭头-->
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<!--头,左箭头,年,右箭头,整体的背景色-->
<Border Grid.Row="0"
Grid.ColumnSpan="3"
Background="#363636"></Border>
<!--左箭头-->
<Button x:Name="PART_PreviousButton"
Grid.Column="0"
Focusable="False"
HorizontalAlignment="Left"
Grid.Row="0"
Template="{StaticResource PreviousButtonTemplate}" />
<!--年-->
<Button x:Name="PART_HeaderButton"
Grid.Column="1"
FontFamily="微软雅黑"
Focusable="False"
FontSize="26"
HorizontalAlignment="Center"
Grid.Row="0"
Template="{StaticResource HeaderButtonTemplate}"
VerticalAlignment="Center" />
<!--右箭头-->
<Button x:Name="PART_NextButton"
Grid.Column="2"
Focusable="False"
HorizontalAlignment="Right"
Grid.Row="0"
Template="{StaticResource NextButtonTemplate}" />
<!--日期几号几号内容显示-->
<Border Grid.Row="1"
Grid.ColumnSpan="3"
Margin="0"
BorderBrush="#cfcfcf"
BorderThickness="3,0,3,3">
<Grid x:Name="PART_MonthView"
HorizontalAlignment="Center"
Visibility="Visible">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="auto" />
<RowDefinition Height="*" />
<RowDefinition Height="*" />
<RowDefinition Height="*" />
<RowDefinition Height="*" />
<RowDefinition Height="*" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
</Grid>
</Border>
<!--月和年内容显示-->
<Grid x:Name="PART_YearView"
Grid.ColumnSpan="3"
HorizontalAlignment="Center"
Margin="6,-3,7,6"
Grid.Row="1"
Visibility="Hidden"
VerticalAlignment="Center">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="*" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
</Grid>
</Grid>
</Border>
</Border>
<!--日历不可用的遮罩层-->
<Rectangle x:Name="PART_DisabledVisual"
Fill="{StaticResource DisabledColor}"
Opacity="0"
RadiusY="2"
RadiusX="2"
Stretch="Fill"
Stroke="{StaticResource DisabledColor}"
StrokeThickness="1"
Visibility="Collapsed" />
</Grid>
<!--触发器属性-->
<ControlTemplate.Triggers>
<Trigger Property="IsEnabled"
Value="False">
<Setter Property="Visibility"
TargetName="PART_DisabledVisual"
Value="Visible" />
</Trigger>
<DataTrigger Binding="{Binding DisplayMode, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Calendar}}}"
Value="Year">
<Setter Property="Visibility"
TargetName="PART_MonthView"
Value="Hidden" />
<Setter Property="Visibility"
TargetName="PART_YearView"
Value="Visible" />
</DataTrigger>
<DataTrigger Binding="{Binding DisplayMode, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Calendar}}}"
Value="Decade">
<Setter Property="Visibility"
TargetName="PART_MonthView"
Value="Hidden" />
<Setter Property="Visibility"
TargetName="PART_YearView"
Value="Visible" />
</DataTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<!--单个几号几号按钮的样式模版-->
<Style x:Key="CalendarDayButtonStyle1"
TargetType="{x:Type CalendarDayButton}" >
<Setter Property="Margin"
Value="1" />
<Setter Property="MinWidth"
Value="5" />
<Setter Property="MinHeight"
Value="5" />
<Setter Property="FontSize"
Value="22" />
<Setter Property="FontFamily"
Value="微软雅黑" />
<Setter Property="HorizontalContentAlignment"
Value="Center" />
<Setter Property="VerticalContentAlignment"
Value="Center" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type CalendarDayButton}">
<Grid>
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="CommonStates">
<VisualStateGroup.Transitions>
<VisualTransition GeneratedDuration="0:0:0.1" />
</VisualStateGroup.Transitions>
<VisualState x:Name="Normal" />
<!--悬停的颜色动画-->
<VisualState x:Name="MouseOver">
<Storyboard>
<DoubleAnimation Duration="0"
To="0.5"
Storyboard.TargetProperty="Opacity"
Storyboard.TargetName="HighlightBackground" />
</Storyboard>
</VisualState>
<!--按下后动画-->
<VisualState x:Name="Pressed">
<Storyboard>
<DoubleAnimation Duration="0"
To="0.5"
Storyboard.TargetProperty="Opacity"
Storyboard.TargetName="HighlightBackground" />
</Storyboard>
</VisualState>
<!--不可用动画-->
<VisualState x:Name="Disabled">
<Storyboard>
<DoubleAnimation Duration="0"
To="0"
Storyboard.TargetProperty="Opacity"
Storyboard.TargetName="HighlightBackground" />
<DoubleAnimation Duration="0"
To=".35"
Storyboard.TargetProperty="Opacity"
Storyboard.TargetName="NormalText" />
</Storyboard>
</VisualState>
</VisualStateGroup>
<VisualStateGroup x:Name="SelectionStates">
<VisualStateGroup.Transitions>
<VisualTransition GeneratedDuration="0" />
</VisualStateGroup.Transitions>
<VisualState x:Name="Unselected" />
<!--选中某日期的样式-->
<VisualState x:Name="Selected">
<Storyboard>
<DoubleAnimation Duration="0"
To=".75"
Storyboard.TargetProperty="Opacity"
Storyboard.TargetName="SelectedBackground" />
<ColorAnimation Duration="0"
To="white"
Storyboard.TargetProperty="(TextElement.Foreground).(SolidColorBrush.Color)"
Storyboard.TargetName="NormalText" />
</Storyboard>
</VisualState>
</VisualStateGroup>
<VisualStateGroup x:Name="CalendarButtonFocusStates">
<VisualStateGroup.Transitions>
<VisualTransition GeneratedDuration="0" />
</VisualStateGroup.Transitions>
<VisualState x:Name="CalendarButtonFocused">
<Storyboard>
<ObjectAnimationUsingKeyFrames Duration="0"
Storyboard.TargetProperty="Visibility"
Storyboard.TargetName="DayButtonFocusVisual">
<DiscreteObjectKeyFrame KeyTime="0">
<DiscreteObjectKeyFrame.Value>
<Visibility>Visible</Visibility>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
<VisualState x:Name="CalendarButtonUnfocused">
<Storyboard>
<ObjectAnimationUsingKeyFrames Duration="0"
Storyboard.TargetProperty="Visibility"
Storyboard.TargetName="DayButtonFocusVisual">
<DiscreteObjectKeyFrame KeyTime="0">
<DiscreteObjectKeyFrame.Value>
<Visibility>Collapsed</Visibility>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
</VisualStateGroup>
<VisualStateGroup x:Name="ActiveStates">
<VisualStateGroup.Transitions>
<VisualTransition GeneratedDuration="0" />
</VisualStateGroup.Transitions>
<VisualState x:Name="Active" />
<VisualState x:Name="Inactive">
<Storyboard>
<ColorAnimation Duration="0"
To="#b4b3b3"
Storyboard.TargetProperty="(TextElement.Foreground).(SolidColorBrush.Color)"
Storyboard.TargetName="NormalText" />
</Storyboard>
</VisualState>
</VisualStateGroup>
<VisualStateGroup x:Name="DayStates">
<VisualStateGroup.Transitions>
<VisualTransition GeneratedDuration="0" />
</VisualStateGroup.Transitions>
<VisualState x:Name="RegularDay" />
<!--今天的样式-->
<VisualState x:Name="Today">
<Storyboard>
<DoubleAnimation Duration="0"
To="1"
Storyboard.TargetProperty="Opacity"
Storyboard.TargetName="TodayBackground" />
<ColorAnimation Duration="0"
To="#666666"
Storyboard.TargetProperty="(TextElement.Foreground).(SolidColorBrush.Color)"
Storyboard.TargetName="NormalText" />
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility"
Storyboard.TargetName="imgToday">
<DiscreteObjectKeyFrame KeyTime="0">
<DiscreteObjectKeyFrame.Value>
<Visibility>Visible</Visibility>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
</VisualStateGroup>
<!--过期日期的-->
<VisualStateGroup x:Name="BlackoutDayStates">
<VisualStateGroup.Transitions>
<VisualTransition GeneratedDuration="0" />
</VisualStateGroup.Transitions>
<VisualState x:Name="NormalDay" />
<VisualState x:Name="BlackoutDay">
<Storyboard>
<DoubleAnimation Duration="0"
To=".2"
Storyboard.TargetProperty="Opacity"
Storyboard.TargetName="Blackout" />
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<Border BorderBrush="#bbbbbb"
BorderThickness="1">
<Border BorderBrush="white"
BorderThickness="2,2,0,0"
Margin="1,1,0,0"></Border>
</Border>
<Rectangle x:Name="TodayBackground"
Fill="#c6c6c6"
Opacity="0"
RadiusY="1"
RadiusX="1" />
<Rectangle x:Name="SelectedBackground"
Fill="#6eafbf"
Opacity="0"
RadiusY="1"
RadiusX="1" />
<Border BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
Background="{TemplateBinding Background}" />
<Rectangle x:Name="HighlightBackground"
Fill="#FFBADDE9"
Opacity="0"
RadiusY="1"
RadiusX="1" />
<ContentPresenter x:Name="NormalText"
TextElement.Foreground="#666666"
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}" />
<Path x:Name="Blackout"
Data="M8.1772461,11.029181 L10.433105,11.029181 L11.700684,12.801641 L12.973633,11.029181 L15.191895,11.029181 L12.844727,13.999395 L15.21875,17.060919 L12.962891,17.060919 L11.673828,15.256231 L10.352539,17.060919 L8.1396484,17.060919 L10.519043,14.042364 z"
Fill="#FF000000"
HorizontalAlignment="Stretch"
Margin="3"
Opacity="0"
RenderTransformOrigin="0.5,0.5"
Stretch="Fill"
VerticalAlignment="Stretch" />
<Rectangle x:Name="DayButtonFocusVisual"
IsHitTestVisible="false"
RadiusY="1"
RadiusX="1"
Stroke="#FF45D6FA"
Visibility="Collapsed" />
<Image x:Name="imgToday"
Width="44"
Height="34"
VerticalAlignment="Top"
HorizontalAlignment="Left"
Initialized="imgToday_Initialized"
Visibility="Hidden" />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style x:Key="CalendarButtonStyle1"
TargetType="{x:Type CalendarButton}" >
<Setter Property="Background"
Value="#FFBADDE9" />
<Setter Property="MinWidth"
Value="80" />
<Setter Property="MinHeight"
Value="80" />
<Setter Property="Margin"
Value="20" />
<Setter Property="FontSize"
Value="25" />
<Setter Property="HorizontalContentAlignment"
Value="Center" />
<Setter Property="VerticalContentAlignment"
Value="Center" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type CalendarButton}">
<Grid>
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="CommonStates">
<VisualStateGroup.Transitions>
<VisualTransition GeneratedDuration="0:0:0.1" />
</VisualStateGroup.Transitions>
<VisualState x:Name="Normal" />
<VisualState x:Name="MouseOver">
<Storyboard>
<DoubleAnimation Duration="0"
To=".5"
Storyboard.TargetProperty="Opacity"
Storyboard.TargetName="Background" />
</Storyboard>
</VisualState>
<VisualState x:Name="Pressed">
<Storyboard>
<DoubleAnimation Duration="0"
To=".5"
Storyboard.TargetProperty="Opacity"
Storyboard.TargetName="Background" />
</Storyboard>
</VisualState>
</VisualStateGroup>
<VisualStateGroup x:Name="SelectionStates">
<VisualStateGroup.Transitions>
<VisualTransition GeneratedDuration="0" />
</VisualStateGroup.Transitions>
<VisualState x:Name="Unselected" />
<VisualState x:Name="Selected">
<Storyboard>
<DoubleAnimation Duration="0"
To=".75"
Storyboard.TargetProperty="Opacity"
Storyboard.TargetName="SelectedBackground" />
</Storyboard>
</VisualState>
</VisualStateGroup>
<VisualStateGroup x:Name="ActiveStates">
<VisualStateGroup.Transitions>
<VisualTransition GeneratedDuration="0" />
</VisualStateGroup.Transitions>
<VisualState x:Name="Active" />
<VisualState x:Name="Inactive">
<Storyboard>
<ColorAnimation Duration="0"
To="#FF777777"
Storyboard.TargetProperty="(TextElement.Foreground).(SolidColorBrush.Color)"
Storyboard.TargetName="NormalText" />
</Storyboard>
</VisualState>
</VisualStateGroup>
<VisualStateGroup x:Name="CalendarButtonFocusStates">
<VisualStateGroup.Transitions>
<VisualTransition GeneratedDuration="0" />
</VisualStateGroup.Transitions>
<VisualState x:Name="CalendarButtonFocused">
<Storyboard>
<ObjectAnimationUsingKeyFrames Duration="0"
Storyboard.TargetProperty="Visibility"
Storyboard.TargetName="CalendarButtonFocusVisual">
<DiscreteObjectKeyFrame KeyTime="0">
<DiscreteObjectKeyFrame.Value>
<Visibility>Visible</Visibility>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
<VisualState x:Name="CalendarButtonUnfocused">
<Storyboard>
<ObjectAnimationUsingKeyFrames Duration="0"
Storyboard.TargetProperty="Visibility"
Storyboard.TargetName="CalendarButtonFocusVisual">
<DiscreteObjectKeyFrame KeyTime="0">
<DiscreteObjectKeyFrame.Value>
<Visibility>Collapsed</Visibility>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<Rectangle x:Name="SelectedBackground"
Fill="{TemplateBinding Background}"
Opacity="0"
RadiusY="1"
RadiusX="1" />
<Rectangle x:Name="Background"
Fill="{TemplateBinding Background}"
Opacity="0"
RadiusY="1"
RadiusX="1" />
<ContentPresenter x:Name="NormalText"
TextElement.Foreground="#FF333333"
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
Margin="1,0,1,1"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}" />
<Rectangle x:Name="CalendarButtonFocusVisual"
IsHitTestVisible="false"
RadiusY="1"
RadiusX="1"
Stroke="#FF45D6FA"
Visibility="Collapsed" />
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsFocused"
Value="True">
<Setter Property="Visibility"
TargetName="CalendarButtonFocusVisual"
Value="Visible" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>
<Grid x:Name="LayoutRoot">
<Calendar x:Name="MC" Style="{DynamicResource CalendarStyle1}"
CalendarItemStyle="{DynamicResource CalendarItemStyle1}"
CalendarDayButtonStyle="{DynamicResource CalendarDayButtonStyle1}"
CalendarButtonStyle="{DynamicResource CalendarButtonStyle1}"
SelectedDatesChanged="MC_SelectedDatesChanged"
Width="500"
Height="500">
</Calendar>
</Grid>
</Window>

+ 61
- 0
ButcherManage.Form/Dialogs/CalendarSelecter.xaml.cs View File

@ -0,0 +1,61 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace ButcherManage.Dialogs
{
/// <summary>
/// CalendarSelecter.xaml 的交互逻辑
/// </summary>
public partial class CalendarSelecter : Window, INotifyPropertyChanged
{
public CalendarSelecter()
{
InitializeComponent();
}
public void DragWindow(object sender, MouseButtonEventArgs args)
{
this.DragMove();
}
private DateTime _result;
public DateTime Result
{
get { return _result; }
private set { _result = value; OnPropertyChanged("Result"); }
}
private void MC_SelectedDatesChanged(object sender, EventArgs e)
{
Result = MC.SelectedDate.Value;
DialogResult = true;
}
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
private void imgToday_Initialized(object sender, EventArgs e)
{
var imagePanel = (sender as Image);
var path = System.IO.Path.Combine(Environment.CurrentDirectory, "Images", "today.png");
imagePanel.Source = new BitmapImage(new Uri(path, UriKind.Absolute)); ;
}
}
}

+ 543
- 0
ButcherManage.Form/PickOutConfirm_/PickOutConfirm.Designer.cs View File

@ -0,0 +1,543 @@
namespace ButcherManage.PickOutConfirm_
{
partial class PickOutConfirm
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle10 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle11 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle14 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle15 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle12 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle13 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle16 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle17 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle18 = new System.Windows.Forms.DataGridViewCellStyle();
this.panel1 = new System.Windows.Forms.Panel();
this.orderGrid = new WinFormControl.UDataGridView();
this.L_ID = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.L_ConfirmState = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.L_Order = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.L_PlanNumber = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.L_LiveColonyHouse_Name = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.L_AlreadyNumber = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.L_Start = new System.Windows.Forms.DataGridViewButtonColumn();
this.L_End = new System.Windows.Forms.DataGridViewButtonColumn();
this.panel2 = new System.Windows.Forms.Panel();
this.zeroBtn = new WinFormControl.NButton();
this.panel3 = new System.Windows.Forms.Panel();
this.countLbl = new WinFormControl.ULabel();
this.uLabel3 = new WinFormControl.ULabel();
this.uLabel2 = new WinFormControl.ULabel();
this.numberLbl = new WinFormControl.ULabel();
this.recordGrid = new WinFormControl.UDataGridView();
this.R_C1 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.R_C2 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.R_C3 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.R_C4 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.R_C5 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.numPad = new System.Windows.Forms.FlowLayoutPanel();
this.colseBtn = new WinFormControl.NButton();
this.uTimerLabel1 = new WinFormControl.UTimerLabel();
this.datePicker = new System.Windows.Forms.TextBox();
this.uLabel1 = new WinFormControl.ULabel();
this.queryBtn = new WinFormControl.NButton();
this.uLabel4 = new WinFormControl.ULabel();
this.orderLbl = new WinFormControl.ULabel();
this.panel1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.orderGrid)).BeginInit();
this.panel2.SuspendLayout();
this.panel3.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.recordGrid)).BeginInit();
this.SuspendLayout();
//
// panel1
//
this.panel1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.panel1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.panel1.Controls.Add(this.orderGrid);
this.panel1.Location = new System.Drawing.Point(12, 65);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(559, 503);
this.panel1.TabIndex = 2;
//
// orderGrid
//
this.orderGrid.AllowUserToAddRows = false;
this.orderGrid.AllowUserToDeleteRows = false;
this.orderGrid.AllowUserToResizeColumns = false;
this.orderGrid.AllowUserToResizeRows = false;
dataGridViewCellStyle10.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(235)))), ((int)(((byte)(235)))));
this.orderGrid.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle10;
this.orderGrid.BackgroundColor = System.Drawing.Color.White;
this.orderGrid.BorderStyle = System.Windows.Forms.BorderStyle.None;
dataGridViewCellStyle11.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
dataGridViewCellStyle11.Font = new System.Drawing.Font("宋体", 12F);
dataGridViewCellStyle11.ForeColor = System.Drawing.Color.White;
dataGridViewCellStyle11.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
this.orderGrid.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle11;
this.orderGrid.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.orderGrid.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
this.L_ID,
this.L_ConfirmState,
this.L_Order,
this.L_PlanNumber,
this.L_LiveColonyHouse_Name,
this.L_AlreadyNumber,
this.L_Start,
this.L_End});
this.orderGrid.Dock = System.Windows.Forms.DockStyle.Fill;
this.orderGrid.Location = new System.Drawing.Point(0, 0);
this.orderGrid.MultiSelect = false;
this.orderGrid.Name = "orderGrid";
this.orderGrid.ReadOnly = true;
dataGridViewCellStyle14.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
dataGridViewCellStyle14.BackColor = System.Drawing.SystemColors.Control;
dataGridViewCellStyle14.Font = new System.Drawing.Font("宋体", 12F);
dataGridViewCellStyle14.ForeColor = System.Drawing.SystemColors.WindowText;
dataGridViewCellStyle14.SelectionBackColor = System.Drawing.SystemColors.Highlight;
dataGridViewCellStyle14.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
dataGridViewCellStyle14.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
this.orderGrid.RowHeadersDefaultCellStyle = dataGridViewCellStyle14;
this.orderGrid.RowHeadersVisible = false;
dataGridViewCellStyle15.Font = new System.Drawing.Font("宋体", 15F);
dataGridViewCellStyle15.SelectionBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(66)))), ((int)(((byte)(163)))), ((int)(((byte)(218)))));
this.orderGrid.RowsDefaultCellStyle = dataGridViewCellStyle15;
this.orderGrid.RowTemplate.Height = 80;
this.orderGrid.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
this.orderGrid.Size = new System.Drawing.Size(557, 501);
this.orderGrid.TabIndex = 2;
this.orderGrid.CellClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.orderGrid_CellClick);
this.orderGrid.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.orderGrid_CellContentClick);
this.orderGrid.RowPrePaint += new System.Windows.Forms.DataGridViewRowPrePaintEventHandler(this.orderGrid_RowPrePaint);
//
// L_ID
//
this.L_ID.DataPropertyName = "ID";
this.L_ID.HeaderText = "ID";
this.L_ID.Name = "L_ID";
this.L_ID.ReadOnly = true;
this.L_ID.Visible = false;
//
// L_ConfirmState
//
this.L_ConfirmState.DataPropertyName = "ConfirmState";
this.L_ConfirmState.HeaderText = "ConfirmState";
this.L_ConfirmState.Name = "L_ConfirmState";
this.L_ConfirmState.ReadOnly = true;
this.L_ConfirmState.Visible = false;
//
// L_Order
//
this.L_Order.DataPropertyName = "Order";
this.L_Order.HeaderText = "顺序";
this.L_Order.Name = "L_Order";
this.L_Order.ReadOnly = true;
//
// L_PlanNumber
//
this.L_PlanNumber.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.None;
this.L_PlanNumber.DataPropertyName = "PlanNumber";
this.L_PlanNumber.HeaderText = "排宰头数";
this.L_PlanNumber.Name = "L_PlanNumber";
this.L_PlanNumber.ReadOnly = true;
//
// L_LiveColonyHouse_Name
//
this.L_LiveColonyHouse_Name.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
this.L_LiveColonyHouse_Name.DataPropertyName = "LiveColonyHouse_Name";
this.L_LiveColonyHouse_Name.HeaderText = "圈舍";
this.L_LiveColonyHouse_Name.MinimumWidth = 200;
this.L_LiveColonyHouse_Name.Name = "L_LiveColonyHouse_Name";
this.L_LiveColonyHouse_Name.ReadOnly = true;
//
// L_AlreadyNumber
//
this.L_AlreadyNumber.DataPropertyName = "AlreadyNumber";
this.L_AlreadyNumber.HeaderText = "确认头数";
this.L_AlreadyNumber.Name = "L_AlreadyNumber";
this.L_AlreadyNumber.ReadOnly = true;
//
// L_Start
//
dataGridViewCellStyle12.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
dataGridViewCellStyle12.Padding = new System.Windows.Forms.Padding(5, 10, 5, 10);
this.L_Start.DefaultCellStyle = dataGridViewCellStyle12;
this.L_Start.HeaderText = "开始";
this.L_Start.Name = "L_Start";
this.L_Start.ReadOnly = true;
this.L_Start.Text = "开始";
this.L_Start.UseColumnTextForButtonValue = true;
this.L_Start.Width = 140;
//
// L_End
//
dataGridViewCellStyle13.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
dataGridViewCellStyle13.Padding = new System.Windows.Forms.Padding(5, 10, 5, 10);
this.L_End.DefaultCellStyle = dataGridViewCellStyle13;
this.L_End.HeaderText = "结束";
this.L_End.Name = "L_End";
this.L_End.ReadOnly = true;
this.L_End.Text = "结束";
this.L_End.UseColumnTextForButtonValue = true;
this.L_End.Width = 140;
//
// panel2
//
this.panel2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Right)));
this.panel2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.panel2.Controls.Add(this.zeroBtn);
this.panel2.Controls.Add(this.panel3);
this.panel2.Controls.Add(this.recordGrid);
this.panel2.Controls.Add(this.numPad);
this.panel2.Location = new System.Drawing.Point(589, 65);
this.panel2.Name = "panel2";
this.panel2.Size = new System.Drawing.Size(421, 503);
this.panel2.TabIndex = 3;
//
// zeroBtn
//
this.zeroBtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.zeroBtn.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(136)))), ((int)(((byte)(255)))));
this.zeroBtn.ClickColor = System.Drawing.Color.YellowGreen;
this.zeroBtn.Font = new System.Drawing.Font("宋体", 15F);
this.zeroBtn.ForeColor = System.Drawing.Color.White;
this.zeroBtn.Location = new System.Drawing.Point(17, 157);
this.zeroBtn.Name = "zeroBtn";
this.zeroBtn.PlaySound = true;
this.zeroBtn.Size = new System.Drawing.Size(100, 60);
this.zeroBtn.SoundType = WinFormControl.SoundType.Click;
this.zeroBtn.TabIndex = 7;
this.zeroBtn.Text = "0";
this.zeroBtn.ToColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(136)))), ((int)(((byte)(255)))));
this.zeroBtn.UseVisualStyleBackColor = false;
this.zeroBtn.Click += new System.EventHandler(this.NumberBtnClick);
//
// panel3
//
this.panel3.Anchor = System.Windows.Forms.AnchorStyles.Bottom;
this.panel3.Controls.Add(this.countLbl);
this.panel3.Controls.Add(this.uLabel3);
this.panel3.Controls.Add(this.uLabel2);
this.panel3.Controls.Add(this.numberLbl);
this.panel3.Location = new System.Drawing.Point(157, 158);
this.panel3.Name = "panel3";
this.panel3.Size = new System.Drawing.Size(239, 38);
this.panel3.TabIndex = 6;
//
// countLbl
//
this.countLbl.AutoSize = true;
this.countLbl.BackColor = System.Drawing.Color.Transparent;
this.countLbl.Font = new System.Drawing.Font("宋体", 15F);
this.countLbl.ForeColor = System.Drawing.Color.Red;
this.countLbl.Location = new System.Drawing.Point(14, 9);
this.countLbl.Name = "countLbl";
this.countLbl.Size = new System.Drawing.Size(19, 20);
this.countLbl.TabIndex = 2;
this.countLbl.Text = "0";
//
// uLabel3
//
this.uLabel3.AutoSize = true;
this.uLabel3.BackColor = System.Drawing.Color.Transparent;
this.uLabel3.Font = new System.Drawing.Font("宋体", 15F);
this.uLabel3.ForeColor = System.Drawing.Color.Red;
this.uLabel3.Location = new System.Drawing.Point(200, 9);
this.uLabel3.Name = "uLabel3";
this.uLabel3.Size = new System.Drawing.Size(29, 20);
this.uLabel3.TabIndex = 5;
this.uLabel3.Text = "头";
//
// uLabel2
//
this.uLabel2.AutoSize = true;
this.uLabel2.BackColor = System.Drawing.Color.Transparent;
this.uLabel2.Font = new System.Drawing.Font("宋体", 15F);
this.uLabel2.ForeColor = System.Drawing.Color.Red;
this.uLabel2.Location = new System.Drawing.Point(55, 9);
this.uLabel2.Name = "uLabel2";
this.uLabel2.Size = new System.Drawing.Size(29, 20);
this.uLabel2.TabIndex = 3;
this.uLabel2.Text = "次";
//
// numberLbl
//
this.numberLbl.AutoSize = true;
this.numberLbl.BackColor = System.Drawing.Color.Transparent;
this.numberLbl.Font = new System.Drawing.Font("宋体", 15F);
this.numberLbl.ForeColor = System.Drawing.Color.Red;
this.numberLbl.Location = new System.Drawing.Point(159, 9);
this.numberLbl.Name = "numberLbl";
this.numberLbl.Size = new System.Drawing.Size(19, 20);
this.numberLbl.TabIndex = 4;
this.numberLbl.Text = "0";
//
// recordGrid
//
this.recordGrid.AllowUserToAddRows = false;
this.recordGrid.AllowUserToDeleteRows = false;
this.recordGrid.AllowUserToResizeColumns = false;
this.recordGrid.AllowUserToResizeRows = false;
dataGridViewCellStyle16.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(235)))), ((int)(((byte)(235)))));
this.recordGrid.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle16;
this.recordGrid.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)));
this.recordGrid.BackgroundColor = System.Drawing.Color.White;
this.recordGrid.BorderStyle = System.Windows.Forms.BorderStyle.None;
dataGridViewCellStyle17.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
dataGridViewCellStyle17.Font = new System.Drawing.Font("宋体", 12F);
dataGridViewCellStyle17.ForeColor = System.Drawing.Color.White;
dataGridViewCellStyle17.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
this.recordGrid.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle17;
this.recordGrid.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.recordGrid.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
this.R_C1,
this.R_C2,
this.R_C3,
this.R_C4,
this.R_C5});
this.recordGrid.Location = new System.Drawing.Point(-1, -1);
this.recordGrid.MultiSelect = false;
this.recordGrid.Name = "recordGrid";
this.recordGrid.ReadOnly = true;
this.recordGrid.RowHeadersVisible = false;
dataGridViewCellStyle18.Font = new System.Drawing.Font("宋体", 15F);
dataGridViewCellStyle18.SelectionBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(66)))), ((int)(((byte)(163)))), ((int)(((byte)(218)))));
this.recordGrid.RowsDefaultCellStyle = dataGridViewCellStyle18;
this.recordGrid.RowTemplate.Height = 50;
this.recordGrid.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.CellSelect;
this.recordGrid.Size = new System.Drawing.Size(421, 153);
this.recordGrid.TabIndex = 1;
//
// R_C1
//
this.R_C1.DataPropertyName = "Number1";
this.R_C1.HeaderText = "列1";
this.R_C1.Name = "R_C1";
this.R_C1.ReadOnly = true;
this.R_C1.Width = 80;
//
// R_C2
//
this.R_C2.DataPropertyName = "Number2";
this.R_C2.HeaderText = "列2";
this.R_C2.Name = "R_C2";
this.R_C2.ReadOnly = true;
this.R_C2.Width = 80;
//
// R_C3
//
this.R_C3.DataPropertyName = "Number3";
this.R_C3.HeaderText = "列3";
this.R_C3.Name = "R_C3";
this.R_C3.ReadOnly = true;
this.R_C3.Width = 80;
//
// R_C4
//
this.R_C4.DataPropertyName = "Number4";
this.R_C4.HeaderText = "列4";
this.R_C4.Name = "R_C4";
this.R_C4.ReadOnly = true;
this.R_C4.Width = 80;
//
// R_C5
//
this.R_C5.DataPropertyName = "Number5";
this.R_C5.HeaderText = "列5";
this.R_C5.Name = "R_C5";
this.R_C5.ReadOnly = true;
this.R_C5.Width = 80;
//
// numPad
//
this.numPad.Anchor = System.Windows.Forms.AnchorStyles.Bottom;
this.numPad.Location = new System.Drawing.Point(-1, 220);
this.numPad.Name = "numPad";
this.numPad.Size = new System.Drawing.Size(421, 278);
this.numPad.TabIndex = 0;
//
// colseBtn
//
this.colseBtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.colseBtn.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(136)))), ((int)(((byte)(255)))));
this.colseBtn.ClickColor = System.Drawing.Color.YellowGreen;
this.colseBtn.Font = new System.Drawing.Font("宋体", 12F);
this.colseBtn.ForeColor = System.Drawing.Color.White;
this.colseBtn.Location = new System.Drawing.Point(897, 9);
this.colseBtn.Name = "colseBtn";
this.colseBtn.PlaySound = false;
this.colseBtn.Size = new System.Drawing.Size(113, 45);
this.colseBtn.SoundType = WinFormControl.SoundType.Click;
this.colseBtn.TabIndex = 4;
this.colseBtn.Text = "关 闭";
this.colseBtn.ToColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(136)))), ((int)(((byte)(255)))));
this.colseBtn.UseVisualStyleBackColor = false;
this.colseBtn.Click += new System.EventHandler(this.colseBtn_Click);
//
// uTimerLabel1
//
this.uTimerLabel1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.uTimerLabel1.AutoSize = true;
this.uTimerLabel1.BackColor = System.Drawing.Color.Transparent;
this.uTimerLabel1.Font = new System.Drawing.Font("黑体", 13F);
this.uTimerLabel1.Format = "M月d日 H:mm:ss";
this.uTimerLabel1.Location = new System.Drawing.Point(727, 22);
this.uTimerLabel1.Name = "uTimerLabel1";
this.uTimerLabel1.Size = new System.Drawing.Size(152, 18);
this.uTimerLabel1.TabIndex = 0;
this.uTimerLabel1.Text = "6月11日 15:37:03";
//
// datePicker
//
this.datePicker.Font = new System.Drawing.Font("宋体", 15F);
this.datePicker.Location = new System.Drawing.Point(121, 24);
this.datePicker.Name = "datePicker";
this.datePicker.ReadOnly = true;
this.datePicker.Size = new System.Drawing.Size(156, 30);
this.datePicker.TabIndex = 5;
this.datePicker.MouseDown += new System.Windows.Forms.MouseEventHandler(this.datePicker_MouseDown);
//
// uLabel1
//
this.uLabel1.AutoSize = true;
this.uLabel1.BackColor = System.Drawing.Color.Transparent;
this.uLabel1.Font = new System.Drawing.Font("宋体", 15F);
this.uLabel1.Location = new System.Drawing.Point(12, 29);
this.uLabel1.Name = "uLabel1";
this.uLabel1.Size = new System.Drawing.Size(109, 20);
this.uLabel1.TabIndex = 6;
this.uLabel1.Text = "宰杀日期:";
//
// queryBtn
//
this.queryBtn.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(136)))), ((int)(((byte)(255)))));
this.queryBtn.ClickColor = System.Drawing.Color.YellowGreen;
this.queryBtn.Font = new System.Drawing.Font("宋体", 12F);
this.queryBtn.ForeColor = System.Drawing.Color.White;
this.queryBtn.Location = new System.Drawing.Point(283, 14);
this.queryBtn.Name = "queryBtn";
this.queryBtn.PlaySound = false;
this.queryBtn.Size = new System.Drawing.Size(113, 45);
this.queryBtn.SoundType = WinFormControl.SoundType.Click;
this.queryBtn.TabIndex = 7;
this.queryBtn.Text = "查 询";
this.queryBtn.ToColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(136)))), ((int)(((byte)(255)))));
this.queryBtn.UseVisualStyleBackColor = false;
this.queryBtn.Click += new System.EventHandler(this.queryBtn_Click);
//
// uLabel4
//
this.uLabel4.AutoSize = true;
this.uLabel4.BackColor = System.Drawing.Color.Transparent;
this.uLabel4.Font = new System.Drawing.Font("宋体", 15F);
this.uLabel4.ForeColor = System.Drawing.SystemColors.ControlText;
this.uLabel4.Location = new System.Drawing.Point(413, 27);
this.uLabel4.Name = "uLabel4";
this.uLabel4.Size = new System.Drawing.Size(109, 20);
this.uLabel4.TabIndex = 8;
this.uLabel4.Text = "作业顺序:";
//
// orderLbl
//
this.orderLbl.AutoSize = true;
this.orderLbl.BackColor = System.Drawing.Color.Transparent;
this.orderLbl.Font = new System.Drawing.Font("宋体", 23F);
this.orderLbl.ForeColor = System.Drawing.Color.Red;
this.orderLbl.Location = new System.Drawing.Point(516, 19);
this.orderLbl.Name = "orderLbl";
this.orderLbl.Size = new System.Drawing.Size(30, 31);
this.orderLbl.TabIndex = 9;
this.orderLbl.Text = "0";
//
// PickOutConfirm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.Color.White;
this.ClientSize = new System.Drawing.Size(1022, 591);
this.Controls.Add(this.orderLbl);
this.Controls.Add(this.uLabel4);
this.Controls.Add(this.queryBtn);
this.Controls.Add(this.datePicker);
this.Controls.Add(this.colseBtn);
this.Controls.Add(this.panel2);
this.Controls.Add(this.panel1);
this.Controls.Add(this.uTimerLabel1);
this.Controls.Add(this.uLabel1);
this.Name = "PickOutConfirm";
this.Text = "赶猪确认";
this.WindowState = System.Windows.Forms.FormWindowState.Maximized;
this.panel1.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.orderGrid)).EndInit();
this.panel2.ResumeLayout(false);
this.panel3.ResumeLayout(false);
this.panel3.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.recordGrid)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private WinFormControl.UTimerLabel uTimerLabel1;
private System.Windows.Forms.Panel panel1;
private System.Windows.Forms.Panel panel2;
private WinFormControl.NButton colseBtn;
private System.Windows.Forms.FlowLayoutPanel numPad;
private WinFormControl.UDataGridView orderGrid;
private WinFormControl.UDataGridView recordGrid;
private WinFormControl.ULabel uLabel2;
private WinFormControl.ULabel countLbl;
private WinFormControl.ULabel uLabel3;
private WinFormControl.ULabel numberLbl;
private System.Windows.Forms.Panel panel3;
private WinFormControl.NButton zeroBtn;
private System.Windows.Forms.DataGridViewTextBoxColumn R_C1;
private System.Windows.Forms.DataGridViewTextBoxColumn R_C2;
private System.Windows.Forms.DataGridViewTextBoxColumn R_C3;
private System.Windows.Forms.DataGridViewTextBoxColumn R_C4;
private System.Windows.Forms.DataGridViewTextBoxColumn R_C5;
private System.Windows.Forms.TextBox datePicker;
private WinFormControl.ULabel uLabel1;
private WinFormControl.NButton queryBtn;
private System.Windows.Forms.DataGridViewTextBoxColumn L_ID;
private System.Windows.Forms.DataGridViewTextBoxColumn L_ConfirmState;
private System.Windows.Forms.DataGridViewTextBoxColumn L_Order;
private System.Windows.Forms.DataGridViewTextBoxColumn L_PlanNumber;
private System.Windows.Forms.DataGridViewTextBoxColumn L_LiveColonyHouse_Name;
private System.Windows.Forms.DataGridViewTextBoxColumn L_AlreadyNumber;
private System.Windows.Forms.DataGridViewButtonColumn L_Start;
private System.Windows.Forms.DataGridViewButtonColumn L_End;
private WinFormControl.ULabel uLabel4;
private WinFormControl.ULabel orderLbl;
}
}

+ 276
- 0
ButcherManage.Form/PickOutConfirm_/PickOutConfirm.cs View File

@ -0,0 +1,276 @@
using ButcherManage.BO;
using ButcherManage.BO.Enums;
using ButcherManage.BO.LocalBL;
using ButcherManage.BO.Utils;
using ButcherManage.Dialogs;
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;
using WinFormControl;
namespace ButcherManage.PickOutConfirm_
{
public partial class PickOutConfirm : Form, IWithRoleForm
{
#region IWithRoleForm
public List<short> RoleName
{
get { return new List<short> { (short). }; }
}
public Form Generate()
{
return this;
}
#endregion
IList<PickOutConfirmDmo> list;
List<PickOutRecord> records;
long lastID = 0;
DateTime date = DateTime.Today;
bool start = false;
long startID = 0;
public PickOutConfirm()
{
InitializeComponent();
this.FormClosing += (sender, e) =>
{
if (start)
{
e.Cancel = MessageBox.Show("有开始状态的作业,确定退出?", "请确认", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) != DialogResult.OK;
}
};
}
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
datePicker.Text = date.ToString("yyyy-MM-dd");
BindGrid();
FillNumberPad();
if (list.Any())
{
var tag = list.FirstOrDefault(x => x.ConfirmState == 1);
if (tag != null)
{
start = list.First().ConfirmState == 1;
startID = list.First().ID;
lastID = startID;
orderLbl.Text = tag.Order.ToString();
}
RefreshRecordGrid(list.First().ID);
}
}
void RefreshRecordGrid(long id)
{
lastID = id;
records = PickOutConfirmBL.GetRecordList(lastID);
var row = records.Count % 5;
if (records.Count % 5 == 0)
{
records.Add(new PickOutRecord() { Order_ID = lastID });
row = 0;
}
BindRecorGrid();
BindLabel();
recordGrid.Rows[records.Count / 5].Cells[row].Selected = true;
}
void BindLabel()
{
countLbl.Text = records.Where(x => x.Number > 0).Count().ToString();
numberLbl.Text = records.Sum(x => x.Number).ToString();
}
private void BindGrid()
{
list = PickOutConfirmBL.GetDmoList(date).OrderBy(x => x.Order).OrderByDescending(x => x.ConfirmState).ToList();
orderGrid.DataSource = list;
foreach (DataGridViewRow row in orderGrid.Rows)
{
var v = (int)row.Cells["L_ConfirmState"].Value;
if (v == 1)
{
row.Cells[6] = new DataGridViewTextBoxCell();
}
else if (v == -1 || list.Any(x => x.ConfirmState == 1))
{
row.Cells[6] = new DataGridViewTextBoxCell();
row.Cells[7] = new DataGridViewTextBoxCell();
}
}
orderGrid.Refresh();
}
private void FillNumberPad()
{
for (var i = 1; i < 10; i++)
CreateBtn(i.ToString());
}
void CreateBtn(string content)
{
var btn = new NButton() { Width = 100, Height = 60, Text = content, Font = new Font("宋体", 15), Margin = new Padding(18, 10, 18, 20), PlaySound = true };
btn.Click += NumberBtnClick;
numPad.Controls.Add(btn);
}
private void NumberBtnClick(object sender, EventArgs e)
{
if (!start)
{
NMessageBox.ShowDialog("请先开始");
return;
}
else if (lastID != startID)
{
NMessageBox.ShowDialog("当前作业与选择的记录不一致");
return;
}
var number = int.Parse((sender as NButton).Text);
var cell = recordGrid.CurrentCell;
if (cell.Value == null && number == 0)
return;
var idx = cell.RowIndex * 5 + cell.ColumnIndex;
var detail = new PickOutRecord();
if (idx > records.Count - 1)
{
if (cell.RowIndex != records.Count / 5 || cell.ColumnIndex != records.Count % 5)
cell = recordGrid.Rows[records.Count / 5].Cells[records.Count % 5];
detail.Order_ID = lastID;
detail.Number = number;
records.Add(detail);
}
else
{
detail = records[idx];
detail.Number = number;
}
PickOutConfirmBL.SaveRecord(detail);
cell.Value = number;
var row = records.Count % 5;
if (records[records.Count - 1].Number == null)
row -= 1;
if (records.Count % 5 == 0)
{
records.Add(new PickOutRecord() { Order_ID = lastID });
row = 0;
BindRecorGrid();
}
recordGrid.Rows[records.Count / 5].Cells[row].Selected = true;
BindLabel();
orderGrid.CurrentRow.Cells["L_AlreadyNumber"].Value = records.Sum(x => x.Number ?? 0);
}
void BindRecorGrid()
{
recordGrid.DataSource = Expand.Build(records);
recordGrid.Refresh();
}
private void colseBtn_Click(object sender, EventArgs e)
{
Close();
}
private void orderGrid_CellClick(object sender, DataGridViewCellEventArgs e)
{
var id = (long)orderGrid.CurrentRow.Cells[0].Value;
if (id == lastID)
return;
RefreshRecordGrid(id);
}
private void orderGrid_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex < 6 || e.RowIndex == -1)
return;
if (e.ColumnIndex == 6)//开始
{
PickOutConfirmBL.ChangeState(lastID, 1);
start = true;
startID = lastID;
orderLbl.Text = orderGrid.CurrentRow.Cells["L_Order"].Value.ToString();
}
else//结束
{
PickOutConfirmBL.ChangeState(lastID, -1);
start = false;
startID = 0;
orderLbl.Text = "0";
}
BindGrid();
}
private void datePicker_MouseDown(object sender, MouseEventArgs e)
{
var cs = new CalendarSelecter();
if (cs.ShowDialog() == true)
{
date = cs.Result;
datePicker.Text = date.ToString("yyyy-MM-dd");
}
}
private void queryBtn_Click(object sender, EventArgs e)
{
if (start)
{
NMessageBox.ShowDialog("有开始状态的作业,请结束后再尝试");
return;
}
BindGrid();
}
private void orderGrid_RowPrePaint(object sender, DataGridViewRowPrePaintEventArgs e)
{
DataGridViewRow dgrSingle = orderGrid.Rows[e.RowIndex];
var v = (int)dgrSingle.Cells["L_ConfirmState"].Value;
if (v == 1)
dgrSingle.DefaultCellStyle.BackColor = Color.LightBlue;
else if (v == -1)
dgrSingle.DefaultCellStyle.BackColor = Color.YellowGreen;
}
}
class Expand
{
public int? Number1 { get; set; }
public int? Number2 { get; set; }
public int? Number3 { get; set; }
public int? Number4 { get; set; }
public int? Number5 { get; set; }
public static List<Expand> Build(List<PickOutRecord> list)
{
var result = new List<Expand>();
var t = typeof(Expand);
for (var i = 0; i < list.Count; )
{
var entity = new Expand();
result.Add(entity);
for (var j = 1; j <= 5; j++)
{
t.GetProperty(string.Format("Number{0}", j)).SetValue(entity, list[i].Number);
i++;
if (i == list.Count)
break;
}
}
return result;
}
}
}

+ 159
- 0
ButcherManage.Form/PickOutConfirm_/PickOutConfirm.resx View File

@ -0,0 +1,159 @@
<?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="L_ID.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="L_ConfirmState.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="L_Order.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="L_PlanNumber.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="L_LiveColonyHouse_Name.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="L_AlreadyNumber.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="L_Start.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="L_End.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="R_C1.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="R_C2.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="R_C3.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="R_C4.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="R_C5.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
</root>

+ 36
- 0
ButcherManage.Form/Properties/AssemblyInfo.cs View File

@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// 有关程序集的常规信息通过以下
// 特性集控制。更改这些特性值可修改
// 与程序集关联的信息。
[assembly: AssemblyTitle("ButcherManage.Form")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("ButcherManage.Form")]
[assembly: AssemblyCopyright("Copyright © 2018")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// 将 ComVisible 设置为 false 使此程序集中的类型
// 对 COM 组件不可见。 如果需要从 COM 访问此程序集中的类型,
// 则将该类型上的 ComVisible 特性设置为 true。
[assembly: ComVisible(false)]
// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
[assembly: Guid("7d0ed13b-6e5f-48d9-9e0d-93ae40bfadb7")]
// 程序集的版本信息由下面四个值组成:
//
// 主版本
// 次版本
// 生成号
// 修订号
//
// 可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值,
// 方法是按如下所示使用“*”:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

+ 1571
- 0
ButcherManage.Install/ButcherManage.Install.vdproj
File diff suppressed because it is too large
View File


+ 49
- 0
ButcherManage.Login/App.xaml View File

@ -0,0 +1,49 @@
<Application x:Class="ButcherManage.Login.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="Login.xaml">
<Application.Resources>
<Style x:Key="Exist" TargetType="Button">
<Setter Property="Background" Value="#F6F6F6"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border Name="border" BorderThickness="1" CornerRadius="3" BorderBrush="{TemplateBinding BorderBrush}" Background="{TemplateBinding Background}">
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Control.Background" Value="#BEE6FD"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style x:Key="Login" TargetType="Button">
<Setter Property="Background">
<Setter.Value>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FF055EB6" Offset="1"/>
<GradientStop Color="#FF1888F8"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border Name="border" BorderThickness="1" CornerRadius="3" BorderBrush="{TemplateBinding BorderBrush}" Background="{TemplateBinding Background}">
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Control.Background" Value="#00A2E8"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Application.Resources>
</Application>

+ 95
- 0
ButcherManage.Login/App.xaml.cs View File

@ -0,0 +1,95 @@
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using System.Windows;
using WinFormControl;
namespace ButcherManage.Login
{
/// <summary>
/// App.xaml 的交互逻辑
/// </summary>
public partial class App : Application
{
public EventWaitHandle ProgramStarted { get; set; }
readonly string[] FOLDERS = new string[] { "Config", "PrintTemplate", "Log", "TempImg" };
protected override void OnStartup(StartupEventArgs e)
{
bool createNew;
ProgramStarted = new EventWaitHandle(false, EventResetMode.AutoReset, "ButcherFactorySolution", out createNew);
if (!createNew)
{
NMessageBox.ShowDialog(@"系统已经在运行中,如果要重新启动,请从进程中关闭...");
App.Current.Shutdown();
}
System.Windows.Forms.Application.EnableVisualStyles();
System.Windows.Forms.Application.SetUnhandledExceptionMode(System.Windows.Forms.UnhandledExceptionMode.CatchException);
System.Windows.Forms.Application.ThreadException += Application_ThreadException;
RegisterEvents();
base.OnStartup(e);
foreach (var folder in FOLDERS)
{
if (!System.IO.Directory.Exists(folder))
System.IO.Directory.CreateDirectory(folder);
}
var tempImages = new System.IO.DirectoryInfo("TempImg").GetFiles();
foreach (var f in tempImages)
f.Delete();
}
///<summary>
/// 在发生未处理异常时处理的方法
///</summary>
///<param name="sender"> </param>
///<param name="e"> </param>
private static void Application_ThreadException(object sender, ThreadExceptionEventArgs e)
{
var ex = e.Exception;
var err = String.Empty;
if (ex != null)
{
//LogUtil.WriteError(ex);
err = ex.Message;
}
SoundPalyUtil.PlaySound(SoundType.Error);
NMessageBox.ShowDialog("错误:" + ex.Message + " \n详细信息:" + ex.StackTrace);
// UMessageBox.Show("错误:" + err);
}
private void RegisterEvents()
{
DispatcherUnhandledException += App_DispatcherUnhandledException;
TaskScheduler.UnobservedTaskException += (sender, args) =>
{
SoundPalyUtil.PlaySound(SoundType.Error);
NMessageBox.ShowDialog("错误:" + args.Exception.Message + " \n详细信息:" + args.Exception.StackTrace);
args.SetObserved();
};
AppDomain.CurrentDomain.UnhandledException += (sender, args) =>
{
SoundPalyUtil.PlaySound(SoundType.Error);
NMessageBox.ShowDialog("Unhandled exception." + args.ExceptionObject);
};
}
void App_DispatcherUnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e)
{
SoundPalyUtil.PlaySound(SoundType.Error);
NMessageBox.ShowDialog("错误:" + e.Exception.Message + " \n详细信息:" + e.Exception.StackTrace);
e.Handled = true;
}
}
}

+ 119
- 0
ButcherManage.Login/ButcherManage.Login.csproj View File

@ -0,0 +1,119 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{AA93C97D-E13D-48C7-906F-92CEF2628547}</ProjectGuid>
<OutputType>WinExe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>ButcherManage.Login</RootNamespace>
<AssemblyName>ButcherManage.Login</AssemblyName>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
<WarningLevel>4</WarningLevel>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="System.Xaml">
<RequiredTargetFramework>4.0</RequiredTargetFramework>
</Reference>
<Reference Include="WindowsBase" />
<Reference Include="PresentationCore" />
<Reference Include="PresentationFramework" />
<Reference Include="WinFormControl, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\tsref\Debug\WinFormControl.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<ApplicationDefinition Include="App.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</ApplicationDefinition>
<Compile Include="App.xaml.cs">
<DependentUpon>App.xaml</DependentUpon>
<SubType>Code</SubType>
</Compile>
</ItemGroup>
<ItemGroup>
<Compile Include="Login.xaml.cs">
<DependentUpon>Login.xaml</DependentUpon>
</Compile>
<Compile Include="Properties\AssemblyInfo.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<Compile Include="Properties\Settings.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
</EmbeddedResource>
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
<AppDesigner Include="Properties\" />
</ItemGroup>
<ItemGroup>
<Resource Include="Images\login.png" />
</ItemGroup>
<ItemGroup>
<Page Include="Login.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\ButcherManage.BO\ButcherManage.BO.csproj">
<Project>{b1ecbe2f-06fb-4e4c-9487-1497e0808c04}</Project>
<Name>ButcherManage.BO</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

BIN
ButcherManage.Login/Images/login.png View File

Before After
Width: 582  |  Height: 393  |  Size: 228 KiB

+ 38
- 0
ButcherManage.Login/Login.xaml View File

@ -0,0 +1,38 @@
<Window x:Class="ButcherManage.Login.Login"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Login" Height="433" Width="622" WindowStyle="None" AllowsTransparency="True" ResizeMode="NoResize" MouseLeftButtonDown="Window_MouseLeftButtonDown" BorderThickness="40" >
<Window.Background>
<ImageBrush ImageSource="images/login.png"/>
</Window.Background>
<Window.Effect>
<DropShadowEffect BlurRadius="40" Color="#000000" ShadowDepth="0" Opacity="0.3"/>
</Window.Effect>
<Grid>
<Label Content="用户名:" FontFamily="微软雅黑" FontSize="22px" HorizontalAlignment="Left" Margin="140,152,0,0" VerticalAlignment="Top" Width="90"/>
<TextBox Name="userNameInput" HorizontalAlignment="Left" Height="33" Margin="233,158,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" FontFamily="微软雅黑" FontSize="17" Width="187" VerticalContentAlignment="Center" PreviewMouseLeftButtonDown="UserNameTextBoxClick"/>
<Label Content="密 码 :" FontFamily="微软雅黑" FontSize="22px" HorizontalAlignment="Left" Margin="142,202,0,0" VerticalAlignment="Top" Width="90" />
<PasswordBox Name="pwdInput" HorizontalAlignment="Left" Height="33" Margin="233,208,0,0" VerticalAlignment="Top" FontSize="17" Width="187" VerticalContentAlignment="Center" PreviewMouseLeftButtonDown="PwdTextBoxClick"/>
<Button Style="{StaticResource Login}" Content="登录" Foreground="#FFFFFF" HorizontalAlignment="Left" Margin="233,260,0,0" VerticalAlignment="Top" Width="80" Height="40" FontSize="18" BorderBrush="#0675E3" Click="LoginBtn_Click">
<!--<Button.Background>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FF055EB6" Offset="1"/>
<GradientStop Color="#FF1888F8"/>
</LinearGradientBrush>
</Button.Background>-->
<!--<Button.Style>
<Style TargetType="Button">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="Red" />
</Trigger>
</Style.Triggers>
</Style>
</Button.Style>-->
</Button>
<Button Style="{StaticResource Exist}" Content="退出" HorizontalAlignment="Left" Margin="340,260,0,0" VerticalAlignment="Top" Width="80" Height="40" FontSize="18" BorderBrush="#A0A0A0" Click="ExistBtn_Click"/>
</Grid>
</Window>

+ 100
- 0
ButcherManage.Login/Login.xaml.cs View File

@ -0,0 +1,100 @@
using ButcherManage.BO.Utils;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using WinFormControl;
namespace ButcherManage.Login
{
/// <summary>
/// Login.xaml 的交互逻辑
/// </summary>
public partial class Login : Window
{
public Login()
{
InitializeComponent();
#if DEBUG
pwdInput.Password = "123";
#endif
try
{
userNameInput.Text = AppContext.Worker.Name;
if (!string.IsNullOrEmpty(AppContext.Worker.Name))
pwdInput.Focus();
}
catch { }
}
private void Window_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
this.DragMove();
}
private async void LoginBtn_Click(object sender, RoutedEventArgs e)
{
var username = userNameInput.Text.Trim();
var pwd = pwdInput.Password;
if (string.IsNullOrEmpty(username))
throw new Exception("请输入用户名");
if (LoginUtil.TestConnection(1000))
{
await Task.Factory.StartNew(() => LoginUtil.Login(username, pwd));
}
else
{
if (!AppContext.ConnectInfo.LocalOffline)
throw new Exception("无法连接到远程服务器");
if (AppContext.Worker.Name != username || string.Join("", LoginUtil.EncodePwd(pwd)) != string.Join("", AppContext.Worker.Password))
throw new Exception("离线时只能使用上次登录信息登录");
}
var form = FormUtil.CreateFrom();
if (form == null)
throw new Exception("权限不符");
form.FormClosing += delegate
{
this.Show();
};
form.Show();
Hide();
}
private void ExistBtn_Click(object sender, RoutedEventArgs e)
{
App.Current.Shutdown();
}
private void UserNameTextBoxClick(object sender, MouseButtonEventArgs e)
{
var keyBoard = new NumberPad();
if (keyBoard.ShowDialog() == true)
{
if (!LoginUtil.TestConnection(1000))
{
if (string.IsNullOrEmpty(AppContext.Worker.Name))
throw new Exception("请检查网络");
throw new Exception("离线时无法切换用户");
}
userNameInput.Text = LoginUtil.GetWorkerNameByCode(keyBoard.Result);
}
}
private void PwdTextBoxClick(object sender, MouseButtonEventArgs e)
{
var keyBoard = new VirtualKeyPad();
if (keyBoard.ShowDialog() == true)
pwdInput.Password = keyBoard.Result;
}
}
}

+ 55
- 0
ButcherManage.Login/Properties/AssemblyInfo.cs View File

@ -0,0 +1,55 @@
using System.Reflection;
using System.Resources;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Windows;
// 有关程序集的常规信息通过以下
// 特性集控制。更改这些特性值可修改
// 与程序集关联的信息。
[assembly: AssemblyTitle("ButcherManage.Login")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("ButcherManage.Login")]
[assembly: AssemblyCopyright("Copyright © 2018")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// 将 ComVisible 设置为 false 使此程序集中的类型
// 对 COM 组件不可见。 如果需要从 COM 访问此程序集中的类型,
// 则将该类型上的 ComVisible 特性设置为 true。
[assembly: ComVisible(false)]
//若要开始生成可本地化的应用程序,请在
//<PropertyGroup> 中的 .csproj 文件中
//设置 <UICulture>CultureYouAreCodingWith</UICulture>。 例如,如果您在源文件中
//使用的是美国英语,请将 <UICulture> 设置为 en-US。 然后取消
//对以下 NeutralResourceLanguage 特性的注释。 更新
//以下行中的“en-US”以匹配项目文件中的 UICulture 设置。
//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
[assembly: ThemeInfo(
ResourceDictionaryLocation.None, //主题特定资源词典所处位置
//(在页面或应用程序资源词典中
// 未找到某个资源的情况下使用)
ResourceDictionaryLocation.SourceAssembly //常规资源词典所处位置
//(在页面、应用程序或任何主题特定资源词典中
// 未找到某个资源的情况下使用)
)]
// 程序集的版本信息由下面四个值组成:
//
// 主版本
// 次版本
// 生成号
// 修订号
//
// 可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值,
// 方法是按如下所示使用“*”:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

+ 8
- 0
ButcherManage.Tools/App.xaml View File

@ -0,0 +1,8 @@
<Application x:Class="ButcherManage.Tools.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="MainWindow.xaml">
<Application.Resources>
</Application.Resources>
</Application>

+ 16
- 0
ButcherManage.Tools/App.xaml.cs View File

@ -0,0 +1,16 @@
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Windows;
namespace ButcherManage.Tools
{
/// <summary>
/// App.xaml 的交互逻辑
/// </summary>
public partial class App : Application
{
}
}

+ 96
- 0
ButcherManage.Tools/ButcherManage.Tools.csproj View File

@ -0,0 +1,96 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{26433793-6DB6-41FA-A531-8C674B79CFA0}</ProjectGuid>
<OutputType>WinExe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>ButcherManage.Tools</RootNamespace>
<AssemblyName>ButcherManage.Tools</AssemblyName>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
<WarningLevel>4</WarningLevel>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="System.Xaml">
<RequiredTargetFramework>4.0</RequiredTargetFramework>
</Reference>
<Reference Include="WindowsBase" />
<Reference Include="PresentationCore" />
<Reference Include="PresentationFramework" />
<Reference Include="WinFormControl, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\tsref\Debug\WinFormControl.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<ApplicationDefinition Include="App.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</ApplicationDefinition>
<Page Include="MainWindow.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Compile Include="App.xaml.cs">
<DependentUpon>App.xaml</DependentUpon>
<SubType>Code</SubType>
</Compile>
<Compile Include="MainWindow.xaml.cs">
<DependentUpon>MainWindow.xaml</DependentUpon>
<SubType>Code</SubType>
</Compile>
</ItemGroup>
<ItemGroup>
<Compile Include="Properties\AssemblyInfo.cs">
<SubType>Code</SubType>
</Compile>
<AppDesigner Include="Properties\" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\ButcherManage.BO\ButcherManage.BO.csproj">
<Project>{b1ecbe2f-06fb-4e4c-9487-1497e0808c04}</Project>
<Name>ButcherManage.BO</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

+ 16
- 0
ButcherManage.Tools/MainWindow.xaml View File

@ -0,0 +1,16 @@
<Window x:Class="ButcherManage.Tools.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="BWP_Tools" Height="380" Width="525" ResizeMode="NoResize" >
<Grid Margin="0,0,2,0">
<Label Content="服务器:" HorizontalAlignment="Left" VerticalContentAlignment="Center" FontSize="18px" Margin="84,30,0,0" VerticalAlignment="Top" Height="47"/>
<TextBox Name="serverUrlBox" HorizontalAlignment="Left" Height="80" Margin="179,34,0,0" TextWrapping="Wrap" FontSize="15px" Text="" VerticalAlignment="Top" Width="229" PreviewMouseLeftButtonDown="ServerUrlTextBoxClick"/>
<Label Content="本机离线:" HorizontalAlignment="Left" VerticalContentAlignment="Center" FontSize="18px" Margin="69,121,0,0" VerticalAlignment="Top" Height="47"/>
<CheckBox Name="localOffline" Content="" HorizontalAlignment="Left" Margin="179,142,0,0" VerticalAlignment="Top"/>
<Label Content="数据库:" HorizontalAlignment="Left" VerticalContentAlignment="Center" FontSize="18px" Margin="84,178,0,0" VerticalAlignment="Top" Height="47"/>
<ComboBox Name="dbComboBox" HorizontalAlignment="Left" Margin="179,184,0,0" FontSize="18px" VerticalContentAlignment="Center" VerticalAlignment="Top" Width="229" Height="37"/>
<Button Content="保存" FontSize="18px" Margin="72,254,0,0" Height="50" Width="94" HorizontalAlignment="Left" VerticalAlignment="Top" Click="SaveBtnClick"/>
<Button Content="升级" FontSize="18px" Margin="197,254,0,0" Height="50" Width="94" HorizontalAlignment="Left" VerticalAlignment="Top" Click="Button_Click"/>
<Button Content="关闭" FontSize="18px" Margin="320,254,0,0" Height="50" Width="94" HorizontalAlignment="Left" VerticalAlignment="Top" Click="CloseBtnClick"/>
</Grid>
</Window>

+ 83
- 0
ButcherManage.Tools/MainWindow.xaml.cs View File

@ -0,0 +1,83 @@
using ButcherManage.BO.Utils;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using WinFormControl;
namespace ButcherManage.Tools
{
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
var list = XmlUtil.DeserializeFromFile<List<DbSelectEntity>>("Config\\DbSelectList.xml");
dbComboBox.SelectedValuePath = "Value";
dbComboBox.DisplayMemberPath = "Name";
dbComboBox.ItemsSource = list;
var idx = list.FindIndex(x => x.Value == AppContext.ConnectInfo.SqlConnection);
if (idx > -1)
dbComboBox.SelectedIndex = idx;
this.serverUrlBox.Text = AppContext.ConnectInfo.ServerUrl;
this.localOffline.IsChecked = AppContext.ConnectInfo.LocalOffline;
}
private void Button_Click(object sender, RoutedEventArgs e)
{
if (!AppContext.ConnectInfo.LocalOffline)
throw new Exception("非离线模式无需升级数据库");
DbUtil.UpdateDatabase(AppContext.ConnectInfo.SqlConnection);
MessageBox.Show("数据库升级成功");
}
private void SaveBtnClick(object sender, RoutedEventArgs e)
{
string uri = this.serverUrlBox.Text.Trim();
if (string.IsNullOrEmpty(uri))
throw new Exception("请先设置服务器地址");
if (AppContext.ConnectInfo.LocalOffline && string.IsNullOrEmpty(AppContext.ConnectInfo.SqlConnection))
throw new Exception("本机离线必须选择数据库");
AppContext.ConnectInfo.ServerUrl = uri;
AppContext.ConnectInfo.SqlConnection = (string)dbComboBox.SelectedValue;
AppContext.ConnectInfo.LocalOffline = this.localOffline.IsChecked.Value;
AppContext.ConnectInfo.Save();
MessageBox.Show("设置保存成功!");
}
private void CloseBtnClick(object sender, RoutedEventArgs e)
{
Application.Current.Shutdown();
}
private void ServerUrlTextBoxClick(object sender, MouseButtonEventArgs e)
{
serverUrlBox.Focus();
var keyBoard = new VirtualKeyPad();
if (keyBoard.ShowDialog() == true)
serverUrlBox.Text = keyBoard.Result;
}
}
public class DbSelectEntity
{
public string Name { get; set; }
public string Value { get; set; }
}
}

+ 55
- 0
ButcherManage.Tools/Properties/AssemblyInfo.cs View File

@ -0,0 +1,55 @@
using System.Reflection;
using System.Resources;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Windows;
// 有关程序集的常规信息通过以下
// 特性集控制。更改这些特性值可修改
// 与程序集关联的信息。
[assembly: AssemblyTitle("ButcherManage.Tools")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("ButcherManage.Tools")]
[assembly: AssemblyCopyright("Copyright © 2018")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// 将 ComVisible 设置为 false 使此程序集中的类型
// 对 COM 组件不可见。 如果需要从 COM 访问此程序集中的类型,
// 则将该类型上的 ComVisible 特性设置为 true。
[assembly: ComVisible(false)]
//若要开始生成可本地化的应用程序,请在
//<PropertyGroup> 中的 .csproj 文件中
//设置 <UICulture>CultureYouAreCodingWith</UICulture>。 例如,如果您在源文件中
//使用的是美国英语,请将 <UICulture> 设置为 en-US。 然后取消
//对以下 NeutralResourceLanguage 特性的注释。 更新
//以下行中的“en-US”以匹配项目文件中的 UICulture 设置。
//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
[assembly: ThemeInfo(
ResourceDictionaryLocation.None, //主题特定资源词典所处位置
//(在页面或应用程序资源词典中
// 未找到某个资源的情况下使用)
ResourceDictionaryLocation.SourceAssembly //常规资源词典所处位置
//(在页面、应用程序或任何主题特定资源词典中
// 未找到某个资源的情况下使用)
)]
// 程序集的版本信息由下面四个值组成:
//
// 主版本
// 次版本
// 生成号
// 修订号
//
// 可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值,
// 方法是按如下所示使用“*”:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

Loading…
Cancel
Save