Browse Source

1. 2021.09.11 第一版

PTD
Ray 4 years ago
commit
5810f2ff0c
  1. BIN
      .vs/AMESCoreStudio/DesignTimeBuild/.dtbcache.v2
  2. 997
      .vs/AMESCoreStudio/config/applicationhost.config
  3. BIN
      .vs/AMESCoreStudio/v16/.suo
  4. 22
      AMESCoreStudio.Web/AMESCoreStudio.Web.csproj
  5. 15
      AMESCoreStudio.Web/AMESCoreStudio.Web.csproj.user
  6. 21
      AMESCoreStudio.Web/AppSetting.cs
  7. 23
      AMESCoreStudio.Web/Code/Errors.cs
  8. 27
      AMESCoreStudio.Web/Code/IResultModel.cs
  9. 20
      AMESCoreStudio.Web/Code/ResultModel.cs
  10. 169
      AMESCoreStudio.Web/Controllers/BulletinController.cs
  11. 80
      AMESCoreStudio.Web/Controllers/HomeController.cs
  12. 112
      AMESCoreStudio.Web/Controllers/LoginController.cs
  13. 617
      AMESCoreStudio.Web/Controllers/SYSController.cs
  14. 30
      AMESCoreStudio.Web/HttpApis/IAuth.cs
  15. 64
      AMESCoreStudio.Web/HttpApis/IBulletin.cs
  16. 249
      AMESCoreStudio.Web/HttpApis/ISYS.cs
  17. 11
      AMESCoreStudio.Web/Models/ErrorViewModel.cs
  18. 22
      AMESCoreStudio.Web/Models/LayuiViewModel.cs
  19. 19
      AMESCoreStudio.Web/Models/LoginViewModel.cs
  20. 47
      AMESCoreStudio.Web/Program.cs
  21. 27
      AMESCoreStudio.Web/Properties/launchSettings.json
  22. 95
      AMESCoreStudio.Web/Startup.cs
  23. 5
      AMESCoreStudio.Web/UpdateList.txt
  24. 340
      AMESCoreStudio.Web/Views/Bulletin/Create.cshtml
  25. 66
      AMESCoreStudio.Web/Views/Bulletin/Edit.cshtml
  26. 119
      AMESCoreStudio.Web/Views/Bulletin/Index.cshtml
  27. 185
      AMESCoreStudio.Web/Views/Home/Framework.cshtml
  28. 23
      AMESCoreStudio.Web/Views/Home/Index.cshtml
  29. 6
      AMESCoreStudio.Web/Views/Home/Privacy.cshtml
  30. 25
      AMESCoreStudio.Web/Views/Home/Refresh.cshtml
  31. 65
      AMESCoreStudio.Web/Views/Login/Index.cshtml
  32. 108
      AMESCoreStudio.Web/Views/SYS/SYS001.cshtml
  33. 74
      AMESCoreStudio.Web/Views/SYS/SYS001C.cshtml
  34. 80
      AMESCoreStudio.Web/Views/SYS/SYS001U.cshtml
  35. 108
      AMESCoreStudio.Web/Views/SYS/SYS002.cshtml
  36. 80
      AMESCoreStudio.Web/Views/SYS/SYS002C.cshtml
  37. 85
      AMESCoreStudio.Web/Views/SYS/SYS002U.cshtml
  38. 108
      AMESCoreStudio.Web/Views/SYS/SYS003.cshtml
  39. 85
      AMESCoreStudio.Web/Views/SYS/SYS003C.cshtml
  40. 90
      AMESCoreStudio.Web/Views/SYS/SYS003U.cshtml
  41. 102
      AMESCoreStudio.Web/Views/SYS/SYS004.cshtml
  42. 55
      AMESCoreStudio.Web/Views/SYS/SYS004C.cshtml
  43. 61
      AMESCoreStudio.Web/Views/SYS/SYS004U.cshtml
  44. 222
      AMESCoreStudio.Web/Views/SYS/SYS007.cshtml
  45. 69
      AMESCoreStudio.Web/Views/SYS/SYS007C.cshtml
  46. 69
      AMESCoreStudio.Web/Views/SYS/SYS007U.cshtml
  47. 107
      AMESCoreStudio.Web/Views/SYS/SYS008.cshtml
  48. 81
      AMESCoreStudio.Web/Views/SYS/SYS008C.cshtml
  49. 83
      AMESCoreStudio.Web/Views/SYS/SYS008U.cshtml
  50. 25
      AMESCoreStudio.Web/Views/Shared/Error.cshtml
  51. 40
      AMESCoreStudio.Web/Views/Shared/_AMESLayout.cshtml
  52. 3
      AMESCoreStudio.Web/Views/Shared/_FileinputScriptsPartial.cshtml
  53. 22
      AMESCoreStudio.Web/Views/Shared/_FormLayout.cshtml
  54. 30
      AMESCoreStudio.Web/Views/Shared/_Layout.cshtml
  55. 48
      AMESCoreStudio.Web/Views/Shared/_Layout2.cshtml
  56. 2
      AMESCoreStudio.Web/Views/Shared/_ValidationScriptsPartial.cshtml
  57. 3
      AMESCoreStudio.Web/Views/_ViewImports.cshtml
  58. 3
      AMESCoreStudio.Web/Views/_ViewStart.cshtml
  59. 9
      AMESCoreStudio.Web/appsettings.Development.json
  60. 14
      AMESCoreStudio.Web/appsettings.json
  61. BIN
      AMESCoreStudio.Web/bin/Debug/netcoreapp3.1/AMESCoreStudio.Web.Views.dll
  62. BIN
      AMESCoreStudio.Web/bin/Debug/netcoreapp3.1/AMESCoreStudio.Web.Views.pdb
  63. 6761
      AMESCoreStudio.Web/bin/Debug/netcoreapp3.1/AMESCoreStudio.Web.deps.json
  64. BIN
      AMESCoreStudio.Web/bin/Debug/netcoreapp3.1/AMESCoreStudio.Web.dll
  65. BIN
      AMESCoreStudio.Web/bin/Debug/netcoreapp3.1/AMESCoreStudio.Web.exe
  66. BIN
      AMESCoreStudio.Web/bin/Debug/netcoreapp3.1/AMESCoreStudio.Web.pdb
  67. 9
      AMESCoreStudio.Web/bin/Debug/netcoreapp3.1/AMESCoreStudio.Web.runtimeconfig.dev.json
  68. 13
      AMESCoreStudio.Web/bin/Debug/netcoreapp3.1/AMESCoreStudio.Web.runtimeconfig.json
  69. BIN
      AMESCoreStudio.Web/bin/Debug/netcoreapp3.1/AMESCoreStudio.WebApi.Views.dll
  70. BIN
      AMESCoreStudio.Web/bin/Debug/netcoreapp3.1/AMESCoreStudio.WebApi.Views.pdb
  71. 6646
      AMESCoreStudio.Web/bin/Debug/netcoreapp3.1/AMESCoreStudio.WebApi.deps.json
  72. BIN
      AMESCoreStudio.Web/bin/Debug/netcoreapp3.1/AMESCoreStudio.WebApi.dll
  73. BIN
      AMESCoreStudio.Web/bin/Debug/netcoreapp3.1/AMESCoreStudio.WebApi.exe
  74. BIN
      AMESCoreStudio.Web/bin/Debug/netcoreapp3.1/AMESCoreStudio.WebApi.pdb
  75. 9
      AMESCoreStudio.Web/bin/Debug/netcoreapp3.1/AMESCoreStudio.WebApi.runtimeconfig.dev.json
  76. 13
      AMESCoreStudio.Web/bin/Debug/netcoreapp3.1/AMESCoreStudio.WebApi.runtimeconfig.json
  77. 1196
      AMESCoreStudio.Web/bin/Debug/netcoreapp3.1/AMESCoreStudio.WebApi.xml
  78. BIN
      AMESCoreStudio.Web/bin/Debug/netcoreapp3.1/Castle.Core.dll
  79. BIN
      AMESCoreStudio.Web/bin/Debug/netcoreapp3.1/Microsoft.AspNetCore.Mvc.Razor.Extensions.dll
  80. BIN
      AMESCoreStudio.Web/bin/Debug/netcoreapp3.1/Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation.dll
  81. BIN
      AMESCoreStudio.Web/bin/Debug/netcoreapp3.1/Microsoft.AspNetCore.Razor.Language.dll
  82. BIN
      AMESCoreStudio.Web/bin/Debug/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.Workspaces.dll
  83. BIN
      AMESCoreStudio.Web/bin/Debug/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.dll
  84. BIN
      AMESCoreStudio.Web/bin/Debug/netcoreapp3.1/Microsoft.CodeAnalysis.Razor.dll
  85. BIN
      AMESCoreStudio.Web/bin/Debug/netcoreapp3.1/Microsoft.CodeAnalysis.Workspaces.dll
  86. BIN
      AMESCoreStudio.Web/bin/Debug/netcoreapp3.1/Microsoft.CodeAnalysis.dll
  87. BIN
      AMESCoreStudio.Web/bin/Debug/netcoreapp3.1/Microsoft.Data.SqlClient.dll
  88. BIN
      AMESCoreStudio.Web/bin/Debug/netcoreapp3.1/Microsoft.EntityFrameworkCore.Abstractions.dll
  89. BIN
      AMESCoreStudio.Web/bin/Debug/netcoreapp3.1/Microsoft.EntityFrameworkCore.Proxies.dll
  90. BIN
      AMESCoreStudio.Web/bin/Debug/netcoreapp3.1/Microsoft.EntityFrameworkCore.Relational.dll
  91. BIN
      AMESCoreStudio.Web/bin/Debug/netcoreapp3.1/Microsoft.EntityFrameworkCore.SqlServer.dll
  92. BIN
      AMESCoreStudio.Web/bin/Debug/netcoreapp3.1/Microsoft.EntityFrameworkCore.dll
  93. BIN
      AMESCoreStudio.Web/bin/Debug/netcoreapp3.1/Microsoft.Extensions.Caching.Abstractions.dll
  94. BIN
      AMESCoreStudio.Web/bin/Debug/netcoreapp3.1/Microsoft.Extensions.Caching.Memory.dll
  95. BIN
      AMESCoreStudio.Web/bin/Debug/netcoreapp3.1/Microsoft.Extensions.Configuration.Abstractions.dll
  96. BIN
      AMESCoreStudio.Web/bin/Debug/netcoreapp3.1/Microsoft.Extensions.DependencyInjection.Abstractions.dll
  97. BIN
      AMESCoreStudio.Web/bin/Debug/netcoreapp3.1/Microsoft.Extensions.DependencyInjection.dll
  98. BIN
      AMESCoreStudio.Web/bin/Debug/netcoreapp3.1/Microsoft.Extensions.DependencyModel.dll
  99. BIN
      AMESCoreStudio.Web/bin/Debug/netcoreapp3.1/Microsoft.Extensions.Logging.Abstractions.dll
  100. BIN
      AMESCoreStudio.Web/bin/Debug/netcoreapp3.1/Microsoft.Extensions.Logging.dll

BIN
.vs/AMESCoreStudio/DesignTimeBuild/.dtbcache.v2

Binary file not shown.

997
.vs/AMESCoreStudio/config/applicationhost.config

@ -0,0 +1,997 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
IIS configuration sections.
For schema documentation, see
%IIS_BIN%\config\schema\IIS_schema.xml.
Please make a backup of this file before making any changes to it.
NOTE: The following environment variables are available to be used
within this file and are understood by the IIS Express.
%IIS_USER_HOME% - The IIS Express home directory for the user
%IIS_SITES_HOME% - The default home directory for sites
%IIS_BIN% - The location of the IIS Express binaries
%SYSTEMDRIVE% - The drive letter of %IIS_BIN%
-->
<configuration>
<!--
The <configSections> section controls the registration of sections.
Section is the basic unit of deployment, locking, searching and
containment for configuration settings.
Every section belongs to one section group.
A section group is a container of logically-related sections.
Sections cannot be nested.
Section groups may be nested.
<section
name="" [Required, Collection Key] [XML name of the section]
allowDefinition="Everywhere" [MachineOnly|MachineToApplication|AppHostOnly|Everywhere] [Level where it can be set]
overrideModeDefault="Allow" [Allow|Deny] [Default delegation mode]
allowLocation="true" [true|false] [Allowed in location tags]
/>
The recommended way to unlock sections is by using a location tag:
<location path="Default Web Site" overrideMode="Allow">
<system.webServer>
<asp />
</system.webServer>
</location>
-->
<configSections>
<sectionGroup name="system.applicationHost">
<section name="applicationPools" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />
<section name="configHistory" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />
<section name="customMetadata" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />
<section name="listenerAdapters" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />
<section name="log" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />
<section name="serviceAutoStartProviders" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />
<section name="sites" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />
<section name="webLimits" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />
</sectionGroup>
<sectionGroup name="system.webServer">
<section name="asp" overrideModeDefault="Deny" />
<section name="caching" overrideModeDefault="Allow" />
<section name="cgi" overrideModeDefault="Deny" />
<section name="defaultDocument" overrideModeDefault="Allow" />
<section name="directoryBrowse" overrideModeDefault="Allow" />
<section name="fastCgi" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />
<section name="globalModules" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />
<section name="handlers" overrideModeDefault="Deny" />
<section name="httpCompression" overrideModeDefault="Allow" allowDefinition="Everywhere" />
<section name="httpErrors" overrideModeDefault="Allow" />
<section name="httpLogging" overrideModeDefault="Deny" />
<section name="httpProtocol" overrideModeDefault="Allow" />
<section name="httpRedirect" overrideModeDefault="Allow" />
<section name="httpTracing" overrideModeDefault="Deny" />
<section name="isapiFilters" allowDefinition="MachineToApplication" overrideModeDefault="Deny" />
<section name="modules" allowDefinition="MachineToApplication" overrideModeDefault="Deny" />
<section name="applicationInitialization" allowDefinition="MachineToApplication" overrideModeDefault="Allow" />
<section name="odbcLogging" overrideModeDefault="Deny" />
<sectionGroup name="security">
<section name="access" overrideModeDefault="Deny" />
<section name="applicationDependencies" overrideModeDefault="Deny" />
<sectionGroup name="authentication">
<section name="anonymousAuthentication" overrideModeDefault="Deny" />
<section name="basicAuthentication" overrideModeDefault="Deny" />
<section name="clientCertificateMappingAuthentication" overrideModeDefault="Deny" />
<section name="digestAuthentication" overrideModeDefault="Deny" />
<section name="iisClientCertificateMappingAuthentication" overrideModeDefault="Deny" />
<section name="windowsAuthentication" overrideModeDefault="Deny" />
</sectionGroup>
<section name="authorization" overrideModeDefault="Allow" />
<section name="ipSecurity" overrideModeDefault="Deny" />
<section name="dynamicIpSecurity" overrideModeDefault="Deny" />
<section name="isapiCgiRestriction" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />
<section name="requestFiltering" overrideModeDefault="Allow" />
</sectionGroup>
<section name="serverRuntime" overrideModeDefault="Deny" />
<section name="serverSideInclude" overrideModeDefault="Deny" />
<section name="staticContent" overrideModeDefault="Allow" />
<sectionGroup name="tracing">
<section name="traceFailedRequests" overrideModeDefault="Allow" />
<section name="traceProviderDefinitions" overrideModeDefault="Deny" />
</sectionGroup>
<section name="urlCompression" overrideModeDefault="Allow" />
<section name="validation" overrideModeDefault="Allow" />
<sectionGroup name="webdav">
<section name="globalSettings" overrideModeDefault="Deny" />
<section name="authoring" overrideModeDefault="Deny" />
<section name="authoringRules" overrideModeDefault="Deny" />
</sectionGroup>
<sectionGroup name="rewrite">
<section name="allowedServerVariables" overrideModeDefault="Deny" />
<section name="rules" overrideModeDefault="Allow" />
<section name="outboundRules" overrideModeDefault="Allow" />
<section name="globalRules" overrideModeDefault="Deny" allowDefinition="AppHostOnly" />
<section name="providers" overrideModeDefault="Allow" />
<section name="rewriteMaps" overrideModeDefault="Allow" />
</sectionGroup>
<section name="webSocket" overrideModeDefault="Deny" />
<section name="aspNetCore" overrideModeDefault="Allow" />
</sectionGroup>
</configSections>
<configProtectedData>
<providers>
<add name="IISWASOnlyRsaProvider" type="" description="Uses RsaCryptoServiceProvider to encrypt and decrypt" keyContainerName="iisWasKey" cspProviderName="" useMachineContainer="true" useOAEP="false" />
<add name="AesProvider" type="Microsoft.ApplicationHost.AesProtectedConfigurationProvider" description="Uses an AES session key to encrypt and decrypt" keyContainerName="iisConfigurationKey" cspProviderName="" useOAEP="false" useMachineContainer="true" sessionKey="AQIAAA5mAAAApAAA/HKxkz6alrlAPez0IUgujj/6k3WxCDriHp6jvpv3yEZmo7h6SMzGLxo4mTrIQVHSkB7tmElHKfUFTzE2BWF7nFWHY6Z6qmGBauFzwJMwESjril7Gjz69RBFH259HQ6aRDq9Xfx7U7H4HtdmnKNqGjgl/hwPQBGeIlWiDh+sYv3vKB0QU971tjX6H2B+9armlnC8UOuA6JYMDMI/VLLL16sng0fWAy5JYe0YVABVjiAWDW264RZW9Tr1Oax4qHZKg+SdjULxeOc2YmpX+d0yeITo1HkPF1hN1gHpIPIUDo05ilHUNfR3OkjVCIQK4cFKCq1s8NH+y+13MxUC4Fn1AlQ==" />
<add name="IISWASOnlyAesProvider" type="Microsoft.ApplicationHost.AesProtectedConfigurationProvider" description="Uses an AES session key to encrypt and decrypt" keyContainerName="iisWasKey" cspProviderName="" useOAEP="false" useMachineContainer="true" sessionKey="AQIAAA5mAAAApAAALmU8lTC+v2qtfQiiiquvvLpUQqKLEXs+jSKoWCM/uPhyB++k4dwug19mGidNK5FYiWK2KYE1yhjVJcbp12E98Q0R2nT7eBiCMY2JairxQ591rqABK7keGaIjwH7PwGzSpILl3RJ4YFvJ/7ZXEJxeDZIjW8ZxWVXx+/VyHs9U3WguLEkgMUX3jrxJi8LouxaIVPJAv/YQ1ZCWs8zImitxX/C/7o7yaIxznfsN5nGQzQfpUDPeby99aw2zPVTtZI2LaWIBON8guABvZ6JtJVDWmfdK6sodbnwdZkr6/Z2rfvamT1dC1SpQrGG7ulR/f9/GXvCaW10ZVKxekBF/CYlNMg==" />
</providers>
</configProtectedData>
<system.applicationHost>
<applicationPools>
<add name="Clr4IntegratedAppPool" managedRuntimeVersion="v4.0" managedPipelineMode="Integrated" CLRConfigFile="%IIS_USER_HOME%\config\aspnet.config" autoStart="true" />
<add name="Clr4ClassicAppPool" managedRuntimeVersion="v4.0" managedPipelineMode="Classic" CLRConfigFile="%IIS_USER_HOME%\config\aspnet.config" autoStart="true" />
<add name="Clr2IntegratedAppPool" managedRuntimeVersion="v2.0" managedPipelineMode="Integrated" CLRConfigFile="%IIS_USER_HOME%\config\aspnet.config" autoStart="true" />
<add name="Clr2ClassicAppPool" managedRuntimeVersion="v2.0" managedPipelineMode="Classic" CLRConfigFile="%IIS_USER_HOME%\config\aspnet.config" autoStart="true" />
<add name="UnmanagedClassicAppPool" managedRuntimeVersion="" managedPipelineMode="Classic" autoStart="true" />
<add name="AMESCoreStudio.Web AppPool" managedRuntimeVersion="" />
<applicationPoolDefaults managedRuntimeVersion="v4.0">
<processModel loadUserProfile="true" setProfileEnvironment="false" />
</applicationPoolDefaults>
</applicationPools>
<!--
The <listenerAdapters> section defines the protocols with which the
Windows Process Activation Service (WAS) binds.
-->
<listenerAdapters>
<add name="http" />
</listenerAdapters>
<sites>
<site name="WebSite1" id="1" serverAutoStart="true">
<application path="/">
<virtualDirectory path="/" physicalPath="%IIS_SITES_HOME%\WebSite1" />
</application>
<bindings>
<binding protocol="http" bindingInformation=":8080:localhost" />
</bindings>
</site>
<site name="AMESCoreStudio.Web" id="2">
<application path="/" applicationPool="AMESCoreStudio.Web AppPool">
<virtualDirectory path="/" physicalPath="D:\Ray_Work\AMES\AMESCoreStudio.Web" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:26159:localhost" />
</bindings>
</site>
<siteDefaults>
<!-- To enable logging, please change the below attribute "enabled" to "true" -->
<logFile logFormat="W3C" directory="%AppData%\Microsoft\IISExpressLogs" enabled="false" />
<traceFailedRequestsLogging directory="%AppData%\Microsoft" enabled="false" maxLogFileSizeKB="1024" />
</siteDefaults>
<applicationDefaults applicationPool="Clr4IntegratedAppPool" />
<virtualDirectoryDefaults allowSubDirConfig="true" />
</sites>
<webLimits />
</system.applicationHost>
<system.webServer>
<serverRuntime />
<asp scriptErrorSentToBrowser="true">
<cache diskTemplateCacheDirectory="%TEMP%\iisexpress\ASP Compiled Templates" />
<limits />
</asp>
<caching enabled="true" enableKernelCache="true"></caching>
<cgi />
<defaultDocument enabled="true">
<files>
<add value="Default.htm" />
<add value="Default.asp" />
<add value="index.htm" />
<add value="index.html" />
<add value="iisstart.htm" />
<add value="default.aspx" />
</files>
</defaultDocument>
<directoryBrowse enabled="false" />
<fastCgi />
<!--
The <globalModules> section defines all native-code modules.
To enable a module, specify it in the <modules> section.
-->
<globalModules>
<add name="HttpLoggingModule" image="%IIS_BIN%\loghttp.dll" />
<add name="UriCacheModule" image="%IIS_BIN%\cachuri.dll" />
<add name="TokenCacheModule" image="%IIS_BIN%\cachtokn.dll" />
<add name="DynamicCompressionModule" image="%IIS_BIN%\compdyn.dll" />
<add name="StaticCompressionModule" image="%IIS_BIN%\compstat.dll" />
<add name="DefaultDocumentModule" image="%IIS_BIN%\defdoc.dll" />
<add name="DirectoryListingModule" image="%IIS_BIN%\dirlist.dll" />
<add name="ProtocolSupportModule" image="%IIS_BIN%\protsup.dll" />
<add name="HttpRedirectionModule" image="%IIS_BIN%\redirect.dll" />
<add name="ServerSideIncludeModule" image="%IIS_BIN%\iis_ssi.dll" />
<add name="StaticFileModule" image="%IIS_BIN%\static.dll" />
<add name="AnonymousAuthenticationModule" image="%IIS_BIN%\authanon.dll" />
<add name="CertificateMappingAuthenticationModule" image="%IIS_BIN%\authcert.dll" />
<add name="UrlAuthorizationModule" image="%IIS_BIN%\urlauthz.dll" />
<add name="BasicAuthenticationModule" image="%IIS_BIN%\authbas.dll" />
<add name="WindowsAuthenticationModule" image="%IIS_BIN%\authsspi.dll" />
<add name="IISCertificateMappingAuthenticationModule" image="%IIS_BIN%\authmap.dll" />
<add name="IpRestrictionModule" image="%IIS_BIN%\iprestr.dll" />
<add name="DynamicIpRestrictionModule" image="%IIS_BIN%\diprestr.dll" />
<add name="RequestFilteringModule" image="%IIS_BIN%\modrqflt.dll" />
<add name="CustomLoggingModule" image="%IIS_BIN%\logcust.dll" />
<add name="CustomErrorModule" image="%IIS_BIN%\custerr.dll" />
<add name="FailedRequestsTracingModule" image="%IIS_BIN%\iisfreb.dll" />
<add name="RequestMonitorModule" image="%IIS_BIN%\iisreqs.dll" />
<add name="IsapiModule" image="%IIS_BIN%\isapi.dll" />
<add name="IsapiFilterModule" image="%IIS_BIN%\filter.dll" />
<add name="CgiModule" image="%IIS_BIN%\cgi.dll" />
<add name="FastCgiModule" image="%IIS_BIN%\iisfcgi.dll" />
<!-- <add name="WebDAVModule" image="%IIS_BIN%\webdav.dll" /> -->
<add name="RewriteModule" image="%IIS_BIN%\rewrite.dll" />
<add name="ConfigurationValidationModule" image="%IIS_BIN%\validcfg.dll" />
<add name="WebSocketModule" image="%IIS_BIN%\iiswsock.dll" />
<add name="WebMatrixSupportModule" image="%IIS_BIN%\webmatrixsup.dll" />
<add name="ManagedEngine" image="%windir%\Microsoft.NET\Framework\v2.0.50727\webengine.dll" preCondition="integratedMode,runtimeVersionv2.0,bitness32" />
<add name="ManagedEngine64" image="%windir%\Microsoft.NET\Framework64\v2.0.50727\webengine.dll" preCondition="integratedMode,runtimeVersionv2.0,bitness64" />
<add name="ManagedEngineV4.0_32bit" image="%windir%\Microsoft.NET\Framework\v4.0.30319\webengine4.dll" preCondition="integratedMode,runtimeVersionv4.0,bitness32" />
<add name="ManagedEngineV4.0_64bit" image="%windir%\Microsoft.NET\Framework64\v4.0.30319\webengine4.dll" preCondition="integratedMode,runtimeVersionv4.0,bitness64" />
<add name="ApplicationInitializationModule" image="%IIS_BIN%\warmup.dll" />
<add name="AspNetCoreModule" image="%IIS_BIN%\aspnetcore.dll" />
<add name="AspNetCoreModuleV2" image="%IIS_BIN%\Asp.Net Core Module\V2\aspnetcorev2.dll" />
</globalModules>
<httpCompression directory="%TEMP%">
<scheme name="gzip" dll="%IIS_BIN%\gzip.dll" />
<dynamicTypes>
<add mimeType="text/*" enabled="true" />
<add mimeType="message/*" enabled="true" />
<add mimeType="application/x-javascript" enabled="true" />
<add mimeType="application/javascript" enabled="true" />
<add mimeType="*/*" enabled="false" />
</dynamicTypes>
<staticTypes>
<add mimeType="text/*" enabled="true" />
<add mimeType="message/*" enabled="true" />
<add mimeType="application/javascript" enabled="true" />
<add mimeType="application/atom+xml" enabled="true" />
<add mimeType="application/xaml+xml" enabled="true" />
<add mimeType="image/svg+xml" enabled="true" />
<add mimeType="*/*" enabled="false" />
</staticTypes>
</httpCompression>
<httpErrors lockAttributes="allowAbsolutePathsWhenDelegated,defaultPath">
<error statusCode="401" prefixLanguageFilePath="%IIS_BIN%\custerr" path="401.htm" />
<error statusCode="403" prefixLanguageFilePath="%IIS_BIN%\custerr" path="403.htm" />
<error statusCode="404" prefixLanguageFilePath="%IIS_BIN%\custerr" path="404.htm" />
<error statusCode="405" prefixLanguageFilePath="%IIS_BIN%\custerr" path="405.htm" />
<error statusCode="406" prefixLanguageFilePath="%IIS_BIN%\custerr" path="406.htm" />
<error statusCode="412" prefixLanguageFilePath="%IIS_BIN%\custerr" path="412.htm" />
<error statusCode="500" prefixLanguageFilePath="%IIS_BIN%\custerr" path="500.htm" />
<error statusCode="501" prefixLanguageFilePath="%IIS_BIN%\custerr" path="501.htm" />
<error statusCode="502" prefixLanguageFilePath="%IIS_BIN%\custerr" path="502.htm" />
</httpErrors>
<httpLogging dontLog="false" />
<httpProtocol>
<customHeaders>
<clear />
<add name="X-Powered-By" value="ASP.NET" />
</customHeaders>
<redirectHeaders>
<clear />
</redirectHeaders>
</httpProtocol>
<httpRedirect enabled="false" />
<httpTracing />
<isapiFilters>
<filter name="ASP.Net_2.0.50727-64" path="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_filter.dll" enableCache="true" preCondition="bitness64,runtimeVersionv2.0" />
<filter name="ASP.Net_2.0.50727.0" path="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_filter.dll" enableCache="true" preCondition="bitness32,runtimeVersionv2.0" />
<filter name="ASP.Net_2.0_for_v1.1" path="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_filter.dll" enableCache="true" preCondition="runtimeVersionv1.1" />
<filter name="ASP.Net_4.0_32bit" path="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_filter.dll" enableCache="true" preCondition="bitness32,runtimeVersionv4.0" />
<filter name="ASP.Net_4.0_64bit" path="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_filter.dll" enableCache="true" preCondition="bitness64,runtimeVersionv4.0" />
</isapiFilters>
<odbcLogging />
<security>
<access sslFlags="None" />
<applicationDependencies>
<application name="Active Server Pages" groupId="ASP" />
</applicationDependencies>
<authentication>
<anonymousAuthentication enabled="true" userName="" />
<basicAuthentication enabled="false" />
<clientCertificateMappingAuthentication enabled="false" />
<digestAuthentication enabled="false" />
<iisClientCertificateMappingAuthentication enabled="false"></iisClientCertificateMappingAuthentication>
<windowsAuthentication enabled="false">
<providers>
<add value="Negotiate" />
<add value="NTLM" />
</providers>
</windowsAuthentication>
</authentication>
<authorization>
<add accessType="Allow" users="*" />
</authorization>
<ipSecurity allowUnlisted="true" />
<isapiCgiRestriction notListedIsapisAllowed="true" notListedCgisAllowed="true">
<add path="%windir%\Microsoft.NET\Framework64\v4.0.30319\webengine4.dll" allowed="true" groupId="ASP.NET_v4.0" description="ASP.NET_v4.0" />
<add path="%windir%\Microsoft.NET\Framework\v4.0.30319\webengine4.dll" allowed="true" groupId="ASP.NET_v4.0" description="ASP.NET_v4.0" />
<add path="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" allowed="true" groupId="ASP.NET v2.0.50727" description="ASP.NET v2.0.50727" />
<add path="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" allowed="true" groupId="ASP.NET v2.0.50727" description="ASP.NET v2.0.50727" />
</isapiCgiRestriction>
<requestFiltering>
<fileExtensions allowUnlisted="true" applyToWebDAV="true">
<add fileExtension=".asa" allowed="false" />
<add fileExtension=".asax" allowed="false" />
<add fileExtension=".ascx" allowed="false" />
<add fileExtension=".master" allowed="false" />
<add fileExtension=".skin" allowed="false" />
<add fileExtension=".browser" allowed="false" />
<add fileExtension=".sitemap" allowed="false" />
<add fileExtension=".config" allowed="false" />
<add fileExtension=".cs" allowed="false" />
<add fileExtension=".csproj" allowed="false" />
<add fileExtension=".vb" allowed="false" />
<add fileExtension=".vbproj" allowed="false" />
<add fileExtension=".webinfo" allowed="false" />
<add fileExtension=".licx" allowed="false" />
<add fileExtension=".resx" allowed="false" />
<add fileExtension=".resources" allowed="false" />
<add fileExtension=".mdb" allowed="false" />
<add fileExtension=".vjsproj" allowed="false" />
<add fileExtension=".java" allowed="false" />
<add fileExtension=".jsl" allowed="false" />
<add fileExtension=".ldb" allowed="false" />
<add fileExtension=".dsdgm" allowed="false" />
<add fileExtension=".ssdgm" allowed="false" />
<add fileExtension=".lsad" allowed="false" />
<add fileExtension=".ssmap" allowed="false" />
<add fileExtension=".cd" allowed="false" />
<add fileExtension=".dsprototype" allowed="false" />
<add fileExtension=".lsaprototype" allowed="false" />
<add fileExtension=".sdm" allowed="false" />
<add fileExtension=".sdmDocument" allowed="false" />
<add fileExtension=".mdf" allowed="false" />
<add fileExtension=".ldf" allowed="false" />
<add fileExtension=".ad" allowed="false" />
<add fileExtension=".dd" allowed="false" />
<add fileExtension=".ldd" allowed="false" />
<add fileExtension=".sd" allowed="false" />
<add fileExtension=".adprototype" allowed="false" />
<add fileExtension=".lddprototype" allowed="false" />
<add fileExtension=".exclude" allowed="false" />
<add fileExtension=".refresh" allowed="false" />
<add fileExtension=".compiled" allowed="false" />
<add fileExtension=".msgx" allowed="false" />
<add fileExtension=".vsdisco" allowed="false" />
<add fileExtension=".rules" allowed="false" />
</fileExtensions>
<verbs allowUnlisted="true" applyToWebDAV="true" />
<hiddenSegments applyToWebDAV="true">
<add segment="web.config" />
<add segment="bin" />
<add segment="App_code" />
<add segment="App_GlobalResources" />
<add segment="App_LocalResources" />
<add segment="App_WebReferences" />
<add segment="App_Data" />
<add segment="App_Browsers" />
</hiddenSegments>
</requestFiltering>
</security>
<serverSideInclude ssiExecDisable="false" />
<staticContent lockAttributes="isDocFooterFileName">
<mimeMap fileExtension=".323" mimeType="text/h323" />
<mimeMap fileExtension=".3g2" mimeType="video/3gpp2" />
<mimeMap fileExtension=".3gp2" mimeType="video/3gpp2" />
<mimeMap fileExtension=".3gp" mimeType="video/3gpp" />
<mimeMap fileExtension=".3gpp" mimeType="video/3gpp" />
<mimeMap fileExtension=".aac" mimeType="audio/aac" />
<mimeMap fileExtension=".aaf" mimeType="application/octet-stream" />
<mimeMap fileExtension=".aca" mimeType="application/octet-stream" />
<mimeMap fileExtension=".accdb" mimeType="application/msaccess" />
<mimeMap fileExtension=".accde" mimeType="application/msaccess" />
<mimeMap fileExtension=".accdt" mimeType="application/msaccess" />
<mimeMap fileExtension=".acx" mimeType="application/internet-property-stream" />
<mimeMap fileExtension=".adt" mimeType="audio/vnd.dlna.adts" />
<mimeMap fileExtension=".adts" mimeType="audio/vnd.dlna.adts" />
<mimeMap fileExtension=".afm" mimeType="application/octet-stream" />
<mimeMap fileExtension=".ai" mimeType="application/postscript" />
<mimeMap fileExtension=".aif" mimeType="audio/x-aiff" />
<mimeMap fileExtension=".aifc" mimeType="audio/aiff" />
<mimeMap fileExtension=".aiff" mimeType="audio/aiff" />
<mimeMap fileExtension=".appcache" mimeType="text/cache-manifest" />
<mimeMap fileExtension=".application" mimeType="application/x-ms-application" />
<mimeMap fileExtension=".art" mimeType="image/x-jg" />
<mimeMap fileExtension=".asd" mimeType="application/octet-stream" />
<mimeMap fileExtension=".asf" mimeType="video/x-ms-asf" />
<mimeMap fileExtension=".asi" mimeType="application/octet-stream" />
<mimeMap fileExtension=".asm" mimeType="text/plain" />
<mimeMap fileExtension=".asr" mimeType="video/x-ms-asf" />
<mimeMap fileExtension=".asx" mimeType="video/x-ms-asf" />
<mimeMap fileExtension=".atom" mimeType="application/atom+xml" />
<mimeMap fileExtension=".au" mimeType="audio/basic" />
<mimeMap fileExtension=".avi" mimeType="video/avi" />
<mimeMap fileExtension=".axs" mimeType="application/olescript" />
<mimeMap fileExtension=".bas" mimeType="text/plain" />
<mimeMap fileExtension=".bcpio" mimeType="application/x-bcpio" />
<mimeMap fileExtension=".bin" mimeType="application/octet-stream" />
<mimeMap fileExtension=".bmp" mimeType="image/bmp" />
<mimeMap fileExtension=".c" mimeType="text/plain" />
<mimeMap fileExtension=".cab" mimeType="application/vnd.ms-cab-compressed" />
<mimeMap fileExtension=".calx" mimeType="application/vnd.ms-office.calx" />
<mimeMap fileExtension=".cat" mimeType="application/vnd.ms-pki.seccat" />
<mimeMap fileExtension=".cdf" mimeType="application/x-cdf" />
<mimeMap fileExtension=".chm" mimeType="application/octet-stream" />
<mimeMap fileExtension=".class" mimeType="application/x-java-applet" />
<mimeMap fileExtension=".clp" mimeType="application/x-msclip" />
<mimeMap fileExtension=".cmx" mimeType="image/x-cmx" />
<mimeMap fileExtension=".cnf" mimeType="text/plain" />
<mimeMap fileExtension=".cod" mimeType="image/cis-cod" />
<mimeMap fileExtension=".cpio" mimeType="application/x-cpio" />
<mimeMap fileExtension=".cpp" mimeType="text/plain" />
<mimeMap fileExtension=".crd" mimeType="application/x-mscardfile" />
<mimeMap fileExtension=".crl" mimeType="application/pkix-crl" />
<mimeMap fileExtension=".crt" mimeType="application/x-x509-ca-cert" />
<mimeMap fileExtension=".csh" mimeType="application/x-csh" />
<mimeMap fileExtension=".css" mimeType="text/css" />
<mimeMap fileExtension=".csv" mimeType="application/octet-stream" />
<mimeMap fileExtension=".cur" mimeType="application/octet-stream" />
<mimeMap fileExtension=".dcr" mimeType="application/x-director" />
<mimeMap fileExtension=".deploy" mimeType="application/octet-stream" />
<mimeMap fileExtension=".der" mimeType="application/x-x509-ca-cert" />
<mimeMap fileExtension=".dib" mimeType="image/bmp" />
<mimeMap fileExtension=".dir" mimeType="application/x-director" />
<mimeMap fileExtension=".disco" mimeType="text/xml" />
<mimeMap fileExtension=".dll" mimeType="application/x-msdownload" />
<mimeMap fileExtension=".dll.config" mimeType="text/xml" />
<mimeMap fileExtension=".dlm" mimeType="text/dlm" />
<mimeMap fileExtension=".doc" mimeType="application/msword" />
<mimeMap fileExtension=".docm" mimeType="application/vnd.ms-word.document.macroEnabled.12" />
<mimeMap fileExtension=".docx" mimeType="application/vnd.openxmlformats-officedocument.wordprocessingml.document" />
<mimeMap fileExtension=".dot" mimeType="application/msword" />
<mimeMap fileExtension=".dotm" mimeType="application/vnd.ms-word.template.macroEnabled.12" />
<mimeMap fileExtension=".dotx" mimeType="application/vnd.openxmlformats-officedocument.wordprocessingml.template" />
<mimeMap fileExtension=".dsp" mimeType="application/octet-stream" />
<mimeMap fileExtension=".dtd" mimeType="text/xml" />
<mimeMap fileExtension=".dvi" mimeType="application/x-dvi" />
<mimeMap fileExtension=".dvr-ms" mimeType="video/x-ms-dvr" />
<mimeMap fileExtension=".dwf" mimeType="drawing/x-dwf" />
<mimeMap fileExtension=".dwp" mimeType="application/octet-stream" />
<mimeMap fileExtension=".dxr" mimeType="application/x-director" />
<mimeMap fileExtension=".eml" mimeType="message/rfc822" />
<mimeMap fileExtension=".emz" mimeType="application/octet-stream" />
<mimeMap fileExtension=".eot" mimeType="application/vnd.ms-fontobject" />
<mimeMap fileExtension=".eps" mimeType="application/postscript" />
<mimeMap fileExtension=".esd" mimeType="application/vnd.ms-cab-compressed" />
<mimeMap fileExtension=".etx" mimeType="text/x-setext" />
<mimeMap fileExtension=".evy" mimeType="application/envoy" />
<mimeMap fileExtension=".exe" mimeType="application/octet-stream" />
<mimeMap fileExtension=".exe.config" mimeType="text/xml" />
<mimeMap fileExtension=".fdf" mimeType="application/vnd.fdf" />
<mimeMap fileExtension=".fif" mimeType="application/fractals" />
<mimeMap fileExtension=".fla" mimeType="application/octet-stream" />
<mimeMap fileExtension=".flr" mimeType="x-world/x-vrml" />
<mimeMap fileExtension=".flv" mimeType="video/x-flv" />
<mimeMap fileExtension=".gif" mimeType="image/gif" />
<mimeMap fileExtension=".glb" mimeType="model/gltf-binary" />
<mimeMap fileExtension=".gtar" mimeType="application/x-gtar" />
<mimeMap fileExtension=".gz" mimeType="application/x-gzip" />
<mimeMap fileExtension=".h" mimeType="text/plain" />
<mimeMap fileExtension=".hdf" mimeType="application/x-hdf" />
<mimeMap fileExtension=".hdml" mimeType="text/x-hdml" />
<mimeMap fileExtension=".hhc" mimeType="application/x-oleobject" />
<mimeMap fileExtension=".hhk" mimeType="application/octet-stream" />
<mimeMap fileExtension=".hhp" mimeType="application/octet-stream" />
<mimeMap fileExtension=".hlp" mimeType="application/winhlp" />
<mimeMap fileExtension=".hqx" mimeType="application/mac-binhex40" />
<mimeMap fileExtension=".hta" mimeType="application/hta" />
<mimeMap fileExtension=".htc" mimeType="text/x-component" />
<mimeMap fileExtension=".htm" mimeType="text/html" />
<mimeMap fileExtension=".html" mimeType="text/html" />
<mimeMap fileExtension=".htt" mimeType="text/webviewhtml" />
<mimeMap fileExtension=".hxt" mimeType="text/html" />
<mimeMap fileExtension=".ico" mimeType="image/x-icon" />
<mimeMap fileExtension=".ics" mimeType="text/calendar" />
<mimeMap fileExtension=".ief" mimeType="image/ief" />
<mimeMap fileExtension=".iii" mimeType="application/x-iphone" />
<mimeMap fileExtension=".inf" mimeType="application/octet-stream" />
<mimeMap fileExtension=".ins" mimeType="application/x-internet-signup" />
<mimeMap fileExtension=".isp" mimeType="application/x-internet-signup" />
<mimeMap fileExtension=".IVF" mimeType="video/x-ivf" />
<mimeMap fileExtension=".jar" mimeType="application/java-archive" />
<mimeMap fileExtension=".java" mimeType="application/octet-stream" />
<mimeMap fileExtension=".jck" mimeType="application/liquidmotion" />
<mimeMap fileExtension=".jcz" mimeType="application/liquidmotion" />
<mimeMap fileExtension=".jfif" mimeType="image/pjpeg" />
<mimeMap fileExtension=".jpb" mimeType="application/octet-stream" />
<mimeMap fileExtension=".jpe" mimeType="image/jpeg" />
<mimeMap fileExtension=".jpeg" mimeType="image/jpeg" />
<mimeMap fileExtension=".jpg" mimeType="image/jpeg" />
<mimeMap fileExtension=".js" mimeType="application/javascript" />
<mimeMap fileExtension=".json" mimeType="application/json" />
<mimeMap fileExtension=".jsonld" mimeType="application/ld+json" />
<mimeMap fileExtension=".jsx" mimeType="text/jscript" />
<mimeMap fileExtension=".latex" mimeType="application/x-latex" />
<mimeMap fileExtension=".less" mimeType="text/css" />
<mimeMap fileExtension=".lit" mimeType="application/x-ms-reader" />
<mimeMap fileExtension=".lpk" mimeType="application/octet-stream" />
<mimeMap fileExtension=".lsf" mimeType="video/x-la-asf" />
<mimeMap fileExtension=".lsx" mimeType="video/x-la-asf" />
<mimeMap fileExtension=".lzh" mimeType="application/octet-stream" />
<mimeMap fileExtension=".m13" mimeType="application/x-msmediaview" />
<mimeMap fileExtension=".m14" mimeType="application/x-msmediaview" />
<mimeMap fileExtension=".m1v" mimeType="video/mpeg" />
<mimeMap fileExtension=".m2ts" mimeType="video/vnd.dlna.mpeg-tts" />
<mimeMap fileExtension=".m3u" mimeType="audio/x-mpegurl" />
<mimeMap fileExtension=".m4a" mimeType="audio/mp4" />
<mimeMap fileExtension=".m4v" mimeType="video/mp4" />
<mimeMap fileExtension=".man" mimeType="application/x-troff-man" />
<mimeMap fileExtension=".manifest" mimeType="application/x-ms-manifest" />
<mimeMap fileExtension=".map" mimeType="text/plain" />
<mimeMap fileExtension=".mdb" mimeType="application/x-msaccess" />
<mimeMap fileExtension=".mdp" mimeType="application/octet-stream" />
<mimeMap fileExtension=".me" mimeType="application/x-troff-me" />
<mimeMap fileExtension=".mht" mimeType="message/rfc822" />
<mimeMap fileExtension=".mhtml" mimeType="message/rfc822" />
<mimeMap fileExtension=".mid" mimeType="audio/mid" />
<mimeMap fileExtension=".midi" mimeType="audio/mid" />
<mimeMap fileExtension=".mix" mimeType="application/octet-stream" />
<mimeMap fileExtension=".mmf" mimeType="application/x-smaf" />
<mimeMap fileExtension=".mno" mimeType="text/xml" />
<mimeMap fileExtension=".mny" mimeType="application/x-msmoney" />
<mimeMap fileExtension=".mov" mimeType="video/quicktime" />
<mimeMap fileExtension=".movie" mimeType="video/x-sgi-movie" />
<mimeMap fileExtension=".mp2" mimeType="video/mpeg" />
<mimeMap fileExtension=".mp3" mimeType="audio/mpeg" />
<mimeMap fileExtension=".mp4" mimeType="video/mp4" />
<mimeMap fileExtension=".mp4v" mimeType="video/mp4" />
<mimeMap fileExtension=".mpa" mimeType="video/mpeg" />
<mimeMap fileExtension=".mpe" mimeType="video/mpeg" />
<mimeMap fileExtension=".mpeg" mimeType="video/mpeg" />
<mimeMap fileExtension=".mpg" mimeType="video/mpeg" />
<mimeMap fileExtension=".mpp" mimeType="application/vnd.ms-project" />
<mimeMap fileExtension=".mpv2" mimeType="video/mpeg" />
<mimeMap fileExtension=".ms" mimeType="application/x-troff-ms" />
<mimeMap fileExtension=".msi" mimeType="application/octet-stream" />
<mimeMap fileExtension=".mso" mimeType="application/octet-stream" />
<mimeMap fileExtension=".mvb" mimeType="application/x-msmediaview" />
<mimeMap fileExtension=".mvc" mimeType="application/x-miva-compiled" />
<mimeMap fileExtension=".nc" mimeType="application/x-netcdf" />
<mimeMap fileExtension=".nsc" mimeType="video/x-ms-asf" />
<mimeMap fileExtension=".nws" mimeType="message/rfc822" />
<mimeMap fileExtension=".ocx" mimeType="application/octet-stream" />
<mimeMap fileExtension=".oda" mimeType="application/oda" />
<mimeMap fileExtension=".odc" mimeType="text/x-ms-odc" />
<mimeMap fileExtension=".ods" mimeType="application/oleobject" />
<mimeMap fileExtension=".oga" mimeType="audio/ogg" />
<mimeMap fileExtension=".ogg" mimeType="video/ogg" />
<mimeMap fileExtension=".ogv" mimeType="video/ogg" />
<mimeMap fileExtension=".one" mimeType="application/onenote" />
<mimeMap fileExtension=".onea" mimeType="application/onenote" />
<mimeMap fileExtension=".onetoc" mimeType="application/onenote" />
<mimeMap fileExtension=".onetoc2" mimeType="application/onenote" />
<mimeMap fileExtension=".onetmp" mimeType="application/onenote" />
<mimeMap fileExtension=".onepkg" mimeType="application/onenote" />
<mimeMap fileExtension=".osdx" mimeType="application/opensearchdescription+xml" />
<mimeMap fileExtension=".otf" mimeType="font/otf" />
<mimeMap fileExtension=".p10" mimeType="application/pkcs10" />
<mimeMap fileExtension=".p12" mimeType="application/x-pkcs12" />
<mimeMap fileExtension=".p7b" mimeType="application/x-pkcs7-certificates" />
<mimeMap fileExtension=".p7c" mimeType="application/pkcs7-mime" />
<mimeMap fileExtension=".p7m" mimeType="application/pkcs7-mime" />
<mimeMap fileExtension=".p7r" mimeType="application/x-pkcs7-certreqresp" />
<mimeMap fileExtension=".p7s" mimeType="application/pkcs7-signature" />
<mimeMap fileExtension=".pbm" mimeType="image/x-portable-bitmap" />
<mimeMap fileExtension=".pcx" mimeType="application/octet-stream" />
<mimeMap fileExtension=".pcz" mimeType="application/octet-stream" />
<mimeMap fileExtension=".pdf" mimeType="application/pdf" />
<mimeMap fileExtension=".pfb" mimeType="application/octet-stream" />
<mimeMap fileExtension=".pfm" mimeType="application/octet-stream" />
<mimeMap fileExtension=".pfx" mimeType="application/x-pkcs12" />
<mimeMap fileExtension=".pgm" mimeType="image/x-portable-graymap" />
<mimeMap fileExtension=".pko" mimeType="application/vnd.ms-pki.pko" />
<mimeMap fileExtension=".pma" mimeType="application/x-perfmon" />
<mimeMap fileExtension=".pmc" mimeType="application/x-perfmon" />
<mimeMap fileExtension=".pml" mimeType="application/x-perfmon" />
<mimeMap fileExtension=".pmr" mimeType="application/x-perfmon" />
<mimeMap fileExtension=".pmw" mimeType="application/x-perfmon" />
<mimeMap fileExtension=".png" mimeType="image/png" />
<mimeMap fileExtension=".pnm" mimeType="image/x-portable-anymap" />
<mimeMap fileExtension=".pnz" mimeType="image/png" />
<mimeMap fileExtension=".pot" mimeType="application/vnd.ms-powerpoint" />
<mimeMap fileExtension=".potm" mimeType="application/vnd.ms-powerpoint.template.macroEnabled.12" />
<mimeMap fileExtension=".potx" mimeType="application/vnd.openxmlformats-officedocument.presentationml.template" />
<mimeMap fileExtension=".ppam" mimeType="application/vnd.ms-powerpoint.addin.macroEnabled.12" />
<mimeMap fileExtension=".ppm" mimeType="image/x-portable-pixmap" />
<mimeMap fileExtension=".pps" mimeType="application/vnd.ms-powerpoint" />
<mimeMap fileExtension=".ppsm" mimeType="application/vnd.ms-powerpoint.slideshow.macroEnabled.12" />
<mimeMap fileExtension=".ppsx" mimeType="application/vnd.openxmlformats-officedocument.presentationml.slideshow" />
<mimeMap fileExtension=".ppt" mimeType="application/vnd.ms-powerpoint" />
<mimeMap fileExtension=".pptm" mimeType="application/vnd.ms-powerpoint.presentation.macroEnabled.12" />
<mimeMap fileExtension=".pptx" mimeType="application/vnd.openxmlformats-officedocument.presentationml.presentation" />
<mimeMap fileExtension=".prf" mimeType="application/pics-rules" />
<mimeMap fileExtension=".prm" mimeType="application/octet-stream" />
<mimeMap fileExtension=".prx" mimeType="application/octet-stream" />
<mimeMap fileExtension=".ps" mimeType="application/postscript" />
<mimeMap fileExtension=".psd" mimeType="application/octet-stream" />
<mimeMap fileExtension=".psm" mimeType="application/octet-stream" />
<mimeMap fileExtension=".psp" mimeType="application/octet-stream" />
<mimeMap fileExtension=".pub" mimeType="application/x-mspublisher" />
<mimeMap fileExtension=".qt" mimeType="video/quicktime" />
<mimeMap fileExtension=".qtl" mimeType="application/x-quicktimeplayer" />
<mimeMap fileExtension=".qxd" mimeType="application/octet-stream" />
<mimeMap fileExtension=".ra" mimeType="audio/x-pn-realaudio" />
<mimeMap fileExtension=".ram" mimeType="audio/x-pn-realaudio" />
<mimeMap fileExtension=".rar" mimeType="application/octet-stream" />
<mimeMap fileExtension=".ras" mimeType="image/x-cmu-raster" />
<mimeMap fileExtension=".rf" mimeType="image/vnd.rn-realflash" />
<mimeMap fileExtension=".rgb" mimeType="image/x-rgb" />
<mimeMap fileExtension=".rm" mimeType="application/vnd.rn-realmedia" />
<mimeMap fileExtension=".rmi" mimeType="audio/mid" />
<mimeMap fileExtension=".roff" mimeType="application/x-troff" />
<mimeMap fileExtension=".rpm" mimeType="audio/x-pn-realaudio-plugin" />
<mimeMap fileExtension=".rtf" mimeType="application/rtf" />
<mimeMap fileExtension=".rtx" mimeType="text/richtext" />
<mimeMap fileExtension=".scd" mimeType="application/x-msschedule" />
<mimeMap fileExtension=".sct" mimeType="text/scriptlet" />
<mimeMap fileExtension=".sea" mimeType="application/octet-stream" />
<mimeMap fileExtension=".setpay" mimeType="application/set-payment-initiation" />
<mimeMap fileExtension=".setreg" mimeType="application/set-registration-initiation" />
<mimeMap fileExtension=".sgml" mimeType="text/sgml" />
<mimeMap fileExtension=".sh" mimeType="application/x-sh" />
<mimeMap fileExtension=".shar" mimeType="application/x-shar" />
<mimeMap fileExtension=".sit" mimeType="application/x-stuffit" />
<mimeMap fileExtension=".sldm" mimeType="application/vnd.ms-powerpoint.slide.macroEnabled.12" />
<mimeMap fileExtension=".sldx" mimeType="application/vnd.openxmlformats-officedocument.presentationml.slide" />
<mimeMap fileExtension=".smd" mimeType="audio/x-smd" />
<mimeMap fileExtension=".smi" mimeType="application/octet-stream" />
<mimeMap fileExtension=".smx" mimeType="audio/x-smd" />
<mimeMap fileExtension=".smz" mimeType="audio/x-smd" />
<mimeMap fileExtension=".snd" mimeType="audio/basic" />
<mimeMap fileExtension=".snp" mimeType="application/octet-stream" />
<mimeMap fileExtension=".spc" mimeType="application/x-pkcs7-certificates" />
<mimeMap fileExtension=".spl" mimeType="application/futuresplash" />
<mimeMap fileExtension=".spx" mimeType="audio/ogg" />
<mimeMap fileExtension=".src" mimeType="application/x-wais-source" />
<mimeMap fileExtension=".ssm" mimeType="application/streamingmedia" />
<mimeMap fileExtension=".sst" mimeType="application/vnd.ms-pki.certstore" />
<mimeMap fileExtension=".stl" mimeType="application/vnd.ms-pki.stl" />
<mimeMap fileExtension=".sv4cpio" mimeType="application/x-sv4cpio" />
<mimeMap fileExtension=".sv4crc" mimeType="application/x-sv4crc" />
<mimeMap fileExtension=".svg" mimeType="image/svg+xml" />
<mimeMap fileExtension=".svgz" mimeType="image/svg+xml" />
<mimeMap fileExtension=".swf" mimeType="application/x-shockwave-flash" />
<mimeMap fileExtension=".t" mimeType="application/x-troff" />
<mimeMap fileExtension=".tar" mimeType="application/x-tar" />
<mimeMap fileExtension=".tcl" mimeType="application/x-tcl" />
<mimeMap fileExtension=".tex" mimeType="application/x-tex" />
<mimeMap fileExtension=".texi" mimeType="application/x-texinfo" />
<mimeMap fileExtension=".texinfo" mimeType="application/x-texinfo" />
<mimeMap fileExtension=".tgz" mimeType="application/x-compressed" />
<mimeMap fileExtension=".thmx" mimeType="application/vnd.ms-officetheme" />
<mimeMap fileExtension=".thn" mimeType="application/octet-stream" />
<mimeMap fileExtension=".tif" mimeType="image/tiff" />
<mimeMap fileExtension=".tiff" mimeType="image/tiff" />
<mimeMap fileExtension=".toc" mimeType="application/octet-stream" />
<mimeMap fileExtension=".tr" mimeType="application/x-troff" />
<mimeMap fileExtension=".trm" mimeType="application/x-msterminal" />
<mimeMap fileExtension=".ts" mimeType="video/vnd.dlna.mpeg-tts" />
<mimeMap fileExtension=".tsv" mimeType="text/tab-separated-values" />
<mimeMap fileExtension=".ttf" mimeType="application/octet-stream" />
<mimeMap fileExtension=".tts" mimeType="video/vnd.dlna.mpeg-tts" />
<mimeMap fileExtension=".txt" mimeType="text/plain" />
<mimeMap fileExtension=".u32" mimeType="application/octet-stream" />
<mimeMap fileExtension=".uls" mimeType="text/iuls" />
<mimeMap fileExtension=".ustar" mimeType="application/x-ustar" />
<mimeMap fileExtension=".vbs" mimeType="text/vbscript" />
<mimeMap fileExtension=".vcf" mimeType="text/x-vcard" />
<mimeMap fileExtension=".vcs" mimeType="text/plain" />
<mimeMap fileExtension=".vdx" mimeType="application/vnd.ms-visio.viewer" />
<mimeMap fileExtension=".vml" mimeType="text/xml" />
<mimeMap fileExtension=".vsd" mimeType="application/vnd.visio" />
<mimeMap fileExtension=".vss" mimeType="application/vnd.visio" />
<mimeMap fileExtension=".vst" mimeType="application/vnd.visio" />
<mimeMap fileExtension=".vsto" mimeType="application/x-ms-vsto" />
<mimeMap fileExtension=".vsw" mimeType="application/vnd.visio" />
<mimeMap fileExtension=".vsx" mimeType="application/vnd.visio" />
<mimeMap fileExtension=".vtx" mimeType="application/vnd.visio" />
<mimeMap fileExtension=".wasm" mimeType="application/wasm" />
<mimeMap fileExtension=".wav" mimeType="audio/wav" />
<mimeMap fileExtension=".wax" mimeType="audio/x-ms-wax" />
<mimeMap fileExtension=".wbmp" mimeType="image/vnd.wap.wbmp" />
<mimeMap fileExtension=".wcm" mimeType="application/vnd.ms-works" />
<mimeMap fileExtension=".wdb" mimeType="application/vnd.ms-works" />
<mimeMap fileExtension=".webm" mimeType="video/webm" />
<mimeMap fileExtension=".wks" mimeType="application/vnd.ms-works" />
<mimeMap fileExtension=".wm" mimeType="video/x-ms-wm" />
<mimeMap fileExtension=".wma" mimeType="audio/x-ms-wma" />
<mimeMap fileExtension=".wmd" mimeType="application/x-ms-wmd" />
<mimeMap fileExtension=".wmf" mimeType="application/x-msmetafile" />
<mimeMap fileExtension=".wml" mimeType="text/vnd.wap.wml" />
<mimeMap fileExtension=".wmlc" mimeType="application/vnd.wap.wmlc" />
<mimeMap fileExtension=".wmls" mimeType="text/vnd.wap.wmlscript" />
<mimeMap fileExtension=".wmlsc" mimeType="application/vnd.wap.wmlscriptc" />
<mimeMap fileExtension=".wmp" mimeType="video/x-ms-wmp" />
<mimeMap fileExtension=".wmv" mimeType="video/x-ms-wmv" />
<mimeMap fileExtension=".wmx" mimeType="video/x-ms-wmx" />
<mimeMap fileExtension=".wmz" mimeType="application/x-ms-wmz" />
<mimeMap fileExtension=".woff" mimeType="font/x-woff" />
<mimeMap fileExtension=".woff2" mimeType="application/font-woff2" />
<mimeMap fileExtension=".wps" mimeType="application/vnd.ms-works" />
<mimeMap fileExtension=".wri" mimeType="application/x-mswrite" />
<mimeMap fileExtension=".wrl" mimeType="x-world/x-vrml" />
<mimeMap fileExtension=".wrz" mimeType="x-world/x-vrml" />
<mimeMap fileExtension=".wsdl" mimeType="text/xml" />
<mimeMap fileExtension=".wtv" mimeType="video/x-ms-wtv" />
<mimeMap fileExtension=".wvx" mimeType="video/x-ms-wvx" />
<mimeMap fileExtension=".x" mimeType="application/directx" />
<mimeMap fileExtension=".xaf" mimeType="x-world/x-vrml" />
<mimeMap fileExtension=".xaml" mimeType="application/xaml+xml" />
<mimeMap fileExtension=".xap" mimeType="application/x-silverlight-app" />
<mimeMap fileExtension=".xbap" mimeType="application/x-ms-xbap" />
<mimeMap fileExtension=".xbm" mimeType="image/x-xbitmap" />
<mimeMap fileExtension=".xdr" mimeType="text/plain" />
<mimeMap fileExtension=".xht" mimeType="application/xhtml+xml" />
<mimeMap fileExtension=".xhtml" mimeType="application/xhtml+xml" />
<mimeMap fileExtension=".xla" mimeType="application/vnd.ms-excel" />
<mimeMap fileExtension=".xlam" mimeType="application/vnd.ms-excel.addin.macroEnabled.12" />
<mimeMap fileExtension=".xlc" mimeType="application/vnd.ms-excel" />
<mimeMap fileExtension=".xlm" mimeType="application/vnd.ms-excel" />
<mimeMap fileExtension=".xls" mimeType="application/vnd.ms-excel" />
<mimeMap fileExtension=".xlsb" mimeType="application/vnd.ms-excel.sheet.binary.macroEnabled.12" />
<mimeMap fileExtension=".xlsm" mimeType="application/vnd.ms-excel.sheet.macroEnabled.12" />
<mimeMap fileExtension=".xlsx" mimeType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" />
<mimeMap fileExtension=".xlt" mimeType="application/vnd.ms-excel" />
<mimeMap fileExtension=".xltm" mimeType="application/vnd.ms-excel.template.macroEnabled.12" />
<mimeMap fileExtension=".xltx" mimeType="application/vnd.openxmlformats-officedocument.spreadsheetml.template" />
<mimeMap fileExtension=".xlw" mimeType="application/vnd.ms-excel" />
<mimeMap fileExtension=".xml" mimeType="text/xml" />
<mimeMap fileExtension=".xof" mimeType="x-world/x-vrml" />
<mimeMap fileExtension=".xpm" mimeType="image/x-xpixmap" />
<mimeMap fileExtension=".xps" mimeType="application/vnd.ms-xpsdocument" />
<mimeMap fileExtension=".xsd" mimeType="text/xml" />
<mimeMap fileExtension=".xsf" mimeType="text/xml" />
<mimeMap fileExtension=".xsl" mimeType="text/xml" />
<mimeMap fileExtension=".xslt" mimeType="text/xml" />
<mimeMap fileExtension=".xsn" mimeType="application/octet-stream" />
<mimeMap fileExtension=".xtp" mimeType="application/octet-stream" />
<mimeMap fileExtension=".xwd" mimeType="image/x-xwindowdump" />
<mimeMap fileExtension=".z" mimeType="application/x-compress" />
<mimeMap fileExtension=".zip" mimeType="application/x-zip-compressed" />
</staticContent>
<tracing>
<traceFailedRequests>
<add path="*">
<traceAreas>
<add provider="ASP" verbosity="Verbose" />
<add provider="ASPNET" areas="Infrastructure,Module,Page,AppServices" verbosity="Verbose" />
<add provider="ISAPI Extension" verbosity="Verbose" />
<add provider="WWW Server" areas="Authentication,Security,Filter,StaticFile,CGI,Compression,Cache,RequestNotifications,Module,Rewrite,WebSocket" verbosity="Verbose" />
</traceAreas>
<failureDefinitions statusCodes="200-999" />
</add>
</traceFailedRequests>
<traceProviderDefinitions>
<add name="WWW Server" guid="{3a2a4e84-4c21-4981-ae10-3fda0d9b0f83}">
<areas>
<clear />
<add name="Authentication" value="2" />
<add name="Security" value="4" />
<add name="Filter" value="8" />
<add name="StaticFile" value="16" />
<add name="CGI" value="32" />
<add name="Compression" value="64" />
<add name="Cache" value="128" />
<add name="RequestNotifications" value="256" />
<add name="Module" value="512" />
<add name="Rewrite" value="1024" />
<add name="FastCGI" value="4096" />
<add name="WebSocket" value="16384" />
<add name="ANCM" value="65536" />
</areas>
</add>
<add name="ASP" guid="{06b94d9a-b15e-456e-a4ef-37c984a2cb4b}">
<areas>
<clear />
</areas>
</add>
<add name="ISAPI Extension" guid="{a1c2040e-8840-4c31-ba11-9871031a19ea}">
<areas>
<clear />
</areas>
</add>
<add name="ASPNET" guid="{AFF081FE-0247-4275-9C4E-021F3DC1DA35}">
<areas>
<add name="Infrastructure" value="1" />
<add name="Module" value="2" />
<add name="Page" value="4" />
<add name="AppServices" value="8" />
</areas>
</add>
</traceProviderDefinitions>
</tracing>
<urlCompression />
<validation />
<webdav>
<globalSettings>
<propertyStores>
<add name="webdav_simple_prop" image="%IIS_BIN%\webdav_simple_prop.dll" image32="%IIS_BIN%\webdav_simple_prop.dll" />
</propertyStores>
<lockStores>
<add name="webdav_simple_lock" image="%IIS_BIN%\webdav_simple_lock.dll" image32="%IIS_BIN%\webdav_simple_lock.dll" />
</lockStores>
</globalSettings>
<authoring>
<locks enabled="true" lockStore="webdav_simple_lock" />
</authoring>
<authoringRules />
</webdav>
<webSocket />
<applicationInitialization />
</system.webServer>
<location path="" overrideMode="Allow">
<system.webServer>
<modules>
<add name="IsapiFilterModule" lockItem="true" />
<add name="BasicAuthenticationModule" lockItem="true" />
<add name="IsapiModule" lockItem="true" />
<add name="HttpLoggingModule" lockItem="true" />
<add name="DynamicCompressionModule" lockItem="true" />
<add name="StaticCompressionModule" lockItem="true" />
<add name="DefaultDocumentModule" lockItem="true" />
<add name="DirectoryListingModule" lockItem="true" />
<add name="ProtocolSupportModule" lockItem="true" />
<add name="HttpRedirectionModule" lockItem="true" />
<add name="ServerSideIncludeModule" lockItem="true" />
<add name="StaticFileModule" lockItem="true" />
<add name="AnonymousAuthenticationModule" lockItem="true" />
<add name="CertificateMappingAuthenticationModule" lockItem="true" />
<add name="UrlAuthorizationModule" lockItem="true" />
<add name="WindowsAuthenticationModule" lockItem="true" />
<add name="IISCertificateMappingAuthenticationModule" lockItem="true" />
<add name="WebMatrixSupportModule" lockItem="true" />
<add name="IpRestrictionModule" lockItem="true" />
<add name="DynamicIpRestrictionModule" lockItem="true" />
<add name="RequestFilteringModule" lockItem="true" />
<add name="CustomLoggingModule" lockItem="true" />
<add name="CustomErrorModule" lockItem="true" />
<add name="FailedRequestsTracingModule" lockItem="true" />
<add name="CgiModule" lockItem="true" />
<add name="FastCgiModule" lockItem="true" />
<!-- <add name="WebDAVModule" /> -->
<add name="RewriteModule" />
<add name="OutputCache" type="System.Web.Caching.OutputCacheModule" preCondition="managedHandler" />
<add name="Session" type="System.Web.SessionState.SessionStateModule" preCondition="managedHandler" />
<add name="WindowsAuthentication" type="System.Web.Security.WindowsAuthenticationModule" preCondition="managedHandler" />
<add name="FormsAuthentication" type="System.Web.Security.FormsAuthenticationModule" preCondition="managedHandler" />
<add name="DefaultAuthentication" type="System.Web.Security.DefaultAuthenticationModule" preCondition="managedHandler" />
<add name="RoleManager" type="System.Web.Security.RoleManagerModule" preCondition="managedHandler" />
<add name="UrlAuthorization" type="System.Web.Security.UrlAuthorizationModule" preCondition="managedHandler" />
<add name="FileAuthorization" type="System.Web.Security.FileAuthorizationModule" preCondition="managedHandler" />
<add name="AnonymousIdentification" type="System.Web.Security.AnonymousIdentificationModule" preCondition="managedHandler" />
<add name="Profile" type="System.Web.Profile.ProfileModule" preCondition="managedHandler" />
<add name="UrlMappingsModule" type="System.Web.UrlMappingsModule" preCondition="managedHandler" />
<add name="ApplicationInitializationModule" lockItem="true" />
<add name="WebSocketModule" lockItem="true" />
<add name="ServiceModel-4.0" type="System.ServiceModel.Activation.ServiceHttpModule,System.ServiceModel.Activation,Version=4.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35" preCondition="managedHandler,runtimeVersionv4.0" />
<add name="ConfigurationValidationModule" lockItem="true" />
<add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="managedHandler,runtimeVersionv4.0" />
<add name="ScriptModule-4.0" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="managedHandler,runtimeVersionv4.0" />
<add name="ServiceModel" type="System.ServiceModel.Activation.HttpModule, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" preCondition="managedHandler,runtimeVersionv2.0" />
<add name="AspNetCoreModule" lockItem="true" />
<add name="AspNetCoreModuleV2" lockItem="true" />
</modules>
<handlers accessPolicy="Read, Script">
<!-- <add name="WebDAV" path="*" verb="PROPFIND,PROPPATCH,MKCOL,PUT,COPY,DELETE,MOVE,LOCK,UNLOCK" modules="WebDAVModule" resourceType="Unspecified" requireAccess="None" /> -->
<add name="AXD-ISAPI-4.0_64bit" path="*.axd" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
<add name="PageHandlerFactory-ISAPI-4.0_64bit" path="*.aspx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
<add name="SimpleHandlerFactory-ISAPI-4.0_64bit" path="*.ashx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
<add name="WebServiceHandlerFactory-ISAPI-4.0_64bit" path="*.asmx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
<add name="HttpRemotingHandlerFactory-rem-ISAPI-4.0_64bit" path="*.rem" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
<add name="HttpRemotingHandlerFactory-soap-ISAPI-4.0_64bit" path="*.soap" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
<add name="svc-ISAPI-4.0_64bit" path="*.svc" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" />
<add name="rules-ISAPI-4.0_64bit" path="*.rules" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" />
<add name="xoml-ISAPI-4.0_64bit" path="*.xoml" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" />
<add name="xamlx-ISAPI-4.0_64bit" path="*.xamlx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" />
<add name="aspq-ISAPI-4.0_64bit" path="*.aspq" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
<add name="cshtm-ISAPI-4.0_64bit" path="*.cshtm" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
<add name="cshtml-ISAPI-4.0_64bit" path="*.cshtml" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
<add name="vbhtm-ISAPI-4.0_64bit" path="*.vbhtm" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
<add name="vbhtml-ISAPI-4.0_64bit" path="*.vbhtml" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
<add name="svc-Integrated" path="*.svc" verb="*" type="System.ServiceModel.Activation.HttpHandler, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" preCondition="integratedMode,runtimeVersionv2.0" />
<add name="svc-ISAPI-2.0" path="*.svc" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" />
<add name="xoml-Integrated" path="*.xoml" verb="*" type="System.ServiceModel.Activation.HttpHandler, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" preCondition="integratedMode,runtimeVersionv2.0" />
<add name="xoml-ISAPI-2.0" path="*.xoml" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" />
<add name="rules-Integrated" path="*.rules" verb="*" type="System.ServiceModel.Activation.HttpHandler, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" preCondition="integratedMode,runtimeVersionv2.0" />
<add name="rules-ISAPI-2.0" path="*.rules" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" />
<add name="AXD-ISAPI-4.0_32bit" path="*.axd" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
<add name="PageHandlerFactory-ISAPI-4.0_32bit" path="*.aspx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
<add name="SimpleHandlerFactory-ISAPI-4.0_32bit" path="*.ashx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
<add name="WebServiceHandlerFactory-ISAPI-4.0_32bit" path="*.asmx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
<add name="HttpRemotingHandlerFactory-rem-ISAPI-4.0_32bit" path="*.rem" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
<add name="HttpRemotingHandlerFactory-soap-ISAPI-4.0_32bit" path="*.soap" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
<add name="svc-ISAPI-4.0_32bit" path="*.svc" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" />
<add name="rules-ISAPI-4.0_32bit" path="*.rules" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" />
<add name="xoml-ISAPI-4.0_32bit" path="*.xoml" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" />
<add name="xamlx-ISAPI-4.0_32bit" path="*.xamlx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" />
<add name="aspq-ISAPI-4.0_32bit" path="*.aspq" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
<add name="cshtm-ISAPI-4.0_32bit" path="*.cshtm" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
<add name="cshtml-ISAPI-4.0_32bit" path="*.cshtml" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
<add name="vbhtm-ISAPI-4.0_32bit" path="*.vbhtm" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
<add name="vbhtml-ISAPI-4.0_32bit" path="*.vbhtml" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
<add name="TraceHandler-Integrated-4.0" path="trace.axd" verb="GET,HEAD,POST,DEBUG" type="System.Web.Handlers.TraceHandler" preCondition="integratedMode,runtimeVersionv4.0" />
<add name="WebAdminHandler-Integrated-4.0" path="WebAdmin.axd" verb="GET,DEBUG" type="System.Web.Handlers.WebAdminHandler" preCondition="integratedMode,runtimeVersionv4.0" />
<add name="AssemblyResourceLoader-Integrated-4.0" path="WebResource.axd" verb="GET,DEBUG" type="System.Web.Handlers.AssemblyResourceLoader" preCondition="integratedMode,runtimeVersionv4.0" />
<add name="PageHandlerFactory-Integrated-4.0" path="*.aspx" verb="GET,HEAD,POST,DEBUG" type="System.Web.UI.PageHandlerFactory" preCondition="integratedMode,runtimeVersionv4.0" />
<add name="SimpleHandlerFactory-Integrated-4.0" path="*.ashx" verb="GET,HEAD,POST,DEBUG" type="System.Web.UI.SimpleHandlerFactory" preCondition="integratedMode,runtimeVersionv4.0" />
<add name="WebServiceHandlerFactory-Integrated-4.0" path="*.asmx" verb="GET,HEAD,POST,DEBUG" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="integratedMode,runtimeVersionv4.0" />
<add name="HttpRemotingHandlerFactory-rem-Integrated-4.0" path="*.rem" verb="GET,HEAD,POST,DEBUG" type="System.Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory, System.Runtime.Remoting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" preCondition="integratedMode,runtimeVersionv4.0" />
<add name="HttpRemotingHandlerFactory-soap-Integrated-4.0" path="*.soap" verb="GET,HEAD,POST,DEBUG" type="System.Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory, System.Runtime.Remoting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" preCondition="integratedMode,runtimeVersionv4.0" />
<add name="svc-Integrated-4.0" path="*.svc" verb="*" type="System.ServiceModel.Activation.ServiceHttpHandlerFactory, System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="integratedMode,runtimeVersionv4.0" />
<add name="rules-Integrated-4.0" path="*.rules" verb="*" type="System.ServiceModel.Activation.ServiceHttpHandlerFactory, System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="integratedMode,runtimeVersionv4.0" />
<add name="xoml-Integrated-4.0" path="*.xoml" verb="*" type="System.ServiceModel.Activation.ServiceHttpHandlerFactory, System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="integratedMode,runtimeVersionv4.0" />
<add name="xamlx-Integrated-4.0" path="*.xamlx" verb="GET,HEAD,POST,DEBUG" type="System.Xaml.Hosting.XamlHttpHandlerFactory, System.Xaml.Hosting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="integratedMode,runtimeVersionv4.0" />
<add name="aspq-Integrated-4.0" path="*.aspq" verb="GET,HEAD,POST,DEBUG" type="System.Web.HttpForbiddenHandler" preCondition="integratedMode,runtimeVersionv4.0" />
<add name="cshtm-Integrated-4.0" path="*.cshtm" verb="GET,HEAD,POST,DEBUG" type="System.Web.HttpForbiddenHandler" preCondition="integratedMode,runtimeVersionv4.0" />
<add name="cshtml-Integrated-4.0" path="*.cshtml" verb="GET,HEAD,POST,DEBUG" type="System.Web.HttpForbiddenHandler" preCondition="integratedMode,runtimeVersionv4.0" />
<add name="vbhtm-Integrated-4.0" path="*.vbhtm" verb="GET,HEAD,POST,DEBUG" type="System.Web.HttpForbiddenHandler" preCondition="integratedMode,runtimeVersionv4.0" />
<add name="vbhtml-Integrated-4.0" path="*.vbhtml" verb="GET,HEAD,POST,DEBUG" type="System.Web.HttpForbiddenHandler" preCondition="integratedMode,runtimeVersionv4.0" />
<add name="ScriptHandlerFactoryAppServices-Integrated-4.0" path="*_AppService.axd" verb="*" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" preCondition="integratedMode,runtimeVersionv4.0" />
<add name="ScriptResourceIntegrated-4.0" path="*ScriptResource.axd" verb="GET,HEAD" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" preCondition="integratedMode,runtimeVersionv4.0" />
<add name="ASPClassic" path="*.asp" verb="GET,HEAD,POST" modules="IsapiModule" scriptProcessor="%IIS_BIN%\asp.dll" resourceType="File" />
<add name="SecurityCertificate" path="*.cer" verb="GET,HEAD,POST" modules="IsapiModule" scriptProcessor="%IIS_BIN%\asp.dll" resourceType="File" />
<add name="ISAPI-dll" path="*.dll" verb="*" modules="IsapiModule" resourceType="File" requireAccess="Execute" allowPathInfo="true" />
<add name="TraceHandler-Integrated" path="trace.axd" verb="GET,HEAD,POST,DEBUG" type="System.Web.Handlers.TraceHandler" preCondition="integratedMode,runtimeVersionv2.0" />
<add name="WebAdminHandler-Integrated" path="WebAdmin.axd" verb="GET,DEBUG" type="System.Web.Handlers.WebAdminHandler" preCondition="integratedMode,runtimeVersionv2.0" />
<add name="AssemblyResourceLoader-Integrated" path="WebResource.axd" verb="GET,DEBUG" type="System.Web.Handlers.AssemblyResourceLoader" preCondition="integratedMode,runtimeVersionv2.0" />
<add name="PageHandlerFactory-Integrated" path="*.aspx" verb="GET,HEAD,POST,DEBUG" type="System.Web.UI.PageHandlerFactory" preCondition="integratedMode,runtimeVersionv2.0" />
<add name="SimpleHandlerFactory-Integrated" path="*.ashx" verb="GET,HEAD,POST,DEBUG" type="System.Web.UI.SimpleHandlerFactory" preCondition="integratedMode,runtimeVersionv2.0" />
<add name="WebServiceHandlerFactory-Integrated" path="*.asmx" verb="GET,HEAD,POST,DEBUG" type="System.Web.Services.Protocols.WebServiceHandlerFactory,System.Web.Services,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a" preCondition="integratedMode,runtimeVersionv2.0" />
<add name="HttpRemotingHandlerFactory-rem-Integrated" path="*.rem" verb="GET,HEAD,POST,DEBUG" type="System.Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory,System.Runtime.Remoting,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089" preCondition="integratedMode,runtimeVersionv2.0" />
<add name="HttpRemotingHandlerFactory-soap-Integrated" path="*.soap" verb="GET,HEAD,POST,DEBUG" type="System.Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory,System.Runtime.Remoting,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089" preCondition="integratedMode,runtimeVersionv2.0" />
<add name="AXD-ISAPI-2.0" path="*.axd" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" responseBufferLimit="0" />
<add name="PageHandlerFactory-ISAPI-2.0" path="*.aspx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" responseBufferLimit="0" />
<add name="SimpleHandlerFactory-ISAPI-2.0" path="*.ashx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" responseBufferLimit="0" />
<add name="WebServiceHandlerFactory-ISAPI-2.0" path="*.asmx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" responseBufferLimit="0" />
<add name="HttpRemotingHandlerFactory-rem-ISAPI-2.0" path="*.rem" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" responseBufferLimit="0" />
<add name="HttpRemotingHandlerFactory-soap-ISAPI-2.0" path="*.soap" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" responseBufferLimit="0" />
<add name="svc-ISAPI-2.0-64" path="*.svc" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness64" />
<add name="AXD-ISAPI-2.0-64" path="*.axd" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness64" responseBufferLimit="0" />
<add name="PageHandlerFactory-ISAPI-2.0-64" path="*.aspx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness64" responseBufferLimit="0" />
<add name="SimpleHandlerFactory-ISAPI-2.0-64" path="*.ashx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness64" responseBufferLimit="0" />
<add name="WebServiceHandlerFactory-ISAPI-2.0-64" path="*.asmx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness64" responseBufferLimit="0" />
<add name="HttpRemotingHandlerFactory-rem-ISAPI-2.0-64" path="*.rem" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness64" responseBufferLimit="0" />
<add name="HttpRemotingHandlerFactory-soap-ISAPI-2.0-64" path="*.soap" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness64" responseBufferLimit="0" />
<add name="rules-64-ISAPI-2.0" path="*.rules" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness64" />
<add name="xoml-64-ISAPI-2.0" path="*.xoml" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness64" />
<add name="CGI-exe" path="*.exe" verb="*" modules="CgiModule" resourceType="File" requireAccess="Execute" allowPathInfo="true" />
<add name="SSINC-stm" path="*.stm" verb="GET,HEAD,POST" modules="ServerSideIncludeModule" resourceType="File" />
<add name="SSINC-shtm" path="*.shtm" verb="GET,HEAD,POST" modules="ServerSideIncludeModule" resourceType="File" />
<add name="SSINC-shtml" path="*.shtml" verb="GET,HEAD,POST" modules="ServerSideIncludeModule" resourceType="File" />
<add name="TRACEVerbHandler" path="*" verb="TRACE" modules="ProtocolSupportModule" requireAccess="None" />
<add name="OPTIONSVerbHandler" path="*" verb="OPTIONS" modules="ProtocolSupportModule" requireAccess="None" />
<add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
<add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" responseBufferLimit="0" />
<add name="StaticFile" path="*" verb="*" modules="StaticFileModule,DefaultDocumentModule,DirectoryListingModule" resourceType="Either" requireAccess="Read" />
</handlers>
</system.webServer>
</location>
<location path="AMESCoreStudio.Web" inheritInChildApplications="false">
<system.webServer>
<modules>
<remove name="WebMatrixSupportModule" />
</modules>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="%LAUNCHER_PATH%" stdoutLogEnabled="false" hostingModel="InProcess" startupTimeLimit="3600" requestTimeout="23:00:00" />
<httpCompression>
<dynamicTypes>
<add mimeType="text/event-stream" enabled="false" />
</dynamicTypes>
</httpCompression>
</system.webServer>
</location>
</configuration>

BIN
.vs/AMESCoreStudio/v16/.suo

Binary file not shown.

22
AMESCoreStudio.Web/AMESCoreStudio.Web.csproj

@ -0,0 +1,22 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<Folder Include="Views\MES\" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" Version="3.1.3" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Proxies" Version="5.0.8" />
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="3.1.5" />
<PackageReference Include="WebApiClient.JIT" Version="1.1.4" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\AMESCoreStudio.WebApi\AMESCoreStudio.WebApi.csproj" />
</ItemGroup>
</Project>

15
AMESCoreStudio.Web/AMESCoreStudio.Web.csproj.user

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<View_SelectedScaffolderID>RazorViewEmptyScaffolder</View_SelectedScaffolderID>
<View_SelectedScaffolderCategoryPath>root/Common/MVC/View</View_SelectedScaffolderCategoryPath>
<WebStackScaffolding_ViewDialogWidth>650</WebStackScaffolding_ViewDialogWidth>
<WebStackScaffolding_IsLayoutPageSelected>True</WebStackScaffolding_IsLayoutPageSelected>
<WebStackScaffolding_IsPartialViewSelected>False</WebStackScaffolding_IsPartialViewSelected>
<WebStackScaffolding_IsReferencingScriptLibrariesSelected>False</WebStackScaffolding_IsReferencingScriptLibrariesSelected>
<WebStackScaffolding_LayoutPageFile />
<Controller_SelectedScaffolderID>MvcControllerEmptyScaffolder</Controller_SelectedScaffolderID>
<Controller_SelectedScaffolderCategoryPath>root/Common/MVC/Controller</Controller_SelectedScaffolderCategoryPath>
<ShowAllFiles>false</ShowAllFiles>
</PropertyGroup>
</Project>

21
AMESCoreStudio.Web/AppSetting.cs

@ -0,0 +1,21 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace AMESCoreStudio.Web
{
public class AppSetting
{
/// <summary>
/// MVC网站访问IP端口
/// </summary>
public string Urls { get; set; }
/// <summary>
/// WebApi访问地址
/// </summary>
public string ApiUrl { get; set; }
public static AppSetting Setting { get; set; } = new AppSetting();
}
}

23
AMESCoreStudio.Web/Code/Errors.cs

@ -0,0 +1,23 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.ComponentModel;
namespace AMESCoreStudio.Web
{
public class Errors
{
public Errors() : base() { }
//
// 摘要:
// 错误字段
[Description("错误字段")]
public string Id { get; set; }
//
// 摘要:
// 错误信息
[Description("错误信息")]
public string Msg { get; set; }
}
}

27
AMESCoreStudio.Web/Code/IResultModel.cs

@ -0,0 +1,27 @@
using System.Collections.Generic;
using System.ComponentModel;
namespace AMESCoreStudio.Web
{
public interface IResultModel
{
// Properties
[Description("是否成功")]
bool Success { get; }
[Description("错误信息")]
string Msg { get; }
[Description("状态码")]
int Status { get; }
[Description("模型验证失败")]
List<Errors> Errors { get; }
}
public interface IResultModel<T> : IResultModel
{
//
// 摘要:
// 返回数据
[Description("返回数据")]
T Data { get; }
}
}

20
AMESCoreStudio.Web/Code/ResultModel.cs

@ -0,0 +1,20 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace AMESCoreStudio.Web
{
public class ResultModel<T> : IResultModel<T>, IResultModel
{
public ResultModel() : base() { }
public bool Success { get; set; }
public string Msg { get; set; }
public int Status { get; set; }
public T Data { get; set; }
public List<Errors> Errors { get; set; }
//public ResultModel<T> ToSuccess(T data = default, string msg = "success");
}
}

169
AMESCoreStudio.Web/Controllers/BulletinController.cs

@ -0,0 +1,169 @@
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.Extensions.Logging;
using AMESCoreStudio.Web.Models;
using Microsoft.AspNetCore.Authorization;
using Newtonsoft.Json;
using System.Reflection;
using AMESCoreStudio.WebApi;
namespace AMESCoreStudio.Web.Controllers
{
public class BulletinController : Controller
{
private readonly ILogger<BulletinController> _logger;
public readonly IBulletin _bulletinApi;
public BulletinController(ILogger<BulletinController> logger, IBulletin bulletinApi)
{
_logger = logger;
_bulletinApi = bulletinApi;
}
public IActionResult Index()
{
if (Request.Cookies["_AMESCookie"] != null)
{
var userID = "";
HttpContext.Request.Cookies.TryGetValue("UserID", out userID);
if (int.Parse(userID.ToString()) >= 0)
{
return View();
}
}
return RedirectToAction("Index", "Login");
//return View();
}
public IActionResult Create()
{
ViewBag.bdt = DateTime.Now.ToString("yyyy/MM/dd HH:mm");
return View();
}
public IActionResult Stop()
{
return View();
}
//修改页面
[HttpGet]
public async Task<IActionResult> EditAsync(int id)
{
var result = await _bulletinApi.GetBulletin(id);
if (result.Count==0)
{
return View();
}
return View(result[0]);
}
//表单提交,id=0 添加,id>0 修改
[HttpPost]
public async Task<IActionResult> SaveAsync(BulletinDTO model)
{
if (ModelState.IsValid)
{
IResultModel result;
if (model.BulletinID == 0)
{
result = await _bulletinApi.PostBulletin(JsonConvert.SerializeObject(model));
}
else
{
//var result = await _bulletinApi.PutBulletin(model.BulletinID, model);
result = await _bulletinApi.PutBulletin(model.BulletinID, JsonConvert.SerializeObject(model));
}
if (!result.Success)
{
var _msg = model.BulletinID == 0 ? "添加成功!" : "修改成功!";
return RedirectToAction("Refresh", "Home", new { msg = _msg });
}
else
{
if (result.Errors.Count > 0)
{
ModelState.AddModelError(result.Errors[0].Id, result.Errors[0].Msg);
}
else
{
ModelState.AddModelError("error", result.Msg);
}
}
}
if (model.BulletinID == 0)
{
return View("Create", model);
//return Json(new Result() { success = true, msg = "" });
}
return View("Edit", model);
//return Json(new Result() { success = true, msg = "" });
}
public async Task<IActionResult> DeleteAsync(int id)
{
var result = await _bulletinApi.DeleteBulletin(id);
return Json(new Result() { success =true, msg = "" });
}
//Layui数据表格异步获取展示列表数据
[ResponseCache(Duration = 0)]
[HttpGet]
//[Authorize]
public async Task<IActionResult> GetBulletinAsync(int id)
{
var result = await _bulletinApi.GetBulletin(id);
if (result.Count > 0)
{
string json_str = JsonConvert.SerializeObject(result);
//string json_str = "[{\"BulletinID\":1,\"BulletinTitle\":\"系统版本1.0.0发布\",\"BulletinContent\":\"系统版本1.0.0发布\",\"BulletinTime\":\"2021 - 07 - 22T00: 00:00\",\"BulletinDays\":5}]";
return Json(new Table() { code = 0, msg = "", data = result, count = result.Count });
//return Json(new Table() { data = JsonConvert.DeserializeObject(json_str), count = result.Count });
//return Json(new Table() { code = 0, msg = "", count = result.Count, data = result });
//return Json(new Table() { data = json_str, count = result.Count });
}
return Json(new Table() { count = 0, data = null });
}
//Layui数据表格异步获取展示列表数据
[ResponseCache(Duration = 0)]
[HttpGet]
//[Authorize]
public async Task<IActionResult> GetBulletinsAsync()
{
var result = await _bulletinApi.GetBulletins();
if (result.Count > 0)
{
string json_str = JsonConvert.SerializeObject(result);
//string json_str = "[{\"BulletinID\":1,\"BulletinTitle\":\"系统版本1.0.0发布\",\"BulletinContent\":\"系统版本1.0.0发布\",\"BulletinTime\":\"2021 - 07 - 22T00: 00:00\",\"BulletinDays\":5}]";
return Json(new Table() { code = 0, msg = "", data = result, count = result.Count });
//return Json(new Table() { data = JsonConvert.DeserializeObject(json_str), count = result.Count });
//return Json(new Table() { code = 0, msg = "", count = result.Count, data = result });
//return Json(new Table() { data = json_str, count = result.Count });
}
return Json(new Table() { count = 0,data = null });
}
}
}

80
AMESCoreStudio.Web/Controllers/HomeController.cs

@ -0,0 +1,80 @@
using AMESCoreStudio.Web.Models;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Threading.Tasks;
using AMESCoreStudio.WebApi;
using Microsoft.AspNetCore.Authorization;
namespace AMESCoreStudio.Web.Controllers
{
public class HomeController : Controller
{
private readonly ILogger<HomeController> _logger;
public readonly IBulletin _bulletApi;
public readonly IAuth _authApi;
public HomeController(ILogger<HomeController> logger, IAuth authApi)
{
_logger = logger;
_authApi = authApi;
}
public IActionResult Index()
{
return View();
}
/// <summary>
///
/// </summary>
/// <returns></returns>
public IActionResult Framework()
{
if (Request.Cookies["_AMESCookie"] != null)
{
var userID = "";
HttpContext.Request.Cookies.TryGetValue("UserID", out userID);
if (userID != null)
{
if (int.Parse(userID.ToString()) >= 0)
{
return View();
}
}
else
{
return RedirectToAction("Index", "Login");
}
}
return RedirectToAction("Index", "Login");
}
/// <summary>
/// 弹窗子窗口,保存后刷新父级页面数据表格
/// </summary>
/// <param name="msg">弹窗提示信息</param>
/// <param name="json">不为空时,只刷新本地数据</param>
/// <returns></returns>
public IActionResult Refresh(string msg = "保存成功!", string json = "")
{
ViewBag.Msg = msg;
ViewBag.Data = json;
return View();
}
public IActionResult Privacy()
{
return View();
}
[ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
public IActionResult Error()
{
return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
}
}
}

112
AMESCoreStudio.Web/Controllers/LoginController.cs

@ -0,0 +1,112 @@
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using AMESCoreStudio.WebApi;
using Microsoft.Extensions.Logging;
using AMESCoreStudio.Web.Models;
using System.Security.Claims;
using Microsoft.AspNetCore.Authentication;
using Microsoft.AspNetCore.Authentication.Cookies;
using Newtonsoft.Json;
namespace AMESCoreStudio.Web.Controllers
{
public class LoginController : Controller
{
private readonly ILogger<LoginController> _logger;
public readonly IAuth _authApi;
public LoginController(ILogger<LoginController> logger, IAuth authApi)
{
_logger = logger;
_authApi = authApi;
}
public IActionResult Index()
{
var loginNo = TempData["loginNo"];
if (loginNo != null)
return View(new LoginViewModel() { LoginNo = loginNo.ToString() });
return View(new LoginViewModel());
}
/// <summary>
///
/// </summary>
/// <param name="vModel"></param>
/// <returns></returns>
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Index(LoginViewModel vModel)
{
if (ModelState.IsValid)
{
var model = new LoginDTO();
model.LoginNo = vModel.LoginNo;
model.LoginPassword = vModel.LoginPassword;
model.Platform = EnumPlatform.Web;
var result = await _authApi.Login(JsonConvert.SerializeObject(model));
if (result.UserID >= 0)
{
SaveUserCookie(result); //登录成功
}
else
{
ModelState.AddModelError("error", result.Msg);
}
}
return View(vModel);
}
/// <summary>
///
/// </summary>
/// <returns></returns>
public async Task<IActionResult> LoginOut()
{
await HttpContext.SignOutAsync(CookieAuthenticationDefaults.AuthenticationScheme);
return RedirectToAction("Index", "Login");
}
/// <summary>
/// ASP.NET CORE Cookie 保存身份信息
/// </summary>
private void SaveUserCookie(LoginDTO login)
{
//创建 Claim 对象将用户信息存储在 Claim 类型的字符串键值对中,
//将 Claim 对象传入 ClaimsIdentity 中,用来构造一个 ClaimsIdentity 对象
var identity = new ClaimsIdentity(CookieAuthenticationDefaults.AuthenticationScheme);
identity.AddClaim(new Claim("UserID", login.UserID.ToString(), ClaimValueTypes.Integer32));
identity.AddClaim(new Claim("LoginNo", login.LoginNo, ClaimValueTypes.String));
if (Request.Cookies["_AMESCookie"] != null)
{
HttpContext.Response.Cookies.Append("UserID", login.UserID.ToString());
}
else
{
HttpContext.Response.Cookies.Append("UserID", login.UserID.ToString());
}
//调用 HttpContext.SignInAsync 方法,传入上面创建的 ClaimsPrincipal 对象,完成用户登录
HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, new ClaimsPrincipal(identity), new AuthenticationProperties
{
//获取或设置身份验证会话是否跨多个持久化要求
IsPersistent = false,
ExpiresUtc = null,
//AllowRefresh = true,
RedirectUri = "/Home/Framework"
});
//如果当前 Http 请求本来登录了用户 A,现在调用 HttpContext.SignInAsync 方法登录用户 B,那么相当于注销用户 A,登录用户 B
}
}
}

617
AMESCoreStudio.Web/Controllers/SYSController.cs

@ -0,0 +1,617 @@
using Microsoft.AspNetCore.Mvc;
using System.Threading.Tasks;
using Microsoft.Extensions.Logging;
using AMESCoreStudio.Web.Models;
using Newtonsoft.Json;
using AMESCoreStudio.WebApi;
using System.Collections.Generic;
using Microsoft.AspNetCore.Mvc.Rendering;
namespace AMESCoreStudio.Web.Controllers
{
public class SYSController : Controller
{
private readonly ILogger<SYSController> _logger;
public readonly ISYS _sysApi;
public SYSController(ILogger<SYSController> logger, ISYS sysApi)
{
_logger = logger;
_sysApi = sysApi;
}
/// <summary>
///
/// </summary>
/// <returns></returns>
private async Task GetSystemList()
{
var result = await _sysApi.GetSystemInfoes();
var SystemItems = new List<SelectListItem>();
for (int i = 0; i < result.Count; i++)
{
SystemItems.Add(new SelectListItem(result[i].SystemName, result[i].SystemID.ToString()));
}
ViewBag.SystemList = SystemItems;
}
private async Task GetModuleList()
{
var result = await _sysApi.GetModuleInfoes();
var ModuleItems = new List<SelectListItem>();
for (int i = 0; i < result.Count; i++)
{
ModuleItems.Add(new SelectListItem(result[i].ModuleName, result[i].ModuleID.ToString()));
}
ViewBag.ModuleList = ModuleItems;
}
private async Task GetDeptList()
{
var result = await _sysApi.GetDeptInfoes();
var DeptItems = new List<SelectListItem>();
for (int i = 0; i < result.Count; i++)
{
DeptItems.Add(new SelectListItem(result[i].DeptNo + result[i].DeptName, result[i].DeptID.ToString()));
}
ViewBag.DeptList = DeptItems;
}
#region SYS001系统资料维护相关
public IActionResult SYS001()
{
return View();
}
//新增頁面
public IActionResult SYS001C()
{
return View();
}
//修改页面
[HttpGet]
public async Task<IActionResult> SYS001UAsync(int id)
{
var result = await _sysApi.GetSystemInfo(id);
if (result.Count == 0)
{
return View();
}
return View(result[0]);
}
public async Task<IActionResult> SYS001DAsync(int id)
{
var result = await _sysApi.DeleteSystemInfo(id);
return Json(new Result() { success = true, msg = "" });
}
//頁面提交,id=0 添加,id>0 修改
[HttpPost]
public async Task<IActionResult> SYS001SaveAsync(SystemInfo model)
{
if (ModelState.IsValid)
{
IResultModel result;
if (model.SystemID == 0)
{
result = await _sysApi.PostSystemInfo(JsonConvert.SerializeObject(model));
}
else
{
result = await _sysApi.PutSystemInfo(model.SystemID, JsonConvert.SerializeObject(model));
}
if (!result.Success)
{
var _msg = model.SystemID == 0 ? "添加成功!" : "修改成功!";
return RedirectToAction("Refresh", "Home", new { msg = _msg });
}
else
{
if (result.Errors.Count > 0)
{
ModelState.AddModelError(result.Errors[0].Id, result.Errors[0].Msg);
}
else
{
ModelState.AddModelError("error", result.Msg);
}
}
}
if (model.SystemID == 0)
{
return View("SYS001C", model);
}
return View("SYS001U", model);
}
[ResponseCache(Duration = 0)]
[HttpGet]
public async Task<IActionResult> GetSystemInfoesAsync()
{
var result = await _sysApi.GetSystemInfoes();
if (result.Count > 0)
{
return Json(new Table() { code = 0, msg = "", data = result, count = result.Count });
}
return Json(new Table() { count = 0, data = null });
}
#endregion
#region SYS002模组资料维护相关
public IActionResult SYS002()
{
return View();
}
//新增頁面
public async Task<IActionResult> SYS002C()
{
await GetSystemList();
return View();
}
//修改页面
[HttpGet]
public async Task<IActionResult> SYS002UAsync(int id)
{
await GetSystemList();
var result = await _sysApi.GetModuleInfo(id);
if (result.Count == 0)
{
return View();
}
return View(result[0]);
}
public async Task<IActionResult> SYS002DAsync(int id)
{
var result = await _sysApi.DeleteModuleInfo(id);
return Json(new Result() { success = true, msg = "" });
}
//頁面提交,id=0 添加,id>0 修改
[HttpPost]
public async Task<IActionResult> SYS002SaveAsync(ModuleInfo model)
{
if (ModelState.IsValid)
{
IResultModel result;
if (model.ModuleID == 0)
{
result = await _sysApi.PostModuleInfo(JsonConvert.SerializeObject(model));
}
else
{
result = await _sysApi.PutModuleInfo(model.ModuleID, JsonConvert.SerializeObject(model));
}
if (!result.Success)
{
var _msg = model.ModuleID == 0 ? "添加成功!" : "修改成功!";
return RedirectToAction("Refresh", "Home", new { msg = _msg });
}
else
{
if (result.Errors.Count > 0)
{
ModelState.AddModelError(result.Errors[0].Id, result.Errors[0].Msg);
}
else
{
ModelState.AddModelError("error", result.Msg);
}
}
}
if (model.ModuleID == 0)
{
return View("SYS002C", model);
}
return View("SYS002U", model);
}
[ResponseCache(Duration = 0)]
[HttpGet]
public async Task<IActionResult> GetModuleInfoesAsync()
{
var result = await _sysApi.GetModuleInfoes();
if (result.Count > 0)
{
return Json(new Table() { code = 0, msg = "", data = result, count = result.Count });
}
return Json(new Table() { count = 0, data = null });
}
#endregion
#region SYS003功能资料维护相关
public IActionResult SYS003()
{
return View();
}
//新增頁面
public async Task<IActionResult> SYS003C()
{
await GetModuleList();
return View();
}
//修改页面
[HttpGet]
public async Task<IActionResult> SYS003UAsync(int id)
{
await GetModuleList();
var result = await _sysApi.GetProgramInfo(id);
if (result.Count == 0)
{
return View();
}
return View(result[0]);
}
public async Task<IActionResult> SYS003DAsync(int id)
{
var result = await _sysApi.DeleteProgramInfo(id);
return Json(new Result() { success = true, msg = "" });
}
//頁面提交,id=0 添加,id>0 修改
[HttpPost]
public async Task<IActionResult> SYS003SaveAsync(ProgramInfo model)
{
if (ModelState.IsValid)
{
IResultModel result;
if (model.ProgramID == 0)
{
result = await _sysApi.PostProgramInfo(JsonConvert.SerializeObject(model));
}
else
{
result = await _sysApi.PutProgramInfo(model.ProgramID, JsonConvert.SerializeObject(model));
}
if (!result.Success)
{
var _msg = model.ProgramID == 0 ? "添加成功!" : "修改成功!";
return RedirectToAction("Refresh", "Home", new { msg = _msg });
}
else
{
if (result.Errors.Count > 0)
{
ModelState.AddModelError(result.Errors[0].Id, result.Errors[0].Msg);
}
else
{
ModelState.AddModelError("error", result.Msg);
}
}
}
if (model.ProgramID == 0)
{
return View("SYS003C", model);
}
return View("SYS003U", model);
}
[ResponseCache(Duration = 0)]
[HttpGet]
public async Task<IActionResult> GetProgramInfoesAsync()
{
var result = await _sysApi.GetProgramInfoes();
if (result.Count > 0)
{
return Json(new Table() { code = 0, msg = "", data = result, count = result.Count });
}
return Json(new Table() { count = 0, data = null });
}
#endregion
#region SYS004角色资料维护相关
public IActionResult SYS004()
{
return View();
}
//新增頁面
public IActionResult SYS004C()
{
return View();
}
//修改页面
[HttpGet]
public async Task<IActionResult> SYS004UAsync(int id)
{
var result = await _sysApi.GetRoleInfo(id);
if (result.Count == 0)
{
return View();
}
return View(result[0]);
}
public async Task<IActionResult> SYS004DAsync(int id)
{
var result = await _sysApi.DeleteRoleInfo(id);
return Json(new Result() { success = true, msg = "" });
}
//頁面提交,id=0 添加,id>0 修改
[HttpPost]
public async Task<IActionResult> SYS004SaveAsync(RoleInfo model)
{
if (ModelState.IsValid)
{
IResultModel result;
if (model.RoleID == 0)
{
result = await _sysApi.PostRoleInfo(JsonConvert.SerializeObject(model));
}
else
{
result = await _sysApi.PutRoleInfo(model.RoleID, JsonConvert.SerializeObject(model));
}
if (!result.Success)
{
var _msg = model.RoleID == 0 ? "添加成功!" : "修改成功!";
return RedirectToAction("Refresh", "Home", new { msg = _msg });
}
else
{
if (result.Errors.Count > 0)
{
ModelState.AddModelError(result.Errors[0].Id, result.Errors[0].Msg);
}
else
{
ModelState.AddModelError("error", result.Msg);
}
}
}
if (model.RoleID == 0)
{
return View("SYS004C", model);
}
return View("SYS004U", model);
}
[ResponseCache(Duration = 0)]
[HttpGet]
public async Task<IActionResult> GetRoleInfoesAsync()
{
var result = await _sysApi.GetRoleInfoes();
if (result.Count > 0)
{
return Json(new Table() { code = 0, msg = "", data = result, count = result.Count });
}
return Json(new Table() { count = 0, data = null });
}
#endregion
#region SYS007部门资料维护相关
public IActionResult SYS007()
{
return View();
}
//新增頁面
public IActionResult SYS007C(int id)
{
var model = new DeptInfo();
if (id > 0)
{
model.DeptTypeID = EnumDeptType.dept;
model.ParentDeptID = id;
}
else
{
model.DeptTypeID = EnumDeptType.factory;
}
return View(model);
}
//修改页面
[HttpGet]
public async Task<IActionResult> SYS007UAsync(int id)
{
var result = await _sysApi.GetDeptInfo(id);
if (result.Count == 0)
{
return View();
}
return View(result[0]);
}
public async Task<IActionResult> SYS007DAsync(int id)
{
var result = await _sysApi.DeleteDeptInfo(id);
return Json(new Result() { success = true, msg = "" });
}
//頁面提交,id=0 添加,id>0 修改
[HttpPost]
public async Task<IActionResult> SYS007SaveAsync(DeptInfo model)
{
if (ModelState.IsValid)
{
IResultModel result;
if (model.DeptID == 0)
{
result = await _sysApi.PostDeptInfo(JsonConvert.SerializeObject(model));
}
else
{
result = await _sysApi.PutDeptInfo(model.DeptID, JsonConvert.SerializeObject(model));
}
if (!result.Success)
{
var _msg = model.DeptID == 0 ? "添加成功!" : "修改成功!";
return RedirectToAction("Refresh", "Home", new { msg = _msg });
}
else
{
if (result.Errors.Count > 0)
{
ModelState.AddModelError(result.Errors[0].Id, result.Errors[0].Msg);
}
else
{
ModelState.AddModelError("error", result.Msg);
}
}
}
if (model.DeptID == 0)
{
return View("SYS007C", model);
}
return View("SYS007U", model);
}
[ResponseCache(Duration = 0)]
[HttpGet]
public async Task<IActionResult> GetDeptInfoesAsync()
{
var result = await _sysApi.GetDeptInfoes();
if (result.Count > 0)
{
return Json(new Table() { code = 0, msg = "", data = result, count = result.Count });
}
return Json(new Table() { count = 0, data = null });
}
#endregion
#region SYS008用户资料维护相关
public IActionResult SYS008()
{
return View();
}
//新增頁面
public async Task<IActionResult> SYS008C()
{
await GetDeptList();
return View();
}
//修改页面
[HttpGet]
public async Task<IActionResult> SYS008UAsync(int id)
{
await GetDeptList();
var result = await _sysApi.GetUserInfo(id);
if (result.Count == 0)
{
return View();
}
return View(result[0]);
}
public async Task<IActionResult> SYS008DAsync(int id)
{
var result = await _sysApi.DeleteUserInfo(id);
return Json(new Result() { success = true, msg = "" });
}
//頁面提交,id=0 添加,id>0 修改
[HttpPost]
public async Task<IActionResult> SYS008SaveAsync(UserInfo model)
{
if (ModelState.IsValid)
{
IResultModel result;
if (model.UserID == 0)
{
result = await _sysApi.PostUserInfo(JsonConvert.SerializeObject(model));
}
else
{
result = await _sysApi.PutUserInfo(model.UserID, JsonConvert.SerializeObject(model));
}
if (!result.Success)
{
var _msg = model.UserID == 0 ? "添加成功!" : "修改成功!";
return RedirectToAction("Refresh", "Home", new { msg = _msg });
}
else
{
if (result.Errors.Count > 0)
{
ModelState.AddModelError(result.Errors[0].Id, result.Errors[0].Msg);
}
else
{
ModelState.AddModelError("error", result.Msg);
}
}
}
if (model.UserID == 0)
{
return View("SYS008C", model);
}
return View("SYS008U", model);
}
[ResponseCache(Duration = 0)]
[HttpGet]
public async Task<IActionResult> GetUserInfoesAsync()
{
var result = await _sysApi.GetUserInfoes();
if (result.Count > 0)
{
return Json(new Table() { code = 0, msg = "", data = result, count = result.Count });
}
return Json(new Table() { count = 0, data = null });
}
#endregion
}
}

30
AMESCoreStudio.Web/HttpApis/IAuth.cs

@ -0,0 +1,30 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using WebApiClient;
using WebApiClient.Attributes;
using AMESCoreStudio.WebApi;
using Microsoft.AspNetCore.Mvc;
namespace AMESCoreStudio.Web
{
[JsonReturn]
public interface IAuth:IHttpApi
{
/// <summary>
/// 登录处理
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpPost("api/Auth/Login")]
ITask<LoginDTO> Login([FromBody, RawJsonContent] string model);
/// <summary>
/// 获取认证信息
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpGet("api/Auth/GetAuthInfo")]
ITask<LoginResultDTO> AuthInfo();
}
}

64
AMESCoreStudio.Web/HttpApis/IBulletin.cs

@ -0,0 +1,64 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using WebApiClient;
using WebApiClient.Attributes;
using AMESCoreStudio.WebApi;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using Newtonsoft.Json.Serialization;
using Microsoft.AspNetCore.Mvc;
namespace AMESCoreStudio.Web
{
[JsonReturn]
public interface IBulletin : IHttpApi
{
/// <summary>
/// 新增公告
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpPost("api/Bulletins")]
ITask<ResultModel<BulletinDTO>> PostBulletin([FromBody, RawJsonContent] string model);
/// <summary>
/// 更新公告
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpPut("api/Bulletins/{id}")]
ITask<ResultModel<BulletinDTO>> PutBulletin(int id, [FromBody, RawJsonContent] string model);
/// <summary>
/// 刪除公告
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpDelete("api/Bulletins/{id}")]
ITask<ResultModel<string>> DeleteBulletin(int id);
/// <summary>
/// 根據ID獲取指定公告資料
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpGet("api/Bulletins/{id}")]
ITask<ResultModel<BulletinDTO>> GetBulletin4Model(int id);
/// <summary>
/// 根據ID獲取指定公告資料
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpGet("api/Bulletins/{id}")]
ITask<List<BulletinDTO>> GetBulletin(int id);
/// <summary>
/// 獲取全部公告資料
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpGet("api/Bulletins")]
ITask<List<Bulletin>> GetBulletins();
//ITask<List<BulletinDTO>> GetBulletins();
}
}

249
AMESCoreStudio.Web/HttpApis/ISYS.cs

@ -0,0 +1,249 @@
using System.Collections.Generic;
using WebApiClient;
using WebApiClient.Attributes;
using AMESCoreStudio.WebApi;
using Microsoft.AspNetCore.Mvc;
namespace AMESCoreStudio.Web
{
[JsonReturn]
public interface ISYS:IHttpApi
{
#region SYS001系統資料維護相關
/// <summary>
/// 新增系統
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpPost("api/SystemInfoes")]
ITask<ResultModel<SystemInfo>> PostSystemInfo([FromBody, RawJsonContent] string model);
/// <summary>
/// 更新系統
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpPut("api/SystemInfoes/{id}")]
ITask<ResultModel<SystemInfo>> PutSystemInfo(int id, [FromBody, RawJsonContent] string model);
/// <summary>
/// 刪除系統
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpDelete("api/SystemInfoes/{id}")]
ITask<ResultModel<string>> DeleteSystemInfo(int id);
/// <summary>
/// 根據ID獲取指定系統資料
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpGet("api/SystemInfoes/{id}")]
ITask<List<SystemInfo>> GetSystemInfo(int id);
/// <summary>
/// 獲取系統資料
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpGet("api/SystemInfoes")]
ITask<List<SystemInfo>> GetSystemInfoes();
#endregion
#region SYS002模組資料維護相關
/// <summary>
/// 新增模組
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpPost("api/ModuleInfoes")]
ITask<ResultModel<ModuleInfo>> PostModuleInfo([FromBody, RawJsonContent] string model);
/// <summary>
/// 更新模組
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpPut("api/ModuleInfoes/{id}")]
ITask<ResultModel<ModuleInfo>> PutModuleInfo(int id, [FromBody, RawJsonContent] string model);
/// <summary>
/// 刪除模組
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpDelete("api/ModuleInfoes/{id}")]
ITask<ResultModel<string>> DeleteModuleInfo(int id);
/// <summary>
/// 根據ID獲取指定模組資料
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpGet("api/ModuleInfoes/{id}")]
ITask<List<ModuleInfo>> GetModuleInfo(int id);
/// <summary>
/// 獲取模組資料
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpGet("api/ModuleInfoes")]
ITask<List<ModuleInfo>> GetModuleInfoes();
#endregion
#region SYS003功能資料維護相關
/// <summary>
/// 新增功能
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpPost("api/ProgramInfoes")]
ITask<ResultModel<ProgramInfo>> PostProgramInfo([FromBody, RawJsonContent] string model);
/// <summary>
/// 更新功能
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpPut("api/ProgramInfoes/{id}")]
ITask<ResultModel<ProgramInfo>> PutProgramInfo(int id, [FromBody, RawJsonContent] string model);
/// <summary>
/// 刪除功能
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpDelete("api/ProgramInfoes/{id}")]
ITask<ResultModel<string>> DeleteProgramInfo(int id);
/// <summary>
/// 根據ID獲取指定功能資料
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpGet("api/ProgramInfoes/{id}")]
ITask<List<ProgramInfo>> GetProgramInfo(int id);
/// <summary>
/// 獲取功能資料
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpGet("api/ProgramInfoes")]
ITask<List<ProgramInfo>> GetProgramInfoes();
#endregion
#region SYS004角色資料維護相關
/// <summary>
/// 新增角色
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpPost("api/RoleInfoes")]
ITask<ResultModel<RoleInfo>> PostRoleInfo([FromBody, RawJsonContent] string model);
/// <summary>
/// 更新角色
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpPut("api/RoleInfoes/{id}")]
ITask<ResultModel<RoleInfo>> PutRoleInfo(int id, [FromBody, RawJsonContent] string model);
/// <summary>
/// 刪除角色
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpDelete("api/RoleInfoes/{id}")]
ITask<ResultModel<string>> DeleteRoleInfo(int id);
/// <summary>
/// 根據ID獲取指定角色資料
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpGet("api/RoleInfoes/{id}")]
ITask<List<RoleInfo>> GetRoleInfo(int id);
/// <summary>
/// 獲取角色資料
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpGet("api/RoleInfoes")]
ITask<List<RoleInfo>> GetRoleInfoes();
#endregion
#region SYS007部门資料維護相關
/// <summary>
/// 新增部门
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpPost("api/DeptInfoes")]
ITask<ResultModel<DeptInfo>> PostDeptInfo([FromBody, RawJsonContent] string model);
/// <summary>
/// 更新部门
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpPut("api/DeptInfoes/{id}")]
ITask<ResultModel<DeptInfo>> PutDeptInfo(int id, [FromBody, RawJsonContent] string model);
/// <summary>
/// 刪除部门
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpDelete("api/DeptInfoes/{id}")]
ITask<ResultModel<string>> DeleteDeptInfo(int id);
/// <summary>
/// 根據ID獲取指定部门資料
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpGet("api/DeptInfoes/{id}")]
ITask<List<DeptInfo>> GetDeptInfo(int id);
/// <summary>
/// 獲取部门資料
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpGet("api/DeptInfoes")]
ITask<List<DeptInfo>> GetDeptInfoes();
#endregion
#region SYS008用户資料維護相關
/// <summary>
/// 新增用户
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpPost("api/UserInfoes")]
ITask<ResultModel<UserInfo>> PostUserInfo([FromBody, RawJsonContent] string model);
/// <summary>
/// 更新用户
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpPut("api/UserInfoes/{id}")]
ITask<ResultModel<UserInfo>> PutUserInfo(int id, [FromBody, RawJsonContent] string model);
/// <summary>
/// 刪除用户
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpDelete("api/UserInfoes/{id}")]
ITask<ResultModel<string>> DeleteUserInfo(int id);
/// <summary>
/// 根據ID獲取指定用户資料
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpGet("api/UserInfoes/{id}")]
ITask<List<UserInfo>> GetUserInfo(int id);
/// <summary>
/// 獲取用户資料
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpGet("api/UserInfoes")]
ITask<List<UserInfo>> GetUserInfoes();
#endregion
}
}

11
AMESCoreStudio.Web/Models/ErrorViewModel.cs

@ -0,0 +1,11 @@
using System;
namespace AMESCoreStudio.Web.Models
{
public class ErrorViewModel
{
public string RequestId { get; set; }
public bool ShowRequestId => !string.IsNullOrEmpty(RequestId);
}
}

22
AMESCoreStudio.Web/Models/LayuiViewModel.cs

@ -0,0 +1,22 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace AMESCoreStudio.Web.Models
{
public class Table
{
public int code { get; set; } = 0;
public string msg { get; set; }
public int count { get; set; }
public dynamic data { get; set; }
}
public class Result
{
public bool success { get; set; } = true;
public string msg { get; set; } = "成功!";
public dynamic data { get; set; }
}
}

19
AMESCoreStudio.Web/Models/LoginViewModel.cs

@ -0,0 +1,19 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.ComponentModel.DataAnnotations;
namespace AMESCoreStudio.Web
{
/// <summary>
///
/// </summary>
public class LoginViewModel
{
[Required]
public string LoginNo { get; set; }
[Required]
public string LoginPassword { get; set; }
}
}

47
AMESCoreStudio.Web/Program.cs

@ -0,0 +1,47 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
namespace AMESCoreStudio.Web
{
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args)
{
var configuration = new ConfigurationBuilder()
.SetBasePath(Environment.CurrentDirectory)
.AddJsonFile("appsettings.json")
.Build();
configuration.GetSection("Setting").Bind(AppSetting.Setting);
if (AppSetting.Setting.Urls.ToString()=="")
AppSetting.Setting.Urls = "http://*:8080";
return Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>()
.UseUrls(AppSetting.Setting.Urls);
});
}
/*
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
*/
}
}

27
AMESCoreStudio.Web/Properties/launchSettings.json

@ -0,0 +1,27 @@
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:26159",
"sslPort": 0
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"AMESCoreStudio.Web": {
"commandName": "Project",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"applicationUrl": "https://localhost:5001;http://localhost:5000"
}
}
}

95
AMESCoreStudio.Web/Startup.cs

@ -0,0 +1,95 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Authentication.Cookies;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using WebApiClient;
namespace AMESCoreStudio.Web
{
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
//services.AddControllersWithViews();
services.AddControllersWithViews().AddRazorRuntimeCompilation();
//使用Session
services.AddSession();
services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
.AddCookie(CookieAuthenticationDefaults.AuthenticationScheme, options =>
{
options.LoginPath = new PathString("/Login/Index");
options.LogoutPath = new PathString("/Login/Logout");
options.AccessDeniedPath = new PathString("/Home/Error");
options.Cookie.Name = "_AMESCookie";
//options.Cookie.SameSite = SameSiteMode.None;
//当Cookie 过期时间已达一半时,是否重置为ExpireTimeSpan
options.SlidingExpiration = true;
options.Cookie.HttpOnly = true;
});
//添加HttpClient相关
var types = typeof(Startup).Assembly.GetTypes()
.Where(type => type.IsInterface
&& ((System.Reflection.TypeInfo)type).ImplementedInterfaces != null
&& type.GetInterfaces().Any(a => a.FullName == typeof(IHttpApi).FullName));
foreach (var type in types)
{
services.AddHttpApi(type);
services.ConfigureHttpApi(type, o => {
o.HttpHost = new Uri(AppSetting.Setting.ApiUrl);
});
}
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
//app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.UseAuthentication();
app.UseSession();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Login}/{action=Index}/{id?}");
});
app.UseCookiePolicy();
}
}
}

5
AMESCoreStudio.Web/UpdateList.txt

@ -0,0 +1,5 @@

2021-09-01 Updated by Marvin
******************************************************************************
1.修改admin.css,調整左上方LOGO區域大小與菜單對齊.layui-layout-admin .layui-header .logo a
2.修改admin.css,調整菜單點選右邊內容區域菜單顯示大小.layui-page-content .layui-tab-title

340
AMESCoreStudio.Web/Views/Bulletin/Create.cshtml

@ -0,0 +1,340 @@
@model AMESCoreStudio.WebApi.BulletinDTO
@{ ViewData["Title"] = "Create";
Layout = "~/Views/Shared/_FormLayout.cshtml"; }
<style>
.control-label {
justify-content: flex-end !important;
}
</style>
<div class="row">
<div class="col-sm-12">
<form enctype="multipart/form-data" method="post" asp-action="Save">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="form-group form-inline my-sm-1">
<label asp-for="BulletinTitle" class="control-label col-sm-3"></label>
<input asp-for="BulletinTitle" class="form-control col-sm-9" placeholder="請輸入公告標題" />
<span asp-validation-for="BulletinTitle" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="BulletinContent" class="control-label col-sm-3"></label>
<input asp-for="BulletinContent" class="form-control col-sm-9" placeholder="請輸入公告內容" />
<span asp-validation-for="BulletinContent" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="BulletinTime" class="control-label col-sm-3"></label>
<input id="bdt" asp-for="BulletinTime" class="layui-input layui-input-sm" autocomplete="off" placeholder="請輸入公告日期" />
<span asp-validation-for="BulletinTime" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="BulletinDays" class="control-label col-sm-3"></label>
<input asp-for="BulletinDays" class="form-control col-sm-9" placeholder="請輸入公告天數" />
<span asp-validation-for="BulletinDays" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<span style="color: firebrick;
word-break: break-all;
" class="text-danger offset-sm-3">@Html.ValidationMessage("error")</span>
<div class="form-group">
<input type="submit" value="保存" class="btn btn-primary offset-sm-3" />
</div>
</form>
</div>
</div>
@section Scripts {
@{ await Html.RenderPartialAsync("_ValidationScriptsPartial");
await Html.RenderPartialAsync("_FileinputScriptsPartial"); }
<script type="text/javascript">
$('#bdt').val('');
layui.use('laydate', function () {
var laydate = layui.laydate;
//常规用法
laydate.render({
elem: '#test1'
});
//国际版
laydate.render({
elem: '#test1-1'
, lang: 'en'
});
//年选择器
laydate.render({
elem: '#test2'
, type: 'year'
});
//年月选择器
laydate.render({
elem: '#test3'
, type: 'month'
});
//时间选择器
laydate.render({
elem: '#test4'
, type: 'time'
});
//日期时间选择器
laydate.render({
elem: '#test5'
, type: 'datetime'
, lang: 'en'
});
//日期范围
laydate.render({
elem: '#test6'
//设置开始日期、日期日期的 input 选择器
//数组格式为 2.6.6 开始新增,之前版本直接配置 true 或任意分割字符即可
, range: ['#test-startDate-1', '#test-endDate-1']
});
//年范围
laydate.render({
elem: '#test7'
, type: 'year'
, range: true
});
//年月范围
laydate.render({
elem: '#test8'
, type: 'month'
, range: true
});
//时间范围
laydate.render({
elem: '#test9'
, type: 'time'
, range: true
});
//日期时间范围
laydate.render({
elem: '#test10'
, type: 'datetime'
, range: true
});
//自定义格式
laydate.render({
elem: '#test11'
, format: 'yyyy年MM月dd日'
});
laydate.render({
elem: '#test12'
, format: 'dd/MM/yyyy'
});
laydate.render({
elem: '#test13'
, format: 'yyyyMMdd'
});
laydate.render({
elem: '#test14'
, type: 'time'
, format: 'H点m分'
});
laydate.render({
elem: '#test15'
, type: 'month'
, range: '~'
, format: 'yyyy-MM'
});
laydate.render({
elem: '#test16'
, type: 'datetime'
, range: '到'
, format: 'yyyy年M月d日H时m分s秒'
});
//开启公历节日
laydate.render({
elem: '#test17'
, calendar: true
});
//自定义重要日
laydate.render({
elem: '#test18'
, mark: {
'0-10-14': '生日'
, '0-12-31': '跨年' //每年的日期
, '0-0-10': '工资' //每月某天
, '0-0-15': '月中'
, '2017-8-15': '' //如果为空字符,则默认显示数字+徽章
, '2099-10-14': '呵呵'
}
, done: function (value, date) {
if (date.year === 2017 && date.month === 8 && date.date === 15) { //点击2017年8月15日,弹出提示语
layer.msg('这一天是:中国人民抗日战争胜利72周年');
}
}
});
//限定可选日期
var ins22 = laydate.render({
elem: '#test-limit1'
, min: '2016-10-14'
, max: '2080-10-14'
, ready: function () {
ins22.hint('日期可选值设定在 <br> 2016-10-14 到 2080-10-14');
}
});
//前后若干天可选,这里以7天为例
laydate.render({
elem: '#test-limit2'
, min: -7
, max: 7
});
//限定可选时间
laydate.render({
elem: '#test-limit3'
, type: 'time'
, min: '09:30:00'
, max: '17:30:00'
, btns: ['clear', 'confirm']
});
//同时绑定多个
lay('.test-item').each(function () {
laydate.render({
elem: this
, trigger: 'click'
});
});
//初始赋值
laydate.render({
elem: '#test19'
, value: '1989-10-14'
, isInitValue: true
});
//选中后的回调
laydate.render({
elem: '#test20'
, done: function (value, date) {
layer.alert('你选择的日期是:' + value + '<br>获得的对象是' + JSON.stringify(date));
}
});
//日期切换的回调
laydate.render({
elem: '#test21'
, change: function (value, date) {
layer.msg('你选择的日期是:' + value + '<br><br>获得的对象是' + JSON.stringify(date));
}
});
//不出现底部栏
laydate.render({
elem: '#test22'
, showBottom: false
});
//只出现确定按钮
laydate.render({
elem: '#test23'
, btns: ['confirm']
});
//自定义事件
laydate.render({
elem: '#test24'
, trigger: 'mousedown'
});
//点我触发
laydate.render({
elem: '#test25'
, eventElem: '#test25-1'
, trigger: 'click'
});
//双击我触发
lay('#test26-1').on('dblclick', function () {
laydate.render({
elem: '#test26'
, show: true
, closeStop: '#test26-1'
});
});
//日期只读
laydate.render({
elem: '#test27'
, trigger: 'click'
});
//非input元素
laydate.render({
elem: '#test28'
});
//墨绿主题
laydate.render({
elem: '#test29'
, theme: 'molv'
});
//自定义颜色
laydate.render({
elem: '#test30'
, theme: '#393D49'
});
//格子主题
laydate.render({
elem: '#test31'
, theme: 'grid'
});
//直接嵌套显示
laydate.render({
elem: '#test-n1'
, position: 'static'
});
laydate.render({
elem: '#test-n2'
, position: 'static'
, lang: 'en'
});
laydate.render({
elem: '#test-n3'
, type: 'month'
, position: 'static'
});
laydate.render({
elem: '#test-n4'
, type: 'time'
, position: 'static'
});
});
</script>
<script type="text/javascript">
$(document).ready(function () {
var error = '@Html.ValidationMessage("error")';
if ($(error).text() != '') {
parent.hg.msg(error);
}
document.getElementById('bdt').value = '';
});
</script>
}

66
AMESCoreStudio.Web/Views/Bulletin/Edit.cshtml

@ -0,0 +1,66 @@
@model AMESCoreStudio.WebApi.BulletinDTO
@{
ViewData["Title"] = "Edit";
Layout = "~/Views/Shared/_FormLayout.cshtml";
}
<style>
.control-label {
justify-content: flex-end !important;
}
</style>
<div class="row">
<div class="col-sm-12">
<form enctype="multipart/form-data" method="post" asp-action="Save">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<input type="hidden" asp-for="BulletinID" />
<input type="hidden" asp-for="CreateUserId" />
<input type="hidden" asp-for="CreateDateTime" />
<input type="hidden" asp-for="UpdateUserId" />
<input type="hidden" asp-for="UpdateDateTime" />
<div class="form-group form-inline my-sm-1">
<label asp-for="BulletinTitle" class="control-label col-sm-3"></label>
<input asp-for="BulletinTitle" class="form-control col-sm-9" placeholder="請輸入公告標題" />
<span asp-validation-for="BulletinTitle" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="BulletinContent" class="control-label col-sm-3"></label>
<input asp-for="BulletinContent" class="form-control col-sm-9" placeholder="請輸入公告內容" />
<span asp-validation-for="BulletinContent" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="BulletinTime" class="control-label col-sm-3"></label>
<input asp-for="BulletinTime" class="form-control col-sm-9" />
<span asp-validation-for="BulletinTime" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="BulletinDays" class="control-label col-sm-3"></label>
<input asp-for="BulletinDays" class="form-control col-sm-9" placeholder="請輸入公告天數" />
<span asp-validation-for="BulletinDays" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group">
<input type="submit" value="保存" class="btn btn-primary offset-sm-3" />
</div>
</form>
</div>
</div>
@section Scripts {
@{
await Html.RenderPartialAsync("_ValidationScriptsPartial");
await Html.RenderPartialAsync("_FileinputScriptsPartial");
}
<script type="text/javascript">
$(document).ready(function () {
var error = '@Html.ValidationMessage("error")';
if ($(error).text() != '') {
parent.hg.msg(error);
}
});
</script>
}

119
AMESCoreStudio.Web/Views/Bulletin/Index.cshtml

@ -0,0 +1,119 @@
@{
ViewData["Title"] = "公告資料管理";
Layout = "~/Views/Shared/_AMESLayout.cshtml";
}
<div class="layui-card">
<div class="layui-card-header">
<div class="layui-form">
<div class="layui-form-item ">
<div class="layui-inline"><i class="fa fa-file-text-o fa-fw"></i> @ViewBag.Title</div>
</div>
</div>
</div>
<div class="layui-card-body">
<table class="layui-hide" id="test" lay-filter="test"></table>
</div>
</div>
@section Scripts{
<script type="text/javascript">
//监听表单提交事件
hg.form.onsubmit('querysubmit', function (data) {
table && table.reload(data);
});
var tableCols = [[
{
field: 'bulletinID',
width: 160,
title: '編號',
sort: true
},
{
field: 'bulletinTitle',
width: 200,
title: '公告標題'
},
{
field: 'bulletinContent',
minWidth: 200,
title: '公告內容'
},
{
field: 'bulletinTime',
title: '公告時間',
width: 160,
sort: true,
templet: function (d) {
return layui.util.toDateString(d.bulletinTime, "yyyy-MM-dd");
}
},
{
field: 'bulletinDays',
title: '公告天數',
width: 160,
sort: true
},
{
field: 'right',
width: 200,
title: '操作',
fixed: 'right',
templet: function (d) {
return '<a class="layui-btn layui-btn-normal layui-btn-xs layui-icon layui-icon-edit" lay-event="edit">修改</a> <a class="layui-btn layui-btn-danger layui-btn-xs layui-icon layui-icon-pause" lay-event="stop">停用</a> <a class="layui-btn layui-btn-danger layui-btn-xs layui-icon layui-icon-delete" lay-event="del">删除</a>'
}
}]
];
//通过行tool编辑,lay-event="edit"
function edit(obj) {
if (obj.data.bulletinID) {
hg.open('修改公告', '/Bulletin/Edit/' + obj.data.bulletinID, 640, 480);
}
}
//通过行tool编辑,lay-event="edit"
function stop(obj) {
if (obj.data.bulletinID) {
hg.open('修改公告', '/Bulletin/Edit/' + obj.data.bulletinID, 640, 480);
}
}
//通过行tool删除,lay-event="del"
function del(obj) {
if (obj.data.bulletinID) {
hg.confirm("公告:" + obj.data.bulletinTitle + ",确定要删除吗?", function () {
$.ajax({
url: '/Bulletin/Delete',
data: { id: obj.data.bulletinID },
type: 'POST',
success: function (data) {
if (data.success) {
obj.del(); //只删本地数据
hg.msghide("删除成功!");
}
else {
hg.msg(data.msg);
}
},
error: function () {
hg.msg("网络请求失败!");
}
});
});
}
}
var toolbar = [{
text: '新增',
layuiicon: '&#xe608;',
class: 'layui-btn-normal',
handler: function () {
hg.open('新增公告', '/Bulletin/Create', 640, 480);
}
}
];
//基本数据表格
var table = hg.table.datatable('test', '公告資料管理', '/Bulletin/GetBulletins', {}, tableCols, toolbar, true, 'full-100', ['filter', 'print', 'exports']);
</script>
}

185
AMESCoreStudio.Web/Views/Home/Framework.cshtml

@ -0,0 +1,185 @@
@{
ViewData["Title"] = "AMES 1.0.0";
}
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>@ViewData["Title"]</title>
<meta name="renderer" content="webkit|ie-comp|ie-stand">
<meta http-equiv="hg-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no">
<meta http-equiv="Cache-Control" content="no-siteapp" />
<link rel="stylesheet" href="~/css/font-awesome.min.css">
<link rel="stylesheet" href="~/lib/layui/css/layui.css" media="all">
<link rel="stylesheet" href="~/lib/admin/admin.css" media="all">
<link rel="stylesheet" href="~/lib/Scrollbar/jquery.scrollbar.css">
<link rel='stylesheet' href='~/lib/nprogress/nprogress.css' />
<script type="text/javascript" src="~/lib/layui/layui.js"></script>
<script type="text/javascript" src="~/lib/admin/admin.js"></script>
<!-- 让IE8/9支持媒体查询,从而兼容栅格 -->
<!--[if lt IE 9]>
<script src="https://cdn.staticfile.org/html5shiv/r29/html5.min.js"></script>
<script src="https://cdn.staticfile.org/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<body class="layui-layout-body" style="display: none;">
<div class="layui-layout layui-layout-admin">
<!-- 顶部 -->
<div class="layui-header" align="left">
<div class="logo">
<a href="javascript:;" onclick="$('.layui-tab-title .home').eq(0).click();">
<img src="~/images/logo.png" class="layui-nav-img">
<span class="layui-hide-xs">@ViewData["Title"]</span>
</a>
</div>
<ul class="layui-nav left layui-hide-xs" lay-filter="nav-top">
<li meun_id="0" class="layui-nav-item layui-this"><a href="javascript:;">製造執行系統</a></li>
</ul>
<ul class="layui-nav left layui-hide-sm layui-hide-md layui-hide-lg" lay-filter="nav-top">
<li class="layui-nav-item">
<a href="javascript:;">菜单</a>
<dl class="layui-nav-child">
<dd meun_id="0" lay-unselect><a onclick=""><i class="fa fa-pencil-square fa-fw"></i>製造執行系統</a></dd>
</dl>
</li>
</ul>
<ul class="layui-nav right">
<li class="layui-nav-item layui-hide-xs" lay-unselect>
<a href="javascript:;" hg-event="fullscreen" title="全屏">
<i class="fa fa-arrows-alt fa-lg"></i>
</a>
</li>
<li class="layui-nav-item layui-hide-xs" lay-unselect>
<a href="javascript:;" onclick="cleancache()" hg-event="delSkinConfig" title="清除缓存">
<i class="fa fa-trash-o fa-lg"></i>
</a>
</li>
<li class="layui-nav-item">
<a href="javascript:;"><img src="~/images/touxiang.jpg" class="layui-nav-img"><span> @ViewData["Name"] </span></a>
<dl class="layui-nav-child">
<dd lay-unselect><a href="/Login/LoginOut"><i class="fa fa-sign-out fa-fw"></i>退出</a></dd>
</dl>
</li>
<li class="layui-nav-item layui-hide-xs" lay-unselect>
<a href="javascript:;" hg-event="skinConfig">
<i class="fa fa-ellipsis-v fa-lg"></i>
</a>
</li>
</ul>
</div>
<!-- 左侧菜单 -->
<div class="layui-left-nav scrollBox">
<div id="side-nav">
<!-- meun_id=0;UI组件 -->
<ul id="nav" class="layui-tab-item layui-show">
<li>
<a>
<i class="fa fa-cog fa-fw"></i><cite>開發測試範例</cite><i class="fa fa-angle-down fa-fw nav_right"></i>
</a>
<ul class="sub-menu">
<li class="sub-tab" hg-title="公告資料維護" hg-nav="/Bulletin/Index">
<a><i class="fa fa-book fa-fw"></i><cite>公告資料維護</cite></a>
</li>
</ul>
</li>
<li class="open">
<a class="border active">
<i class="fa fa-star fa-fw"></i><cite>系統管理模組</cite><i class="fa fa-angle-up fa-fw nav_right"></i>
</a>
<ul class="sub-menu" style="display: block;">
<li class="sub-tab" hg-title="系統資料維護" hg-nav="/SYS/SYS001">
<a><i class="fa fa-key fa-fw"></i><cite>系統資料維護</cite></a>
</li>
<li class="sub-tab" hg-title="模組資料維護" hg-nav="/SYS/SYS002">
<a><i class="fa fa-key fa-fw"></i><cite>模組資料維護</cite></a>
</li>
<li class="sub-tab" hg-title="功能資料維護" hg-nav="/SYS/SYS003">
<a><i class="fa fa-key fa-fw"></i><cite>功能資料維護</cite></a>
</li>
<li class="sub-tab" hg-title="角色資料維護" hg-nav="/SYS/SYS004">
<a><i class="fa fa-key fa-fw"></i><cite>角色資料維護</cite></a>
</li>
<li class="sub-tab" hg-title="角色模组維護" hg-nav="/SYS/SYS005">
<a><i class="fa fa-key fa-fw"></i><cite>角色模组維護</cite></a>
</li>
<li class="sub-tab" hg-title="角色功能維護" hg-nav="/SYS/SYS006">
<a><i class="fa fa-key fa-fw"></i><cite>角色功能維護</cite></a>
</li>
<li class="sub-tab" hg-title="部门資料維護" hg-nav="/SYS/SYS007">
<a><i class="fa fa-user-o fa-fw"></i><cite>部门資料維護</cite></a>
</li>
<li class="sub-tab" hg-title="用户資料維護" hg-nav="/SYS/SYS008">
<a><i class="fa fa-user-o fa-fw"></i><cite>用户資料維護</cite></a>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- 内容 -->
<div class="layui-page-content">
<div class="layui-tab tab" lay-unauto lay-allowClose="true" lay-filter="xbs_tab">
<span class="indent-tab left" title="侧边伸缩"><i class="fa fa-dedent fa-lg"></i></span>
<div class="indent-tab left fa fa-step-backward fa-fw"></div>
<ul class="layui-nav">
<li class="layui-nav-item">
<a href="javascript:;"><i class="fa fa-dot-circle-o fa-fw"></i> 页面操作</a>
<dl class="layui-nav-child">
<dd lay-unselect data-page-close="this">
<a href="javascript:;"><i class="fa fa-refresh fa-fw"></i> 刷新当前</a>
</dd>
<dd lay-unselect data-page-close="other">
<a href="javascript:;"><i class="fa fa-ban fa-fw"></i> 关闭其他</a>
</dd>
<dd lay-unselect data-page-close="all">
<a href="javascript:;"><i class="fa fa-power-off fa-fw"></i> 关闭全部</a>
</dd>
</dl>
</li>
</ul>
<div class="indent-tab right fa fa-step-forward fa-fw"></div>
<ul class="layui-tab-title">
<li class="home layui-this"><i class="fa fa-home fa-fw"></i></li>
</ul>
<div class="layui-tab-content">
<div class="layui-tab-item layui-show">
<iframe src='/Home/Index' frameborder="0" scrolling="yes" class="hg-iframe"></iframe>
</div>
</div>
</div>
</div>
</div>
<script>
//注意:element未作封装处理,使用layui.use引用
layui.use(['element'], function () {
var element = layui.element;
console.log('触发了layui.element');
});
function cleancache() {
var a = hg.load(function () {
var that = this;
setTimeout(function () {
//that.close(); //关闭加载层
a.close();
hg.msghide('清除服务器缓存成功.');
}, 2000);
})
}</script>
<script type="text/javascript" src="~/lib/admin/jquery-1.9.1.min.js"></script>
<script type="text/javascript" src="~/lib/Scrollbar/jquery.scrollBar.js"></script>
<!-- 请求进度条插件 -->
<script src='~/lib/nprogress/nprogress.js'></script>
</body>
</html>

23
AMESCoreStudio.Web/Views/Home/Index.cshtml

@ -0,0 +1,23 @@
@{
ViewData["Title"] = "AMES 1.0.0";
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Home</title>
<style>
html, body {
height: 98%;
}
</style>
</head>
<body>
<div style="text-align:center; background:#fff;width:100%;height:100%;overflow:hidden">
<div style="margin-top:16%;">
<img src="~/images/welcome.png" />
</div>
</div>
</body>
</html>

6
AMESCoreStudio.Web/Views/Home/Privacy.cshtml

@ -0,0 +1,6 @@
@{
ViewData["Title"] = "Privacy Policy";
}
<h1>@ViewData["Title"]</h1>
<p>Use this page to detail your site's privacy policy.</p>

25
AMESCoreStudio.Web/Views/Home/Refresh.cshtml

@ -0,0 +1,25 @@

@{
ViewData["Title"] = "ShowMsg";
Layout = "~/Views/Shared/_AMESLayout.cshtml";
}
@section Scripts {
<script type="text/javascript">
//关闭弹出层
hg.close();
hg.msg('@ViewBag.Msg');
@if(ViewBag.Data == "")
{
//刷新列表
@: parent.table && parent.table.reload();
}
else
{
//本地修改
@: parent.table && parent.table.update('@Html.Raw(ViewBag.Data)');
}
</script>
}

65
AMESCoreStudio.Web/Views/Login/Index.cshtml

@ -0,0 +1,65 @@
@model LoginViewModel
@{
ViewData["Title"] = "AMES 1.0.0";
Layout = null;
}
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>@ViewData["Title"]</title>
<link rel="stylesheet" href="~/css/style.css">
<link rel="stylesheet" href="~/lib/layui/css/layui.css" media="all">
<script type="text/javascript" src="~/lib/admin/jquery-1.9.1.min.js"></script>
<script type="text/javascript" src="~/lib/layui/layui.js"></script>
<script>var device = layui.device();
if (device.android || device.ios || device.weixin) {
location.href = "/Login/Index";
}
console.log(device);</script>
</head>
<body class="layui-login">
<form id="frmlogin" action="/Login/Index" method="post" class="layui-form">
@Html.AntiForgeryToken()
<div class="login-wrap">
<div class="login-right">
<div class="login-cir"></div>
<div class="login-logo" alt="AMES"></div>
<div class="login-form" style="padding: 20px 30px">
<div class="col">
@Html.TextBoxFor(model => model.LoginNo, new { @id = "userid", @class = "login-input", @placeholder = "用戶", @lay_verify = "required", @lay_verType = "tips" })
@*<input name="username" lay-verify="required" placeholder="用户名" type="text" class="login-input">*@
<label class="icon user" for="txtUserName"></label>
</div>
<div class="col">
@Html.TextBoxFor(model => model.LoginPassword, new { @id = "userid", @class = "login-input", @placeholder = "密碼", @lay_verify = "required", @lay_verType = "tips", @type = "password" })
@*<input name="password" lay-verify="required" placeholder="密碼" type="password" lay-verType="tips" class="login-input">*@
<label class="icon pwd" for="txtPassword" ></label>
</div>
<div class="col">
<input type="submit" value="登錄" lay-submit="" lay-filter="login" class="login-btn">
</div>
<span style="color:firebrick;word-break: break-all;">@Html.ValidationSummary()</span>
</div>
</div>
<div class="login-left"><img src="~/images/mes_logo.png" style="width:607px;height:445px;" asp-append-version="true" /></div>
</div>
<div class="footer ">
<div class=" layui-row" style="width:980px; margin:0 auto;">
<div class="layui-col-md6"><a href="#" style=" color: #fff;"></a></div>
</div>
</div>
</form>
<script>$(function () {
layui.use('form', function () {
var form = layui.form;
form.on('submit(login)', function (data) {
});
});
})</script>
</body>
</html>

108
AMESCoreStudio.Web/Views/SYS/SYS001.cshtml

@ -0,0 +1,108 @@
@{
ViewData["Title"] = "系統資料管理";
Layout = "~/Views/Shared/_AMESLayout.cshtml";
}
<div class="layui-card">
<div class="layui-card-header">
<div class="layui-form">
<div class="layui-form-item ">
<div class="layui-inline"><i class="fa fa-file-text-o fa-fw"></i> @ViewBag.Title</div>
</div>
</div>
</div>
<div class="layui-card-body">
<table class="layui-hide" id="test" lay-filter="test"></table>
</div>
</div>
@section Scripts{
<script type="text/javascript">
//监听表单提交事件
hg.form.onsubmit('querysubmit', function (data) {
table && table.reload(data);
});
var tableCols = [[
{
field: 'systemID',
width: 160,
title: '系統編號',
sort: true
},
{
field: 'systemNo',
width: 200,
title: '系統代碼'
},
{
field: 'systemName',
minWidth: 200,
title: '系統名稱'
},
{
field: 'systemDesc',
title: '系統描述',
width: 160
},
{
field: 'sortSeq',
title: '排序',
width: 160,
sort: true
},
{
field: 'right',
width: 200,
title: '操作',
fixed: 'right',
templet: function (d) {
return '<a class="layui-btn layui-btn-normal layui-btn-xs layui-icon layui-icon-edit" lay-event="edit">修改</a> <a class="layui-btn layui-btn-danger layui-btn-xs layui-icon layui-icon-delete" lay-event="del">删除</a>'
}
}]
];
//通过行tool编辑,lay-event="edit"
function edit(obj) {
if (obj.data.systemID) {
hg.open('修改系統', '/SYS/SYS001U/' + obj.data.systemID, 720, 600);
}
}
//通过行tool删除,lay-event="del"
function del(obj) {
if (obj.data.systemID) {
hg.confirm("系統:" + obj.data.systemName + ",确定要删除吗?", function () {
$.ajax({
url: '/SYS/SYS001D',
data: { id: obj.data.systemID },
type: 'POST',
success: function (data) {
if (data.success) {
obj.del(); //只删本地数据
hg.msghide("删除成功!");
}
else {
hg.msg(data.msg);
}
},
error: function () {
hg.msg("网络请求失败!");
}
});
});
}
}
var toolbar = [{
text: '新增',
layuiicon: '&#xe608;',
class: 'layui-btn-normal',
handler: function () {
hg.open('新增系統', '/SYS/SYS001C', 720, 600);
}
}
];
//基本数据表格
var table = hg.table.datatable('test', '系統資料管理', '/SYS/GetSystemInfoes', {}, tableCols, toolbar, true, 'full-100', ['filter', 'print', 'exports']);
</script>
}

74
AMESCoreStudio.Web/Views/SYS/SYS001C.cshtml

@ -0,0 +1,74 @@
@model AMESCoreStudio.WebApi.SystemInfo
@{ ViewData["Title"] = "SYS001C";
Layout = "~/Views/Shared/_FormLayout.cshtml"; }
<style>
.control-label {
justify-content: flex-end !important;
}
</style>
<div class="row">
<div class="col-sm-12">
<form enctype="multipart/form-data" method="post" asp-action="SYS001Save">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="form-group form-inline my-sm-1">
<label asp-for="SystemNo" class="control-label col-sm-3"></label>
<input asp-for="SystemNo" class="form-control col-sm-9" placeholder="請輸入系統代碼" />
<span asp-validation-for="SystemNo" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="SystemName" class="control-label col-sm-3"></label>
<input asp-for="SystemName" class="form-control col-sm-9" placeholder="請輸入系統名稱" />
<span asp-validation-for="SystemName" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="SystemDesc" class="control-label col-sm-3"></label>
<input id="test1" asp-for="SystemDesc" class="form-control col-sm-9" placeholder="請輸入系統描述" />
<span asp-validation-for="SystemDesc" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="HideFlag" class="control-label col-sm-3"></label>
<div class="col-sm-9">
<div class="radio icheck-primary form-check-inline">
<input type="radio" id="Yes" asp-for="HideFlag" value="Y" />
<label for="Yes">&nbsp;是&nbsp;</label>
</div>
<div class="radio icheck-primary form-check-inline">
<input type="radio" id="N" asp-for="HideFlag" value="N" checked />
<label for="No">&nbsp;否&nbsp;</label>
</div>
</div>
<span asp-validation-for="HideFlag" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="SortSeq" class="control-label col-sm-3"></label>
<input asp-for="SortSeq" class="form-control col-sm-9" placeholder="請輸入排序值" />
<span asp-validation-for="SortSeq" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<span style="color: firebrick;word-break: break-all;" class="text-danger offset-sm-3">@Html.ValidationMessage("error")</span>
<div class="form-group">
<input type="submit" value="保存" class="btn btn-primary offset-sm-3" />
</div>
</form>
</div>
</div>
@section Scripts {
@{ await Html.RenderPartialAsync("_ValidationScriptsPartial");
await Html.RenderPartialAsync("_FileinputScriptsPartial"); }
<script type="text/javascript">
$(document).ready(function () {
var error = '@Html.ValidationMessage("error")';
if ($(error).text() != '') {
parent.hg.msg(error);
}
});
</script>
}

80
AMESCoreStudio.Web/Views/SYS/SYS001U.cshtml

@ -0,0 +1,80 @@
@model AMESCoreStudio.WebApi.SystemInfo
@{
ViewData["Title"] = "SYS001U";
Layout = "~/Views/Shared/_FormLayout.cshtml";
}
<style>
.control-label {
justify-content: flex-end !important;
}
</style>
<div class="row">
<div class="col-sm-12">
<form enctype="multipart/form-data" method="post" asp-action="SYS001Save">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<input type="hidden" asp-for="SystemID" />
<input type="hidden" asp-for="CreateUserId" />
<input type="hidden" asp-for="CreateDateTime" />
<input type="hidden" asp-for="UpdateUserId" />
<input type="hidden" asp-for="UpdateDateTime" />
<div class="form-group form-inline my-sm-1">
<label asp-for="SystemNo" class="control-label col-sm-3"></label>
<input asp-for="SystemNo" class="form-control col-sm-9" placeholder="請輸入系統代碼" />
<span asp-validation-for="SystemNo" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="SystemName" class="control-label col-sm-3"></label>
<input asp-for="SystemName" class="form-control col-sm-9" placeholder="請輸入系統名稱" />
<span asp-validation-for="SystemName" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="SystemDesc" class="control-label col-sm-3"></label>
<input asp-for="SystemDesc" class="form-control col-sm-9" placeholder="請輸入系統描述" />
<span asp-validation-for="SystemDesc" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="HideFlag" class="control-label col-sm-3"></label>
<div class="col-sm-9">
<div class="radio icheck-primary form-check-inline">
<input type="radio" id="Yes" asp-for="HideFlag" value="Y" />
<label for="Yes">&nbsp;是&nbsp;</label>
</div>
<div class="radio icheck-primary form-check-inline">
<input type="radio" id="N" asp-for="HideFlag" value="N" />
<label for="No">&nbsp;否&nbsp;</label>
</div>
</div>
<span asp-validation-for="HideFlag" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="SortSeq" class="control-label col-sm-3"></label>
<input asp-for="SortSeq" class="form-control col-sm-9" placeholder="請輸入排序" />
<span asp-validation-for="SortSeq" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group">
<input type="submit" value="保存" class="btn btn-primary offset-sm-3" />
</div>
</form>
</div>
</div>
@section Scripts {
@{
await Html.RenderPartialAsync("_ValidationScriptsPartial");
await Html.RenderPartialAsync("_FileinputScriptsPartial");
}
<script type="text/javascript">
$(document).ready(function () {
var error = '@Html.ValidationMessage("error")';
if ($(error).text() != '') {
parent.hg.msg(error);
}
});
</script>
}

108
AMESCoreStudio.Web/Views/SYS/SYS002.cshtml

@ -0,0 +1,108 @@
@{
ViewData["Title"] = "模組資料管理";
Layout = "~/Views/Shared/_AMESLayout.cshtml";
}
<div class="layui-card">
<div class="layui-card-header">
<div class="layui-form">
<div class="layui-form-item ">
<div class="layui-inline"><i class="fa fa-file-text-o fa-fw"></i> @ViewBag.Title</div>
</div>
</div>
</div>
<div class="layui-card-body">
<table class="layui-hide" id="test" lay-filter="test"></table>
</div>
</div>
@section Scripts{
<script type="text/javascript">
//监听表单提交事件
hg.form.onsubmit('querysubmit', function (data) {
table && table.reload(data);
});
var tableCols = [[
{
field: 'moduleID',
width: 160,
title: '模組編號',
sort: true
},
{
field: 'moduleNo',
width: 200,
title: '模組代碼'
},
{
field: 'moduleName',
minWidth: 200,
title: '模組名稱'
},
{
field: 'moduleDesc',
title: '模組描述',
width: 160
},
{
field: 'sortSeq',
title: '排序',
width: 160,
sort: true
},
{
field: 'right',
width: 200,
title: '操作',
fixed: 'right',
templet: function (d) {
return '<a class="layui-btn layui-btn-normal layui-btn-xs layui-icon layui-icon-edit" lay-event="edit">修改</a> <a class="layui-btn layui-btn-danger layui-btn-xs layui-icon layui-icon-delete" lay-event="del">删除</a>'
}
}]
];
//通过行tool编辑,lay-event="edit"
function edit(obj) {
if (obj.data.moduleID) {
hg.open('修改模組', '/SYS/SYS002U/' + obj.data.moduleID, 720, 600);
}
}
//通过行tool删除,lay-event="del"
function del(obj) {
if (obj.data.moduleID) {
hg.confirm("模組:" + obj.data.moduleName + ",确定要删除吗?", function () {
$.ajax({
url: '/SYS/SYS002D',
data: { id: obj.data.moduleID },
type: 'POST',
success: function (data) {
if (data.success) {
obj.del(); //只删本地数据
hg.msghide("删除成功!");
}
else {
hg.msg(data.msg);
}
},
error: function () {
hg.msg("网络请求失败!");
}
});
});
}
}
var toolbar = [{
text: '新增',
layuiicon: '&#xe608;',
class: 'layui-btn-normal',
handler: function () {
hg.open('新增模組', '/SYS/SYS002C', 720, 600);
}
}
];
//基本数据表格
var table = hg.table.datatable('test', '模組資料管理', '/SYS/GetModuleInfoes', {}, tableCols, toolbar, true, 'full-100', ['filter', 'print', 'exports']);
</script>
}

80
AMESCoreStudio.Web/Views/SYS/SYS002C.cshtml

@ -0,0 +1,80 @@
@model AMESCoreStudio.WebApi.ModuleInfo
@{ ViewData["Title"] = "SYS002C";
Layout = "~/Views/Shared/_FormLayout.cshtml"; }
<style>
.control-label {
justify-content: flex-end !important;
}
</style>
<div class="row">
<div class="col-sm-12">
<form enctype="multipart/form-data" method="post" asp-action="SYS002Save">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="form-group form-inline my-sm-1">
<label asp-for="ModuleNo" class="control-label col-sm-3"></label>
<input asp-for="ModuleNo" class="form-control col-sm-9" placeholder="請輸入模组代碼" />
<span asp-validation-for="ModuleNo" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="ModuleName" class="control-label col-sm-3"></label>
<input asp-for="ModuleName" class="form-control col-sm-9" placeholder="請輸入模组名稱" />
<span asp-validation-for="ModuleName" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="ModuleDesc" class="control-label col-sm-3"></label>
<input id="test1" asp-for="ModuleDesc" class="form-control col-sm-9" placeholder="請輸入模组描述" />
<span asp-validation-for="ModuleDesc" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="SystemID" class="control-label col-sm-3"></label>
<select asp-for="SystemID" asp-items="@ViewBag.SystemList" class="custom-select col-sm-9"></select>
<span asp-validation-for="SystemID" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="HideFlag" class="control-label col-sm-3"></label>
<div class="col-sm-9">
<div class="radio icheck-primary form-check-inline">
<input type="radio" id="Yes" asp-for="HideFlag" value="Y" />
<label for="Yes">&nbsp;是&nbsp;</label>
</div>
<div class="radio icheck-primary form-check-inline">
<input type="radio" id="N" asp-for="HideFlag" value="N" checked />
<label for="No">&nbsp;否&nbsp;</label>
</div>
</div>
<span asp-validation-for="HideFlag" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="SortSeq" class="control-label col-sm-3"></label>
<input asp-for="SortSeq" class="form-control col-sm-9" placeholder="請輸入排序值" />
<span asp-validation-for="SortSeq" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<span style="color: firebrick;word-break: break-all;" class="text-danger offset-sm-3">@Html.ValidationMessage("error")</span>
<div class="form-group">
<input type="submit" value="保存" class="btn btn-primary offset-sm-3" />
</div>
</form>
</div>
</div>
@section Scripts {
@{ await Html.RenderPartialAsync("_ValidationScriptsPartial");
await Html.RenderPartialAsync("_FileinputScriptsPartial"); }
<script type="text/javascript">
$(document).ready(function () {
var error = '@Html.ValidationMessage("error")';
if ($(error).text() != '') {
parent.hg.msg(error);
}
});
</script>
}

85
AMESCoreStudio.Web/Views/SYS/SYS002U.cshtml

@ -0,0 +1,85 @@
@model AMESCoreStudio.WebApi.ModuleInfo
@{
ViewData["Title"] = "SYS002U";
Layout = "~/Views/Shared/_FormLayout.cshtml";
}
<style>
.control-label {
justify-content: flex-end !important;
}
</style>
<div class="row">
<div class="col-sm-12">
<form enctype="multipart/form-data" method="post" asp-action="SYS002Save">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<input type="hidden" asp-for="ModuleID" />
<input type="hidden" asp-for="CreateUserId" />
<input type="hidden" asp-for="CreateDateTime" />
<input type="hidden" asp-for="UpdateUserId" />
<input type="hidden" asp-for="UpdateDateTime" />
<div class="form-group form-inline my-sm-1">
<label asp-for="ModuleNo" class="control-label col-sm-3"></label>
<input asp-for="ModuleNo" class="form-control col-sm-9" placeholder="請輸入模组代碼" />
<span asp-validation-for="ModuleNo" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="ModuleName" class="control-label col-sm-3"></label>
<input asp-for="ModuleName" class="form-control col-sm-9" placeholder="請輸入模组名稱" />
<span asp-validation-for="ModuleName" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="ModuleDesc" class="control-label col-sm-3"></label>
<input id="test1" asp-for="ModuleDesc" class="form-control col-sm-9" placeholder="請輸入模组描述" />
<span asp-validation-for="ModuleDesc" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="SystemID" class="control-label col-sm-3"></label>
<select asp-for="SystemID" asp-items="@ViewBag.SystemList" class="custom-select col-sm-9"></select>
<span asp-validation-for="SystemID" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="HideFlag" class="control-label col-sm-3"></label>
<div class="col-sm-9">
<div class="radio icheck-primary form-check-inline">
<input type="radio" id="Yes" asp-for="HideFlag" value="Y" />
<label for="Yes">&nbsp;是&nbsp;</label>
</div>
<div class="radio icheck-primary form-check-inline">
<input type="radio" id="N" asp-for="HideFlag" value="N" />
<label for="No">&nbsp;否&nbsp;</label>
</div>
</div>
<span asp-validation-for="HideFlag" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="SortSeq" class="control-label col-sm-3"></label>
<input asp-for="SortSeq" class="form-control col-sm-9" placeholder="請輸入排序值" />
<span asp-validation-for="SortSeq" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group">
<input type="submit" value="保存" class="btn btn-primary offset-sm-3" />
</div>
</form>
</div>
</div>
@section Scripts {
@{
await Html.RenderPartialAsync("_ValidationScriptsPartial");
await Html.RenderPartialAsync("_FileinputScriptsPartial");
}
<script type="text/javascript">
$(document).ready(function () {
var error = '@Html.ValidationMessage("error")';
if ($(error).text() != '') {
parent.hg.msg(error);
}
});
</script>
}

108
AMESCoreStudio.Web/Views/SYS/SYS003.cshtml

@ -0,0 +1,108 @@
@{
ViewData["Title"] = "功能資料管理";
Layout = "~/Views/Shared/_AMESLayout.cshtml";
}
<div class="layui-card">
<div class="layui-card-header">
<div class="layui-form">
<div class="layui-form-item ">
<div class="layui-inline"><i class="fa fa-file-text-o fa-fw"></i> @ViewBag.Title</div>
</div>
</div>
</div>
<div class="layui-card-body">
<table class="layui-hide" id="test" lay-filter="test"></table>
</div>
</div>
@section Scripts{
<script type="text/javascript">
//监听表单提交事件
hg.form.onsubmit('querysubmit', function (data) {
table && table.reload(data);
});
var tableCols = [[
{
field: 'programID',
width: 160,
title: '功能編號',
sort: true
},
{
field: 'programNo',
width: 200,
title: '功能代碼'
},
{
field: 'programName',
minWidth: 200,
title: '功能名稱'
},
{
field: 'programDesc',
title: '功能描述',
width: 160
},
{
field: 'sortSeq',
title: '排序',
width: 160,
sort: true
},
{
field: 'right',
width: 200,
title: '操作',
fixed: 'right',
templet: function (d) {
return '<a class="layui-btn layui-btn-normal layui-btn-xs layui-icon layui-icon-edit" lay-event="edit">修改</a> <a class="layui-btn layui-btn-danger layui-btn-xs layui-icon layui-icon-delete" lay-event="del">删除</a>'
}
}]
];
//通过行tool编辑,lay-event="edit"
function edit(obj) {
if (obj.data.programID) {
hg.open('修改功能', '/SYS/SYS003U/' + obj.data.programID, 720, 600);
}
}
//通过行tool删除,lay-event="del"
function del(obj) {
if (obj.data.programID) {
hg.confirm("功能:" + obj.data.programName + ",确定要删除吗?", function () {
$.ajax({
url: '/SYS/SYS003D',
data: { id: obj.data.programID },
type: 'POST',
success: function (data) {
if (data.success) {
obj.del(); //只删本地数据
hg.msghide("删除成功!");
}
else {
hg.msg(data.msg);
}
},
error: function () {
hg.msg("网络请求失败!");
}
});
});
}
}
var toolbar = [{
text: '新增',
layuiicon: '&#xe608;',
class: 'layui-btn-normal',
handler: function () {
hg.open('新增模組', '/SYS/SYS003C', 720, 600);
}
}
];
//基本数据表格
var table = hg.table.datatable('test', '功能資料管理', '/SYS/GetProgramInfoes', {}, tableCols, toolbar, true, 'full-100', ['filter', 'print', 'exports']);
</script>
}

85
AMESCoreStudio.Web/Views/SYS/SYS003C.cshtml

@ -0,0 +1,85 @@
@model AMESCoreStudio.WebApi.ProgramInfo
@{ ViewData["Title"] = "SYS003C";
Layout = "~/Views/Shared/_FormLayout.cshtml"; }
<style>
.control-label {
justify-content: flex-end !important;
}
</style>
<div class="row">
<div class="col-sm-12">
<form enctype="multipart/form-data" method="post" asp-action="SYS003Save">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="form-group form-inline my-sm-1">
<label asp-for="ProgramNo" class="control-label col-sm-3"></label>
<input asp-for="ProgramNo" class="form-control col-sm-9" placeholder="請輸入功能代碼" />
<span asp-validation-for="ProgramNo" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="ProgramName" class="control-label col-sm-3"></label>
<input asp-for="ProgramName" class="form-control col-sm-9" placeholder="請輸入功能名稱" />
<span asp-validation-for="ProgramName" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="ProgramDesc" class="control-label col-sm-3"></label>
<input id="test1" asp-for="ProgramDesc" class="form-control col-sm-9" placeholder="請輸入功能描述" />
<span asp-validation-for="ProgramDesc" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="ProgramPath" class="control-label col-sm-3"></label>
<input id="test1" asp-for="ProgramPath" class="form-control col-sm-9" placeholder="請輸入功能路徑" />
<span asp-validation-for="ProgramPath" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="ModuleID" class="control-label col-sm-3"></label>
<select asp-for="ModuleID" asp-items="@ViewBag.ModuleList" class="custom-select col-sm-9"></select>
<span asp-validation-for="ModuleID" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="HideFlag" class="control-label col-sm-3"></label>
<div class="col-sm-9">
<div class="radio icheck-primary form-check-inline">
<input type="radio" id="Yes" asp-for="HideFlag" value="Y" />
<label for="Yes">&nbsp;是&nbsp;</label>
</div>
<div class="radio icheck-primary form-check-inline">
<input type="radio" id="N" asp-for="HideFlag" value="N" checked />
<label for="No">&nbsp;否&nbsp;</label>
</div>
</div>
<span asp-validation-for="HideFlag" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="SortSeq" class="control-label col-sm-3"></label>
<input asp-for="SortSeq" class="form-control col-sm-9" placeholder="請輸入排序值" />
<span asp-validation-for="SortSeq" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<span style="color: firebrick;word-break: break-all;" class="text-danger offset-sm-3">@Html.ValidationMessage("error")</span>
<div class="form-group">
<input type="submit" value="保存" class="btn btn-primary offset-sm-3" />
</div>
</form>
</div>
</div>
@section Scripts {
@{ await Html.RenderPartialAsync("_ValidationScriptsPartial");
await Html.RenderPartialAsync("_FileinputScriptsPartial"); }
<script type="text/javascript">
$(document).ready(function () {
var error = '@Html.ValidationMessage("error")';
if ($(error).text() != '') {
parent.hg.msg(error);
}
});
</script>
}

90
AMESCoreStudio.Web/Views/SYS/SYS003U.cshtml

@ -0,0 +1,90 @@
@model AMESCoreStudio.WebApi.ProgramInfo
@{
ViewData["Title"] = "SYS003U";
Layout = "~/Views/Shared/_FormLayout.cshtml";
}
<style>
.control-label {
justify-content: flex-end !important;
}
</style>
<div class="row">
<div class="col-sm-12">
<form enctype="multipart/form-data" method="post" asp-action="SYS003Save">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<input type="hidden" asp-for="ProgramID" />
<input type="hidden" asp-for="CreateUserId" />
<input type="hidden" asp-for="CreateDateTime" />
<input type="hidden" asp-for="UpdateUserId" />
<input type="hidden" asp-for="UpdateDateTime" />
<div class="form-group form-inline my-sm-1">
<label asp-for="ProgramNo" class="control-label col-sm-3"></label>
<input asp-for="ProgramNo" class="form-control col-sm-9" placeholder="請輸入功能代碼" />
<span asp-validation-for="ProgramNo" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="ProgramName" class="control-label col-sm-3"></label>
<input asp-for="ProgramName" class="form-control col-sm-9" placeholder="請輸入功能名稱" />
<span asp-validation-for="ProgramName" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="ProgramDesc" class="control-label col-sm-3"></label>
<input id="test1" asp-for="ProgramDesc" class="form-control col-sm-9" placeholder="請輸入功能描述" />
<span asp-validation-for="ProgramDesc" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="ProgramPath" class="control-label col-sm-3"></label>
<input id="test1" asp-for="ProgramPath" class="form-control col-sm-9" placeholder="請輸入功能路徑" />
<span asp-validation-for="ProgramPath" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="ModuleID" class="control-label col-sm-3"></label>
<select asp-for="ModuleID" asp-items="@ViewBag.ModuleList" class="custom-select col-sm-9"></select>
<span asp-validation-for="ModuleID" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="HideFlag" class="control-label col-sm-3"></label>
<div class="col-sm-9">
<div class="radio icheck-primary form-check-inline">
<input type="radio" id="Yes" asp-for="HideFlag" value="Y" />
<label for="Yes">&nbsp;是&nbsp;</label>
</div>
<div class="radio icheck-primary form-check-inline">
<input type="radio" id="N" asp-for="HideFlag" value="N" />
<label for="No">&nbsp;否&nbsp;</label>
</div>
</div>
<span asp-validation-for="HideFlag" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="SortSeq" class="control-label col-sm-3"></label>
<input asp-for="SortSeq" class="form-control col-sm-9" placeholder="請輸入排序值" />
<span asp-validation-for="SortSeq" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group">
<input type="submit" value="保存" class="btn btn-primary offset-sm-3" />
</div>
</form>
</div>
</div>
@section Scripts {
@{
await Html.RenderPartialAsync("_ValidationScriptsPartial");
await Html.RenderPartialAsync("_FileinputScriptsPartial");
}
<script type="text/javascript">
$(document).ready(function () {
var error = '@Html.ValidationMessage("error")';
if ($(error).text() != '') {
parent.hg.msg(error);
}
});
</script>
}

102
AMESCoreStudio.Web/Views/SYS/SYS004.cshtml

@ -0,0 +1,102 @@
@{
ViewData["Title"] = "角色資料管理";
Layout = "~/Views/Shared/_AMESLayout.cshtml";
}
<div class="layui-card">
<div class="layui-card-header">
<div class="layui-form">
<div class="layui-form-item ">
<div class="layui-inline"><i class="fa fa-file-text-o fa-fw"></i> @ViewBag.Title</div>
</div>
</div>
</div>
<div class="layui-card-body">
<table class="layui-hide" id="test" lay-filter="test"></table>
</div>
</div>
@section Scripts{
<script type="text/javascript">
//监听表单提交事件
hg.form.onsubmit('querysubmit', function (data) {
table && table.reload(data);
});
var tableCols = [[
{
field: 'roleID',
width: 160,
title: '角色編號',
sort: true
},
{
field: 'roleNo',
width: 200,
title: '角色代碼'
},
{
field: 'roleName',
minWidth: 200,
title: '角色名稱'
},
{
field: 'roleDesc',
title: '角色描述',
width: 160
},
{
field: 'right',
width: 200,
title: '操作',
fixed: 'right',
templet: function (d) {
return '<a class="layui-btn layui-btn-normal layui-btn-xs layui-icon layui-icon-edit" lay-event="edit">修改</a> <a class="layui-btn layui-btn-danger layui-btn-xs layui-icon layui-icon-delete" lay-event="del">删除</a>'
}
}]
];
//通过行tool编辑,lay-event="edit"
function edit(obj) {
if (obj.data.roleID) {
hg.open('修改角色', '/SYS/SYS004U/' + obj.data.roleID, 720, 600);
}
}
//通过行tool删除,lay-event="del"
function del(obj) {
if (obj.data.roleID) {
hg.confirm("角色:" + obj.data.roleName + ",确定要删除吗?", function () {
$.ajax({
url: '/SYS/SYS004D',
data: { id: obj.data.roleID },
type: 'POST',
success: function (data) {
if (data.success) {
obj.del(); //只删本地数据
hg.msghide("删除成功!");
}
else {
hg.msg(data.msg);
}
},
error: function () {
hg.msg("网络请求失败!");
}
});
});
}
}
var toolbar = [{
text: '新增',
layuiicon: '&#xe608;',
class: 'layui-btn-normal',
handler: function () {
hg.open('新增角色', '/SYS/SYS004C', 720, 600);
}
}
];
//基本数据表格
var table = hg.table.datatable('test', '角色資料管理', '/SYS/GetRoleInfoes', {}, tableCols, toolbar, true, 'full-100', ['filter', 'print', 'exports']);
</script>
}

55
AMESCoreStudio.Web/Views/SYS/SYS004C.cshtml

@ -0,0 +1,55 @@
@model AMESCoreStudio.WebApi.RoleInfo
@{ ViewData["Title"] = "SYS004C";
Layout = "~/Views/Shared/_FormLayout.cshtml"; }
<style>
.control-label {
justify-content: flex-end !important;
}
</style>
<div class="row">
<div class="col-sm-12">
<form enctype="multipart/form-data" method="post" asp-action="SYS004Save">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="form-group form-inline my-sm-1">
<label asp-for="RoleNo" class="control-label col-sm-3"></label>
<input asp-for="RoleNo" class="form-control col-sm-9" placeholder="請輸入角色代碼" />
<span asp-validation-for="RoleNo" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="RoleName" class="control-label col-sm-3"></label>
<input asp-for="RoleName" class="form-control col-sm-9" placeholder="請輸入角色名稱" />
<span asp-validation-for="RoleName" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="RoleDesc" class="control-label col-sm-3"></label>
<input id="test1" asp-for="RoleDesc" class="form-control col-sm-9" placeholder="請輸入角色描述" />
<span asp-validation-for="RoleDesc" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<span style="color: firebrick;word-break: break-all;" class="text-danger offset-sm-3">@Html.ValidationMessage("error")</span>
<div class="form-group">
<input type="submit" value="保存" class="btn btn-primary offset-sm-3" />
</div>
</form>
</div>
</div>
@section Scripts {
@{ await Html.RenderPartialAsync("_ValidationScriptsPartial");
await Html.RenderPartialAsync("_FileinputScriptsPartial"); }
<script type="text/javascript">
$(document).ready(function () {
var error = '@Html.ValidationMessage("error")';
if ($(error).text() != '') {
parent.hg.msg(error);
}
});
</script>
}

61
AMESCoreStudio.Web/Views/SYS/SYS004U.cshtml

@ -0,0 +1,61 @@
@model AMESCoreStudio.WebApi.RoleInfo
@{
ViewData["Title"] = "SYS004U";
Layout = "~/Views/Shared/_FormLayout.cshtml";
}
<style>
.control-label {
justify-content: flex-end !important;
}
</style>
<div class="row">
<div class="col-sm-12">
<form enctype="multipart/form-data" method="post" asp-action="SYS004Save">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<input type="hidden" asp-for="RoleID" />
<input type="hidden" asp-for="CreateUserId" />
<input type="hidden" asp-for="CreateDateTime" />
<input type="hidden" asp-for="UpdateUserId" />
<input type="hidden" asp-for="UpdateDateTime" />
<div class="form-group form-inline my-sm-1">
<label asp-for="RoleNo" class="control-label col-sm-3"></label>
<input asp-for="RoleNo" class="form-control col-sm-9" placeholder="請輸入角色代碼" />
<span asp-validation-for="RoleNo" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="RoleName" class="control-label col-sm-3"></label>
<input asp-for="RoleName" class="form-control col-sm-9" placeholder="請輸入角色名稱" />
<span asp-validation-for="RoleName" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="RoleDesc" class="control-label col-sm-3"></label>
<input id="test1" asp-for="RoleDesc" class="form-control col-sm-9" placeholder="請輸入角色描述" />
<span asp-validation-for="RoleDesc" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group">
<input type="submit" value="保存" class="btn btn-primary offset-sm-3" />
</div>
</form>
</div>
</div>
@section Scripts {
@{
await Html.RenderPartialAsync("_ValidationScriptsPartial");
await Html.RenderPartialAsync("_FileinputScriptsPartial");
}
<script type="text/javascript">
$(document).ready(function () {
var error = '@Html.ValidationMessage("error")';
if ($(error).text() != '') {
parent.hg.msg(error);
}
});
</script>
}

222
AMESCoreStudio.Web/Views/SYS/SYS007.cshtml

@ -0,0 +1,222 @@
@{
ViewData["Title"] = "部门資料管理";
Layout = "~/Views/Shared/_AMESLayout.cshtml";
}
<div class="layui-card">
<div class="layui-card-header">
<div class="layui-form">
<div class="layui-form-item ">
<div class="layui-inline"><i class="fa fa-file-text-o fa-fw"></i> @ViewBag.Title</div>
</div>
</div>
</div>
<div class="layui-card-body">
<div class="layui-form">
<div class="layui-form-item">
<div class="layui-inline">
<button type="button" id="btnAdd" class="layui-btn layui-btn-normal layui-btn-sm"><i class="layui-icon">&#xe654;</i>添加部门</button>
</div>
<div class="layui-inline" style="margin-left:10px;">
<div class="layui-btn-group">
<button type="button" class="layui-btn layui-btn-primary layui-btn-sm refresh"><i class="layui-icon">&#xe669;</i>刷新</button>
<button type="button" class="layui-btn layui-btn-primary layui-btn-sm open-all"><i class="layui-icon">&#xe61a;</i>展开</button>
<button type="button" class="layui-btn layui-btn-primary layui-btn-sm close-all"><i class="layui-icon">&#xe602;</i>折叠</button>
</div>
</div>
<div class="layui-inline" style="margin-right:0px;">
<input type="text" class="layui-input" id="edtSearch" value="" placeholder="输入关键字" style="display: inline-block;width: 140px;height: 30px;line-height: 30px;margin-left:20px;" />
</div>
<div class="layui-inline" style="margin-left:0px;">
<div class="layui-btn-group">
<button id="btnSearch" class="layui-btn layui-btn-sm layui-btn-normal">
<i class="layui-icon">&#xe615;</i>搜索
</button>
<button id="btnClearSearch" class="layui-btn layui-btn-sm layui-btn-primary">
<i class="layui-icon">&#x1006;</i>清除
</button>
</div>
</div>
</div>
</div>
<table class="layui-hide" id="test" lay-filter="test"></table>
</div>
</div>
@section Scripts{
<script type="text/javascript">
var treeTable;
layui.config({
base: '../lib/layui_ext/'
}).extend({
treeTable: 'treetable/treeTable'
}).use(['treeTable'], function () {
treeTable = layui.treeTable;
treeTable.on('tool(test)', function (obj) {
if (obj.event == 'add') {
hg.open('添加部门', '/SYS/SYS007C/' + obj.data.deptID, 600, 480);
}
if (obj.event == 'edit') {
hg.open('编辑部门', '/SYS/SYS007U/' + obj.data.deptID, 600, 480);
}
if (obj.event == 'del') {
hg.confirm('确定删除[' + obj.data.deptName + ']吗?', function () {
$.ajax({
url: '/SYS/SYS007D',
data: { id: obj.data.deptID },
type: 'POST',
success: function (result) {
if (result.success) {
hg.msghide("删除成功!");
//本地移除数据
layui.each(data, function (i, d) {
if (d.id == obj.data.deptID) {
data.splice(i, 1);
return false;
}
});
init(data);
request();
}
else {
hg.msg(result.msg);
}
},
error: function () {
hg.msg("网络请求失败!");
}
});
});
}
});
});
var data = [];
$(document).ready(function () {
request();
});
function request() {
hg.request('/SYS/GetDeptInfoes', function (result) {
data = result.data;
init(data);
});
}
var insTb;
function init(data) {
insTb = treeTable.render({
elem: '#test',
height: 'full-180',
text: {
none: '<div style="padding: 18px 0;">暂无数据</div>'
},
data: data,
tree: {
iconIndex: 0,
isPidData: true,
idName: 'deptID',
pidName: 'parentDeptID',
arrowType: 'arrow2',
getIcon: function (item) {
if (item.children != null && item.children.length > 0) {
return '<i class="ew-tree-icon ew-tree-icon-folder"></i>';
} else {
return '<i class="ew-tree-icon ew-tree-icon-file"></i>';
}
}
},
cols: [
{ field: 'deptID', title: '部门编号', width: 200 },
{ field: 'deptNo', title: '部门代碼', width: 200 },
{ field: 'deptName', title: '部门名称', width: 300 },
{ field: 'deptDesc', title: '部门描述' },
{
align: 'center', title: '操作',
templet: function (item) {
var btns = '';
if (item.deptTypeID == 0) {
btns = btns + '<a class="layui-btn layui-btn-xs layui-btn-normal" lay-event="add">添加</a>';
}
else {
btns = btns + '<a class="layui-btn layui-btn-xs layui-btn-disabled" lay-event="add">添加</a>';
}
btns = btns + '<a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>';
if (item.children != null && item.children.length > 0) {
btns = btns + '<a class="layui-btn layui-btn-danger layui-btn-xs layui-btn-disabled">删除</button>';
}
else {
btns = btns + '<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>';
}
return btns;
}
}
],
style: 'margin-top:0;',
done: function () {
}
});
insTb.expandAll();
}
// 全部展开
$('.open-all').click(function () {
insTb.expandAll();
});
// 全部折叠
$('.close-all').click(function () {
insTb.foldAll();
});
//刷新
$('.refresh').click(function () {
request();
});
//搜索
$('#btnSearch').click(function () {
var keywords = $('#edtSearch').val();
if (keywords) {
insTb.filterData(keywords);
} else {
insTb.clearFilter();
}
});
//清除
$('#btnClearSearch').click(function () {
$('#edtSearch').val("");
insTb.clearFilter();
});
$('#btnAdd').click(function () {
hg.open('添加部门', '/SYS/SYS007C/0', 600, 480);
});
//通过table定义reload刷新列表,update本地填充一条数据
var TABLE = function () {
return {
reload: function () {
request();
},
update: function (d) {
var model = $.parseJSON(d);
var up = false;
layui.each(data, function (i, d) {
if (d.id == model.id) {
data[i] = model;
up = true;
return false;
}
});
up || data.push(model);
init(data);
}
}
}
var table = new TABLE();
</script>
}

69
AMESCoreStudio.Web/Views/SYS/SYS007C.cshtml

@ -0,0 +1,69 @@
@model AMESCoreStudio.WebApi.DeptInfo
@{ ViewData["Title"] = "SYS007C";
Layout = "~/Views/Shared/_FormLayout.cshtml"; }
<style>
.control-label {
justify-content: flex-end !important;
}
</style>
<div class="row">
<div class="col-sm-12">
<form enctype="multipart/form-data" method="post" asp-action="SYS007Save">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<input type="hidden" asp-for="ParentDeptID" />
<input type="hidden" asp-for="DeptTypeID" />
<div class="form-group form-inline my-sm-1">
<label asp-for="DeptNo" class="control-label col-sm-3"></label>
<input asp-for="DeptNo" class="form-control col-sm-9" placeholder="請輸入部门代碼" />
<span asp-validation-for="DeptNo" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="DeptName" class="control-label col-sm-3"></label>
<input asp-for="DeptName" class="form-control col-sm-9" placeholder="請輸入部门名称" />
<span asp-validation-for="DeptName" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="DeptDesc" class="control-label col-sm-3"></label>
<input asp-for="DeptDesc" class="form-control col-sm-9" placeholder="請輸入部门描述" />
<span asp-validation-for="DeptDesc" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="DeptTypeID" class="control-label col-sm-3"></label>
<select asp-for="DeptTypeID" asp-items="Html.GetEnumSelectList<AMESCoreStudio.WebApi.EnumDeptType>()" class="custom-select col-sm-8" disabled></select>
<span asp-validation-for="DeptTypeID" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="SortSeq" class="control-label col-sm-3"></label>
<input asp-for="SortSeq" class="form-control col-sm-9" placeholder="請輸入排序值" />
<span asp-validation-for="SortSeq" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<span style="color: firebrick;word-break: break-all;" class="text-danger offset-sm-3">@Html.ValidationMessage("error")</span>
<div class="form-group">
<input type="submit" value="保存" class="btn btn-primary offset-sm-3" />
</div>
</form>
</div>
</div>
@section Scripts {
@{ await Html.RenderPartialAsync("_ValidationScriptsPartial");
await Html.RenderPartialAsync("_FileinputScriptsPartial"); }
<script type="text/javascript">
$(document).ready(function () {
var error = '@Html.ValidationMessage("error")';
if ($(error).text() != '') {
parent.hg.msg(error);
}
});
</script>
}

69
AMESCoreStudio.Web/Views/SYS/SYS007U.cshtml

@ -0,0 +1,69 @@
@model AMESCoreStudio.WebApi.DeptInfo
@{
ViewData["Title"] = "SYS007U";
Layout = "~/Views/Shared/_FormLayout.cshtml";
}
<style>
.control-label {
justify-content: flex-end !important;
}
</style>
<div class="row">
<div class="col-sm-12">
<form enctype="multipart/form-data" method="post" asp-action="SYS007Save">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<input type="hidden" asp-for="DeptID" />
<input type="hidden" asp-for="ParentDeptID" />
<input type="hidden" asp-for="DeptTypeID" />
<<div class="form-group form-inline my-sm-1">
<label asp-for="DeptNo" class="control-label col-sm-3"></label>
<input asp-for="DeptNo" class="form-control col-sm-9" placeholder="請輸入部门代碼" />
<span asp-validation-for="DeptNo" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="DeptName" class="control-label col-sm-3"></label>
<input asp-for="DeptName" class="form-control col-sm-9" placeholder="請輸入部门名称" />
<span asp-validation-for="DeptName" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="DeptDesc" class="control-label col-sm-3"></label>
<input asp-for="DeptDesc" class="form-control col-sm-9" placeholder="請輸入部门描述" />
<span asp-validation-for="DeptDesc" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="DeptTypeID" class="control-label col-sm-3"></label>
<select asp-for="DeptTypeID" asp-items="Html.GetEnumSelectList<AMESCoreStudio.WebApi.EnumDeptType>()" class="custom-select col-sm-8" disabled></select>
<span asp-validation-for="DeptTypeID" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="SortSeq" class="control-label col-sm-3"></label>
<input asp-for="SortSeq" class="form-control col-sm-9" placeholder="請輸入排序值" />
<span asp-validation-for="SortSeq" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group">
<input type="submit" value="保存" class="btn btn-primary offset-sm-3" />
</div>
</form>
</div>
</div>
@section Scripts {
@{
await Html.RenderPartialAsync("_ValidationScriptsPartial");
await Html.RenderPartialAsync("_FileinputScriptsPartial");
}
<script type="text/javascript">
$(document).ready(function () {
var error = '@Html.ValidationMessage("error")';
if ($(error).text() != '') {
parent.hg.msg(error);
}
});
</script>
}

107
AMESCoreStudio.Web/Views/SYS/SYS008.cshtml

@ -0,0 +1,107 @@
@{
ViewData["Title"] = "用户資料管理";
Layout = "~/Views/Shared/_AMESLayout.cshtml";
}
<div class="layui-card">
<div class="layui-card-header">
<div class="layui-form">
<div class="layui-form-item ">
<div class="layui-inline"><i class="fa fa-file-text-o fa-fw"></i> @ViewBag.Title</div>
</div>
</div>
</div>
<div class="layui-card-body">
<table class="layui-hide" id="dat" lay-filter="dat"></table>
</div>
</div>
@section Scripts{
<script type="text/javascript">
//监听表单提交事件
hg.form.onsubmit('querysubmit', function (data) {
table && table.reload(data);
});
var tableCols = [[
{
field: 'userID',
width: 160,
title: '用户編號',
sort: true
},
{
field: 'userNo',
width: 160,
title: '用户代碼',
sort: true
},
{
field: 'userName',
title: '用户名称',
width:200
},
{
field: 'userEMail',
title: '電子郵件',
width: 200
},
{
field: 'userCellPhone',
title: '手機號碼'
},
{
field: 'right',
width: 200,
title: '操作',
fixed: 'right',
templet: function (d) {
return '<a class="layui-btn layui-btn-normal layui-btn-xs layui-icon layui-icon-edit" lay-event="edit">修改</a> <a class="layui-btn layui-btn-danger layui-btn-xs layui-icon layui-icon-delete" lay-event="del">删除</a>'
}
}]
];
//通过行tool编辑,lay-event="edit"
function edit(obj) {
if (obj.data.userID) {
hg.open('修改用户', '/SYS/SYS008U/' + obj.data.userID, 640, 640);
}
}
//通过行tool删除,lay-event="del"
function del(obj) {
if (obj.data.userID) {
hg.confirm("用户:" + obj.data.userName + ",确定要删除吗?", function () {
$.ajax({
url: '/SYS/SYS008D',
data: { id: obj.data.userID },
type: 'POST',
success: function (data) {
if (data.success) {
obj.del(); //只删本地数据
hg.msghide("删除成功!");
}
else {
hg.msg(data.msg);
}
},
error: function () {
hg.msg("网络请求失败!");
}
});
});
}
}
var toolbar = [{
text: '新增',
layuiicon: '&#xe608;',
class: 'layui-btn-normal',
handler: function () {
hg.open('新增用户', '/SYS/SYS008C', 640, 640);
}
}
];
//基本数据表格
var table = hg.table.datatable('dat', '用户資料管理', '/SYS/GetUserInfoes', {}, tableCols, toolbar, true, 'full-100', ['filter', 'print', 'exports']);
</script>
}

81
AMESCoreStudio.Web/Views/SYS/SYS008C.cshtml

@ -0,0 +1,81 @@
@model AMESCoreStudio.WebApi.UserInfo
@{ ViewData["Title"] = "SYS008C";
Layout = "~/Views/Shared/_FormLayout.cshtml"; }
<style>
.control-label {
justify-content: flex-end !important;
}
</style>
<div class="row">
<div class="col-sm-12">
<form enctype="multipart/form-data" method="post" asp-action="SYS008Save">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="form-group form-inline my-sm-1">
<label asp-for="UserNo" class="control-label col-sm-3"></label>
<input asp-for="UserNo" class="form-control col-sm-9" placeholder="請輸入用户代碼" />
<span asp-validation-for="UserNo" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="UserName" class="control-label col-sm-3"></label>
<input asp-for="UserName" class="form-control col-sm-9" placeholder="請輸入用户名称" />
<span asp-validation-for="UserName" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="DeptID" class="control-label col-sm-3"></label>
<select asp-for="DeptID" asp-items="@ViewBag.DeptList" class="custom-select col-sm-9"></select>
<span asp-validation-for="DeptID" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="LoginNo" class="control-label col-sm-3"></label>
<input asp-for="LoginNo" class="form-control col-sm-9" placeholder="請輸入登入帳號" />
<span asp-validation-for="LoginNo" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="LoginPassword" class="control-label col-sm-3"></label>
<input asp-for="LoginPassword" type="password" class="form-control col-sm-9" placeholder="請輸入登入密碼" />
<span asp-validation-for="LoginPassword" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="UserEMail" class="control-label col-sm-3"></label>
<input asp-for="UserEMail" type="email" class="form-control col-sm-9" placeholder="請輸入用户郵件" />
<span asp-validation-for="UserEMail" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="UserCellPhone" class="control-label col-sm-3"></label>
<input asp-for="UserCellPhone" type="tel" class="form-control col-sm-9" placeholder="請輸入用戶手機" />
<span asp-validation-for="UserCellPhone" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="UserStatusID" class="control-label col-sm-3"></label>
<select asp-for="UserStatusID" asp-items="Html.GetEnumSelectList<AMESCoreStudio.WebApi.EnumUserStatus>()" class="custom-select col-sm-8" disabled></select>
<span asp-validation-for="UserStatusID" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<span style="color: firebrick;word-break: break-all;" class="text-danger offset-sm-3">@Html.ValidationMessage("error")</span>
<div class="form-group">
<input type="submit" value="保存" class="btn btn-primary offset-sm-3" />
</div>
</form>
</div>
</div>
@section Scripts {
@{ await Html.RenderPartialAsync("_ValidationScriptsPartial");
await Html.RenderPartialAsync("_FileinputScriptsPartial"); }
<script type="text/javascript">
$(document).ready(function () {
var error = '@Html.ValidationMessage("error")';
if ($(error).text() != '') {
parent.hg.msg(error);
}
});
</script>
}

83
AMESCoreStudio.Web/Views/SYS/SYS008U.cshtml

@ -0,0 +1,83 @@
@model AMESCoreStudio.WebApi.UserInfo
@{
ViewData["Title"] = "SYS008U";
Layout = "~/Views/Shared/_FormLayout.cshtml";
}
<style>
.control-label {
justify-content: flex-end !important;
}
</style>
<div class="row">
<div class="col-sm-12">
<form enctype="multipart/form-data" method="post" asp-action="SYS008Save">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<input type="hidden" asp-for="UserID" />
<input type="hidden" asp-for="LoginPassword" />
<div class="form-group form-inline my-sm-1">
<label asp-for="UserNo" class="control-label col-sm-3"></label>
<input asp-for="UserNo" class="form-control col-sm-9" placeholder="請輸入用户代碼" />
<span asp-validation-for="UserNo" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="UserName" class="control-label col-sm-3"></label>
<input asp-for="UserName" class="form-control col-sm-9" placeholder="請輸入用户名称" />
<span asp-validation-for="UserName" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="DeptID" class="control-label col-sm-3"></label>
<select asp-for="DeptID" asp-items="@ViewBag.DeptList" class="custom-select col-sm-9"></select>
<span asp-validation-for="DeptID" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="LoginNo" class="control-label col-sm-3"></label>
<input asp-for="LoginNo" class="form-control col-sm-9" placeholder="請輸入登入帳號" />
<span asp-validation-for="LoginNo" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="LoginPassword" class="control-label col-sm-3"></label>
<input asp-for="LoginPassword" type="password" class="form-control col-sm-9" placeholder="請輸入登入密碼" />
<span asp-validation-for="LoginPassword" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="UserEMail" class="control-label col-sm-3"></label>
<input asp-for="UserEMail" type="email" class="form-control col-sm-9" placeholder="請輸入用户郵件" />
<span asp-validation-for="UserEMail" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="UserCellPhone" class="control-label col-sm-3"></label>
<input asp-for="UserCellPhone" type="tel" class="form-control col-sm-9" placeholder="請輸入用戶手機" />
<span asp-validation-for="UserCellPhone" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group form-inline my-sm-1">
<label asp-for="UserStatusID" class="control-label col-sm-3"></label>
<select asp-for="UserStatusID" asp-items="Html.GetEnumSelectList<AMESCoreStudio.WebApi.EnumUserStatus>()" class="custom-select col-sm-8"></select>
<span asp-validation-for="UserStatusID" class="text-danger offset-sm-3 my-sm-1"></span>
</div>
<div class="form-group">
<input type="submit" value="保存" class="btn btn-primary offset-sm-3" />
</div>
</form>
</div>
</div>
@section Scripts {
@{
await Html.RenderPartialAsync("_ValidationScriptsPartial");
await Html.RenderPartialAsync("_FileinputScriptsPartial");
}
<script type="text/javascript">
$(document).ready(function () {
var error = '@Html.ValidationMessage("error")';
if ($(error).text() != '') {
parent.hg.msg(error);
}
});
</script>
}

25
AMESCoreStudio.Web/Views/Shared/Error.cshtml

@ -0,0 +1,25 @@
@model ErrorViewModel
@{
ViewData["Title"] = "Error";
}
<h1 class="text-danger">Error.</h1>
<h2 class="text-danger">An error occurred while processing your request.</h2>
@if (Model.ShowRequestId)
{
<p>
<strong>Request ID:</strong> <code>@Model.RequestId</code>
</p>
}
<h3>Development Mode</h3>
<p>
Swapping to <strong>Development</strong> environment will display more detailed information about the error that occurred.
</p>
<p>
<strong>The Development environment shouldn't be enabled for deployed applications.</strong>
It can result in displaying sensitive information from exceptions to end users.
For local debugging, enable the <strong>Development</strong> environment by setting the <strong>ASPNETCORE_ENVIRONMENT</strong> environment variable to <strong>Development</strong>
and restarting the app.
</p>

40
AMESCoreStudio.Web/Views/Shared/_AMESLayout.cshtml

@ -0,0 +1,40 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>@ViewBag.Title - AMES 1.0.0</title>
<meta name="renderer" content="webkit|ie-comp|ie-stand">
<meta http-equiv="hg-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no">
<meta http-equiv="Cache-Control" content="no-siteapp" />
<link rel="stylesheet" href="~/css/font-awesome.min.css">
<link rel="stylesheet" href="~/lib/layui/css/layui.css" media="all">
<link rel="stylesheet" href="~/lib/layui_ext/dtree/dtree.css" />
<link rel="stylesheet" href="~/lib/layui_ext/dtree/font/dtreefont.css" />
<link rel="stylesheet" href="~/lib/admin/admin.css" media="all">
<link rel="stylesheet" href="~/lib/Scrollbar/jquery.scrollbar.css">
<link rel='stylesheet' href='~/lib/nprogress/nprogress.css' />
<link rel="stylesheet" href="~/css/style.css" asp-append-version="true">
<!-- 让IE8/9支持媒体查询,从而兼容栅格 -->
<!--[if lt IE 9]>
<script src="https://cdn.staticfile.org/html5shiv/r29/html5.min.js"></script>
<script src="https://cdn.staticfile.org/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<body class="layui-body-content">
<div class="layui-fluid">
@RenderBody()
</div>
<script type="text/javascript" src="~/lib/layui/layui.js"></script>
<script type="text/javascript" src="~/lib/admin/admin.js" asp-append-version="true"></script>
<script type="text/javascript" src="~/lib/admin/jquery-1.9.1.min.js"></script>
<script type="text/javascript" src="~/lib/Scrollbar/jquery.scrollBar.js"></script>
<script type="text/javascript" src='~/lib/nprogress/nprogress.js'></script>
<!-- 业务公共方法 -->
<script src="~/js/site.js" asp-append-version="true"></script>
@RenderSection("Scripts", required: false)
</body>
</html>

3
AMESCoreStudio.Web/Views/Shared/_FileinputScriptsPartial.cshtml

@ -0,0 +1,3 @@
<link rel="stylesheet" href="~/lib/bootstrap-fileinput/fileinput.min.css" />
<script src="~/lib/bootstrap-fileinput/fileinput.min.js"></script>
<script src="~/lib/bootstrap-fileinput/zh.js"></script>

22
AMESCoreStudio.Web/Views/Shared/_FormLayout.cshtml

@ -0,0 +1,22 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>@ViewData["Title"]</title>
<link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.min.css" />
<link rel="stylesheet" href="~/lib/bootstrap/dist/css/icheck-bootstrap.min.css" />
<link rel="stylesheet" href="~/css/style.css" asp-append-version="true">
</head>
<body>
<div class="container">
<main role="main" class="py-3">
@RenderBody()
</main>
</div>
<script src="~/lib/jquery/dist/jquery.min.js"></script>
<script src="~/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
<script src="~/js/site.js" asp-append-version="true"></script>
@RenderSection("Scripts", required: false)
</body>
</html>

30
AMESCoreStudio.Web/Views/Shared/_Layout.cshtml

@ -0,0 +1,30 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>@ViewData["Title"] - AMESCoreStudio.Web</title>
<link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.min.css" />
<link rel="stylesheet" href="~/css/site.css" />
</head>
<body>
<header>
</header>
<div class="container" style="max-width:100%;padding-left:0px;padding-right:0px">
<main role="main" class="pb-3">
@RenderBody()
</main>
</div>
<footer class="border-top footer text-muted">
<div class="container" style="text-align:center">
&copy; 2021 - AMESCoreStudio
</div>
</footer>
<script src="~/lib/jquery/dist/jquery.min.js"></script>
<script src="~/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
<script src="~/js/site.js" asp-append-version="true"></script>
@RenderSection("Scripts", required: false)
</body>
</html>

48
AMESCoreStudio.Web/Views/Shared/_Layout2.cshtml

@ -0,0 +1,48 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>@ViewData["Title"] - AMESCoreStudio.Web</title>
<link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.min.css" />
<link rel="stylesheet" href="~/css/site.css" />
</head>
<body>
<header>
<nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-light bg-white border-bottom box-shadow mb-3">
<div class="container">
<a class="navbar-brand" asp-area="" asp-controller="Home" asp-action="Index">AMESCoreStudio.Web</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target=".navbar-collapse" aria-controls="navbarSupportedContent"
aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="navbar-collapse collapse d-sm-inline-flex flex-sm-row-reverse">
<ul class="navbar-nav flex-grow-1">
<li class="nav-item">
<a class="nav-link text-dark" asp-area="" asp-controller="Home" asp-action="Index">Home</a>
</li>
<li class="nav-item">
<a class="nav-link text-dark" asp-area="" asp-controller="Home" asp-action="Privacy">Privacy</a>
</li>
</ul>
</div>
</div>
</nav>
</header>
<div class="container">
<main role="main" class="pb-3">
@RenderBody()
</main>
</div>
<footer class="border-top footer text-muted">
<div class="container" style="text-align:center">
&copy; 2021 - AMESCoreStudio
</div>
</footer>
<script src="~/lib/jquery/dist/jquery.min.js"></script>
<script src="~/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
<script src="~/js/site.js" asp-append-version="true"></script>
@RenderSection("Scripts", required: false)
</body>
</html>

2
AMESCoreStudio.Web/Views/Shared/_ValidationScriptsPartial.cshtml

@ -0,0 +1,2 @@
<script src="~/lib/jquery-validation/dist/jquery.validate.min.js"></script>
<script src="~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"></script>

3
AMESCoreStudio.Web/Views/_ViewImports.cshtml

@ -0,0 +1,3 @@
@using AMESCoreStudio.Web
@using AMESCoreStudio.Web.Models
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers

3
AMESCoreStudio.Web/Views/_ViewStart.cshtml

@ -0,0 +1,3 @@
@{
Layout = "_Layout";
}

9
AMESCoreStudio.Web/appsettings.Development.json

@ -0,0 +1,9 @@
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
}
}

14
AMESCoreStudio.Web/appsettings.json

@ -0,0 +1,14 @@
{
"Setting": {
"Urls": "http://*:8080",
"ApiUrl": "http://127.0.0.1:5821"
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AllowedHosts": "*"
}

BIN
AMESCoreStudio.Web/bin/Debug/netcoreapp3.1/AMESCoreStudio.Web.Views.dll

Binary file not shown.

BIN
AMESCoreStudio.Web/bin/Debug/netcoreapp3.1/AMESCoreStudio.Web.Views.pdb

Binary file not shown.

6761
AMESCoreStudio.Web/bin/Debug/netcoreapp3.1/AMESCoreStudio.Web.deps.json

File diff suppressed because it is too large

BIN
AMESCoreStudio.Web/bin/Debug/netcoreapp3.1/AMESCoreStudio.Web.dll

Binary file not shown.

BIN
AMESCoreStudio.Web/bin/Debug/netcoreapp3.1/AMESCoreStudio.Web.exe

Binary file not shown.

BIN
AMESCoreStudio.Web/bin/Debug/netcoreapp3.1/AMESCoreStudio.Web.pdb

Binary file not shown.

9
AMESCoreStudio.Web/bin/Debug/netcoreapp3.1/AMESCoreStudio.Web.runtimeconfig.dev.json

@ -0,0 +1,9 @@
{
"runtimeOptions": {
"additionalProbingPaths": [
"C:\\Users\\RayLin\\.dotnet\\store\\|arch|\\|tfm|",
"C:\\Users\\RayLin\\.nuget\\packages",
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
]
}
}

13
AMESCoreStudio.Web/bin/Debug/netcoreapp3.1/AMESCoreStudio.Web.runtimeconfig.json

@ -0,0 +1,13 @@
{
"runtimeOptions": {
"tfm": "netcoreapp3.1",
"framework": {
"name": "Microsoft.AspNetCore.App",
"version": "3.1.0"
},
"configProperties": {
"System.GC.Server": true,
"System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false
}
}
}

BIN
AMESCoreStudio.Web/bin/Debug/netcoreapp3.1/AMESCoreStudio.WebApi.Views.dll

Binary file not shown.

BIN
AMESCoreStudio.Web/bin/Debug/netcoreapp3.1/AMESCoreStudio.WebApi.Views.pdb

Binary file not shown.

6646
AMESCoreStudio.Web/bin/Debug/netcoreapp3.1/AMESCoreStudio.WebApi.deps.json

File diff suppressed because it is too large

BIN
AMESCoreStudio.Web/bin/Debug/netcoreapp3.1/AMESCoreStudio.WebApi.dll

Binary file not shown.

BIN
AMESCoreStudio.Web/bin/Debug/netcoreapp3.1/AMESCoreStudio.WebApi.exe

Binary file not shown.

BIN
AMESCoreStudio.Web/bin/Debug/netcoreapp3.1/AMESCoreStudio.WebApi.pdb

Binary file not shown.

9
AMESCoreStudio.Web/bin/Debug/netcoreapp3.1/AMESCoreStudio.WebApi.runtimeconfig.dev.json

@ -0,0 +1,9 @@
{
"runtimeOptions": {
"additionalProbingPaths": [
"C:\\Users\\RayLin\\.dotnet\\store\\|arch|\\|tfm|",
"C:\\Users\\RayLin\\.nuget\\packages",
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
]
}
}

13
AMESCoreStudio.Web/bin/Debug/netcoreapp3.1/AMESCoreStudio.WebApi.runtimeconfig.json

@ -0,0 +1,13 @@
{
"runtimeOptions": {
"tfm": "netcoreapp3.1",
"framework": {
"name": "Microsoft.AspNetCore.App",
"version": "3.1.0"
},
"configProperties": {
"System.GC.Server": true,
"System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false
}
}
}

1196
AMESCoreStudio.Web/bin/Debug/netcoreapp3.1/AMESCoreStudio.WebApi.xml

File diff suppressed because it is too large

BIN
AMESCoreStudio.Web/bin/Debug/netcoreapp3.1/Castle.Core.dll

Binary file not shown.

BIN
AMESCoreStudio.Web/bin/Debug/netcoreapp3.1/Microsoft.AspNetCore.Mvc.Razor.Extensions.dll

Binary file not shown.

BIN
AMESCoreStudio.Web/bin/Debug/netcoreapp3.1/Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation.dll

Binary file not shown.

BIN
AMESCoreStudio.Web/bin/Debug/netcoreapp3.1/Microsoft.AspNetCore.Razor.Language.dll

Binary file not shown.

BIN
AMESCoreStudio.Web/bin/Debug/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.Workspaces.dll

Binary file not shown.

BIN
AMESCoreStudio.Web/bin/Debug/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.dll

Binary file not shown.

BIN
AMESCoreStudio.Web/bin/Debug/netcoreapp3.1/Microsoft.CodeAnalysis.Razor.dll

Binary file not shown.

BIN
AMESCoreStudio.Web/bin/Debug/netcoreapp3.1/Microsoft.CodeAnalysis.Workspaces.dll

Binary file not shown.

BIN
AMESCoreStudio.Web/bin/Debug/netcoreapp3.1/Microsoft.CodeAnalysis.dll

Binary file not shown.

BIN
AMESCoreStudio.Web/bin/Debug/netcoreapp3.1/Microsoft.Data.SqlClient.dll

Binary file not shown.

BIN
AMESCoreStudio.Web/bin/Debug/netcoreapp3.1/Microsoft.EntityFrameworkCore.Abstractions.dll

Binary file not shown.

BIN
AMESCoreStudio.Web/bin/Debug/netcoreapp3.1/Microsoft.EntityFrameworkCore.Proxies.dll

Binary file not shown.

BIN
AMESCoreStudio.Web/bin/Debug/netcoreapp3.1/Microsoft.EntityFrameworkCore.Relational.dll

Binary file not shown.

BIN
AMESCoreStudio.Web/bin/Debug/netcoreapp3.1/Microsoft.EntityFrameworkCore.SqlServer.dll

Binary file not shown.

BIN
AMESCoreStudio.Web/bin/Debug/netcoreapp3.1/Microsoft.EntityFrameworkCore.dll

Binary file not shown.

BIN
AMESCoreStudio.Web/bin/Debug/netcoreapp3.1/Microsoft.Extensions.Caching.Abstractions.dll

Binary file not shown.

BIN
AMESCoreStudio.Web/bin/Debug/netcoreapp3.1/Microsoft.Extensions.Caching.Memory.dll

Binary file not shown.

BIN
AMESCoreStudio.Web/bin/Debug/netcoreapp3.1/Microsoft.Extensions.Configuration.Abstractions.dll

Binary file not shown.

BIN
AMESCoreStudio.Web/bin/Debug/netcoreapp3.1/Microsoft.Extensions.DependencyInjection.Abstractions.dll

Binary file not shown.

BIN
AMESCoreStudio.Web/bin/Debug/netcoreapp3.1/Microsoft.Extensions.DependencyInjection.dll

Binary file not shown.

BIN
AMESCoreStudio.Web/bin/Debug/netcoreapp3.1/Microsoft.Extensions.DependencyModel.dll

Binary file not shown.

BIN
AMESCoreStudio.Web/bin/Debug/netcoreapp3.1/Microsoft.Extensions.Logging.Abstractions.dll

Binary file not shown.

BIN
AMESCoreStudio.Web/bin/Debug/netcoreapp3.1/Microsoft.Extensions.Logging.dll

Binary file not shown.

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save