diff --git a/ZR.Admin.WebApi/Framework/JsonConverterUtil.cs b/ZR.Admin.WebApi/Framework/JsonConverterUtil.cs new file mode 100644 index 0000000..cd22dec --- /dev/null +++ b/ZR.Admin.WebApi/Framework/JsonConverterUtil.cs @@ -0,0 +1,37 @@ +using System; +using System.Text.Json; +using System.Text.Json.Serialization; + +namespace ZR.Admin.WebApi.Framework +{ + public class JsonConverterUtil + { + public class DateTimeNullConverter : JsonConverter + { + public override DateTime? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + => string.IsNullOrEmpty(reader.GetString()) ? default(DateTime?) : ParseDateTime(reader.GetString()); + + public override void Write(Utf8JsonWriter writer, DateTime? value, JsonSerializerOptions options) + => writer.WriteStringValue(value?.ToString("yyyy-MM-dd HH:mm:ss")); + } + + public class DateTimeConverter : JsonConverter + { + public override DateTime Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + { + var dateTime = ParseDateTime(reader.GetString()); + return dateTime == null ? DateTime.MinValue : dateTime.Value; + } + + public override void Write(Utf8JsonWriter writer, DateTime value, JsonSerializerOptions options) + => writer.WriteStringValue(value.ToString("yyyy-MM-dd HH:mm:ss")); + } + + public static DateTime? ParseDateTime(string dateStr) + { + if (System.Text.RegularExpressions.Regex.IsMatch(dateStr, @"^\d{4}[/-]") && DateTime.TryParse(dateStr, null,System.Globalization.DateTimeStyles.AssumeLocal, out var dateVal)) + return dateVal; + return null; + } + } +} diff --git a/ZR.Admin.WebApi/Startup.cs b/ZR.Admin.WebApi/Startup.cs index 918fc54..aa0e1ce 100644 --- a/ZR.Admin.WebApi/Startup.cs +++ b/ZR.Admin.WebApi/Startup.cs @@ -18,6 +18,7 @@ using System.IO; using System.Linq; using ZR.Admin.WebApi.Extensions; using ZR.Admin.WebApi.Filters; +using ZR.Admin.WebApi.Framework; using ZR.Admin.WebApi.Middleware; namespace ZR.Admin.WebApi @@ -67,7 +68,12 @@ namespace ZR.Admin.WebApi options.Filters.Add(typeof(GlobalActionMonitor));//ȫע쳣 }) .AddMvcLocalization() - .AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix); + .AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix) + .AddJsonOptions(options => + { + options.JsonSerializerOptions.Converters.Add(new JsonConverterUtil.DateTimeConverter()); + options.JsonSerializerOptions.Converters.Add(new JsonConverterUtil.DateTimeNullConverter()); + }); services.AddSwaggerGen(c => { diff --git a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/VueTemplate.txt b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/VueTemplate.txt index 432f3fb..122f94a 100644 --- a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/VueTemplate.txt +++ b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/VueTemplate.txt @@ -186,12 +186,20 @@ export default { if (this.form.{PrimaryKey} != undefined || this.title === '修改数据') { update{ModelTypeName}(this.form).then((res) => { + if (!res.data) { + this.msgError("修改失败"); + return; + } this.msgSuccess("修改成功"); this.open = false; this.getList(); }); } else { add{ModelTypeName}(this.form).then((res) => { + if (!res.data) { + this.msgError("新增失败"); + return; + } this.msgSuccess("新增成功"); this.open = false; this.getList();