@@ -80,6 +80,9 @@ | |||
<a id="lr_detail" class="btn btn-default"><i class="fa fa-bars"></i> 查看出入记录</a> | |||
<a id="lr_usedetail" class="btn btn-default"><i class="fa fa-bars"></i> 查看使用人员记录</a> | |||
</div> | |||
<div class=" btn-group btn-group-sm"> | |||
<a id="lr_getqrcode" class="btn btn-default"><i class="fa fa-plus"></i> 生成二维码</a> | |||
</div> | |||
</div> | |||
</div> | |||
<div class="lr-layout-body" id="gridtable"></div> | |||
@@ -69,6 +69,18 @@ | |||
<publisherPolicy apply="no" /> | |||
<assemblyIdentity name="Oracle.ManagedDataAccess" publicKeyToken="89b483f429c47342" culture="neutral" /> | |||
</dependentAssembly> | |||
<dependentAssembly> | |||
<assemblyIdentity name="System.Threading.Tasks.Extensions" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" /> | |||
<bindingRedirect oldVersion="0.0.0.0-4.2.0.1" newVersion="4.2.0.1" /> | |||
</dependentAssembly> | |||
<dependentAssembly> | |||
<assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" /> | |||
<bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" /> | |||
</dependentAssembly> | |||
<dependentAssembly> | |||
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> | |||
<bindingRedirect oldVersion="0.0.0.0-4.0.6.0" newVersion="4.0.6.0" /> | |||
</dependentAssembly> | |||
</assemblyBinding> | |||
</runtime> | |||
<system.webServer> | |||
@@ -6,6 +6,18 @@ | |||
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" /> | |||
<bindingRedirect oldVersion="0.0.0.0-12.0.0.0" newVersion="12.0.0.0" /> | |||
</dependentAssembly> | |||
<dependentAssembly> | |||
<assemblyIdentity name="System.Threading.Tasks.Extensions" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" /> | |||
<bindingRedirect oldVersion="0.0.0.0-4.2.0.1" newVersion="4.2.0.1" /> | |||
</dependentAssembly> | |||
<dependentAssembly> | |||
<assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" /> | |||
<bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" /> | |||
</dependentAssembly> | |||
<dependentAssembly> | |||
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> | |||
<bindingRedirect oldVersion="0.0.0.0-4.0.6.0" newVersion="4.0.6.0" /> | |||
</dependentAssembly> | |||
</assemblyBinding> | |||
</runtime> | |||
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" /></startup></configuration> |
@@ -6,6 +6,18 @@ | |||
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" /> | |||
<bindingRedirect oldVersion="0.0.0.0-12.0.0.0" newVersion="12.0.0.0" /> | |||
</dependentAssembly> | |||
<dependentAssembly> | |||
<assemblyIdentity name="System.Threading.Tasks.Extensions" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" /> | |||
<bindingRedirect oldVersion="0.0.0.0-4.2.0.1" newVersion="4.2.0.1" /> | |||
</dependentAssembly> | |||
<dependentAssembly> | |||
<assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" /> | |||
<bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" /> | |||
</dependentAssembly> | |||
<dependentAssembly> | |||
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> | |||
<bindingRedirect oldVersion="0.0.0.0-4.0.6.0" newVersion="4.0.6.0" /> | |||
</dependentAssembly> | |||
</assemblyBinding> | |||
</runtime> | |||
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" /></startup></configuration> |
@@ -81,6 +81,9 @@ | |||
<Reference Include="Microsoft.CSharp" /> | |||
<Reference Include="System.Data" /> | |||
<Reference Include="System.Xml" /> | |||
<Reference Include="ThoughtWorks.QRCode, Version=1.0.4778.30637, Culture=neutral, processorArchitecture=MSIL"> | |||
<HintPath>..\..\..\packages\ThoughtWorks.QRCode.1.1.0\lib\ThoughtWorks.QRCode.dll</HintPath> | |||
</Reference> | |||
<Reference Include="Yahoo.Yui.Compressor"> | |||
<HintPath>..\..\..\packages\YUICompressor.NET.2.7.0.0\lib\NET20\Yahoo.Yui.Compressor.dll</HintPath> | |||
</Reference> | |||
@@ -128,8 +131,10 @@ | |||
<Compile Include="Ueditor\UeditorPathFormatter.cs" /> | |||
<Compile Include="Ueditor\UeditorUploadConfig.cs" /> | |||
<Compile Include="Ueditor\UeditorUploadResult.cs" /> | |||
<Compile Include="Web\QRCodeHelper.cs" /> | |||
<Compile Include="Web\CodeRuleEnum.cs" /> | |||
<Compile Include="Web\HttpMethods.cs" /> | |||
<Compile Include="Web\ZipHelper.cs" /> | |||
<Compile Include="Web\JsCssHelper.cs" /> | |||
<Compile Include="Web\FilterMode.cs" /> | |||
<Compile Include="Web\LoginUserInfo.cs" /> | |||
@@ -0,0 +1,115 @@ | |||
using System; | |||
using System.Web; | |||
using ThoughtWorks.QRCode.Codec; | |||
using ThoughtWorks.QRCode.Codec.Data; | |||
using ThoughtWorks.QRCode.Codec.Util; | |||
using System.IO; | |||
using System.Text; | |||
using System.Drawing; | |||
using System.Drawing.Drawing2D; | |||
namespace Learun.Util | |||
{ | |||
public class QRCodeHelper | |||
{ | |||
/// <summary> | |||
/// 生成带图片的二维码 | |||
/// </summary> | |||
/// <param name="qrcodeText">二维码内容</param> | |||
/// <param name="imagePath">二维码上图片地址</param> | |||
public static string ProcessRequest(string qrcodeText,string imagePath,string savePath) | |||
{ | |||
//最终图片保存路径 | |||
var resultImgPath = string.Empty; | |||
if (!string.IsNullOrEmpty(qrcodeText)) | |||
{ | |||
QRCodeEncoder qrCodeEncoder = new QRCodeEncoder(); | |||
qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE; | |||
qrCodeEncoder.QRCodeScale = 4; | |||
qrCodeEncoder.QRCodeVersion = 8; | |||
qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M; | |||
System.Drawing.Image image = qrCodeEncoder.Encode(qrcodeText); | |||
System.IO.MemoryStream MStream = new System.IO.MemoryStream(); | |||
image.Save(MStream, System.Drawing.Imaging.ImageFormat.Png); | |||
System.IO.MemoryStream MStream1 = new System.IO.MemoryStream(); | |||
CombinImage(image, HttpContext.Current.Server.MapPath(imagePath)).Save(MStream1, System.Drawing.Imaging.ImageFormat.Png); | |||
//保存图片到本地文件夹 | |||
System.Drawing.Image img = System.Drawing.Image.FromStream(MStream1); | |||
//string imgPath = System.IO.Path.Combine(Config.GetValue("AnnexesFile"), "带logo图片二维码", DateTime.Now.ToString("yyyyMMddHHmm")); | |||
string imgPath = System.IO.Path.Combine(Config.GetValue("AnnexesFile"), "带logo图片二维码", savePath); | |||
if (!System.IO.Directory.Exists(imgPath)) | |||
{ | |||
System.IO.Directory.CreateDirectory(imgPath); | |||
} | |||
img.Save(System.IO.Path.Combine(imgPath, qrcodeText+".png"), System.Drawing.Imaging.ImageFormat.Png); | |||
resultImgPath = imgPath; | |||
//HttpContext.Current.Response.ClearContent(); | |||
//HttpContext.Current.Response.ContentType = "image/png"; | |||
//HttpContext.Current.Response.BinaryWrite(MStream1.ToArray()); | |||
//image.Dispose(); | |||
MStream.Dispose(); | |||
MStream1.Dispose(); | |||
} | |||
//HttpContext.Current.Response.Flush(); | |||
//HttpContext.Current.Response.End(); | |||
return resultImgPath; | |||
} | |||
/// <summary> | |||
/// 调用此函数后使此两种图片合并,类似相册,有个 | |||
/// 背景图,中间贴自己的目标图片 | |||
/// </summary> | |||
/// <param name="imgBack">粘贴的源图片</param> | |||
/// <param name="destImg">粘贴的目标图片</param> | |||
public static Image CombinImage(Image imgBack, string destImg) | |||
{ | |||
Image img = Image.FromFile(destImg); //照片图片 | |||
if (img.Height != 65 || img.Width != 65) | |||
{ | |||
img = KiResizeImage(img, 65, 65, 0); | |||
} | |||
Graphics g = Graphics.FromImage(imgBack); | |||
g.DrawImage(imgBack, 0, 0, imgBack.Width, imgBack.Height); | |||
//g.DrawImage(imgBack, 0, 0, 相框宽, 相框高); | |||
//g.FillRectangle(System.Drawing.Brushes.White, imgBack.Width / 2 - img.Width / 2 - 1, imgBack.Width / 2 - img.Width / 2 - 1,1,1);//相片四周刷一层黑色边框 | |||
//g.DrawImage(img, 照片与相框的左边距, 照片与相框的上边距, 照片宽, 照片高); | |||
g.DrawImage(img, imgBack.Width / 2 - img.Width / 2, imgBack.Width / 2 - img.Width / 2, img.Width, img.Height); | |||
GC.Collect(); | |||
return imgBack; | |||
} | |||
/// <summary> | |||
/// Resize图片 | |||
/// </summary> | |||
/// <param name="bmp">原始Bitmap</param> | |||
/// <param name="newW">新的宽度</param> | |||
/// <param name="newH">新的高度</param> | |||
/// <param name="Mode">保留着,暂时未用</param> | |||
/// <returns>处理以后的图片</returns> | |||
public static Image KiResizeImage(Image bmp, int newW, int newH, int Mode) | |||
{ | |||
try | |||
{ | |||
Image b = new Bitmap(newW, newH); | |||
Graphics g = Graphics.FromImage(b); | |||
// 插值算法的质量 | |||
g.InterpolationMode = InterpolationMode.HighQualityBicubic; | |||
g.DrawImage(bmp, new Rectangle(0, 0, newW, newH), new Rectangle(0, 0, bmp.Width, bmp.Height), GraphicsUnit.Pixel); | |||
g.Dispose(); | |||
return b; | |||
} | |||
catch | |||
{ | |||
return null; | |||
} | |||
} | |||
public bool IsReusable | |||
{ | |||
get | |||
{ | |||
return false; | |||
} | |||
} | |||
} | |||
} |
@@ -0,0 +1,73 @@ | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Linq; | |||
using System.Text; | |||
using System.IO; | |||
using System.Diagnostics; | |||
using ICSharpCode.SharpZipLib; | |||
using ICSharpCode.SharpZipLib.Zip; | |||
using ICSharpCode.SharpZipLib.Checksums; | |||
using ICSharpCode.SharpZipLib.Core; | |||
namespace ZipOneCode.ZipProvider | |||
{ | |||
public class ZipHelper | |||
{ | |||
/// <summary> | |||
/// 压缩文件 | |||
/// </summary> | |||
/// <param name="sourceFilePath"></param> | |||
/// <param name="destinationZipFilePath"></param> | |||
public static void CreateZip(string sourceFilePath, string destinationZipFilePath) | |||
{ | |||
if (sourceFilePath[sourceFilePath.Length - 1] != System.IO.Path.DirectorySeparatorChar) | |||
sourceFilePath += System.IO.Path.DirectorySeparatorChar; | |||
ZipOutputStream zipStream = new ZipOutputStream(File.Create(destinationZipFilePath)); | |||
zipStream.SetLevel(6); // 压缩级别 0-9 | |||
CreateZipFiles(sourceFilePath, zipStream, sourceFilePath); | |||
zipStream.Finish(); | |||
zipStream.Close(); | |||
} | |||
/// <summary> | |||
/// 递归压缩文件 | |||
/// </summary> | |||
/// <param name="sourceFilePath">待压缩的文件或文件夹路径</param> | |||
/// <param name="zipStream">打包结果的zip文件路径(类似 D:\WorkSpace\a.zip),全路径包括文件名和.zip扩展名</param> | |||
/// <param name="staticFile"></param> | |||
private static void CreateZipFiles(string sourceFilePath, ZipOutputStream zipStream, string staticFile) | |||
{ | |||
Crc32 crc = new Crc32(); | |||
string[] filesArray = Directory.GetFileSystemEntries(sourceFilePath); | |||
foreach (string file in filesArray) | |||
{ | |||
if (Directory.Exists(file)) //如果当前是文件夹,递归 | |||
{ | |||
CreateZipFiles(file, zipStream, staticFile); | |||
} | |||
else //如果是文件,开始压缩 | |||
{ | |||
FileStream fileStream = File.OpenRead(file); | |||
byte[] buffer = new byte[fileStream.Length]; | |||
fileStream.Read(buffer, 0, buffer.Length); | |||
string tempFile = file.Substring(staticFile.LastIndexOf("\\") + 1); | |||
ZipEntry entry = new ZipEntry(tempFile); | |||
entry.DateTime = DateTime.Now; | |||
entry.Size = fileStream.Length; | |||
fileStream.Close(); | |||
crc.Reset(); | |||
crc.Update(buffer); | |||
entry.Crc = crc.Value; | |||
zipStream.PutNextEntry(entry); | |||
zipStream.Write(buffer, 0, buffer.Length); | |||
} | |||
} | |||
} | |||
} | |||
} |
@@ -7,5 +7,6 @@ | |||
<package id="Newtonsoft.Json" version="12.0.1" targetFramework="net461" /> | |||
<package id="NPOI" version="2.3.0" targetFramework="net45" /> | |||
<package id="SharpZipLib" version="0.86.0" targetFramework="net45" /> | |||
<package id="ThoughtWorks.QRCode" version="1.1.0" targetFramework="net461" /> | |||
<package id="YUICompressor.NET" version="2.7.0.0" targetFramework="net45" /> | |||
</packages> |
@@ -0,0 +1,68 @@ | |||
<?xml version="1.0" encoding="utf-8"?> | |||
<Project ToolsVersion="15.0" 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>{767D20C4-B983-4940-BF97-74D5479CA558}</ProjectGuid> | |||
<OutputType>Library</OutputType> | |||
<AppDesignerFolder>Properties</AppDesignerFolder> | |||
<RootNamespace>Quanjiang.DigitalSchool.AsposeHelper</RootNamespace> | |||
<AssemblyName>Quanjiang.DigitalSchool.AsposeHelper</AssemblyName> | |||
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion> | |||
<FileAlignment>512</FileAlignment> | |||
<Deterministic>true</Deterministic> | |||
</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> | |||
</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> | |||
</PropertyGroup> | |||
<ItemGroup> | |||
<Reference Include="Aspose.Cells, Version=20.10.0.0, Culture=neutral, PublicKeyToken=716fcc553a201e56, processorArchitecture=MSIL"> | |||
<HintPath>..\packages\Aspose.Cells.20.10.0\lib\net40\Aspose.Cells.dll</HintPath> | |||
</Reference> | |||
<Reference Include="Aspose.Words, Version=20.10.0.0, Culture=neutral, PublicKeyToken=716fcc553a201e56, processorArchitecture=MSIL"> | |||
<HintPath>..\packages\Aspose.Words.20.10.0\lib\net461\Aspose.Words.dll</HintPath> | |||
</Reference> | |||
<Reference Include="Aspose.Words.Pdf2Word, Version=20.10.0.0, Culture=neutral, PublicKeyToken=716fcc553a201e56, processorArchitecture=MSIL"> | |||
<HintPath>..\packages\Aspose.Words.20.10.0\lib\net461\Aspose.Words.Pdf2Word.dll</HintPath> | |||
</Reference> | |||
<Reference Include="System" /> | |||
<Reference Include="System.Core" /> | |||
<Reference Include="System.Web" /> | |||
<Reference Include="System.Xml.Linq" /> | |||
<Reference Include="System.Data.DataSetExtensions" /> | |||
<Reference Include="Microsoft.CSharp" /> | |||
<Reference Include="System.Data" /> | |||
<Reference Include="System.Net.Http" /> | |||
<Reference Include="System.Xml" /> | |||
</ItemGroup> | |||
<ItemGroup> | |||
<Compile Include="AsposeCore.cs" /> | |||
<Compile Include="Properties\AssemblyInfo.cs" /> | |||
</ItemGroup> | |||
<ItemGroup> | |||
<None Include="app.config" /> | |||
<None Include="packages.config" /> | |||
</ItemGroup> | |||
<ItemGroup> | |||
<ProjectReference Include="..\Learun.Framework.Module\Learun.Util\Learun.Util\Learun.Util.csproj"> | |||
<Project>{CF8AE293-88AB-436C-9720-A8386BA5D7B7}</Project> | |||
<Name>Learun.Util</Name> | |||
</ProjectReference> | |||
</ItemGroup> | |||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> | |||
</Project> |
@@ -0,0 +1,11 @@ | |||
<?xml version="1.0" encoding="utf-8"?> | |||
<configuration> | |||
<runtime> | |||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> | |||
<dependentAssembly> | |||
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" /> | |||
<bindingRedirect oldVersion="0.0.0.0-12.0.0.0" newVersion="12.0.0.0" /> | |||
</dependentAssembly> | |||
</assemblyBinding> | |||
</runtime> | |||
</configuration> |