diff --git "a/.Net6\347\211\210\346\234\254/.dockerignore" "b/.Net6\347\211\210\346\234\254/.dockerignore" new file mode 100644 index 000000000..3729ff0cd --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/.dockerignore" @@ -0,0 +1,25 @@ +**/.classpath +**/.dockerignore +**/.env +**/.git +**/.gitignore +**/.project +**/.settings +**/.toolstarget +**/.vs +**/.vscode +**/*.*proj.user +**/*.dbmdl +**/*.jfm +**/azds.yaml +**/bin +**/charts +**/docker-compose* +**/Dockerfile* +**/node_modules +**/npm-debug.log +**/obj +**/secrets.dev.yaml +**/values.dev.yaml +LICENSE +README.md \ No newline at end of file diff --git "a/.Net6\347\211\210\346\234\254/Dockerfile" "b/.Net6\347\211\210\346\234\254/Dockerfile" new file mode 100644 index 000000000..017027c0b --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/Dockerfile" @@ -0,0 +1,44 @@ +#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging. +# +#FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base +#RUN apt-get update; apt-get install libfontconfig1 -y +# +#WORKDIR /app +#EXPOSE 9991 +# +#FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build +#WORKDIR /src +#COPY ["VOL.WebApi/VOL.WebApi.csproj", "VOL.WebApi/"] +#COPY ["VOL.System/VOL.System.csproj", "VOL.System/"] +#COPY ["VOL.Core/VOL.Core.csproj", "VOL.Core/"] +#COPY ["VOL.Entity/VOL.Entity.csproj", "VOL.Entity/"] +#COPY ["VOL.Order/VOL.Order.csproj", "VOL.Order/"] +#COPY ["VOL.AppManager/VOL.AppManager.csproj", "VOL.AppManager/"] +#COPY ["VOL.Builder/VOL.Builder.csproj", "VOL.Builder/"] +#RUN dotnet restore "VOL.WebApi/VOL.WebApi.csproj" +#COPY . . +#WORKDIR "/src/VOL.WebApi" +#RUN dotnet build "VOL.WebApi.csproj" -c Release -o /app/build +# +#FROM build AS publish +#RUN dotnet publish "VOL.WebApi.csproj" -c Release -o /app/publish +# +#FROM base AS final +#WORKDIR /app +#COPY --from=publish /app/publish . +#ENTRYPOINT ["dotnet", "VOL.WebApi.dll"] + +#docker run -p 3306:3306 --name volmysql \ +#--restart=always \ +#-v /home/mysql/data:/var/lib/mysql \ +#-e MYSQL_ROOT_PASSWORD=123456 \ +#-d mysql:5.7 + +#docker build -t volapi:1.0 . +#docker run -d --name volapi -v /etc/timezone:/etc/timezone:ro -v /etc/localtime:/etc/localtime:ro --restart=always --log-opt max-size=300m --log-opt max-file=3 --network=host volapi:1.0 + +FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build +WORKDIR /app +COPY . . +RUN apt-get update -y && apt-get install -y libgdiplus && apt-get clean && ln -s /usr/lib/libgdiplus.so /usr/lib/gdiplus.dll +ENTRYPOINT ["dotnet", "VOL.WebApi.dll"] \ No newline at end of file diff --git "a/.Net6\347\211\210\346\234\254/VOL.Builder/Services/Core/Partial/Sys_TableInfoService.cs" "b/.Net6\347\211\210\346\234\254/VOL.Builder/Services/Core/Partial/Sys_TableInfoService.cs" index b84eaf414..4bbe0e313 100644 --- "a/.Net6\347\211\210\346\234\254/VOL.Builder/Services/Core/Partial/Sys_TableInfoService.cs" +++ "b/.Net6\347\211\210\346\234\254/VOL.Builder/Services/Core/Partial/Sys_TableInfoService.cs" @@ -1,4 +1,4 @@ -using VOL.Builder.Utility; +using VOL.Builder.Utility; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.DependencyModel; using Newtonsoft.Json; @@ -36,7 +36,7 @@ private string StratName { if (startName == "") { - startName = WebProject.Substring(0, webProject.IndexOf('.')); + startName = WebProject.Substring(0, webProject.LastIndexOf('.')); } return startName; } @@ -482,7 +482,7 @@ public string CreateServices(string tableName, string nameSpace, string folderna } apiPath += $"\\Controllers\\{projectName}\\"; //生成Partial Api控制器 - if (!File.Exists($"{apiPath}Partial\\{tableName}Controller.cs")) + if (!FileHelper.FileExists($"{apiPath}Partial\\{tableName}Controller.cs")) { string partialController = FileHelper.ReadFile(@"Template\\Controller\\ControllerApiPartial.html") .Replace("{Namespace}", nameSpace).Replace("{TableName}", tableName).Replace("{StartName}", StratName); @@ -511,7 +511,7 @@ public string CreateServices(string tableName, string nameSpace, string folderna string fileName = "I" + tableName + "Service.cs"; //生成Partial IService类 - if (!File.Exists(path + "Partial\\" + fileName)) + if (!FileHelper.FileExists(path + "Partial\\" + fileName)) { domainContent = FileHelper.ReadFile("Template\\IServices\\IServiceBasePartial.html").Replace("{Namespace}", nameSpace).Replace("{TableName}", tableName).Replace("{StartName}", StratName); FileHelper.WriteFile(path + "Partial\\", fileName, domainContent); @@ -526,7 +526,7 @@ public string CreateServices(string tableName, string nameSpace, string folderna fileName = tableName + "Service.cs"; //生成Partial Service类 domainContent = FileHelper.ReadFile("Template\\Services\\ServiceBasePartial.html").Replace("{Namespace}", nameSpace).Replace("{TableName}", tableName).Replace("{StartName}", StratName); - if (!File.Exists(path + "Partial\\" + fileName)) + if (!FileHelper.FileExists(path + "Partial\\" + fileName)) { domainContent = FileHelper.ReadFile("Template\\Services\\ServiceBasePartial.html").Replace("{Namespace}", nameSpace).Replace("{TableName}", tableName).Replace("{StartName}", StratName); FileHelper.WriteFile(path + "Partial\\", fileName, domainContent); @@ -544,7 +544,7 @@ public string CreateServices(string tableName, string nameSpace, string folderna path = $"{frameworkFolder}\\{nameSpace}\\Controllers\\{ foldername}\\"; fileName = tableName + "Controller.cs"; //生成Partial web控制器 - if (!File.Exists(path + "Partial\\" + fileName)) + if (!FileHelper.FileExists(path + "Partial\\" + fileName)) { domainContent = FileHelper.ReadFile("Template\\Controller\\ControllerPartial.html").Replace("{Namespace}", nameSpace).Replace("{TableName}", tableName).Replace("{BaseOptions}", baseOptions).Replace("{StartName}", StratName); FileHelper.WriteFile(path + "Partial\\", tableName + "Controller.cs", domainContent); @@ -976,11 +976,13 @@ 0 ELSE 1 CASE WHEN COLUMN_KEY <> '' THEN 1 ELSE 0 - END AS IsReadDataset + END AS IsReadDataset, + ordinal_position FROM information_schema.COLUMNS WHERE - table_name = ?tableName {GetMysqlTableSchema()}"; + table_name = ?tableName {GetMysqlTableSchema()} + order by ordinal_position"; } /// @@ -1210,17 +1212,17 @@ private void SetMaxLength(List columns) { columns.ForEach(x => { - if (x.ColumnName == "DateTime") + if (x.ColumnType.ToLower() == "datetime") { x.ColumnWidth = 150; } - else if (x.ColumnName == "Modifier" || x.ColumnName == "Creator") + else if (x.ColumnName.ToLower() == "modifier" || x.ColumnName.ToLower() == "creator") { - x.ColumnWidth = 130; + x.ColumnWidth = 100; } - else if (x.ColumnName == "CreateID" || x.ColumnName == "ModifyID") + else if (x.ColumnName.ToLower() == "modifyid" || x.ColumnName.ToLower() == "createid") { - x.ColumnWidth = 80; + x.ColumnWidth = 100; } else if (x.Maxlength > 200) { @@ -1280,10 +1282,15 @@ private int InitTable(int parentId, string tableName, string columnCNName, strin { columns[i].OrderNo = orderNo; orderNo = orderNo - 50; + columns[i].EditRowNo = 0; } SetMaxLength(columns); - base.Add(tableInfo, columns, false); + var result= base.Add(tableInfo, columns, false); + if (!result.Status) + { + throw new Exception($"加载表结构写入异常:{result.Message}"); + } return tableInfo.Table_Id; } @@ -1763,7 +1770,7 @@ private string CreateEntityModel(List sysColumn, Sys_TableInfo // "\\" + modelNameSpace + "\\DomainModels\\{0}\\", folderName // ) string modelPath = $"{mapPath}\\{modelNameSpace}\\DomainModels\\{folderName}\\"; - FileHelper.WriteFile( modelPath , tableName + ".cs", domainContent); + FileHelper.WriteFile(modelPath, tableName + ".cs", domainContent); //partialContent modelPath += "partial\\"; if (!FileHelper.FileExists(modelPath + tableName + ".cs")) diff --git "a/.Net6\347\211\210\346\234\254/VOL.Core/BaseProvider/IRepository.cs" "b/.Net6\347\211\210\346\234\254/VOL.Core/BaseProvider/IRepository.cs" index 71a6b9bc4..2e6b05ca4 100644 --- "a/.Net6\347\211\210\346\234\254/VOL.Core/BaseProvider/IRepository.cs" +++ "b/.Net6\347\211\210\346\234\254/VOL.Core/BaseProvider/IRepository.cs" @@ -1,7 +1,7 @@ -using Microsoft.EntityFrameworkCore.Query; +using Microsoft.Data.SqlClient; +using Microsoft.EntityFrameworkCore.Query; using System; using System.Collections.Generic; -using System.Data.SqlClient; using System.Linq; using System.Linq.Expressions; using System.Threading.Tasks; diff --git "a/.Net6\347\211\210\346\234\254/VOL.Core/BaseProvider/IService.cs" "b/.Net6\347\211\210\346\234\254/VOL.Core/BaseProvider/IService.cs" index 00ab4f810..8f8df4d4b 100644 --- "a/.Net6\347\211\210\346\234\254/VOL.Core/BaseProvider/IService.cs" +++ "b/.Net6\347\211\210\346\234\254/VOL.Core/BaseProvider/IService.cs" @@ -2,6 +2,7 @@ using Microsoft.AspNetCore.Http; using System; using System.Collections.Generic; +using System.Linq; using System.Linq.Expressions; using VOL.Core.CacheManager; using VOL.Core.Utilities; @@ -15,6 +16,14 @@ public interface IService where T : BaseEntity ICacheService CacheContext { get; } Microsoft.AspNetCore.Http.HttpContext Context { get; } + + /// + /// 前端查询条件转换为EF查询Queryable(2023.04.02) + /// + /// 前端查询参数 + /// 是否使用数据隔离 + /// + IQueryable GetPageDataQueryFilter(PageDataOptions options, bool useTenancy = true); /// /// 查询 /// diff --git "a/.Net6\347\211\210\346\234\254/VOL.Core/BaseProvider/RepositoryBase.cs" "b/.Net6\347\211\210\346\234\254/VOL.Core/BaseProvider/RepositoryBase.cs" index 2dcc84c5e..e0913aa43 100644 --- "a/.Net6\347\211\210\346\234\254/VOL.Core/BaseProvider/RepositoryBase.cs" +++ "b/.Net6\347\211\210\346\234\254/VOL.Core/BaseProvider/RepositoryBase.cs" @@ -1,10 +1,9 @@ -using Microsoft.EntityFrameworkCore; +using Microsoft.Data.SqlClient; +using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Query; using Microsoft.EntityFrameworkCore.Storage; using System; using System.Collections.Generic; -using System.Data.Common; -using System.Data.SqlClient; using System.Diagnostics.CodeAnalysis; using System.Linq; using System.Linq.Expressions; @@ -414,8 +413,9 @@ public virtual WebResponseContent UpdateRange(TEntity entity, string message = ""; if (updateDetail) { + string detailTypeName = typeof(List).FullName; PropertyInfo[] properties = typeof(TEntity).GetProperties(); - PropertyInfo detail = properties.Where(x => x.PropertyType.Name == "List`1").ToList().FirstOrDefault(); + PropertyInfo detail = properties.Where(x => x.PropertyType.FullName == detailTypeName).ToList().FirstOrDefault(); if (detail != null) { PropertyInfo key = properties.GetKeyProperty(); diff --git "a/.Net6\347\211\210\346\234\254/VOL.Core/BaseProvider/ServiceBase.cs" "b/.Net6\347\211\210\346\234\254/VOL.Core/BaseProvider/ServiceBase.cs" index d5557b141..26835ed00 100644 --- "a/.Net6\347\211\210\346\234\254/VOL.Core/BaseProvider/ServiceBase.cs" +++ "b/.Net6\347\211\210\346\234\254/VOL.Core/BaseProvider/ServiceBase.cs" @@ -19,6 +19,7 @@ using VOL.Core.Services; using VOL.Core.Tenancy; using VOL.Core.Utilities; +using VOL.Core.WorkFlow; using VOL.Entity; using VOL.Entity.DomainModels; using VOL.Entity.SystemModels; @@ -125,7 +126,7 @@ private void CheckUpdateMultiTenancy(string ids, string tableKey) //例如sql,只能(编辑)自己创建的数据:判断数据是不是当前用户创建的 //sql = $" {sql} and createid!={UserContext.Current.UserId}"; object obj = repository.DapperContext.ExecuteScalar(sql, null); - if (obj == null || obj.GetInt() > 0) + if (obj == null || obj.GetInt() == 0) { Response.Error("不能编辑此数据"); } @@ -143,7 +144,8 @@ private void CheckDelMultiTenancy(string ids, string tableKey) //例如sql,只能(删除)自己创建的数据:找出不是自己创建的数据 //sql = $" {sql} and createid!={UserContext.Current.UserId}"; object obj = repository.DapperContext.ExecuteScalar(sql, null); - if (obj == null || obj.GetInt() > 0) + int idsCount = ids.Split(",").Distinct().Count(); + if (obj == null || obj.GetInt() != idsCount) { Response.Error("不能删除此数据"); } @@ -161,34 +163,47 @@ private Dictionary GetPageDataSort(PageDataOptions pageDat { return base.OrderByExpression.GetExpressionToDic(); } - //排序字段不存在直接移除 - if (!string.IsNullOrEmpty(pageData.Sort) && !propertyInfo.Any(x => x.Name.ToLower() == pageData.Sort.ToLower())) + if (!string.IsNullOrEmpty(pageData.Sort)) { - pageData.Sort = null; + if (pageData.Sort.Contains(",")) + { + var sortArr = pageData.Sort.Split(",").Where(x => propertyInfo.Any(c => c.Name == x)).Select(s => s).Distinct().ToList(); + Dictionary sortDic = new Dictionary(); + foreach (var name in sortArr) + { + sortDic[name] = pageData.Order?.ToLower() == _asc ? QueryOrderBy.Asc : QueryOrderBy.Desc; + } + return sortDic; + } + else if (propertyInfo.Any(x => x.Name == pageData.Sort)) + { + return new Dictionary() { { + pageData.Sort, + pageData.Order?.ToLower() == _asc? QueryOrderBy.Asc: QueryOrderBy.Desc + } }; + } } //如果没有排序字段,则使用主键作为排序字段 - if (string.IsNullOrEmpty(pageData.Sort)) + + PropertyInfo property = propertyInfo.GetKeyProperty(); + //如果主键不是自增类型则使用appsettings.json中CreateMember->DateField配置的创建时间作为排序 + if (property.PropertyType == typeof(int) || property.PropertyType == typeof(long)) { - PropertyInfo property = propertyInfo.GetKeyProperty(); - //如果主键不是自增类型则使用appsettings.json中CreateMember->DateField配置的创建时间作为排序 - if (property.PropertyType == typeof(int) || property.PropertyType == typeof(long)) + if (!propertyInfo.Any(x => x.Name.ToLower() == pageData.Sort)) { - if (!propertyInfo.Any(x => x.Name.ToLower() == pageData.Sort)) - { - pageData.Sort = propertyInfo.GetKeyName(); - } + pageData.Sort = propertyInfo.GetKeyName(); + } + } + else + { + if (!string.IsNullOrEmpty(AppSetting.CreateMember.DateField) + && propertyInfo.Any(x => x.Name == AppSetting.CreateMember.DateField)) + { + pageData.Sort = AppSetting.CreateMember.DateField; } else { - if (!string.IsNullOrEmpty(AppSetting.CreateMember.DateField) - && propertyInfo.Any(x => x.Name == AppSetting.CreateMember.DateField)) - { - pageData.Sort = AppSetting.CreateMember.DateField; - } - else - { - pageData.Sort = propertyInfo.GetKeyName(); - } + pageData.Sort = propertyInfo.GetKeyName(); } } return new Dictionary() { { @@ -196,6 +211,17 @@ private Dictionary GetPageDataSort(PageDataOptions pageDat } }; } + /// + /// 前端查询条件转换为EF查询Queryable(2023.04.02) + /// + /// 前端查询参数 + /// 是否使用数据隔离 + /// + public IQueryable GetPageDataQueryFilter(PageDataOptions options, bool useTenancy = true) + { + ValidatePageOptions(options, out IQueryable queryable, useTenancy); + return queryable; + } /// /// 验证排序与查询字段合法性 @@ -203,24 +229,37 @@ private Dictionary GetPageDataSort(PageDataOptions pageDat /// /// /// - private PageDataOptions ValidatePageOptions(PageDataOptions options, out IQueryable queryable) + protected PageDataOptions ValidatePageOptions(PageDataOptions options, out IQueryable queryable, bool useTenancy = true) { options = options ?? new PageDataOptions(); List searchParametersList = new List(); - if (!string.IsNullOrEmpty(options.Wheres)) + if (options.Filter != null && options.Filter.Count > 0) + { + searchParametersList.AddRange(searchParametersList); + } + else if (!string.IsNullOrEmpty(options.Wheres)) { try { searchParametersList = options.Wheres.DeserializeObject>(); + options.Filter = searchParametersList; } catch { } } QueryRelativeList?.Invoke(searchParametersList); + if (useTenancy) + { + queryable = GetSearchQueryable(); + } + else + { + queryable = repository.DbContext.Set(); + } // Connection // queryable = repository.DbContext.Set(); //2020.08.15添加自定义原生查询sql或多租户 - queryable = GetSearchQueryable(); + //判断列的数据类型数字,日期的需要判断值的格式是否正确 for (int i = 0; i < searchParametersList.Count; i++) @@ -270,7 +309,12 @@ public virtual PageGridData GetPageData(PageDataOptions options) } if (options.Export) { - pageGridData.rows = queryable.GetIQueryableOrderBy(orderbyDic).Take(Limit).ToList(); + queryable = queryable.GetIQueryableOrderBy(orderbyDic); + if (Limit > 0) + { + queryable = queryable.Take(Limit); + } + pageGridData.rows = queryable.ToList(); } else { @@ -324,13 +368,9 @@ private PageGridData GetDetailPage(PageDataOptions options) wher var queryeable = repository.DbContext.Set().Where(whereExpression); gridData.total = queryeable.Count(); + options.Sort = options.Sort ?? typeof(Detail).GetKeyName(); + Dictionary orderBy = GetPageDataSort(options, typeof(Detail).GetProperties()); - string sortName = options.Sort ?? typeof(Detail).GetKeyName(); - Dictionary orderBy = new Dictionary() { { - sortName, - options.Order == "asc" ? - QueryOrderBy.Asc : - QueryOrderBy.Desc } }; gridData.rows = queryeable .GetIQueryableOrderBy(orderBy) .Skip((options.Page - 1) * options.Rows) @@ -351,26 +391,28 @@ public virtual WebResponseContent Upload(List x.Length > LimitUpFileSizee * 1024 * 1024).Select(s => s.FileName); - //if (limitFiles.Count() > 0) - //{ - // return Response.Error($"文件大小不能超过:{ LimitUpFileSizee}M,{string.Join(",", limitFiles)}"); - //} - string filePath = $"Upload/Tables/{typeof(T).GetEntityTableName()}/{DateTime.Now.ToString("yyyMMddHHmmsss") + new Random().Next(1000, 9999)}/"; + string filePath; + if (!string.IsNullOrEmpty(UploadFolder)) + { + filePath = UploadFolder; + if (!filePath.EndsWith("/") || !filePath.EndsWith("\\")) + { + filePath += "/"; + } + } + else + { + filePath = $"Upload/Tables/{typeof(T).GetEntityTableName()}/{DateTime.Now.ToString("yyyMMddHHmmsss") + new Random().Next(1000, 9999)}/"; + } + string fullPath = filePath.MapPath(true); int i = 0; - // List fileNames = new List(); try { if (!Directory.Exists(fullPath)) Directory.CreateDirectory(fullPath); for (i = 0; i < files.Count; i++) { string fileName = files[i].FileName; - //if (fileNames.Contains(fileName)) - //{ - // fileName += $"({i}){fileName}"; - //} - //fileNames.Add(fileName); using (var stream = new FileStream(fullPath + fileName, FileMode.Create)) { files[i].CopyTo(stream); @@ -425,7 +467,8 @@ public virtual WebResponseContent Import(List(dicPath, DownLoadTemplateColumns, GetIgnoreTemplate()); + //2022.06.20增加原生excel读取方法(导入时可以自定义读取excel内容) + Response = EPPlusHelper.ReadToDataTable(dicPath, DownLoadTemplateColumns, GetIgnoreTemplate(), readValue: ImportOnReadCellValue); } catch (Exception ex) { @@ -443,7 +486,7 @@ public virtual WebResponseContent Import(List @@ -523,6 +566,7 @@ public virtual WebResponseContent Add(SaveModel saveDataModel) if (saveDataModel.DetailData == null || saveDataModel.DetailData.Count == 0) { T mainEntity = saveDataModel.MainData.DicToEntity(); + SetAuditDefaultValue(mainEntity); if (base.AddOnExecuting != null) { Response = base.AddOnExecuting(mainEntity, null); @@ -540,6 +584,7 @@ public virtual WebResponseContent Add(SaveModel saveDataModel) return Response; }); if (Response.Status) Response.Data = new { data = saveDataModel.MainData }; + AddProcese(mainEntity); return Response; } @@ -569,6 +614,7 @@ public WebResponseContent Add(T entity, List list = null, bool { //设置用户默认值 entity.SetCreateDefaultVal(); + SetAuditDefaultValue(entity); if (validationEntity) { Response = entity.ValidationEntity(); @@ -611,10 +657,53 @@ public WebResponseContent Add(T entity, List list = null, bool return Response; }); if (Response.Status && string.IsNullOrEmpty(Response.Message)) + { Response.OK(ResponseType.SaveSuccess); + } + AddProcese(entity); return Response; } + /// + /// 设置审批字段默认值 + /// + /// + private void SetAuditDefaultValue(T entity) + { + if (!WorkFlowManager.Exists()) + { + return; + } + var propertity = TProperties.Where(x => x.Name.ToLower() == "auditstatus").FirstOrDefault(); + if (propertity != null && propertity.GetValue(entity) == null) + { + propertity.SetValue(entity, 0); + } + } + /// + /// 写入流程 + /// + /// + /// + /// 是否修改原表的审批状态 + protected void RewriteFlow(T entity, bool changeTableStatus = true) + { + WorkFlowManager.AddProcese(entity, true, changeTableStatus); + } + private void AddProcese(T entity) + { + if (!CheckResponseResult() && WorkFlowManager.Exists()) + { + if (AddWorkFlowExecuting != null && !AddWorkFlowExecuting.Invoke(entity)) + { + return; + } + //写入流程 + WorkFlowManager.AddProcese(entity); + WorkFlowManager.Audit(entity, AuditStatus.审核中, null, null, null, null, init: true, initInvoke: AddWorkFlowExecuted); + } + } + public void AddDetailToDBSet() where TDetail : class { List listChilds = TProperties.Where(x => x.PropertyType.Name == "List`1").ToList(); @@ -749,17 +838,18 @@ public WebResponseContent UpdateToEntity(SaveModel saveModel, PropertyI editList.ForEach(x => { //获取编辑的字段 - string[] updateField = saveModel.DetailData + var updateField = saveModel.DetailData .Where(c => c[detailKeyInfo.Name].ChangeType(detailKeyInfo.PropertyType) .Equal(detailKeyInfo.GetValue(x))) .FirstOrDefault() .Keys.Where(k => k != detailKeyInfo.Name) .Where(r => !CreateFields.Contains(r)) - .ToArray(); + .ToList(); + updateField.AddRange(ModifyFields); //設置默認值 x.SetModifyDefaultVal(); //添加修改字段 - repository.Update(x, updateField); + repository.Update(x, updateField.ToArray()); }); //明细新增 @@ -860,6 +950,16 @@ public virtual WebResponseContent Update(SaveModel saveModel) if (saveModel == null) return Response.Error(ResponseType.ParametersLack); + + //if (WorkFlowManager.Exists()) + //{ + // var auditProperty = TProperties.Where(x => x.Name.ToLower() == "auditstatus").FirstOrDefault(); + // string value = saveModel.MainData[auditProperty.Name]?.ToString(); + // if (WorkFlowManager.GetAuditStatus(value) != 1) + // { + // return Response.Error("数据已经在审核中,不能修改"); + // } + //} Type type = typeof(T); //设置修改时间,修改人的默认值 @@ -875,16 +975,18 @@ public virtual WebResponseContent Update(SaveModel saveModel) PropertyInfo mainKeyProperty = type.GetKeyProperty(); //验证明细 Type detailType = null; - if (saveModel.DetailData != null || saveModel.DelKeys != null) + if (saveModel.DetailData != null || (saveModel.DelKeys != null && saveModel.DelKeys.Count > 0)) { - saveModel.DetailData = saveModel.DetailData == null - ? new List>() - : saveModel.DetailData.Where(x => x.Count > 0).ToList(); - detailType = GetRealDetailType(); + if (detailType != null) + { + saveModel.DetailData = saveModel.DetailData == null + ? new List>() + : saveModel.DetailData.Where(x => x.Count > 0).ToList(); - result = detailType.ValidateDicInEntity(saveModel.DetailData, true, false, new string[] { mainKeyProperty.Name }); - if (result != string.Empty) return Response.Error(result); + result = detailType.ValidateDicInEntity(saveModel.DetailData, true, false, new string[] { mainKeyProperty.Name }); + if (result != string.Empty) return Response.Error(result); + } //主从关系指定外键,即从表的外键可以不是主键的主表,还需要改下代码生成器设置属性外键,功能预留后面再开发(2020.04.25) //string foreignKey = type.GetTypeCustomValue(x => new { x.Name }); @@ -1000,7 +1102,7 @@ public virtual WebResponseContent Update(SaveModel saveModel) //主键值是否正确 string detailKeyVal = dic[detailKeyInfo.Name].ToString(); - if (!mainKeyProperty.ValidationValueForDbType(detailKeyVal).FirstOrDefault().Item1 + if (!detailKeyInfo.ValidationValueForDbType(detailKeyVal).FirstOrDefault().Item1 || deatilDefaultVal == detailKeyVal) return Response.Error(ResponseType.KeyError); @@ -1117,8 +1219,35 @@ public virtual WebResponseContent Audit(object[] keys, int? auditStatus, string { if (keys == null || keys.Length == 0) return Response.Error("未获取到参数!"); - if (auditStatus != 1 && auditStatus != 2) - return Response.Error("请提求正确的审核结果!"); + + Expression> whereExpression = typeof(T).GetKeyName().CreateExpression(keys[0], LinqExpressionType.Equal); + T entity = repository.FindAsIQueryable(whereExpression).FirstOrDefault(); + + //进入流程审批 + if (WorkFlowManager.Exists(entity)) + { + var auditProperty = TProperties.Where(x => x.Name.ToLower() == "auditstatus").FirstOrDefault(); + if (auditProperty == null) + { + return Response.Error("表缺少审核状态字段:AuditStatus"); + } + + AuditStatus status = (AuditStatus)Enum.Parse(typeof(AuditStatus), auditStatus.ToString()); + if (auditProperty.GetValue(entity).GetInt() != (int)AuditStatus.审核中) + { + return Response.Error("只能审批审核中的数据"); + } + Response = repository.DbContextBeginTransaction(() => + { + return WorkFlowManager.Audit(entity, status, auditReason, auditProperty, AuditWorkFlowExecuting, AuditWorkFlowExecuted); + }); + if (Response.Status) + { + return Response.OK(ResponseType.AuditSuccess); + } + return Response.Error(Response.Message ?? "审批失败"); + } + //获取主键 PropertyInfo property = TProperties.GetKeyProperty(); @@ -1136,7 +1265,7 @@ public virtual WebResponseContent Audit(object[] keys, int? auditStatus, string object convertVal = value.ToString().ChangeType(property.PropertyType); if (convertVal == null) continue; - T entity = Activator.CreateInstance(); + entity = Activator.CreateInstance(); property.SetValue(entity, convertVal); foreach (var item in updateFileds) { @@ -1166,13 +1295,21 @@ public virtual WebResponseContent Audit(object[] keys, int? auditStatus, string Response = AuditOnExecuting(auditList); if (CheckResponseResult()) return Response; } - repository.UpdateRange(auditList, updateFileds.Select(x => x.Name).ToArray(), true); - if (base.AuditOnExecuted != null) + Response = repository.DbContextBeginTransaction(() => { - Response = AuditOnExecuted(auditList); - if (CheckResponseResult()) return Response; + repository.UpdateRange(auditList, updateFileds.Select(x => x.Name).ToArray(), true); + if (base.AuditOnExecuted != null) + { + Response = AuditOnExecuted(auditList); + if (CheckResponseResult()) return Response; + } + return Response.OK(); + }); + if (Response.Status) + { + return Response.OK(ResponseType.AuditSuccess); } - return Response.OK(ResponseType.AuditSuccess); + return Response.Error(Response.Message); } public virtual (string, T, bool) ApiValidate(string bizContent, Expression> expression = null) diff --git "a/.Net6\347\211\210\346\234\254/VOL.Core/DBManager/DBServerProvider.cs" "b/.Net6\347\211\210\346\234\254/VOL.Core/DBManager/DBServerProvider.cs" index 704075ce1..ea8b2bbd0 100644 --- "a/.Net6\347\211\210\346\234\254/VOL.Core/DBManager/DBServerProvider.cs" +++ "b/.Net6\347\211\210\346\234\254/VOL.Core/DBManager/DBServerProvider.cs" @@ -14,7 +14,7 @@ namespace VOL.Core.DBManager { - public class DBServerProvider + public partial class DBServerProvider { private static Dictionary ConnectionPool = new Dictionary(StringComparer.OrdinalIgnoreCase); diff --git "a/.Net6\347\211\210\346\234\254/VOL.Core/DBManager/Partial/DBServerProvider.cs" "b/.Net6\347\211\210\346\234\254/VOL.Core/DBManager/Partial/DBServerProvider.cs" new file mode 100644 index 000000000..517b6ca65 --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.Core/DBManager/Partial/DBServerProvider.cs" @@ -0,0 +1,65 @@ +using System; +using System.Collections.Generic; +using System.Text; +using VOL.Core.Configuration; +using VOL.Core.Dapper; +using VOL.Core.Enums; + +namespace VOL.Core.DBManager.Partial +{ + /// + /// 2022.11.21增加其他数据库(sqlserver、mysql、pgsql、oracle)连接配置说明 + /// 需要把两个DBServerProvider.cs文件都更新下 + /// + public partial class DBServerProvider + { + ///// + ///// 单独配置mysql数据库 + ///// + //public static ISqlDapper SqlDapperMySql + //{ + // get + // { + // //读取appsettings.json中的配置 + // string 数据库连接字符串 = AppSetting.GetSettingString("key"); + // return new SqlDapper(数据库连接字符串, DbCurrentType.MySql); + + // //访问数据库方式 + // //DBServerProvider.SqlDapperMySql.xx + // } + //} + + + ///// + ///// 如果有多个不同的mysql数据库,这里再加一个配置 + ///// + //public static ISqlDapper SqlDapperMySql2 + //{ + // get + // { + // //读取appsettings.json中的配置 + // string 数据库连接字符串 = AppSetting.GetSettingString("key2"); + // return new SqlDapper(数据库连接字符串, DbCurrentType.MySql); + + // //访问数据库方式 + // //DBServerProvider.SqlDapperMySql2.xx + // } + //} + + ///// + ///// 单独配置SqlServer数据库 + ///// + //public static ISqlDapper SqlDapperSqlServer + //{ + // get + // { + // //读取appsettings.json中的配置 + // string 数据库连接字符串 = AppSetting.GetSettingString("key"); + // return new SqlDapper(数据库连接字符串, DbCurrentType.MsSql); + + // //访问数据库方式 + // //DBServerProvider.SqlDapperSqlServer.xx + // } + //} + } +} diff --git "a/.Net6\347\211\210\346\234\254/VOL.Core/Dapper/ISqlDapper.cs" "b/.Net6\347\211\210\346\234\254/VOL.Core/Dapper/ISqlDapper.cs" index 692fd6bf2..b3856e393 100644 --- "a/.Net6\347\211\210\346\234\254/VOL.Core/Dapper/ISqlDapper.cs" +++ "b/.Net6\347\211\210\346\234\254/VOL.Core/Dapper/ISqlDapper.cs" @@ -43,7 +43,7 @@ public interface ISqlDapper Task ExcuteNonQueryAsync(string cmd, object param, CommandType? commandType = null, bool beginTransaction = false); - IDataReader ExecuteReader(string cmd, object param, CommandType? commandType = null, bool beginTransaction = false); + //IDataReader ExecuteReader(string cmd, object param, CommandType? commandType = null, bool beginTransaction = false); SqlMapper.GridReader QueryMultiple(string cmd, object param, CommandType? commandType = null, bool beginTransaction = false); Task<(IEnumerable, IEnumerable)> QueryMultipleAsync(string cmd, object param, CommandType? commandType = null, bool beginTransaction = false); @@ -123,8 +123,16 @@ public interface ISqlDapper /// int UpdateRange(IEnumerable entities, Expression> updateFileds = null, bool beginTransaction = false); - int DelWithKey(params object[] keys); - int DelWithKey(bool beginTransaction = false, params object[] keys); + /// + /// 使用key批量删除 + /// 调用方式: + /// List keys = new List(); + /// DBServerProvider.SqlDapper.DelWithKey(keys); + /// + /// + /// + /// + int DelWithKey(IEnumerable keys); /// /// sqlserver批量写入 /// 使用时DataTable table表字段顺序要和数据库字段顺序一致 @@ -151,5 +159,23 @@ public interface ISqlDapper int BulkInsert(List entities, string tableName = null, Expression> columns = null, SqlBulkCopyOptions? sqlBulkCopyOptions = null); + + /// + /// 开启事务 + /// + /// + ISqlDapper BeginTrans(); + + /// + /// 提交 + /// + void Commit(); + + /// + /// 回滚 + /// + void Rollback(); + + DataTable QueryDataTable(string sql, object dbParameter, CommandType commandType = CommandType.StoredProcedure); } } \ No newline at end of file diff --git "a/.Net6\347\211\210\346\234\254/VOL.Core/Dapper/SqlDapper.cs" "b/.Net6\347\211\210\346\234\254/VOL.Core/Dapper/SqlDapper.cs" index c8cc0de4a..84369967e 100644 --- "a/.Net6\347\211\210\346\234\254/VOL.Core/Dapper/SqlDapper.cs" +++ "b/.Net6\347\211\210\346\234\254/VOL.Core/Dapper/SqlDapper.cs" @@ -53,7 +53,6 @@ public ISqlDapper SetTimout(int timeout) return this; } - private T Execute(Func func, bool beginTransaction = false) { if (_transaction) @@ -104,7 +103,7 @@ private async Task ExecuteAsync(Func ExecuteAsync(Func ExecuteTransactionAsync(Func> funcAsync) { - using (var connection = new SqlConnection(DBServerProvider.GetConnectionString(_connectionString))) + using (var connection = DBServerProvider.GetDbConnection(_connectionString)) { try { @@ -282,13 +281,13 @@ public int ExcuteNonQuery(string cmd, object param, CommandType? commandType = n return conn.Execute(cmd, param, dbTransaction, commandType: commandType ?? CommandType.Text, commandTimeout: commandTimeout); }, beginTransaction); } - public IDataReader ExecuteReader(string cmd, object param, CommandType? commandType = null, bool beginTransaction = false) - { - return Execute((conn, dbTransaction) => - { - return conn.ExecuteReader(cmd, param, dbTransaction, commandType: commandType ?? CommandType.Text, commandTimeout: commandTimeout); - }, beginTransaction); - } + //public IDataReader ExecuteReader(string cmd, object param, CommandType? commandType = null, bool beginTransaction = false) + //{ + // return Execute((conn, dbTransaction) => + // { + // return conn.ExecuteReader(cmd, param, dbTransaction, commandType: commandType ?? CommandType.Text, commandTimeout: commandTimeout); + // }, beginTransaction); + //} public SqlMapper.GridReader QueryMultiple(string cmd, object param, CommandType? commandType = null, bool beginTransaction = false) @@ -616,7 +615,7 @@ public int AddRange(IEnumerable entities, Expression> addF /// 指定更新的字段x=new {x.a,x.b} /// 是否开启事务 /// - public int Update(T entity, Expression> updateFileds = null, bool beginTransaction = true) + public int Update(T entity, Expression> updateFileds = null, bool beginTransaction = false) { return UpdateRange(new T[] { entity }, updateFileds, beginTransaction); } @@ -629,7 +628,7 @@ public int Update(T entity, Expression> updateFileds = null, /// 批定更新字段 /// /// - public int UpdateRange(IEnumerable entities, Expression> updateFileds = null, bool beginTransaction = true) + public int UpdateRange(IEnumerable entities, Expression> updateFileds = null, bool beginTransaction = false) { Type entityType = typeof(T); var key = entityType.GetKeyProperty(); @@ -654,53 +653,31 @@ public int UpdateRange(IEnumerable entities, Expression> u } string sqltext = $@"UPDATE { entityType.GetEntityTableName()} SET {string.Join(",", paramsList)} WHERE {entityType.GetKeyName()} = @{entityType.GetKeyName()} ;"; - return ExcuteNonQuery(sqltext, entities, CommandType.Text, true); + return ExcuteNonQuery(sqltext, entities, CommandType.Text, beginTransaction); // throw new Exception("mysql批量更新未实现"); } string fileds = string.Join(",", properties.Select(x => $" a.{x.Name}=b.{x.Name}").ToArray()); string sql = $"update a set {fileds} from {entityType.GetEntityTableName()} as a inner join {EntityToSqlTempName.TempInsert.ToString()} as b on a.{key.Name}=b.{key.Name}"; sql = entities.ToList().GetEntitySql(true, sql, null, updateFileds, null); - return ExcuteNonQuery(sql, null, CommandType.Text, true); + return ExcuteNonQuery(sql, null, CommandType.Text, beginTransaction); } - public int DelWithKey(bool beginTransaction = false, params object[] keys) - { - Type entityType = typeof(T); - var keyProperty = entityType.GetKeyProperty(); - if (keyProperty == null || keys == null || keys.Length == 0) return 0; - IEnumerable<(bool, string, object)> validation = keyProperty.ValidationValueForDbType(keys); - if (validation.Any(x => !x.Item1)) - { - throw new Exception($"主键类型【{validation.Where(x => !x.Item1).Select(s => s.Item3).FirstOrDefault()}】不正确"); - } - string tKey = entityType.GetKeyProperty().Name; - FieldType fieldType = entityType.GetFieldType(); - string joinKeys = (fieldType == FieldType.Int || fieldType == FieldType.BigInt) - ? string.Join(",", keys) - : $"'{string.Join("','", keys)}'"; - string sql; - // 2020.08.06增加pgsql删除功能 - if (DBType.Name == DbCurrentType.PgSql.ToString()) - { - sql = $"DELETE FROM \"public\".\"{entityType.GetEntityTableName()}\" where \"{tKey}\" in ({joinKeys});"; - } - else - { - sql = $"DELETE FROM {entityType.GetEntityTableName() } where {tKey} in ({joinKeys});"; - } - - return ExcuteNonQuery(sql, null); - } /// /// 使用key批量删除 + /// 调用方式: + /// List keys = new List(); + /// DBServerProvider.SqlDapper.DelWithKey(keys); /// /// /// /// - public int DelWithKey(params object[] keys) + public int DelWithKey(IEnumerable keys) { - return DelWithKey(false, keys); + Type entityType = typeof(T); + var keyProperty = entityType.GetKeyProperty(); + string sql = $"DELETE FROM {entityType.GetEntityTableName() } where {keyProperty.Name} in @keys "; + return ExcuteNonQuery(sql, new { keys }).GetInt(); } /// /// 通过Bulk批量插入 @@ -752,6 +729,7 @@ public int BulkInsert(DataTable table, string tableName, SqlBulkCopyOptions? sql if (DBType.Name == "PgSql") { PGSqlBulkInsert(table, tableName); + return table.Rows.Count; } return MSSqlBulkInsert(table, tableName, sqlBulkCopyOptions ?? SqlBulkCopyOptions.KeepIdentity); } @@ -766,7 +744,7 @@ public int BulkInsert(DataTable table, string tableName, SqlBulkCopyOptions? sql private int MySqlBulkInsert(DataTable table, string tableName, string fileName = null, string tmpPath = null) { if (table.Rows.Count == 0) return 0; - tmpPath = tmpPath ?? FileHelper.GetCurrentDownLoadPath(); + // tmpPath = tmpPath ?? FileHelper.GetCurrentDownLoadPath(); int insertCount = 0; string csv = DataTableToCsv(table); string text = $"当前行:{table.Rows.Count}"; @@ -785,7 +763,9 @@ private int MySqlBulkInsert(DataTable table, string tableName, string fileName = { LineTerminator = "\n", TableName = tableName, - CharacterSet = "UTF8" + CharacterSet = "UTF8", + FieldQuotationCharacter = '"', + FieldQuotationOptional = true }; var array = Encoding.UTF8.GetBytes(csv); using (stream = new MemoryStream(array)) @@ -828,9 +808,10 @@ private string DataTableToCsv(DataTable table) { colum = table.Columns[i]; if (i != 0) sb.Append("\t"); - if (colum.DataType == typeString && row[colum].ToString().Contains(",")) + if (colum.DataType == typeString) { - sb.Append(row[colum].ToString()); + var data = $"\"{row[colum].ToString().Replace("\"", "\"\"")}\""; + sb.Append(data); } else if (colum.DataType == typeDate) { @@ -876,5 +857,99 @@ private void PGSqlBulkInsert(DataTable table, string tableName) } } + + + + + public DataTable QueryDataTable(string sql, object dbParameter, CommandType commandType = CommandType.Text) + { + return Execute((conn, dbTransaction) => + { + using var dataReader = conn.ExecuteReader(sql, dbParameter, dbTransaction, commandType: commandType, commandTimeout: commandTimeout); + DataTable datatable = new DataTable(); + + for (int i = 0; i < dataReader.FieldCount; i++) + { + DataColumn myDataColumn = new DataColumn(); + myDataColumn.ColumnName = dataReader.GetName(i); + datatable.Columns.Add(myDataColumn); + } + while (dataReader.Read()) + { + DataRow myDataRow = datatable.NewRow(); + for (int i = 0; i < dataReader.FieldCount; i++) + { + try + { + myDataRow[i] = dataReader[i].ToString(); + } + catch (Exception ex) + { + + Console.WriteLine(ex.Message); + } + } + datatable.Rows.Add(myDataRow); + myDataRow = null; + } + return datatable; + }, false); + } + /// + /// 开启事务 + /// + /// + public ISqlDapper BeginTrans() + { + _transaction = true; + _transactionConnection = DBServerProvider.GetDbConnection(_connectionString, _dbCurrentType); + _transactionConnection.Open(); + dbTransaction = _transactionConnection.BeginTransaction(); + return this; + } + + /// + /// 提交 + /// + public void Commit() + { + try + { + _transaction = false; + dbTransaction.Commit(); + } + catch (Exception ex) + { + + throw ex; + } + finally + { + _transactionConnection?.Dispose(); + dbTransaction?.Dispose(); + } + + } + /// + /// 回滚 + /// + public void Rollback() + { + try + { + _transaction = false; + dbTransaction?.Rollback(); + } + catch (Exception ex) + { + + throw ex; + } + finally { + _transactionConnection?.Dispose(); + dbTransaction?.Dispose(); + } + } + } } diff --git "a/.Net6\347\211\210\346\234\254/VOL.Core/EFDbContext/VOLContext.cs" "b/.Net6\347\211\210\346\234\254/VOL.Core/EFDbContext/VOLContext.cs" index 80270e836..779b31881 100644 --- "a/.Net6\347\211\210\346\234\254/VOL.Core/EFDbContext/VOLContext.cs" +++ "b/.Net6\347\211\210\346\234\254/VOL.Core/EFDbContext/VOLContext.cs" @@ -99,7 +99,7 @@ protected override void OnModelCreating(ModelBuilder modelBuilder) //获取所有类库 var compilationLibrary = DependencyContext .Default - .CompileLibraries + .RuntimeLibraries .Where(x => !x.Serviceable && x.Type != "package" && x.Type == "project"); foreach (var _compilation in compilationLibrary) { diff --git "a/.Net6\347\211\210\346\234\254/VOL.Core/Extensions/AutofacManager/AutofacContainerModuleExtension.cs" "b/.Net6\347\211\210\346\234\254/VOL.Core/Extensions/AutofacManager/AutofacContainerModuleExtension.cs" index a63552813..7be1561e7 100644 --- "a/.Net6\347\211\210\346\234\254/VOL.Core/Extensions/AutofacManager/AutofacContainerModuleExtension.cs" +++ "b/.Net6\347\211\210\346\234\254/VOL.Core/Extensions/AutofacManager/AutofacContainerModuleExtension.cs" @@ -38,7 +38,7 @@ public static IServiceCollection AddModule(this IServiceCollection services, Con AppSetting.Init(services, configuration); Type baseType = typeof(IDependency); var compilationLibrary = DependencyContext.Default - .CompileLibraries + .RuntimeLibraries .Where(x => !x.Serviceable && x.Type == "project") .ToList(); diff --git "a/.Net6\347\211\210\346\234\254/VOL.Core/Extensions/LambdaExtensions.cs" "b/.Net6\347\211\210\346\234\254/VOL.Core/Extensions/LambdaExtensions.cs" index f0ac2f494..ba49d86b0 100644 --- "a/.Net6\347\211\210\346\234\254/VOL.Core/Extensions/LambdaExtensions.cs" +++ "b/.Net6\347\211\210\346\234\254/VOL.Core/Extensions/LambdaExtensions.cs" @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; @@ -203,6 +203,12 @@ private static Expression> CreateExpression( ConstantExpression constant = proType.ToString() == "System.String" ? Expression.Constant(propertyValue) : Expression.Constant(propertyValue.ToString().ChangeType(proType)); + // DateTime只选择了日期的时候自动在结束日期加一天,修复DateTime类型使用日期区间查询无法查询到结束日期的问题 + if ((proType == typeof(DateTime) || proType == typeof(DateTime?)) && expressionType == LinqExpressionType.LessThanOrEqual && propertyValue.ToString().Length == 10) + { + constant = Expression.Constant(Convert.ToDateTime(propertyValue.ToString()).AddDays(1)); + } + UnaryExpression member = Expression.Convert(memberProperty, constant.Type); Expression> expression; switch (expressionType) diff --git "a/.Net6\347\211\210\346\234\254/VOL.Core/Extensions/ObjectExtension.cs" "b/.Net6\347\211\210\346\234\254/VOL.Core/Extensions/ObjectExtension.cs" index 54ac87df4..142c9fb9b 100644 --- "a/.Net6\347\211\210\346\234\254/VOL.Core/Extensions/ObjectExtension.cs" +++ "b/.Net6\347\211\210\346\234\254/VOL.Core/Extensions/ObjectExtension.cs" @@ -1171,7 +1171,7 @@ public static string ToUnixTimeStamp(this DateTime date) return timeStamp.Substring(0, timeStamp.Length - 7); } - private static readonly Regex MobileRegex = new Regex("^1[3|4|5|7|8][0-9]\\d{4,8}$"); + private static readonly Regex MobileRegex = new Regex("^1[3-9][0-9]\\d{4,8}$"); private static readonly Regex EmailRegex = new Regex("^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((\\.[a-zA-Z0-9_-]{2,3}){1,2})$"); /// diff --git "a/.Net6\347\211\210\346\234\254/VOL.Core/Filters/ActionPermissionFilter.cs" "b/.Net6\347\211\210\346\234\254/VOL.Core/Filters/ActionPermissionFilter.cs" index 4ec4fca26..1fdb1b4ac 100644 --- "a/.Net6\347\211\210\346\234\254/VOL.Core/Filters/ActionPermissionFilter.cs" +++ "b/.Net6\347\211\210\346\234\254/VOL.Core/Filters/ActionPermissionFilter.cs" @@ -53,7 +53,7 @@ private WebResponseContent OnActionExecutionPermission(ActionExecutingContext co //演示环境除了admin帐号,其他帐号都不能增删改等操作 if (!_userContext.IsSuperAdmin && AppSetting.GlobalFilter.Enable && AppSetting.GlobalFilter.Actions.Contains(((Microsoft.AspNetCore.Mvc.Controllers.ControllerActionDescriptor)context.ActionDescriptor).ActionName)) - { + { return ResponseContent.Error(AppSetting.GlobalFilter.Message); } diff --git "a/.Net6\347\211\210\346\234\254/VOL.Core/Filters/ApiAuthorizeFilter.cs" "b/.Net6\347\211\210\346\234\254/VOL.Core/Filters/ApiAuthorizeFilter.cs" index 655dcbfe5..d3d7a5fd9 100644 --- "a/.Net6\347\211\210\346\234\254/VOL.Core/Filters/ApiAuthorizeFilter.cs" +++ "b/.Net6\347\211\210\346\234\254/VOL.Core/Filters/ApiAuthorizeFilter.cs" @@ -9,6 +9,7 @@ using VOL.Core.Configuration; using VOL.Core.Extensions; using VOL.Core.ManageUser; +using static VOL.Core.Filters.ApiTaskAttribute; namespace VOL.Core.Filters { @@ -31,8 +32,15 @@ public void OnAuthorization(AuthorizationFilterContext context) //if (context.Filters.Any(item => item is IAllowAnonymousFilter)) if (context.ActionDescriptor.EndpointMetadata.Any(item => item is IAllowAnonymous)) { - //如果使用了固定Token不过期,直接对token的合法性及token是否存在进行验证 if (context.Filters + .Where(item => item is IApiTaskFilter) + .FirstOrDefault() is IApiTaskFilter apiTaskFilter) + { + apiTaskFilter.OnAuthorization(context); + return; + } + //如果使用了固定Token不过期,直接对token的合法性及token是否存在进行验证 + else if (context.Filters .Where(item => item is IFixedTokenFilter) .FirstOrDefault() is IFixedTokenFilter tokenFilter) { diff --git "a/.Net6\347\211\210\346\234\254/VOL.Core/Filters/ApiTaskAttribute.cs" "b/.Net6\347\211\210\346\234\254/VOL.Core/Filters/ApiTaskAttribute.cs" new file mode 100644 index 000000000..933f1ee66 --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.Core/Filters/ApiTaskAttribute.cs" @@ -0,0 +1,26 @@ +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.Filters; +using Microsoft.Extensions.Primitives; +using System; +using System.Collections.Generic; +using System.Text; +using VOL.Core.Configuration; +using VOL.Core.Extensions; +using VOL.Core.Quartz; + +namespace VOL.Core.Filters +{ + public interface IApiTaskFilter : IFilterMetadata + { + AuthorizationFilterContext OnAuthorization(AuthorizationFilterContext context); + } + public class ApiTaskAttribute : Attribute, IApiTaskFilter, IAllowAnonymous + { + public AuthorizationFilterContext OnAuthorization(AuthorizationFilterContext context) + { + return QuartzAuthorization.Validation(context) ; + } + } + +} diff --git "a/.Net6\347\211\210\346\234\254/VOL.Core/Filters/ServiceFunFilter.cs" "b/.Net6\347\211\210\346\234\254/VOL.Core/Filters/ServiceFunFilter.cs" index 151d4eb8c..de8855497 100644 --- "a/.Net6\347\211\210\346\234\254/VOL.Core/Filters/ServiceFunFilter.cs" +++ "b/.Net6\347\211\210\346\234\254/VOL.Core/Filters/ServiceFunFilter.cs" @@ -1,14 +1,16 @@ -using System; +using OfficeOpenXml; +using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; using VOL.Core.Enums; using VOL.Core.Utilities; +using VOL.Core.WorkFlow; using VOL.Entity.DomainModels; namespace VOL.Core.Filters { - public abstract class ServiceFunFilter where T : class + public abstract class ServiceFunFilter where T : class { /// @@ -46,8 +48,8 @@ public abstract class ServiceFunFilter where T : class /// protected bool LimitCurrentUserPermission { get; set; } = false; - ///默认导出最大数量5K数据 - protected int Limit { get; set; } = 5000; + ///默认导出最大表数量:0不限制 + protected int Limit { get; set; } = 0; /// /// 默认上传文件大小限制3M @@ -114,6 +116,17 @@ public abstract class ServiceFunFilter where T : class /// protected Func AddOnExecuted; + /// + /// 进入审批流程方法之前 + /// + protected Func AddWorkFlowExecuting; + + /// + /// 写入审批流程数据之后 + /// list:审批的人id + /// + protected Action> AddWorkFlowExecuted; + /// /// 调用更新方法前处理(SaveModel为传入的原生数据) /// @@ -162,6 +175,24 @@ public abstract class ServiceFunFilter where T : class /// protected Func, WebResponseContent> AuditOnExecuted; + + /// + /// 审批流程审核前 + /// T:当前审核的数据 + /// AuditStatus:审核状态 + /// bool:当前数据是否为最后一个人审核 + /// + protected Func AuditWorkFlowExecuting; + + /// + /// 审批流程审核后 + /// T:当前审核的数据 + /// AuditStatus:审核状态 + /// list:下一个节点的审批人id + /// bool:当前数据是否为最后一个人审核 + /// + protected Func, bool, WebResponseContent> AuditWorkFlowExecuted; + /// ///导出前处理,DataTable导出的表数据 ///List导出的数据, List忽略不需要导出的字段 @@ -192,5 +223,20 @@ public abstract class ServiceFunFilter where T : class /// protected Func, WebResponseContent> ImportOnExecuting; + /// + /// 2022.06.20增加原生excel读取方法(导入时可以自定义读取excel内容) + /// string=当前读取的excel单元格的值 + /// ExcelWorksheet=excel对象 + /// ExcelRange当前excel单元格对象 + /// int=当前读取的第几数 + /// int=当前读取的第几列 + /// string=返回的值 + /// + protected Func ImportOnReadCellValue; + + /// + /// 自定义上传文件夹(2022.10.07) + /// + protected string UploadFolder = null; } } diff --git "a/.Net6\347\211\210\346\234\254/VOL.Core/Middleware/ExceptionHandlerMiddleWare.cs" "b/.Net6\347\211\210\346\234\254/VOL.Core/Middleware/ExceptionHandlerMiddleWare.cs" index 6fdf1e8e0..6ebb7216e 100644 --- "a/.Net6\347\211\210\346\234\254/VOL.Core/Middleware/ExceptionHandlerMiddleWare.cs" +++ "b/.Net6\347\211\210\346\234\254/VOL.Core/Middleware/ExceptionHandlerMiddleWare.cs" @@ -1,4 +1,6 @@ -using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Hosting; +using Microsoft.AspNetCore.Http; +using Microsoft.Extensions.Hosting; using System; using System.IO; using System.Text; @@ -30,19 +32,20 @@ public async Task Invoke(HttpContext context) } catch (Exception exception) { - // (context.RequestServices.GetService(typeof(ActionObserver)) as ActionObserver).IsWrite = false; - string message = exception.Message - + exception.InnerException - ?.InnerException - ?.Message - + exception.InnerException - + exception.StackTrace; - Console.WriteLine($"服务器处理出现异常:{message}"); + var env = context.RequestServices.GetService(typeof(IWebHostEnvironment)) as IWebHostEnvironment; + string message = exception.Message + exception.InnerException; Logger.Error(LoggerType.Exception, message); + if (!env.IsDevelopment()) + { + message = "服务器处理异常"; + } + else + { + Console.WriteLine($"服务器处理出现异常:{message}"); + } context.Response.StatusCode = 500; context.Response.ContentType = ApplicationContentType.JSON; - await context.Response.WriteAsync(new { message = "~服务器没有正确处理请求,请稍等再试!", status = false }.Serialize() - , Encoding.UTF8); + await context.Response.WriteAsync(new { message, status = false }.Serialize(), Encoding.UTF8); } } } diff --git "a/.Net6\347\211\210\346\234\254/VOL.Core/Quartz/HttpManager.cs" "b/.Net6\347\211\210\346\234\254/VOL.Core/Quartz/HttpManager.cs" new file mode 100644 index 000000000..009aaa4f2 --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.Core/Quartz/HttpManager.cs" @@ -0,0 +1,54 @@ +using Microsoft.AspNetCore.Http; +using System; +using System.Collections.Generic; +using System.IO; +using System.Net; +using System.Net.Http; +using System.Net.Http.Headers; +using System.Text; +using System.Threading.Tasks; + +namespace VOL.Core.Quartz +{ + public static class HttpManager + { + + public static async Task SendAsync(this IHttpClientFactory httpClientFactory, + HttpMethod method, + string url, + string postData=null, + int timeOut=180, + Dictionary headers = null) + { + var client = httpClientFactory.CreateClient(); + var content = new StringContent(postData??""); + var request = new HttpRequestMessage(method, url) + { + Content = content + }; + headers ??= new Dictionary(); + headers.TryAdd(QuartzAuthorization.Key, QuartzAuthorization.AccessKey); + if (headers != null) + { + foreach (var header in headers) + { + request.Headers.Add(header.Key, header.Value); + } + } + try + { + client.Timeout = TimeSpan.FromSeconds(timeOut); + HttpResponseMessage httpResponseMessage = await client.SendAsync(request); + var result = await httpResponseMessage.Content + .ReadAsStringAsync(); + return result; + } + catch (Exception ex) + { + Console.WriteLine(ex.Message); + QuartzFileHelper.Error($"http请求异常,url:{url},{ex.Message+ex.StackTrace}"); + return ex.Message; + } + } + } +} diff --git "a/.Net6\347\211\210\346\234\254/VOL.Core/Quartz/HttpResultfulJob.cs" "b/.Net6\347\211\210\346\234\254/VOL.Core/Quartz/HttpResultfulJob.cs" new file mode 100644 index 000000000..28b7258f2 --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.Core/Quartz/HttpResultfulJob.cs" @@ -0,0 +1,134 @@ +using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.Configuration; +using Quartz; +using Quartz.Impl; +using Quartz.Impl.Triggers; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Net.Http; +using System.Threading.Tasks; +using VOL.Core.Configuration; +using VOL.Core.EFDbContext; +using VOL.Core.Utilities; +using VOL.Entity.DomainModels; + +namespace VOL.Core.Quartz +{ + public class HttpResultfulJob : IJob + { + readonly IHttpClientFactory _httpClientFactory; + + readonly IServiceProvider _serviceProvider; + /// + /// 2020.05.31增加构造方法 + /// + /// + /// + public HttpResultfulJob(IServiceProvider serviceProvider, IHttpClientFactory httpClientFactory) + { + _httpClientFactory = httpClientFactory; + _serviceProvider = serviceProvider; + } + public async Task Execute(IJobExecutionContext context) + { + DateTime dateTime = DateTime.Now; + Sys_QuartzOptions taskOptions = context.GetTaskOptions(); + string httpMessage = ""; + AbstractTrigger trigger = (context as JobExecutionContextImpl).Trigger as AbstractTrigger; + if (taskOptions == null) + { + Console.WriteLine($"未获取到作业"); + return; + } + if (string.IsNullOrEmpty(taskOptions.ApiUrl) || taskOptions.ApiUrl == "/") + { + Console.WriteLine($"未配置作业:{taskOptions.TaskName}的url地址"); + QuartzFileHelper.Error($"未配置作业:{taskOptions.TaskName}的url地址"); + return; + } + string exceptionMsg = null; + + try + { + using (var dbContext = new VOLContext()) + { + var _taskOptions = dbContext.Set().AsTracking() + .Where(x => x.Id == taskOptions.Id).FirstOrDefault(); + + if (_taskOptions != null) + { + dbContext.Update(_taskOptions); + var entry = dbContext.Entry(_taskOptions); + entry.State = EntityState.Unchanged; + entry.Property("LastRunTime").IsModified = true; + _taskOptions.LastRunTime = DateTime.Now; + dbContext.SaveChanges(); + } + } + + Dictionary header = new Dictionary(); + if (!string.IsNullOrEmpty(taskOptions.AuthKey) + && !string.IsNullOrEmpty(taskOptions.AuthValue)) + { + header.Add(taskOptions.AuthKey.Trim(), taskOptions.AuthValue.Trim()); + } + + httpMessage = await _httpClientFactory.SendAsync( + taskOptions.Method?.ToLower() == "get" ? HttpMethod.Get : HttpMethod.Post, + taskOptions.ApiUrl, + taskOptions.PostData, + taskOptions.TimeOut ?? 180, + header); ; + } + catch (Exception ex) + { + exceptionMsg = ex.Message + ex.StackTrace; + } + finally + { + try + { + var log = new Sys_QuartzLog + { + LogId = Guid.NewGuid(), + TaskName = taskOptions.TaskName, + Id = taskOptions.Id, + CreateDate = dateTime, + ElapsedTime = Convert.ToInt32((DateTime.Now - dateTime).TotalSeconds), + ResponseContent = httpMessage, + ErrorMsg = exceptionMsg, + StratDate = dateTime, + Result = exceptionMsg == null ? 1 : 0, + EndDate = DateTime.Now + }; + using (var dbContext = new VOLContext()) + { + dbContext.Set().Add(log); + dbContext.SaveChanges(); + } + } + catch (Exception ex) + { + Console.WriteLine($"日志写入异常:{taskOptions.TaskName},{ex.Message}"); + QuartzFileHelper.Error($"日志写入异常:{typeof(HttpResultfulJob).Name},{taskOptions.TaskName},{ex.Message}"); + } + } + Console.WriteLine(trigger.FullName + " " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:sss") + " " + httpMessage); + return; + } + } + public class TaskOptions + { + public string TaskName { get; set; } + public string GroupName { get; set; } + public string Interval { get; set; } + public string ApiUrl { get; set; } + public string AuthKey { get; set; } + public string AuthValue { get; set; } + public string Describe { get; set; } + public string RequestType { get; set; } + public DateTime? LastRunTime { get; set; } + public int Status { get; set; } + } +} diff --git "a/.Net6\347\211\210\346\234\254/VOL.Core/Quartz/IOCJobFactory.cs" "b/.Net6\347\211\210\346\234\254/VOL.Core/Quartz/IOCJobFactory.cs" new file mode 100644 index 000000000..ad328e790 --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.Core/Quartz/IOCJobFactory.cs" @@ -0,0 +1,28 @@ +using Quartz; +using Quartz.Spi; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; + +namespace VOL.Core.Quartz +{ + public class IOCJobFactory: IJobFactory + { + private readonly IServiceProvider _serviceProvider; + public IOCJobFactory(IServiceProvider serviceProvider) + { + _serviceProvider = serviceProvider; + } + public IJob NewJob(TriggerFiredBundle bundle, IScheduler scheduler) + { + return _serviceProvider.GetService(bundle.JobDetail.JobType) as IJob; + + } + + public void ReturnJob(IJob job) + { + (job as IDisposable)?.Dispose(); + } + } +} diff --git "a/.Net6\347\211\210\346\234\254/VOL.Core/Quartz/JobAction.cs" "b/.Net6\347\211\210\346\234\254/VOL.Core/Quartz/JobAction.cs" new file mode 100644 index 000000000..4e6465743 --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.Core/Quartz/JobAction.cs" @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace VOL.Core.Quartz +{ + public enum JobAction + { + 新增 = 1, + 删除 = 2, + 修改 = 3, + 暂停 = 4, + 停止, + 开启, + 立即执行 + } +} diff --git "a/.Net6\347\211\210\346\234\254/VOL.Core/Quartz/QuartzAuthorization.cs" "b/.Net6\347\211\210\346\234\254/VOL.Core/Quartz/QuartzAuthorization.cs" new file mode 100644 index 000000000..0a8f77fca --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.Core/Quartz/QuartzAuthorization.cs" @@ -0,0 +1,69 @@ +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.Filters; +using Microsoft.Extensions.Primitives; +using System; +using System.Collections.Generic; +using System.Security.Cryptography; +using System.Text; +using VOL.Core.Configuration; +using VOL.Core.Extensions; + +namespace VOL.Core.Quartz +{ + public static class QuartzAuthorization + { + + private static string _quartzAccessKey; + + public static string Key = "QuartzAccessKey"; + public static string AccessKey + { + get + { + if (string.IsNullOrEmpty(_quartzAccessKey)) + { + _quartzAccessKey = GetAccessKey(); + } + return _quartzAccessKey; + } + } + public static string GetAccessKey() + { + if (string.IsNullOrEmpty(_quartzAccessKey)) + { + _quartzAccessKey = AppSetting.GetSettingString(Key); + } + if (string.IsNullOrEmpty(_quartzAccessKey)) + { + _quartzAccessKey = Guid.NewGuid().ToString(); + } + using (MD5 md5 = MD5.Create()) + { + string md5str = _quartzAccessKey; + byte[] s = md5.ComputeHash(Encoding.UTF8.GetBytes(AppSetting.Secret.User)); + for (int i = 0; i < s.Length; i++) + { + string btos = s[i].ToString("X2"); + md5str += btos; + } + return md5str; + } + } + + public static AuthorizationFilterContext Validation(AuthorizationFilterContext context) + { + bool result = context.HttpContext.Request.Headers.TryGetValue(Key, out StringValues value); + if (!result || AccessKey != value) + { + context.Result = new ContentResult() + { + Content = new { message = "key不匹配", status = false, code = 401 }.Serialize(), + ContentType = "application/json", + StatusCode = 401 + }; + return context; + } + return context; + } + } +} diff --git "a/.Net6\347\211\210\346\234\254/VOL.Core/Quartz/QuartzFileHelper.cs" "b/.Net6\347\211\210\346\234\254/VOL.Core/Quartz/QuartzFileHelper.cs" new file mode 100644 index 000000000..10948e763 --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.Core/Quartz/QuartzFileHelper.cs" @@ -0,0 +1,36 @@ +using System; +using System.Collections.Generic; +using System.Text; +using VOL.Core.Configuration; +using VOL.Core.Extensions; +using VOL.Core.Utilities; + +namespace VOL.Core.Quartz +{ + public static class QuartzFileHelper + { + public static void OK(string message) + { + Write(message, "log"); + } + + public static void Error(string message) + { + Write(message, "error"); + } + + private static void Write(string message,string folder) + { + try + { + string fileName = DateTime.Now.ToString("yyyy-MM-dd"); + string path = $"{AppSetting.CurrentPath}\\quartz\\{folder}\\".ReplacePath(); + FileHelper.WriteFile(path, $"{fileName}.txt", message, true); + } + catch (Exception ex) + { + Console.WriteLine($"文件写入异常{message},{ex.Message + ex.StackTrace}"); + } + } + } +} diff --git "a/.Net6\347\211\210\346\234\254/VOL.Core/Quartz/QuartzNETExtension.cs" "b/.Net6\347\211\210\346\234\254/VOL.Core/Quartz/QuartzNETExtension.cs" new file mode 100644 index 000000000..a029e189b --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.Core/Quartz/QuartzNETExtension.cs" @@ -0,0 +1,349 @@ +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Hosting; +using Microsoft.Extensions.DependencyInjection; +using Newtonsoft.Json; +using Quartz; +using Quartz.Impl; +using Quartz.Impl.Matchers; +using Quartz.Impl.Triggers; +using Quartz.Spi; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using VOL.Core.DBManager; +using VOL.Core.EFDbContext; +using VOL.Core.Extensions; +using VOL.Core.Utilities; +using VOL.Entity.DomainModels; + +namespace VOL.Core.Quartz +{ + public static class QuartzNETExtension + { + private static List _taskList = new List(); + + /// + /// 初始化作业 + /// + /// + /// + /// + public static IApplicationBuilder UseQuartz(this IApplicationBuilder applicationBuilder, IWebHostEnvironment env) + { + IServiceProvider services = applicationBuilder.ApplicationServices; + ISchedulerFactory _schedulerFactory = services.GetService(); + try + { + _taskList = services.GetService().Set().Where(x=>x.Status==0).ToList(); + for (int i = 0; i < 1; i++) + { + _taskList.Add(new Sys_QuartzOptions() + { + Id = Guid.NewGuid(), + GroupName = $"group{i}", + TaskName = $"task{i}", + CronExpression = "0 0 0 1 * ?", + Status = 0 + }); + } + _taskList.ForEach(options => + { + options.AddJob(_schedulerFactory, jobFactory: services.GetService()).GetAwaiter().GetResult(); + }); + } + catch (Exception ex) + { + Console.WriteLine($"作业启动异常:{ex.Message + ex.StackTrace}"); + } + return applicationBuilder; + } + + + private static async Task CheckTask(Sys_QuartzOptions taskOptions, ISchedulerFactory schedulerFactory) + { + string groupName = "group"; + string taskName = taskOptions.Id.ToString(); + IScheduler scheduler = await schedulerFactory.GetScheduler(); + List jobKeys =(await scheduler.GetJobKeys(GroupMatcher.GroupEquals(groupName))).ToList(); + if (jobKeys == null || jobKeys.Count() == 0) + { + return false; + } + JobKey jobKey = jobKeys.Where(s => scheduler.GetTriggersOfJob(s).Result + .Any(x => (x as CronTriggerImpl).Name == taskName)) + .FirstOrDefault(); + if (jobKey == null) + { + return false; + } + var triggers = await scheduler.GetTriggersOfJob(jobKey); + ITrigger trigger = triggers?.Where(x => (x as CronTriggerImpl).Name == taskName).FirstOrDefault(); + + if (trigger == null) + { + return false; + } + return true; + } + + /// + /// 添加作业 + /// + /// + /// + /// 是否初始化,否=需要重新生成配置文件,是=不重新生成配置文件 + /// + public static async Task AddJob(this Sys_QuartzOptions taskOptions, ISchedulerFactory schedulerFactory, IJobFactory jobFactory = null) + { + string msg = null; + try + { + if (await CheckTask(taskOptions,schedulerFactory)) + { + await schedulerFactory.TriggerAction(JobAction.开启, taskOptions); + return new { status = true }; + } + if (!_taskList.Exists(x => x.Id == taskOptions.Id)) + { + _taskList.Add(taskOptions); + } + else + { + _taskList = _taskList.Where(x => x.Id != taskOptions.Id).ToList(); + _taskList.Add(taskOptions); + } + taskOptions.GroupName = "group"; + (bool, string) validExpression = taskOptions.CronExpression.IsValidExpression(); + if (!validExpression.Item1) + { + msg = $"添加作业失败,作业:{taskOptions.TaskName},表达式不正确:{ taskOptions.CronExpression}"; + Console.WriteLine(msg); + QuartzFileHelper.Error(msg); + return new { status = false, msg = validExpression.Item2 }; + } + + IJobDetail job = JobBuilder.Create() + .WithIdentity(taskOptions.Id.ToString(), "group").Build(); + ITrigger trigger = TriggerBuilder.Create() + .WithIdentity(taskOptions.Id.ToString(), "group") + // .st() + .WithDescription(taskOptions.Describe) + .WithCronSchedule(taskOptions.CronExpression) + .Build(); + + IScheduler scheduler = await schedulerFactory.GetScheduler(); + + if (jobFactory == null) + { + jobFactory = HttpContext.Current.RequestServices.GetService(); + } + + if (jobFactory != null) + { + scheduler.JobFactory = jobFactory; + } + + await scheduler.ScheduleJob(job, trigger); + await scheduler.Start(); + msg = $"作业启动:{taskOptions.TaskName}"; + Console.WriteLine(msg); + QuartzFileHelper.Error(msg); + //if (taskOptions.Status == (int)TriggerState.Normal) + //{ + // await scheduler.Start(); + // msg = $"作业启动:{taskOptions.TaskName}"; + // Console.WriteLine(msg); + // QuartzFileHelper.Error(msg); + //} + //else + //{ + // await scheduler.PauseJob(job.Key); + //} + } + catch (Exception ex) + { + msg = $"作业启动异常:{taskOptions.TaskName},{ex.Message}"; + Console.WriteLine(msg); + QuartzFileHelper.Error(msg); + return new { status = false, msg = ex.Message }; + } + return new { status = true }; + } + + /// + /// 移除作业 + /// + /// + /// + /// + /// + public static Task Remove(this ISchedulerFactory schedulerFactory, Sys_QuartzOptions taskOptions) + { + return schedulerFactory.TriggerAction(JobAction.删除, taskOptions); + } + + /// + /// 更新作业 + /// + /// + /// + /// + public static Task Update(this ISchedulerFactory schedulerFactory, Sys_QuartzOptions taskOptions) + { + return schedulerFactory.TriggerAction(JobAction.修改, taskOptions); + } + + /// + /// 暂停作业 + /// + /// + /// + /// + public static Task Pause(this ISchedulerFactory schedulerFactory, Sys_QuartzOptions taskOptions) + { + return schedulerFactory.TriggerAction(JobAction.暂停, taskOptions); + } + + /// + /// 启动作业 + /// + /// + /// + /// + public static Task Start(this ISchedulerFactory schedulerFactory, Sys_QuartzOptions taskOptions) + { + return taskOptions.AddJob(schedulerFactory); + // return schedulerFactory.TriggerAction(JobAction.开启, taskOptions); + } + + /// + /// 立即执行一次作业 + /// + /// + /// + /// + public static Task Run(this ISchedulerFactory schedulerFactory, Sys_QuartzOptions taskOptions) + { + return schedulerFactory.TriggerAction(JobAction.立即执行, taskOptions); + } + + /// + /// 触发新增、删除、修改、暂停、启用、立即执行事件 + /// + /// + /// + /// + /// + /// + /// + public static async Task TriggerAction( + this ISchedulerFactory schedulerFactory, + JobAction action, + Sys_QuartzOptions taskOptions = null) + { + string errorMsg = ""; + try + { + string groupName = "group"; + string taskName = taskOptions.Id.ToString(); + IScheduler scheduler = await schedulerFactory.GetScheduler(); + List jobKeys = scheduler.GetJobKeys(GroupMatcher.GroupEquals(groupName)).Result.ToList(); + if (jobKeys == null || jobKeys.Count() == 0) + { + errorMsg = $"未找到分组[{groupName}]"; + return new { status = false, msg = errorMsg }; + } + JobKey jobKey = jobKeys.Where(s => scheduler.GetTriggersOfJob(s).Result + .Any(x => (x as CronTriggerImpl).Name == taskName)) + .FirstOrDefault(); + if (jobKey == null) + { + errorMsg = $"未找到触发器[{taskName}]"; + return new { status = false, msg = errorMsg }; + } + var triggers = await scheduler.GetTriggersOfJob(jobKey); + ITrigger trigger = triggers?.Where(x => (x as CronTriggerImpl).Name == taskName).FirstOrDefault(); + + if (trigger == null) + { + errorMsg = $"未找到触发器[{taskName}]"; + return new { status = false, msg = errorMsg }; + } + object result = null; + switch (action) + { + case JobAction.删除: + case JobAction.修改: + case JobAction.暂停: + await scheduler.PauseTrigger(trigger.Key); + await scheduler.UnscheduleJob(trigger.Key);// 移除触发器 + await scheduler.DeleteJob(trigger.JobKey); + if (action==JobAction.暂停) + { + taskOptions.Status = (int)JobAction.暂停; + } + break; + case JobAction.开启: + await scheduler.ResumeTrigger(trigger.Key); + await scheduler.TriggerJob(jobKey); + break; + } + return result ?? new { status = true, msg = $"作业{action.ToString()}成功" }; + } + catch (Exception ex) + { + errorMsg = ex.Message; + return new { status = false, msg = ex.Message }; + } + } + + /// + /// + /// + /// 通过作业上下文获取作业对应的配置参数 + /// + public static Sys_QuartzOptions GetTaskOptions(this IJobExecutionContext context) + { + AbstractTrigger trigger = (context as JobExecutionContextImpl).Trigger as AbstractTrigger; + Sys_QuartzOptions taskOptions = _taskList.Where(x => x.Id.ToString() == trigger.Name).FirstOrDefault(); + return taskOptions ?? _taskList.Where(x => x.Id.ToString() == trigger.JobName).FirstOrDefault(); + } + + /// + /// 作业是否存在 + /// + /// + /// 初始化的不需要判断 + /// + public static (bool, object) Exists(this Sys_QuartzOptions taskOptions, bool init) + { + if (!init && _taskList.Any(x => x.TaskName == taskOptions.TaskName && x.GroupName == taskOptions.GroupName)) + { + return (false, + new + { + status = false, + msg = $"作业:{taskOptions.TaskName},分组:{taskOptions.GroupName}已经存在" + }); + } + return (true, null); + } + + public static (bool, string) IsValidExpression(this string cronExpression) + { + try + { + CronTriggerImpl trigger = new CronTriggerImpl(); + trigger.CronExpressionString = cronExpression; + DateTimeOffset? date = trigger.ComputeFirstFireTimeUtc(null); + return (date != null, date == null ? $"请确认表达式{cronExpression}是否正确!" : ""); + } + catch (Exception e) + { + return (false, $"请确认表达式{cronExpression}是否正确!{e.Message}"); + } + } + } + +} diff --git "a/.Net6\347\211\210\346\234\254/VOL.Core/Services/Logger.cs" "b/.Net6\347\211\210\346\234\254/VOL.Core/Services/Logger.cs" index a22323f0d..03b5524a5 100644 --- "a/.Net6\347\211\210\346\234\254/VOL.Core/Services/Logger.cs" +++ "b/.Net6\347\211\210\346\234\254/VOL.Core/Services/Logger.cs" @@ -222,7 +222,6 @@ private static DataTable CreateEmptyTable() public static void SetServicesInfo(Sys_Log log, HttpContext context) { - string result = String.Empty; log.Url = context.Request.Scheme + "://" + context.Request.Host + context.Request.PathBase + context.Request.Path; @@ -230,6 +229,10 @@ public static void SetServicesInfo(Sys_Log log, HttpContext context) log.ServiceIP = context.Connection.LocalIpAddress.MapToIPv4().ToString() + ":" + context.Connection.LocalPort; log.BrowserType = context.Request.Headers["User-Agent"]; + if (log.BrowserType!=null&&log.BrowserType.Length>190) + { + log.BrowserType = log.BrowserType.Substring(0, 190); + } if (string.IsNullOrEmpty(log.RequestParameter)) { try diff --git "a/.Net6\347\211\210\346\234\254/VOL.Core/UserManager/UserContext.cs" "b/.Net6\347\211\210\346\234\254/VOL.Core/UserManager/UserContext.cs" index e465f4f6f..1e896bfe2 100644 --- "a/.Net6\347\211\210\346\234\254/VOL.Core/UserManager/UserContext.cs" +++ "b/.Net6\347\211\210\346\234\254/VOL.Core/UserManager/UserContext.cs" @@ -94,6 +94,8 @@ public UserInfo GetUserInfo(int userId) User_Id = userId, Role_Id = s.Role_Id.GetInt(), RoleName = s.RoleName, + //2022.08.15增加部门id + DeptId = s.Dept_Id??0, Token = s.Token, UserName = s.UserName, UserTrueName = s.UserTrueName, @@ -124,6 +126,7 @@ public UserInfo GetUserInfo(int userId) private static readonly Dictionary> rolePermissions = new Dictionary>(); + /// /// 获取用户所有的菜单权限 /// @@ -136,6 +139,22 @@ public List Permissions } } + /// + /// 菜单按钮变更时,同时刷新权限缓存2022.05.23 + /// + /// + public void RefreshWithMenuActionChange(int menuId) + { + foreach (var roleId in rolePermissions.Where(c => c.Value.Any(x => x.Menu_Id == menuId)).Select(s => s.Key)) + { + if (rolePermissionsVersion.ContainsKey(roleId)) + { + CacheService.Add(roleId.GetRoleIdKey(), DateTime.Now.ToString("yyyyMMddHHMMssfff")); + } + } + + } + /// /// 获取单个表的权限 /// @@ -173,9 +192,11 @@ private List ActionToArray(List permissions) { try { + var menuAuthArr = x.MenuAuth.DeserializeObject>(); x.UserAuthArr = string.IsNullOrEmpty(x.UserAuth) ? new string[0] - : x.UserAuth.Split(","); + : x.UserAuth.Split(",").Where(c => menuAuthArr.Any(m => m.Value == c)).ToArray(); + } catch { } finally @@ -300,7 +321,6 @@ public bool ExistsPermissions(string tableName, string authName, int roleId = 0) { if (roleId <= 0) roleId = RoleId; tableName = tableName.ToLower(); - authName = authName.ToLower(); return GetPermissions(roleId).Any(x => x.TableName == tableName && x.UserAuthArr.Contains(authName)); } diff --git "a/.Net6\347\211\210\346\234\254/VOL.Core/Utilities/EPPlusHelper.cs" "b/.Net6\347\211\210\346\234\254/VOL.Core/Utilities/EPPlusHelper.cs" index bba596443..bd3c2191e 100644 --- "a/.Net6\347\211\210\346\234\254/VOL.Core/Utilities/EPPlusHelper.cs" +++ "b/.Net6\347\211\210\346\234\254/VOL.Core/Utilities/EPPlusHelper.cs" @@ -26,7 +26,10 @@ public class EPPlusHelper /// 忽略不导出的列(如果设置了exportColumns,ignoreColumns不会生效) /// - public static WebResponseContent ReadToDataTable(string path, Expression> exportColumns = null, List ignoreTemplate = null) + public static WebResponseContent ReadToDataTable(string path, + Expression> exportColumns = null, + List ignoreTemplate = null, + Func readValue = null) { WebResponseContent responseContent = new WebResponseContent(); @@ -90,7 +93,13 @@ public static WebResponseContent ReadToDataTable(string path, Expression(); for (int j = sheet.Dimension.Start.Column, k = sheet.Dimension.End.Column; j <= k; j++) { + string value = sheet.Cells[m, j].Value?.ToString(); + //2022.06.20增加原生excel读取方法 + if (readValue != null) + { + value = readValue(value, sheet, sheet.Cells[m, j], m, j); + } CellOptions options = cellOptions.Where(x => x.Index == j).FirstOrDefault(); PropertyInfo property = propertyInfos.Where(x => x.Name == options.ColumnName).FirstOrDefault(); @@ -113,9 +122,25 @@ public static WebResponseContent ReadToDataTable(string path, Expression x.Value == value) - .Select(s => s.Key) - .FirstOrDefault(); + string key = null; + //2022.11.21增加导入多选的支持 + if ((options.EditType == "selectList" || options.EditType == "checkbox") && !string.IsNullOrEmpty(value)) + { + var cellValues = value.Replace(",", ",").Split(",").Where(x => !string.IsNullOrEmpty(x)).ToArray(); + var keys = options.KeyValues.Where(x => cellValues.Contains(x.Value)) + .Select(s => s.Key).ToArray(); + if (cellValues.Length == keys.Length) + { + key = string.Join(",", keys); + } + } + else + { + key = options.KeyValues.Where(x => x.Value == value) + .Select(s => s.Key) + .FirstOrDefault(); + } + if (key == null)//&& options.Requierd { //小于20个字典项,直接提示所有可选value @@ -316,9 +341,19 @@ public static string Export(List list, IEnumerable exportColumns, //如果指定了导出的标题列,忽略的标题列不再起作用 if (exportColumns != null && exportColumns.Count() > 0) { - propertyInfo = - typeof(T).GetProperties() - .Where(x => exportColumns.Select(g => g.ToLower()).Contains(x.Name.ToLower())).ToList(); + propertyInfo = new List(); + var properties = typeof(T).GetProperties(); + foreach (var name in exportColumns) + { + var property = properties.Where(x => x.Name.ToLower() == name.ToLower()).FirstOrDefault(); + if (property != null) + { + propertyInfo.Add(property); + } + } + //propertyInfo = + // typeof(T).GetProperties() + // .Where(x => exportColumns.Select(g => g.ToLower()).Contains(x.Name.ToLower())).ToList(); //.Where(x => cellOptions.Select(s => s.ColumnName) //获取代码生成器配置的列 //.Contains(x.Name)).ToList(); } @@ -473,7 +508,7 @@ private static List GetExportColumnInfo(string tableName, bool teml { query = query.Where(x => x.IsDisplay == 1); } - List cellOptions = query.Select(c => new CellOptions() + List cellOptions = query.OrderByDescending(x => x.OrderNo).Select(c => new CellOptions() { ColumnName = c.ColumnName, ColumnCNName = c.ColumnCnName, @@ -516,7 +551,17 @@ private static List GetExportColumnInfo(string tableName, bool teml } return cellOptions; } - + + public static string ExportGeneralExcel( + List> rows, + string fileName, + string path = null, + Action onFillCell = null, + Action saveBefore = null) + { + return ExportGeneralExcel(rows.Select(item => item as IDictionary).ToList(), fileName, path, onFillCell, saveBefore); + } + /// /// 2021.01.10增加通过excel导出功能 /// @@ -527,7 +572,7 @@ private static List GetExportColumnInfo(string tableName, bool teml /// /// public static string ExportGeneralExcel( - List> rows, + List> rows, string fileName, string path = null, Action onFillCell = null, diff --git "a/.Net6\347\211\210\346\234\254/VOL.Core/Utilities/JwtHelper.cs" "b/.Net6\347\211\210\346\234\254/VOL.Core/Utilities/JwtHelper.cs" index b989cef40..f3ece2d47 100644 --- "a/.Net6\347\211\210\346\234\254/VOL.Core/Utilities/JwtHelper.cs" +++ "b/.Net6\347\211\210\346\234\254/VOL.Core/Utilities/JwtHelper.cs" @@ -85,6 +85,8 @@ public static int GetUserId(string jwtStr) { try { + if (jwtStr.IsNullOrEmpty()) return 0; + jwtStr = jwtStr.Replace("Bearer ", ""); return new JwtSecurityTokenHandler().ReadJwtToken(jwtStr).Id.GetInt(); } catch diff --git "a/.Net6\347\211\210\346\234\254/VOL.Core/Utilities/MailHelper.cs" "b/.Net6\347\211\210\346\234\254/VOL.Core/Utilities/MailHelper.cs" new file mode 100644 index 000000000..accc91fa1 --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.Core/Utilities/MailHelper.cs" @@ -0,0 +1,64 @@ +using Microsoft.Extensions.Configuration; +using System; +using System.Collections.Generic; +using System.Net; +using System.Net.Mail; +using System.Text; +using VOL.Core.Configuration; +using VOL.Core.Extensions; + +namespace VOL.Core.Utilities +{ + public static class MailHelper + { + private static string address { get; set; } + private static string authPwd { get; set; } + private static string name { get; set; } + private static string host { get; set; } + private static int port; + private static bool enableSsl { get; set; } + static MailHelper() + { + IConfigurationSection section= AppSetting.GetSection("Mail"); + address = section["Address"]; + authPwd = section["AuthPwd"]; + name = section["Name"]; + host = section["Host"]; + port = section["Port"].GetInt(); + enableSsl = section["EnableSsl"].GetBool(); + } + + /// + /// 发送邮件 + /// + /// 标题 + /// 内容 + /// 收件人 + public static void Send(string title, string content, params string[] list) + { + Console.WriteLine(AppSetting.GetSection("ModifyMember")["DateUTCField"]); + MailMessage message = new MailMessage + { + From = new MailAddress(address, name)//发送人邮箱 + }; + foreach (var item in list) + { + message.To.Add(item);//收件人地址 + } + + message.Subject = title;//发送邮件的标题 + + message.Body = content;//发送邮件的内容 + //配置smtp服务地址 + SmtpClient client = new SmtpClient + { + Host = host, + Port = port,//端口587 + EnableSsl = enableSsl, + //发送人邮箱与授权密码 + Credentials = new NetworkCredential(address, authPwd) + }; + client.Send(message); + } + } +} diff --git "a/.Net6\347\211\210\346\234\254/VOL.Core/Utilities/VierificationCode.cs" "b/.Net6\347\211\210\346\234\254/VOL.Core/Utilities/VierificationCode.cs" index 2e3f75060..6b6285cb6 100644 --- "a/.Net6\347\211\210\346\234\254/VOL.Core/Utilities/VierificationCode.cs" +++ "b/.Net6\347\211\210\346\234\254/VOL.Core/Utilities/VierificationCode.cs" @@ -3,6 +3,7 @@ using System.Drawing; using System.Drawing.Imaging; using System.IO; +using System.Runtime.Versioning; using System.Text; namespace VOL.Core.Utilities @@ -31,6 +32,9 @@ public static string RandomText() } return code; } + + [SupportedOSPlatform("Windows")] + [Obsolete("仅在 Windows 上支持 System.Drawing.Common,具体请参考:https://docs.microsoft.com/zh-cn/dotnet/core/compatibility/core-libraries/6.0/system-drawing-common-windows-only")] public static string CreateBase64Imgage(string code) { Random random = new Random(); diff --git "a/.Net6\347\211\210\346\234\254/VOL.Core/Utilities/VierificationCodeHelpers.cs" "b/.Net6\347\211\210\346\234\254/VOL.Core/Utilities/VierificationCodeHelpers.cs" new file mode 100644 index 000000000..3ed7a2d4f --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.Core/Utilities/VierificationCodeHelpers.cs" @@ -0,0 +1,98 @@ +using SkiaSharp; +using System; +using System.IO; +using System.Linq; + +namespace VOL.Core.Utilities +{ + public static class VierificationCodeHelpers + { //验证码字体集合 + private static readonly string[] fonts = { "Verdana", "Microsoft Sans Serif", "Comic Sans MS", "Arial", "宋体" }; + private static readonly SKColor[] colors = { SKColors.Black, SKColors.Green, SKColors.Brown }; + + /// + /// + /// + /// + /// + public static string CreateBase64Image(string code) + { + var random = new Random(); + var info = new SKImageInfo((int)code.Length * 18, 32); + using var bitmap = new SKBitmap(info); + using var canvas = new SKCanvas(bitmap); + + canvas.Clear(SKColors.White); + + using var pen = new SKPaint(); + pen.FakeBoldText = true; + pen.Style = SKPaintStyle.Fill; + pen.TextSize = 20;// 0.6f * info.Width * pen.TextSize / pen.MeasureText(code); + + //绘制随机字符 + for (int i = 0; i < code.Length; i++) + { + pen.Color = random.GetRandom(colors);//随机颜色索引值 + pen.Typeface = SKTypeface.FromFamilyName(random.GetRandom(fonts), 700, 20, SKFontStyleSlant.Italic);//配置字体 + var point = new SKPoint() + { + X = i * 16, + Y = 22// info.Height - ((i + 1) % 2 == 0 ? 2 : 4), + + }; + canvas.DrawText(code.Substring(i, 1), point, pen);//绘制一个验证字符 + } + + //绘制噪点 + var points = Enumerable.Range(0, 100).Select( + _ => new SKPoint(random.Next(bitmap.Width), random.Next(bitmap.Height)) + ).ToArray(); + canvas.DrawPoints( + SKPointMode.Points, + points, + pen); + + //绘制贝塞尔线条 + for (int i = 0; i < 2; i++) + { + var p1 = new SKPoint(0, 0); + var p2 = new SKPoint(0, 0); + var p3 = new SKPoint(0, 0); + var p4 = new SKPoint(0, 0); + + var touchPoints = new SKPoint[] { p1, p2, p3, p4 }; + + using var bPen = new SKPaint(); + bPen.Color = random.GetRandom(colors); + bPen.Style = SKPaintStyle.Stroke; + + using var path = new SKPath(); + path.MoveTo(touchPoints[0]); + path.CubicTo(touchPoints[1], touchPoints[2], touchPoints[3]); + canvas.DrawPath(path, bPen); + } + return bitmap.ToBase64String(SKEncodedImageFormat.Png); + } + + public static T GetRandom(this Random random, T[] tArray) + { + if (random == null) random = new Random(); + return tArray[random.Next(tArray.Length)]; + } + + /// + /// SKBitmap转Base64String + /// + /// + /// + /// + public static string ToBase64String(this SKBitmap bitmap, SKEncodedImageFormat format) + { + using var memStream = new MemoryStream(); + using var wstream = new SKManagedWStream(memStream); + bitmap.Encode(wstream, format, 32); + memStream.TryGetBuffer(out ArraySegment buffer); + return $"{Convert.ToBase64String(buffer.Array, 0, (int)memStream.Length)}"; + } + } +} \ No newline at end of file diff --git "a/.Net6\347\211\210\346\234\254/VOL.Core/Utilities/VierificationCodeServices.cs" "b/.Net6\347\211\210\346\234\254/VOL.Core/Utilities/VierificationCodeServices.cs" index 2fe795543..d34fd0586 100644 --- "a/.Net6\347\211\210\346\234\254/VOL.Core/Utilities/VierificationCodeServices.cs" +++ "b/.Net6\347\211\210\346\234\254/VOL.Core/Utilities/VierificationCodeServices.cs" @@ -1,109 +1,114 @@ -using System; -using System.DrawingCore; -using System.DrawingCore.Imaging; +using SkiaSharp; +using System; using System.IO; +using System.Linq; +using System.Runtime.InteropServices; -namespace DotNet.Utilities +namespace VOL.Core.Utilities { - public class VierificationCodeServices - { - /// - /// 该方法用于生成指定位数的随机数 - /// - /// 参数是随机数的位数 - /// 返回一个随机数字符串 - private static string RndNum(int VcodeNum) + public static class VierificationCodeServices + { //验证码字体集合 + private static readonly string[] fonts = null; + + static VierificationCodeServices() { - //验证码可以显示的字符集合 - string Vchar = "0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,g,h,i,j,k,l,m,n,p" + - ",q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,P,P,Q" + - ",R,S,T,U,V,W,X,Y,Z"; - string[] VcArray = Vchar.Split(new Char[] { ',' });//拆分成数组 - string code = "";//产生的随机数 - int temp = -1;//记录上次随机数值,尽量避避免生产几个一样的随机数 - - Random rand = new Random(); - //采用一个简单的算法以保证生成随机数的不同 - for (int i = 1; i < VcodeNum + 1; i++) + if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { - if (temp != -1) - { - rand = new Random(i * temp * unchecked((int)DateTime.Now.Ticks));//初始化随机类 - } - int t = rand.Next(61);//获取随机数 - if (temp != -1 && temp == t) - { - return RndNum(VcodeNum);//如果获取的随机数重复,则递归调用 - } - temp = t;//把本次产生的随机数记录起来 - code += VcArray[t];//随机数的位数加一 + fonts = new string[] { "Verdana", "Microsoft Sans Serif", "Comic Sans MS", "Arial", "宋体" }; + } + else + { + fonts = new string[] { "Arial", "Arial", "宋体", "宋体" }; } - return code; } - /// - /// 该方法是将生成的随机数写入图像文件 - /// - /// code是一个随机数 - /// 生成位数(默认4位) - public static MemoryStream Create(out string code, int numbers = 4) + private static readonly SKColor[] colors = { SKColors.Black, SKColors.Green, SKColors.Brown }; + + /// + /// + /// + /// + /// + public static string CreateBase64Image(string code) { - code = RndNum(numbers); - Bitmap Img = null; - Graphics g = null; - MemoryStream ms = null; - Random random = new Random(); - //验证码颜色集合 - Color[] c = { Color.Black, Color.Red, Color.DarkBlue, Color.Green, Color.Orange, Color.Brown, Color.DarkCyan, Color.Purple }; - - //验证码字体集合 - string[] fonts = { "Verdana", "Microsoft Sans Serif", "Comic Sans MS", "Arial", "宋体" }; - - try - { - //定义图像的大小,生成图像的实例 - Img = new Bitmap((int)code.Length * 18, 32); + var random = new Random(); + var info = new SKImageInfo((int)code.Length * 18, 32); + using var bitmap = new SKBitmap(info); + using var canvas = new SKCanvas(bitmap); - g = Graphics.FromImage(Img);//从Img对象生成新的Graphics对象 + canvas.Clear(SKColors.White); - g.Clear(Color.White);//背景设为白色 + using var pen = new SKPaint(); + pen.FakeBoldText = true; + pen.Style = SKPaintStyle.Fill; + pen.TextSize = 20;// 0.6f * info.Width * pen.TextSize / pen.MeasureText(code); - //在随机位置画背景点 - for (int i = 0; i < 100; i++) - { - int x = random.Next(Img.Width); - int y = random.Next(Img.Height); - g.DrawRectangle(new Pen(Color.LightGray, 0), x, y, 1, 1); - } - //验证码绘制在g中 - for (int i = 0; i < code.Length; i++) - { - int cindex = random.Next(7);//随机颜色索引值 - int findex = random.Next(5);//随机字体索引值 - Font f = new Font(fonts[findex], 15, FontStyle.Bold);//字体 - Brush b = new SolidBrush(c[cindex]);//颜色 - int ii = 4; - if ((i + 1) % 2 == 0)//控制验证码不在同一高度 - { - ii = 2; - } - g.DrawString(code.Substring(i, 1), f, b, 3 + (i * 12), ii);//绘制一个验证字符 - } - ms = new MemoryStream();//生成内存流对象 - - Img.Save(ms, ImageFormat.Jpeg);//将此图像以Png图像文件的格式保存到流中 - } - catch (Exception) + //绘制随机字符 + for (int i = 0; i < code.Length; i++) { + pen.Color = random.GetRandom(colors);//随机颜色索引值 + + pen.Typeface = SKTypeface.FromFamilyName(random.GetRandom(fonts), 700, 20, SKFontStyleSlant.Italic);//配置字体 + var point = new SKPoint() + { + X = i * 16, + Y = 22// info.Height - ((i + 1) % 2 == 0 ? 2 : 4), + + }; + canvas.DrawText(code.Substring(i, 1), point, pen);//绘制一个验证字符 - throw; } - finally + + // 绘制噪点 + var points = Enumerable.Range(0, 100).Select( + _ => new SKPoint(random.Next(bitmap.Width), random.Next(bitmap.Height)) + ).ToArray(); + canvas.DrawPoints( + SKPointMode.Points, + points, + pen); + + //绘制贝塞尔线条 + for (int i = 0; i < 2; i++) { - g.Dispose(); - Img.Dispose(); + var p1 = new SKPoint(0, 0); + var p2 = new SKPoint(0, 0); + var p3 = new SKPoint(0, 0); + var p4 = new SKPoint(0, 0); + + var touchPoints = new SKPoint[] { p1, p2, p3, p4 }; + + using var bPen = new SKPaint(); + bPen.Color = random.GetRandom(colors); + bPen.Style = SKPaintStyle.Stroke; + + using var path = new SKPath(); + path.MoveTo(touchPoints[0]); + path.CubicTo(touchPoints[1], touchPoints[2], touchPoints[3]); + canvas.DrawPath(path, bPen); } - return ms; + return bitmap.ToBase64String(SKEncodedImageFormat.Png); } + + // public static T GetRandom(this Random random, T[] tArray) + //{ + // if (random == null) random = new Random(); + // return tArray[random.Next(tArray.Length)]; + //} + + ///// + ///// SKBitmap转Base64String + ///// + ///// + ///// + ///// + //public static string ToBase64String(this SKBitmap bitmap, SKEncodedImageFormat format) + //{ + // using var memStream = new MemoryStream(); + // using var wstream = new SKManagedWStream(memStream); + // bitmap.Encode(wstream, format, 32); + // memStream.TryGetBuffer(out ArraySegment buffer); + // return $"{Convert.ToBase64String(buffer.Array, 0, (int)memStream.Length)}"; + //} } } \ No newline at end of file diff --git "a/.Net6\347\211\210\346\234\254/VOL.Core/VOL.Core.csproj" "b/.Net6\347\211\210\346\234\254/VOL.Core/VOL.Core.csproj" index a41f85e84..d43754950 100644 --- "a/.Net6\347\211\210\346\234\254/VOL.Core/VOL.Core.csproj" +++ "b/.Net6\347\211\210\346\234\254/VOL.Core/VOL.Core.csproj" @@ -54,6 +54,8 @@ + + diff --git "a/.Net6\347\211\210\346\234\254/VOL.Core/WorkFlow/AuditStatus.cs" "b/.Net6\347\211\210\346\234\254/VOL.Core/WorkFlow/AuditStatus.cs" new file mode 100644 index 000000000..009b50b0e --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.Core/WorkFlow/AuditStatus.cs" @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace VOL.Core.WorkFlow +{ + public enum AuditStatus + { + 审核中 = 0, + 审核通过 = 1, + 审核未通过 = 2, + 驳回 = 3 + } + + public enum AuditType + { + 用户审批 = 1, + 角色审批 = 2, + 部门审批 = 3 + } +} diff --git "a/.Net6\347\211\210\346\234\254/VOL.Core/WorkFlow/WorkFlowContainer.cs" "b/.Net6\347\211\210\346\234\254/VOL.Core/WorkFlow/WorkFlowContainer.cs" new file mode 100644 index 000000000..71bb3b792 --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.Core/WorkFlow/WorkFlowContainer.cs" @@ -0,0 +1,45 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using VOL.Core.Extensions; + +namespace VOL.Core.WorkFlow +{ + public class WorkFlowContainer + { + private static WorkFlowContainer _instance; + private static Dictionary _container = new Dictionary(); + + public static WorkFlowContainer Instance + { + get + { + _instance = new WorkFlowContainer(); + return _instance; + } + } + + public WorkFlowContainer Use(string name = null) + { + _container[typeof(T).Name] = name ?? typeof(T).GetEntityTableCnName(); + return _instance; + } + + public static object GetDic() + { + return _container.Select(s => new { key = s.Key, value = s.Value }).ToList(); + } + + public static bool Exists() + { + return Exists(typeof(T).GetEntityTableName()); + } + + public static bool Exists(string table) + { + return _container.ContainsKey(table); + } + + } +} diff --git "a/.Net6\347\211\210\346\234\254/VOL.Core/WorkFlow/WorkFlowManager.cs" "b/.Net6\347\211\210\346\234\254/VOL.Core/WorkFlow/WorkFlowManager.cs" new file mode 100644 index 000000000..18e45804f --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.Core/WorkFlow/WorkFlowManager.cs" @@ -0,0 +1,308 @@ +using Microsoft.EntityFrameworkCore; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Text; +using VOL.Core.DBManager; +using VOL.Core.Extensions; +using VOL.Core.ManageUser; +using VOL.Core.Utilities; +using VOL.Entity.DomainModels; + +namespace VOL.Core.WorkFlow +{ + public static class WorkFlowManager + { + public static bool Exists() + { + return WorkFlowContainer.Exists(); + } + + public static bool Exists(T entity) + { + return WorkFlowContainer.Exists() && GetAuditStatusValue(typeof(T).GetKeyProperty().GetValue(entity).ToString()) != null; + } + public static bool Exists(string table) + { + return WorkFlowContainer.Exists(table); + } + + public static int GetAuditStatus(string value) + { + return GetAuditStatusValue(value) ?? 0; + } + + public static int? GetAuditStatusValue(string value) + { + return DBServerProvider.DbContext.Set() + .Where(x => x.WorkTable == typeof(T).GetEntityTableName() && x.WorkTableKey == value) + .Select(s => s.CurrentOrderId) + .FirstOrDefault(); + } + + private static void Rewrite(T entity, Sys_WorkFlow workFlow, bool changeTableStatus) where T : class + { + var autditProperty = typeof(T).GetProperties().Where(x => x.Name.ToLower() == "auditstatus").FirstOrDefault(); + if (autditProperty == null) + { + return; + } + + string value = typeof(T).GetKeyProperty().GetValue(entity).ToString(); + + var dbContext = DBServerProvider.DbContext; + + + var workTable = dbContext.Set().Where(x => x.WorkTableKey == value && x.WorkFlow_Id == workFlow.WorkFlow_Id) + .AsNoTracking() + .Include(x => x.Sys_WorkFlowTableStep).FirstOrDefault(); + if (workTable == null || workFlow.Sys_WorkFlowStep == null) + { + Console.WriteLine($"未查到流程数据,id:{ workFlow.WorkFlow_Id}"); + return; + } + workTable.CurrentOrderId = 1; + workTable.AuditStatus = (int)AuditStatus.审核中; + workTable.Sys_WorkFlowTableStep.ForEach(item => + { + item.Enable = 0; + }); + + if (changeTableStatus) + { + dbContext.Entry(entity).State = EntityState.Detached; + autditProperty.SetValue(entity, 0); + dbContext.Entry(entity).Property(autditProperty.Name).IsModified = true; + } + + var wlowTableStep = workFlow.Sys_WorkFlowStep.OrderBy(x => x.OrderId).Select(s => new Sys_WorkFlowTableStep() + { + Sys_WorkFlowTableStep_Id = Guid.NewGuid(), + WorkFlowTable_Id = workTable.WorkFlowTable_Id, + WorkFlow_Id = s.WorkFlow_Id, + StepId = s.StepId, + StepName = s.StepName, + AuditId = s.StepType == (int)AuditType.用户审批 ? s.StepValue : null, + StepType = s.StepType, + StepValue = s.StepValue, + OrderId = s.OrderId, + Enable = 1, + CreateDate = DateTime.Now, + }).ToList(); + dbContext.Entry(workTable).State = EntityState.Detached; + dbContext.Update(workTable); + dbContext.AddRange(wlowTableStep); + dbContext.SaveChanges(); + + } + /// + /// 写入流程 + /// + /// + /// + /// 是否重新生成流程 + /// 是否修改原表的审批状态 + public static void AddProcese(T entity, bool rewrite = false, bool changeTableStatus = true) where T : class + { + string workTable = typeof(T).GetEntityTableName(); + + Sys_WorkFlow workFlow = DBServerProvider.DbContext.Set() + .Where(x => x.WorkTable == workTable) + .Include(x => x.Sys_WorkFlowStep) + .FirstOrDefault(); + + if (workFlow == null || workFlow.Sys_WorkFlowStep.Count == 0) return; + //重新生成流程 + if (rewrite) + { + Rewrite(entity, workFlow, changeTableStatus); + return; + } + + var userInfo = UserContext.Current.UserInfo; + Guid workFlowTable_Id = Guid.NewGuid(); + Sys_WorkFlowTable workFlowTable = new Sys_WorkFlowTable() + { + WorkFlowTable_Id = workFlowTable_Id, + AuditStatus = (int)AuditStatus.审核中, + CurrentOrderId = 1, + Enable = 1, + WorkFlow_Id = workFlow.WorkFlow_Id, + WorkName = workFlow.WorkName, + WorkTable = workTable, + WorkTableKey = typeof(T).GetKeyProperty().GetValue(entity).ToString(), + WorkTableName = workFlow.WorkTableName, + CreateID = userInfo.User_Id, + CreateDate = DateTime.Now, + Creator = userInfo.UserTrueName, + Sys_WorkFlowTableStep = workFlow.Sys_WorkFlowStep.OrderBy(x => x.OrderId).Select(s => new Sys_WorkFlowTableStep() + { + Sys_WorkFlowTableStep_Id = Guid.NewGuid(), + WorkFlowTable_Id = workFlowTable_Id, + WorkFlow_Id = s.WorkFlow_Id, + StepId = s.StepId, + StepName = s.StepName, + AuditId = s.StepType == (int)AuditType.用户审批 ? s.StepValue : null, + StepType = s.StepType, + StepValue = s.StepValue, + OrderId = s.OrderId, + Enable = 1, + CreateDate = DateTime.Now, + }).ToList() + }; + DBServerProvider.DbContext.Set().Add(workFlowTable); + DBServerProvider.DbContext.SaveChanges(); + } + + + /// + /// 进入流程审核 + /// + /// + /// + /// + /// + /// + /// + /// + /// + public static WebResponseContent Audit(T entity, AuditStatus status, string remark, + PropertyInfo autditProperty, + Func workFlowExecuting, + Func, bool, WebResponseContent> workFlowExecuted, + bool init = false, + Action> initInvoke = null + ) where T : class + { + WebResponseContent webResponse = new WebResponseContent(true); + if (init) + { + if (!WorkFlowContainer.Exists()) + { + return webResponse; + } + } + var dbContext = DBServerProvider.DbContext; + var query = dbContext.Set(); + + var keyProperty = typeof(T).GetKeyProperty(); + string key = keyProperty.GetValue(entity).ToString(); + string workTable = typeof(T).GetEntityTableName(); + + Sys_WorkFlowTable workFlow = dbContext.Set() + .Where(x => x.WorkTable == workTable && x.WorkTableKey == key) + .Include(x => x.Sys_WorkFlowTableStep) + .FirstOrDefault(); + + if (init) + { + if (workFlow.Sys_WorkFlowTableStep.Count == 0) + { + return webResponse; + } + var step = workFlow.Sys_WorkFlowTableStep.Where(x => x.OrderId == 1).Select(s => new { s.StepType, s.StepValue }).FirstOrDefault(); + if (step != null) + { + initInvoke?.Invoke(entity, GetAuditUserIds(step.StepType ?? 0, step.StepValue ?? 0)); + } + + return webResponse; + } + + workFlow.AuditStatus = (int)status; + if (workFlow == null || workFlow.Sys_WorkFlowTableStep.Count == 0) + { + autditProperty.SetValue(entity, (int)status); + query.Update(entity); + dbContext.SaveChanges(); + return webResponse; + } + + var currnetStep = workFlow.Sys_WorkFlowTableStep.Where(x => x.OrderId == workFlow.CurrentOrderId).FirstOrDefault(); + if (currnetStep == null) + { + autditProperty.SetValue(entity, (int)status); + query.Update(entity); + dbContext.SaveChanges(); + return webResponse; + } + + var nextStep = workFlow.Sys_WorkFlowTableStep.Where(x => x.OrderId == workFlow.CurrentOrderId + 1).FirstOrDefault(); + + //指向下一个人审批 + if (nextStep != null && status == AuditStatus.审核通过) + { + workFlow.CurrentOrderId = nextStep.OrderId; + //原表显示审核中状态 + autditProperty.SetValue(entity, (int)AuditStatus.审核中); + workFlow.AuditStatus = (int)AuditStatus.审核中; + } + else + { + autditProperty.SetValue(entity, (int)status); + } + bool isLast = nextStep == null; + + if (workFlowExecuting != null) + { + webResponse = workFlowExecuting.Invoke(entity, status, isLast); + if (!webResponse.Status) + { + return webResponse; + } + } + + query.Update(entity); + + var user = UserContext.Current.UserInfo; + currnetStep.AuditId = user.User_Id; + currnetStep.Auditor = user.UserTrueName; + currnetStep.AuditDate = DateTime.Now; + currnetStep.AuditStatus = (int)status; + currnetStep.Remark = remark; + + + //dbContext.Entry(workFlow).Property("CurrentOrderId").IsModified = true; + //dbContext.Entry(workFlow).Property("AuditStatus").IsModified = true; + + + dbContext.Set().Update(workFlow); + + dbContext.SaveChanges(); + dbContext.Entry(workFlow).State = EntityState.Detached; + if (workFlowExecuted != null) + { + webResponse = workFlowExecuted.Invoke(entity, status, GetAuditUserIds(nextStep?.StepType ?? 0, nextStep?.StepValue ?? 0), isLast); + } + return webResponse; + } + /// + /// 获取审批人的id + /// + /// + /// + private static List GetAuditUserIds(int stepType, int nextId = 0) + { + List userIds = new List(); + if (stepType == 0 || nextId == 0) + { + return userIds; + } + if (stepType == (int)AuditType.角色审批) + { + userIds = DBServerProvider.DbContext.Set().Where(s => s.Role_Id == stepType).Take(50).Select(s => s.User_Id).ToList(); + } + //else if (nextStep.StepType == (int)AuditType.部门审批) + //{ + // //部门审批待完 + // // users = DBServerProvider.DbContext.Set().Where(s => s.Role_Id == nextStep.StepValue).Take(50).Select(s => s.User_Id).ToList(); + //} + else + { + userIds.Add(nextId); + } + return userIds; + } + } +} diff --git "a/.Net6\347\211\210\346\234\254/VOL.Entity/DomainModels/Core/LoadSingleDataModel.cs" "b/.Net6\347\211\210\346\234\254/VOL.Entity/DomainModels/Core/LoadSingleDataModel.cs" index 7d373ae48..29ba68f1f 100644 --- "a/.Net6\347\211\210\346\234\254/VOL.Entity/DomainModels/Core/LoadSingleDataModel.cs" +++ "b/.Net6\347\211\210\346\234\254/VOL.Entity/DomainModels/Core/LoadSingleDataModel.cs" @@ -21,11 +21,16 @@ public class PageDataOptions public string Wheres { get; set; } public bool Export { get; set; } public object Value { get; set; } + /// + /// 查询条件 + /// + public List Filter { get; set; } } public class SearchParameters { public string Name { get; set; } public string Value { get; set; } + //查询类型:LinqExpressionType public string DisplayType { get; set; } } diff --git "a/.Net6\347\211\210\346\234\254/VOL.Entity/DomainModels/Quartz/Sys_QuartzLog.cs" "b/.Net6\347\211\210\346\234\254/VOL.Entity/DomainModels/Quartz/Sys_QuartzLog.cs" new file mode 100644 index 000000000..b04c387da --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.Entity/DomainModels/Quartz/Sys_QuartzLog.cs" @@ -0,0 +1,145 @@ +/* + *代码由框架生成,任何更改都可能导致被代码生成器覆盖 + *如果数据库字段发生变化,请在代码生器重新生成此Model + */ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using VOL.Entity.SystemModels; + +namespace VOL.Entity.DomainModels +{ + [Entity(TableCnName = "执行记录",TableName = "Sys_QuartzLog")] + public partial class Sys_QuartzLog:BaseEntity + { + /// + /// + /// + [Key] + [Display(Name ="LogId")] + [Column(TypeName="uniqueidentifier")] + [Editable(true)] + [Required(AllowEmptyStrings=false)] + public Guid LogId { get; set; } + + /// + ///任务id + /// + [Display(Name ="任务id")] + [Column(TypeName="uniqueidentifier")] + [Editable(true)] + public Guid? Id { get; set; } + + /// + ///任务名称 + /// + [Display(Name ="任务名称")] + [MaxLength(500)] + [Column(TypeName="nvarchar(500)")] + [Editable(true)] + public string TaskName { get; set; } + + /// + ///耗时(秒) + /// + [Display(Name ="耗时(秒)")] + [Column(TypeName="int")] + [Editable(true)] + public int? ElapsedTime { get; set; } + + /// + ///开始时间 + /// + [Display(Name ="开始时间")] + [Column(TypeName="datetime")] + [Editable(true)] + public DateTime? StratDate { get; set; } + + /// + ///结束时间 + /// + [Display(Name ="结束时间")] + [Column(TypeName="datetime")] + [Editable(true)] + public DateTime? EndDate { get; set; } + + /// + ///是否成功 + /// + [Display(Name ="是否成功")] + [Column(TypeName="int")] + [Editable(true)] + public int? Result { get; set; } + + /// + ///返回内容 + /// + [Display(Name ="返回内容")] + [Column(TypeName="nvarchar(max)")] + [Editable(true)] + public string ResponseContent { get; set; } + + /// + ///异常信息 + /// + [Display(Name ="异常信息")] + [Column(TypeName="nvarchar(max)")] + public string ErrorMsg { get; set; } + + /// + /// + /// + [Display(Name ="CreateID")] + [Column(TypeName="int")] + [Editable(true)] + public int? CreateID { get; set; } + + /// + /// + /// + [Display(Name ="Creator")] + [MaxLength(30)] + [Column(TypeName="nvarchar(30)")] + [Editable(true)] + public string Creator { get; set; } + + /// + /// + /// + [Display(Name ="CreateDate")] + [Column(TypeName="datetime")] + [Editable(true)] + public DateTime? CreateDate { get; set; } + + /// + /// + /// + [Display(Name ="ModifyID")] + [Column(TypeName="int")] + [Editable(true)] + public int? ModifyID { get; set; } + + /// + /// + /// + [Display(Name ="Modifier")] + [MaxLength(30)] + [Column(TypeName="nvarchar(30)")] + [Editable(true)] + public string Modifier { get; set; } + + /// + /// + /// + [Display(Name ="ModifyDate")] + [Column(TypeName="datetime")] + [Editable(true)] + public DateTime? ModifyDate { get; set; } + + + } +} \ No newline at end of file diff --git "a/.Net6\347\211\210\346\234\254/VOL.Entity/DomainModels/Quartz/Sys_QuartzOptions.cs" "b/.Net6\347\211\210\346\234\254/VOL.Entity/DomainModels/Quartz/Sys_QuartzOptions.cs" new file mode 100644 index 000000000..e07c84dde --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.Entity/DomainModels/Quartz/Sys_QuartzOptions.cs" @@ -0,0 +1,183 @@ +/* + *代码由框架生成,任何更改都可能导致被代码生成器覆盖 + *如果数据库字段发生变化,请在代码生器重新生成此Model + */ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using VOL.Entity.SystemModels; + +namespace VOL.Entity.DomainModels +{ + [Entity(TableCnName = "定时任务",TableName = "Sys_QuartzOptions")] + public partial class Sys_QuartzOptions:BaseEntity + { + /// + /// + /// + [Key] + [Display(Name ="Id")] + [Column(TypeName="uniqueidentifier")] + [Required(AllowEmptyStrings=false)] + public Guid Id { get; set; } + + /// + ///任务名称 + /// + [Display(Name ="任务名称")] + [MaxLength(500)] + [Column(TypeName="nvarchar(500)")] + [Editable(true)] + [Required(AllowEmptyStrings=false)] + public string TaskName { get; set; } + + /// + ///任务分组 + /// + [Display(Name ="任务分组")] + [MaxLength(500)] + [Column(TypeName="nvarchar(500)")] + [Editable(true)] + [Required(AllowEmptyStrings=false)] + public string GroupName { get; set; } + + /// + ///请求方式 + /// + [Display(Name ="请求方式")] + [MaxLength(50)] + [Column(TypeName="varchar(50)")] + [Editable(true)] + public string Method { get; set; } + + /// + ///超时时间(秒) + /// + [Display(Name ="超时时间(秒)")] + [Column(TypeName="int")] + [Editable(true)] + public int? TimeOut { get; set; } + + /// + ///Corn表达式 + /// + [Display(Name ="Corn表达式")] + [MaxLength(100)] + [Column(TypeName="varchar(100)")] + [Editable(true)] + [Required(AllowEmptyStrings=false)] + public string CronExpression { get; set; } + + /// + ///Url地址 + /// + [Display(Name ="Url地址")] + [MaxLength(2000)] + [Column(TypeName="nvarchar(2000)")] + [Editable(true)] + public string ApiUrl { get; set; } + + /// + ///post参数 + /// + [Display(Name ="post参数")] + [Column(TypeName="nvarchar(max)")] + [Editable(true)] + public string PostData { get; set; } + + /// + ///AuthKey + /// + [Display(Name ="AuthKey")] + [MaxLength(200)] + [Column(TypeName="nvarchar(200)")] + [Editable(true)] + public string AuthKey { get; set; } + + /// + ///AuthValue + /// + [Display(Name ="AuthValue")] + [MaxLength(200)] + [Column(TypeName="nvarchar(200)")] + [Editable(true)] + public string AuthValue { get; set; } + + /// + ///描述 + /// + [Display(Name ="描述")] + [MaxLength(2000)] + [Column(TypeName="nvarchar(2000)")] + [Editable(true)] + public string Describe { get; set; } + + /// + ///最后执行执行 + /// + [Display(Name ="最后执行执行")] + [Column(TypeName="datetime")] + [Editable(true)] + public DateTime? LastRunTime { get; set; } + + /// + ///运行状态 + /// + [Display(Name ="运行状态")] + [Column(TypeName="int")] + [Editable(true)] + public int? Status { get; set; } + + /// + /// + /// + [Display(Name ="CreateID")] + [Column(TypeName="int")] + public int? CreateID { get; set; } + + /// + ///创建人 + /// + [Display(Name ="创建人")] + [MaxLength(30)] + [Column(TypeName="nvarchar(30)")] + [Editable(true)] + public string Creator { get; set; } + + /// + ///创建时间 + /// + [Display(Name ="创建时间")] + [Column(TypeName="datetime")] + [Editable(true)] + public DateTime? CreateDate { get; set; } + + /// + /// + /// + [Display(Name ="ModifyID")] + [Column(TypeName="int")] + public int? ModifyID { get; set; } + + /// + /// + /// + [Display(Name ="Modifier")] + [MaxLength(30)] + [Column(TypeName="nvarchar(30)")] + public string Modifier { get; set; } + + /// + ///修改时间 + /// + [Display(Name ="修改时间")] + [Column(TypeName="datetime")] + public DateTime? ModifyDate { get; set; } + + + } +} \ No newline at end of file diff --git "a/.Net6\347\211\210\346\234\254/VOL.Entity/DomainModels/Quartz/partial/Sys_QuartzLog.cs" "b/.Net6\347\211\210\346\234\254/VOL.Entity/DomainModels/Quartz/partial/Sys_QuartzLog.cs" new file mode 100644 index 000000000..b9d9863e6 --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.Entity/DomainModels/Quartz/partial/Sys_QuartzLog.cs" @@ -0,0 +1,21 @@ +/* + *代码由框架生成,任何更改都可能导致被代码生成器覆盖 + *如果数据库字段发生变化,请在代码生器重新生成此Model + */ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using VOL.Entity.SystemModels; + +namespace VOL.Entity.DomainModels +{ + + public partial class Sys_QuartzLog + { + //此处配置字段(字段配置见此model的另一个partial),如果表中没有此字段请加上 [NotMapped]属性,否则会异常 + } +} \ No newline at end of file diff --git "a/.Net6\347\211\210\346\234\254/VOL.Entity/DomainModels/Quartz/partial/Sys_QuartzOptions.cs" "b/.Net6\347\211\210\346\234\254/VOL.Entity/DomainModels/Quartz/partial/Sys_QuartzOptions.cs" new file mode 100644 index 000000000..78cc7a586 --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.Entity/DomainModels/Quartz/partial/Sys_QuartzOptions.cs" @@ -0,0 +1,21 @@ +/* + *代码由框架生成,任何更改都可能导致被代码生成器覆盖 + *如果数据库字段发生变化,请在代码生器重新生成此Model + */ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using VOL.Entity.SystemModels; + +namespace VOL.Entity.DomainModels +{ + + public partial class Sys_QuartzOptions + { + //此处配置字段(字段配置见此model的另一个partial),如果表中没有此字段请加上 [NotMapped]属性,否则会异常 + } +} \ No newline at end of file diff --git "a/.Net6\347\211\210\346\234\254/VOL.Entity/DomainModels/System/UserInfo.cs" "b/.Net6\347\211\210\346\234\254/VOL.Entity/DomainModels/System/UserInfo.cs" index ca98aa20f..74b08e539 100644 --- "a/.Net6\347\211\210\346\234\254/VOL.Entity/DomainModels/System/UserInfo.cs" +++ "b/.Net6\347\211\210\346\234\254/VOL.Entity/DomainModels/System/UserInfo.cs" @@ -17,7 +17,11 @@ public class UserInfo public string RoleName { get; set; } public string UserName { get; set; } public string UserTrueName { get; set; } - public int Enable { get; set; } + public int Enable { get; set; } + /// + /// 部门id + /// + public int DeptId { get; set; } public string Token { get; set; } } } diff --git "a/.Net6\347\211\210\346\234\254/VOL.Entity/DomainModels/flow/Sys_WorkFlow.cs" "b/.Net6\347\211\210\346\234\254/VOL.Entity/DomainModels/flow/Sys_WorkFlow.cs" new file mode 100644 index 000000000..e5befc26f --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.Entity/DomainModels/flow/Sys_WorkFlow.cs" @@ -0,0 +1,139 @@ +/* + *代码由框架生成,任何更改都可能导致被代码生成器覆盖 + *如果数据库字段发生变化,请在代码生器重新生成此Model + */ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using VOL.Entity.SystemModels; + +namespace VOL.Entity.DomainModels +{ + [Entity(TableCnName = "审批流程配置",TableName = "Sys_WorkFlow",DetailTable = new Type[] { typeof(Sys_WorkFlowStep)},DetailTableCnName = "审批步骤")] + public partial class Sys_WorkFlow:BaseEntity + { + /// + /// + /// + [Key] + [Display(Name ="WorkFlow_Id")] + [Column(TypeName="uniqueidentifier")] + [Required(AllowEmptyStrings=false)] + public Guid WorkFlow_Id { get; set; } + + /// + ///流程名称 + /// + [Display(Name ="流程名称")] + [MaxLength(200)] + [Column(TypeName="nvarchar(200)")] + [Editable(true)] + [Required(AllowEmptyStrings=false)] + public string WorkName { get; set; } + + /// + ///表名 + /// + [Display(Name ="表名")] + [MaxLength(200)] + [Column(TypeName="nvarchar(200)")] + [Editable(true)] + [Required(AllowEmptyStrings=false)] + public string WorkTable { get; set; } + + /// + ///功能菜单 + /// + [Display(Name ="功能菜单")] + [MaxLength(200)] + [Column(TypeName="nvarchar(200)")] + [Editable(true)] + public string WorkTableName { get; set; } + + /// + ///是否启用 + /// + [Display(Name ="是否启用")] + [Column(TypeName="tinyint")] + [Editable(true)] + public byte? Enable { get; set; } + + /// + ///节点信息 + /// + [Display(Name ="节点信息")] + [Column(TypeName="nvarchar(max)")] + [Editable(true)] + public string NodeConfig { get; set; } + + /// + ///连接配置 + /// + [Display(Name ="连接配置")] + [Column(TypeName="nvarchar(max)")] + [Editable(true)] + public string LineConfig { get; set; } + + /// + ///备注 + /// + [Display(Name ="备注")] + [MaxLength(500)] + [Column(TypeName="nvarchar(500)")] + [Editable(true)] + public string Remark { get; set; } + + /// + /// + /// + [Display(Name ="CreateID")] + [Column(TypeName="int")] + public int? CreateID { get; set; } + + /// + ///创建人 + /// + [Display(Name ="创建人")] + [MaxLength(30)] + [Column(TypeName="nvarchar(30)")] + public string Creator { get; set; } + + /// + ///创建时间 + /// + [Display(Name ="创建时间")] + [Column(TypeName="datetime")] + public DateTime? CreateDate { get; set; } + + /// + /// + /// + [Display(Name ="ModifyID")] + [Column(TypeName="int")] + public int? ModifyID { get; set; } + + /// + ///修改人 + /// + [Display(Name ="修改人")] + [MaxLength(30)] + [Column(TypeName="nvarchar(30)")] + public string Modifier { get; set; } + + /// + ///修改时间 + /// + [Display(Name ="修改时间")] + [Column(TypeName="datetime")] + public DateTime? ModifyDate { get; set; } + + [Display(Name ="审批步骤")] + [ForeignKey("WorkFlow_Id")] + public List Sys_WorkFlowStep { get; set; } + + } +} \ No newline at end of file diff --git "a/.Net6\347\211\210\346\234\254/VOL.Entity/DomainModels/flow/Sys_WorkFlowStep.cs" "b/.Net6\347\211\210\346\234\254/VOL.Entity/DomainModels/flow/Sys_WorkFlowStep.cs" new file mode 100644 index 000000000..4c34ca72a --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.Entity/DomainModels/flow/Sys_WorkFlowStep.cs" @@ -0,0 +1,141 @@ +/* + *代码由框架生成,任何更改都可能导致被代码生成器覆盖 + *如果数据库字段发生变化,请在代码生器重新生成此Model + */ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using VOL.Entity.SystemModels; + +namespace VOL.Entity.DomainModels +{ + [Entity(TableCnName = "审批节点配置",TableName = "Sys_WorkFlowStep")] + public partial class Sys_WorkFlowStep:BaseEntity + { + /// + /// + /// + [Key] + [Display(Name ="WorkStepFlow_Id")] + [Column(TypeName="uniqueidentifier")] + [Required(AllowEmptyStrings=false)] + public Guid WorkStepFlow_Id { get; set; } + + /// + ///流程主表id + /// + [Display(Name ="流程主表id")] + [Column(TypeName="uniqueidentifier")] + [Editable(true)] + public Guid? WorkFlow_Id { get; set; } + + /// + ///流程节点Id + /// + [Display(Name ="流程节点Id")] + [MaxLength(100)] + [Column(TypeName="nvarchar(100)")] + [Editable(true)] + public string StepId { get; set; } + + /// + ///节点名称 + /// + [Display(Name ="节点名称")] + [MaxLength(200)] + [Column(TypeName="nvarchar(200)")] + [Editable(true)] + public string StepName { get; set; } + + /// + ///节点类型(1=按用户审批,2=按角色审批) + /// + [Display(Name ="节点类型(1=按用户审批,2=按角色审批)")] + [Column(TypeName="int")] + [Editable(true)] + public int? StepType { get; set; } + + /// + ///审批用户id或角色id + /// + [Display(Name ="审批用户id或角色id")] + [Column(TypeName="int")] + [Editable(true)] + public int? StepValue { get; set; } + + /// + ///备注 + /// + [Display(Name ="备注")] + [MaxLength(500)] + [Column(TypeName="nvarchar(500)")] + [Editable(true)] + public string Remark { get; set; } + + /// + ///审批顺序 + /// + [Display(Name ="审批顺序")] + [Column(TypeName="int")] + [Editable(true)] + public int? OrderId { get; set; } + + /// + ///创建时间 + /// + [Display(Name ="创建时间")] + [Column(TypeName="datetime")] + [Editable(true)] + public DateTime? CreateDate { get; set; } + + /// + /// + /// + [Display(Name ="CreateID")] + [Column(TypeName="int")] + public int? CreateID { get; set; } + + /// + ///创建人 + /// + [Display(Name ="创建人")] + [MaxLength(30)] + [Column(TypeName="nvarchar(30)")] + public string Creator { get; set; } + + /// + /// + /// + [Display(Name ="Enable")] + [Column(TypeName="tinyint")] + public byte? Enable { get; set; } + + /// + ///修改人 + /// + [Display(Name ="修改人")] + [MaxLength(30)] + [Column(TypeName="nvarchar(30)")] + public string Modifier { get; set; } + + /// + ///修改时间 + /// + [Display(Name ="修改时间")] + [Column(TypeName="datetime")] + public DateTime? ModifyDate { get; set; } + + /// + /// + /// + [Display(Name ="ModifyID")] + [Column(TypeName="int")] + public int? ModifyID { get; set; } + + + } +} \ No newline at end of file diff --git "a/.Net6\347\211\210\346\234\254/VOL.Entity/DomainModels/flow/Sys_WorkFlowTable.cs" "b/.Net6\347\211\210\346\234\254/VOL.Entity/DomainModels/flow/Sys_WorkFlowTable.cs" new file mode 100644 index 000000000..76c3f120c --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.Entity/DomainModels/flow/Sys_WorkFlowTable.cs" @@ -0,0 +1,137 @@ +/* + *代码由框架生成,任何更改都可能导致被代码生成器覆盖 + *如果数据库字段发生变化,请在代码生器重新生成此Model + */ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using VOL.Entity.SystemModels; + +namespace VOL.Entity.DomainModels +{ + [Entity(TableCnName = "审批流程",TableName = "Sys_WorkFlowTable",DetailTable = new Type[] { typeof(Sys_WorkFlowTableStep)},DetailTableCnName = "审批节点")] + public partial class Sys_WorkFlowTable:BaseEntity + { + /// + /// + /// + [Key] + [Display(Name ="WorkFlowTable_Id")] + [Column(TypeName="uniqueidentifier")] + [Required(AllowEmptyStrings=false)] + public Guid WorkFlowTable_Id { get; set; } + + /// + ///流程id + /// + [Display(Name ="流程id")] + [Column(TypeName="uniqueidentifier")] + public Guid? WorkFlow_Id { get; set; } + + /// + ///流程名称 + /// + [Display(Name ="流程名称")] + [MaxLength(200)] + [Column(TypeName="nvarchar(200)")] + public string WorkName { get; set; } + + /// + ///表主键id + /// + [Display(Name ="表主键id")] + [MaxLength(200)] + [Column(TypeName="nvarchar(200)")] + public string WorkTableKey { get; set; } + + /// + ///表名 + /// + [Display(Name ="表名")] + [MaxLength(200)] + [Column(TypeName="nvarchar(200)")] + public string WorkTable { get; set; } + + /// + ///业务名称 + /// + [Display(Name ="业务名称")] + [MaxLength(200)] + [Column(TypeName="nvarchar(200)")] + public string WorkTableName { get; set; } + + /// + ///当前审批节点 + /// + [Display(Name ="当前审批节点")] + [Column(TypeName="int")] + public int? CurrentOrderId { get; set; } + + /// + ///审批状态 + /// + [Display(Name ="审批状态")] + [Column(TypeName="int")] + public int? AuditStatus { get; set; } + + /// + ///创建人 + /// + [Display(Name ="创建人")] + [MaxLength(30)] + [Column(TypeName="nvarchar(30)")] + public string Creator { get; set; } + + /// + ///创建时间 + /// + [Display(Name ="创建时间")] + [Column(TypeName="datetime")] + public DateTime? CreateDate { get; set; } + + /// + /// + /// + [Display(Name ="CreateID")] + [Column(TypeName="int")] + public int? CreateID { get; set; } + + /// + /// + /// + [Display(Name ="Enable")] + [Column(TypeName="tinyint")] + public byte? Enable { get; set; } + + /// + /// + /// + [Display(Name ="Modifier")] + [MaxLength(30)] + [Column(TypeName="nvarchar(30)")] + public string Modifier { get; set; } + + /// + /// + /// + [Display(Name ="ModifyDate")] + [Column(TypeName="datetime")] + public DateTime? ModifyDate { get; set; } + + /// + /// + /// + [Display(Name ="ModifyID")] + [Column(TypeName="int")] + public int? ModifyID { get; set; } + + [Display(Name ="审批节点")] + [ForeignKey("WorkFlowTable_Id")] + public List Sys_WorkFlowTableStep { get; set; } + + } +} \ No newline at end of file diff --git "a/.Net6\347\211\210\346\234\254/VOL.Entity/DomainModels/flow/Sys_WorkFlowTableStep.cs" "b/.Net6\347\211\210\346\234\254/VOL.Entity/DomainModels/flow/Sys_WorkFlowTableStep.cs" new file mode 100644 index 000000000..33d17d11c --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.Entity/DomainModels/flow/Sys_WorkFlowTableStep.cs" @@ -0,0 +1,170 @@ +/* + *代码由框架生成,任何更改都可能导致被代码生成器覆盖 + *如果数据库字段发生变化,请在代码生器重新生成此Model + */ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using VOL.Entity.SystemModels; + +namespace VOL.Entity.DomainModels +{ + [Entity(TableCnName = "审批节点",TableName = "Sys_WorkFlowTableStep")] + public partial class Sys_WorkFlowTableStep:BaseEntity + { + /// + /// + /// + [Key] + [Display(Name ="Sys_WorkFlowTableStep_Id")] + [Column(TypeName="uniqueidentifier")] + [Required(AllowEmptyStrings=false)] + public Guid Sys_WorkFlowTableStep_Id { get; set; } + + /// + ///主表id + /// + [Display(Name ="主表id")] + [Column(TypeName="uniqueidentifier")] + [Required(AllowEmptyStrings=false)] + public Guid WorkFlowTable_Id { get; set; } + + /// + ///流程id + /// + [Display(Name ="流程id")] + [Column(TypeName="uniqueidentifier")] + public Guid? WorkFlow_Id { get; set; } + + /// + ///节点id + /// + [Display(Name ="节点id")] + [MaxLength(100)] + [Column(TypeName="nvarchar(100)")] + public string StepId { get; set; } + + /// + ///节名称 + /// + [Display(Name ="节名称")] + [MaxLength(200)] + [Column(TypeName="nvarchar(200)")] + public string StepName { get; set; } + + /// + ///审批类型 + /// + [Display(Name ="审批类型")] + [Column(TypeName="int")] + public int? StepType { get; set; } + + /// + ///节点类型(1=按用户审批,2=按角色审批) + /// + [Display(Name ="节点类型(1=按用户审批,2=按角色审批)")] + [Column(TypeName="int")] + public int? StepValue { get; set; } + + /// + ///审批顺序 + /// + [Display(Name ="审批顺序")] + [Column(TypeName="int")] + public int? OrderId { get; set; } + + /// + /// + /// + [Display(Name ="Remark")] + [MaxLength(500)] + [Column(TypeName="nvarchar(500)")] + public string Remark { get; set; } + + /// + /// + /// + [Display(Name ="CreateDate")] + [Column(TypeName="datetime")] + public DateTime? CreateDate { get; set; } + + /// + /// + /// + [Display(Name ="CreateID")] + [Column(TypeName="int")] + public int? CreateID { get; set; } + + /// + /// + /// + [Display(Name ="Creator")] + [MaxLength(30)] + [Column(TypeName="nvarchar(30)")] + public string Creator { get; set; } + + /// + /// + /// + [Display(Name ="Enable")] + [Column(TypeName="tinyint")] + public byte? Enable { get; set; } + + /// + /// + /// + [Display(Name ="Modifier")] + [MaxLength(30)] + [Column(TypeName="nvarchar(30)")] + public string Modifier { get; set; } + + /// + /// + /// + [Display(Name ="ModifyDate")] + [Column(TypeName="datetime")] + public DateTime? ModifyDate { get; set; } + + /// + /// + /// + [Display(Name ="ModifyID")] + [Column(TypeName="int")] + public int? ModifyID { get; set; } + + /// + ///审核人id + /// + [Display(Name ="审核人id")] + [Column(TypeName="int")] + public int? AuditId { get; set; } + + /// + ///审核人 + /// + [Display(Name ="审核人")] + [MaxLength(50)] + [Column(TypeName="nvarchar(50)")] + public string Auditor { get; set; } + + /// + ///审核状态 + /// + [Display(Name ="审核状态")] + [Column(TypeName="int")] + public int? AuditStatus { get; set; } + + /// + ///审核时间 + /// + [Display(Name ="审核时间")] + [Column(TypeName="datetime")] + public DateTime? AuditDate { get; set; } + + + } +} \ No newline at end of file diff --git "a/.Net6\347\211\210\346\234\254/VOL.Entity/DomainModels/flow/partial/Sys_WorkFlow.cs" "b/.Net6\347\211\210\346\234\254/VOL.Entity/DomainModels/flow/partial/Sys_WorkFlow.cs" new file mode 100644 index 000000000..2291d3681 --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.Entity/DomainModels/flow/partial/Sys_WorkFlow.cs" @@ -0,0 +1,21 @@ +/* + *代码由框架生成,任何更改都可能导致被代码生成器覆盖 + *如果数据库字段发生变化,请在代码生器重新生成此Model + */ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using VOL.Entity.SystemModels; + +namespace VOL.Entity.DomainModels +{ + + public partial class Sys_WorkFlow + { + //此处配置字段(字段配置见此model的另一个partial),如果表中没有此字段请加上 [NotMapped]属性,否则会异常 + } +} \ No newline at end of file diff --git "a/.Net6\347\211\210\346\234\254/VOL.Entity/DomainModels/flow/partial/Sys_WorkFlowStep.cs" "b/.Net6\347\211\210\346\234\254/VOL.Entity/DomainModels/flow/partial/Sys_WorkFlowStep.cs" new file mode 100644 index 000000000..e4dfadece --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.Entity/DomainModels/flow/partial/Sys_WorkFlowStep.cs" @@ -0,0 +1,21 @@ +/* + *代码由框架生成,任何更改都可能导致被代码生成器覆盖 + *如果数据库字段发生变化,请在代码生器重新生成此Model + */ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using VOL.Entity.SystemModels; + +namespace VOL.Entity.DomainModels +{ + + public partial class Sys_WorkFlowStep + { + //此处配置字段(字段配置见此model的另一个partial),如果表中没有此字段请加上 [NotMapped]属性,否则会异常 + } +} \ No newline at end of file diff --git "a/.Net6\347\211\210\346\234\254/VOL.Entity/DomainModels/flow/partial/Sys_WorkFlowTable.cs" "b/.Net6\347\211\210\346\234\254/VOL.Entity/DomainModels/flow/partial/Sys_WorkFlowTable.cs" new file mode 100644 index 000000000..8b642f8f1 --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.Entity/DomainModels/flow/partial/Sys_WorkFlowTable.cs" @@ -0,0 +1,21 @@ +/* + *代码由框架生成,任何更改都可能导致被代码生成器覆盖 + *如果数据库字段发生变化,请在代码生器重新生成此Model + */ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using VOL.Entity.SystemModels; + +namespace VOL.Entity.DomainModels +{ + + public partial class Sys_WorkFlowTable + { + //此处配置字段(字段配置见此model的另一个partial),如果表中没有此字段请加上 [NotMapped]属性,否则会异常 + } +} \ No newline at end of file diff --git "a/.Net6\347\211\210\346\234\254/VOL.Entity/DomainModels/flow/partial/Sys_WorkFlowTableStep.cs" "b/.Net6\347\211\210\346\234\254/VOL.Entity/DomainModels/flow/partial/Sys_WorkFlowTableStep.cs" new file mode 100644 index 000000000..6426637c0 --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.Entity/DomainModels/flow/partial/Sys_WorkFlowTableStep.cs" @@ -0,0 +1,21 @@ +/* + *代码由框架生成,任何更改都可能导致被代码生成器覆盖 + *如果数据库字段发生变化,请在代码生器重新生成此Model + */ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using VOL.Entity.SystemModels; + +namespace VOL.Entity.DomainModels +{ + + public partial class Sys_WorkFlowTableStep + { + //此处配置字段(字段配置见此model的另一个partial),如果表中没有此字段请加上 [NotMapped]属性,否则会异常 + } +} \ No newline at end of file diff --git "a/.Net6\347\211\210\346\234\254/VOL.Entity/MappingConfiguration/Quartz/Sys_QuartzLogMapConfig.cs" "b/.Net6\347\211\210\346\234\254/VOL.Entity/MappingConfiguration/Quartz/Sys_QuartzLogMapConfig.cs" new file mode 100644 index 000000000..cb51f962c --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.Entity/MappingConfiguration/Quartz/Sys_QuartzLogMapConfig.cs" @@ -0,0 +1,16 @@ +using VOL.Entity.MappingConfiguration; +using VOL.Entity.DomainModels; +using Microsoft.EntityFrameworkCore.Metadata.Builders; + +namespace VOL.Entity.MappingConfiguration +{ + public class Sys_QuartzLogMapConfig : EntityMappingConfiguration + { + public override void Map(EntityTypeBuilder + builderTable) + { + //b.Property(x => x.StorageName).HasMaxLength(45); + } + } +} + diff --git "a/.Net6\347\211\210\346\234\254/VOL.Entity/MappingConfiguration/Quartz/Sys_QuartzOptionsMapConfig.cs" "b/.Net6\347\211\210\346\234\254/VOL.Entity/MappingConfiguration/Quartz/Sys_QuartzOptionsMapConfig.cs" new file mode 100644 index 000000000..b4d80504a --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.Entity/MappingConfiguration/Quartz/Sys_QuartzOptionsMapConfig.cs" @@ -0,0 +1,16 @@ +using VOL.Entity.MappingConfiguration; +using VOL.Entity.DomainModels; +using Microsoft.EntityFrameworkCore.Metadata.Builders; + +namespace VOL.Entity.MappingConfiguration +{ + public class Sys_QuartzOptionsMapConfig : EntityMappingConfiguration + { + public override void Map(EntityTypeBuilder + builderTable) + { + //b.Property(x => x.StorageName).HasMaxLength(45); + } + } +} + diff --git "a/.Net6\347\211\210\346\234\254/VOL.Entity/MappingConfiguration/flow/Sys_WorkFlowMapConfig.cs" "b/.Net6\347\211\210\346\234\254/VOL.Entity/MappingConfiguration/flow/Sys_WorkFlowMapConfig.cs" new file mode 100644 index 000000000..4c9c9f33a --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.Entity/MappingConfiguration/flow/Sys_WorkFlowMapConfig.cs" @@ -0,0 +1,16 @@ +using VOL.Entity.MappingConfiguration; +using VOL.Entity.DomainModels; +using Microsoft.EntityFrameworkCore.Metadata.Builders; + +namespace VOL.Entity.MappingConfiguration +{ + public class Sys_WorkFlowMapConfig : EntityMappingConfiguration + { + public override void Map(EntityTypeBuilder + builderTable) + { + //b.Property(x => x.StorageName).HasMaxLength(45); + } + } +} + diff --git "a/.Net6\347\211\210\346\234\254/VOL.Entity/MappingConfiguration/flow/Sys_WorkFlowStepMapConfig.cs" "b/.Net6\347\211\210\346\234\254/VOL.Entity/MappingConfiguration/flow/Sys_WorkFlowStepMapConfig.cs" new file mode 100644 index 000000000..0c30cdb49 --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.Entity/MappingConfiguration/flow/Sys_WorkFlowStepMapConfig.cs" @@ -0,0 +1,16 @@ +using VOL.Entity.MappingConfiguration; +using VOL.Entity.DomainModels; +using Microsoft.EntityFrameworkCore.Metadata.Builders; + +namespace VOL.Entity.MappingConfiguration +{ + public class Sys_WorkFlowStepMapConfig : EntityMappingConfiguration + { + public override void Map(EntityTypeBuilder + builderTable) + { + //b.Property(x => x.StorageName).HasMaxLength(45); + } + } +} + diff --git "a/.Net6\347\211\210\346\234\254/VOL.Entity/MappingConfiguration/flow/Sys_WorkFlowTableMapConfig.cs" "b/.Net6\347\211\210\346\234\254/VOL.Entity/MappingConfiguration/flow/Sys_WorkFlowTableMapConfig.cs" new file mode 100644 index 000000000..20e13bad0 --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.Entity/MappingConfiguration/flow/Sys_WorkFlowTableMapConfig.cs" @@ -0,0 +1,16 @@ +using VOL.Entity.MappingConfiguration; +using VOL.Entity.DomainModels; +using Microsoft.EntityFrameworkCore.Metadata.Builders; + +namespace VOL.Entity.MappingConfiguration +{ + public class Sys_WorkFlowTableMapConfig : EntityMappingConfiguration + { + public override void Map(EntityTypeBuilder + builderTable) + { + //b.Property(x => x.StorageName).HasMaxLength(45); + } + } +} + diff --git "a/.Net6\347\211\210\346\234\254/VOL.Entity/MappingConfiguration/flow/Sys_WorkFlowTableStepMapConfig.cs" "b/.Net6\347\211\210\346\234\254/VOL.Entity/MappingConfiguration/flow/Sys_WorkFlowTableStepMapConfig.cs" new file mode 100644 index 000000000..e1c1efa7d --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.Entity/MappingConfiguration/flow/Sys_WorkFlowTableStepMapConfig.cs" @@ -0,0 +1,16 @@ +using VOL.Entity.MappingConfiguration; +using VOL.Entity.DomainModels; +using Microsoft.EntityFrameworkCore.Metadata.Builders; + +namespace VOL.Entity.MappingConfiguration +{ + public class Sys_WorkFlowTableStepMapConfig : EntityMappingConfiguration + { + public override void Map(EntityTypeBuilder + builderTable) + { + //b.Property(x => x.StorageName).HasMaxLength(45); + } + } +} + diff --git "a/.Net6\347\211\210\346\234\254/VOL.Entity/VOL.Entity.csproj" "b/.Net6\347\211\210\346\234\254/VOL.Entity/VOL.Entity.csproj" index 89ba8aa7c..4d0fc6103 100644 --- "a/.Net6\347\211\210\346\234\254/VOL.Entity/VOL.Entity.csproj" +++ "b/.Net6\347\211\210\346\234\254/VOL.Entity/VOL.Entity.csproj" @@ -21,10 +21,10 @@ - - + + - + diff --git "a/.Net6\347\211\210\346\234\254/VOL.System/IRepositories/Quartz/ISys_QuartzLogRepository.cs" "b/.Net6\347\211\210\346\234\254/VOL.System/IRepositories/Quartz/ISys_QuartzLogRepository.cs" new file mode 100644 index 000000000..632ac209e --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.System/IRepositories/Quartz/ISys_QuartzLogRepository.cs" @@ -0,0 +1,18 @@ +/* + *代码由框架生成,任何更改都可能导致被代码生成器覆盖 + *Repository提供数据库操作,如果要增加数据库操作请在当前目录下Partial文件夹ISys_QuartzLogRepository编写接口 + */ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using VOL.Core.BaseProvider; +using VOL.Entity.DomainModels; +using VOL.Core.Extensions.AutofacManager; +namespace VOL.System.IRepositories +{ + public partial interface ISys_QuartzLogRepository : IDependency,IRepository + { + } +} diff --git "a/.Net6\347\211\210\346\234\254/VOL.System/IRepositories/Quartz/ISys_QuartzOptionsRepository.cs" "b/.Net6\347\211\210\346\234\254/VOL.System/IRepositories/Quartz/ISys_QuartzOptionsRepository.cs" new file mode 100644 index 000000000..574b9c1fb --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.System/IRepositories/Quartz/ISys_QuartzOptionsRepository.cs" @@ -0,0 +1,18 @@ +/* + *代码由框架生成,任何更改都可能导致被代码生成器覆盖 + *Repository提供数据库操作,如果要增加数据库操作请在当前目录下Partial文件夹ISys_QuartzOptionsRepository编写接口 + */ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using VOL.Core.BaseProvider; +using VOL.Entity.DomainModels; +using VOL.Core.Extensions.AutofacManager; +namespace VOL.System.IRepositories +{ + public partial interface ISys_QuartzOptionsRepository : IDependency,IRepository + { + } +} diff --git "a/.Net6\347\211\210\346\234\254/VOL.System/IRepositories/flow/ISys_WorkFlowRepository.cs" "b/.Net6\347\211\210\346\234\254/VOL.System/IRepositories/flow/ISys_WorkFlowRepository.cs" new file mode 100644 index 000000000..b9f1d668c --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.System/IRepositories/flow/ISys_WorkFlowRepository.cs" @@ -0,0 +1,18 @@ +/* + *代码由框架生成,任何更改都可能导致被代码生成器覆盖 + *Repository提供数据库操作,如果要增加数据库操作请在当前目录下Partial文件夹ISys_WorkFlowRepository编写接口 + */ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using VOL.Core.BaseProvider; +using VOL.Entity.DomainModels; +using VOL.Core.Extensions.AutofacManager; +namespace VOL.System.IRepositories +{ + public partial interface ISys_WorkFlowRepository : IDependency,IRepository + { + } +} diff --git "a/.Net6\347\211\210\346\234\254/VOL.System/IRepositories/flow/ISys_WorkFlowStepRepository.cs" "b/.Net6\347\211\210\346\234\254/VOL.System/IRepositories/flow/ISys_WorkFlowStepRepository.cs" new file mode 100644 index 000000000..0e55b7933 --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.System/IRepositories/flow/ISys_WorkFlowStepRepository.cs" @@ -0,0 +1,18 @@ +/* + *代码由框架生成,任何更改都可能导致被代码生成器覆盖 + *Repository提供数据库操作,如果要增加数据库操作请在当前目录下Partial文件夹ISys_WorkFlowStepRepository编写接口 + */ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using VOL.Core.BaseProvider; +using VOL.Entity.DomainModels; +using VOL.Core.Extensions.AutofacManager; +namespace VOL.System.IRepositories +{ + public partial interface ISys_WorkFlowStepRepository : IDependency,IRepository + { + } +} diff --git "a/.Net6\347\211\210\346\234\254/VOL.System/IRepositories/flow/ISys_WorkFlowTableRepository.cs" "b/.Net6\347\211\210\346\234\254/VOL.System/IRepositories/flow/ISys_WorkFlowTableRepository.cs" new file mode 100644 index 000000000..91f57cd31 --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.System/IRepositories/flow/ISys_WorkFlowTableRepository.cs" @@ -0,0 +1,18 @@ +/* + *代码由框架生成,任何更改都可能导致被代码生成器覆盖 + *Repository提供数据库操作,如果要增加数据库操作请在当前目录下Partial文件夹ISys_WorkFlowTableRepository编写接口 + */ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using VOL.Core.BaseProvider; +using VOL.Entity.DomainModels; +using VOL.Core.Extensions.AutofacManager; +namespace VOL.System.IRepositories +{ + public partial interface ISys_WorkFlowTableRepository : IDependency,IRepository + { + } +} diff --git "a/.Net6\347\211\210\346\234\254/VOL.System/IRepositories/flow/ISys_WorkFlowTableStepRepository.cs" "b/.Net6\347\211\210\346\234\254/VOL.System/IRepositories/flow/ISys_WorkFlowTableStepRepository.cs" new file mode 100644 index 000000000..ef7bd6f8e --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.System/IRepositories/flow/ISys_WorkFlowTableStepRepository.cs" @@ -0,0 +1,18 @@ +/* + *代码由框架生成,任何更改都可能导致被代码生成器覆盖 + *Repository提供数据库操作,如果要增加数据库操作请在当前目录下Partial文件夹ISys_WorkFlowTableStepRepository编写接口 + */ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using VOL.Core.BaseProvider; +using VOL.Entity.DomainModels; +using VOL.Core.Extensions.AutofacManager; +namespace VOL.System.IRepositories +{ + public partial interface ISys_WorkFlowTableStepRepository : IDependency,IRepository + { + } +} diff --git "a/.Net6\347\211\210\346\234\254/VOL.System/IServices/Quartz/ISys_QuartzLogService.cs" "b/.Net6\347\211\210\346\234\254/VOL.System/IServices/Quartz/ISys_QuartzLogService.cs" new file mode 100644 index 000000000..01534bb81 --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.System/IServices/Quartz/ISys_QuartzLogService.cs" @@ -0,0 +1,12 @@ +/* + *代码由框架生成,任何更改都可能导致被代码生成器覆盖 + */ +using VOL.Core.BaseProvider; +using VOL.Entity.DomainModels; + +namespace VOL.System.IServices +{ + public partial interface ISys_QuartzLogService : IService + { + } +} diff --git "a/.Net6\347\211\210\346\234\254/VOL.System/IServices/Quartz/ISys_QuartzOptionsService.cs" "b/.Net6\347\211\210\346\234\254/VOL.System/IServices/Quartz/ISys_QuartzOptionsService.cs" new file mode 100644 index 000000000..a9cb0a914 --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.System/IServices/Quartz/ISys_QuartzOptionsService.cs" @@ -0,0 +1,12 @@ +/* + *代码由框架生成,任何更改都可能导致被代码生成器覆盖 + */ +using VOL.Core.BaseProvider; +using VOL.Entity.DomainModels; + +namespace VOL.System.IServices +{ + public partial interface ISys_QuartzOptionsService : IService + { + } +} diff --git "a/.Net6\347\211\210\346\234\254/VOL.System/IServices/Quartz/Partial/ISys_QuartzLogService.cs" "b/.Net6\347\211\210\346\234\254/VOL.System/IServices/Quartz/Partial/ISys_QuartzLogService.cs" new file mode 100644 index 000000000..96c059e64 --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.System/IServices/Quartz/Partial/ISys_QuartzLogService.cs" @@ -0,0 +1,13 @@ +/* +*所有关于Sys_QuartzLog类的业务代码接口应在此处编写 +*/ +using VOL.Core.BaseProvider; +using VOL.Entity.DomainModels; +using VOL.Core.Utilities; +using System.Linq.Expressions; +namespace VOL.System.IServices +{ + public partial interface ISys_QuartzLogService + { + } + } diff --git "a/.Net6\347\211\210\346\234\254/VOL.System/IServices/Quartz/Partial/ISys_QuartzOptionsService.cs" "b/.Net6\347\211\210\346\234\254/VOL.System/IServices/Quartz/Partial/ISys_QuartzOptionsService.cs" new file mode 100644 index 000000000..65f66bf25 --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.System/IServices/Quartz/Partial/ISys_QuartzOptionsService.cs" @@ -0,0 +1,37 @@ +/* +*所有关于Sys_QuartzOptions类的业务代码接口应在此处编写 +*/ +using VOL.Core.BaseProvider; +using VOL.Entity.DomainModels; +using VOL.Core.Utilities; +using System.Linq.Expressions; +using System.Threading.Tasks; + +namespace VOL.System.IServices +{ + public partial interface ISys_QuartzOptionsService + { + + /// + /// 手动执行一次 + /// + /// + /// + Task Run(Sys_QuartzOptions taskOptions); + /// + /// 开启任务 + /// + /// + /// + /// + Task Start(Sys_QuartzOptions taskOptions); + /// + /// 暂停任务 + /// + /// + /// + /// + Task Pause(Sys_QuartzOptions taskOptions); + + } +} diff --git "a/.Net6\347\211\210\346\234\254/VOL.System/IServices/System/Partial/ISys_MenuService.cs" "b/.Net6\347\211\210\346\234\254/VOL.System/IServices/System/Partial/ISys_MenuService.cs" index bcee846a5..db1ff588f 100644 --- "a/.Net6\347\211\210\346\234\254/VOL.System/IServices/System/Partial/ISys_MenuService.cs" +++ "b/.Net6\347\211\210\346\234\254/VOL.System/IServices/System/Partial/ISys_MenuService.cs" @@ -17,6 +17,9 @@ public partial interface ISys_MenuService Task GetMenuActionList(int roleId); Task Save(Sys_Menu menu); + Task DelMenu(int menuId); + + Task GetTreeItem(int menuId); } } diff --git "a/.Net6\347\211\210\346\234\254/VOL.System/IServices/flow/ISys_WorkFlowService.cs" "b/.Net6\347\211\210\346\234\254/VOL.System/IServices/flow/ISys_WorkFlowService.cs" new file mode 100644 index 000000000..490b99888 --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.System/IServices/flow/ISys_WorkFlowService.cs" @@ -0,0 +1,12 @@ +/* + *代码由框架生成,任何更改都可能导致被代码生成器覆盖 + */ +using VOL.Core.BaseProvider; +using VOL.Entity.DomainModels; + +namespace VOL.System.IServices +{ + public partial interface ISys_WorkFlowService : IService + { + } +} diff --git "a/.Net6\347\211\210\346\234\254/VOL.System/IServices/flow/ISys_WorkFlowStepService.cs" "b/.Net6\347\211\210\346\234\254/VOL.System/IServices/flow/ISys_WorkFlowStepService.cs" new file mode 100644 index 000000000..e9c733c94 --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.System/IServices/flow/ISys_WorkFlowStepService.cs" @@ -0,0 +1,12 @@ +/* + *代码由框架生成,任何更改都可能导致被代码生成器覆盖 + */ +using VOL.Core.BaseProvider; +using VOL.Entity.DomainModels; + +namespace VOL.System.IServices +{ + public partial interface ISys_WorkFlowStepService : IService + { + } +} diff --git "a/.Net6\347\211\210\346\234\254/VOL.System/IServices/flow/ISys_WorkFlowTableService.cs" "b/.Net6\347\211\210\346\234\254/VOL.System/IServices/flow/ISys_WorkFlowTableService.cs" new file mode 100644 index 000000000..8cea25f94 --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.System/IServices/flow/ISys_WorkFlowTableService.cs" @@ -0,0 +1,12 @@ +/* + *代码由框架生成,任何更改都可能导致被代码生成器覆盖 + */ +using VOL.Core.BaseProvider; +using VOL.Entity.DomainModels; + +namespace VOL.System.IServices +{ + public partial interface ISys_WorkFlowTableService : IService + { + } +} diff --git "a/.Net6\347\211\210\346\234\254/VOL.System/IServices/flow/ISys_WorkFlowTableStepService.cs" "b/.Net6\347\211\210\346\234\254/VOL.System/IServices/flow/ISys_WorkFlowTableStepService.cs" new file mode 100644 index 000000000..12b4737aa --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.System/IServices/flow/ISys_WorkFlowTableStepService.cs" @@ -0,0 +1,12 @@ +/* + *代码由框架生成,任何更改都可能导致被代码生成器覆盖 + */ +using VOL.Core.BaseProvider; +using VOL.Entity.DomainModels; + +namespace VOL.System.IServices +{ + public partial interface ISys_WorkFlowTableStepService : IService + { + } +} diff --git "a/.Net6\347\211\210\346\234\254/VOL.System/IServices/flow/Partial/ISys_WorkFlowService.cs" "b/.Net6\347\211\210\346\234\254/VOL.System/IServices/flow/Partial/ISys_WorkFlowService.cs" new file mode 100644 index 000000000..f65645072 --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.System/IServices/flow/Partial/ISys_WorkFlowService.cs" @@ -0,0 +1,13 @@ +/* +*所有关于Sys_WorkFlow类的业务代码接口应在此处编写 +*/ +using VOL.Core.BaseProvider; +using VOL.Entity.DomainModels; +using VOL.Core.Utilities; +using System.Linq.Expressions; +namespace VOL.System.IServices +{ + public partial interface ISys_WorkFlowService + { + } + } diff --git "a/.Net6\347\211\210\346\234\254/VOL.System/IServices/flow/Partial/ISys_WorkFlowStepService.cs" "b/.Net6\347\211\210\346\234\254/VOL.System/IServices/flow/Partial/ISys_WorkFlowStepService.cs" new file mode 100644 index 000000000..9ec17a3bc --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.System/IServices/flow/Partial/ISys_WorkFlowStepService.cs" @@ -0,0 +1,13 @@ +/* +*所有关于Sys_WorkFlowStep类的业务代码接口应在此处编写 +*/ +using VOL.Core.BaseProvider; +using VOL.Entity.DomainModels; +using VOL.Core.Utilities; +using System.Linq.Expressions; +namespace VOL.System.IServices +{ + public partial interface ISys_WorkFlowStepService + { + } + } diff --git "a/.Net6\347\211\210\346\234\254/VOL.System/IServices/flow/Partial/ISys_WorkFlowTableService.cs" "b/.Net6\347\211\210\346\234\254/VOL.System/IServices/flow/Partial/ISys_WorkFlowTableService.cs" new file mode 100644 index 000000000..c85bba7c7 --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.System/IServices/flow/Partial/ISys_WorkFlowTableService.cs" @@ -0,0 +1,13 @@ +/* +*所有关于Sys_WorkFlowTable类的业务代码接口应在此处编写 +*/ +using VOL.Core.BaseProvider; +using VOL.Entity.DomainModels; +using VOL.Core.Utilities; +using System.Linq.Expressions; +namespace VOL.System.IServices +{ + public partial interface ISys_WorkFlowTableService + { + } + } diff --git "a/.Net6\347\211\210\346\234\254/VOL.System/IServices/flow/Partial/ISys_WorkFlowTableStepService.cs" "b/.Net6\347\211\210\346\234\254/VOL.System/IServices/flow/Partial/ISys_WorkFlowTableStepService.cs" new file mode 100644 index 000000000..001330188 --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.System/IServices/flow/Partial/ISys_WorkFlowTableStepService.cs" @@ -0,0 +1,13 @@ +/* +*所有关于Sys_WorkFlowTableStep类的业务代码接口应在此处编写 +*/ +using VOL.Core.BaseProvider; +using VOL.Entity.DomainModels; +using VOL.Core.Utilities; +using System.Linq.Expressions; +namespace VOL.System.IServices +{ + public partial interface ISys_WorkFlowTableStepService + { + } + } diff --git "a/.Net6\347\211\210\346\234\254/VOL.System/Repositories/Quartz/Sys_QuartzLogRepository.cs" "b/.Net6\347\211\210\346\234\254/VOL.System/Repositories/Quartz/Sys_QuartzLogRepository.cs" new file mode 100644 index 000000000..34205a8ba --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.System/Repositories/Quartz/Sys_QuartzLogRepository.cs" @@ -0,0 +1,24 @@ +/* + *代码由框架生成,任何更改都可能导致被代码生成器覆盖 + *Repository提供数据库操作,如果要增加数据库操作请在当前目录下Partial文件夹Sys_QuartzLogRepository编写代码 + */ +using VOL.System.IRepositories; +using VOL.Core.BaseProvider; +using VOL.Core.EFDbContext; +using VOL.Core.Extensions.AutofacManager; +using VOL.Entity.DomainModels; + +namespace VOL.System.Repositories +{ + public partial class Sys_QuartzLogRepository : RepositoryBase , ISys_QuartzLogRepository + { + public Sys_QuartzLogRepository(VOLContext dbContext) + : base(dbContext) + { + + } + public static ISys_QuartzLogRepository Instance + { + get { return AutofacContainerModule.GetService(); } } + } +} diff --git "a/.Net6\347\211\210\346\234\254/VOL.System/Repositories/Quartz/Sys_QuartzOptionsRepository.cs" "b/.Net6\347\211\210\346\234\254/VOL.System/Repositories/Quartz/Sys_QuartzOptionsRepository.cs" new file mode 100644 index 000000000..3e5d6f7e5 --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.System/Repositories/Quartz/Sys_QuartzOptionsRepository.cs" @@ -0,0 +1,24 @@ +/* + *代码由框架生成,任何更改都可能导致被代码生成器覆盖 + *Repository提供数据库操作,如果要增加数据库操作请在当前目录下Partial文件夹Sys_QuartzOptionsRepository编写代码 + */ +using VOL.System.IRepositories; +using VOL.Core.BaseProvider; +using VOL.Core.EFDbContext; +using VOL.Core.Extensions.AutofacManager; +using VOL.Entity.DomainModels; + +namespace VOL.System.Repositories +{ + public partial class Sys_QuartzOptionsRepository : RepositoryBase , ISys_QuartzOptionsRepository + { + public Sys_QuartzOptionsRepository(VOLContext dbContext) + : base(dbContext) + { + + } + public static ISys_QuartzOptionsRepository Instance + { + get { return AutofacContainerModule.GetService(); } } + } +} diff --git "a/.Net6\347\211\210\346\234\254/VOL.System/Repositories/flow/Sys_WorkFlowRepository.cs" "b/.Net6\347\211\210\346\234\254/VOL.System/Repositories/flow/Sys_WorkFlowRepository.cs" new file mode 100644 index 000000000..dff1ddd32 --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.System/Repositories/flow/Sys_WorkFlowRepository.cs" @@ -0,0 +1,24 @@ +/* + *代码由框架生成,任何更改都可能导致被代码生成器覆盖 + *Repository提供数据库操作,如果要增加数据库操作请在当前目录下Partial文件夹Sys_WorkFlowRepository编写代码 + */ +using VOL.System.IRepositories; +using VOL.Core.BaseProvider; +using VOL.Core.EFDbContext; +using VOL.Core.Extensions.AutofacManager; +using VOL.Entity.DomainModels; + +namespace VOL.System.Repositories +{ + public partial class Sys_WorkFlowRepository : RepositoryBase , ISys_WorkFlowRepository + { + public Sys_WorkFlowRepository(VOLContext dbContext) + : base(dbContext) + { + + } + public static ISys_WorkFlowRepository Instance + { + get { return AutofacContainerModule.GetService(); } } + } +} diff --git "a/.Net6\347\211\210\346\234\254/VOL.System/Repositories/flow/Sys_WorkFlowStepRepository.cs" "b/.Net6\347\211\210\346\234\254/VOL.System/Repositories/flow/Sys_WorkFlowStepRepository.cs" new file mode 100644 index 000000000..dcec968b8 --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.System/Repositories/flow/Sys_WorkFlowStepRepository.cs" @@ -0,0 +1,24 @@ +/* + *代码由框架生成,任何更改都可能导致被代码生成器覆盖 + *Repository提供数据库操作,如果要增加数据库操作请在当前目录下Partial文件夹Sys_WorkFlowStepRepository编写代码 + */ +using VOL.System.IRepositories; +using VOL.Core.BaseProvider; +using VOL.Core.EFDbContext; +using VOL.Core.Extensions.AutofacManager; +using VOL.Entity.DomainModels; + +namespace VOL.System.Repositories +{ + public partial class Sys_WorkFlowStepRepository : RepositoryBase , ISys_WorkFlowStepRepository + { + public Sys_WorkFlowStepRepository(VOLContext dbContext) + : base(dbContext) + { + + } + public static ISys_WorkFlowStepRepository Instance + { + get { return AutofacContainerModule.GetService(); } } + } +} diff --git "a/.Net6\347\211\210\346\234\254/VOL.System/Repositories/flow/Sys_WorkFlowTableRepository.cs" "b/.Net6\347\211\210\346\234\254/VOL.System/Repositories/flow/Sys_WorkFlowTableRepository.cs" new file mode 100644 index 000000000..834a2b8d8 --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.System/Repositories/flow/Sys_WorkFlowTableRepository.cs" @@ -0,0 +1,24 @@ +/* + *代码由框架生成,任何更改都可能导致被代码生成器覆盖 + *Repository提供数据库操作,如果要增加数据库操作请在当前目录下Partial文件夹Sys_WorkFlowTableRepository编写代码 + */ +using VOL.System.IRepositories; +using VOL.Core.BaseProvider; +using VOL.Core.EFDbContext; +using VOL.Core.Extensions.AutofacManager; +using VOL.Entity.DomainModels; + +namespace VOL.System.Repositories +{ + public partial class Sys_WorkFlowTableRepository : RepositoryBase , ISys_WorkFlowTableRepository + { + public Sys_WorkFlowTableRepository(VOLContext dbContext) + : base(dbContext) + { + + } + public static ISys_WorkFlowTableRepository Instance + { + get { return AutofacContainerModule.GetService(); } } + } +} diff --git "a/.Net6\347\211\210\346\234\254/VOL.System/Repositories/flow/Sys_WorkFlowTableStepRepository.cs" "b/.Net6\347\211\210\346\234\254/VOL.System/Repositories/flow/Sys_WorkFlowTableStepRepository.cs" new file mode 100644 index 000000000..ca5319a71 --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.System/Repositories/flow/Sys_WorkFlowTableStepRepository.cs" @@ -0,0 +1,24 @@ +/* + *代码由框架生成,任何更改都可能导致被代码生成器覆盖 + *Repository提供数据库操作,如果要增加数据库操作请在当前目录下Partial文件夹Sys_WorkFlowTableStepRepository编写代码 + */ +using VOL.System.IRepositories; +using VOL.Core.BaseProvider; +using VOL.Core.EFDbContext; +using VOL.Core.Extensions.AutofacManager; +using VOL.Entity.DomainModels; + +namespace VOL.System.Repositories +{ + public partial class Sys_WorkFlowTableStepRepository : RepositoryBase , ISys_WorkFlowTableStepRepository + { + public Sys_WorkFlowTableStepRepository(VOLContext dbContext) + : base(dbContext) + { + + } + public static ISys_WorkFlowTableStepRepository Instance + { + get { return AutofacContainerModule.GetService(); } } + } +} diff --git "a/.Net6\347\211\210\346\234\254/VOL.System/Services/Quartz/Partial/Sys_QuartzLogService.cs" "b/.Net6\347\211\210\346\234\254/VOL.System/Services/Quartz/Partial/Sys_QuartzLogService.cs" new file mode 100644 index 000000000..ba2a72fbb --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.System/Services/Quartz/Partial/Sys_QuartzLogService.cs" @@ -0,0 +1,41 @@ +/* + *所有关于Sys_QuartzLog类的业务代码应在此处编写 +*可使用repository.调用常用方法,获取EF/Dapper等信息 +*如果需要事务请使用repository.DbContextBeginTransaction +*也可使用DBServerProvider.手动获取数据库相关信息 +*用户信息、权限、角色等使用UserContext.Current操作 +*Sys_QuartzLogService对增、删、改查、导入、导出、审核业务代码扩展参照ServiceFunFilter +*/ +using VOL.Core.BaseProvider; +using VOL.Core.Extensions.AutofacManager; +using VOL.Entity.DomainModels; +using System.Linq; +using VOL.Core.Utilities; +using System.Linq.Expressions; +using VOL.Core.Extensions; +using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.AspNetCore.Http; +using VOL.System.IRepositories; + +namespace VOL.System.Services +{ + public partial class Sys_QuartzLogService + { + private readonly IHttpContextAccessor _httpContextAccessor; + private readonly ISys_QuartzLogRepository _repository;//访问数据库 + + [ActivatorUtilitiesConstructor] + public Sys_QuartzLogService( + ISys_QuartzLogRepository dbRepository, + IHttpContextAccessor httpContextAccessor + ) + : base(dbRepository) + { + _httpContextAccessor = httpContextAccessor; + _repository = dbRepository; + //多租户会用到这init代码,其他情况可以不用 + //base.Init(dbRepository); + } + } +} diff --git "a/.Net6\347\211\210\346\234\254/VOL.System/Services/Quartz/Partial/Sys_QuartzOptionsService.cs" "b/.Net6\347\211\210\346\234\254/VOL.System/Services/Quartz/Partial/Sys_QuartzOptionsService.cs" new file mode 100644 index 000000000..8a57b5a59 --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.System/Services/Quartz/Partial/Sys_QuartzOptionsService.cs" @@ -0,0 +1,123 @@ +/* + *所有关于Sys_QuartzOptions类的业务代码应在此处编写 +*可使用repository.调用常用方法,获取EF/Dapper等信息 +*如果需要事务请使用repository.DbContextBeginTransaction +*也可使用DBServerProvider.手动获取数据库相关信息 +*用户信息、权限、角色等使用UserContext.Current操作 +*Sys_QuartzOptionsService对增、删、改查、导入、导出、审核业务代码扩展参照ServiceFunFilter +*/ +using VOL.Core.BaseProvider; +using VOL.Core.Extensions.AutofacManager; +using VOL.Entity.DomainModels; +using System.Linq; +using VOL.Core.Utilities; +using System.Linq.Expressions; +using VOL.Core.Extensions; +using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.AspNetCore.Http; +using VOL.System.IRepositories; +using VOL.Core.Quartz; +using Quartz; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; + +namespace VOL.System.Services +{ + public partial class Sys_QuartzOptionsService + { + private readonly IHttpContextAccessor _httpContextAccessor; + private readonly ISys_QuartzOptionsRepository _repository;//访问数据库 + private readonly ISchedulerFactory _schedulerFactory; + [ActivatorUtilitiesConstructor] + public Sys_QuartzOptionsService( + ISys_QuartzOptionsRepository dbRepository, + IHttpContextAccessor httpContextAccessor, + ISchedulerFactory schedulerFactory + ) + : base(dbRepository) + { + _httpContextAccessor = httpContextAccessor; + _repository = dbRepository; + _schedulerFactory = schedulerFactory; + //多租户会用到这init代码,其他情况可以不用 + //base.Init(dbRepository); + } + WebResponseContent webResponse = new WebResponseContent(); + public override WebResponseContent Add(SaveModel saveDataModel) + { + AddOnExecuting = (Sys_QuartzOptions options, object list) => + { + options.Status = (int)TriggerState.Paused; + return webResponse.OK(); + }; + AddOnExecuted = (Sys_QuartzOptions options, object list) => + { + return webResponse.OK(); + }; + return base.Add(saveDataModel); + } + + public override WebResponseContent Del(object[] keys, bool delList = true) + { + var ids = keys.Select(s => (Guid)(s.GetGuid())).ToArray(); + repository.FindAsIQueryable(x => ids.Contains(x.Id)).ToList().ForEach(options => + { + _schedulerFactory.Remove(options).GetAwaiter().GetResult(); + }); + + return base.Del(keys, delList); + } + + public override WebResponseContent Update(SaveModel saveModel) + { + UpdateOnExecuted = (Sys_QuartzOptions options, object addList, object updateList, List delKeys) => + { + _schedulerFactory.Update(options).GetAwaiter().GetResult(); + return webResponse.OK(); + }; + return base.Update(saveModel); + } + + /// + /// 手动执行一次 + /// + /// + /// + public async Task Run(Sys_QuartzOptions taskOptions) + { + return await _schedulerFactory.Run(taskOptions); + } + /// + /// 开启任务 + /// + /// + /// + /// + public async Task Start(Sys_QuartzOptions taskOptions) + { + var result = await _schedulerFactory.Start(taskOptions); + if (taskOptions.Status != (int)TriggerState.Normal) + { + taskOptions.Status = (int)TriggerState.Normal; + _repository.Update(taskOptions, x => new { x.Status }, true); + } + return result; + } + + /// + /// 暂停任务 + /// + /// + /// + /// + public async Task Pause(Sys_QuartzOptions taskOptions) + { + var result = await _schedulerFactory.Remove(taskOptions); + taskOptions.Status = (int)TriggerState.Paused; + _repository.Update(taskOptions, x => new { x.Status }, true); + return result; + } + } +} diff --git "a/.Net6\347\211\210\346\234\254/VOL.System/Services/Quartz/Sys_QuartzLogService.cs" "b/.Net6\347\211\210\346\234\254/VOL.System/Services/Quartz/Sys_QuartzLogService.cs" new file mode 100644 index 000000000..183a05f2b --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.System/Services/Quartz/Sys_QuartzLogService.cs" @@ -0,0 +1,27 @@ +/* + *Author:jxx + *Contact:283591387@qq.com + *代码由框架生成,此处任何更改都可能导致被代码生成器覆盖 + *所有业务编写全部应在Partial文件夹下Sys_QuartzLogService与ISys_QuartzLogService中编写 + */ +using VOL.System.IRepositories; +using VOL.System.IServices; +using VOL.Core.BaseProvider; +using VOL.Core.Extensions.AutofacManager; +using VOL.Entity.DomainModels; + +namespace VOL.System.Services +{ + public partial class Sys_QuartzLogService : ServiceBase + , ISys_QuartzLogService, IDependency + { + public Sys_QuartzLogService(ISys_QuartzLogRepository repository) + : base(repository) + { + Init(repository); + } + public static ISys_QuartzLogService Instance + { + get { return AutofacContainerModule.GetService(); } } + } + } diff --git "a/.Net6\347\211\210\346\234\254/VOL.System/Services/Quartz/Sys_QuartzOptionsService.cs" "b/.Net6\347\211\210\346\234\254/VOL.System/Services/Quartz/Sys_QuartzOptionsService.cs" new file mode 100644 index 000000000..8c81e1802 --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.System/Services/Quartz/Sys_QuartzOptionsService.cs" @@ -0,0 +1,27 @@ +/* + *Author:jxx + *Contact:283591387@qq.com + *代码由框架生成,此处任何更改都可能导致被代码生成器覆盖 + *所有业务编写全部应在Partial文件夹下Sys_QuartzOptionsService与ISys_QuartzOptionsService中编写 + */ +using VOL.System.IRepositories; +using VOL.System.IServices; +using VOL.Core.BaseProvider; +using VOL.Core.Extensions.AutofacManager; +using VOL.Entity.DomainModels; + +namespace VOL.System.Services +{ + public partial class Sys_QuartzOptionsService : ServiceBase + , ISys_QuartzOptionsService, IDependency + { + public Sys_QuartzOptionsService(ISys_QuartzOptionsRepository repository) + : base(repository) + { + Init(repository); + } + public static ISys_QuartzOptionsService Instance + { + get { return AutofacContainerModule.GetService(); } } + } + } diff --git "a/.Net6\347\211\210\346\234\254/VOL.System/Services/System/Partial/Sys_MenuService.cs" "b/.Net6\347\211\210\346\234\254/VOL.System/Services/System/Partial/Sys_MenuService.cs" index c7f23944f..e3326d03c 100644 --- "a/.Net6\347\211\210\346\234\254/VOL.System/Services/System/Partial/Sys_MenuService.cs" +++ "b/.Net6\347\211\210\346\234\254/VOL.System/Services/System/Partial/Sys_MenuService.cs" @@ -53,13 +53,14 @@ public async Task GetMenu() private List GetAllMenu() { //每次比较缓存是否更新过,如果更新则重新获取数据 - if (_menuVersionn != "" && _menuVersionn == CacheContext.Get(_menuCacheKey)) + string _cacheVersion = CacheContext.Get(_menuCacheKey); + if (_menuVersionn != "" && _menuVersionn == _cacheVersion) { return _menus ?? new List(); } lock (_menuObj) { - if (_menuVersionn != "" && _menus != null) return _menus; + if (_menuVersionn != "" && _menus != null && _menuVersionn == _cacheVersion) return _menus; //2020.12.27增加菜单界面上不显示,但可以分配权限 _menus = repository.FindAsIQueryable(x => x.Enable == 1 || x.Enable == 2) .OrderByDescending(a => a.OrderNo) @@ -199,7 +200,7 @@ public async Task Save(Sys_Menu menu) } } } - + bool _changed = false; if (menu.Menu_Id <= 0) { repository.Add(menu.SetCreateDefaultVal()); @@ -215,6 +216,9 @@ public async Task Save(Sys_Menu menu) { return webResponse.Error($"不能选择此父级id,选择的父级id与当前菜单形成依赖关系"); } + + _changed = repository.FindAsIQueryable(c => c.Menu_Id == menu.Menu_Id).Select(s => s.Auth).FirstOrDefault() != menu.Auth; + repository.Update(menu.SetModifyDefaultVal(), p => new { p.ParentId, @@ -231,7 +235,12 @@ public async Task Save(Sys_Menu menu) }); } await repository.SaveChangesAsync(); - _menuVersionn = DateTime.Now.ToString("yyyyMMddHHMMssfff"); + + CacheContext.Add(_menuCacheKey, DateTime.Now.ToString("yyyyMMddHHMMssfff")); + if (_changed) + { + UserContext.Current.RefreshWithMenuActionChange(menu.Menu_Id); + } _menus = null; webResponse.OK("保存成功", menu); } @@ -247,6 +256,21 @@ public async Task Save(Sys_Menu menu) } + public async Task DelMenu(int menuId) + { + WebResponseContent webResponse =new WebResponseContent(); + + if (await repository.ExistsAsync(x => x.ParentId == menuId)) + { + return webResponse.Error("当前菜单存在子菜单,请先删除子菜单!"); + } + repository.Delete(new Sys_Menu() + { + Menu_Id = menuId + }, true); + CacheContext.Add(_menuCacheKey, DateTime.Now.ToString("yyyyMMddHHMMssfff")); + return webResponse.OK("删除成功"); + } /// /// 编辑菜单时,获取菜单信息 /// diff --git "a/.Net6\347\211\210\346\234\254/VOL.System/Services/System/Partial/Sys_UserService.cs" "b/.Net6\347\211\210\346\234\254/VOL.System/Services/System/Partial/Sys_UserService.cs" index 34112fde5..b9e8fb113 100644 --- "a/.Net6\347\211\210\346\234\254/VOL.System/Services/System/Partial/Sys_UserService.cs" +++ "b/.Net6\347\211\210\346\234\254/VOL.System/Services/System/Partial/Sys_UserService.cs" @@ -1,5 +1,8 @@ -using Microsoft.EntityFrameworkCore; +using Microsoft.AspNetCore.Http; +using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Caching.Memory; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; using System; using System.Collections.Generic; using System.Linq; @@ -11,11 +14,22 @@ using VOL.Core.Services; using VOL.Core.Utilities; using VOL.Entity.DomainModels; +using VOL.System.IRepositories; namespace VOL.System.Services { public partial class Sys_UserService { + private Microsoft.AspNetCore.Http.HttpContext _context; + private ISys_UserRepository _repository; + [ActivatorUtilitiesConstructor] + public Sys_UserService(IHttpContextAccessor httpContextAccessor, ISys_UserRepository repository) + : base(repository) + { + _context = httpContextAccessor.HttpContext; + _repository = repository; + } + WebResponseContent webResponse = new WebResponseContent(); /// /// WebApi登陆 /// @@ -25,18 +39,17 @@ public partial class Sys_UserService public async Task Login(LoginInfo loginInfo, bool verificationCode = true) { string msg = string.Empty; - WebResponseContent responseContent = new WebResponseContent(); // 2020.06.12增加验证码 - IMemoryCache memoryCache = HttpContext.Current.GetService(); + IMemoryCache memoryCache = _context.GetService(); string cacheCode = (memoryCache.Get(loginInfo.UUID) ?? "").ToString(); if (string.IsNullOrEmpty(cacheCode)) { - return responseContent.Error("验证码已失效"); + return webResponse.Error("验证码已失效"); } if (cacheCode.ToLower() != loginInfo.VerificationCode.ToLower()) { memoryCache.Remove(loginInfo.UUID); - return responseContent.Error("验证码不正确"); + return webResponse.Error("验证码不正确"); } try { @@ -44,7 +57,7 @@ public async Task Login(LoginInfo loginInfo, bool verificati .FirstOrDefaultAsync(); if (user == null || loginInfo.Password.Trim().EncryptDES(AppSetting.Secret.User) != (user.UserPwd ?? "")) - return responseContent.Error(ResponseType.LoginError); + return webResponse.Error(ResponseType.LoginError); string token = JwtHelper.IssueJwt(new UserInfo() { @@ -53,23 +66,27 @@ public async Task Login(LoginInfo loginInfo, bool verificati Role_Id = user.Role_Id }); user.Token = token; - responseContent.Data = new { token, userName = user.UserTrueName, img = user.HeadImageUrl }; + webResponse.Data = new { token, userName = user.UserTrueName, img = user.HeadImageUrl }; repository.Update(user, x => x.Token, true); UserContext.Current.LogOut(user.User_Id); loginInfo.Password = string.Empty; - return responseContent.OK(ResponseType.LoginSuccess); + return webResponse.OK(ResponseType.LoginSuccess); } catch (Exception ex) { msg = ex.Message + ex.StackTrace; - return responseContent.Error(ResponseType.ServerError); + if (_context.GetService().IsDevelopment()) + { + throw new Exception(ex.Message + ex.StackTrace); + } + return webResponse.Error(ResponseType.ServerError); } finally { memoryCache.Remove(loginInfo.UUID); - Logger.Info(LoggerType.Login, loginInfo.Serialize(), responseContent.Message, msg); + Logger.Info(LoggerType.Login, loginInfo.Serialize(), webResponse.Message, msg); } } @@ -79,16 +96,15 @@ public async Task Login(LoginInfo loginInfo, bool verificati /// public async Task ReplaceToken() { - WebResponseContent responseContent = new WebResponseContent(); string error = ""; UserInfo userInfo = null; try { - string requestToken = HttpContext.Current.Request.Headers[AppSetting.TokenHeaderName]; + string requestToken = _context.Request.Headers[AppSetting.TokenHeaderName]; requestToken = requestToken?.Replace("Bearer ", ""); - if (UserContext.Current.Token != requestToken) return responseContent.Error("Token已失效!"); + if (UserContext.Current.Token != requestToken) return webResponse.Error("Token已失效!"); - if (JwtHelper.IsExp(requestToken)) return responseContent.Error("Token已过期!"); + if (JwtHelper.IsExp(requestToken)) return webResponse.Error("Token已过期!"); int userId = UserContext.Current.UserId; userInfo = await @@ -102,26 +118,26 @@ public async Task ReplaceToken() RoleName = s.RoleName }); - if (userInfo == null) return responseContent.Error("未查到用户信息!"); + if (userInfo == null) return webResponse.Error("未查到用户信息!"); string token = JwtHelper.IssueJwt(userInfo); //移除当前缓存 base.CacheContext.Remove(userId.GetUserIdKey()); //只更新的token字段 repository.Update(new Sys_User() { User_Id = userId, Token = token }, x => x.Token, true); - responseContent.OK(null, token); + webResponse.OK(null, token); } catch (Exception ex) { error = ex.Message + ex.StackTrace + ex.Source; - responseContent.Error("token替换出错了.."); + webResponse.Error("token替换出错了.."); } finally { Logger.Info(LoggerType.ReplaceToeken, ($"用户Id:{userInfo?.User_Id},用户{userInfo?.UserTrueName}") - + (responseContent.Status ? "token替换成功" : "token替换失败"), null, error); + + (webResponse.Status ? "token替换成功" : "token替换失败"), null, error); } - return responseContent; + return webResponse; } /// @@ -134,7 +150,6 @@ public async Task ModifyPwd(string oldPwd, string newPwd) oldPwd = oldPwd?.Trim(); newPwd = newPwd?.Trim(); string message = ""; - WebResponseContent webResponse = new WebResponseContent(); try { if (string.IsNullOrEmpty(oldPwd)) return webResponse.Error("旧密码不能为空"); @@ -200,7 +215,7 @@ public async Task GetCurrentUserInfo() s.CreateDate }) .FirstOrDefaultAsync(); - return new WebResponseContent().OK(null, data); + return webResponse.OK(null, data); } /// @@ -250,19 +265,17 @@ public override PageGridData GetPageData(PageDataOptions pageData) /// public override WebResponseContent Add(SaveModel saveModel) { - WebResponseContent responseData = new WebResponseContent(); + saveModel.MainData["RoleName"] = "无"; base.AddOnExecute = (SaveModel userModel) => { int roleId = userModel?.MainData?["Role_Id"].GetInt() ?? 0; - if (roleId > 0) + if (roleId > 0 && !UserContext.Current.IsSuperAdmin) { string roleName = GetChildrenName(roleId); - if ((!UserContext.Current.IsSuperAdmin && roleId == 1) || string.IsNullOrEmpty(roleName)) - return responseData.Error("不能选择此角色"); - //选择新建的角色ID,手动添加角色ID的名称 - userModel.MainData["RoleName"] = roleName; + if ((roleId == 1) || string.IsNullOrEmpty(roleName)) + return webResponse.Error("不能选择此角色"); } - return responseData.OK(); + return webResponse.OK(); }; @@ -273,15 +286,15 @@ public override WebResponseContent Add(SaveModel saveModel) { user.UserName = user.UserName.Trim(); if (repository.Exists(x => x.UserName == user.UserName)) - return responseData.Error("用户名已经被注册"); + return webResponse.Error("用户名已经被注册"); user.UserPwd = pwd.EncryptDES(AppSetting.Secret.User); //设置默认头像 - return responseData.OK(); + return webResponse.OK(); }; base.AddOnExecuted = (Sys_User user, object list) => { - return responseData.OK($"用户新建成功.帐号{user.UserName}密码{pwd}"); + return webResponse.OK($"用户新建成功.帐号{user.UserName}密码{pwd}"); }; return base.Add(saveModel); ; } @@ -297,22 +310,26 @@ public override WebResponseContent Del(object[] keys, bool delList = false) { base.DelOnExecuting = (object[] ids) => { - int[] userIds = ids.Select(x => Convert.ToInt32(x)).ToArray(); - //校验只能删除当前角色下能看到的用户 - var xxx = repository.Find(x => userIds.Contains(x.User_Id)); - var delUserIds = repository.Find(x => userIds.Contains(x.User_Id), s => new { s.User_Id, s.Role_Id, s.UserTrueName }); - List roleIds = Sys_RoleService - .Instance - .GetAllChildrenRoleId(UserContext.Current.RoleId); - - string[] userNames = delUserIds.Where(x => !roleIds.Contains(x.Role_Id)) - .Select(s => s.UserTrueName) - .ToArray(); - if (userNames.Count() > 0) + if (!UserContext.Current.IsSuperAdmin) { - return new WebResponseContent().Error($"没有权限删除用户:{string.Join(',', userNames)}"); + int[] userIds = ids.Select(x => Convert.ToInt32(x)).ToArray(); + //校验只能删除当前角色下能看到的用户 + var xxx = repository.Find(x => userIds.Contains(x.User_Id)); + var delUserIds = repository.Find(x => userIds.Contains(x.User_Id), s => new { s.User_Id, s.Role_Id, s.UserTrueName }); + List roleIds = Sys_RoleService + .Instance + .GetAllChildrenRoleId(UserContext.Current.RoleId); + + string[] userNames = delUserIds.Where(x => !roleIds.Contains(x.Role_Id)) + .Select(s => s.UserTrueName) + .ToArray(); + if (userNames.Count() > 0) + { + return webResponse.Error($"没有权限删除用户:{string.Join(',', userNames)}"); + } } - return new WebResponseContent().OK(); + + return webResponse.OK(); }; base.DelOnExecuted = (object[] userIds) => { @@ -341,30 +358,29 @@ private string GetChildrenName(int roleId) /// public override WebResponseContent Update(SaveModel saveModel) { - WebResponseContent responseContent = new WebResponseContent(); UserInfo userInfo = UserContext.Current.UserInfo; + saveModel.MainData["RoleName"] = "无"; //禁止修改用户名 base.UpdateOnExecute = (SaveModel saveInfo) => { - int roleId = saveModel.MainData["Role_Id"].GetInt(); - string roleName = GetChildrenName(roleId); - saveInfo.MainData.TryAdd("RoleName", roleName); - if (UserContext.IsRoleIdSuperAdmin(userInfo.Role_Id)) + if (!UserContext.Current.IsSuperAdmin) { - if (userInfo.Role_Id == roleId) + int roleId = saveModel.MainData["Role_Id"].GetInt(); + string roleName = GetChildrenName(roleId); + saveInfo.MainData.TryAdd("RoleName", roleName); + if (UserContext.IsRoleIdSuperAdmin(userInfo.Role_Id)) { - saveInfo.MainData["RoleName"] = userInfo.RoleName; + return webResponse.OK(); } - return responseContent.OK(); + if (string.IsNullOrEmpty(roleName)) return webResponse.Error("不能选择此角色"); } - if (string.IsNullOrEmpty(roleName)) return responseContent.Error("不能选择此角色"); - return responseContent.OK(); + return webResponse.OK(); }; base.UpdateOnExecuting = (Sys_User user, object obj1, object obj2, List list) => { if (user.User_Id == userInfo.User_Id && user.Role_Id != userInfo.Role_Id) - return responseContent.Error("不能修改自己的角色"); + return webResponse.Error("不能修改自己的角色"); var _user = repository.Find(x => x.User_Id == user.User_Id, s => new { s.UserName, s.UserPwd }) @@ -372,7 +388,7 @@ public override WebResponseContent Update(SaveModel saveModel) user.UserName = _user.UserName; //Sys_User实体的UserPwd用户密码字段的属性不是编辑,此处不会修改密码。但防止代码生成器将密码字段的修改成了可编辑造成密码被修改 user.UserPwd = _user.UserPwd; - return responseContent.OK(); + return webResponse.OK(); }; //用户信息被修改后,将用户的缓存信息清除 base.UpdateOnExecuted = (Sys_User user, object obj1, object obj2, List List) => diff --git "a/.Net6\347\211\210\346\234\254/VOL.System/Services/flow/Partial/Sys_WorkFlowService.cs" "b/.Net6\347\211\210\346\234\254/VOL.System/Services/flow/Partial/Sys_WorkFlowService.cs" new file mode 100644 index 000000000..44cd53951 --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.System/Services/flow/Partial/Sys_WorkFlowService.cs" @@ -0,0 +1,109 @@ +/* + *所有关于Sys_WorkFlow类的业务代码应在此处编写 +*可使用repository.调用常用方法,获取EF/Dapper等信息 +*如果需要事务请使用repository.DbContextBeginTransaction +*也可使用DBServerProvider.手动获取数据库相关信息 +*用户信息、权限、角色等使用UserContext.Current操作 +*Sys_WorkFlowService对增、删、改查、导入、导出、审核业务代码扩展参照ServiceFunFilter +*/ +using VOL.Core.BaseProvider; +using VOL.Core.Extensions.AutofacManager; +using VOL.Entity.DomainModels; +using System.Linq; +using VOL.Core.Utilities; +using System.Linq.Expressions; +using VOL.Core.Extensions; +using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.AspNetCore.Http; +using VOL.System.IRepositories; +using System.Collections.Generic; + +namespace VOL.System.Services +{ + public partial class Sys_WorkFlowService + { + private readonly IHttpContextAccessor _httpContextAccessor; + private readonly ISys_WorkFlowRepository _repository;//访问数据库 + private readonly ISys_WorkFlowStepRepository _stepRepository; + [ActivatorUtilitiesConstructor] + public Sys_WorkFlowService( + ISys_WorkFlowRepository dbRepository, + IHttpContextAccessor httpContextAccessor, + ISys_WorkFlowStepRepository stepRepository + ) + : base(dbRepository) + { + _httpContextAccessor = httpContextAccessor; + _repository = dbRepository; + _stepRepository = stepRepository; + //多租户会用到这init代码,其他情况可以不用 + //base.Init(dbRepository); + } + + WebResponseContent webResponse = new WebResponseContent(); + public override WebResponseContent Add(SaveModel saveDataModel) + { + saveDataModel.MainData["Enable"] = 1; + AddOnExecuting = (Sys_WorkFlow workFlow, object list) => + { + if (repository.Exists(x => x.WorkTable == workFlow.WorkTable)) + { + return webResponse.Error("目前同一张表只能创建一个流程"); + } + List steps = list as List; + return webResponse.OK(); + }; + AddOnExecuted = (Sys_WorkFlow workFlow, object list) => + { + return webResponse.OK(); + }; + return base.Add(saveDataModel); + } + + public override WebResponseContent Update(SaveModel saveModel) + { + UpdateOnExecuting = (Sys_WorkFlow workFlow, object addList, object updateList, List delKeys) => + { + //新增的明细 + List add = addList as List; + var stepsClone = add.Serialize().DeserializeObject>(); + add.Clear(); + + var steps = _stepRepository.FindAsIQueryable(x => x.WorkFlow_Id == workFlow.WorkFlow_Id) + .Select(s => new { s.WorkStepFlow_Id, s.StepId }) + .ToList(); + //删除的节点 + var delIds = steps.Where(x => !stepsClone.Any(c => c.StepId == x.StepId)) + .Select(s => s.WorkStepFlow_Id).ToList(); + delKeys.AddRange(delKeys); + + //新增的节点 + var newSteps = stepsClone.Where(x => !steps.Any(c => c.StepId == x.StepId)) + .ToList(); + add.AddRange(newSteps); + + List update = updateList as List; + //修改的节点 + var updateSteps = stepsClone.Where(x => steps.Any(c => c.StepId == x.StepId)) + .ToList(); + update.AddRange(updateSteps); + updateSteps.ForEach(x => + { + x.WorkStepFlow_Id = steps.Where(c => c.StepId == x.StepId).Select(s => s.WorkStepFlow_Id).FirstOrDefault(); + foreach (var item in saveModel.DetailData) + { + if (item["StepId"].ToString() == x.StepId) + { + item["WorkFlow_Id"] = workFlow.WorkFlow_Id; + item["WorkStepFlow_Id"] = x.WorkStepFlow_Id; + } + } + }); + return webResponse.OK(); + }; + + return base.Update(saveModel); + } + } +} diff --git "a/.Net6\347\211\210\346\234\254/VOL.System/Services/flow/Partial/Sys_WorkFlowStepService.cs" "b/.Net6\347\211\210\346\234\254/VOL.System/Services/flow/Partial/Sys_WorkFlowStepService.cs" new file mode 100644 index 000000000..d713e4df3 --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.System/Services/flow/Partial/Sys_WorkFlowStepService.cs" @@ -0,0 +1,41 @@ +/* + *所有关于Sys_WorkFlowStep类的业务代码应在此处编写 +*可使用repository.调用常用方法,获取EF/Dapper等信息 +*如果需要事务请使用repository.DbContextBeginTransaction +*也可使用DBServerProvider.手动获取数据库相关信息 +*用户信息、权限、角色等使用UserContext.Current操作 +*Sys_WorkFlowStepService对增、删、改查、导入、导出、审核业务代码扩展参照ServiceFunFilter +*/ +using VOL.Core.BaseProvider; +using VOL.Core.Extensions.AutofacManager; +using VOL.Entity.DomainModels; +using System.Linq; +using VOL.Core.Utilities; +using System.Linq.Expressions; +using VOL.Core.Extensions; +using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.AspNetCore.Http; +using VOL.System.IRepositories; + +namespace VOL.System.Services +{ + public partial class Sys_WorkFlowStepService + { + private readonly IHttpContextAccessor _httpContextAccessor; + private readonly ISys_WorkFlowStepRepository _repository;//访问数据库 + + [ActivatorUtilitiesConstructor] + public Sys_WorkFlowStepService( + ISys_WorkFlowStepRepository dbRepository, + IHttpContextAccessor httpContextAccessor + ) + : base(dbRepository) + { + _httpContextAccessor = httpContextAccessor; + _repository = dbRepository; + //多租户会用到这init代码,其他情况可以不用 + //base.Init(dbRepository); + } + } +} diff --git "a/.Net6\347\211\210\346\234\254/VOL.System/Services/flow/Partial/Sys_WorkFlowTableService.cs" "b/.Net6\347\211\210\346\234\254/VOL.System/Services/flow/Partial/Sys_WorkFlowTableService.cs" new file mode 100644 index 000000000..58ce7e590 --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.System/Services/flow/Partial/Sys_WorkFlowTableService.cs" @@ -0,0 +1,63 @@ +/* + *所有关于Sys_WorkFlowTable类的业务代码应在此处编写 +*可使用repository.调用常用方法,获取EF/Dapper等信息 +*如果需要事务请使用repository.DbContextBeginTransaction +*也可使用DBServerProvider.手动获取数据库相关信息 +*用户信息、权限、角色等使用UserContext.Current操作 +*Sys_WorkFlowTableService对增、删、改查、导入、导出、审核业务代码扩展参照ServiceFunFilter +*/ +using VOL.Core.BaseProvider; +using VOL.Core.Extensions.AutofacManager; +using VOL.Entity.DomainModels; +using System.Linq; +using VOL.Core.Utilities; +using System.Linq.Expressions; +using VOL.Core.Extensions; +using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.AspNetCore.Http; +using VOL.System.IRepositories; +using VOL.Core.ManageUser; +using VOL.Core.WorkFlow; + +namespace VOL.System.Services +{ + public partial class Sys_WorkFlowTableService + { + private readonly IHttpContextAccessor _httpContextAccessor; + private readonly ISys_WorkFlowTableRepository _repository;//访问数据库 + private readonly ISys_WorkFlowTableStepRepository _stepRepository;//访问数据库 + [ActivatorUtilitiesConstructor] + public Sys_WorkFlowTableService( + ISys_WorkFlowTableRepository dbRepository, + IHttpContextAccessor httpContextAccessor, + ISys_WorkFlowTableStepRepository stepRepository + ) + : base(dbRepository) + { + _httpContextAccessor = httpContextAccessor; + _repository = dbRepository; + _stepRepository = stepRepository; + //多租户会用到这init代码,其他情况可以不用 + //base.Init(dbRepository); + } + + public override PageGridData GetPageData(PageDataOptions options) + { + if (!UserContext.Current.IsSuperAdmin) + { + var user = UserContext.Current.UserInfo; + //显示当前用户需要审批的数据 + var stepQuery = _stepRepository.FindAsIQueryable(x => (x.StepType == (int)AuditType.用户审批 && x.StepValue == user.User_Id) + || (x.StepType == (int)AuditType.角色审批 && x.StepValue == user.Role_Id) + || (x.StepType == (int)AuditType.部门审批 && x.StepValue == user.DeptId) + ); + QueryRelativeExpression = (IQueryable queryable) => + { + return queryable.Where(x => stepQuery.Any(c => x.WorkFlowTable_Id == c.WorkFlowTable_Id && (x.CurrentOrderId == c.OrderId || c.AuditId == user.User_Id))); + }; + } + return base.GetPageData(options); + } + } +} diff --git "a/.Net6\347\211\210\346\234\254/VOL.System/Services/flow/Partial/Sys_WorkFlowTableStepService.cs" "b/.Net6\347\211\210\346\234\254/VOL.System/Services/flow/Partial/Sys_WorkFlowTableStepService.cs" new file mode 100644 index 000000000..7159c4e0f --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.System/Services/flow/Partial/Sys_WorkFlowTableStepService.cs" @@ -0,0 +1,41 @@ +/* + *所有关于Sys_WorkFlowTableStep类的业务代码应在此处编写 +*可使用repository.调用常用方法,获取EF/Dapper等信息 +*如果需要事务请使用repository.DbContextBeginTransaction +*也可使用DBServerProvider.手动获取数据库相关信息 +*用户信息、权限、角色等使用UserContext.Current操作 +*Sys_WorkFlowTableStepService对增、删、改查、导入、导出、审核业务代码扩展参照ServiceFunFilter +*/ +using VOL.Core.BaseProvider; +using VOL.Core.Extensions.AutofacManager; +using VOL.Entity.DomainModels; +using System.Linq; +using VOL.Core.Utilities; +using System.Linq.Expressions; +using VOL.Core.Extensions; +using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.AspNetCore.Http; +using VOL.System.IRepositories; + +namespace VOL.System.Services +{ + public partial class Sys_WorkFlowTableStepService + { + private readonly IHttpContextAccessor _httpContextAccessor; + private readonly ISys_WorkFlowTableStepRepository _repository;//访问数据库 + + [ActivatorUtilitiesConstructor] + public Sys_WorkFlowTableStepService( + ISys_WorkFlowTableStepRepository dbRepository, + IHttpContextAccessor httpContextAccessor + ) + : base(dbRepository) + { + _httpContextAccessor = httpContextAccessor; + _repository = dbRepository; + //多租户会用到这init代码,其他情况可以不用 + //base.Init(dbRepository); + } + } +} diff --git "a/.Net6\347\211\210\346\234\254/VOL.System/Services/flow/Sys_WorkFlowService.cs" "b/.Net6\347\211\210\346\234\254/VOL.System/Services/flow/Sys_WorkFlowService.cs" new file mode 100644 index 000000000..6fa8582ce --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.System/Services/flow/Sys_WorkFlowService.cs" @@ -0,0 +1,27 @@ +/* + *Author:jxx + *Contact:283591387@qq.com + *代码由框架生成,此处任何更改都可能导致被代码生成器覆盖 + *所有业务编写全部应在Partial文件夹下Sys_WorkFlowService与ISys_WorkFlowService中编写 + */ +using VOL.System.IRepositories; +using VOL.System.IServices; +using VOL.Core.BaseProvider; +using VOL.Core.Extensions.AutofacManager; +using VOL.Entity.DomainModels; + +namespace VOL.System.Services +{ + public partial class Sys_WorkFlowService : ServiceBase + , ISys_WorkFlowService, IDependency + { + public Sys_WorkFlowService(ISys_WorkFlowRepository repository) + : base(repository) + { + Init(repository); + } + public static ISys_WorkFlowService Instance + { + get { return AutofacContainerModule.GetService(); } } + } + } diff --git "a/.Net6\347\211\210\346\234\254/VOL.System/Services/flow/Sys_WorkFlowStepService.cs" "b/.Net6\347\211\210\346\234\254/VOL.System/Services/flow/Sys_WorkFlowStepService.cs" new file mode 100644 index 000000000..e69982973 --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.System/Services/flow/Sys_WorkFlowStepService.cs" @@ -0,0 +1,27 @@ +/* + *Author:jxx + *Contact:283591387@qq.com + *代码由框架生成,此处任何更改都可能导致被代码生成器覆盖 + *所有业务编写全部应在Partial文件夹下Sys_WorkFlowStepService与ISys_WorkFlowStepService中编写 + */ +using VOL.System.IRepositories; +using VOL.System.IServices; +using VOL.Core.BaseProvider; +using VOL.Core.Extensions.AutofacManager; +using VOL.Entity.DomainModels; + +namespace VOL.System.Services +{ + public partial class Sys_WorkFlowStepService : ServiceBase + , ISys_WorkFlowStepService, IDependency + { + public Sys_WorkFlowStepService(ISys_WorkFlowStepRepository repository) + : base(repository) + { + Init(repository); + } + public static ISys_WorkFlowStepService Instance + { + get { return AutofacContainerModule.GetService(); } } + } + } diff --git "a/.Net6\347\211\210\346\234\254/VOL.System/Services/flow/Sys_WorkFlowTableService.cs" "b/.Net6\347\211\210\346\234\254/VOL.System/Services/flow/Sys_WorkFlowTableService.cs" new file mode 100644 index 000000000..ecd1ce903 --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.System/Services/flow/Sys_WorkFlowTableService.cs" @@ -0,0 +1,27 @@ +/* + *Author:jxx + *Contact:283591387@qq.com + *代码由框架生成,此处任何更改都可能导致被代码生成器覆盖 + *所有业务编写全部应在Partial文件夹下Sys_WorkFlowTableService与ISys_WorkFlowTableService中编写 + */ +using VOL.System.IRepositories; +using VOL.System.IServices; +using VOL.Core.BaseProvider; +using VOL.Core.Extensions.AutofacManager; +using VOL.Entity.DomainModels; + +namespace VOL.System.Services +{ + public partial class Sys_WorkFlowTableService : ServiceBase + , ISys_WorkFlowTableService, IDependency + { + public Sys_WorkFlowTableService(ISys_WorkFlowTableRepository repository) + : base(repository) + { + Init(repository); + } + public static ISys_WorkFlowTableService Instance + { + get { return AutofacContainerModule.GetService(); } } + } + } diff --git "a/.Net6\347\211\210\346\234\254/VOL.System/Services/flow/Sys_WorkFlowTableStepService.cs" "b/.Net6\347\211\210\346\234\254/VOL.System/Services/flow/Sys_WorkFlowTableStepService.cs" new file mode 100644 index 000000000..0eb3e32d8 --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.System/Services/flow/Sys_WorkFlowTableStepService.cs" @@ -0,0 +1,27 @@ +/* + *Author:jxx + *Contact:283591387@qq.com + *代码由框架生成,此处任何更改都可能导致被代码生成器覆盖 + *所有业务编写全部应在Partial文件夹下Sys_WorkFlowTableStepService与ISys_WorkFlowTableStepService中编写 + */ +using VOL.System.IRepositories; +using VOL.System.IServices; +using VOL.Core.BaseProvider; +using VOL.Core.Extensions.AutofacManager; +using VOL.Entity.DomainModels; + +namespace VOL.System.Services +{ + public partial class Sys_WorkFlowTableStepService : ServiceBase + , ISys_WorkFlowTableStepService, IDependency + { + public Sys_WorkFlowTableStepService(ISys_WorkFlowTableStepRepository repository) + : base(repository) + { + Init(repository); + } + public static ISys_WorkFlowTableStepService Instance + { + get { return AutofacContainerModule.GetService(); } } + } + } diff --git "a/.Net6\347\211\210\346\234\254/VOL.WebApi/Controllers/System/Partial/Sys_MenuController.cs" "b/.Net6\347\211\210\346\234\254/VOL.WebApi/Controllers/System/Partial/Sys_MenuController.cs" index 7e3e90af0..c1eb2dd9b 100644 --- "a/.Net6\347\211\210\346\234\254/VOL.WebApi/Controllers/System/Partial/Sys_MenuController.cs" +++ "b/.Net6\347\211\210\346\234\254/VOL.WebApi/Controllers/System/Partial/Sys_MenuController.cs" @@ -49,19 +49,9 @@ public async Task Save([FromBody] Sys_Menu menu) /// [ApiActionPermission(ActionRolePermission.SuperAdmin)] [HttpPost, Route("delMenu")] - public async Task DelMenu(int menuId) + public async Task DelMenu(int menuId) { - Core.Utilities.WebResponseContent webResponse = new Core.Utilities.WebResponseContent(); - var repository = Repositories.Sys_MenuRepository.Instance; - if (await repository.ExistsAsync(x => x.ParentId == menuId)) - { - return Json(webResponse.Error("当前菜单存在子菜单,请先删除子菜单!")); - } - repository.Delete(new Sys_Menu() - { - Menu_Id = menuId - },true); - return Json(webResponse.OK("删除成功")); + return Json(await Service.DelMenu(menuId)); } } diff --git "a/.Net6\347\211\210\346\234\254/VOL.WebApi/Controllers/System/Partial/Sys_QuartzLogController.cs" "b/.Net6\347\211\210\346\234\254/VOL.WebApi/Controllers/System/Partial/Sys_QuartzLogController.cs" new file mode 100644 index 000000000..4d4ebb1bc --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.WebApi/Controllers/System/Partial/Sys_QuartzLogController.cs" @@ -0,0 +1,33 @@ +/* + *接口编写处... +*如果接口需要做Action的权限验证,请在Action上使用属性 +*如: [ApiActionPermission("Sys_QuartzLog",Enums.ActionPermissionOptions.Search)] + */ +using Microsoft.AspNetCore.Mvc; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.AspNetCore.Http; +using VOL.Entity.DomainModels; +using VOL.System.IServices; + +namespace VOL.System.Controllers +{ + public partial class Sys_QuartzLogController + { + private readonly ISys_QuartzLogService _service;//访问业务代码 + private readonly IHttpContextAccessor _httpContextAccessor; + + [ActivatorUtilitiesConstructor] + public Sys_QuartzLogController( + ISys_QuartzLogService service, + IHttpContextAccessor httpContextAccessor + ) + : base(service) + { + _service = service; + _httpContextAccessor = httpContextAccessor; + } + } +} diff --git "a/.Net6\347\211\210\346\234\254/VOL.WebApi/Controllers/System/Partial/Sys_QuartzOptionsController.cs" "b/.Net6\347\211\210\346\234\254/VOL.WebApi/Controllers/System/Partial/Sys_QuartzOptionsController.cs" new file mode 100644 index 000000000..23821f82f --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.WebApi/Controllers/System/Partial/Sys_QuartzOptionsController.cs" @@ -0,0 +1,83 @@ +/* + *接口编写处... +*如果接口需要做Action的权限验证,请在Action上使用属性 +*如: [ApiActionPermission("Sys_QuartzOptions",Enums.ActionPermissionOptions.Search)] + */ +using Microsoft.AspNetCore.Mvc; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.AspNetCore.Http; +using VOL.Entity.DomainModels; +using VOL.System.IServices; +using VOL.Core.Filters; +using VOL.Core.Enums; + +namespace VOL.System.Controllers +{ + public partial class Sys_QuartzOptionsController + { + private readonly ISys_QuartzOptionsService _service;//访问业务代码 + private readonly IHttpContextAccessor _httpContextAccessor; + + [ActivatorUtilitiesConstructor] + public Sys_QuartzOptionsController( + ISys_QuartzOptionsService service, + IHttpContextAccessor httpContextAccessor + ) + : base(service) + { + _service = service; + _httpContextAccessor = httpContextAccessor; + } + + /// + /// api加上属性 [ApiTask] + /// + /// + [ApiTask] + [HttpGet, HttpPost, Route("test")] + public IActionResult Test() + { + return Content(DateTime.Now.ToString("yyyy-MM-dd HH:mm:sss")); + } + + /// + /// 手动执行一次 + /// + /// + /// + [Route("run"), HttpPost] + [ActionPermission(ActionPermissionOptions.Update)] + public async Task Run([FromBody] Sys_QuartzOptions taskOptions) + { + return await Service.Run(taskOptions); + } + /// + /// 开启任务 + /// + /// + /// + /// + [Route("start"), HttpPost] + [ActionPermission(ActionPermissionOptions.Update)] + public async Task Start([FromBody] Sys_QuartzOptions taskOptions) + { + return await Service.Start(taskOptions); + } + + /// + /// 暂停任务 + /// + /// + /// + /// + [Route("pause"), HttpPost] + [ActionPermission(ActionPermissionOptions.Update)] + public async Task Pause([FromBody] Sys_QuartzOptions taskOptions) + { + return await Service.Pause(taskOptions); + } + } +} diff --git "a/.Net6\347\211\210\346\234\254/VOL.WebApi/Controllers/System/Partial/Sys_UserController.cs" "b/.Net6\347\211\210\346\234\254/VOL.WebApi/Controllers/System/Partial/Sys_UserController.cs" index 2f4afd6c1..74db4f638 100644 --- "a/.Net6\347\211\210\346\234\254/VOL.WebApi/Controllers/System/Partial/Sys_UserController.cs" +++ "b/.Net6\347\211\210\346\234\254/VOL.WebApi/Controllers/System/Partial/Sys_UserController.cs" @@ -169,7 +169,7 @@ public IActionResult GetVierificationCode() string code = VierificationCode.RandomText(); var data = new { - img = VierificationCode.CreateBase64Imgage(code), + img = VierificationCodeHelpers.CreateBase64Image(code), uuid = Guid.NewGuid() }; HttpContext.GetService().Set(data.uuid.ToString(), code, new TimeSpan(0, 5, 0)); diff --git "a/.Net6\347\211\210\346\234\254/VOL.WebApi/Controllers/System/Partial/Sys_WorkFlowController.cs" "b/.Net6\347\211\210\346\234\254/VOL.WebApi/Controllers/System/Partial/Sys_WorkFlowController.cs" new file mode 100644 index 000000000..8272d15b0 --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.WebApi/Controllers/System/Partial/Sys_WorkFlowController.cs" @@ -0,0 +1,139 @@ +/* + *接口编写处... +*如果接口需要做Action的权限验证,请在Action上使用属性 +*如: [ApiActionPermission("Sys_WorkFlow",Enums.ActionPermissionOptions.Search)] + */ +using Microsoft.AspNetCore.Mvc; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.AspNetCore.Http; +using VOL.Entity.DomainModels; +using VOL.System.IServices; +using VOL.Core.WorkFlow; +using VOL.System.IRepositories; +using System.Linq; +using Microsoft.EntityFrameworkCore; +using VOL.Core.ManageUser; +using VOL.Core.Services; + +namespace VOL.System.Controllers +{ + public partial class Sys_WorkFlowController + { + private readonly ISys_WorkFlowService _service;//访问业务代码 + private readonly ISys_UserRepository _userRepository; + private readonly ISys_RoleRepository _roleRepository; + private readonly ISys_WorkFlowTableRepository _workFlowTableRepository; + private readonly IHttpContextAccessor _httpContextAccessor; + + [ActivatorUtilitiesConstructor] + public Sys_WorkFlowController( + ISys_WorkFlowService service, + ISys_UserRepository userRepository, + ISys_RoleRepository roleRepository, + ISys_WorkFlowTableRepository workFlowTableRepository, + IHttpContextAccessor httpContextAccessor + ) + : base(service) + { + _service = service; + _userRepository = userRepository; + _roleRepository = roleRepository; + _workFlowTableRepository = workFlowTableRepository; + _httpContextAccessor = httpContextAccessor; + } + /// + /// 获取工作流程表数据源 + /// + /// + [HttpGet, Route("getTableInfo")] + public IActionResult GetTableInfo() + { + return Json(WorkFlowContainer.GetDic()); + } + + /// + /// 获取流程节点数据源(用户与角色) + /// + /// + [HttpGet, Route("getNodeDic")] + public async Task GetNodeDic() + { + var data = new + { + users = await _userRepository.FindAsIQueryable(x => true).Select(s => new { key = s.User_Id, value = s.UserTrueName }).ToListAsync(), + roles = await _roleRepository.FindAsIQueryable(x => true).Select(s => new { key = s.Role_Id, value = s.RoleName }).ToListAsync(), + dept = new string[] { }//部门表,暂时没有 + }; + return Json(data); + } + /// + /// 获取单据的审批流程进度 + /// + /// + /// + /// + [HttpGet, Route("getSteps")] + public async Task GetSteps(string tableName, string id) + { + var flow = await _workFlowTableRepository.FindAsIQueryable(x => x.WorkTable == tableName && x.WorkTableKey == id) + .Include(x => x.Sys_WorkFlowTableStep) + .FirstOrDefaultAsync(); + + if (flow == null) + { + return Json(new { }); + } + + var user = UserContext.Current.UserInfo; + List stepValues = flow.Sys_WorkFlowTableStep.Select(s => s.StepValue ?? 0).ToList(); + + var auditUsers = flow.Sys_WorkFlowTableStep.Where(x => x.AuditId > 0).Select(s => s.AuditId).ToArray(); + var users = await _userRepository.FindAsIQueryable(x => auditUsers.Contains(x.User_Id)) + .Select(u => new { u.User_Id, u.UserTrueName }).ToListAsync(); + + var steps = flow.Sys_WorkFlowTableStep + .Select(c => new + { + c.AuditId, + Auditor = users.Where(us => us.User_Id == c.AuditId).Select(us => us.UserTrueName).FirstOrDefault(), + c.AuditDate, + c.AuditStatus, + c.Remark, + c.StepValue, + c.StepName, + c.OrderId, + c.Enable, + //判断是按角色审批 还是用户帐号审批 + isCurrentUser = (c.AuditStatus ?? 0) == (int)AuditStatus.审核中 && c.OrderId == flow.CurrentOrderId && GetAuditStepValue(c.StepType) == c.StepValue, + isCurrent = c.OrderId == flow.CurrentOrderId && c.AuditStatus != (int)AuditStatus.审核通过 + }).OrderBy(o => o.OrderId); + var data = new + { + step = flow.CurrentOrderId, + flow.AuditStatus, + list = steps.Where(x => (x.Enable == null || x.Enable > 0)).ToList(), + his = steps.Where(x => x.AuditId > 0 &&x.AuditStatus>0 && x.Enable == 0).ToList(), + }; + + return Json(data); + } + + private int GetAuditStepValue(int? stepType) + { + if (stepType == (int)AuditType.角色审批) + { + return UserContext.Current.RoleId; + } + if (stepType == (int)AuditType.部门审批) + { + return UserContext.Current.UserInfo.DeptId; + } + //按用户审批 + return UserContext.Current.UserId; + + } + } +} diff --git "a/.Net6\347\211\210\346\234\254/VOL.WebApi/Controllers/System/Partial/Sys_WorkFlowStepController.cs" "b/.Net6\347\211\210\346\234\254/VOL.WebApi/Controllers/System/Partial/Sys_WorkFlowStepController.cs" new file mode 100644 index 000000000..6191e3e35 --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.WebApi/Controllers/System/Partial/Sys_WorkFlowStepController.cs" @@ -0,0 +1,33 @@ +/* + *接口编写处... +*如果接口需要做Action的权限验证,请在Action上使用属性 +*如: [ApiActionPermission("Sys_WorkFlowStep",Enums.ActionPermissionOptions.Search)] + */ +using Microsoft.AspNetCore.Mvc; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.AspNetCore.Http; +using VOL.Entity.DomainModels; +using VOL.System.IServices; + +namespace VOL.System.Controllers +{ + public partial class Sys_WorkFlowStepController + { + private readonly ISys_WorkFlowStepService _service;//访问业务代码 + private readonly IHttpContextAccessor _httpContextAccessor; + + [ActivatorUtilitiesConstructor] + public Sys_WorkFlowStepController( + ISys_WorkFlowStepService service, + IHttpContextAccessor httpContextAccessor + ) + : base(service) + { + _service = service; + _httpContextAccessor = httpContextAccessor; + } + } +} diff --git "a/.Net6\347\211\210\346\234\254/VOL.WebApi/Controllers/System/Partial/Sys_WorkFlowTableController.cs" "b/.Net6\347\211\210\346\234\254/VOL.WebApi/Controllers/System/Partial/Sys_WorkFlowTableController.cs" new file mode 100644 index 000000000..cb1772bd9 --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.WebApi/Controllers/System/Partial/Sys_WorkFlowTableController.cs" @@ -0,0 +1,33 @@ +/* + *接口编写处... +*如果接口需要做Action的权限验证,请在Action上使用属性 +*如: [ApiActionPermission("Sys_WorkFlowTable",Enums.ActionPermissionOptions.Search)] + */ +using Microsoft.AspNetCore.Mvc; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.AspNetCore.Http; +using VOL.Entity.DomainModels; +using VOL.System.IServices; + +namespace VOL.System.Controllers +{ + public partial class Sys_WorkFlowTableController + { + private readonly ISys_WorkFlowTableService _service;//访问业务代码 + private readonly IHttpContextAccessor _httpContextAccessor; + + [ActivatorUtilitiesConstructor] + public Sys_WorkFlowTableController( + ISys_WorkFlowTableService service, + IHttpContextAccessor httpContextAccessor + ) + : base(service) + { + _service = service; + _httpContextAccessor = httpContextAccessor; + } + } +} diff --git "a/.Net6\347\211\210\346\234\254/VOL.WebApi/Controllers/System/Partial/Sys_WorkFlowTableStepController.cs" "b/.Net6\347\211\210\346\234\254/VOL.WebApi/Controllers/System/Partial/Sys_WorkFlowTableStepController.cs" new file mode 100644 index 000000000..9f9d6e1df --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.WebApi/Controllers/System/Partial/Sys_WorkFlowTableStepController.cs" @@ -0,0 +1,33 @@ +/* + *接口编写处... +*如果接口需要做Action的权限验证,请在Action上使用属性 +*如: [ApiActionPermission("Sys_WorkFlowTableStep",Enums.ActionPermissionOptions.Search)] + */ +using Microsoft.AspNetCore.Mvc; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.AspNetCore.Http; +using VOL.Entity.DomainModels; +using VOL.System.IServices; + +namespace VOL.System.Controllers +{ + public partial class Sys_WorkFlowTableStepController + { + private readonly ISys_WorkFlowTableStepService _service;//访问业务代码 + private readonly IHttpContextAccessor _httpContextAccessor; + + [ActivatorUtilitiesConstructor] + public Sys_WorkFlowTableStepController( + ISys_WorkFlowTableStepService service, + IHttpContextAccessor httpContextAccessor + ) + : base(service) + { + _service = service; + _httpContextAccessor = httpContextAccessor; + } + } +} diff --git "a/.Net6\347\211\210\346\234\254/VOL.WebApi/Controllers/System/Sys_QuartzLogController.cs" "b/.Net6\347\211\210\346\234\254/VOL.WebApi/Controllers/System/Sys_QuartzLogController.cs" new file mode 100644 index 000000000..b38ddbd24 --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.WebApi/Controllers/System/Sys_QuartzLogController.cs" @@ -0,0 +1,21 @@ +/* + *代码由框架生成,任何更改都可能导致被代码生成器覆盖 + *如果要增加方法请在当前目录下Partial文件夹Sys_QuartzLogController编写 + */ +using Microsoft.AspNetCore.Mvc; +using VOL.Core.Controllers.Basic; +using VOL.Entity.AttributeManager; +using VOL.System.IServices; +namespace VOL.System.Controllers +{ + [Route("api/Sys_QuartzLog")] + [PermissionTable(Name = "Sys_QuartzLog")] + public partial class Sys_QuartzLogController : ApiBaseController + { + public Sys_QuartzLogController(ISys_QuartzLogService service) + : base(service) + { + } + } +} + diff --git "a/.Net6\347\211\210\346\234\254/VOL.WebApi/Controllers/System/Sys_QuartzOptionsController.cs" "b/.Net6\347\211\210\346\234\254/VOL.WebApi/Controllers/System/Sys_QuartzOptionsController.cs" new file mode 100644 index 000000000..337307a1c --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.WebApi/Controllers/System/Sys_QuartzOptionsController.cs" @@ -0,0 +1,21 @@ +/* + *代码由框架生成,任何更改都可能导致被代码生成器覆盖 + *如果要增加方法请在当前目录下Partial文件夹Sys_QuartzOptionsController编写 + */ +using Microsoft.AspNetCore.Mvc; +using VOL.Core.Controllers.Basic; +using VOL.Entity.AttributeManager; +using VOL.System.IServices; +namespace VOL.System.Controllers +{ + [Route("api/Sys_QuartzOptions")] + [PermissionTable(Name = "Sys_QuartzOptions")] + public partial class Sys_QuartzOptionsController : ApiBaseController + { + public Sys_QuartzOptionsController(ISys_QuartzOptionsService service) + : base(service) + { + } + } +} + diff --git "a/.Net6\347\211\210\346\234\254/VOL.WebApi/Controllers/System/Sys_WorkFlowController.cs" "b/.Net6\347\211\210\346\234\254/VOL.WebApi/Controllers/System/Sys_WorkFlowController.cs" new file mode 100644 index 000000000..b598be2c1 --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.WebApi/Controllers/System/Sys_WorkFlowController.cs" @@ -0,0 +1,21 @@ +/* + *代码由框架生成,任何更改都可能导致被代码生成器覆盖 + *如果要增加方法请在当前目录下Partial文件夹Sys_WorkFlowController编写 + */ +using Microsoft.AspNetCore.Mvc; +using VOL.Core.Controllers.Basic; +using VOL.Entity.AttributeManager; +using VOL.System.IServices; +namespace VOL.System.Controllers +{ + [Route("api/Sys_WorkFlow")] + [PermissionTable(Name = "Sys_WorkFlow")] + public partial class Sys_WorkFlowController : ApiBaseController + { + public Sys_WorkFlowController(ISys_WorkFlowService service) + : base(service) + { + } + } +} + diff --git "a/.Net6\347\211\210\346\234\254/VOL.WebApi/Controllers/System/Sys_WorkFlowStepController.cs" "b/.Net6\347\211\210\346\234\254/VOL.WebApi/Controllers/System/Sys_WorkFlowStepController.cs" new file mode 100644 index 000000000..1b34e6b72 --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.WebApi/Controllers/System/Sys_WorkFlowStepController.cs" @@ -0,0 +1,21 @@ +/* + *代码由框架生成,任何更改都可能导致被代码生成器覆盖 + *如果要增加方法请在当前目录下Partial文件夹Sys_WorkFlowStepController编写 + */ +using Microsoft.AspNetCore.Mvc; +using VOL.Core.Controllers.Basic; +using VOL.Entity.AttributeManager; +using VOL.System.IServices; +namespace VOL.System.Controllers +{ + [Route("api/Sys_WorkFlowStep")] + [PermissionTable(Name = "Sys_WorkFlowStep")] + public partial class Sys_WorkFlowStepController : ApiBaseController + { + public Sys_WorkFlowStepController(ISys_WorkFlowStepService service) + : base(service) + { + } + } +} + diff --git "a/.Net6\347\211\210\346\234\254/VOL.WebApi/Controllers/System/Sys_WorkFlowTableController.cs" "b/.Net6\347\211\210\346\234\254/VOL.WebApi/Controllers/System/Sys_WorkFlowTableController.cs" new file mode 100644 index 000000000..057f5929e --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.WebApi/Controllers/System/Sys_WorkFlowTableController.cs" @@ -0,0 +1,21 @@ +/* + *代码由框架生成,任何更改都可能导致被代码生成器覆盖 + *如果要增加方法请在当前目录下Partial文件夹Sys_WorkFlowTableController编写 + */ +using Microsoft.AspNetCore.Mvc; +using VOL.Core.Controllers.Basic; +using VOL.Entity.AttributeManager; +using VOL.System.IServices; +namespace VOL.System.Controllers +{ + [Route("api/Sys_WorkFlowTable")] + [PermissionTable(Name = "Sys_WorkFlowTable")] + public partial class Sys_WorkFlowTableController : ApiBaseController + { + public Sys_WorkFlowTableController(ISys_WorkFlowTableService service) + : base(service) + { + } + } +} + diff --git "a/.Net6\347\211\210\346\234\254/VOL.WebApi/Controllers/System/Sys_WorkFlowTableStepController.cs" "b/.Net6\347\211\210\346\234\254/VOL.WebApi/Controllers/System/Sys_WorkFlowTableStepController.cs" new file mode 100644 index 000000000..ee468e906 --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.WebApi/Controllers/System/Sys_WorkFlowTableStepController.cs" @@ -0,0 +1,21 @@ +/* + *代码由框架生成,任何更改都可能导致被代码生成器覆盖 + *如果要增加方法请在当前目录下Partial文件夹Sys_WorkFlowTableStepController编写 + */ +using Microsoft.AspNetCore.Mvc; +using VOL.Core.Controllers.Basic; +using VOL.Entity.AttributeManager; +using VOL.System.IServices; +namespace VOL.System.Controllers +{ + [Route("api/Sys_WorkFlowTableStep")] + [PermissionTable(Name = "Sys_WorkFlowTableStep")] + public partial class Sys_WorkFlowTableStepController : ApiBaseController + { + public Sys_WorkFlowTableStepController(ISys_WorkFlowTableStepService service) + : base(service) + { + } + } +} + diff --git "a/.Net6\347\211\210\346\234\254/VOL.WebApi/Dockerfile" "b/.Net6\347\211\210\346\234\254/VOL.WebApi/Dockerfile" new file mode 100644 index 000000000..6044d6ab3 --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.WebApi/Dockerfile" @@ -0,0 +1,29 @@ +#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging. + +FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base +RUN apt-get update; apt-get install libfontconfig1 -y + +WORKDIR /app +EXPOSE 9991 + +FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build +WORKDIR /src +COPY ["VOL.WebApi/VOL.WebApi.csproj", "VOL.WebApi/"] +COPY ["VOL.System/VOL.System.csproj", "VOL.System/"] +COPY ["VOL.Core/VOL.Core.csproj", "VOL.Core/"] +COPY ["VOL.Entity/VOL.Entity.csproj", "VOL.Entity/"] +COPY ["VOL.Order/VOL.Order.csproj", "VOL.Order/"] +COPY ["VOL.AppManager/VOL.AppManager.csproj", "VOL.AppManager/"] +COPY ["VOL.Builder/VOL.Builder.csproj", "VOL.Builder/"] +RUN dotnet restore "VOL.WebApi/VOL.WebApi.csproj" +COPY . . +WORKDIR "/src/VOL.WebApi" +RUN dotnet build "VOL.WebApi.csproj" -c Release -o /app/build + +FROM build AS publish +RUN dotnet publish "VOL.WebApi.csproj" -c Release -o /app/publish + +FROM base AS final +WORKDIR /app +COPY --from=publish /app/publish . +ENTRYPOINT ["dotnet", "VOL.WebApi.dll"] \ No newline at end of file diff --git "a/.Net6\347\211\210\346\234\254/VOL.WebApi/Properties/PublishProfiles/FolderProfile.pubxml" "b/.Net6\347\211\210\346\234\254/VOL.WebApi/Properties/PublishProfiles/FolderProfile.pubxml" deleted file mode 100644 index b0a00c12d..000000000 --- "a/.Net6\347\211\210\346\234\254/VOL.WebApi/Properties/PublishProfiles/FolderProfile.pubxml" +++ /dev/null @@ -1,21 +0,0 @@ - - - - - FileSystem - FileSystem - Release - Any CPU - - True - False - netcoreapp3.1 - 4db3c91b-93fe-4937-8b58-ddd3f57d4607 - false - bin\Release\netcoreapp3.1\publish\ - False - - \ No newline at end of file diff --git "a/.Net6\347\211\210\346\234\254/VOL.WebApi/Properties/PublishProfiles/FolderProfile.pubxml.user" "b/.Net6\347\211\210\346\234\254/VOL.WebApi/Properties/PublishProfiles/FolderProfile.pubxml.user" deleted file mode 100644 index 348f8bd14..000000000 --- "a/.Net6\347\211\210\346\234\254/VOL.WebApi/Properties/PublishProfiles/FolderProfile.pubxml.user" +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - <_PublishTargetUrl>E:\jxx\Vue.NetCore\Vue.Net\VOL.WebApi\bin\Release\netcoreapp3.1\publish\ - True|2022-05-04T06:22:09.8601614Z;True|2022-05-04T14:17:58.5839043+08:00;True|2022-05-04T14:04:46.6624577+08:00;True|2022-05-04T14:01:00.7514191+08:00;True|2022-05-04T13:38:17.6611755+08:00;True|2022-05-04T12:49:24.8764268+08:00;True|2022-05-04T12:46:59.8927233+08:00;False|2022-05-04T12:46:29.9426973+08:00;True|2022-05-04T12:45:13.9857344+08:00;True|2022-05-04T12:43:20.8195741+08:00;True|2022-05-04T12:37:57.5020415+08:00; - - \ No newline at end of file diff --git "a/.Net6\347\211\210\346\234\254/VOL.WebApi/Properties/PublishProfiles/FolderProfile1.pubxml" "b/.Net6\347\211\210\346\234\254/VOL.WebApi/Properties/PublishProfiles/FolderProfile1.pubxml" new file mode 100644 index 000000000..d6e8860c6 --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.WebApi/Properties/PublishProfiles/FolderProfile1.pubxml" @@ -0,0 +1,20 @@ + + + + + false + false + true + Release + Any CPU + FileSystem + E:\jxx\Vue.NetCore\.Net6版本\VOL.WebApi\bin\Release\publish\ + FileSystem + + net6.0 + 4db3c91b-93fe-4937-8b58-ddd3f57d4607 + false + + \ No newline at end of file diff --git "a/.Net6\347\211\210\346\234\254/VOL.WebApi/Properties/PublishProfiles/FolderProfile1.pubxml.user" "b/.Net6\347\211\210\346\234\254/VOL.WebApi/Properties/PublishProfiles/FolderProfile1.pubxml.user" new file mode 100644 index 000000000..7880fa87d --- /dev/null +++ "b/.Net6\347\211\210\346\234\254/VOL.WebApi/Properties/PublishProfiles/FolderProfile1.pubxml.user" @@ -0,0 +1,10 @@ + + + + + <_PublishTargetUrl>E:\jxx\Vue.NetCore\.Net6版本\VOL.WebApi\bin\Release\publish\ + True|2022-10-24T14:40:45.0077586Z;True|2022-10-24T22:37:32.7922147+08:00;True|2022-10-24T22:36:50.7065487+08:00;True|2022-07-02T22:10:28.5826334+08:00;True|2022-07-02T22:09:31.3171940+08:00;True|2022-07-02T22:08:56.5025798+08:00;True|2022-07-02T22:07:35.2155356+08:00;True|2022-07-02T22:07:17.2683331+08:00;True|2022-06-12T22:05:47.9896084+08:00;True|2022-06-12T22:00:03.8786881+08:00;False|2022-05-28T20:01:02.6439104+08:00;True|2022-05-26T14:38:02.7866819+08:00;True|2022-05-26T14:32:56.5094864+08:00; + + \ No newline at end of file diff --git "a/.Net6\347\211\210\346\234\254/VOL.WebApi/Properties/launchSettings.json" "b/.Net6\347\211\210\346\234\254/VOL.WebApi/Properties/launchSettings.json" index f47b4f7c9..babd6e4b0 100644 --- "a/.Net6\347\211\210\346\234\254/VOL.WebApi/Properties/launchSettings.json" +++ "b/.Net6\347\211\210\346\234\254/VOL.WebApi/Properties/launchSettings.json" @@ -1,12 +1,4 @@ -{ - "iisSettings": { - "windowsAuthentication": false, - "anonymousAuthentication": true, - "iisExpress": { - "applicationUrl": "http://localhost:1309", - "sslPort": 44318 - } - }, +{ "profiles": { "IIS Express": { "commandName": "IISExpress", @@ -18,10 +10,25 @@ "VOL.WebApi": { "commandName": "Project", "launchBrowser": true, - "applicationUrl": "https://localhost:5001;http://localhost:5000", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" - } + }, + "applicationUrl": "http://localhost:9991" + }, + "Docker": { + "commandName": "Docker", + "launchBrowser": true, + "launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}", + "publishAllPorts": true, + "useSSL": true + } + }, + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "http://localhost:1309", + "sslPort": 44318 } } -} +} \ No newline at end of file diff --git "a/.Net6\347\211\210\346\234\254/VOL.WebApi/Startup.cs" "b/.Net6\347\211\210\346\234\254/VOL.WebApi/Startup.cs" index 5366dea0c..6dc42f580 100644 --- "a/.Net6\347\211\210\346\234\254/VOL.WebApi/Startup.cs" +++ "b/.Net6\347\211\210\346\234\254/VOL.WebApi/Startup.cs" @@ -19,6 +19,8 @@ using Microsoft.IdentityModel.Tokens; using Microsoft.OpenApi.Models; using Newtonsoft.Json; +using Quartz; +using Quartz.Impl; using Swashbuckle.AspNetCore.SwaggerGen; using VOL.Core.Configuration; using VOL.Core.Extensions; @@ -27,7 +29,10 @@ using VOL.Core.KafkaManager.Service; using VOL.Core.Middleware; using VOL.Core.ObjectActionValidator; +using VOL.Core.Quartz; using VOL.Core.Utilities.PDFHelper; +using VOL.Core.WorkFlow; +using VOL.Entity.DomainModels; using VOL.WebApi.Controllers.Hubs; namespace VOL.WebApi @@ -164,10 +169,17 @@ public void ConfigureServices(IServiceCollection services) services.AddSignalR(); //services.AddSingleton(typeof(IConverter), new SynchronizedConverter(new PdfTools())); //services.AddTransient(); + + services.AddHttpClient(); + Services.AddTransient(); + Services.AddSingleton(); + Services.AddSingleton(); } public void ConfigureContainer(ContainerBuilder builder) { Services.AddModule(builder, Configuration); + //初始化流程表,表里面必须有AuditStatus字段 + WorkFlowContainer.Instance.Use().Use(); } // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IWebHostEnvironment env) @@ -176,6 +188,10 @@ public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { app.UseDeveloperExceptionPage(); } + else + { + app.UseQuartz(env); + } app.UseMiddleware(); app.UseStaticFiles().UseStaticFiles(new StaticFileOptions { diff --git "a/.Net6\347\211\210\346\234\254/VOL.WebApi/Template/Page/Vue3SearchPage.html" "b/.Net6\347\211\210\346\234\254/VOL.WebApi/Template/Page/Vue3SearchPage.html" index aa9d3d80c..178cb77db 100644 --- "a/.Net6\347\211\210\346\234\254/VOL.WebApi/Template/Page/Vue3SearchPage.html" +++ "b/.Net6\347\211\210\346\234\254/VOL.WebApi/Template/Page/Vue3SearchPage.html" @@ -2,7 +2,7 @@ *Author:jxx *Contact:283591387@qq.com *代码由框架生成,任何更改都可能导致被代码生成器覆盖 - *业务请在@/extension/system/#TableName.js此处编写 + *业务请在@/extension/#folder/#TableName.js此处编写 --> diff --git a/Vol.Vue/src/views/document/log.vue b/Vol.Vue/src/views/document/log.vue index a275d181d..87e3e0339 100644 --- a/Vol.Vue/src/views/document/log.vue +++ b/Vol.Vue/src/views/document/log.vue @@ -30,8 +30,8 @@ :key="index1" > {{ list.date }} -
- {{ list.desc }} +
+ {{ list.desc }} @@ -42,2066 +42,3229 @@ export default { methods: { scrollIntoView(index) { this.active = index; - document.getElementById('i-' + index).scrollIntoView(false); + document.getElementById("i-" + index).scrollIntoView(false); } }, data() { return { active: 0, log: [ - { date: '2022.05', type: 'month' }, - { date: "202-05-08 22:51:55",desc:"增加vue3版本voltable下拉框选择只读disabled与是否显示hidden属性"}, -{ date: "202-05-08 22:50:45",desc:"增加vue3版本下拉框选项只读readonly与是否显示hidden属性"}, -{ date: "202-05-08 22:49:55",desc:"增加vue3版本明细表按钮默认hidden属性"}, -{ date: "202-05-08 22:24:47",desc:"移动端voltable组件增加单元格点击事件"}, -{ date: "202-05-08 21:58:06",desc:"修复移动端生成的页面点击跳转后不能再次点击的问题"}, -{ date: "202-05-08 21:56:54",desc:"修改移动端搜索功能图标"}, -{ date: "202-05-07 00:43:40",desc:"增加移动端下拉框搜索功能"}, -{ date: "202-05-06 23:58:06",desc:"增加vue3版本获取当前时间的通用方法"}, -{ date: "202-05-06 23:30:05",desc:"优化示例与示例"}, -{ date: "202-05-06 23:29:20",desc:"修复vue3版本错误信息重复的问题"}, -{ date: "202-05-06 23:28:45",desc:"优化vue3表单动态列宽度计算"}, -{ date: "202-05-06 00:28:59",desc:"优化移动端组件"}, -{ date: "202-05-05 23:34:53",desc:"优化列表数据显示"}, -{ date: "202-05-05 23:07:56",desc:"修改移动端级联为下拉框操作"}, -{ date: "202-05-05 21:54:25",desc:"增加vue3版本弹出框按钮默认属性disabled值"}, -{ date: "202-05-05 15:03:45",desc:"增加swagger null判断"}, -{ date: "202-05-05 14:30:21",desc:"Update mysql表结构与表数据.sql"}, -{ date: "202-05-05 11:30:32",desc:"设置signalR不开启,如果需要启用,在main.js中设置"}, -{ date: "202-05-05 11:26:02",desc:"增加vue3版本是否开启消息推送signalR属性配置"}, + { date: "2023.04", type: "month" }, + { + date: "2023-04-02 13:35:52", + desc: + "开放后台将前端查询条件转换为EF查询GetPageDataQueryFilter方法,增加查询对象属性Filter(更新文件IService.cs, ServiceBase.cs,PageDataOptions.cs)" + }, + { + date: "2023-04-02 13:32:39", + desc: "优化代码生成器本地开发兼容linux平台(by @kevin100702)" + }, + { + date: "2023-04-02 13:07:30", + desc: "修复移动端vol-form只读时图片不显示的问题(by @kingsonchan)" + }, + { + date: "2023-04-02 13:05:47", + desc: + "增加vue3版本vol-table组件数据源单元格是否启用tag标签全局配置(下拉框等单元格以tag标签显示)与增加下拉框单元格点击事件的支持(更新voltable.vue,main.js)" + }, + { + date: "2023-04-02 12:42:28", + desc: "优化vue3版本viewgrid明细表编辑默认配置" + }, + { + date: "2023-04-02 12:30:22", + desc: "增加移动端获取当前日期,日期+-,月份+-方法,见common.js" + }, + { + date: "2023-04-02 12:29:30", + desc: "增加移动端vol-form日期默认范围选择示例" + }, + { + date: "2023-04-02 12:14:27", + desc: "优化移动端vol-table默认无数据显示提示" + }, + { + date: "2023-04-02 12:13:44", + desc: "修复移动端vol-table多图显示与预览模式顺序不一致的问题" + }, + { date: "2023-03-30 01:13:38", desc: "优化后台明细表校验" }, + { + date: "2023-03-26 21:43:04", + desc: "修复移动端vol-table手动绑定datatable时数据重复的问题" + }, + { + date: "2023-03-26 21:35:41", + desc: + "修复搜狗浏览器button按钮样式问题、首页用户名与时间间距问题(更新文件index.html, index.less,index.vue)" + }, + { date: "2023-03-26 21:14:26", desc: "增加表单设置焦点,回车事件文档" }, + { + date: "2023-03-26 20:09:57", + desc: "增加dapper手动开启事务与获取datatable方法" + }, + { date: "2023.03", type: "month" }, + { date: "2023-03-20 16:40:22", desc: "增加.net6 docker配置" }, + { date: "2023-03-20 15:59:20", desc: "增加移动端表单省市区县选择示例" }, + { + date: "2023-03-20 15:54:11", + desc: + "增加移动端表单省市区县选择(2023.03.20更新components文件夹后才能使用)" + }, + { + date: "2023-03-15 11:30:31", + desc: "增加移动端自动生成页面的扫描搜索功能" + }, + { date: "2023-03-15 11:29:31", desc: "重写移动端表单搜索功能" }, + { date: "2023-03-14 15:54:20", desc: "增加alioss包引用" }, + { + date: "2023-03-13 03:25:47", + desc: "增加阿里云OSS文件上传示例及文档" + }, + { date: "2023-03-10 14:40:02", desc: "增加代码生成器异常提示" }, + { date: "2023-03-10 00:06:55", desc: "增加移动端示例" }, + { + date: "2023-03-10 00:01:21", + desc: "增加移动端volform表单区间输入功能" + }, + { + date: "2023-03-09 23:44:30", + desc: "修复移动端生成页面在小程序上日期区间查询无效的问题" + }, + { + date: "2023-03-09 23:32:29", + desc: + "Merge branch 'master' of https://github.com/cq-panda/Vue.NetCore" + }, + { + date: "2023-03-09 23:32:15", + desc: + "增加化移动端输入框扫描回车事件@input-confirm、优化日期范围样式(见示例form2.vue)" + }, + { date: "2023-03-09 11:45:33", desc: "增加登录页面进入时清除登录信息" }, + { + date: "2023-03-07 22:20:09", + desc: "修复vue3版本volform表单年月字段必填无效的问题" + }, + { date: "2023-03-02 21:15:59", desc: "增加路由示例" }, + { date: "2023-03-02 21:14:46", desc: "增加路由示例" }, + { date: "2023-03-01 14:15:44", desc: "增加移动端表单组件级联示例" }, + { date: "2023-03-01 14:13:08", desc: "增加移动端表单级联组件vol-tree" }, + { + date: "2023-03-01 14:10:57", + desc: + "Merge branch 'master' of https://github.com/cq-panda/Vue.NetCore" + }, + { date: "2023-03-01 14:10:40", desc: "增加移动端地图示例" }, + { + date: "2023-03-01 10:42:53", + desc: "修复上个版本volform组件switch标签错误的问题" + }, + { date: "2023.02", type: "month" }, + { date: "2023-02-28 00:19:01", desc: "增加代码生成对多级类库名的支持" }, + { + date: "2023-02-27 16:19:15", + desc: "增加后台指定导出列时按指定列的顺序导出" + }, + { + date: "2023-02-27 16:11:10", + desc: "Merge pull request #307 from kevin100702/master" + }, + { + date: "2023-02-27 16:07:42", + desc: "修复vue3版本volform表单重置的问题" + }, + { + date: "2023-02-25 19:47:00", + desc: + "当正在编辑,且点击到其他行时,在原编辑的行结束编辑后,触发新行的rowClick事件" + }, + { date: "2023-02-22 09:54:54", desc: "完善文档" }, + { date: "2023-02-21 22:46:25", desc: "重写移动端按钮布局" }, + { + date: "2023-02-21 22:03:19", + desc: "增加移动端表格自定义列、超链接与点击事件示例" + }, + { + date: "2023-02-21 15:43:44", + desc: "回调移动端vol-table分页行数显示" + }, + { + date: "2023-02-20 18:08:19", + desc: "增加vol-table与生成页面table自定义按钮组Dropdown示例" + }, + { date: "2023-02-20 01:24:03", desc: "完善文档" }, + { + date: "2023-02-20 01:13:31", + desc: "修复vue3版本volform组件文件只读时样式缺失的问题" + }, + { date: "2023-02-16 18:15:25", desc: "增加.net6版本定时任务配置" }, + { + date: "2023-02-15 10:09:12", + desc: "优化移动端vol-table组件加载提示" + }, + { + date: "2023-02-14 19:03:29", + desc: "调整移动端生成页面按钮默认为显示状态" + }, + { + date: "2023-02-14 19:02:19", + desc: "优化移动端vol-table刷新页面闪烁的问题" + }, + { + date: "2023-02-14 18:50:16", + desc: "增加移动端vol-table列表显示时标签宽度属性width" + }, + { date: "2023-02-14 18:49:18", desc: "优化vue2版本编辑、删除默认参数" }, + { + date: "2023-02-13 11:00:19", + desc: "增加移动端编辑框表单标签宽度属性labelWidth" + }, + { + date: "2023-02-08 13:42:20", + desc: + "Jwt解析时,不应传入Bearer 字符; 修复当更新带明细的主表时,如果主表下包含多个List属性,通过List则有可能无法正确获取明细的数据的问题(by @bulog)" + }, + + { date: "2023-02-03 18:58:53", desc: "增加or查询示例" }, + { + date: "2023-02-03 17:25:20", + desc: + "增加vue3版本代码生成器volform表单生成评分rate组件(更新前端volform.vue、builderData.js文件)" + }, + { + date: "2023-02-03 17:24:24", + desc: "集成vue3版本volform表单评分rate组件" + }, + { + date: "2023-02-03 17:14:15", + desc: "优化代码生成器日期字段表格默认宽度" + }, + { + date: "2023-02-03 17:05:55", + desc: "集成vue3版本voltable方法selectionchagned(by @kevin100702)" + }, + { + date: "2023-02-03 17:00:40", + desc: "Merge pull request #305 from kevin100702/master" + }, + { + date: "2023-02-03 16:59:32", + desc: "修复vue3版本白色主题菜单栏背景颜色没有变化的问题" + }, + { + date: "2023-02-03 16:50:06", + desc: "增加vue3版本表格Tooltip显示提示示例" + }, + { + date: "2023-02-03 16:32:51", + desc: + "修复vue3版本volform动态切换表单为只读或label显示时表单校验不正确的问题" + }, + { + date: "2023-02-03 16:31:44", + desc: "修复vue3版本编辑框打开时某些情况显示了表单校验的问题" + }, + { date: "2023-02-03 14:14:53", desc: "优化vue3版本级联递归性能" }, + { date: "2023.01", type: "month" }, + { + date: "2023-01-17 15:01:55", + desc: "修复vue3版本编辑器可能异常的问题" + }, + { date: "2023-01-17 15:00:58", desc: "修改开发版SwaggerUI" }, + { + date: "2023-01-17 09:58:51", + desc: "Merge pull request #2 from cq-panda/master" + }, + { date: "2023-01-13 14:13:25", desc: "1" }, + { + date: "2023-01-11 13:41:03", + desc: "修复vue2版本编辑器某些情况不能重置内容的问题" + }, + { + date: "2023-01-08 21:10:57", + desc: "Merge pull request #1 from cq-panda/master" + }, + { + date: "2023-01-05 16:32:42", + desc: "修复vue3版本volform组件select2数据源key没有转换的问题" + }, + { + date: "2023-01-05 16:32:00", + desc: "优化vue3版本viewgrid组件数据源复用" + }, + { + date: "2023-01-05 16:30:19", + desc: "优化vue3版本viewgrid组件数据源复用" + }, + { + date: "2023-01-04 17:47:01", + desc: "暴露selectionchagned 和 selectable" + }, + { + date: "2023-01-04 14:39:46", + desc: "修复sqldapper方法DelWithKey删除异常的问题" + }, + { date: "2023-01-04 11:11:47", desc: "完善文档" }, + { date: "2023-01-04 11:00:37", desc: "增加vue3版本v" }, + { + date: "2023-01-04 11:00:37", + desc: "增加vue3版本volform编辑器只读时以标签显示(by @ying)" + }, + { + date: "2023-01-04 10:53:43", + desc: "修复vue3版本volform下拉框搜索后不能还原的问题" + }, + { + date: "2023-01-04 10:33:10", + desc: "优化vue3版本viewgrid明细表按钮颜色可能异常的问题" + }, + { + date: "2023-01-04 10:26:39", + desc: "增加vue3版本voltable动态限定单元格只方法getDisabled" + }, + { date: "2023-01-04 10:14:45", desc: "优化上传示例" }, + { + date: "2023-01-04 10:14:17", + desc: "增加vue3版本图片上传(jpg、jpeg格式)自动压缩功能" + }, + { + date: "2023-01-04 10:06:23", + desc: "修复审批流程只有一个节点时审批异常的问题" + }, + { date: "2022.12", type: "month" }, + { + date: "2022-12-27 21:17:16", + desc: + "vol-table 添加isdisabled,传入参数row, column ,返回true表示禁用" + }, + { + date: "2022-12-26 22:38:41", + desc: "修复vue3版本voltable二级表头formatter与click无效的问题" + }, + { + date: "2022-12-26 03:29:39", + desc: "修复vue3版本编辑类型为switch时会影响查询类型的问题" + }, + { + date: "2022-12-26 02:37:20", + desc: "修复vue3版本volform密码输框异常的问题" + }, + { date: "2022-12-26 02:36:01", desc: "增加数据源bigint类型的支持" }, + { + date: "2022-12-26 02:33:25", + desc: "增加vue3版本voltable组件数据源加载完成后的方法dicInited" + }, + { + date: "2022-12-26 02:32:59", + desc: "增加vue3版本volform组件数据源加载完成后的方法dicInited" + }, + { + date: "2022-12-26 02:24:42", + desc: "修复审批流程下一个审批人参数错误的问题" + }, + { date: "2022-12-17 16:54:51", desc: "优化移动端首页" }, + { + date: "2022-12-17 16:52:38", + desc: "优化移动端vol-table组件自定义按钮" + }, + { + date: "2022-12-15 16:25:30", + desc: "修复vue3版本vol-table time组件无效的问题" + }, + { + date: "2022-12-13 20:22:14", + desc: "修改mysql批量写入可能异常的问题(by @bulog )" + }, + { + date: "2022-12-12 21:24:22", + desc: "fix(Database): 修复MySQL批量插入只能插入一条数据的Bug(by @Ady)" + }, + { + date: "2022-12-02 00:09:36", + desc: "修复vue3版本级联组件超过500个选项时value转换的问题" + }, + + { date: "2022.11", type: "month" }, + { + date: "2022-11-22 12:03:21", + desc: "修复volform表单验证回调方法异常没有提示信息的问题" + }, + { date: "2022-11-21 01:50:38", desc: "完善文档" }, + { + date: "2022-11-21 01:39:25", + desc: + "增加dapper同时连接多个数据库(更新DBServerProvider.cs,具体见说明:partial->DBServerProvider.cs)" + }, + { + date: "2022-11-21 01:08:04", + desc: "增加导入下拉多选值的支持(更新EPPlusHelper.cs)" + }, + { + date: "2022-11-21 00:54:42", + desc: + "优化后台默认导出数量限制规则(更新ServiceFunFilter.cs、ServiceBase.cs)" + }, + { + date: "2022-11-21 00:49:31", + desc: "优化vue3版本voltable、volform组件time类型" + }, + { date: "2022-11-21 00:29:43", desc: "移除voltable中的tag无效属性" }, + { date: "2022-11-21 00:26:45", desc: "增加审核时审核状态选择判断" }, + { date: "2022-11-21 00:21:32", desc: "增加node版本18以上启动异常说明" }, + { date: "2022-11-19 11:35:49", desc: "优化.net6版本启动命令" }, + { date: "2022-11-17 15:08:32", desc: "移除H5项目,使用vol.uniapp开发" }, + { date: "2022-11-08 19:14:11", desc: "优化移动端底部图标" }, + { + date: "2022-11-08 15:42:50", + desc: + "修复移动端volform下拉框选择部分苹果手机不兼容的问题,重新开放下拉框搜索功能" + }, + { + date: "2022-11-07 14:08:25", + desc: "修复vue3版本base64图片可能不显示的问题" + }, + { + date: "2022-11-04 14:18:37", + desc: "重写部份vue3版本自定义表单与table示例" + }, + { date: "2022-11-04 10:26:56", desc: "优化vue3版本示例页面" }, + { + date: "2022-11-03 09:51:21", + desc: "增加移动端vol-table列表显示时formatter与click方法" + }, + { date: "2022-11-03 09:49:46", desc: "修复移动端删除按钮无效的问题" }, + { + date: "2022-11-02 14:26:27", + desc: "修复vue3版本select2组件属性读取错误的问题" + }, + { date: "2022.10", type: "month" }, + { + date: "2022-10-31 02:00:12", + desc: "集成el-select-v2组件解决下拉框数据源多过时卡顿的问题" + }, + { + date: "2022-10-31 00:42:15", + desc: "增加vue3版本volform下拉框选中事件返回第二个参数" + }, + { + date: "2022-10-31 00:38:04", + desc: "优化vue3版本volform组件图片与其他标签的样式" + }, + { + date: "2022-10-31 00:30:01", + desc: + "修复vue3版本VolElementMenuChild.vue组件三级菜单启用不显示功能无效的问题" + }, + { date: "2022-10-31 00:18:25", desc: "移除sqldapper中不用属性" }, + { date: "2022-10-31 00:16:17", desc: "优化后台登陆方法异常提示信息" }, + { + date: "2022-10-31 00:01:41", + desc: "修复linux下验证码字体可能不显示的问题(by @adminoryuan )" + }, + { date: "2022-10-24 22:44:08", desc: "调整.net6输出目录路径" }, + { + date: "2022-10-24 03:01:24", + desc: "修复vue3版本下拉框多选二次打开异常的问题" + }, + { + date: "2022-10-24 02:58:57", + desc: "修复导出列某些情况可能与表格界面顺序不一致的问题" + }, + { + date: "2022-10-23 03:34:47", + desc: "[update] 关于ubantu20.0 环境下,验证码字体失效的改进" + }, + { date: "2022-10-19 17:20:05", desc: "优化移动端voltable高度值判断" }, + { + date: "2022-10-19 17:07:48", + desc: + "Merge branch 'master' of https://github.com/cq-panda/Vue.NetCore" + }, + { + date: "2022-10-19 17:01:13", + desc: "修复viewgrid事件rowclick异常的问题" + }, + { date: "2022-10-18 17:26:28", desc: "增加移动端表单按钮示例" }, + { + date: "2022-10-18 00:59:48", + desc: "优化移动端volform表单属性extra与图标" + }, + { date: "2022-10-18 00:58:54", desc: "完善文档" }, + { + date: "2022-10-18 00:52:11", + desc: + "Merge branch 'master' of https://github.com/cq-panda/Vue.NetCore" + }, + { + date: "2022-10-18 00:47:25", + desc: "优化移动端volform表单extra属性与图标" + }, + { + date: "2022-10-17 04:17:28", + desc: + "增加移动端vol-table、生成页面viewgrid合计功能(目前只对配置属性this.direction='horizontal'表格显示生效)" + }, + { date: "2022-10-17 02:57:28", desc: "优化移动端高度计算规则" }, + { + date: "2022-10-17 02:01:17", + desc: "优化移动端volform下拉框选择样式与暂时屏蔽搜索功能" + }, + { + date: "2022-10-17 01:55:04", + desc: "增加移动端volform富文本编辑器内容显示" + }, + { + date: "2022-10-17 01:54:46", + desc: "增加移动端voltable富文本编辑器内容显示" + }, + { + date: "2022-10-17 01:49:01", + desc: + "修复代码生成器mysql8.x版本默认字段顺序显示与数据库表不一致的问题" + }, + { + date: "2022-10-17 01:39:21", + desc: "移除代码生成器表名首字母强制大写" + }, + { + date: "2022-10-11 15:10:11", + desc: "修复vue3版本voltable属性extra无效的问题" + }, + { date: "2022-10-11 12:00:22", desc: "优化异常信息提示" }, + { date: "2022-10-07 22:34:01", desc: "完善文档" }, + { date: "2022-10-07 22:33:17", desc: "增加移动端base64图片的支持" }, + { + date: "2022-10-07 21:46:16", + desc: + "Merge branch 'master' of https://github.com/cq-panda/Vue.NetCore" + }, + { + date: "2022-10-07 21:43:52", + desc: "优化vue3版本volform年月默认选中的格式" + }, + { + date: "2022-10-07 21:36:49", + desc: "集成vue3版本voltable选中行高亮显示属性 highlight-current-row" + }, + { + date: "2022-10-07 21:31:02", + desc: "增加vue3版本明细表添加行自动结束编辑状态" + }, + { date: "2022-10-07 21:26:34", desc: "增加开发环境中间件异常信息返回" }, + { + date: "2022-10-07 21:01:36", + desc: "增加自定义上传文件路径UploadFolder" + }, + { date: "2022-10-07 20:49:04", desc: "优化批量获取model实体" }, + { + date: "2022-10-07 20:41:57", + desc: "修复自定义列显示与代码生成器不同步的问题" + }, + { date: "2022.09", type: "month" }, + { + date: "2022-09-30 16:14:48", + desc: "修复移动端view-grid不能复用的问题" + }, + { date: "2022-09-28 18:39:08", desc: "1" }, + { date: "2022-09-28 18:35:36", desc: "优化移动端组件" }, + { + date: "2022-09-28 17:42:35", + desc: "修复移动端异步权限与组件渲染不同步的问题" + }, + { date: "2022-09-26 22:04:30", desc: "完善文档" }, + { date: "2022-09-26 22:01:38", desc: "增加移动端示例审批权限判断" }, + { + date: "2022-09-26 02:34:34", + desc: + "增加移动端审批操作(见小程序演示环境:主从表页面,代码见SellOrder文件夹)" + }, + { date: "2022-09-26 01:07:17", desc: "调整移动端vol-form字段居右显示" }, + { date: "2022-09-26 00:28:16", desc: "修复定时任务点执行无效的问题" }, + { date: "2022-09-26 00:15:05", desc: "增加vue3版本自定义导出文件名" }, + { + date: "2022-09-12 20:39:32", + desc: "优化vue3版本voltable合计小数位数(默认两次)" + }, + { date: "2022-09-12 20:32:37", desc: "优化vue3版本下拉框选择" }, + { date: "2022-09-12 20:14:35", desc: "vue3版本volform组件增加ref属性" }, + { + date: "2022-09-12 19:14:50", + desc: "集成vue3版本弹出框拖拽功能draggable" + }, + { date: "2022-09-12 19:02:54", desc: "修复vue3版本单词拼写错误的问题" }, + { date: "2022-09-12 18:24:26", desc: "优化vue3版本弹出框标题显示" }, + { + date: "2022-09-12 02:16:05", + desc: "修复移动端小程序上自定义格式无效的问题" + }, + { + date: "2022-09-12 00:13:06", + desc: "优化移动端vol-table高度计算与列表显示样式" + }, + { date: "2022-09-09 18:00:01", desc: "修复审批提示数据变化的问题" }, + { date: "2022-09-09 17:58:41", desc: "重写vue3版本权限页面" }, + { date: "2022-09-08 19:28:30", desc: "更新数据库脚本" }, + { date: "2022-09-07 17:15:59", desc: "Update DateTimeHelper.cs" }, + { date: "2022-09-07 14:30:57", desc: "增加定时任务Quartz.Net" }, + { date: "2022-09-07 09:51:26", desc: "更新数据库脚本" }, + { + date: "2022-09-07 02:10:02", + style: "color:red", + desc: ` +
集成定时任务Quartz,更新文件:
+ +
1、数据库表(db文件夹中找)Sys_QuartzLog、Sys_QuartzOptions
+
将两张表生成代码(生成代码时类库选择system,文件夹输入Quartz) ;
+ +
配置文件:appsettings.json中增加QuartzAccessKey属性
- { date: "202-05-04 12:14:59",desc:"优化登陆密码判断方式"}, -{ date: "202-05-03 11:42:38",desc:"完善文档"}, -{ date: "202-05-03 11:41:43",desc:"优化vue3版本权限分配页面区分app菜单"}, -{ date: "202-05-03 11:41:03",desc:"优化vue2版本权限分配页面区分app菜单"}, -{ date: "202-05-03 11:13:08",desc:"增加vue3版本volform输入框inputStyle属性"}, -{ date: "202-05-03 10:56:33",desc:"增加vue3版本voltable组件textarea编辑类型"}, -{ date: "202-05-03 10:46:14",desc:"移除多余设置默认值的操作"}, -{ date: "202-05-03 10:36:37",desc:"优化移动端权限名不区分大小写"}, -{ date: "202-05-03 10:33:18",desc:"优化移动端保存前方法"}, -{ date: "202-05-03 10:31:50",desc:"增加移动端表单组件ref属性"}, -{ date: "202-05-03 10:29:44",desc:"屏蔽代码生成器生成dto功能"}, -{ date: "202-05-03 03:50:26",style:"font-size:14px;color:red;",desc:"vue3版本集成signalR(消息推送)",desc:`

vue3版本集成signalR(消息推送),更新文件:

-

package.json、router/index.js、views/index.vue、views/Home.vue、views/index/index.less、Startup.cs、appsettings.json、

Hubs/HomePageMessageHub.cs、views/index文件夹、views/signalR/Index.vue`}, +
2、后台:Vol.Core 类型下Filters、Quartz文件夹、Startup.cs、
+
System 类库下Quartz文件夹;
+
VOL.WebApi 类库下System->Partial->Sys_QuartzOptionsController.cs;
+ +
3、前端:extension->system文件夹下quartz;
+ +
4、增加菜单页面菜单
- { date: '2022.04', type: 'month' }, - { date: "202-04-25 01:27:35",desc:"优化vol-table组件null显示"}, -{ date: "202-04-25 01:11:12",desc:"修复vol-form组件日期在小程序真机上默认值异常的问题,集成日期最大值与最小值"}, -{ date: "202-04-22 20:09:21",desc:"提供sqlserver开发版最新脚本"}, -{ date: "202-04-22 15:58:45",desc:"调整kafka注入方式 解决生产者在控制器或Service里面无法调用问题"}, -{ date: "202-04-21 00:20:36",desc:"修复表单小程序上获取不到不文件名的问题"}, -{ date: "202-04-20 23:20:53",desc:"完善uniapp组件"}, -{ date: "202-04-20 01:31:55",desc:"增加uniapp示例"}, -{ date: "202-04-22 10:45:10",desc:"修改swaggerUI界面,查看方式更直观,同时接口可复制为MD文档格式"}, -{ date: "202-04-18 21:12:48",desc:"设置级联组件为下拉框展示"}, -{ date: "202-04-18 01:29:07",desc:"设置uniapp http.js默认开发请求信息"}, -{ date: "202-04-18 01:24:03",desc:"增加菜单区分uniapp与PC显示"}, - { date: "2022-04-17 22:28:14",desc:"增加uniapp表单自定义placeholder属性"}, - { date: "2022-04-17 22:27:37",desc:"修复uniapp表单字段为图片时没有初始化上传地址的问题"}, - { date: "2022-04-17 21:58:21",desc:"增加代码生器partial实体生成,需要更新DomainModel.html、Sys_TableInfoService.cs"}, - { date: "2022-04-17 21:26:58",desc:"增加vue3版本设置textInline属性后表头也可以自动换行"}, - { date: "2022-04-17 21:05:48",desc:"增加vue3版本voltable中tag属性effect"}, - { date: "2022-04-17 20:56:30",desc:"优化vue2版本volform表单onChange判断"}, - { date: "2022-04-17 20:27:12",desc:"增加vue3版本动态控制明细表是否显示"}, - { date: "2022-04-17 20:26:55",desc:"增加vue2版本动态控制明细表是否显示"}, - { date: "2022-04-17 20:15:29",desc:"优化vue3版本重新加载数据源"}, - { date: "2022-04-17 20:15:10",desc:"优化vue2版本重新加载数据源"}, - { date: "2022-04-13 21:33:20",desc:"优化vue3版本voltable样式"}, - { date: "2022-04-13 00:01:32",desc:"优化vue3版本表单只读验证"}, - { date: "2022-04-11 21:31:54",desc:"增加vue3版本编辑器自定义上传的实现"}, - { date: "2022-04-11 21:26:59",desc:"移除后台上传文件大小限制"}, - { date: "2022-04-10 23:30:11",desc:"优化vue3版本菜单收缩后文字颜色显示"}, - { date: "2022-04-07 01:10:10",desc:"完善文档"}, - { date: "2022-04-06 23:57:53",desc:"优化vue3版本table合计固定列显示"}, - { date: "2022-04-06 13:47:35",desc:"修复移动端searchAfter参数错误的问题"}, - { date: "2022-04-06 00:27:13",desc:"优化vue3版本volform只读字段不验证必填"}, - { date: "20222-04-05 20:59:48",desc:"完善文档"}, - { date: "20222-04-05 20:53:15",desc:"优化vue3版本表单textarea字体"}, - { date: "20222-04-04 14:44:44",desc:"增加vue3版本字典加载完成后的方法dicInited"}, - { date: "20222-04-04 14:44:31",desc:"增加vue2版本字典加载完成后的方法dicInited"}, - { date: "20222-04-04 14:36:27",desc:"修复vue3版本级联刷新数据源后table的数据源没有刷新的问题"}, - { date: "20222-04-04 14:35:29",desc:"修复vue2版本级联刷新数据源后table的数据源没有刷新的问题"}, - { date: "20222-04-01 23:27:54",desc:"完善文档"}, - { date: '2022.03', type: 'month' }, - { date: "20222-03-31 22:49:49",desc:"优化代码生成器路径保存方式"}, - { date: "2022-03-27 13:36:10", desc: "完善文档"}, - { date: "2022-03-27 12:05:16", desc: "初始化uniapp项目"}, - { date: "2022-03-27 12:01:50",style:"font-size:14px;color:red;", - desc: `

增加移动端支持、安卓、ios、h5、微信小程序(uniapp),更新文件:

+
5、增加数据字典:下拉框绑定设置中添加数据字典:参照现有字典配置:请求方式
+ +` + }, + { date: "2022-09-07 02:01:31", desc: "优化代码生成器默认编辑行" }, + { date: "2022-09-03 10:14:23", desc: "完善移动端vol-table示例" }, + { date: "2022.08", type: "month" }, + { + date: "2022-08-29 04:32:06", + desc: + "增加审批流程回退功能,更新文件:ServiceBase.cs、WorkFlowManager.cs、Sys_WorkFlowController.cs、前端viewgrid文件夹(回退使用方法见后台开发文档上审批方法)" + }, + { + date: "2022-08-29 02:11:03", + desc: "优化vue3版本table编辑时数据源类型判断" + }, + { + date: "2022-08-29 01:45:31", + desc: "优化vue3版本审批时隐藏弹出框其他按钮" + }, + { + date: "2022-08-29 01:35:33", + desc: "优化vue3版本表单编辑为函数时提交自动计算结果" + }, + { + date: "2022-08-29 01:29:53", + desc: "修复vue3版本升级后白色与黑色主题颜色显示异常的问题" + }, + { date: "2022-08-29 01:09:52", desc: "优化登陆页字体大小" }, + { + date: "2022-08-29 01:07:11", + desc: "修复vue3版本升级后更多按钮图标不显示的问题" + }, + { + date: "2022-08-24 21:33:53", + desc: + "Merge branch 'master' of https://github.com/cq-panda/Vue.NetCore" + }, + { date: "2022-08-24 21:32:19", desc: "优化移动端权限加载顺序" }, + { + date: "2022-08-22 21:33:00", + desc: "优化vue3版本表单类型为number时的默认值" + }, + { date: "2022-08-22 21:23:07", desc: "优化vue3版本select多选显示" }, + { date: "2022-08-22 21:09:40", desc: "优化用户表新建或修改提示信息" }, + { + date: "2022-08-22 21:00:23", + desc: "优化vue3版本voltable默认显示滚动条" + }, + { + date: "2022-08-22 20:46:55", + desc: "优化vue3版本菜单与上传组件图标显示" + }, + { date: "2022-08-22 20:43:34", desc: "优化弹出框高度自适应" }, + { date: "2022-08-22 20:35:02", desc: "优化文件上传默认大小" }, + { + date: "2022-08-22 01:35:31", + style: "color:red", + desc: ` +
升级element plus正式版本2.2.14及vue版本3.2.37,更新方式(先升级2022.08.15的更新说明,不更新会影响审批功能):
+
1、使用cmd命令切换到Vol.Vue3版本目录下,分别执行这4个命令
+
npm install vue@3.2.37 --force
+
npm uninstall element-plus
+
npm install element-plus --save
+
npm cache clear --force
+ +
2、前端更新文件
+
public->index.html
+
App.vue
+
QuickSearch.vue
+
ViewGrid.vue
+
VolElementMenu.vue
+
VolElementMenuChild.vue
+
VolTable.vue
+
VolForm.vue
+
main.js
+
vue.config.js
+
index.vue 第388行代码位置: const selectNav = (item) => {
+
assets->element-icon文件夹,(新增加的字段文件)
+ + + + ` + }, + { date: "2022-08-22 01:33:45", desc: "优化用户新建与删除提示" }, + { date: "2022-08-22 01:33:07", desc: "增加.net6版本审批流程" }, + { date: "2022-08-19 16:35:08", desc: "更新mysql脚本" }, + { date: "2022-08-18 02:38:58", desc: "更新sqlserver脚本" }, + { date: "2022-08-18 02:17:52", desc: "调整审核类型显示" }, + { date: "2022-08-18 01:43:35", desc: "优化审批人显示" }, + { + date: "2022-08-17 22:53:15", + desc: + "增加发邮件功能:更新MailHelper.cs、appsettings.json(最后面的Mail配置)" + }, + { + date: "2022-08-17 00:16:20", + desc: "增加点击我的审批时自动跳转弹出审批信息页面" + }, + { + date: "2022-08-16 23:26:38", + desc: "优化vue3版本http.js文件强制url地址以/结尾" + }, + { + date: "2022-08-16 23:22:53", + desc: "增加vue3版本明细表内容超出换行显示属性" + }, + { + date: "2022-08-16 23:14:37", + desc: "优化vue3版本table事件点击上下文指向" + }, + { + date: "2022-08-16 23:13:52", + desc: "修复vue3版本首页index.vue导航右键功能浏览器兼容的问题" + }, + { date: "2022-08-16 23:12:28", desc: "完善文档" }, + { date: "2022-08-16 23:11:19", desc: "优化代码生成器模板" }, + { + date: "2022-08-16 22:44:39", + desc: + "集成vue3版本voltable组件列属性showOverflowTooltip(当内容过长被隐藏时显示 tooltip)" + }, + { + date: "2022-08-16 22:39:11", + desc: "增加vue3版本主表在线表格编辑前方法拦截" + }, + { date: "2022-08-16 02:07:44", desc: "增加mysql审批流程表结构" }, + { + date: "2022-08-16 01:56:59", + desc: "完善审批流程,增加角色、部门审批功能" + }, + { + date: "2022-08-16 01:52:47", + desc: "优化sqldapper批量写入mysql数据库" + }, + { date: "2022-08-15 05:17:49", desc: "增加流程示例" }, + { + date: "2022-08-15 04:08:46", + desc: "修复移动端安卓真机类型错误的问题" + }, + { + date: "2022-08-15 04:06:17", + desc: "修复移动端图片上传权限异常的问题" + }, + { + date: "2022-08-15 04:03:46", + style: "color:red", + desc: `增加审批流程功能,更新代码: +

1、 数据库更新:更新db文件夹中表结构Sys_WorkFlow、Sys_WorkFlowStep、Sys_WorkFlowTable、Sys_WorkFlowTableStep这4张表;
       同时生成代码(代码生成时类库选择system,文件夹名flow)

+

数据库脚本地址https://gitee.com/x_discoverer/Vue.NetCore/tree/master/DB

+

2、VOL.Core类库全部更新替换覆盖

+

3、后台:UserInfo.cs、Sys_WorkFlowController.cs、Sys_WorkFlowService.cs

+

4、流程注入见后台代码:Startup.cs中ConfigureContainer方法说明

+

5、前端更新文件夹:components、extension->system->flow文件夹

+

6、其他遗漏或详细补充见视频

+ ` + }, + { date: "2022.07", type: "month" }, + + { date: "2022-07-30 11:16:55", desc: "移除.net6版本过时代码" }, + { date: "2022-07-25 02:45:15", desc: "增加审批流程(审批逻辑待完)" }, + { date: "2022-07-20 00:17:15", desc: "优化移动端下拉框默认值显示" }, + { date: "2022-07-18 02:55:25", desc: "完善文档" }, + { + date: "2022-07-18 02:01:05", + desc: "修复vue3版本voltable组件编辑格式为年月日时格式显示不正确的问题" + }, + { + date: "2022-07-18 01:44:37", + desc: "增加vue3版本代码生成器排序字段说明" + }, + { + date: "2022-07-18 01:40:23", + desc: "修复自定义权限判断大小写判断错误的问题" + }, + { + date: "2022-07-18 01:39:47", + desc: + "增加默认多字段排序功能(多个字段逗号隔开),更新文件ServiceBase.cs" + }, + { + date: "2022-07-18 01:18:19", + desc: "修复vue3版本volform邮箱类型验证不正确的问题" + }, + { + date: "2022-07-18 00:57:40", + desc: "修复vue3版本volform密码输入框类型错误的问题" + }, + { + date: "2022-07-13 00:14:34", + desc: "优化主从表不再要求主从表的主键字段类型一致" + }, + { + date: "2022-07-13 00:11:49", + desc: + "修复vue3版本vol-table编辑时下拉框多选key、value不一致没有正确转换的问题" + }, + { + date: "2022-07-13 00:10:18", + desc: "修复明细表修改时修改人信息没有更新的问题" + }, + { date: "2022-07-12 23:23:06", desc: "同步mysql与pgsql数据库脚本" }, + { + date: "2022-07-12 23:19:19", + desc: "修复pgsql数据库批量写入异常的问题" + }, + { date: "2022-07-12 23:16:45", desc: "优化反射代码注入" }, + { date: "2022-07-05 01:36:39", desc: "优化通用excel导出方法" }, + { date: "2022-07-05 00:11:00", desc: "移除vue3版本中的错误代码" }, + { date: "2022.06", type: "month" }, + { + date: "2022-06-28 22:26:55", + desc: "修复vue3版本vol-table数据源某些条件下类型判断错误的问题" + }, + { date: "2022-06-27 01:02:05", desc: "完善文档" }, + + { + date: "2022-06-27 00:53:54", + desc: "增加vue3版本vol-table表格编辑多选的支持" + }, + { + date: "2022-06-27 00:36:21", + desc: "修复vue3版本this.$tabs打开选择卡后二次切换参数可能丢失的问题" + }, + { date: "2022-06-27 00:25:06", desc: "增加移动端示例" }, + { + date: "2022-06-27 00:13:07", + desc: "增加通用下载文件(excel)方法this.http.download()说明" + }, + { + date: "2022-06-27 00:07:44", + desc: "增加移动端vol-table图片预览功能" + }, + { + date: "2022-06-26 23:54:14", + desc: "修复移动端在安卓上传图片某些情况不能解析的问题" + }, + { + date: "2022-06-26 23:28:59", + desc: + "修复vue3版本vol-table组件表格内容切换后行数不一致时不能编辑的问题" + }, + { + date: "2022-06-26 23:24:45", + desc: "修复sqldapper异步执行时没有区分数据库类型的问题" + }, + { date: "2022-06-26 23:19:31", desc: "屏蔽kafka代码" }, + { date: "2022-06-20 02:51:15", desc: "增加vue3版本通用导出方法" }, + { date: "2022-06-20 02:12:42", desc: "优化vue3版本time选择日期格式" }, + { + date: "2022-06-20 02:11:57", + desc: "增加vue3版本保存明细表时处理多选下拉框的值" + }, + { + date: "2022-06-20 01:53:16", + desc: "增加导入时读取原生excel方法(可以自定义读取excel内容)" + }, + { + date: "2022-06-20 01:51:15", + desc: "修复日志文件在小程序上异常的问题" + }, + { + date: "2022-06-20 01:36:10", + desc: "修复移动端volform日期组件日期第一次默认值不能自动选中的问题" + }, + { + date: "2022-06-20 01:31:52", + desc: "增加移动端vol-form获取焦点focus属性" + }, + { + date: "2022-06-12 23:28:26", + desc: "增加vue2版本vol-table字段必填时显示红色*号" + }, + { + date: "2022-06-12 23:27:42", + desc: "增加vue2版本固定查询条件时显示重置按钮" + }, + { + date: "2022-06-12 23:06:35", + desc: "增加vue3版本vol-table表格必填时显示红色*号" + }, + { + date: "2022-06-12 23:05:53", + desc: "修复vue3版本主从表第一次打开时执行两次查询的问题" + }, + { + date: "2022-06-12 22:39:39", + desc: "增加vue3版本vol-form集成日期组件:年月选择" + }, + { + date: "2022-06-12 22:30:07", + desc: "修复vue3版本自定义列点击取消时没有关闭的问题" + }, + { date: "2022-06-12 22:23:15", desc: "增加dockfile配置(by @3ddbz)" }, + { + date: "2022-06-12 22:21:40", + desc: "增加跨平台验证码SkiaSharp(by @3ddbz)" + }, + { + date: "2022-06-11 00:43:48", + desc: "修复移动端vol-table不能同时使用多个组件的问题" + }, + { + date: "2022-06-10 10:37:55", + desc: "修复vue3版本destroyed无效的问题" + }, + + { date: "2022.05", type: "month" }, + { + date: "2022-05-31 21:28:46", + desc: "调整生成验证码的代码以支持linux" + }, + { date: "2022-05-31 21:27:05", desc: "添加docker支持" }, + { date: "2022-05-31 11:00:36", desc: "移除开发版帐号登陆限制" }, + { + date: "2022-05-29 23:22:15", + desc: "增加vue3版本顶部菜单选项卡切换时联动左侧菜单" + }, + { + date: "2022-05-29 21:51:26", + desc: "增加通用获取递归获取所有子节点的方法" + }, + { date: "2022-05-28 02:38:17", desc: "增加vue3版本自定义列显示与顺序" }, + { + date: "2022-05-28 02:27:33", + desc: "增加vue3版本自定义列是否显示与列显示顺序" + }, + { date: "2022-05-24 12:52:29", desc: "完善文档" }, + { date: "2022-05-23 23:01:51", desc: "升级.net6 entity类库版本" }, + { + date: "2022-05-23 21:53:37", + desc: "增加删除菜单时刷新缓存与修改菜单按钮时同步刷新角色权限缓存" + }, + { + date: "2022-05-23 16:48:50", + desc: "修复vue3版本快捷查询日期无法清除的问题" + }, + { + date: "2022-05-23 12:03:24", + desc: "增加扩展方法手机号验证支持199开头" + }, + { + date: "2022-05-23 12:02:37", + desc: "修复dapper 更新方法update事务参数无效的问题" + }, + { + date: "2022-05-23 12:01:33", + desc: "修改RepositoryBase.cs中SqlParameter引用" + }, + { date: "2022-05-21 22:04:24", desc: "移除无效引用" }, + { date: "2022-05-20 19:42:21", desc: "补全vue3与移动端文档" }, + { + date: "2022-05-20 16:29:35", + desc: "修复vue3版本快捷查询为日期多选时,查询按钮被挡住的问题" + }, + { + date: "2022-05-20 15:47:00", + desc: "优化vue3版本index.vue中tabs右键关闭操作" + }, + { date: "2022-05-20 11:09:43", desc: "Update http.js" }, + { + date: "2022-05-20 09:50:18", + desc: + "增加vue3版本导航菜单tab右键关闭功能,更新文件index.less,Index.vue,VolElementMenu.vue(by p1j123456 )" + }, + { + date: "2022-05-20 09:34:27", + desc: "Merge pull request #251 from p1j123456/master" + }, + { date: "2022-05-19 22:46:41", desc: "追加tab标签右键" }, + { + date: "2022-05-11 17:58:11", + desc: "修复vue2版本结束编辑前方法行数据不正确的问题" + }, + { date: "2022-05-11 17:20:21", desc: "Update Detail.vue" }, + { date: "2022-05-11 00:54:04", desc: "完善文档" }, + { + date: "2022-05-11 00:53:32", + desc: + "增加vue3版本快捷查询支持级联、日期组件,查询只有一选项时强制隐藏高级查询" + }, + { + date: "2022-05-11 00:09:51", + desc: "增加移动端列表数据可自定义多个按钮" + }, + { date: "2022-05-11 00:08:17", desc: "增加移动端多按钮配置模板" }, + { + date: "202-05-08 22:51:55", + desc: "增加vue3版本voltable下拉框选择只读disabled与是否显示hidden属性" + }, + { + date: "202-05-08 22:50:45", + desc: "增加vue3版本下拉框选项只读readonly与是否显示hidden属性" + }, + { + date: "202-05-08 22:49:55", + desc: "增加vue3版本明细表按钮默认hidden属性" + }, + { + date: "202-05-08 22:24:47", + desc: "移动端voltable组件增加单元格点击事件" + }, + { + date: "202-05-08 21:58:06", + desc: "修复移动端生成的页面点击跳转后不能再次点击的问题" + }, + { date: "202-05-08 21:56:54", desc: "修改移动端搜索功能图标" }, + { date: "202-05-07 00:43:40", desc: "增加移动端下拉框搜索功能" }, + { + date: "202-05-06 23:58:06", + desc: "增加vue3版本获取当前时间的通用方法" + }, + { date: "202-05-06 23:30:05", desc: "优化示例与示例" }, + { date: "202-05-06 23:29:20", desc: "修复vue3版本错误信息重复的问题" }, + { date: "202-05-06 23:28:45", desc: "优化vue3表单动态列宽度计算" }, + { date: "202-05-06 00:28:59", desc: "优化移动端组件" }, + { date: "202-05-05 23:34:53", desc: "优化列表数据显示" }, + { date: "202-05-05 23:07:56", desc: "修改移动端级联为下拉框操作" }, + { + date: "202-05-05 21:54:25", + desc: "增加vue3版本弹出框按钮默认属性disabled值" + }, + { date: "202-05-05 15:03:45", desc: "增加swagger null判断" }, + { date: "202-05-05 14:30:21", desc: "Update mysql表结构与表数据.sql" }, + { + date: "202-05-05 11:30:32", + desc: "设置signalR不开启,如果需要启用,在main.js中设置" + }, + { + date: "202-05-05 11:26:02", + desc: "增加vue3版本是否开启消息推送signalR属性配置" + }, + + { date: "202-05-04 12:14:59", desc: "优化登陆密码判断方式" }, + { date: "202-05-03 11:42:38", desc: "完善文档" }, + { + date: "202-05-03 11:41:43", + desc: "优化vue3版本权限分配页面区分app菜单" + }, + { + date: "202-05-03 11:41:03", + desc: "优化vue2版本权限分配页面区分app菜单" + }, + { + date: "202-05-03 11:13:08", + desc: "增加vue3版本volform输入框inputStyle属性" + }, + { + date: "202-05-03 10:56:33", + desc: "增加vue3版本voltable组件textarea编辑类型" + }, + { date: "202-05-03 10:46:14", desc: "移除多余设置默认值的操作" }, + { date: "202-05-03 10:36:37", desc: "优化移动端权限名不区分大小写" }, + { date: "202-05-03 10:33:18", desc: "优化移动端保存前方法" }, + { date: "202-05-03 10:31:50", desc: "增加移动端表单组件ref属性" }, + { date: "202-05-03 10:29:44", desc: "屏蔽代码生成器生成dto功能" }, + { + date: "202-05-03 03:50:26", + style: "font-size:14px;color:red;", + desc: "vue3版本集成signalR(消息推送)", + desc: `

vue3版本集成signalR(消息推送),更新文件:

+

package.json、router/index.js、views/index.vue、views/Home.vue、views/index/index.less、Startup.cs、appsettings.json、

Hubs/HomePageMessageHub.cs、views/index文件夹、views/signalR/Index.vue` + }, + + { date: "2022.04", type: "month" }, + { date: "202-04-25 01:27:35", desc: "优化vol-table组件null显示" }, + { + date: "202-04-25 01:11:12", + desc: + "修复vol-form组件日期在小程序真机上默认值异常的问题,集成日期最大值与最小值" + }, + { date: "202-04-22 20:09:21", desc: "提供sqlserver开发版最新脚本" }, + { + date: "202-04-22 15:58:45", + desc: "调整kafka注入方式 解决生产者在控制器或Service里面无法调用问题" + }, + { + date: "202-04-21 00:20:36", + desc: "修复表单小程序上获取不到不文件名的问题" + }, + { date: "202-04-20 23:20:53", desc: "完善uniapp组件" }, + { date: "202-04-20 01:31:55", desc: "增加uniapp示例" }, + { + date: "202-04-22 10:45:10", + desc: "修改swaggerUI界面,查看方式更直观,同时接口可复制为MD文档格式" + }, + { date: "202-04-18 21:12:48", desc: "设置级联组件为下拉框展示" }, + { + date: "202-04-18 01:29:07", + desc: "设置uniapp http.js默认开发请求信息" + }, + { date: "202-04-18 01:24:03", desc: "增加菜单区分uniapp与PC显示" }, + { + date: "2022-04-17 22:28:14", + desc: "增加uniapp表单自定义placeholder属性" + }, + { + date: "2022-04-17 22:27:37", + desc: "修复uniapp表单字段为图片时没有初始化上传地址的问题" + }, + { + date: "2022-04-17 21:58:21", + desc: + "增加代码生器partial实体生成,需要更新DomainModel.html、Sys_TableInfoService.cs" + }, + { + date: "2022-04-17 21:26:58", + desc: "增加vue3版本设置textInline属性后表头也可以自动换行" + }, + { + date: "2022-04-17 21:05:48", + desc: "增加vue3版本voltable中tag属性effect" + }, + { + date: "2022-04-17 20:56:30", + desc: "优化vue2版本volform表单onChange判断" + }, + { + date: "2022-04-17 20:27:12", + desc: "增加vue3版本动态控制明细表是否显示" + }, + { + date: "2022-04-17 20:26:55", + desc: "增加vue2版本动态控制明细表是否显示" + }, + { date: "2022-04-17 20:15:29", desc: "优化vue3版本重新加载数据源" }, + { date: "2022-04-17 20:15:10", desc: "优化vue2版本重新加载数据源" }, + { date: "2022-04-13 21:33:20", desc: "优化vue3版本voltable样式" }, + { date: "2022-04-13 00:01:32", desc: "优化vue3版本表单只读验证" }, + { + date: "2022-04-11 21:31:54", + desc: "增加vue3版本编辑器自定义上传的实现" + }, + { date: "2022-04-11 21:26:59", desc: "移除后台上传文件大小限制" }, + { + date: "2022-04-10 23:30:11", + desc: "优化vue3版本菜单收缩后文字颜色显示" + }, + { date: "2022-04-07 01:10:10", desc: "完善文档" }, + { + date: "2022-04-06 23:57:53", + desc: "优化vue3版本table合计固定列显示" + }, + { + date: "2022-04-06 13:47:35", + desc: "修复移动端searchAfter参数错误的问题" + }, + { + date: "2022-04-06 00:27:13", + desc: "优化vue3版本volform只读字段不验证必填" + }, + { date: "20222-04-05 20:59:48", desc: "完善文档" }, + { date: "20222-04-05 20:53:15", desc: "优化vue3版本表单textarea字体" }, + { + date: "20222-04-04 14:44:44", + desc: "增加vue3版本字典加载完成后的方法dicInited" + }, + { + date: "20222-04-04 14:44:31", + desc: "增加vue2版本字典加载完成后的方法dicInited" + }, + { + date: "20222-04-04 14:36:27", + desc: "修复vue3版本级联刷新数据源后table的数据源没有刷新的问题" + }, + { + date: "20222-04-04 14:35:29", + desc: "修复vue2版本级联刷新数据源后table的数据源没有刷新的问题" + }, + { date: "20222-04-01 23:27:54", desc: "完善文档" }, + { date: "2022.03", type: "month" }, + { date: "20222-03-31 22:49:49", desc: "优化代码生成器路径保存方式" }, + { date: "2022-03-27 13:36:10", desc: "完善文档" }, + { date: "2022-03-27 12:05:16", desc: "初始化uniapp项目" }, + { + date: "2022-03-27 12:01:50", + style: "font-size:14px;color:red;", + desc: `

增加移动端支持、安卓、ios、h5、微信小程序(uniapp),更新文件:

1、数据库:ALTER TABLE Sys_Menu ADD MenuType INT

2、前端:Sys_Menu.vue、 builder文件夹

3、后台:Sys_Menu.cs、Sys_TableInfoController.cs、Sys_TableInfoService.cs、ISys_TableInfoService.cs、

-

ApiAuthorizeFilter.cs、UserContext.cs、JwtHelper.cs、Permissions.cs、Sys_MenuService.cs、BuilderController.cs、Startup.cs、Template文件夹

`}, - { date: "2022-03-26 17:11:36", desc: "修复编辑器不能换行的问题"}, - { date: "2022-03-26 00:35:06", desc: "增加vue3版本title修改"}, - { date: "2022-03-24 22:16:13", desc: "修复vue3版本表单字段为number时+-默认不生效的问题"}, - { date: "2022-03-24 21:49:27", desc: "优化vue2版本登录页面"}, - { date: "2022-03-24 21:49:10", desc: "修复vue2版本编辑器某些情况不能设置值的问题"}, - { date: "2022-03-24 21:48:45", desc: "修复vue3版本编辑器某些情况不能设置值的问题"}, +

ApiAuthorizeFilter.cs、UserContext.cs、JwtHelper.cs、Permissions.cs、Sys_MenuService.cs、BuilderController.cs、Startup.cs、Template文件夹

` + }, + { date: "2022-03-26 17:11:36", desc: "修复编辑器不能换行的问题" }, + { date: "2022-03-26 00:35:06", desc: "增加vue3版本title修改" }, + { + date: "2022-03-24 22:16:13", + desc: "修复vue3版本表单字段为number时+-默认不生效的问题" + }, + { date: "2022-03-24 21:49:27", desc: "优化vue2版本登录页面" }, + { + date: "2022-03-24 21:49:10", + desc: "修复vue2版本编辑器某些情况不能设置值的问题" + }, + { + date: "2022-03-24 21:48:45", + desc: "修复vue3版本编辑器某些情况不能设置值的问题" + }, { - date: '2022-03-20 20:47:06', desc: '优化vue3版本编辑时限制只能选择一行数据提示' + date: "2022-03-20 20:47:06", + desc: "优化vue3版本编辑时限制只能选择一行数据提示" }, { - date: '2022-03-20 20:46:56', desc: '优化vue2版本编辑时限制只能选择一行数据提示' + date: "2022-03-20 20:46:56", + desc: "优化vue2版本编辑时限制只能选择一行数据提示" }, { - date: '2022-03-20 20:42:50', desc: '增加vue2版本volform表单swithc、checbox的onChange事件' + date: "2022-03-20 20:42:50", + desc: "增加vue2版本volform表单swithc、checbox的onChange事件" }, - { date: '2022-03-20 20:37:28', desc: '优化vue2版本首页头像加载判断' }, - { date: '2022-03-20 20:35:13', desc: '优化vue3版本首页头像加载判断' }, + { date: "2022-03-20 20:37:28", desc: "优化vue2版本首页头像加载判断" }, + { date: "2022-03-20 20:35:13", desc: "优化vue3版本首页头像加载判断" }, { - date: '2022-03-20 20:29:21', desc: '修复vue2版本表单编辑器的图片不能自定义高度的问题' + date: "2022-03-20 20:29:21", + desc: "修复vue2版本表单编辑器的图片不能自定义高度的问题" }, - { date: '2022-03-20 20:28:12', desc: '完善vue3版本volform只读功能' }, - { date: '2022-03-20 20:24:59', desc: '优化vue2版本登陆页面' }, + { date: "2022-03-20 20:28:12", desc: "完善vue3版本volform只读功能" }, + { date: "2022-03-20 20:24:59", desc: "优化vue2版本登陆页面" }, { - date: '2022-03-20 20:24:12', desc: '修复vue2版本表单编辑器的图片不能自定义高度的问题' + date: "2022-03-20 20:24:12", + desc: "修复vue2版本表单编辑器的图片不能自定义高度的问题" }, - { date: '2022-03-15 23:56:31', desc: '增加扩展js模板默认方法' }, - { date: '2022-03-14 01:40:12', desc: '优化日志文件' }, - { date: '2022-03-14 01:39:11', desc: '优化表单示例' }, + { date: "2022-03-15 23:56:31", desc: "增加扩展js模板默认方法" }, + { date: "2022-03-14 01:40:12", desc: "优化日志文件" }, + { date: "2022-03-14 01:39:11", desc: "优化表单示例" }, { - date: '2022-03-14 01:38:54', desc: '修复vue3版本http.js中get方法自定义header无效的问题' + date: "2022-03-14 01:38:54", + desc: "修复vue3版本http.js中get方法自定义header无效的问题" }, { - date: '2022-03-14 01:38:32', desc: '修复vue2版本http.js中get方法自定义header无效的问题' + date: "2022-03-14 01:38:32", + desc: "修复vue2版本http.js中get方法自定义header无效的问题" }, { - date: '2022-03-14 01:37:45', desc: '增加vue3版本表单级联数据源自动转换功能' + date: "2022-03-14 01:37:45", + desc: "增加vue3版本表单级联数据源自动转换功能" }, { - date: '2022-03-14 01:37:29', desc: '增加vue2版本表单级联数据源自动转换功能' + date: "2022-03-14 01:37:29", + desc: "增加vue2版本表单级联数据源自动转换功能" }, - { date: '2022-03-08 22:56:35', desc: '增加vue2版本npm install.bat' }, + { date: "2022-03-08 22:56:35", desc: "增加vue2版本npm install.bat" }, { - date: '2022-03-03 00:28:42', desc: '优化代码生成器sqlserver数据库nvarchar长度判断' + date: "2022-03-03 00:28:42", + desc: "优化代码生成器sqlserver数据库nvarchar长度判断" }, - { date: '2022-03-03 00:28:06', desc: '添加vs警告配置' }, - { date: '2022.02', type: 'month' }, + { date: "2022-03-03 00:28:06", desc: "添加vs警告配置" }, + { date: "2022.02", type: "month" }, - { date: '2022-02-27 01:45:01', desc: '优化vue3版本treetable示例' }, - { date: '2022-02-27 01:44:10', desc: '优化vue3版本treetable示例' }, - { date: '2022-02-27 01:30:55', desc: '重写vue3版本一对多的示例代码' }, - { date: '2022-02-27 01:30:42', desc: '重写vue2版本一对多的示例代码' }, + { date: "2022-02-27 01:45:01", desc: "优化vue3版本treetable示例" }, + { date: "2022-02-27 01:44:10", desc: "优化vue3版本treetable示例" }, + { date: "2022-02-27 01:30:55", desc: "重写vue3版本一对多的示例代码" }, + { date: "2022-02-27 01:30:42", desc: "重写vue2版本一对多的示例代码" }, { - date: '2022-02-27 00:14:27', desc: '优化vue3版本volform组件switch字段默认为0(否)' + date: "2022-02-27 00:14:27", + desc: "优化vue3版本volform组件switch字段默认为0(否)" }, { - date: '2022-02-26 23:47:04', desc: '增加vue2版本voltable只读readonly属性(设置后表格不能编辑),增加非编辑列点击时不再开启编辑操作' + date: "2022-02-26 23:47:04", + desc: + "增加vue2版本voltable只读readonly属性(设置后表格不能编辑),增加非编辑列点击时不再开启编辑操作" }, { - date: '2022-02-26 19:21:12', desc: '优化vue2版本表单中的编辑器为懒加载(建议更新volform组件、更新后打包体积会减少3/5、打包时间会提升3倍)' + date: "2022-02-26 19:21:12", + desc: + "优化vue2版本表单中的编辑器为懒加载(建议更新volform组件、更新后打包体积会减少3/5、打包时间会提升3倍)" }, { - date: '2022-02-20 02:39:56', - desc: '移除vue3版本voltable快捷编辑a标签下划线' + date: "2022-02-20 02:39:56", + desc: "移除vue3版本voltable快捷编辑a标签下划线" }, - { date: '2022-02-20 02:35:46', desc: '优化vue3版本voltable滚动条样式' }, + { date: "2022-02-20 02:35:46", desc: "优化vue3版本voltable滚动条样式" }, { - date: '2022-02-20 02:32:32', - desc: '增加ApiBaseController方法JsonNormal默认日期格式处理' + date: "2022-02-20 02:32:32", + desc: "增加ApiBaseController方法JsonNormal默认日期格式处理" }, { - date: '2022-02-20 01:59:01', - desc: '增加vue3版本table双击行事件参数判断' + date: "2022-02-20 01:59:01", + desc: "增加vue3版本table双击行事件参数判断" }, - { date: '2022-02-20 01:48:00', desc: '增加登陆异常排除文档说明' }, + { date: "2022-02-20 01:48:00", desc: "增加登陆异常排除文档说明" }, { - date: '2022-02-20 01:40:06', - desc: '优化ApiBaseController中GetPageData方法' + date: "2022-02-20 01:40:06", + desc: "优化ApiBaseController中GetPageData方法" }, { - date: '2022-02-20 01:35:33', - desc: '启用vue3版本代码生成器的表别名功能' + date: "2022-02-20 01:35:33", + desc: "启用vue3版本代码生成器的表别名功能" }, { - date: '2022-02-20 01:26:24', - desc: '优化vue版本voltable属性placeholder' + date: "2022-02-20 01:26:24", + desc: "优化vue版本voltable属性placeholder" }, { - date: '2022-02-20 01:20:18', - desc: '完善代码生器、前后端发布及更新文档说明' + date: "2022-02-20 01:20:18", + desc: "完善代码生器、前后端发布及更新文档说明" }, { - date: '2022-02-20 01:13:34', - desc: '强制开启vue3版本联级可以选择任意节点' + date: "2022-02-20 01:13:34", + desc: "强制开启vue3版本联级可以选择任意节点" }, { - date: '2022-02-20 01:13:21', - desc: '强制开启vue2版本联级可以选择任意节点' + date: "2022-02-20 01:13:21", + desc: "强制开启vue2版本联级可以选择任意节点" }, { - date: '2022-02-20 01:05:40', - desc: '优化vue3版本placeholder属性显示' + date: "2022-02-20 01:05:40", + desc: "优化vue3版本placeholder属性显示" }, - { date: '2022-02-20 01:01:39', desc: '优化vue3登陆页面' }, - { date: '2022.01', type: 'month' }, - { date: '2022-01-26 10:58:07', desc: 'Update 表结构与数据.sql' }, + { date: "2022-02-20 01:01:39", desc: "优化vue3登陆页面" }, + { date: "2022.01", type: "month" }, + { date: "2022-01-26 10:58:07", desc: "Update 表结构与数据.sql" }, - { date: '2022-01-23 12:14:41', desc: '完善文档' }, - { date: '2022-01-15 18:57:29', desc: '移除vue3重复代码' }, - { date: '2022-01-11 22:59:47', desc: '提交vue2版本导出遗漏方法' }, - { date: '2022-01-08 17:27:19', desc: '更新菜单脚本' }, + { date: "2022-01-23 12:14:41", desc: "完善文档" }, + { date: "2022-01-15 18:57:29", desc: "移除vue3重复代码" }, + { date: "2022-01-11 22:59:47", desc: "提交vue2版本导出遗漏方法" }, + { date: "2022-01-08 17:27:19", desc: "更新菜单脚本" }, { - date: '2022-01-08 16:57:10', - desc: '集成vue2、3 voltable多级表头示例' + date: "2022-01-08 16:57:10", + desc: "集成vue2、3 voltable多级表头示例" }, { - date: '2022-01-08 16:56:19', - desc: '集成vue2版本voltable多级表头功能' + date: "2022-01-08 16:56:19", + desc: "集成vue2版本voltable多级表头功能" }, { - date: '2022-01-08 16:55:30', - desc: '集成vue3版本voltable多级表头功能' + date: "2022-01-08 16:55:30", + desc: "集成vue3版本voltable多级表头功能" }, { - date: '2022-01-08 16:05:39', - desc: '增加明细表导入、导出、自定义导出文件名、优化导出方式(更新文件:后台Template文件夹、ApiBaseController.cs、ServiceBase.cs、Sys_TableInfoService.cs前端:methods.js、ViewGrid.vue)' + date: "2022-01-08 16:05:39", + desc: + "增加明细表导入、导出、自定义导出文件名、优化导出方式(更新文件:后台Template文件夹、ApiBaseController.cs、ServiceBase.cs、Sys_TableInfoService.cs前端:methods.js、ViewGrid.vue)" }, { - date: '2022-01-08 16:00:56', - desc: '增加vue3版本明细表导入导出功能' + date: "2022-01-08 16:00:56", + desc: "增加vue3版本明细表导入导出功能" }, { - date: '2022-01-08 15:59:54', - desc: '增加代码生成器对明细表导入导出的支持' + date: "2022-01-08 15:59:54", + desc: "增加代码生成器对明细表导入导出的支持" }, { - date: '2022-01-08 15:58:23', - desc: '增加vue2版本明细表自动导入、导出' + date: "2022-01-08 15:58:23", + desc: "增加vue2版本明细表自动导入、导出" }, { - date: '2022-01-08 15:56:19', - desc: '增加vue2版本明细表自动导入、导出' + date: "2022-01-08 15:56:19", + desc: "增加vue2版本明细表自动导入、导出" }, { - date: '2022-01-08 14:06:03', - desc: '增加vue2版本多表tabs多页签显示示例' + date: "2022-01-08 14:06:03", + desc: "增加vue2版本多表tabs多页签显示示例" }, { - date: '2022-01-08 14:05:49', - desc: '增加vue3版本多表tabs多页签显示示例' + date: "2022-01-08 14:05:49", + desc: "增加vue3版本多表tabs多页签显示示例" }, { - date: '2022-01-08 14:05:40', - desc: '增加vue3版本多表tabs多页签显示示例' + date: "2022-01-08 14:05:40", + desc: "增加vue3版本多表tabs多页签显示示例" }, - { date: '2022-01-08 12:55:40', desc: '添加Swagger发布配置' }, - { date: '2022-01-06 22:59:32', desc: '更新mysql脚本' }, - { date: '2022-01-03 20:24:56', desc: '完善文件' }, + { date: "2022-01-08 12:55:40", desc: "添加Swagger发布配置" }, + { date: "2022-01-06 22:59:32", desc: "更新mysql脚本" }, + { date: "2022-01-03 20:24:56", desc: "完善文件" }, { - date: '2022-01-03 20:20:44', - desc: '暂时屏蔽vue3版本的快捷查询的日期类型' + date: "2022-01-03 20:20:44", + desc: "暂时屏蔽vue3版本的快捷查询的日期类型" }, - { date: '2022-01-03 20:12:31', desc: '优化vue2版本快捷查询显示方式' }, - { date: '2022-01-03 20:11:39', desc: '优化vue3版本快捷查询显示方式' }, + { date: "2022-01-03 20:12:31", desc: "优化vue2版本快捷查询显示方式" }, + { date: "2022-01-03 20:11:39", desc: "优化vue3版本快捷查询显示方式" }, { - date: '2022-01-03 20:01:23', - desc: '完善演示vue3版本表单设置设计器下载及使用功能' + date: "2022-01-03 20:01:23", + desc: "完善演示vue3版本表单设置设计器下载及使用功能" }, - { date: '2022-01-03 19:58:38', desc: '更新最新开发版数据库脚本' }, + { date: "2022-01-03 19:58:38", desc: "更新最新开发版数据库脚本" }, { - date: '2022-01-03 18:10:14', - desc: '增加通过List对象导出excel方法:EPPlusHelper.ExportGeneralExcel' + date: "2022-01-03 18:10:14", + desc: "增加通过List对象导出excel方法:EPPlusHelper.ExportGeneralExcel" }, - { date: '2021.12', type: 'month' }, + { date: "2021.12", type: "month" }, { - date: '20211-12-30 13:50:50', - desc: 'Merge pull request #214 from cd-linxi/master' + date: "20211-12-30 13:50:50", + desc: "Merge pull request #214 from cd-linxi/master" }, { - date: '20211-12-28 16:05:17', - desc: '1.显示控制器xml注释内容 2.添加过滤器 可自定义添加对控制器的注释描述' + date: "20211-12-28 16:05:17", + desc: + "1.显示控制器xml注释内容 2.添加过滤器 可自定义添加对控制器的注释描述" }, { - date: '20211-12-28 15:21:01', - desc: 'swagger文档分组显示,swagger对控制器描述' + date: "20211-12-28 15:21:01", + desc: "swagger文档分组显示,swagger对控制器描述" }, { - date: '20211-12-20 22:29:48', - desc: 'Merge pull request #213 from cd-linxi/master' + date: "20211-12-20 22:29:48", + desc: "Merge pull request #213 from cd-linxi/master" }, - { date: '20211-12-20 17:16:05', desc: '增加批量点阅发布的方法' }, - { date: '20211-12-20 15:36:35', desc: 'kafka异常日志记录' }, - { date: '20211-12-17 18:13:19', desc: 'kafka' }, - { date: '2021-12-12 20:58:55', desc: '增加[前后台发布在一起]文档' }, + { date: "20211-12-20 17:16:05", desc: "增加批量点阅发布的方法" }, + { date: "20211-12-20 15:36:35", desc: "kafka异常日志记录" }, + { date: "20211-12-17 18:13:19", desc: "kafka" }, + { date: "2021-12-12 20:58:55", desc: "增加[前后台发布在一起]文档" }, { - date: '2021-12-12 20:44:23', - desc: '优化Startup.cs 中swagger启动方式' + date: "2021-12-12 20:44:23", + desc: "优化Startup.cs 中swagger启动方式" }, { - date: '2021-12-12 20:34:21', - desc: '优化vue2版本明细表强制刷新合计时判断' + date: "2021-12-12 20:34:21", + desc: "优化vue2版本明细表强制刷新合计时判断" }, { - date: '2021-12-12 20:32:45', - desc: '优化vue3版本明细表强制刷新合计时判断' + date: "2021-12-12 20:32:45", + desc: "优化vue3版本明细表强制刷新合计时判断" }, { - date: '2021-12-01 09:27:58', - desc: '(Cookie Tang)添加一个GetRealDetailType的函数用来获取从表的类型,如果从表使用的是view直接重载这个函数即可' + date: "2021-12-01 09:27:58", + desc: + "(Cookie Tang)添加一个GetRealDetailType的函数用来获取从表的类型,如果从表使用的是view直接重载这个函数即可" }, - { date: '2021.11', type: 'month' }, + { date: "2021.11", type: "month" }, { - date: '2021-11-30 00:33:23', - desc: '(Cookie Tang)Table Select 添加value参数' + date: "2021-11-30 00:33:23", + desc: "(Cookie Tang)Table Select 添加value参数" }, - { date: '2021-11-29 22:56:26', desc: '优化vue3版本home页面' }, + { date: "2021-11-29 22:56:26", desc: "优化vue3版本home页面" }, { - date: '2021-11-29 00:41:54', - desc: '(Cookie Tang)table字段设置Select时readonly无效' + date: "2021-11-29 00:41:54", + desc: "(Cookie Tang)table字段设置Select时readonly无效" }, - { date: '2021-11-27 23:45:51', desc: '优化vue2版本volheader样式' }, - { date: '2021-11-27 23:44:10', desc: '增加vue3版本文档' }, - { date: '2021-11-27 23:27:15', desc: '增加取消跨域文档' }, - { date: '2021-11-27 23:07:52', desc: '修复多选没有提示的问题' }, + { date: "2021-11-27 23:45:51", desc: "优化vue2版本volheader样式" }, + { date: "2021-11-27 23:44:10", desc: "增加vue3版本文档" }, + { date: "2021-11-27 23:27:15", desc: "增加取消跨域文档" }, + { date: "2021-11-27 23:07:52", desc: "修复多选没有提示的问题" }, { - date: '2021-11-27 22:40:24', - desc: '修复vue3版本表单多选校验没有提示的问题' + date: "2021-11-27 22:40:24", + desc: "修复vue3版本表单多选校验没有提示的问题" }, { - date: '2021-11-27 22:32:41', - desc: '升级element plus到1.0.2-beta.71(更新package.json文件后执行npm install)' + date: "2021-11-27 22:32:41", + desc: + "升级element plus到1.0.2-beta.71(更新package.json文件后执行npm install)" }, { - date: '2021-11-21 21:45:39', - desc: '修复vue3版本vol-table编辑日期时前缀被挡住的问题' + date: "2021-11-21 21:45:39", + desc: "修复vue3版本vol-table编辑日期时前缀被挡住的问题" }, { - date: '2021-11-21 21:37:12', - desc: '修复vue3版本input回车执行两次的问题' + date: "2021-11-21 21:37:12", + desc: "修复vue3版本input回车执行两次的问题" }, { - date: '2021-11-21 21:17:24', - desc: '调整viewgrid表单组件同步引用(避免首次加载闪动的问题)' + date: "2021-11-21 21:17:24", + desc: "调整viewgrid表单组件同步引用(避免首次加载闪动的问题)" }, { - date: '2021-11-21 21:16:34', - desc: '修复vue2版本快捷查询字段为日期时二次查询日期格式没有转换的问题' + date: "2021-11-21 21:16:34", + desc: "修复vue2版本快捷查询字段为日期时二次查询日期格式没有转换的问题" }, - { date: '2021-11-18 22:37:02', desc: '完善文档' }, - { date: '2021-11-18 22:32:16', desc: '增加sqldapper异步操作' }, - { date: '2021-11-18 21:52:29', desc: '提交vue2版本遗漏更新' }, + { date: "2021-11-18 22:37:02", desc: "完善文档" }, + { date: "2021-11-18 22:32:16", desc: "增加sqldapper异步操作" }, + { date: "2021-11-18 21:52:29", desc: "提交vue2版本遗漏更新" }, { - date: '2021-11-18 21:50:28', - desc: '移除vue2版本表单中moment组件引入' + date: "2021-11-18 21:50:28", + desc: "移除vue2版本表单中moment组件引入" }, { - date: '2021-11-18 21:49:14', - desc: '增加vue2版本voltable编辑时阻止无效事件触发' + date: "2021-11-18 21:49:14", + desc: "增加vue2版本voltable编辑时阻止无效事件触发" }, { - date: '2021-11-18 21:36:50', + date: "2021-11-18 21:36:50", desc: "弃用vue3版本voltable方法@cell-mouse-leave='rowEndEdit'" }, { - date: '2021-11-18 21:36:14', - desc: '修复vue3版本el-input没有默认enter事件时回车异常' + date: "2021-11-18 21:36:14", + desc: "修复vue3版本el-input没有默认enter事件时回车异常" }, { - date: '2021-11-18 21:35:22', - desc: '调整首页文档跳转地址与默认主题蓝色' + date: "2021-11-18 21:35:22", + desc: "调整首页文档跳转地址与默认主题蓝色" }, - { date: '2021.10', type: 'month' }, - { date: '2021-10-17 20:24:41', desc: '优化示例页面' }, + { date: "2021.10", type: "month" }, + { date: "2021-10-17 20:24:41", desc: "优化示例页面" }, { - date: '2021-10-17 20:23:50', - desc: '修复vue3版本弹出框关闭后不能打开的问题' + date: "2021-10-17 20:23:50", + desc: "修复vue3版本弹出框关闭后不能打开的问题" }, { - date: '2021-10-17 19:49:11', - desc: '修复vue3版本查询级联不能绑定数据源、级联不能二级刷新的问题' + date: "2021-10-17 19:49:11", + desc: "修复vue3版本查询级联不能绑定数据源、级联不能二级刷新的问题" }, - { date: '2021-10-17 19:48:26', desc: '增加表单实时方法计算' }, - { date: '2021-10-12 21:04:13', desc: '增加属性校验long类型的支持' }, + { date: "2021-10-17 19:48:26", desc: "增加表单实时方法计算" }, + { date: "2021-10-12 21:04:13", desc: "增加属性校验long类型的支持" }, - { date: '2021.09', type: 'month' }, + { date: "2021.09", type: "month" }, { - date: '2021-09-27 00:34:03', - desc: '增加vue3版本文件上传组件自动获取文件名' + date: "2021-09-27 00:34:03", + desc: "增加vue3版本文件上传组件自动获取文件名" }, { - date: '2021-09-27 00:33:54', - desc: '增加vue2版本文件上传组件自动获取文件名' + date: "2021-09-27 00:33:54", + desc: "增加vue2版本文件上传组件自动获取文件名" }, - { date: '2021-09-27 00:26:29', desc: '移除vue3版本中的vue2语法' }, + { date: "2021-09-27 00:26:29", desc: "移除vue3版本中的vue2语法" }, { - date: '2021-09-27 00:21:22', - desc: '增加vue2版本明细表从弹出框中选择数据示例' + date: "2021-09-27 00:21:22", + desc: "增加vue2版本明细表从弹出框中选择数据示例" }, { - date: '2021-09-27 00:05:11', - desc: '增加vue3版本明细表从弹出框中选择数据(见菜单:主从一对一(2))' + date: "2021-09-27 00:05:11", + desc: "增加vue3版本明细表从弹出框中选择数据(见菜单:主从一对一(2))" }, { - date: '2021-09-26 23:30:02', - desc: '重写vue3版本编辑弹出框选择数据示例' + date: "2021-09-26 23:30:02", + desc: "重写vue3版本编辑弹出框选择数据示例" }, { - date: '2021-09-26 23:02:34', - desc: '重写vue2版本编辑弹出框从table选择数据示例' + date: "2021-09-26 23:02:34", + desc: "重写vue2版本编辑弹出框从table选择数据示例" }, - { date: '2021-09-26 22:40:10', desc: '优化vue3版本编辑组件属性' }, - { date: '2021-09-26 22:39:53', desc: '优化vue2版本编辑组件属性' }, - { date: '2021-09-26 22:33:16', desc: '集成vue3版本time组件' }, - { date: '2021-09-25 17:12:21', desc: '完善文档' }, - { date: '2021-09-25 16:58:25', desc: '增加代码生成器保存时提示信息' }, + { date: "2021-09-26 22:40:10", desc: "优化vue3版本编辑组件属性" }, + { date: "2021-09-26 22:39:53", desc: "优化vue2版本编辑组件属性" }, + { date: "2021-09-26 22:33:16", desc: "集成vue3版本time组件" }, + { date: "2021-09-25 17:12:21", desc: "完善文档" }, + { date: "2021-09-25 16:58:25", desc: "增加代码生成器保存时提示信息" }, { - date: '2021-09-25 16:19:48', - desc: 'model验证时启动是否移除不存在字段判断' + date: "2021-09-25 16:19:48", + desc: "model验证时启动是否移除不存在字段判断" }, - { date: '2021-09-25 16:14:57', desc: '调整代码生成器默认列宽度' }, + { date: "2021-09-25 16:14:57", desc: "调整代码生成器默认列宽度" }, { - date: '2021-09-25 16:12:32', - desc: '修复vue3版本文件上传后不能同时下载的问题(VolUpload.vue)' + date: "2021-09-25 16:12:32", + desc: "修复vue3版本文件上传后不能同时下载的问题(VolUpload.vue)" }, { - date: '2021-09-25 16:12:04', - desc: '修复vue2版本文件上传后不能同时下载的问题(VolUpload.vue)' + date: "2021-09-25 16:12:04", + desc: "修复vue2版本文件上传后不能同时下载的问题(VolUpload.vue)" }, { - date: '2021-09-25 15:57:58', - desc: '增加vue2版本明细表删除、修改时重新计算行数与汇总(更新detailMethods.js)' + date: "2021-09-25 15:57:58", + desc: + "增加vue2版本明细表删除、修改时重新计算行数与汇总(更新detailMethods.js)" }, { - date: '2021-09-25 15:56:55', - desc: '增加vue3版本明细表删除、修改时重新计算行数与汇总(更新detailMethods.js)' + date: "2021-09-25 15:56:55", + desc: + "增加vue3版本明细表删除、修改时重新计算行数与汇总(更新detailMethods.js)" }, - { date: '2021-09-25 15:36:55', desc: '优化vue3版本隐藏按钮操作' }, + { date: "2021-09-25 15:36:55", desc: "优化vue3版本隐藏按钮操作" }, { - date: '2021-09-25 15:24:32', - desc: '修复vue2/3上传文件示例路径逻辑处理错误的问题(示例错误不涉及组件更新)' + date: "2021-09-25 15:24:32", + desc: + "修复vue2/3上传文件示例路径逻辑处理错误的问题(示例错误不涉及组件更新)" }, { - date: '2021-09-25 14:36:00', - desc: '移除获取字典Sys_Dictionary异步方法中的同步调用' + date: "2021-09-25 14:36:00", + desc: "移除获取字典Sys_Dictionary异步方法中的同步调用" }, - { date: '2021-09-21 23:40:19', desc: '完善文档' }, + { date: "2021-09-21 23:40:19", desc: "完善文档" }, { - date: '2021-09-21 23:11:37', - desc: '修复vue3版本table合计不能实时计算的问题,优化table点击编辑事件' + date: "2021-09-21 23:11:37", + desc: "修复vue3版本table合计不能实时计算的问题,优化table点击编辑事件" }, - { date: '2021-09-21 22:57:06', desc: '增加编辑时对readonly属性判断' }, - { date: '2021-09-21 22:40:24', desc: '移除table强制固定第一列' }, + { date: "2021-09-21 22:57:06", desc: "增加编辑时对readonly属性判断" }, + { date: "2021-09-21 22:40:24", desc: "移除table强制固定第一列" }, { - date: '2021-09-17 00:23:46', - desc: '修复vue3版本编辑器输入时跳转到末尾的问题' + date: "2021-09-17 00:23:46", + desc: "修复vue3版本编辑器输入时跳转到末尾的问题" }, { - date: '2021-09-17 00:00:15', - desc: '修复vue2版本编辑器输入时跳转到末尾的问题' + date: "2021-09-17 00:00:15", + desc: "修复vue2版本编辑器输入时跳转到末尾的问题" }, { - date: '2021-09-16 23:42:10', - desc: '修复table组件编辑时edge浏览器可能报错的问题' + date: "2021-09-16 23:42:10", + desc: "修复table组件编辑时edge浏览器可能报错的问题" }, { - date: '2021-09-10 09:31:26', - desc: '增加GetDbConnection函数,默认行为和指定数据库类型的判断' + date: "2021-09-10 09:31:26", + desc: "增加GetDbConnection函数,默认行为和指定数据库类型的判断" }, { - date: '2021-09-09 22:04:01', - desc: '增加EF动态查询条件扩展(使用方式见后台开发文档)' + date: "2021-09-09 22:04:01", + desc: "增加EF动态查询条件扩展(使用方式见后台开发文档)" }, { - date: '2021-09-09 19:14:42', - desc: 'Dapper 连接其他数据库数可指定类型 //MySql/MsSql/PgSql,见DBServerProvider.cs' + date: "2021-09-09 19:14:42", + desc: + "Dapper 连接其他数据库数可指定类型 //MySql/MsSql/PgSql,见DBServerProvider.cs" }, - { date: '2021-09-06 21:28:49', desc: '提交编辑器遗漏文件' }, - { date: '2021-09-05 23:53:21', desc: '简化vue2编辑器内容发布代码' }, + { date: "2021-09-06 21:28:49", desc: "提交编辑器遗漏文件" }, + { date: "2021-09-05 23:53:21", desc: "简化vue2编辑器内容发布代码" }, { - date: '2021-09-05 22:51:11', - desc: '替换kindeditor为wangEditor编辑器(更新VolForm.vue、VolWangEditor.vue再执行npm i wangeditor --save安装编辑器)' + date: "2021-09-05 22:51:11", + desc: + "替换kindeditor为wangEditor编辑器(更新VolForm.vue、VolWangEditor.vue再执行npm i wangeditor --save安装编辑器)" }, { - date: '2021-09-05 22:48:37', - desc: '移除vue2版本强制排序改为代码生成器控制' + date: "2021-09-05 22:48:37", + desc: "移除vue2版本强制排序改为代码生成器控制" }, { - date: '2021-09-05 22:39:03', - desc: '增加vue3版本代码生成器配置排序功能' + date: "2021-09-05 22:39:03", + desc: "增加vue3版本代码生成器配置排序功能" }, { - date: '2021-09-05 22:05:41', - desc: '修复vue3版本同一个页面使用多个编辑器异常的问题' + date: "2021-09-05 22:05:41", + desc: "修复vue3版本同一个页面使用多个编辑器异常的问题" }, { - date: '2021-09-05 21:41:16', - desc: '移除vue2/3版本查询界面强制排序改为代码生成控制(更新文件methods.js、Sys_TableInfoService.cs)' + date: "2021-09-05 21:41:16", + desc: + "移除vue2/3版本查询界面强制排序改为代码生成控制(更新文件methods.js、Sys_TableInfoService.cs)" }, - { date: '2021-09-05 21:29:18', desc: 'vue3版本移除文件上传默认必填' }, - { date: '2021-09-05 21:22:43', desc: '增加vue3版本按回车快捷查询' }, - { date: '2021.08', type: 'month' }, + { date: "2021-09-05 21:29:18", desc: "vue3版本移除文件上传默认必填" }, + { date: "2021-09-05 21:22:43", desc: "增加vue3版本按回车快捷查询" }, + { date: "2021.08", type: "month" }, { - date: '2021-08-30 02:29:02', - desc: '增加vue3版本低代码设计器(需要更新formDraggable、VolFormDraggable文件夹、package.json,更新后执行npm install)' + date: "2021-08-30 02:29:02", + desc: + "增加vue3版本低代码设计器(需要更新formDraggable、VolFormDraggable文件夹、package.json,更新后执行npm install)" }, - { date: '2021-08-30 02:26:00', desc: '优化vue3版本表单宽度计算' }, - { date: '2021-08-30 02:25:24', desc: '增加vue3手动调用菜单收缩方法' }, + { date: "2021-08-30 02:26:00", desc: "优化vue3版本表单宽度计算" }, + { date: "2021-08-30 02:25:24", desc: "增加vue3手动调用菜单收缩方法" }, { - date: '2021-08-22 23:06:29', - desc: '完善vue3版本个人中心修改密码功能' + date: "2021-08-22 23:06:29", + desc: "完善vue3版本个人中心修改密码功能" }, { - date: '2021-08-22 22:55:55', - desc: '优化vue2版本查询界面级联表单只读时判断' + date: "2021-08-22 22:55:55", + desc: "优化vue2版本查询界面级联表单只读时判断" }, { - date: '2021-08-22 22:49:58', - desc: '修复vue版本级联表单只读时字典没有转换的问题' + date: "2021-08-22 22:49:58", + desc: "修复vue版本级联表单只读时字典没有转换的问题" }, - { date: '2021-08-22 22:36:28', desc: '完善其他文档' }, + { date: "2021-08-22 22:36:28", desc: "完善其他文档" }, { - date: '2021-08-22 22:32:12', - desc: '增加判断页面是否有某个按钮权限文档' + date: "2021-08-22 22:32:12", + desc: "增加判断页面是否有某个按钮权限文档" }, { - date: '2021-08-22 21:54:39', - desc: '增加手动取消实体跟踪方法(更新RepositoryBase.cs,IRepositoryBase.cs)' + date: "2021-08-22 21:54:39", + desc: + "增加手动取消实体跟踪方法(更新RepositoryBase.cs,IRepositoryBase.cs)" }, - { date: '2021-08-22 21:47:48', desc: '增加多表关联生成代码文档' }, - { date: '2021-08-22 21:45:14', desc: '增加后台重写权限示例及文档' }, + { date: "2021-08-22 21:47:48", desc: "增加多表关联生成代码文档" }, + { date: "2021-08-22 21:45:14", desc: "增加后台重写权限示例及文档" }, { - date: '2021-08-22 21:18:59', - desc: '移除数据隔离(租房管理)对超级管理员的判断' + date: "2021-08-22 21:18:59", + desc: "移除数据隔离(租房管理)对超级管理员的判断" }, - { date: '2021-08-17 18:48:49', desc: '移除从表更新时的数据库查询' }, - { date: '2021-08-17 18:45:30', desc: '优化vue3版本登陆页面' }, - { date: '2021-08-16 02:20:38', desc: '完善voltable文档' }, + { date: "2021-08-17 18:48:49", desc: "移除从表更新时的数据库查询" }, + { date: "2021-08-17 18:45:30", desc: "优化vue3版本登陆页面" }, + { date: "2021-08-16 02:20:38", desc: "完善voltable文档" }, { - date: '2021-08-16 02:12:19', - desc: '调整vue2/3版本表单数字字段最小值为0' + date: "2021-08-16 02:12:19", + desc: "调整vue2/3版本表单数字字段最小值为0" }, - { date: '2021-08-16 02:09:00', desc: '优化vue3树形table示例' }, + { date: "2021-08-16 02:09:00", desc: "优化vue3树形table示例" }, { - date: '2021-08-16 01:48:46', - desc: '修复vue3版本改变分页大小后实际分页大小没有变化的问题' + date: "2021-08-16 01:48:46", + desc: "修复vue3版本改变分页大小后实际分页大小没有变化的问题" }, { - date: '2021-08-16 01:46:34', - desc: '修复vue3版同一页面使用多个table时,不能正确获取选中行数据的问题' + date: "2021-08-16 01:46:34", + desc: + "修复vue3版同一页面使用多个table时,不能正确获取选中行数据的问题" }, { - date: '2021-08-16 01:44:17', - desc: '修复vue3版table双击事件无效的问题' + date: "2021-08-16 01:44:17", + desc: "修复vue3版table双击事件无效的问题" }, { - date: '2021-08-16 01:43:20', - desc: '修复vue3版个人中心表单不能输入的问题' + date: "2021-08-16 01:43:20", + desc: "修复vue3版个人中心表单不能输入的问题" }, { - date: '2021-08-16 01:39:19', - desc: '修复vue2/3保存前异步语法写错的问题' + date: "2021-08-16 01:39:19", + desc: "修复vue2/3保存前异步语法写错的问题" }, - { date: '2021-08-05 00:22:39', desc: '优化vue2版本render渲染表单文档' }, - { date: '2021-08-05 00:22:39', desc: '优化vue2版本render渲染表单文档' }, + { date: "2021-08-05 00:22:39", desc: "优化vue2版本render渲染表单文档" }, + { date: "2021-08-05 00:22:39", desc: "优化vue2版本render渲染表单文档" }, { - date: '2021-08-04 23:06:32', - desc: '修复vue3版本首页头像加载失败的问题' + date: "2021-08-04 23:06:32", + desc: "修复vue3版本首页头像加载失败的问题" }, { - date: '2021-08-04 22:58:45', - desc: '优化vue3版本代码生成器views路径保存功能' + date: "2021-08-04 22:58:45", + desc: "优化vue3版本代码生成器views路径保存功能" }, - { date: '2021-08-04 22:52:38', desc: '优化vue3版本路由加载异常的提示' }, - { date: '2021-08-04 22:52:04', desc: '优化vue3版本新建用户名只读功能' }, - { date: '2021-08-04 22:51:36', desc: '优化Vue3版本表单只读验证规则' }, - { date: '2021-08-03 23:11:54', desc: '优化vue3版本一对一主从页面' }, - { date: '2021-08-03 23:09:30', desc: '优化vue3版本table表格高度显示' }, - { date: '2021-08-03 22:39:57', desc: '增加配置文件跨域vue3地址' }, - { date: '2021-08-03 22:37:25', desc: '修复Vue3版本不能删除配置的问题' }, - { date: '2021-08-03 19:32:44', desc: '优化Vue3版本静态页面示例' }, - { date: '2021-08-03 19:32:11', desc: '优化Vue3版本一对一示例代码' }, - { date: '2021-08-03 19:31:30', desc: '优化Vue3版本登陆页面外链跳转' }, - { date: '2021-08-03 19:30:50', desc: '优化Vue3版本首页高度适应' }, - { date: '2021-08-03 19:29:33', desc: 'README.md' }, - { date: '2021-08-03 19:29:10', desc: '优化vue3版本http.js提示信息' }, - { date: '2021-08-02 02:41:37', desc: '上传vue3版本图片及使用说明' }, - { date: '2021-08-02 02:37:46', desc: '初始化框架vue3项目' }, + { date: "2021-08-04 22:52:38", desc: "优化vue3版本路由加载异常的提示" }, + { date: "2021-08-04 22:52:04", desc: "优化vue3版本新建用户名只读功能" }, + { date: "2021-08-04 22:51:36", desc: "优化Vue3版本表单只读验证规则" }, + { date: "2021-08-03 23:11:54", desc: "优化vue3版本一对一主从页面" }, + { date: "2021-08-03 23:09:30", desc: "优化vue3版本table表格高度显示" }, + { date: "2021-08-03 22:39:57", desc: "增加配置文件跨域vue3地址" }, + { date: "2021-08-03 22:37:25", desc: "修复Vue3版本不能删除配置的问题" }, + { date: "2021-08-03 19:32:44", desc: "优化Vue3版本静态页面示例" }, + { date: "2021-08-03 19:32:11", desc: "优化Vue3版本一对一示例代码" }, + { date: "2021-08-03 19:31:30", desc: "优化Vue3版本登陆页面外链跳转" }, + { date: "2021-08-03 19:30:50", desc: "优化Vue3版本首页高度适应" }, + { date: "2021-08-03 19:29:33", desc: "README.md" }, + { date: "2021-08-03 19:29:10", desc: "优化vue3版本http.js提示信息" }, + { date: "2021-08-02 02:41:37", desc: "上传vue3版本图片及使用说明" }, + { date: "2021-08-02 02:37:46", desc: "初始化框架vue3项目" }, { - date: '2021-08-02 02:37:20', - desc: '增加码生成器对框架vue3版本的支持' + date: "2021-08-02 02:37:20", + desc: "增加码生成器对框架vue3版本的支持" }, - { date: '2021-08-02 02:31:08', desc: '优化菜单组件图标判断' }, + { date: "2021-08-02 02:31:08", desc: "优化菜单组件图标判断" }, - { date: '2021.07', type: 'month' }, + { date: "2021.07", type: "month" }, { - date: '2021-07-28 00:30:19', - desc: "Merge branch 'master' of https://github.com/cq-panda/Vue.NetCore" + date: "2021-07-28 00:30:19", + desc: + "Merge branch 'master' of https://github.com/cq-panda/Vue.NetCore" }, { - date: '2021-07-27 23:11:07', - desc: '增加代码生成器table列显示类型date(自动格式化)' + date: "2021-07-27 23:11:07", + desc: "增加代码生成器table列显示类型date(自动格式化)" }, { - date: '2021-07-27 21:48:12', - desc: '修复代码生成器明细表中文名不能二次修改的问题' + date: "2021-07-27 21:48:12", + desc: "修复代码生成器明细表中文名不能二次修改的问题" }, - { date: '2021-07-27 12:36:50', desc: '同步mysql脚本字典' }, + { date: "2021-07-27 12:36:50", desc: "同步mysql脚本字典" }, { - date: '2021-07-17 12:45:01', - desc: '修复扩展组件在某些情况下不能复用的问题(更新 ViewGird.vue组件)' + date: "2021-07-17 12:45:01", + desc: "修复扩展组件在某些情况下不能复用的问题(更新 ViewGird.vue组件)" }, { - date: '2021-07-17 12:25:06', - desc: '移除对表单只读取时空值验证(更新 VolForm.vue组件)' + date: "2021-07-17 12:25:06", + desc: "移除对表单只读取时空值验证(更新 VolForm.vue组件)" }, { - date: '2021-07-17 03:18:05', - desc: '增加编辑框(明细)从表select下拉框选择事件示例文档' + date: "2021-07-17 03:18:05", + desc: "增加编辑框(明细)从表select下拉框选择事件示例文档" }, { - date: '2021-07-17 03:17:29', - desc: '调整voltable点击其他行结束编辑(原先默认为鼠标离开结束编辑)' + date: "2021-07-17 03:17:29", + desc: "调整voltable点击其他行结束编辑(原先默认为鼠标离开结束编辑)" }, { - date: '2021-07-17 03:00:13', - desc: '设置element的弹出框层zIndex高度(解决与其他组件可能弹出层冲突的问题)' + date: "2021-07-17 03:00:13", + desc: + "设置element的弹出框层zIndex高度(解决与其他组件可能弹出层冲突的问题)" }, { - date: '2021-07-17 02:58:11', - desc: '增加编辑表单文字超长、编辑表单输回车事件、输入事件使用文档' + date: "2021-07-17 02:58:11", + desc: "增加编辑表单文字超长、编辑表单输回车事件、输入事件使用文档" }, { - date: '2021-07-17 02:43:01', - desc: '增加日期范围选择示例及其他文档补充' + date: "2021-07-17 02:43:01", + desc: "增加日期范围选择示例及其他文档补充" }, { - date: '2021-07-17 02:40:54', - desc: '集成iview日期可选范围(更新 VolForm.vue组件)' + date: "2021-07-17 02:40:54", + desc: "集成iview日期可选范围(更新 VolForm.vue组件)" }, - { date: '2021-07-17 01:10:02', desc: '升级echarts到5.0.2版本' }, - { date: '2021-07-16 01:12:48', desc: '准备升级vue3.0' }, + { date: "2021-07-17 01:10:02", desc: "升级echarts到5.0.2版本" }, + { date: "2021-07-16 01:12:48", desc: "准备升级vue3.0" }, { - date: '2021-07-12 00:03:33', - desc: '增加弹出框关闭、表格双击事件使用文档' + date: "2021-07-12 00:03:33", + desc: "增加弹出框关闭、表格双击事件使用文档" }, { - date: '2021-07-11 23:12:47', - desc: '增加弹出框关闭点击事件(更新文件VolBox.vue、ViewGrid.vue、serviceFilter.js,使用方法见:前端开发文档(弹出框关闭事件)、组件api:onModelClose方法)' + date: "2021-07-11 23:12:47", + desc: + "增加弹出框关闭点击事件(更新文件VolBox.vue、ViewGrid.vue、serviceFilter.js,使用方法见:前端开发文档(弹出框关闭事件)、组件api:onModelClose方法)" }, - { date: '2021-07-11 22:52:03', desc: '修复不能获取三级以下角色的问题' }, + { date: "2021-07-11 22:52:03", desc: "修复不能获取三级以下角色的问题" }, { - date: '2021-07-11 16:15:14', - desc: '移除sqlserver初始化数据库脚本重复表名' + date: "2021-07-11 16:15:14", + desc: "移除sqlserver初始化数据库脚本重复表名" }, { - date: '2021-07-04 23:15:20', - desc: '增加后台强制返回、明细自定义查询、自定义编辑字段、自定义查询排序表达式文档' + date: "2021-07-04 23:15:20", + desc: + "增加后台强制返回、明细自定义查询、自定义编辑字段、自定义查询排序表达式文档" }, { - date: '2021-07-04 23:13:54', - desc: "增加删除、修改、新增时可以设置Code='-1'强制返回执行结果(具体见【后台基础代码扩展实现】文档)" + date: "2021-07-04 23:13:54", + desc: + "增加删除、修改、新增时可以设置Code='-1'强制返回执行结果(具体见【后台基础代码扩展实现】文档)" }, - { date: '2021-07-04 22:58:32', desc: '增加自定排序按条件表达式' }, + { date: "2021-07-04 22:58:32", desc: "增加自定排序按条件表达式" }, - { date: '2021.06', type: 'month' }, + { date: "2021.06", type: "month" }, { - date: '2021-06-27 23:01:26', - desc: '增加Statrtup.cs启动默认创建upload文件夹及禁用跨域说明' + date: "2021-06-27 23:01:26", + desc: "增加Statrtup.cs启动默认创建upload文件夹及禁用跨域说明" }, { - date: '2021-06-27 22:50:26', - desc: '修复AddRangeAsync方法参数错误的问题' + date: "2021-06-27 22:50:26", + desc: "修复AddRangeAsync方法参数错误的问题" }, - { date: '2021-06-20 01:04:21', desc: '调整voltable默认固定列规则' }, + { date: "2021-06-20 01:04:21", desc: "调整voltable默认固定列规则" }, { - date: '2021-06-19 23:58:52', - desc: '增加谷歌内核浏览判断,重新计算table高度' + date: "2021-06-19 23:58:52", + desc: "增加谷歌内核浏览判断,重新计算table高度" }, { - date: '2021-06-19 23:52:40', - desc: '修复treetable删除后刷新无效的问题' + date: "2021-06-19 23:52:40", + desc: "修复treetable删除后刷新无效的问题" }, - { date: '2021-06-06 14:59:21', desc: '调用明细表单元格高度' }, - { date: '2021-06-06 14:35:43', desc: '增加table tree后台使用说明' }, - { date: '2021-06-06 14:31:53', desc: '优化tabletree错位的问题' }, - { date: '2021-06-05 01:42:36', desc: '优化查询界面样式' }, - { date: '2021-06-05 01:09:31', desc: '更新文档' }, + { date: "2021-06-06 14:59:21", desc: "调用明细表单元格高度" }, + { date: "2021-06-06 14:35:43", desc: "增加table tree后台使用说明" }, + { date: "2021-06-06 14:31:53", desc: "优化tabletree错位的问题" }, + { date: "2021-06-05 01:42:36", desc: "优化查询界面样式" }, + { date: "2021-06-05 01:09:31", desc: "更新文档" }, { - date: '2021-06-05 00:45:07', - desc: '优化显示所有固定查询样式(修改文件viewgrid.less,viewgrid.vue,methods.js)' + date: "2021-06-05 00:45:07", + desc: + "优化显示所有固定查询样式(修改文件viewgrid.less,viewgrid.vue,methods.js)" }, { - date: '2021-06-04 23:31:45', - desc: '修复element table tree不刷新的问题' + date: "2021-06-04 23:31:45", + desc: "修复element table tree不刷新的问题" }, - { date: '2021-06-04 23:31:09', desc: '移除刷新按钮' }, + { date: "2021-06-04 23:31:09", desc: "移除刷新按钮" }, { - date: '2021-06-04 22:49:37', - desc: '增加导入excel时对5位数字日期格式处理' + date: "2021-06-04 22:49:37", + desc: "增加导入excel时对5位数字日期格式处理" }, - { date: '2021.05', type: 'month' }, + { date: "2021.05", type: "month" }, { - date: '2021-05-30 19:43:59', - desc: '修复下拉框清除数据后台接收不到空值的问题' + date: "2021-05-30 19:43:59", + desc: "修复下拉框清除数据后台接收不到空值的问题" }, - { date: '2021-05-30 18:49:29', desc: '优化sqldapper多对象查询' }, - { date: '2021-05-26 15:42:51', desc: '优化kindeditor编辑器404错误' }, - { date: '2021-05-23 15:58:41', desc: '集成table双击行事件' }, - { date: '2021-05-23 15:34:04', desc: '加深查询界面标题颜色' }, + { date: "2021-05-30 18:49:29", desc: "优化sqldapper多对象查询" }, + { date: "2021-05-26 15:42:51", desc: "优化kindeditor编辑器404错误" }, + { date: "2021-05-23 15:58:41", desc: "集成table双击行事件" }, + { date: "2021-05-23 15:34:04", desc: "加深查询界面标题颜色" }, { - date: '2021-05-23 15:21:01', - desc: '设置查询界面table默认开启排序功能' + date: "2021-05-23 15:21:01", + desc: "设置查询界面table默认开启排序功能" }, - { date: '2021-05-23 15:04:12', desc: '集成vue-count-to' }, + { date: "2021-05-23 15:04:12", desc: "集成vue-count-to" }, { - date: '2021-05-23 03:38:27', - desc: '修复sqldapper事务未实例化的问题,移除sqldapper mysql批量插入双引号的替换' + date: "2021-05-23 03:38:27", + desc: + "修复sqldapper事务未实例化的问题,移除sqldapper mysql批量插入双引号的替换" }, - { date: '2021-05-17 23:07:13', desc: '优化H5' }, + { date: "2021-05-17 23:07:13", desc: "优化H5" }, { - date: '2021-05-17 22:16:17', - desc: '修复SqlDapper在mysql中使用异常的问题' + date: "2021-05-17 22:16:17", + desc: "修复SqlDapper在mysql中使用异常的问题" }, { - date: '2021-05-16 21:50:11', - desc: '增加dapper连接其他数据库使用说明' + date: "2021-05-16 21:50:11", + desc: "增加dapper连接其他数据库使用说明" }, { - date: '2021-05-16 21:49:45', - desc: '增加表单select动态显示、隐藏下拉框选项' + date: "2021-05-16 21:49:45", + desc: "增加表单select动态显示、隐藏下拉框选项" }, - { date: '2021-05-16 21:20:24', desc: '集成代码生成iview radio组件' }, + { date: "2021-05-16 21:20:24", desc: "集成代码生成iview radio组件" }, { - date: '2021-05-16 13:41:47', - desc: '修复SqlDapper逻辑处理错误的问题(建议更新,更新文档SqlDapper.cs,ISqlDapper.cs)' + date: "2021-05-16 13:41:47", + desc: + "修复SqlDapper逻辑处理错误的问题(建议更新,更新文档SqlDapper.cs,ISqlDapper.cs)" }, - { date: '2021-05-14 00:05:40', desc: '重写菜单、权限分配页面样式' }, + { date: "2021-05-14 00:05:40", desc: "重写菜单、权限分配页面样式" }, { - date: '2021-05-12 20:03:30', - desc: '修复repository删除时实际表名获取错误的问题' + date: "2021-05-12 20:03:30", + desc: "修复repository删除时实际表名获取错误的问题" }, - { date: '2021-05-08 20:02:28', desc: '修复token续期刷新失败的问题' }, - { date: '2021-05-07 21:04:55', desc: '修复H5表单拼写错误的问题' }, - { date: '2021-05-07 21:03:38', desc: '移除http.get无用的错误代码' }, + { date: "2021-05-08 20:02:28", desc: "修复token续期刷新失败的问题" }, + { date: "2021-05-07 21:04:55", desc: "修复H5表单拼写错误的问题" }, + { date: "2021-05-07 21:03:38", desc: "移除http.get无用的错误代码" }, { - date: '2021-05-07 09:32:03', - desc: '修复element升级后表格错位的问题' + date: "2021-05-07 09:32:03", + desc: "修复element升级后表格错位的问题" }, - { date: '2021-05-05 21:02:10', desc: '增加Oracle版' }, - { date: '2021-05-05 14:10:12', desc: '封装dapper类型SetTimeout方法' }, - { date: '2021-05-02 23:43:53', desc: '更新基础数据库脚本' }, - { date: '2021-05-02 18:43:08', desc: '增加最新菜单数据库脚本' }, + { date: "2021-05-05 21:02:10", desc: "增加Oracle版" }, + { date: "2021-05-05 14:10:12", desc: "封装dapper类型SetTimeout方法" }, + { date: "2021-05-02 23:43:53", desc: "更新基础数据库脚本" }, + { date: "2021-05-02 18:43:08", desc: "增加最新菜单数据库脚本" }, { - date: '2021-05-02 18:24:33', - desc: '优化element升级2.14.1版本后表格错位的问题' + date: "2021-05-02 18:24:33", + desc: "优化element升级2.14.1版本后表格错位的问题" }, { - date: '2021-05-02 15:38:41', - desc: '增加treetable使用文档及完善其他文档使用' + date: "2021-05-02 15:38:41", + desc: "增加treetable使用文档及完善其他文档使用" }, { - date: '2021-05-02 15:27:19', - desc: '集成treetable,需要更新(package-lock.json,ViewGrid.vue,methods.js,VolTable.vue);注意更新后需要在前端vol.vue文件夹下重新执行下npm install命令' + date: "2021-05-02 15:27:19", + desc: + "集成treetable,需要更新(package-lock.json,ViewGrid.vue,methods.js,VolTable.vue);注意更新后需要在前端vol.vue文件夹下重新执行下npm install命令" }, - { date: '2021-05-02 14:11:26', desc: '升级element版本2.4.11' }, + { date: "2021-05-02 14:11:26", desc: "升级element版本2.4.11" }, { - date: '2021-05-02 00:32:29', - desc: '增加代码生成器区间查询(需要更新文件Sys_TableInfoService.cs,methods.js,VolForm.vue,builderData.js)' + date: "2021-05-02 00:32:29", + desc: + "增加代码生成器区间查询(需要更新文件Sys_TableInfoService.cs,methods.js,VolForm.vue,builderData.js)" }, { - date: '2021-05-01 23:59:28', - desc: '增加table事件版本兼容处理(freesaber)' + date: "2021-05-01 23:59:28", + desc: "增加table事件版本兼容处理(freesaber)" }, { - date: '2021-05-01 14:36:42', - desc: '完善前端http请求文档(现在可以设置请求超时时间,自定义请求头等信息)' + date: "2021-05-01 14:36:42", + desc: + "完善前端http请求文档(现在可以设置请求超时时间,自定义请求头等信息)" }, { - date: '2021-05-01 14:26:57', - desc: '重写http.js、token过期自动刷新机制(需要更新前端http.js,后台Sys_UserController.cs,ApiAuthorizeFilter.cs,HttpRequestMiddleware.cs)' + date: "2021-05-01 14:26:57", + desc: + "重写http.js、token过期自动刷新机制(需要更新前端http.js,后台Sys_UserController.cs,ApiAuthorizeFilter.cs,HttpRequestMiddleware.cs)" }, - { date: '2021-05-01 14:22:58', desc: '优化文档' }, - { date: '2021-05-01 14:22:34', desc: '优化dapper' }, - { date: '2021.04', type: 'month' }, + { date: "2021-05-01 14:22:58", desc: "优化文档" }, + { date: "2021-05-01 14:22:34", desc: "优化dapper" }, + { date: "2021.04", type: "month" }, { - date: '2021-04-24 23:30:47', - desc: '修复多文件分批上传url路径指向错误的问题(freesaber)' + date: "2021-04-24 23:30:47", + desc: "修复多文件分批上传url路径指向错误的问题(freesaber)" }, { - date: '2021-04-23 00:13:50', - desc: '修复mysql数据库MySqlBulkLoader批量插入在linux上数据丢失的问题' + date: "2021-04-23 00:13:50", + desc: "修复mysql数据库MySqlBulkLoader批量插入在linux上数据丢失的问题" }, - { date: '2021-04-20 23:10:40', desc: '封装Dapper dynamic查询' }, - { date: '2021-04-20 23:10:01', desc: '增加EF AddAsync封装' }, - { date: '2021-04-19 21:42:37', desc: '优化连续添加对返的状态的判断' }, + { date: "2021-04-20 23:10:40", desc: "封装Dapper dynamic查询" }, + { date: "2021-04-20 23:10:01", desc: "增加EF AddAsync封装" }, + { date: "2021-04-19 21:42:37", desc: "优化连续添加对返的状态的判断" }, { - date: '2021-04-18 20:05:49', - desc: '增加新建时设置表单select下拉框默认选中值文档及其他文档' + date: "2021-04-18 20:05:49", + desc: "增加新建时设置表单select下拉框默认选中值文档及其他文档" }, { - date: '2021-04-18 19:32:59', - desc: '增加EF多表关联、获取用户所有子角色文档' + date: "2021-04-18 19:32:59", + desc: "增加EF多表关联、获取用户所有子角色文档" }, - { date: '2021-04-18 19:19:35', desc: '加深table表头字段颜色' }, - { date: '2021-04-18 19:19:05', desc: '加深表单label字体颜色' }, - { date: '2021-04-18 19:13:29', desc: '调整登陆页面样式' }, - { date: '2021-04-18 19:11:29', desc: '重写volupload文件上传组件' }, - { date: '2021-04-11 17:41:10', desc: '完善开发文档' }, - { date: '2021-04-11 17:38:43', desc: '增加建新时,连续添加功能' }, + { date: "2021-04-18 19:19:35", desc: "加深table表头字段颜色" }, + { date: "2021-04-18 19:19:05", desc: "加深表单label字体颜色" }, + { date: "2021-04-18 19:13:29", desc: "调整登陆页面样式" }, + { date: "2021-04-18 19:11:29", desc: "重写volupload文件上传组件" }, + { date: "2021-04-11 17:41:10", desc: "完善开发文档" }, + { date: "2021-04-11 17:38:43", desc: "增加建新时,连续添加功能" }, { - date: '2021-04-11 16:56:32', - desc: '代码生成页面增加destroyed页面销毁方法' + date: "2021-04-11 16:56:32", + desc: "代码生成页面增加destroyed页面销毁方法" }, { - date: '2021-04-11 16:32:53', - desc: '隐藏框架swagger默认接口(只保留GetPageData)' + date: "2021-04-11 16:32:53", + desc: "隐藏框架swagger默认接口(只保留GetPageData)" }, - { date: '2021-04-05 11:16:31', desc: '完整数据库访问文档' }, - { date: '2021-04-05 10:56:49', desc: '优化导出excel时数字类型的转换' }, + { date: "2021-04-05 11:16:31", desc: "完整数据库访问文档" }, + { date: "2021-04-05 10:56:49", desc: "优化导出excel时数字类型的转换" }, { - date: '2021-04-05 10:49:36', - desc: '修复递归获取所有子角色可能无限循环的问题' + date: "2021-04-05 10:49:36", + desc: "修复递归获取所有子角色可能无限循环的问题" }, - { date: '2021-04-05 10:48:47', desc: '更正字符拼写问题' }, - { date: '2021.03', type: 'month' }, + { date: "2021-04-05 10:48:47", desc: "更正字符拼写问题" }, + { date: "2021.03", type: "month" }, { - date: '2021-03-31 23:07:45', - desc: '修复表单switch只读时没有转换值的问题' + date: "2021-03-31 23:07:45", + desc: "修复表单switch只读时没有转换值的问题" }, - { date: '2021-03-20 23:01:58', desc: '增加H5图片上数量限制' }, + { date: "2021-03-20 23:01:58", desc: "增加H5图片上数量限制" }, { - date: '2021-03-20 15:54:34', - desc: '更新演示环境mysql与sqlserver菜单脚本' + date: "2021-03-20 15:54:34", + desc: "更新演示环境mysql与sqlserver菜单脚本" }, - { date: '2021-03-20 15:11:30', desc: '增加主题颜色' }, - { date: '2021-03-20 14:37:51', desc: '优化编辑弹出框明细表样式' }, - { date: '2021-03-20 14:30:02', desc: '修复明细表格错位' }, - { date: '2021-03-20 14:22:12', desc: '优化主从明细加载demo' }, - { date: '2021-03-20 14:07:32', desc: '替换默认图片' }, + { date: "2021-03-20 15:11:30", desc: "增加主题颜色" }, + { date: "2021-03-20 14:37:51", desc: "优化编辑弹出框明细表样式" }, + { date: "2021-03-20 14:30:02", desc: "修复明细表格错位" }, + { date: "2021-03-20 14:22:12", desc: "优化主从明细加载demo" }, + { date: "2021-03-20 14:07:32", desc: "替换默认图片" }, { - date: '2021-03-20 13:50:18', - desc: '修复自定义二次打开$tabs时参数丢失的问题' + date: "2021-03-20 13:50:18", + desc: "修复自定义二次打开$tabs时参数丢失的问题" }, - { date: '2021-03-20 13:49:53', desc: '缩进用户管理页面宽度' }, - { date: '2021-03-20 13:35:47', desc: '增加table使用示例及文档' }, - { date: '2021-03-20 12:39:06', desc: '优化表单demo' }, - { date: '2021-03-20 00:02:39', desc: '增加查询界面table表格编辑demo' }, + { date: "2021-03-20 13:49:53", desc: "缩进用户管理页面宽度" }, + { date: "2021-03-20 13:35:47", desc: "增加table使用示例及文档" }, + { date: "2021-03-20 12:39:06", desc: "优化表单demo" }, + { date: "2021-03-20 00:02:39", desc: "增加查询界面table表格编辑demo" }, { - date: '2021-03-20 00:02:05', - desc: '增加查询界面table可以直接对表格编辑功能' + date: "2021-03-20 00:02:05", + desc: "增加查询界面table可以直接对表格编辑功能" }, - { date: '2021-03-19 22:22:20', desc: '增加H5下拉框只读字典翻译' }, - { date: '2021-03-14 23:41:43', desc: '增加一对一、一对多详细使用demo' }, + { date: "2021-03-19 22:22:20", desc: "增加H5下拉框只读字典翻译" }, + { date: "2021-03-14 23:41:43", desc: "增加一对一、一对多详细使用demo" }, { - date: '2021-03-06 17:39:37', - desc: '增加生成前端页面生成到指定文件夹下(原来生成到项目类库名下,原有文件不受影响)' + date: "2021-03-06 17:39:37", + desc: + "增加生成前端页面生成到指定文件夹下(原来生成到项目类库名下,原有文件不受影响)" }, - { date: '2021-03-06 17:37:56', desc: '重命名删除方法' }, - { date: '2021-03-06 17:36:42', desc: '增加表单只读时日期格式化处理' }, - { date: '2021-03-06 17:36:07', desc: '增加table多列合并显示demo' }, - { date: '2021.02', type: 'month' }, - { date: '2021-02-28 22:11:26', desc: '优化table示例样式' }, - { date: '2021-02-28 21:53:55', desc: '简化多租户配置及文档' }, - { date: '2021-02-28 18:59:57', desc: '完善voltable从后台加载demo' }, - { date: '2021-02-01 20:12:23', desc: '增加表单年月查询' }, + { date: "2021-03-06 17:37:56", desc: "重命名删除方法" }, + { date: "2021-03-06 17:36:42", desc: "增加表单只读时日期格式化处理" }, + { date: "2021-03-06 17:36:07", desc: "增加table多列合并显示demo" }, + { date: "2021.02", type: "month" }, + { date: "2021-02-28 22:11:26", desc: "优化table示例样式" }, + { date: "2021-02-28 21:53:55", desc: "简化多租户配置及文档" }, + { date: "2021-02-28 18:59:57", desc: "完善voltable从后台加载demo" }, + { date: "2021-02-01 20:12:23", desc: "增加表单年月查询" }, { - date: '2021-02-01 18:23:19', - desc: '设置表单多图上传时默认累开启追加功能(以前多图上传重新选择时会移除原来的图片)' + date: "2021-02-01 18:23:19", + desc: + "设置表单多图上传时默认累开启追加功能(以前多图上传重新选择时会移除原来的图片)" }, { - date: '2021-02-01 18:21:15', - desc: '修复table表格文件下载路径指向错误的问题' + date: "2021-02-01 18:21:15", + desc: "修复table表格文件下载路径指向错误的问题" }, - { date: '2021.01', type: 'month' }, + { date: "2021.01", type: "month" }, { - date: '2021-01-31 16:00:04', - desc: '增加http.js post方法第4个参数(可以设置自定义响应类型,请求头等,更多参数具体参照axios文档或源码)' + date: "2021-01-31 16:00:04", + desc: + "增加http.js post方法第4个参数(可以设置自定义响应类型,请求头等,更多参数具体参照axios文档或源码)" }, { - date: '2021-01-30 23:56:59', - desc: '增加指定默认排序字段与排序方式文档' + date: "2021-01-30 23:56:59", + desc: "增加指定默认排序字段与排序方式文档" }, { - date: '2021-01-30 22:22:47', - desc: '增加代码生成器日期组件年月类型,查询/编辑类型选择year_month' + date: "2021-01-30 22:22:47", + desc: "增加代码生成器日期组件年月类型,查询/编辑类型选择year_month" }, { - date: '2021-01-30 22:21:48', - desc: '增加iview表单日期年月选择及自定义格式' + date: "2021-01-30 22:21:48", + desc: "增加iview表单日期年月选择及自定义格式" }, { - date: '2021-01-30 22:20:54', - desc: '修复火狐table组件checkbox错位问题' + date: "2021-01-30 22:20:54", + desc: "修复火狐table组件checkbox错位问题" }, { - date: '2021-01-24 22:05:35', - desc: '修复多选类型,导出excel文件没有转换数据源的问题' + date: "2021-01-24 22:05:35", + desc: "修复多选类型,导出excel文件没有转换数据源的问题" }, - { date: '2021-01-23 13:48:48', desc: '移除无用文件' }, + { date: "2021-01-23 13:48:48", desc: "移除无用文件" }, { - date: '2021-01-22 19:39:06', - desc: '修复一对一从表点击编辑按钮时没有加载从表数据(点击快捷编辑的不受影响)' + date: "2021-01-22 19:39:06", + desc: + "修复一对一从表点击编辑按钮时没有加载从表数据(点击快捷编辑的不受影响)" }, { - date: '2021-01-16 12:11:41', - desc: '添加代生成页面表单编辑器图片上传配置' + date: "2021-01-16 12:11:41", + desc: "添加代生成页面表单编辑器图片上传配置" }, - { date: '2021-01-16 11:51:48', desc: '完善文档' }, + { date: "2021-01-16 11:51:48", desc: "完善文档" }, { - date: '2021-01-16 11:46:12', - desc: '增加表格内容超出后是否自动换行属性text-inline(默认不换行)' + date: "2021-01-16 11:46:12", + desc: "增加表格内容超出后是否自动换行属性text-inline(默认不换行)" }, { - date: '2021-01-16 11:24:21', - desc: '增加viewgrid、volform集成编辑器功能' + date: "2021-01-16 11:24:21", + desc: "增加viewgrid、volform集成编辑器功能" }, - { date: '2021-01-16 11:23:14', desc: '代码生成器集成编辑器生成功能' }, + { date: "2021-01-16 11:23:14", desc: "代码生成器集成编辑器生成功能" }, { - date: '2021-01-16 09:30:52', - desc: '修复http请示loading状态消失问题' + date: "2021-01-16 09:30:52", + desc: "修复http请示loading状态消失问题" }, - { date: '2021-01-10 00:55:17', desc: '完善文档' }, + { date: "2021-01-10 00:55:17", desc: "完善文档" }, { - date: '2021-01-10 00:12:57', - desc: '增加新建、编辑前可以阻止弹出框弹出(使用方法见:组件api->viewgrid文档)' + date: "2021-01-10 00:12:57", + desc: + "增加新建、编辑前可以阻止弹出框弹出(使用方法见:组件api->viewgrid文档)" }, { - date: '2021-01-09 23:48:05', - desc: '增加代码生成器设置table排序功能' + date: "2021-01-09 23:48:05", + desc: "增加代码生成器设置table排序功能" }, - { date: '2021-01-09 23:12:56', desc: '优化table显示td单元格大小' }, + { date: "2021-01-09 23:12:56", desc: "优化table显示td单元格大小" }, { - date: '2021-01-09 22:35:18', - desc: '修复mysql使用dapper批量插入乱码的问题(由Flyash提供)' + date: "2021-01-09 22:35:18", + desc: "修复mysql使用dapper批量插入乱码的问题(由Flyash提供)" }, - { date: '2021-01-09 22:21:01', desc: '增加H5 table加载后的方法' }, - { date: '2021-01-09 22:13:38', desc: '调整文件点击下载方式' }, - { date: '2021-01-01 17:50:42', desc: '优化页面加载' }, - { date: '2021-01-01 17:49:06', desc: '优化登陆页面' }, + { date: "2021-01-09 22:21:01", desc: "增加H5 table加载后的方法" }, + { date: "2021-01-09 22:13:38", desc: "调整文件点击下载方式" }, + { date: "2021-01-01 17:50:42", desc: "优化页面加载" }, + { date: "2021-01-01 17:49:06", desc: "优化登陆页面" }, { - date: '2021-01-01 17:07:42', - desc: '修改页面加载样式,修改文件index.html,App.vue' + date: "2021-01-01 17:07:42", + desc: "修改页面加载样式,修改文件index.html,App.vue" }, { - date: '2021-01-01 16:59:59', - desc: '优选代码生成器提示只能选择一个主键字段' + date: "2021-01-01 16:59:59", + desc: "优选代码生成器提示只能选择一个主键字段" }, { - date: '2021-01-01 16:44:54', - desc: '优化导入excel时字典数据确实时提示信息' + date: "2021-01-01 16:44:54", + desc: "优化导入excel时字典数据确实时提示信息" }, { - date: '2021-01-01 16:40:45', - desc: '优化基础控制器(现在可以重写基础控制器方法)' + date: "2021-01-01 16:40:45", + desc: "优化基础控制器(现在可以重写基础控制器方法)" }, - { date: '2020.12', type: 'month' }, - { date: '2020-12-29 22:05:51', desc: '提供最新sqlserver数据库脚本' }, - { date: '2020-12-29 12:25:21', desc: '优化首页菜单组件' }, - { date: '2020-12-28 23:00:23', desc: '优化首页白色主题背景颜色' }, + { date: "2020.12", type: "month" }, + { date: "2020-12-29 22:05:51", desc: "提供最新sqlserver数据库脚本" }, + { date: "2020-12-29 12:25:21", desc: "优化首页菜单组件" }, + { date: "2020-12-28 23:00:23", desc: "优化首页白色主题背景颜色" }, { - date: '2020-12-28 22:59:52', - desc: '优化首页菜单只显示根据节点为0的数据' + date: "2020-12-28 22:59:52", + desc: "优化首页菜单只显示根据节点为0的数据" }, - { date: '2020-12-27 19:04:44', desc: '完善文档' }, - { date: '2020-12-27 19:03:00', desc: '增加上传组件默认base64的支持' }, + { date: "2020-12-27 19:04:44", desc: "完善文档" }, + { date: "2020-12-27 19:03:00", desc: "增加上传组件默认base64的支持" }, { - date: '2020-12-27 18:26:35', - desc: '增加菜单不显示也可以分配仅限功能,需要更新文件VolElementMenu.vue VolElementMenuChild.vue Sys_Menu.vue Sys_MenuService.cs UserContext.cs' + date: "2020-12-27 18:26:35", + desc: + "增加菜单不显示也可以分配仅限功能,需要更新文件VolElementMenu.vue VolElementMenuChild.vue Sys_Menu.vue Sys_MenuService.cs UserContext.cs" }, { - date: '2020-12-27 13:38:48', - desc: '增加编辑保存后不重置分页页数(停留在当前页的数据)' + date: "2020-12-27 13:38:48", + desc: "增加编辑保存后不重置分页页数(停留在当前页的数据)" }, - { date: '2020-12-27 13:12:54', desc: '增加表单render渲染额外属性' }, - { date: '2020-12-26 23:29:07', desc: '增加主从表demo' }, - { date: '2020-12-26 19:21:44', desc: '移除模板多余引用' }, + { date: "2020-12-27 13:12:54", desc: "增加表单render渲染额外属性" }, + { date: "2020-12-26 23:29:07", desc: "增加主从表demo" }, + { date: "2020-12-26 19:21:44", desc: "移除模板多余引用" }, { - date: '2020-12-21 19:40:45', - desc: '增加菜单收缩功能更新文件:更新文件VolElementMenuChild.vue 、VolElementMenu.vue 、Index.vue' + date: "2020-12-21 19:40:45", + desc: + "增加菜单收缩功能更新文件:更新文件VolElementMenuChild.vue 、VolElementMenu.vue 、Index.vue" }, { - date: '2020-12-19 13:36:32', - desc: '优化角色上级角色字段界面编辑或者新建时可以选择任意节点' + date: "2020-12-19 13:36:32", + desc: "优化角色上级角色字段界面编辑或者新建时可以选择任意节点" }, - { date: '2020-12-19 13:29:06', desc: '增加前端禁止缓存与完善其他文档' }, + { date: "2020-12-19 13:29:06", desc: "增加前端禁止缓存与完善其他文档" }, { - date: '2020-12-19 13:09:50', - desc: '增加table单元格为img时,可以自定义formatter及对base64图片的默认支持' + date: "2020-12-19 13:09:50", + desc: + "增加table单元格为img时,可以自定义formatter及对base64图片的默认支持" }, { - date: '2020-12-19 12:47:06', - desc: '设置编辑器demo禁用缓存keepAlive' + date: "2020-12-19 12:47:06", + desc: "设置编辑器demo禁用缓存keepAlive" }, { - date: '2020-12-19 12:37:09', - desc: '修复自定义导出列配置属性为不显示时导出表头没有转换的问题' + date: "2020-12-19 12:37:09", + desc: "修复自定义导出列配置属性为不显示时导出表头没有转换的问题" }, - { date: '2020-12-16 20:53:25', desc: '优化日志文件' }, - { date: '2020-12-16 20:52:39', desc: '优化代码生成器命名空间' }, - { date: '2020-12-13 15:29:34', desc: '增加自定义按钮权限控制操作文档' }, + { date: "2020-12-16 20:53:25", desc: "优化日志文件" }, + { date: "2020-12-16 20:52:39", desc: "优化代码生成器命名空间" }, + { date: "2020-12-13 15:29:34", desc: "增加自定义按钮权限控制操作文档" }, { - date: '2020-12-13 14:44:12', - desc: '设置表单只读时也可以设置额外属性' + date: "2020-12-13 14:44:12", + desc: "设置表单只读时也可以设置额外属性" }, - { date: '2020-12-13 14:30:15', desc: '添加table背景颜色文档' }, - { date: '2020-12-13 14:00:14', desc: '增加table单元格颜色' }, + { date: "2020-12-13 14:30:15", desc: "添加table背景颜色文档" }, + { date: "2020-12-13 14:00:14", desc: "增加table单元格颜色" }, { - date: '2020-12-13 12:45:16', - desc: '增加查询页面模板默认ref=grid属性' + date: "2020-12-13 12:45:16", + desc: "增加查询页面模板默认ref=grid属性" }, { - date: '2020-12-13 12:36:26', - desc: '修复表单select/checkbox为只读时字典没有转换的问题' + date: "2020-12-13 12:36:26", + desc: "修复表单select/checkbox为只读时字典没有转换的问题" }, { - date: '2020-12-13 12:24:34', - desc: '增加查询界面更多按钮项目hidden属性' + date: "2020-12-13 12:24:34", + desc: "增加查询界面更多按钮项目hidden属性" }, - { date: '2020-12-13 12:41:11', desc: '修复H5图片上传路径错误的问题' }, - { date: '2020-12-13 12:40:41', desc: '优化白色主题' }, - { date: '2020-12-13 09:50:39', desc: '提交遗漏文件' }, - { date: '2020-12-06 17:26:31', desc: '添加自定义多个弹出框及其他文档' }, + { date: "2020-12-13 12:41:11", desc: "修复H5图片上传路径错误的问题" }, + { date: "2020-12-13 12:40:41", desc: "优化白色主题" }, + { date: "2020-12-13 09:50:39", desc: "提交遗漏文件" }, + { date: "2020-12-06 17:26:31", desc: "添加自定义多个弹出框及其他文档" }, { - date: '2020-12-06 16:13:31', - desc: '导入、审核、数据结构弹出框开启默认延迟加载' + date: "2020-12-06 16:13:31", + desc: "导入、审核、数据结构弹出框开启默认延迟加载" }, - { date: '2020-12-06 16:12:49', desc: '弹出框增加lazy延迟加载功能' }, + { date: "2020-12-06 16:12:49", desc: "弹出框增加lazy延迟加载功能" }, { - date: '2020-12-06 15:49:28', - desc: '增加viewgrid组件新建与编辑前异步方法同步处理' + date: "2020-12-06 15:49:28", + desc: "增加viewgrid组件新建与编辑前异步方法同步处理" }, - { date: '2020-12-06 15:34:33', desc: '优化白色与黑色主题' }, - { date: '2020-12-06 15:24:01', desc: '增加h5图片上传示例' }, - { date: '2020-12-06 15:20:36', desc: '增加H5图片上传功能' }, - { date: '2020-12-06 10:36:58', desc: '优化H5标题栏在app上适配' }, + { date: "2020-12-06 15:34:33", desc: "优化白色与黑色主题" }, + { date: "2020-12-06 15:24:01", desc: "增加h5图片上传示例" }, + { date: "2020-12-06 15:20:36", desc: "增加H5图片上传功能" }, + { date: "2020-12-06 10:36:58", desc: "优化H5标题栏在app上适配" }, { - date: '2020-12-02 12:39:48', - desc: '修复前端tree转换三级节点为空的问题' + date: "2020-12-02 12:39:48", + desc: "修复前端tree转换三级节点为空的问题" }, - { date: '2020.11', type: 'month' }, - { date: '2020-11-29 16:45:20', desc: '更新图片' }, - { date: '2020-11-29 16:45:07', desc: '更新图片' }, - { date: '2020-11-29 16:34:26', desc: '更新demo' }, - { date: '2020-11-29 16:07:58', desc: '补充其他文档' }, - { date: '2020-11-29 16:06:12', desc: '增加查询界面hidden属性' }, + { date: "2020.11", type: "month" }, + { date: "2020-11-29 16:45:20", desc: "更新图片" }, + { date: "2020-11-29 16:45:07", desc: "更新图片" }, + { date: "2020-11-29 16:34:26", desc: "更新demo" }, + { date: "2020-11-29 16:07:58", desc: "补充其他文档" }, + { date: "2020-11-29 16:06:12", desc: "增加查询界面hidden属性" }, { - date: '2020-11-29 16:00:41', - desc: '修复tree节点转换排序可能错乱的问题' + date: "2020-11-29 16:00:41", + desc: "修复tree节点转换排序可能错乱的问题" }, - { date: '2020-11-29 15:43:51', desc: '增加动态隐藏查询页面按钮文档' }, - { date: '2020-11-29 15:23:18', desc: '增加table编辑结束方法' }, - { date: '2020-11-29 15:00:52', desc: '优化登陆页面input标签样式' }, - { date: '2020-11-29 14:58:09', desc: '添加开发忽略文件' }, - { date: '2020-11-22 22:14:38', desc: '清理无用文件' }, - { date: '2020-11-22 18:13:05', desc: '替换logo' }, - { date: '2020-11-22 18:07:02', desc: '更换favicon' }, + { date: "2020-11-29 15:43:51", desc: "增加动态隐藏查询页面按钮文档" }, + { date: "2020-11-29 15:23:18", desc: "增加table编辑结束方法" }, + { date: "2020-11-29 15:00:52", desc: "优化登陆页面input标签样式" }, + { date: "2020-11-29 14:58:09", desc: "添加开发忽略文件" }, + { date: "2020-11-22 22:14:38", desc: "清理无用文件" }, + { date: "2020-11-22 18:13:05", desc: "替换logo" }, + { date: "2020-11-22 18:07:02", desc: "更换favicon" }, { - date: '2020-11-21 20:54:26', - desc: '增加controller返回json原格式方法JsonNormal(默认是驼峰格式)' + date: "2020-11-21 20:54:26", + desc: "增加controller返回json原格式方法JsonNormal(默认是驼峰格式)" }, - { date: '2020-11-21 16:10:30', desc: '优化h5提示信息' }, - { date: '2020-11-21 15:57:15', desc: '优化首页白色主题' }, + { date: "2020-11-21 16:10:30", desc: "优化h5提示信息" }, + { date: "2020-11-21 15:57:15", desc: "优化首页白色主题" }, { - date: '2020-11-21 15:38:29', - desc: '增加表单动态显示与隐藏文档及日志' + date: "2020-11-21 15:38:29", + desc: "增加表单动态显示与隐藏文档及日志" }, { - date: '2020-11-21 15:27:32', - desc: '增加表单动态控制标签显示、隐藏属性hidden' + date: "2020-11-21 15:27:32", + desc: "增加表单动态控制标签显示、隐藏属性hidden" }, - { date: '2020-11-21 14:43:46', desc: '增加EF执行原生sql文档' }, + { date: "2020-11-21 14:43:46", desc: "增加EF执行原生sql文档" }, { - date: '2020-11-21 14:36:18', - desc: '修复sqlserver使用dapper操作AddRange批量写入主键类型判断错误' + date: "2020-11-21 14:36:18", + desc: "修复sqlserver使用dapper操作AddRange批量写入主键类型判断错误" }, - { date: '2020-11-21 14:34:33', desc: '增加代码生成器使用说明' }, + { date: "2020-11-21 14:34:33", desc: "增加代码生成器使用说明" }, { - date: '2020-11-21 14:22:09', - desc: '增加Controller、Service中构造方法获取实例文档,补充代码生成器文档' + date: "2020-11-21 14:22:09", + desc: + "增加Controller、Service中构造方法获取实例文档,补充代码生成器文档" }, - { date: '2020-11-20 23:12:01', desc: '更新sqlserver字典数据库脚本' }, - { date: '2020-11-17 20:26:25', desc: '优化H5表单与http.js' }, - { date: '2020-11-14 15:04:01', desc: '增加快捷查询时日期单选操作' }, - { date: '2020-11-14 15:02:18', desc: '清理mysql开发版脚本' }, - { date: '2020-11-14 14:22:09', desc: '替换刷新token接口' }, - { date: '2020-11-14 14:19:36', desc: '增加h5文档' }, - { date: '2020-11-08 22:06:35', desc: '清理开发版不用数据库脚本' }, - { date: '2020-11-08 21:31:28', desc: '完善首页、菜单功能' }, + { date: "2020-11-20 23:12:01", desc: "更新sqlserver字典数据库脚本" }, + { date: "2020-11-17 20:26:25", desc: "优化H5表单与http.js" }, + { date: "2020-11-14 15:04:01", desc: "增加快捷查询时日期单选操作" }, + { date: "2020-11-14 15:02:18", desc: "清理mysql开发版脚本" }, + { date: "2020-11-14 14:22:09", desc: "替换刷新token接口" }, + { date: "2020-11-14 14:19:36", desc: "增加h5文档" }, + { date: "2020-11-08 22:06:35", desc: "清理开发版不用数据库脚本" }, + { date: "2020-11-08 21:31:28", desc: "完善首页、菜单功能" }, { - date: '2020-11-08 19:47:08', - desc: '优化table对selectList数据源的绑定' + date: "2020-11-08 19:47:08", + desc: "优化table对selectList数据源的绑定" }, - { date: '2020-11-08 19:32:21', desc: '增加菜单列表渲染(与PC菜单同步)' }, - { date: '2020-11-08 17:58:16', desc: '优化H5表单多选功能' }, + { date: "2020-11-08 19:32:21", desc: "增加菜单列表渲染(与PC菜单同步)" }, + { date: "2020-11-08 17:58:16", desc: "优化H5表单多选功能" }, { - date: '2020-11-07 15:10:26', - desc: '增加table点击行选中当前demo及其他文档' + date: "2020-11-07 15:10:26", + desc: "增加table点击行选中当前demo及其他文档" }, { - date: '2020-11-07 15:06:52', - desc: '增加el-table的点击行事件添加到扩展方法中' + date: "2020-11-07 15:06:52", + desc: "增加el-table的点击行事件添加到扩展方法中" }, - { date: '2020-11-07 14:01:35', desc: '增加编辑表单自定义验证demo' }, + { date: "2020-11-07 14:01:35", desc: "增加编辑表单自定义验证demo" }, { - date: '2020-11-07 13:21:47', - desc: '修复model验证不能识别负数的问题' + date: "2020-11-07 13:21:47", + desc: "修复model验证不能识别负数的问题" }, { - date: '2020-11-02 18:49:46', - desc: '修复表单只有一个input时按回车自动提交的问题,修复级联类型判断错误的问题' + date: "2020-11-02 18:49:46", + desc: + "修复表单只有一个input时按回车自动提交的问题,修复级联类型判断错误的问题" }, { - date: '2020-11-01 18:09:26', - desc: '增加框架自动生成iview级联组件及文档' + date: "2020-11-01 18:09:26", + desc: "增加框架自动生成iview级联组件及文档" }, { - date: '2020-11-01 12:43:23', - desc: '增加table显示、隐藏序号、checkbox属性' + date: "2020-11-01 12:43:23", + desc: "增加table显示、隐藏序号、checkbox属性" }, - { date: '2020.10', type: 'month' }, + { date: "2020.10", type: "month" }, { - date: '2020-10-31 19:00:01', - desc: '增加编辑表单第4种render渲染demo' + date: "2020-10-31 19:00:01", + desc: "增加编辑表单第4种render渲染demo" }, - { date: '2020-10-31 18:40:17', desc: '优化H5表单编辑与查询' }, + { date: "2020-10-31 18:40:17", desc: "优化H5表单编辑与查询" }, { - date: '2020-10-30 19:38:50', - desc: '增加动态显示隐藏table列功能及demo、文档' + date: "2020-10-30 19:38:50", + desc: "增加动态显示隐藏table列功能及demo、文档" }, { - date: '2020-10-25 15:47:55', - desc: '添加iview级联组件中 change-on-select属性到volform表单中' + date: "2020-10-25 15:47:55", + desc: "添加iview级联组件中 change-on-select属性到volform表单中" }, { - date: '2020-10-25 15:45:44', - desc: '移植后台页管理面到H5(见H5第4个菜单)' + date: "2020-10-25 15:45:44", + desc: "移植后台页管理面到H5(见H5第4个菜单)" }, { - date: '2020-10-25 15:43:29', - desc: '移植后台页管理面到H5(见H5第4个菜单)' + date: "2020-10-25 15:43:29", + desc: "移植后台页管理面到H5(见H5第4个菜单)" }, - { date: '2020-10-20 12:45:46', desc: '优化自定义sql执行判断条件' }, + { date: "2020-10-20 12:45:46", desc: "优化自定义sql执行判断条件" }, { - date: '2020-10-18 11:06:57', - desc: 'element table编辑时增加iview input组件on-keypress事件' + date: "2020-10-18 11:06:57", + desc: "element table编辑时增加iview input组件on-keypress事件" }, { - date: '2020-10-17 01:01:13', - desc: '增加代码生成器编辑与查询类型time' + date: "2020-10-17 01:01:13", + desc: "增加代码生成器编辑与查询类型time" }, - { date: '2020-10-17 00:56:49', desc: '表单组件增加iview time组件' }, - { date: '2020-10-17 00:43:26', desc: '增加区间查询demo' }, - { date: '2020-10-17 00:35:07', desc: '增加查询表单重置后方法' }, + { date: "2020-10-17 00:56:49", desc: "表单组件增加iview time组件" }, + { date: "2020-10-17 00:43:26", desc: "增加区间查询demo" }, + { date: "2020-10-17 00:35:07", desc: "增加查询表单重置后方法" }, { - date: '2020-10-17 00:05:12', - desc: '增加excel导入时可以添加其他参数' + date: "2020-10-17 00:05:12", + desc: "增加excel导入时可以添加其他参数" }, { - date: '2020-10-16 23:13:57', - desc: '增加上传excel组件时可添加其他参数同时提交到后台' + date: "2020-10-16 23:13:57", + desc: "增加上传excel组件时可添加其他参数同时提交到后台" }, { - date: '2020-10-16 23:11:44', - desc: '修复结束编辑时,element table高版本属性获取不到的问题' + date: "2020-10-16 23:11:44", + desc: "修复结束编辑时,element table高版本属性获取不到的问题" }, { - date: '2020-10-11 18:03:41', - desc: '增加table编辑时点击其他行结束编辑状态(默认鼠标离开结束编辑,)' + date: "2020-10-11 18:03:41", + desc: "增加table编辑时点击其他行结束编辑状态(默认鼠标离开结束编辑,)" }, - { date: '2020-10-11 18:01:13', desc: '增加文档' }, - { date: '2020-10-11 16:59:57', desc: '优化代码生成器table编辑方式' }, - { date: '2020-10-11 15:00:55', desc: '移除table第一行强制排序' }, + { date: "2020-10-11 18:01:13", desc: "增加文档" }, + { date: "2020-10-11 16:59:57", desc: "优化代码生成器table编辑方式" }, + { date: "2020-10-11 15:00:55", desc: "移除table第一行强制排序" }, { - date: '2020-10-09 19:03:06', - desc: '增加路由keepAlive属性设置不缓存组件(默认缓存组件)' + date: "2020-10-09 19:03:06", + desc: "增加路由keepAlive属性设置不缓存组件(默认缓存组件)" }, - { date: '2020.09', type: 'month' }, + { date: "2020.09", type: "month" }, { - date: '2020-09-26 11:49:08', - desc: '修复table编辑时表格验证最大值取值错误的问题' + date: "2020-09-26 11:49:08", + desc: "修复table编辑时表格验证最大值取值错误的问题" }, { - date: '2020-09-26 11:34:59', - desc: '修复远程搜索自定义url不生效的问题' + date: "2020-09-26 11:34:59", + desc: "修复远程搜索自定义url不生效的问题" }, { - date: '2020-09-20 16:33:31', - desc: '移除未实现的EF调用存储过程的方法,增加EF调用原生sql参数化查询FromSqlInterpolated' + date: "2020-09-20 16:33:31", + desc: + "移除未实现的EF调用存储过程的方法,增加EF调用原生sql参数化查询FromSqlInterpolated" }, - { date: '2020-09-20 16:21:01', desc: '增加排序表达式的null判断' }, - { date: '2020-09-20 16:18:36', desc: '修复dapper事务嵌套异常的问题' }, + { date: "2020-09-20 16:21:01", desc: "增加排序表达式的null判断" }, + { date: "2020-09-20 16:18:36", desc: "修复dapper事务嵌套异常的问题" }, { - date: '2020-09-20 16:14:08', - desc: '增加导入excel时,后台对非空数据源的值判断' + date: "2020-09-20 16:14:08", + desc: "增加导入excel时,后台对非空数据源的值判断" }, - { date: '2020-09-20 16:11:22', desc: '优化导入excel文件提示' }, - { date: '2020-09-20 16:10:26', desc: '增加级联@on-change事件' }, - { date: '2020-09-20 15:17:52', desc: '完善文档' }, + { date: "2020-09-20 16:11:22", desc: "优化导入excel文件提示" }, + { date: "2020-09-20 16:10:26", desc: "增加级联@on-change事件" }, + { date: "2020-09-20 15:17:52", desc: "完善文档" }, { - date: '2020-09-13 18:28:00', - desc: '增加表单[FormFields]拼写错误兼容' + date: "2020-09-13 18:28:00", + desc: "增加表单[FormFields]拼写错误兼容" }, - { date: '2020-09-12 00:12:24', desc: '同步数据库mysql/pgsql脚本' }, - { date: '2020-09-12 00:10:49', desc: '完善第二种布局文档及其他文档' }, - { date: '2020-09-11 23:37:07', desc: '增加第二种查询布局方式' }, - { date: '2020-09-06 02:21:01', desc: '完善文档' }, + { date: "2020-09-12 00:12:24", desc: "同步数据库mysql/pgsql脚本" }, + { date: "2020-09-12 00:10:49", desc: "完善第二种布局文档及其他文档" }, + { date: "2020-09-11 23:37:07", desc: "增加第二种查询布局方式" }, + { date: "2020-09-06 02:21:01", desc: "完善文档" }, { - date: '2020-09-06 01:26:30', - desc: '增加table有数据源的列可以移除或自定义显示背景颜色及点击事件;增加添加行方法时设置默认字段(解决编辑状态下编辑值可能不刷新的问题)' + date: "2020-09-06 01:26:30", + desc: + "增加table有数据源的列可以移除或自定义显示背景颜色及点击事件;增加添加行方法时设置默认字段(解决编辑状态下编辑值可能不刷新的问题)" }, { - date: '2020-09-05 23:57:42', - desc: '增加textarea标签的最小高度item.minRows属性' + date: "2020-09-05 23:57:42", + desc: "增加textarea标签的最小高度item.minRows属性" }, { - date: '2020-09-03 14:25:44', - desc: '修复voltable编辑类型为input时onChange不触发的问题' + date: "2020-09-03 14:25:44", + desc: "修复voltable编辑类型为input时onChange不触发的问题" }, { - date: '2020-09-02 09:28:18', - desc: '增加table数据字典key为数字类型时的二次判断' + date: "2020-09-02 09:28:18", + desc: "增加table数据字典key为数字类型时的二次判断" }, - { date: '2020.08', type: 'month' }, - { date: '2020-08-30 19:20:14', desc: '修改开发版说明' }, - { date: '2020-08-30 19:18:24', desc: '修复首页日期星期天不显示的问题' }, + { date: "2020.08", type: "month" }, + { date: "2020-08-30 19:20:14", desc: "修改开发版说明" }, + { date: "2020-08-30 19:18:24", desc: "修复首页日期星期天不显示的问题" }, { - date: '2020-08-30 18:36:07', - desc: '增加从编辑框中再弹出框选择数据文档及其他文档完善' + date: "2020-08-30 18:36:07", + desc: "增加从编辑框中再弹出框选择数据文档及其他文档完善" }, - { date: '2020-08-30 15:42:49', desc: '优化导入成功后的提示信息' }, + { date: "2020-08-30 15:42:49", desc: "优化导入成功后的提示信息" }, { - date: '2020-08-29 01:29:33', - desc: '添加table设置分页条大小、获取table所有行、获取table选中的行文档' + date: "2020-08-29 01:29:33", + desc: + "添加table设置分页条大小、获取table所有行、获取table选中的行文档" }, { - date: '2020-08-29 00:42:04', - desc: '增加table组件设置默认分页条大小' + date: "2020-08-29 00:42:04", + desc: "增加table组件设置默认分页条大小" }, - { date: '2020-08-29 00:40:25', desc: '增加table组件设置分页条大小' }, + { date: "2020-08-29 00:40:25", desc: "增加table组件设置分页条大小" }, { - date: '2020-08-29 00:10:36', - desc: '优化数据源配置自定义sql提示信息' + date: "2020-08-29 00:10:36", + desc: "优化数据源配置自定义sql提示信息" }, { - date: '2020-08-28 23:58:09', - desc: '修复个人中心性别字段数据源配置错误的问题' + date: "2020-08-28 23:58:09", + desc: "修复个人中心性别字段数据源配置错误的问题" }, { - date: '2020-08-28 23:49:31', - desc: '优化用户管理页面新建用户后提示信息' + date: "2020-08-28 23:49:31", + desc: "优化用户管理页面新建用户后提示信息" }, { - date: '2020-08-26 19:17:34', - desc: '增加编辑表动态设置只读,select事件触发文档' + date: "2020-08-26 19:17:34", + desc: "增加编辑表动态设置只读,select事件触发文档" }, - { date: '2020-08-25 19:30:28', desc: '完善文档' }, - { date: '2020-08-22 04:04:42', desc: '添加多数据库访问、分库文档' }, - { date: '2020-08-18 18:55:12', desc: '完善文档' }, + { date: "2020-08-25 19:30:28", desc: "完善文档" }, + { date: "2020-08-22 04:04:42", desc: "添加多数据库访问、分库文档" }, + { date: "2020-08-18 18:55:12", desc: "完善文档" }, { - date: '2020-08-16 23:01:30', - desc: '增加表单、table输入值后实时计算文档。增加项目启动异常处理方法文档' + date: "2020-08-16 23:01:30", + desc: + "增加表单、table输入值后实时计算文档。增加项目启动异常处理方法文档" }, - { date: '2020-08-15 03:20:56', desc: '完善文档' }, + { date: "2020-08-15 03:20:56", desc: "完善文档" }, { - date: '2020-08-15 03:19:28', - desc: '增加多租户过滤,增加自定义原生sql查询' + date: "2020-08-15 03:19:28", + desc: "增加多租户过滤,增加自定义原生sql查询" }, { - date: '2020-08-12 15:16:58', - desc: '增加pgsql代码生成器timestamp字段类型' + date: "2020-08-12 15:16:58", + desc: "增加pgsql代码生成器timestamp字段类型" }, { - date: '2020-08-08 10:39:04', - desc: '修复退出登陆切换帐号后权限缓存没刷新的问题' + date: "2020-08-08 10:39:04", + desc: "修复退出登陆切换帐号后权限缓存没刷新的问题" }, { - date: '2020-08-07 21:08:18', - desc: '增加删除菜单功能,增加新建菜单时默认选中查询按钮权限' + date: "2020-08-07 21:08:18", + desc: "增加删除菜单功能,增加新建菜单时默认选中查询按钮权限" }, - { date: '2020-08-07 20:15:33', desc: '提供pgsql最新数据库脚本' }, - { date: '2020-08-07 20:05:45', desc: '完善对PGSQL数据库的支持' }, - { date: '2020-08-05 09:59:52', desc: '添加从表编辑时添加行的文档说明' }, - { date: '2020-08-05 09:58:17', desc: '修正pgsql表结构大小写问题' }, - { date: '2020-08-03 00:48:52', desc: '增加H5项目' }, - { date: '2020-08-01 20:57:07', desc: '移除无用代码' }, - { date: '2020-08-01 19:43:49', desc: '统一mysql脚本表名大写' }, + { date: "2020-08-07 20:15:33", desc: "提供pgsql最新数据库脚本" }, + { date: "2020-08-07 20:05:45", desc: "完善对PGSQL数据库的支持" }, + { date: "2020-08-05 09:59:52", desc: "添加从表编辑时添加行的文档说明" }, + { date: "2020-08-05 09:58:17", desc: "修正pgsql表结构大小写问题" }, + { date: "2020-08-03 00:48:52", desc: "增加H5项目" }, + { date: "2020-08-01 20:57:07", desc: "移除无用代码" }, + { date: "2020-08-01 19:43:49", desc: "统一mysql脚本表名大写" }, { - date: '2020-08-01 19:22:38', - desc: '修复Dapper删除方法执行错误的问题' + date: "2020-08-01 19:22:38", + desc: "修复Dapper删除方法执行错误的问题" }, - { date: '2020.07', type: 'month' }, + { date: "2020.07", type: "month" }, { - date: '2020-07-31 20:18:18', - desc: '增加手动打开与关闭tabs导航功能及文档' + date: "2020-07-31 20:18:18", + desc: "增加手动打开与关闭tabs导航功能及文档" }, - { date: '2020-07-31 20:16:24', desc: '增加用户管理页面修改密码功能' }, - { date: '2020-07-31 20:12:06', desc: '修复权限枚举值遍历错误的问题' }, - { date: '2020-07-24 19:05:22', desc: '修改项目说明' }, + { date: "2020-07-31 20:16:24", desc: "增加用户管理页面修改密码功能" }, + { date: "2020-07-31 20:12:06", desc: "修复权限枚举值遍历错误的问题" }, + { date: "2020-07-24 19:05:22", desc: "修改项目说明" }, { - date: '2020-07-24 19:01:09', - desc: '增加form与table中日期onChange事件及文档' + date: "2020-07-24 19:01:09", + desc: "增加form与table中日期onChange事件及文档" }, - { date: '2020-07-21 13:55:20', desc: '完善一对多保存Demo' }, - { date: '2020-07-19 01:31:54', desc: '替换redis组件CSReidsCore' }, + { date: "2020-07-21 13:55:20", desc: "完善一对多保存Demo" }, + { date: "2020-07-19 01:31:54", desc: "替换redis组件CSReidsCore" }, { - date: '2020-07-19 00:56:59', - desc: '回滚表单验证方法,修正表单验证方法文档' + date: "2020-07-19 00:56:59", + desc: "回滚表单验证方法,修正表单验证方法文档" }, { - date: '2020-07-17 13:19:45', - desc: '修复表单日期提示不消失的问题,增加表单强制同步验证' + date: "2020-07-17 13:19:45", + desc: "修复表单日期提示不消失的问题,增加表单强制同步验证" }, { - date: '2020-07-10 16:33:03', - desc: '修复登陆页IE底部显示问题、优化首页菜单border、修改代码生成器字段描述' + date: "2020-07-10 16:33:03", + desc: + "修复登陆页IE底部显示问题、优化首页菜单border、修改代码生成器字段描述" }, - { date: '2020.06', type: 'month' }, - { date: '2020-06-26 18:43:14', desc: '添加首页大屏显示' }, + { date: "2020.06", type: "month" }, + { date: "2020-06-26 18:43:14", desc: "添加首页大屏显示" }, { - date: '2020-06-25 23:41:03', - desc: '添加代码生成器对mysql字段smallint类型的支持' + date: "2020-06-25 23:41:03", + desc: "添加代码生成器对mysql字段smallint类型的支持" }, - { date: '2020-06-25 23:13:04', desc: '添加导出前方法处理及文档' }, + { date: "2020-06-25 23:13:04", desc: "添加导出前方法处理及文档" }, { - date: '2020-06-25 23:03:24', - desc: '增加onActivated方法(vue原生activated方法)' + date: "2020-06-25 23:03:24", + desc: "增加onActivated方法(vue原生activated方法)" }, - { date: '2020-06-25 22:40:58', desc: '修复查询条件非法字段null过滤' }, - { date: '2020-06-24 17:15:51', desc: '优化登陆按钮操作(禁止重复点击)' }, + { date: "2020-06-25 22:40:58", desc: "修复查询条件非法字段null过滤" }, + { date: "2020-06-24 17:15:51", desc: "优化登陆按钮操作(禁止重复点击)" }, { - date: '2020-06-24 12:02:24', - desc: '修复select/selectList手动绑定数据源时key为数字0时的异常' + date: "2020-06-24 12:02:24", + desc: "修复select/selectList手动绑定数据源时key为数字0时的异常" }, { - date: '2020-06-20 02:17:52', - desc: '增加volform、voltable对原生render的支持(现可任意扩展其他组件到form与table)' + date: "2020-06-20 02:17:52", + desc: + "增加volform、voltable对原生render的支持(现可任意扩展其他组件到form与table)" }, - { date: '2020-06-20 00:44:33', desc: '优化首页、首页皮肤' }, + { date: "2020-06-20 00:44:33", desc: "优化首页、首页皮肤" }, { - date: '2020-06-17 16:19:18', - desc: '修复增加pgsql后,代码生成器判断类型错误的问题' + date: "2020-06-17 16:19:18", + desc: "修复增加pgsql后,代码生成器判断类型错误的问题" }, - { date: '2020-06-16 09:50:17', desc: '增加登陆自动验证验证、UUID参数' }, + { date: "2020-06-16 09:50:17", desc: "增加登陆自动验证验证、UUID参数" }, { - date: '2020-06-16 09:45:54', - desc: '重写登陆页面样式、增加登陆验证码、回车登陆' + date: "2020-06-16 09:45:54", + desc: "重写登陆页面样式、增加登陆验证码、回车登陆" }, - { date: '2020-06-15 18:59:30', desc: '增加Dapper事务封装及文档' }, + { date: "2020-06-15 18:59:30", desc: "增加Dapper事务封装及文档" }, { - date: '2020-06-15 13:30:41', - desc: '修复Dapper使用DbTransaction后没有释放的问题' + date: "2020-06-15 13:30:41", + desc: "修复Dapper使用DbTransaction后没有释放的问题" }, - { date: '2020-06-14 21:53:33', desc: '增加pgsql脚本' }, + { date: "2020-06-14 21:53:33", desc: "增加pgsql脚本" }, { - date: '2020-06-14 21:52:17', - desc: '增pgsql支持(生成代码获取表结构,同步表结构待完)' + date: "2020-06-14 21:52:17", + desc: "增pgsql支持(生成代码获取表结构,同步表结构待完)" }, - { date: '2020-06-14 17:30:48', desc: 'Update appsettings.json' }, - { date: '2020-06-14 16:38:58', desc: '增加对mysql数据类型double区分' }, + { date: "2020-06-14 17:30:48", desc: "Update appsettings.json" }, + { date: "2020-06-14 16:38:58", desc: "增加对mysql数据类型double区分" }, { - date: '2020-06-14 16:12:12', - desc: '增加代码生成器pgsql实体直实表名使用小写,dapper获取pgsql的NpgsqlConnection' + date: "2020-06-14 16:12:12", + desc: + "增加代码生成器pgsql实体直实表名使用小写,dapper获取pgsql的NpgsqlConnection" }, - { date: '2020-06-14 15:28:33', desc: '增加pgsql数据库配置' }, + { date: "2020-06-14 15:28:33", desc: "增加pgsql数据库配置" }, { - date: '2020-06-14 15:20:50', - desc: 'Merge pull request #81 from xuegaoge/master' + date: "2020-06-14 15:20:50", + desc: "Merge pull request #81 from xuegaoge/master" }, - { date: '2020-06-07 14:49:00', desc: '修复级联操作文档描述错误的问题' }, + { date: "2020-06-07 14:49:00", desc: "修复级联操作文档描述错误的问题" }, { - date: '2020-06-06 22:51:34', - desc: '编辑表单类型selectList数据源为自定义sql并且key是数字时,强制转换成字符串' + date: "2020-06-06 22:51:34", + desc: + "编辑表单类型selectList数据源为自定义sql并且key是数字时,强制转换成字符串" }, { - date: '2020-06-06 22:47:43', - desc: '修改select编辑时手动级联文档说明' + date: "2020-06-06 22:47:43", + desc: "修改select编辑时手动级联文档说明" }, { - date: '2020-06-06 21:54:42', - desc: '增加代码生成器文档,对select/selectList自定义sql数据源,在编辑时无法绑定默认值的问题说明' + date: "2020-06-06 21:54:42", + desc: + "增加代码生成器文档,对select/selectList自定义sql数据源,在编辑时无法绑定默认值的问题说明" }, { - date: '2020-06-06 20:36:16', - desc: '修复数据源为selectList时,key为数字0时不能转换文本的问题' + date: "2020-06-06 20:36:16", + desc: "修复数据源为selectList时,key为数字0时不能转换文本的问题" }, { - date: '2020-06-06 20:02:51', - desc: '修复单独使用table组件时,key为数字0时转换成文本失败的问题' + date: "2020-06-06 20:02:51", + desc: "修复单独使用table组件时,key为数字0时转换成文本失败的问题" }, { - date: '2020-06-03 14:03:18', - desc: '增加voltabl文字对齐方式align(原生element table align属性)' + date: "2020-06-03 14:03:18", + desc: "增加voltabl文字对齐方式align(原生element table align属性)" }, { - date: '2020-06-03 13:43:26', - desc: '优化路由切换加载状态,增加select手动级联文档' + date: "2020-06-03 13:43:26", + desc: "优化路由切换加载状态,增加select手动级联文档" }, { - date: '2020-06-03 11:57:49', - desc: '增加切换时路由加载提示(以前路由切换有明细卡顿现象)' + date: "2020-06-03 11:57:49", + desc: "增加切换时路由加载提示(以前路由切换有明细卡顿现象)" }, - { date: '2020-06-03 10:27:26', desc: '优化权限分配左侧tree固定宽度' }, + { date: "2020-06-03 10:27:26", desc: "优化权限分配左侧tree固定宽度" }, { - date: '2020-06-02 14:52:55', - desc: '修复首页关闭tabs时,可能关闭两个tabs的问题' + date: "2020-06-02 14:52:55", + desc: "修复首页关闭tabs时,可能关闭两个tabs的问题" }, { - date: '2020-06-02 14:39:17', - desc: '修复使用表别名时读取不到配置信息' + date: "2020-06-02 14:39:17", + desc: "修复使用表别名时读取不到配置信息" }, - { date: '2020-06-01 13:22:21', desc: '增加http请求使用文档' }, + { date: "2020-06-01 13:22:21", desc: "增加http请求使用文档" }, { - date: '2020-06-01 13:16:58', - desc: '增加[前端开发]级联文档与对象转换tree结构文档' + date: "2020-06-01 13:16:58", + desc: "增加[前端开发]级联文档与对象转换tree结构文档" }, - { date: '2020-06-01 12:57:20', desc: '增加顶部导tabs超出后滚动' }, + { date: "2020-06-01 12:57:20", desc: "增加顶部导tabs超出后滚动" }, { - date: '2020-06-01 12:55:50', - desc: '增加功能将普通对象转换为tree结构' + date: "2020-06-01 12:55:50", + desc: "增加功能将普通对象转换为tree结构" }, - { date: '2020.05', type: 'month' }, + { date: "2020.05", type: "month" }, { - date: '2020-05-31 23:15:20', - desc: '集成iview级联组件cascader到框架volform、viewgrid组件中;增加级联操作文档' + date: "2020-05-31 23:15:20", + desc: + "集成iview级联组件cascader到框架volform、viewgrid组件中;增加级联操作文档" }, - { date: '2020-05-31 21:15:33', desc: '移除无用文件夹test' }, + { date: "2020-05-31 21:15:33", desc: "移除无用文件夹test" }, { - date: '2020-05-31 15:45:37', - desc: '优化角色管理页面及角色service代码' + date: "2020-05-31 15:45:37", + desc: "优化角色管理页面及角色service代码" }, - { date: '2020-05-30 20:13:09', desc: 'mysql最新脚本' }, - { date: '2020-05-29 14:57:23', desc: '修复mysql异常说明' }, + { date: "2020-05-30 20:13:09", desc: "mysql最新脚本" }, + { date: "2020-05-29 14:57:23", desc: "修复mysql异常说明" }, { - date: '2020-05-25 00:43:43', - desc: '角色权限分配,权限列表改为树形菜单' + date: "2020-05-25 00:43:43", + desc: "角色权限分配,权限列表改为树形菜单" }, { - date: '2020-05-25 00:16:10', - desc: '修复http同时发起多个请求时,遮罩层不能正确关闭的问题' + date: "2020-05-25 00:16:10", + desc: "修复http同时发起多个请求时,遮罩层不能正确关闭的问题" }, - { date: '2020-05-24 20:35:15', desc: '增加代码生成器常用问题描述' }, - { date: '2020-05-17 15:17:01', desc: '优化首页tab选项卡border样式' }, + { date: "2020-05-24 20:35:15", desc: "增加代码生成器常用问题描述" }, + { date: "2020-05-17 15:17:01", desc: "优化首页tab选项卡border样式" }, { - date: '2020-05-17 15:04:17', - desc: '修复代码生成器mysql获取表结构没有区分数据库的问题(感谢jerry指正)' + date: "2020-05-17 15:04:17", + desc: + "修复代码生成器mysql获取表结构没有区分数据库的问题(感谢jerry指正)" }, - { date: '2020-05-12 10:08:23', desc: '优化手动上传组件图片选择器' }, + { date: "2020-05-12 10:08:23", desc: "优化手动上传组件图片选择器" }, { - date: '2020-05-08 11:16:44', - desc: '添加mysql写入日志异常提示解决办法' + date: "2020-05-08 11:16:44", + desc: "添加mysql写入日志异常提示解决办法" }, - { date: '2020-05-08 11:13:09', desc: '补全mysql数据库字典编号' }, + { date: "2020-05-08 11:13:09", desc: "补全mysql数据库字典编号" }, { - date: '2020-05-07 18:43:31', - desc: '修改菜单与角色的父级id出现循环依赖时,给出提示并禁止修改' + date: "2020-05-07 18:43:31", + desc: "修改菜单与角色的父级id出现循环依赖时,给出提示并禁止修改" }, { - date: '2020-05-07 14:46:08', - desc: '增加(导入、下载导入模板、导出表数据)时可以指定导入与导出字段(默认为界面上可以看到的字段)' + date: "2020-05-07 14:46:08", + desc: + "增加(导入、下载导入模板、导出表数据)时可以指定导入与导出字段(默认为界面上可以看到的字段)" }, { - date: '2020-05-03 12:12:08', - desc: '增加代码生成页面对checkbox编辑时多选的支持' + date: "2020-05-03 12:12:08", + desc: "增加代码生成页面对checkbox编辑时多选的支持" }, { - date: '2020-05-02 20:03:49', - desc: '完善编辑器静态页面发布上传图片功能' + date: "2020-05-02 20:03:49", + desc: "完善编辑器静态页面发布上传图片功能" }, - { date: '2020-05-01 21:43:26', desc: '增加可根据用户信息自定义数据源' }, - { date: '2020.04', type: 'month' }, - { date: '2020-04-27 11:00:50', desc: '更新数据库最新菜单表的脚本' }, - { date: '2020-04-27 10:36:55', desc: '添加全局缓存与读写分离文档' }, - { date: '2020-04-27 10:02:28', desc: '优化用户保存' }, - { date: '2020-04-26 20:08:41', desc: '增加树形菜单与table' }, - { date: '2020-04-25 20:36:49', desc: '文档整理' }, + { date: "2020-05-01 21:43:26", desc: "增加可根据用户信息自定义数据源" }, + { date: "2020.04", type: "month" }, + { date: "2020-04-27 11:00:50", desc: "更新数据库最新菜单表的脚本" }, + { date: "2020-04-27 10:36:55", desc: "添加全局缓存与读写分离文档" }, + { date: "2020-04-27 10:02:28", desc: "优化用户保存" }, + { date: "2020-04-26 20:08:41", desc: "增加树形菜单与table" }, + { date: "2020-04-25 20:36:49", desc: "文档整理" }, { - date: '2020-04-25 20:00:56', - desc: '预留非对称主外键关系配置功能,待开发' + date: "2020-04-25 20:00:56", + desc: "预留非对称主外键关系配置功能,待开发" }, - { date: '2020-04-25 11:16:57', desc: '优化白色主题菜单颜色' }, - { date: '2020-04-25 10:18:45', desc: '添加获取用户权限的重载方法' }, + { date: "2020-04-25 11:16:57", desc: "优化白色主题菜单颜色" }, + { date: "2020-04-25 10:18:45", desc: "添加获取用户权限的重载方法" }, { - date: '2020-04-25 10:09:10', - desc: '优化上传组件图片选择器默认大小图' + date: "2020-04-25 10:09:10", + desc: "优化上传组件图片选择器默认大小图" }, - { date: '2020-04-24 18:10:44', desc: '增加EF更新时并发重试处理' }, + { date: "2020-04-24 18:10:44", desc: "增加EF更新时并发重试处理" }, { - date: '2020-04-24 11:45:29', - desc: '修复导出数据源为自定义sql,类型转换异常的问题' + date: "2020-04-24 11:45:29", + desc: "修复导出数据源为自定义sql,类型转换异常的问题" }, { - date: '2020-04-21 23:00:06', - desc: '增加没有编辑或新建权限时,也可以通过buttons属性添加自定义弹出框按钮' + date: "2020-04-21 23:00:06", + desc: + "增加没有编辑或新建权限时,也可以通过buttons属性添加自定义弹出框按钮" }, - { date: '2020-04-21 20:17:25', desc: '修复首页字符拼写错误' }, - { date: '2020-04-21 10:58:15', desc: '将默认皮肤黑色改为蓝色' }, + { date: "2020-04-21 20:17:25", desc: "修复首页字符拼写错误" }, + { date: "2020-04-21 10:58:15", desc: "将默认皮肤黑色改为蓝色" }, { - date: '2020-04-20 14:43:39', - desc: '修复动态刷新数据源文档描述错误的问题' + date: "2020-04-20 14:43:39", + desc: "修复动态刷新数据源文档描述错误的问题" }, { - date: '2020-04-14 19:55:14', - desc: '增加Mysql数据库使用Dapper批量修改实体功能' + date: "2020-04-14 19:55:14", + desc: "增加Mysql数据库使用Dapper批量修改实体功能" }, - { date: '2020-04-11 21:20:04', desc: '增加项目部署及部署错误处理文档' }, - { date: '2020-04-11 18:49:33', desc: '移除使用了C#8.0语法的代码' }, + { date: "2020-04-11 21:20:04", desc: "增加项目部署及部署错误处理文档" }, + { date: "2020-04-11 18:49:33", desc: "移除使用了C#8.0语法的代码" }, { - date: '2020-04-10 13:05:23', - desc: '修复自定义sql数据源key为数字时,表单查询时条件不起作用的问题' + date: "2020-04-10 13:05:23", + desc: "修复自定义sql数据源key为数字时,表单查询时条件不起作用的问题" }, { - date: '2020-04-10 10:01:43', - desc: '添加table列为编辑列时可formatter操作' + date: "2020-04-10 10:01:43", + desc: "添加table列为编辑列时可formatter操作" }, - { date: '2020-04-07 23:43:16', desc: '完善文档' }, - { date: '2020-04-07 22:02:49', desc: '增加数字排版' }, + { date: "2020-04-07 23:43:16", desc: "完善文档" }, + { date: "2020-04-07 22:02:49", desc: "增加数字排版" }, { - date: '2020-04-07 21:41:24', - desc: '增加主从表,可单独对从表上传图片(文件)功能' + date: "2020-04-07 21:41:24", + desc: "增加主从表,可单独对从表上传图片(文件)功能" }, - { date: '2020-04-05 21:21:18', desc: '优化菜单保存后提示信息' }, - { date: '2020-04-05 20:48:02', desc: '优化排序字段' }, + { date: "2020-04-05 21:21:18", desc: "优化菜单保存后提示信息" }, + { date: "2020-04-05 20:48:02", desc: "优化排序字段" }, { - date: '2020-04-05 11:29:36', - desc: '修复实体全属性校验判断错误的问题' + date: "2020-04-05 11:29:36", + desc: "修复实体全属性校验判断错误的问题" }, { - date: '2020-04-04 12:44:56', - desc: '优化voltable组件单独使用时数据绑定select的key类型' + date: "2020-04-04 12:44:56", + desc: "优化voltable组件单独使用时数据绑定select的key类型" }, { - date: '2020-04-03 23:13:05', - desc: '移除无用代码,增加一对多(不限从表数量)实战开发' + date: "2020-04-03 23:13:05", + desc: "移除无用代码,增加一对多(不限从表数量)实战开发" }, - { date: '2020-04-03 23:07:04', desc: '添加最新菜单脚本' }, - { date: '2020-04-02 18:26:41', desc: '优化皮肤样式' }, - { date: '2020-04-02 17:47:23', desc: '增加换皮肤功能' }, + { date: "2020-04-03 23:07:04", desc: "添加最新菜单脚本" }, + { date: "2020-04-02 18:26:41", desc: "优化皮肤样式" }, + { date: "2020-04-02 17:47:23", desc: "增加换皮肤功能" }, { - date: '2020-04-02 17:43:59', - desc: '修复点击非标准菜单可以重复显示的问题' + date: "2020-04-02 17:43:59", + desc: "修复点击非标准菜单可以重复显示的问题" }, - { date: '2020-04-02 17:36:23', desc: '增加皮肤切换功能' }, - { date: '2020.03', type: 'month' }, + { date: "2020-04-02 17:36:23", desc: "增加皮肤切换功能" }, + { date: "2020.03", type: "month" }, { - date: '2020-03-31 18:37:56', - desc: '增加Dapper对mysql数据库Guid映射' + date: "2020-03-31 18:37:56", + desc: "增加Dapper对mysql数据库Guid映射" }, - { date: '2020-03-31 13:47:14', desc: '增加查询按钮组非递归深拷贝' }, + { date: "2020-03-31 13:47:14", desc: "增加查询按钮组非递归深拷贝" }, { - date: '2020-03-30 20:42:58', - desc: '添加一对一从表编辑或新建时,可设置hidden属性控制按钮显示/隐藏' + date: "2020-03-30 20:42:58", + desc: "添加一对一从表编辑或新建时,可设置hidden属性控制按钮显示/隐藏" }, - { date: '2020-03-29 09:56:00', desc: '优化菜单保存验证' }, - { date: '2020-03-28 19:30:39', desc: '增加文件上传时可选择追加文件' }, - { date: '2020-03-27 20:17:57', desc: '优化axios请求失败提示' }, - { date: '2020-03-25 17:10:01', desc: '优化扩展排序' }, + { date: "2020-03-29 09:56:00", desc: "优化菜单保存验证" }, + { date: "2020-03-28 19:30:39", desc: "增加文件上传时可选择追加文件" }, + { date: "2020-03-27 20:17:57", desc: "优化axios请求失败提示" }, + { date: "2020-03-25 17:10:01", desc: "优化扩展排序" }, { - date: '2020-03-24 10:10:30', - desc: '移除mysql连接字符串AllowLoadLocalInfile属性' + date: "2020-03-24 10:10:30", + desc: "移除mysql连接字符串AllowLoadLocalInfile属性" }, - { date: '2020-03-23 19:10:26', desc: '修改代码生成器文档参数描述' }, - { date: '2020-03-19 23:28:22', desc: '文档整理' }, + { date: "2020-03-23 19:10:26", desc: "修改代码生成器文档参数描述" }, + { date: "2020-03-19 23:28:22", desc: "文档整理" }, { - date: '2020-03-19 21:50:16', - desc: '修复table表格属性为img多图片时不能预览大图的问题' + date: "2020-03-19 21:50:16", + desc: "修复table表格属性为img多图片时不能预览大图的问题" }, { - date: '2020-03-18 22:10:29', - desc: '导出数据时,默认导出table上可见的列' + date: "2020-03-18 22:10:29", + desc: "导出数据时,默认导出table上可见的列" }, - { date: '2020-03-18 22:07:11', desc: '修改备注说明' }, - { date: '2020-03-17 13:00:17', desc: '优化菜单自定义按权限按钮显示' }, - { date: '2020-03-15 21:55:10', desc: '添加预请求过期时间' }, - { date: '2020-03-15 20:42:55', desc: '移除后台校验日期限制' }, - { date: '2020-03-15 20:42:13', desc: '优化多值in查询' }, - { date: '2020-03-15 20:41:41', desc: '优化table图片显示' }, + { date: "2020-03-18 22:07:11", desc: "修改备注说明" }, + { date: "2020-03-17 13:00:17", desc: "优化菜单自定义按权限按钮显示" }, + { date: "2020-03-15 21:55:10", desc: "添加预请求过期时间" }, + { date: "2020-03-15 20:42:55", desc: "移除后台校验日期限制" }, + { date: "2020-03-15 20:42:13", desc: "优化多值in查询" }, + { date: "2020-03-15 20:41:41", desc: "优化table图片显示" }, { - date: '2020-03-14 14:32:50', - desc: '添加table编辑demo,增加文档说明' + date: "2020-03-14 14:32:50", + desc: "添加table编辑demo,增加文档说明" }, { - date: '2020-03-14 13:29:14', - desc: '增加table组件可始终开启编辑状态,增加单元格编辑类型switch组件onChange事件' + date: "2020-03-14 13:29:14", + desc: + "增加table组件可始终开启编辑状态,增加单元格编辑类型switch组件onChange事件" }, { - date: '2020-03-12 19:41:52', - desc: '增加viewgird组件可手动刷新字典数据源方法reloadDicSource' + date: "2020-03-12 19:41:52", + desc: "增加viewgird组件可手动刷新字典数据源方法reloadDicSource" }, - { date: '2020-03-12 10:44:59', desc: '优化select自动开启查询' }, - { date: '2020-03-10 17:26:21', desc: '优化多字段排序' }, - { date: '2020-03-10 11:13:55', desc: '优化查询排序' }, - { date: '2020-03-09 13:26:01', desc: '优化快速查询字段数据源绑定' }, - { date: '2020-03-09 09:42:51', desc: '移除对map文件的打包' }, + { date: "2020-03-12 10:44:59", desc: "优化select自动开启查询" }, + { date: "2020-03-10 17:26:21", desc: "优化多字段排序" }, + { date: "2020-03-10 11:13:55", desc: "优化查询排序" }, + { date: "2020-03-09 13:26:01", desc: "优化快速查询字段数据源绑定" }, + { date: "2020-03-09 09:42:51", desc: "移除对map文件的打包" }, { - date: '2020-03-09 09:42:10', - desc: '修复快速查询字段数据源无法绑定的问题绑定' + date: "2020-03-09 09:42:10", + desc: "修复快速查询字段数据源无法绑定的问题绑定" }, - { date: '2020-03-03 16:55:22', desc: '优化代码生成器' }, - { date: '2020-03-03 15:44:52', desc: '添加文档说明' }, - { date: '2020-03-03 12:20:45', desc: '优化配置文件与demo' }, - { date: '2020-03-02 22:37:43', desc: '优化加载提示' }, - { date: '2020-03-02 20:15:26', desc: '优化表单验证及代码生成器' }, - { date: '2020.02', type: 'month' }, - { date: '2020-02-23 18:37:32', desc: '文档整理' }, - { date: '2020-02-14 21:45:38', desc: '优化单选事件触发' }, - { date: '2020-02-12 23:13:29', desc: '修改表单验证不能同步的问题' }, + { date: "2020-03-03 16:55:22", desc: "优化代码生成器" }, + { date: "2020-03-03 15:44:52", desc: "添加文档说明" }, + { date: "2020-03-03 12:20:45", desc: "优化配置文件与demo" }, + { date: "2020-03-02 22:37:43", desc: "优化加载提示" }, + { date: "2020-03-02 20:15:26", desc: "优化表单验证及代码生成器" }, + { date: "2020.02", type: "month" }, + { date: "2020-02-23 18:37:32", desc: "文档整理" }, + { date: "2020-02-14 21:45:38", desc: "优化单选事件触发" }, + { date: "2020-02-12 23:13:29", desc: "修改表单验证不能同步的问题" }, { - date: '2020-02-08 14:43:21', - desc: '修复element table表格缩放后错行的问题' + date: "2020-02-08 14:43:21", + desc: "修复element table表格缩放后错行的问题" }, - { date: '2020-02-07 17:38:42', desc: '增加table选中行事件及demo' }, - { date: '2020-02-06 14:08:52', desc: '移除未使用旧项目vol.web' }, + { date: "2020-02-07 17:38:42", desc: "增加table选中行事件及demo" }, + { date: "2020-02-06 14:08:52", desc: "移除未使用旧项目vol.web" }, { - date: '2020-02-06 11:26:09', - desc: '移除未使用的未分离旧项目vol.web' + date: "2020-02-06 11:26:09", + desc: "移除未使用的未分离旧项目vol.web" }, { - date: '2020-02-04 14:11:38', - desc: '修复代码生成器项目命名空间加载无效的的问题' + date: "2020-02-04 14:11:38", + desc: "修复代码生成器项目命名空间加载无效的的问题" }, { - date: '2020-02-04 10:58:01', - desc: '修复select远程搜索数组分割错误的问题及select清空时同时清空数据源' + date: "2020-02-04 10:58:01", + desc: + "修复select远程搜索数组分割错误的问题及select清空时同时清空数据源" }, - { date: '2020-02-02 21:19:20', desc: '表单优化' }, + { date: "2020-02-02 21:19:20", desc: "表单优化" }, { - date: '2020-02-02 20:42:19', - desc: '优化el-scrollbar滚动条z-index属性' + date: "2020-02-02 20:42:19", + desc: "优化el-scrollbar滚动条z-index属性" }, - { date: '2020-02-02 19:47:31', desc: '修改model样式z-index' }, - { date: '2020-02-02 17:25:46', desc: '增加可复用的后台通用参数校验' }, - { date: '2020-02-02 14:47:51', desc: '更新版本' }, - { date: '2020-02-01 23:09:10', desc: '优化远程搜索' }, - { date: '2020-02-01 12:31:59', desc: '基础组件优化' }, + { date: "2020-02-02 19:47:31", desc: "修改model样式z-index" }, + { date: "2020-02-02 17:25:46", desc: "增加可复用的后台通用参数校验" }, + { date: "2020-02-02 14:47:51", desc: "更新版本" }, + { date: "2020-02-01 23:09:10", desc: "优化远程搜索" }, + { date: "2020-02-01 12:31:59", desc: "基础组件优化" }, { - date: '2020-02-01 01:16:09', - desc: '升级.netcore 3.1更新配置(位置已标注)' + date: "2020-02-01 01:16:09", + desc: "升级.netcore 3.1更新配置(位置已标注)" }, - { date: '2020-02-01 01:13:50', desc: '框架更新至.netcore 3.1' }, - { date: '2020-02-01 01:07:12', desc: '整理文档' }, - { date: '2020-02-01 00:58:43', desc: '优化远程搜索' }, - { date: '2020.01', type: 'month' }, - { date: '2020-01-21 21:50:39', desc: '增加table表单求和实时计算' }, - { date: '2020-01-06 12:02:50', desc: '优化代码生成器table高度适应' }, - { date: '2020-01-06 11:55:53', desc: '消息提示时间延长到5秒' }, - { date: '2020-01-05 23:19:43', desc: '优化表单远程搜索' }, - { date: '2020-01-05 22:45:17', desc: '优化table显示select多选编辑' }, - { date: '2020-01-05 22:10:43', desc: '添加字典远程搜索与文档' }, + { date: "2020-02-01 01:13:50", desc: "框架更新至.netcore 3.1" }, + { date: "2020-02-01 01:07:12", desc: "整理文档" }, + { date: "2020-02-01 00:58:43", desc: "优化远程搜索" }, + { date: "2020.01", type: "month" }, + { date: "2020-01-21 21:50:39", desc: "增加table表单求和实时计算" }, + { date: "2020-01-06 12:02:50", desc: "优化代码生成器table高度适应" }, + { date: "2020-01-06 11:55:53", desc: "消息提示时间延长到5秒" }, + { date: "2020-01-05 23:19:43", desc: "优化表单远程搜索" }, + { date: "2020-01-05 22:45:17", desc: "优化table显示select多选编辑" }, + { date: "2020-01-05 22:10:43", desc: "添加字典远程搜索与文档" }, { - date: '2020-01-05 19:33:19', - desc: '增加编辑时支持key.value对应的多选' + date: "2020-01-05 19:33:19", + desc: "增加编辑时支持key.value对应的多选" }, - { date: '2020-01-02 16:43:02', desc: '最新mysql表' }, + { date: "2020-01-02 16:43:02", desc: "最新mysql表" }, { - date: '2020-01-02 12:52:51', - desc: '添加编辑、新建时支持使用多选框操作' + date: "2020-01-02 12:52:51", + desc: "添加编辑、新建时支持使用多选框操作" }, - { date: '2019.12', type: 'month' }, - { date: '2019-12-31 17:13:23', desc: '添加upload文件夹' }, - { date: '2019-12-23 19:04:43', desc: '添加登陆页面工信部网站备案号' }, - { date: '2019-12-23 19:04:37', desc: '无' }, - { date: '2019-12-23 11:01:14', desc: '添加最新菜单脚本' }, - { date: '2019-12-23 10:22:27', desc: '增加静态页面提示' }, - { date: '2019-12-22 14:47:20', desc: '增加静态页面发布描述' }, - { date: '2019-12-22 14:19:27', desc: '优化代码生成器页面' }, + { date: "2019.12", type: "month" }, + { date: "2019-12-31 17:13:23", desc: "添加upload文件夹" }, + { date: "2019-12-23 19:04:43", desc: "添加登陆页面工信部网站备案号" }, + { date: "2019-12-23 19:04:37", desc: "无" }, + { date: "2019-12-23 11:01:14", desc: "添加最新菜单脚本" }, + { date: "2019-12-23 10:22:27", desc: "增加静态页面提示" }, + { date: "2019-12-22 14:47:20", desc: "增加静态页面发布描述" }, + { date: "2019-12-22 14:19:27", desc: "优化代码生成器页面" }, { - date: '2019-12-22 01:14:09', - desc: '增加静态页面发布App_News功能,优化代码生成器' + date: "2019-12-22 01:14:09", + desc: "增加静态页面发布App_News功能,优化代码生成器" }, - { date: '2019-12-22 01:10:33', desc: '增加静态页面发布模板' }, + { date: "2019-12-22 01:10:33", desc: "增加静态页面发布模板" }, { - date: '2019-12-22 01:09:48', - desc: '增加文档编辑器,增加静态页面发布功能,优化基础组件' + date: "2019-12-22 01:09:48", + desc: "增加文档编辑器,增加静态页面发布功能,优化基础组件" }, { - date: '2019-12-21 22:42:51', - desc: '修复代码生成器页面没有设置父级Id默认值的问题' + date: "2019-12-21 22:42:51", + desc: "修复代码生成器页面没有设置父级Id默认值的问题" }, { - date: '2019-12-19 17:47:42', - desc: '添加actived触发时,是否刷新页面属性activatedLoad' + date: "2019-12-19 17:47:42", + desc: "添加actived触发时,是否刷新页面属性activatedLoad" }, - { date: '2019-12-19 17:36:37', desc: '优化代生成模板' }, + { date: "2019-12-19 17:36:37", desc: "优化代生成模板" }, { - date: '2019-12-19 17:34:38', - desc: '增加Dapper调用批量删除、更新(mysql未实现)、写入的实现,优化Dapper使用' + date: "2019-12-19 17:34:38", + desc: + "增加Dapper调用批量删除、更新(mysql未实现)、写入的实现,优化Dapper使用" }, - { date: '2019-12-19 11:30:40', desc: '优化表单只读时提示' }, + { date: "2019-12-19 11:30:40", desc: "优化表单只读时提示" }, { - date: '2019-12-18 13:33:09', - desc: '修复votable编辑i-switch标签bool类型判断' + date: "2019-12-18 13:33:09", + desc: "修复votable编辑i-switch标签bool类型判断" }, { - date: '2019-12-17 18:08:56', - desc: '增加代码生成后的页面对从表编辑的扩展' + date: "2019-12-17 18:08:56", + desc: "增加代码生成后的页面对从表编辑的扩展" }, { - date: '2019-12-17 17:48:43', - desc: '增加voltable可使用button操作进行编辑、编辑select标签事件触发,编辑开始与编辑完成事件扩展、增加td单元格额外选项标签' + date: "2019-12-17 17:48:43", + desc: + "增加voltable可使用button操作进行编辑、编辑select标签事件触发,编辑开始与编辑完成事件扩展、增加td单元格额外选项标签" }, { - date: '2019-12-17 11:45:21', - desc: '增加代码生成的表单是否默认加载数据属性,增加table编辑的select可筛选,增加selectList校验' + date: "2019-12-17 11:45:21", + desc: + "增加代码生成的表单是否默认加载数据属性,增加table编辑的select可筛选,增加selectList校验" }, - { date: '2019-12-17 10:36:11', desc: '优化加载提示' }, - { date: '2019-12-14 11:17:28', desc: '优化头像默认显示' }, + { date: "2019-12-17 10:36:11", desc: "优化加载提示" }, + { date: "2019-12-14 11:17:28", desc: "优化头像默认显示" }, { - date: '2019-12-14 00:00:27', - desc: 'voltable自定义排序参数及组件文档。。。' + date: "2019-12-14 00:00:27", + desc: "voltable自定义排序参数及组件文档。。。" }, - { date: '2019-12-13 23:58:56', desc: '增加明细表自定义排序' }, - { date: '2019-12-13 23:06:14', desc: '增加表单、table图片预览功能' }, - { date: '2019-12-12 09:48:18', desc: '增加table编辑bool属性显示' }, - { date: '2019-12-11 15:47:57', desc: '优化只读表单字段显示' }, + { date: "2019-12-13 23:58:56", desc: "增加明细表自定义排序" }, + { date: "2019-12-13 23:06:14", desc: "增加表单、table图片预览功能" }, + { date: "2019-12-12 09:48:18", desc: "增加table编辑bool属性显示" }, + { date: "2019-12-11 15:47:57", desc: "优化只读表单字段显示" }, { - date: '2019-12-11 11:31:43', - desc: '修复获取当前用户所有下级角色字段传入错误的问题' + date: "2019-12-11 11:31:43", + desc: "修复获取当前用户所有下级角色字段传入错误的问题" }, - { date: '2019-12-10 14:15:12', desc: '优化表单数字验证' }, + { date: "2019-12-10 14:15:12", desc: "优化表单数字验证" }, { - date: '2019-12-10 11:12:18', - desc: '增加表单列只读时,可将字段设置为方法进行值计算' + date: "2019-12-10 11:12:18", + desc: "增加表单列只读时,可将字段设置为方法进行值计算" }, - { date: '2019-12-08 22:42:13', desc: '优化上传组件选择器显示' }, + { date: "2019-12-08 22:42:13", desc: "优化上传组件选择器显示" }, { - date: '2019-12-08 22:28:30', - desc: '新建用户时将默认头像改为自己选择头像' + date: "2019-12-08 22:28:30", + desc: "新建用户时将默认头像改为自己选择头像" }, { - date: '2019-12-08 22:02:57', - desc: '优化角色新建或修改时,禁止相同的角色名' + date: "2019-12-08 22:02:57", + desc: "优化角色新建或修改时,禁止相同的角色名" }, - { date: '2019-12-08 22:01:41', desc: '优化角色页面上级角色选择' }, - { date: '2019-12-08 22:01:00', desc: '优化switch默认值设置' }, + { date: "2019-12-08 22:01:41", desc: "优化角色页面上级角色选择" }, + { date: "2019-12-08 22:01:00", desc: "优化switch默认值设置" }, { - date: '2019-12-08 20:55:00', - desc: '添加表单switch对boolean值的处理' + date: "2019-12-08 20:55:00", + desc: "添加表单switch对boolean值的处理" }, { - date: '2019-12-08 20:42:26', - desc: '修复表单不能重置switch标签默认值的问题' + date: "2019-12-08 20:42:26", + desc: "修复表单不能重置switch标签默认值的问题" }, { - date: '2019-12-08 20:25:05', - desc: '增加数据源绑定设置默认值时对number与字符串的区分' + date: "2019-12-08 20:25:05", + desc: "增加数据源绑定设置默认值时对number与字符串的区分" }, - { date: '2019-12-07 13:03:11', desc: '添加table可单选属性' }, - { date: '2019-12-07 12:49:09', desc: '移除不用代码' }, + { date: "2019-12-07 13:03:11", desc: "添加table可单选属性" }, + { date: "2019-12-07 12:49:09", desc: "移除不用代码" }, { - date: '2019-12-07 11:57:34', - desc: '修改代码生成器对mysql字段bool类型判断' + date: "2019-12-07 11:57:34", + desc: "修改代码生成器对mysql字段bool类型判断" }, { - date: '2019-12-06 20:54:09', - desc: '增加代码生成器可生成模糊查询功能' + date: "2019-12-06 20:54:09", + desc: "增加代码生成器可生成模糊查询功能" }, { - date: '2019-12-06 20:06:30', - desc: 'table添加行时,如果是可编辑的switch类型没有初始值时,设置默认值为0' + date: "2019-12-06 20:06:30", + desc: + "table添加行时,如果是可编辑的switch类型没有初始值时,设置默认值为0" }, - { date: '2019-12-06 19:50:00', desc: '增加页面刷新加载效果' }, + { date: "2019-12-06 19:50:00", desc: "增加页面刷新加载效果" }, { - date: '2019-12-06 19:46:09', - desc: '添加表单支持额外标签显示及事件处理,增加table表单元格可下载文件' + date: "2019-12-06 19:46:09", + desc: + "添加表单支持额外标签显示及事件处理,增加table表单元格可下载文件" }, { - date: '2019-12-06 18:38:26', - desc: '修复编辑权限大小写判断错误的问题' + date: "2019-12-06 18:38:26", + desc: "修复编辑权限大小写判断错误的问题" }, { - date: '2019-12-05 13:12:05', - desc: '修复代码生成器bigint识别错误的问题,优化代码生成器同步表结构的功能' + date: "2019-12-05 13:12:05", + desc: + "修复代码生成器bigint识别错误的问题,优化代码生成器同步表结构的功能" }, - { date: '2019-12-02 17:34:42', desc: '优化代码生成器排序规则' }, - { date: '2019-12-02 15:26:38', desc: '添加可自定义编辑框大小' }, + { date: "2019-12-02 17:34:42", desc: "优化代码生成器排序规则" }, + { date: "2019-12-02 15:26:38", desc: "添加可自定义编辑框大小" }, { - date: '2019-12-02 14:35:30', - desc: '修复代码生成器不能手动同步表别名的数据结构' + date: "2019-12-02 14:35:30", + desc: "修复代码生成器不能手动同步表别名的数据结构" }, - { date: '2019-12-02 10:38:35', desc: '添加文件上传前,上传后扩展处理' }, + { date: "2019-12-02 10:38:35", desc: "添加文件上传前,上传后扩展处理" }, { - date: '2019-12-01 19:59:37', - desc: '添加用户只能操作自己创建的数据(及当前用户下角色)Demo' + date: "2019-12-01 19:59:37", + desc: "添加用户只能操作自己创建的数据(及当前用户下角色)Demo" }, - { date: '2019.11', type: 'month' }, + { date: "2019.11", type: "month" }, { - date: '2019-11-28 18:37:56', - desc: '修复表单图片属性只读时,图片相对路径没有正确解析的问题' + date: "2019-11-28 18:37:56", + desc: "修复表单图片属性只读时,图片相对路径没有正确解析的问题" }, { - date: '2019-11-28 13:13:44', - desc: '修复代码生成器对sqlserver数据非主键GUID生成的model错误的问题,修复从表别名后删除时未获取到真实表名的问题' + date: "2019-11-28 13:13:44", + desc: + "修复代码生成器对sqlserver数据非主键GUID生成的model错误的问题,修复从表别名后删除时未获取到真实表名的问题" }, - { date: '2019-11-28 11:50:47', desc: '优化登陆界面' }, - { date: '2019-11-27 15:02:22', desc: '优化表单组件对password的提示' }, - { date: '2019-11-27 13:50:36', desc: '添加分配菜单图标显示' }, + { date: "2019-11-28 11:50:47", desc: "优化登陆界面" }, + { date: "2019-11-27 15:02:22", desc: "优化表单组件对password的提示" }, + { date: "2019-11-27 13:50:36", desc: "添加分配菜单图标显示" }, { - date: '2019-11-27 13:13:22', - desc: '增加编辑功能可上传文件(图片、excel及其他附件)' + date: "2019-11-27 13:13:22", + desc: "增加编辑功能可上传文件(图片、excel及其他附件)" }, { - date: '2019-11-26 18:36:51', - desc: '添加代码生成器对编辑功能可上传excel及附件' + date: "2019-11-26 18:36:51", + desc: "添加代码生成器对编辑功能可上传excel及附件" }, - { date: '2019-11-25 19:10:25', desc: '增加webapi文件wwwroot' }, + { date: "2019-11-25 19:10:25", desc: "增加webapi文件wwwroot" }, { - date: '2019-11-25 19:08:27', - desc: '修复代码生成器对mysql数据库表结构tinyint类型识别错误的问题' + date: "2019-11-25 19:08:27", + desc: "修复代码生成器对mysql数据库表结构tinyint类型识别错误的问题" }, { - date: '2019-11-25 18:32:52', - desc: '增加表单文件上传功能(table多图片显示待完)' + date: "2019-11-25 18:32:52", + desc: "增加表单文件上传功能(table多图片显示待完)" }, - { date: '2019-11-25 18:31:28', desc: '添加对文件上传功能的支持' }, - { date: '2019-11-25 16:11:06', desc: '调整修改密码弹出框大小' }, - { date: '2019-11-24 15:00:26', desc: '修改字典异常记录' }, + { date: "2019-11-25 18:31:28", desc: "添加对文件上传功能的支持" }, + { date: "2019-11-25 16:11:06", desc: "调整修改密码弹出框大小" }, + { date: "2019-11-24 15:00:26", desc: "修改字典异常记录" }, { - date: '2019-11-24 14:49:38', - desc: '增加获取字典时对执行自定义sql异常的信息的记录' + date: "2019-11-24 14:49:38", + desc: "增加获取字典时对执行自定义sql异常的信息的记录" }, { - date: '2019-11-24 13:32:27', - desc: '修复编辑页面从表分页后再打开其他页面,分页信息没有重置的问题' + date: "2019-11-24 13:32:27", + desc: "修复编辑页面从表分页后再打开其他页面,分页信息没有重置的问题" }, { - date: '2019-11-24 12:08:43', - desc: '修复删除功能没有接收返回值的问题' + date: "2019-11-24 12:08:43", + desc: "修复删除功能没有接收返回值的问题" }, - { date: '2019-11-24 08:45:35', desc: '增加本地服务器访问静态文件' }, + { date: "2019-11-24 08:45:35", desc: "增加本地服务器访问静态文件" }, { - date: '2019-11-23 23:13:14', - desc: '增加上传组件,可自定义上传任意文件' + date: "2019-11-23 23:13:14", + desc: "增加上传组件,可自定义上传任意文件" }, - { date: '2019-11-23 23:09:45', desc: '增加本地文件上传功能' }, + { date: "2019-11-23 23:09:45", desc: "增加本地文件上传功能" }, { - date: '2019-11-22 17:52:43', - desc: '增加ViewGrid组件获取选中行数据的组件' + date: "2019-11-22 17:52:43", + desc: "增加ViewGrid组件获取选中行数据的组件" }, { - date: '2019-11-22 10:44:30', - desc: '修复代码生成器没有生成表描述属性的问题' + date: "2019-11-22 10:44:30", + desc: "修复代码生成器没有生成表描述属性的问题" }, - { date: '2019-11-22 10:14:10', desc: '优化查询按钮显示' }, - { date: '2019-11-21 18:02:15', desc: '整理文档' }, - { date: '2019-11-21 18:01:50', desc: 'Demo优化' }, - { date: '2019-11-21 17:59:22', desc: '解除代码生成器对类库开头限制' }, - { date: '2019-11-21 09:47:45', desc: '增加Mysql最新数据库脚本' }, - { date: '2019-11-20 17:14:58', desc: '调整表单demo适应' }, - { date: '2019-11-20 15:53:18', desc: '优化代码生成器' }, + { date: "2019-11-22 10:14:10", desc: "优化查询按钮显示" }, + { date: "2019-11-21 18:02:15", desc: "整理文档" }, + { date: "2019-11-21 18:01:50", desc: "Demo优化" }, + { date: "2019-11-21 17:59:22", desc: "解除代码生成器对类库开头限制" }, + { date: "2019-11-21 09:47:45", desc: "增加Mysql最新数据库脚本" }, + { date: "2019-11-20 17:14:58", desc: "调整表单demo适应" }, + { date: "2019-11-20 15:53:18", desc: "优化代码生成器" }, { - date: '2019-11-20 15:14:07', - desc: '修复自动刷新Token后可能存在登陆不跳转的问题' + date: "2019-11-20 15:14:07", + desc: "修复自动刷新Token后可能存在登陆不跳转的问题" }, { - date: '2019-11-20 12:02:01', - desc: '增加封装组件对table属性MaxHeight的支持' + date: "2019-11-20 12:02:01", + desc: "增加封装组件对table属性MaxHeight的支持" }, - { date: '2019-11-19 11:49:11', desc: '增加transition动画显示页面' }, - { date: '2019-11-19 11:32:20', desc: '移除多余属性hasKeyField' }, - { date: '2019-11-19 11:08:23', desc: '优化Demo' }, + { date: "2019-11-19 11:49:11", desc: "增加transition动画显示页面" }, + { date: "2019-11-19 11:32:20", desc: "移除多余属性hasKeyField" }, + { date: "2019-11-19 11:08:23", desc: "优化Demo" }, { - date: '2019-11-19 10:53:04', - desc: '优化表单对int.bigint.decimal数据类型的验证' + date: "2019-11-19 10:53:04", + desc: "优化表单对int.bigint.decimal数据类型的验证" }, { - date: '2019-11-18 18:45:28', - desc: '修复select字典数据类型与绑定值的数据类型不一致时不能绑定默认值的问题' + date: "2019-11-18 18:45:28", + desc: + "修复select字典数据类型与绑定值的数据类型不一致时不能绑定默认值的问题" }, - { date: '2019-11-18 18:44:13', desc: '优化代码生成器' }, + { date: "2019-11-18 18:44:13", desc: "优化代码生成器" }, { - date: '2019-11-18 16:18:46', - desc: '优化IE浏览器高级查询不起作用的问题' + date: "2019-11-18 16:18:46", + desc: "优化IE浏览器高级查询不起作用的问题" }, - { date: '2019-11-18 15:13:22', desc: '重新生成角色页面' }, - { date: '2019-11-18 14:44:32', desc: '修复表单验证提示错误' }, - { date: '2019-11-17 19:27:47', desc: '增加数据库菜单脚本' }, - { date: '2019-11-17 19:15:48', desc: '开发文档1.0' }, - { date: '2019-11-17 18:53:12', desc: '增加代码生成器对表别名的支持' }, - { date: '2019-11-17 18:52:30', desc: '增加代码生成器对表别名的支持' }, - { date: '2019-11-17 15:49:19', desc: '优化代码生成器' }, - { date: '2019-11-17 15:48:05', desc: '代码生成器优化' }, + { date: "2019-11-18 15:13:22", desc: "重新生成角色页面" }, + { date: "2019-11-18 14:44:32", desc: "修复表单验证提示错误" }, + { date: "2019-11-17 19:27:47", desc: "增加数据库菜单脚本" }, + { date: "2019-11-17 19:15:48", desc: "开发文档1.0" }, + { date: "2019-11-17 18:53:12", desc: "增加代码生成器对表别名的支持" }, + { date: "2019-11-17 18:52:30", desc: "增加代码生成器对表别名的支持" }, + { date: "2019-11-17 15:49:19", desc: "优化代码生成器" }, + { date: "2019-11-17 15:48:05", desc: "代码生成器优化" }, { - date: '2019-11-17 13:49:37', - desc: '优化webapi构造方法及代码生成器模块' + date: "2019-11-17 13:49:37", + desc: "优化webapi构造方法及代码生成器模块" }, - { date: '2019-11-16 10:25:13', desc: '框架文档1.0' }, - { date: '2019-11-16 08:40:20', desc: '添加input标签 onKeyPress事件' }, + { date: "2019-11-16 10:25:13", desc: "框架文档1.0" }, + { date: "2019-11-16 08:40:20", desc: "添加input标签 onKeyPress事件" }, { - date: '2019-11-15 23:34:10', - desc: '增加表单类型为数字时,默认值为0' + date: "2019-11-15 23:34:10", + desc: "增加表单类型为数字时,默认值为0" }, { - date: '2019-11-15 23:17:59', - desc: '修复文档表单Demo自定义验证错误的问题' + date: "2019-11-15 23:17:59", + desc: "修复文档表单Demo自定义验证错误的问题" }, { - date: '2019-11-14 23:17:38', - desc: '增加可自定义有数据库的table单元格td的背景颜色' + date: "2019-11-14 23:17:38", + desc: "增加可自定义有数据库的table单元格td的背景颜色" }, { - date: '2019-11-14 23:05:44', - desc: '增加快速查询字段为input标签时,可按回车键直接查询' + date: "2019-11-14 23:05:44", + desc: "增加快速查询字段为input标签时,可按回车键直接查询" }, { - date: '2019-11-14 22:50:52', - desc: '添加table表可自定义有数据源单元格的背景颜色' + date: "2019-11-14 22:50:52", + desc: "添加table表可自定义有数据源单元格的背景颜色" }, { - date: '2019-11-14 22:36:28', - desc: '增加HttpContext.Request直接获取对象' + date: "2019-11-14 22:36:28", + desc: "增加HttpContext.Request直接获取对象" }, { - date: '2019-11-13 23:46:01', - desc: '增加代码生成器页面手动同步表结构的功能' + date: "2019-11-13 23:46:01", + desc: "增加代码生成器页面手动同步表结构的功能" }, { - date: '2019-11-13 23:38:35', - desc: '增加代码生成器手动同步表结构功能(表字段发生变化)' + date: "2019-11-13 23:38:35", + desc: "增加代码生成器手动同步表结构功能(表字段发生变化)" }, { - date: '2019-11-13 21:38:00', - desc: '修复mysql外键Guid识别错误的问题' + date: "2019-11-13 21:38:00", + desc: "修复mysql外键Guid识别错误的问题" }, - { date: '2019-11-12 14:27:37', desc: '优化表单对数字的验证' }, - { date: '2019-11-12 12:06:30', desc: '优化基础组件' }, + { date: "2019-11-12 14:27:37", desc: "优化表单对数字的验证" }, + { date: "2019-11-12 12:06:30", desc: "优化基础组件" }, { - date: '2019-11-12 12:01:39', - desc: '增加可设置FixedToken属性标识方法的token永不过期' + date: "2019-11-12 12:01:39", + desc: "增加可设置FixedToken属性标识方法的token永不过期" }, - { date: '2019-11-12 11:55:19', desc: '增加文档' }, + { date: "2019-11-12 11:55:19", desc: "增加文档" }, { - date: '2019-11-12 11:50:04', - desc: '增加可设置FixedTokenAttribute属性标识Token是否永远不过期,修复获取用户信息存在异常的问题' + date: "2019-11-12 11:50:04", + desc: + "增加可设置FixedTokenAttribute属性标识Token是否永远不过期,修复获取用户信息存在异常的问题" }, { - date: '2019-11-11 13:50:39', - desc: '增加表单组件可设置lable宽度labelWidth属性' + date: "2019-11-11 13:50:39", + desc: "增加表单组件可设置lable宽度labelWidth属性" }, - { date: '2019-11-11 13:19:57', desc: '优化表单select验证' }, + { date: "2019-11-11 13:19:57", desc: "优化表单select验证" }, { - date: '2019-11-11 12:41:56', - desc: '修复IE弹出框没有居中的问题,优化菜单保存功能' + date: "2019-11-11 12:41:56", + desc: "修复IE弹出框没有居中的问题,优化菜单保存功能" }, { - date: '2019-11-11 11:16:56', - desc: '修复SaveChanges方法拼写错误的问题,增加菜单保存对表名重复性验证' + date: "2019-11-11 11:16:56", + desc: + "修复SaveChanges方法拼写错误的问题,增加菜单保存对表名重复性验证" }, { - date: '2019-11-08 15:19:02', - desc: '修改菜单时限定菜单父ID不能是当前菜单的ID' + date: "2019-11-08 15:19:02", + desc: "修改菜单时限定菜单父ID不能是当前菜单的ID" }, { - date: '2019-11-07 11:13:20', - desc: '增加导入excel时验证自定义sql的数据源' + date: "2019-11-07 11:13:20", + desc: "增加导入excel时验证自定义sql的数据源" }, { - date: '2019-11-07 11:03:53', - desc: '增加导入excel时验证自定义sql的数据源' + date: "2019-11-07 11:03:53", + desc: "增加导入excel时验证自定义sql的数据源" }, { - date: '2019-11-06 18:27:57', - desc: 'table列的宽度超出时自动设置第一列为固定列' + date: "2019-11-06 18:27:57", + desc: "table列的宽度超出时自动设置第一列为固定列" }, - { date: '2019-11-06 16:07:02', desc: '优化VolForm表单验证' }, + { date: "2019-11-06 16:07:02", desc: "优化VolForm表单验证" }, { - date: '2019-11-04 15:00:59', - desc: '修复table有查询条件时,第1页以后的数据没有带上查询条件的问题' + date: "2019-11-04 15:00:59", + desc: "修复table有查询条件时,第1页以后的数据没有带上查询条件的问题" }, { - date: '2019-11-04 13:25:54', - desc: '固定菜单页面中其他权限弹出框的大小' + date: "2019-11-04 13:25:54", + desc: "固定菜单页面中其他权限弹出框的大小" }, { - date: '2019-11-04 09:53:00', - desc: '添加Demo的扩展js中,扩展按钮使用描述' + date: "2019-11-04 09:53:00", + desc: "添加Demo的扩展js中,扩展按钮使用描述" }, { - date: '2019-11-01 10:14:38', - desc: '增加新建或编辑成功后可设置是否关闭弹出框' + date: "2019-11-01 10:14:38", + desc: "增加新建或编辑成功后可设置是否关闭弹出框" }, - { date: '2019.10', type: 'month' }, + { date: "2019.10", type: "month" }, { - date: '2019-10-31 13:09:19', - desc: '修复页面刷新后顶部导航状态消失的问题' + date: "2019-10-31 13:09:19", + desc: "修复页面刷新后顶部导航状态消失的问题" }, { - date: '2019-10-31 12:56:43', - desc: '增加代码生成器对应表单渲染邮箱与手机号码类型' + date: "2019-10-31 12:56:43", + desc: "增加代码生成器对应表单渲染邮箱与手机号码类型" }, { - date: '2019-10-31 12:52:46', - desc: '增加表单邮箱格式、手机号码格式、自定义验证方法' + date: "2019-10-31 12:52:46", + desc: "增加表单邮箱格式、手机号码格式、自定义验证方法" }, { - date: '2019-10-31 10:42:37', - desc: '优化编辑弹出框自适应功能,增加编辑弹出框可以自行设置高度与宽度' + date: "2019-10-31 10:42:37", + desc: "优化编辑弹出框自适应功能,增加编辑弹出框可以自行设置高度与宽度" }, - { date: '2019-10-29 17:13:42', desc: '增加代码生成器非空判断' }, - { date: '2019-10-29 09:51:24', desc: '修改日志处理' }, - { date: '2019-10-25 17:30:40', desc: '添加编辑基础扩展方法' }, + { date: "2019-10-29 17:13:42", desc: "增加代码生成器非空判断" }, + { date: "2019-10-29 09:51:24", desc: "修改日志处理" }, + { date: "2019-10-25 17:30:40", desc: "添加编辑基础扩展方法" }, { - date: '2019-10-25 13:51:57', - desc: '添加编辑按钮可自定义设置hidden与disabled属性' + date: "2019-10-25 13:51:57", + desc: "添加编辑按钮可自定义设置hidden与disabled属性" }, { - date: '2019-10-25 13:02:42', - desc: '添加代码生成器对mysql数据库的兼容处理' + date: "2019-10-25 13:02:42", + desc: "添加代码生成器对mysql数据库的兼容处理" }, - { date: '2019-10-24 13:36:15', desc: '优化首页获取菜单权限验证规则' }, + { date: "2019-10-24 13:36:15", desc: "优化首页获取菜单权限验证规则" }, { - date: '2019-10-24 13:34:42', - desc: '修复表单select组件为只读的属性时没有绑定数据源' + date: "2019-10-24 13:34:42", + desc: "修复表单select组件为只读的属性时没有绑定数据源" }, { - date: '2019-10-24 13:16:56', - desc: '增加mysql数据库日志批量写入失败解决说明' + date: "2019-10-24 13:16:56", + desc: "增加mysql数据库日志批量写入失败解决说明" }, { - date: '2019-10-23 18:44:17', - desc: '添加select组件默认超过10个item开启搜索功能' + date: "2019-10-23 18:44:17", + desc: "添加select组件默认超过10个item开启搜索功能" }, { - date: '2019-10-22 18:55:00', - desc: '修复第一次弹出框时获取不到子组件的问题,增加记录当前编辑行的属性' + date: "2019-10-22 18:55:00", + desc: + "修复第一次弹出框时获取不到子组件的问题,增加记录当前编辑行的属性" }, { - date: '2019-10-22 15:41:27', - desc: '修改sqlserver表SellOrderList外键Order_Id字段类型错误的问题' + date: "2019-10-22 15:41:27", + desc: "修改sqlserver表SellOrderList外键Order_Id字段类型错误的问题" }, - { date: '2019-10-22 10:28:45', desc: '修改项目启动介绍说明' }, + { date: "2019-10-22 10:28:45", desc: "修改项目启动介绍说明" }, { - date: '2019-10-21 19:02:19', - desc: '添加IE9以上版本的支持,添加打包后文件后缀加上时间戳解决缓存问题' + date: "2019-10-21 19:02:19", + desc: "添加IE9以上版本的支持,添加打包后文件后缀加上时间戳解决缓存问题" }, - { date: '2019-10-18 15:47:00', desc: '增加textarea标签可自行设定高度' }, + { date: "2019-10-18 15:47:00", desc: "增加textarea标签可自行设定高度" }, { - date: '2019-10-16 18:35:55', - desc: '修复sqlserver字段guid小写的问题' + date: "2019-10-16 18:35:55", + desc: "修复sqlserver字段guid小写的问题" }, { - date: '2019-10-16 18:30:15', - desc: '修复sqlserver字段guid小写的问题' + date: "2019-10-16 18:30:15", + desc: "修复sqlserver字段guid小写的问题" }, - { date: '2019-10-15 14:23:59', desc: '修改dapper查询异常' }, + { date: "2019-10-15 14:23:59", desc: "修改dapper查询异常" }, { - date: '2019-10-14 14:43:39', - desc: '增加sqlserver2012以下版本使用说明' + date: "2019-10-14 14:43:39", + desc: "增加sqlserver2012以下版本使用说明" }, { - date: '2019-10-12 12:36:29', - desc: '屏蔽select组件max-tag-count属性' + date: "2019-10-12 12:36:29", + desc: "屏蔽select组件max-tag-count属性" }, { - date: '2019-10-12 09:48:40', - desc: '增加表单查询/刷新时重置table分页信息' + date: "2019-10-12 09:48:40", + desc: "增加表单查询/刷新时重置table分页信息" }, - { date: '2019-10-11 14:24:44', desc: '增加其他组件菜单->选择图标功能' }, - { date: '2019-10-10 10:44:54', desc: '增加Demo常用功能介绍' }, - { date: '2019-10-09 16:21:25', desc: '增加发布前端项目运行命令' }, - { date: '2019-10-09 16:19:21', desc: '增加demo接口' }, + { date: "2019-10-11 14:24:44", desc: "增加其他组件菜单->选择图标功能" }, + { date: "2019-10-10 10:44:54", desc: "增加Demo常用功能介绍" }, + { date: "2019-10-09 16:21:25", desc: "增加发布前端项目运行命令" }, + { date: "2019-10-09 16:19:21", desc: "增加demo接口" }, { - date: '2019-10-09 15:41:04', - desc: '增加其他组件菜单下http请求Api的Demo' + date: "2019-10-09 15:41:04", + desc: "增加其他组件菜单下http请求Api的Demo" }, { - date: '2019-10-09 15:33:10', - desc: '增加其他组件菜单下http请求,vuex状态管理等Demo' + date: "2019-10-09 15:33:10", + desc: "增加其他组件菜单下http请求,vuex状态管理等Demo" }, - { date: '2019.09', type: 'month' }, - { date: '2019-09-29 17:29:41', desc: '修改Demo描述' } + { date: "2019.09", type: "month" }, + { date: "2019-09-29 17:29:41", desc: "修改Demo描述" } ] }; } @@ -2129,7 +3292,7 @@ li { padding: 5px; } li:before { - content: ''; + content: ""; display: inline-block; width: 9px; height: 9px; diff --git a/Vol.Vue/src/views/document/netCoreDev.vue b/Vol.Vue/src/views/document/netCoreDev.vue index d6ef9a6d5..a1b772e35 100644 --- a/Vol.Vue/src/views/document/netCoreDev.vue +++ b/Vol.Vue/src/views/document/netCoreDev.vue @@ -223,6 +223,50 @@ export default { ], tips: ` 还没想好`, img: "", + }, + { + title: "定时任务接口配置", + content: [ + ` +

+

+ 定时任务调用本框架的接口地址,需要在接口上添加[ApiTask]属性,具体见Sys_QuartzOptionsController.cs->test方法
+
+      /// <summary> +
+
+         /// api加上属性 [ApiTask] +
+
+         /// </summary> +
+
+         /// <returns></returns> +
+
+         [ApiTask] +
+
+         [HttpGet, HttpPost, Route("test")] +
+
+         public IActionResult Test() +
+
+         { +
+
+             return Content(DateTime.Now.ToString("yyyy-MM-dd HH:mm:sss")); +
+
+         } +
+
+
+

`, + ], + tips: ` 还没想好`, + img: "", }, { title: "取消跨域", @@ -666,47 +710,88 @@ VolElementMenuChild.vue(新增) 、VolElementMenu.vue(新增) 、Index.vue 、co
      });
+

+
+

+
+
+
+
+
+       +
+
+             //dapper使用第二种方式,2023.03.26更新后才能使用 +
+
+             var dapper = DBServerProvider.SqlDapper; +
+
+             try +
+
+             { +
+
+                 dapper.BeginTrans(); +
+
+
+                 string sql = "update  table set [xxx]=@address where fieldxx=@value"; +
+
+                 var data = dapper.ExcuteNonQuery(sql, new { xxx = "666", value="124" }); +
+
+
+                 sql = "update  table set [xxx]=@address where fieldxx=@value"; +
+
+                 var list = dapper.ExcuteNonQuery(sql, new { xxx = "777", value = "xxxx" }); +
+
+
+                 dapper.Commit(); +
+
+             } +
+
+             catch (Exception ex) +
+
+             { +
+
+                 Console.WriteLine(ex.Message); +
+
+                 dapper.Rollback(); +
+
+             } +
+
+
+
+
+

+
+

+ +
`, ], tips: "", }, { title: "Dapper连接其他数据库", - content: [ ` -
- //在DBServerProvider.cs类构造方法中添加如下配置 - -
-
-
-      static DBServerProvider() -
-
-       { -
-
-           SetConnection(DefaultConnNameAppSetting.DbConnectionString); -
-
-
-           //添加其他数据库链接配置 -
-
-           ConnectionPool.TryAdd("自定key""数据库连接字符串"); -
-
-
-           //使用方式 -
-
-          // DBServerProvider.GetSqlDapper("自定key"); -
-
-
-       } -
-
` ], + content: [ `1、使用dapper连接sqlserver、mysql、pgsql、oracle数据库,或者同时连接多个同类型但地址不同的数据库

+ 2、具体使用见说明:vol.core类库下DBManager->Partial->DBServerProvider.cs

+ 3、注意:需要2022.11.21更新DBServerProvider.cs与Partial下的文件才能使用 + 4、更新时如果是用的.net6后台,也只能使用.net6版本里面的代码更新 + ` ], tips: "", }, { @@ -1311,980 +1396,1451 @@ VolElementMenuChild.vue(新增) 、VolElementMenu.vue(新增) 、Index.vue 、co title: "后台基础代码扩展实现", name: "extend", content: [ - `

-
- //此处是SellOrderService为例,如果框架生成的默认功能满足不了需求,请查看下面代码根据需要实现对应功能 -
-     public partial class SellOrderService -
-
-     { -
-
-         public string GetServiceDate() -
-
-         { -
-
-             return DateTime.Now.ToString("yyyy-MM-dd HH:mm:sss"); -
-
-         } -
-
-         //此SellOrderService.cs类由代码生成器生成,默认是没有任何代码,如果需要写业务代码,请在此类中实现 -
-
-         //如果默认的增、删、改、查、导入、导出、审核满足不了业务,请参考下面的方法进行业务代码扩展(扩展代码是对ServiceFunFilter.cs的实现) -
-
-
-         WebResponseContent webResponse = new WebResponseContent(); -
-
-         private IHttpContextAccessor _httpContextAccessor; -
-
-         private ISellOrderRepository _repository; -
-
-         [ActivatorUtilitiesConstructor] -
-
-         public SellOrderService(IHttpContextAccessor httpContextAccessor, ISellOrderRepository repository) -
-
-             : base(repository) -
-
-         { -
-
-             _httpContextAccessor = httpContextAccessor; -
-
-             _repository = repository; -
-
-             base.Init(_repository); -
-
-             //2020.08.15 -
-
-             //开启多租户功能,开启后会对查询、导出、删除、编辑功能同时生效 -
-
-             //如果只需要对某个功能生效,如编辑,则在重写编辑方法中设置 IsMultiTenancy = true; -
-
-             IsMultiTenancy = true; -
-
-         } -
-
-         //查询 -
-
-         public override PageGridData<SellOrderGetPageData(PageDataOptions options) -
-
-         { -
-
-             //options.Value可以从前台查询的方法提交一些其他参数放到value里面 -
-
-             //前端提交方式,见文档:组件api->viewgrid组件里面的searchBefore方法 -
-
-             object extraValue = options.Value; -
+ `

+

这里只是示例,每张生成的表都有一个service类,按需复制下面的方法实现
+
+
+ public partial class SellOrderService +
+
+ { +
+
+     public string GetServiceDate() +
+
+     { +
+
+         return DateTime.Now.ToString("yyyy-MM-dd HH:mm:sss"); +
+
+     } +
+
+     //此SellOrderService.cs类由代码生成器生成,默认是没有任何代码,如果需要写业务代码,请在此类中实现 +
+
+     //如果默认的增、删、改、查、导入、导出、审核满足不了业务,请参考下面的方法进行业务代码扩展(扩展代码是对ServiceFunFilter.cs的实现) +
+
+     WebResponseContent webResponse = new WebResponseContent(); +
+
+     private IHttpContextAccessor _httpContextAccessor; +
+
+     private ISellOrderRepository _repository; +
+
+     [ActivatorUtilitiesConstructor] +
+
+     public SellOrderService(IHttpContextAccessor httpContextAccessor, ISellOrderRepository repository) +
+
+         : base(repository) +
+
+     { +
+
+         _httpContextAccessor = httpContextAccessor; +
+
+         _repository = repository; +
+
+         //2020.08.15 +
+
+         //开启数据隔离功能,开启后会对查询、导出、删除、编辑功能同时生效 +
+
+         //如果只需要对某个功能生效,如编辑,则在重写编辑方法中设置 IsMultiTenancy = true; +
+
+         // IsMultiTenancy = true; +
+
+     } +
+ + +
+     //查询 +
+
+     public override PageGridData<SellOrder> GetPageData(PageDataOptions options) +
+
+     { +
+
+         //options.Value可以从前台查询的方法提交一些其他参数放到value里面 +
+
+         //前端提交方式,见文档:组件api->viewgrid组件里面的searchBefore方法 +
+
+         object extraValue = options.Value; +

-
-             //此处是从前台提交的原生的查询条件,这里可以自己过滤 -
-
-             QueryRelativeList = (List<SearchParametersparameters=> -
-
-             { -
+
+         //此处是从前台提交的原生的查询条件,这里可以自己过滤 +
+
+         QueryRelativeList = (List<SearchParameters> parameters) => +
+
+         { +

-
-             }; -
+
+         }; +

-
-             //2020.08.15 -
-
-             //设置原生查询的sql语句,这里必须返回select * 表所有字段 -
-
-             //(先内部过滤数据,内部调用EF方法FromSqlRaw,自己写的sql注意sql注入的问题),不会影响界面上提交的查询 -
-
-             /*   -
-
-              *  string date = DateTime.Now.AddYears(-10).ToString("yyyy-MM-dd"); -
-
-                 QuerySql = $@"select * from SellOrder   -
-
-                                        where createdate>'{date}' -
-
-                                            and  Order_Id in (select Order_Id from SellOrderList) -
-
-                                            and CreateID={UserContext.Current.UserId}"; -
-
-             */ -
+
+         //2020.08.15 +
+
+         //设置原生查询的sql语句,这里必须返回select * 表所有字段 +
+
+         //(先内部过滤数据,内部调用EF方法FromSqlRaw,自己写的sql注意sql注入的问题),不会影响界面上提交的查询 +
+
+         /*   +
+
+          *  string date = DateTime.Now.AddYears(-10).ToString("yyyy-MM-dd"); +
+
+             QuerySql = $@"select * from SellOrder   +
+
+                                    where createdate>'{date}' +
+
+                                        and  Order_Id in (select Order_Id from SellOrderList) +
+
+                                        and CreateID={UserContext.Current.UserId}"; +
+
+         */ +

-
-             //2020.08.15 -
-
-             //此处与上面QuerySql只需要实现其中一个就可以了 -
-
-             //查询前可以自已设定查询表达式的条件 -
-
-             QueryRelativeExpression = (IQueryable<SellOrderqueryable=> -
-
-             { -
-
-                 //当前用户只能操作自己(与下级角色)创建的数据,如:查询、删除、修改等操作 -
-
-                 //IQueryable<int> userQuery = RoleContext.GetCurrentAllChildUser(); -
-
-                 //queryable = queryable.Where(x => x.CreateID == UserContext.Current.UserId || userQuery.Contains(x.CreateID ?? 0)); -
-
-                 return queryable; -
-
-             }; -
+
+         //2020.08.15 +
+
+         //此处与上面QuerySql只需要实现其中一个就可以了 +
+
+         //查询前可以自已设定查询表达式的条件 +
+
+         QueryRelativeExpression = (IQueryable<SellOrder> queryable) => +
+
+         { +
+
+             //当前用户只能操作自己(与下级角色)创建的数据,如:查询、删除、修改等操作 +
+
+             //IQueryable<int> userQuery = RoleContext.GetCurrentAllChildUser(); +
+
+             //queryable = queryable.Where(x => x.CreateID == UserContext.Current.UserId || userQuery.Contains(x.CreateID ?? 0)); +
+
+             return queryable; +
+
+         }; +

-
-             //指定多个字段进行排序 -
-
-             OrderByExpression = x => new Dictionary<objectQueryOrderBy>() { -
-
-                 { x.CreateDate,QueryOrderBy.Desc }, -
-
-                 { x.SellNo,QueryOrderBy.Asc} -
-
-             }; -
+
+         //指定多个字段进行排序 +
+
+         OrderByExpression = x => new Dictionary<object, QueryOrderBy>() { +
+
+             { x.CreateDate,QueryOrderBy.Desc }, +
+
+             { x.SellNo,QueryOrderBy.Asc} +
+
+         }; +

-
-             //int a = 1; -
-
-             ////指定多个字段按条件进行排序(需要2021.07.04更新LambdaExtensions类后才能使用) -
-
-             //OrderByExpression = x => new Dictionary<object, QueryOrderBy>() { -
-
-             //    { x.CreateDate,QueryOrderBy.Desc }, -
-
-             //    { x.SellNo,a==1?QueryOrderBy.Desc:QueryOrderBy.Asc} -
-
-             //}; -
+
+         //int a = 1; +
+
+         ////指定多个字段按条件进行排序(需要2021.07.04更新LambdaExtensions类后才能使用) +
+
+         //OrderByExpression = x => new Dictionary<object, QueryOrderBy>() { +
+
+         //    { x.CreateDate,QueryOrderBy.Desc }, +
+
+         //    { x.SellNo,a==1?QueryOrderBy.Desc:QueryOrderBy.Asc} +
+
+         //}; +

-
-             //查询完成后,在返回页面前可对查询的数据进行操作 -
-
-             GetPageDataOnExecuted = (PageGridData<SellOrdergrid=> -
-
-             { -
-
-                 //可对查询的结果的数据操作 -
-
-                 List<SellOrdersellOrders = grid.rows; -
-
-             }; -
-
-             //查询table界面显示求和 -
-
-             SummaryExpress = (IQueryable<SellOrderqueryable=> -
-
-             { -
-
-                 return queryable.GroupBy(x => 1).Select(x => new -
-
-                 { -
-
-                     //AvgPrice注意大小写和数据库字段大小写一样 -
-
-                     Qty = x.Sum(o => o.Qty).ToString("f2") -
-
-                 }) -
-
-                 .FirstOrDefault(); -
-
-             }; +
+         //查询完成后,在返回页面前可对查询的数据进行操作 +
+
+         GetPageDataOnExecuted = (PageGridData<SellOrder> grid) => +
+
+         { +
+
+             //可对查询的结果的数据操作 +
+
+             List<SellOrder> sellOrders = grid.rows; +
+
+         }; +
+
+         //查询table界面显示求和 +
+
+         SummaryExpress = (IQueryable<SellOrder> queryable) => +
+
+         { +
+
+             return queryable.GroupBy(x => 1).Select(x => new +
+
+             { +
+
+                 //AvgPrice注意大小写和数据库字段大小写一样 +
+
+                 Qty = x.Sum(o => o.Qty).ToString("f2") +
+
+             }) +
+
+             .FirstOrDefault(); +
+
+         }; +
+
+
+         return base.GetPageData(options); +
+
+     } +
+

+

+

+
+         /// <summary> +
+
+         /// 2023.02.03增加or查询条件示例 +
+
+         /// 注意:如果有导出功能,GetPageData方法内的代码在下面的export方法里需要同样的复制一份 +
+
+         /// </summary> +
+
+         /// <param name="options"></param> +
+
+         /// <returns></returns> +
+
+         public override PageGridData<SellOrder> GetPageData(PageDataOptions options) +
+
+         { +
+
+             System.Linq.Expressions.Expression<Func<SellOrder, bool>> orFilter = null; +
+
+             QueryRelativeList = (List<SearchParameters> parameters) => +
+
+             { +
+
+                 //方式1:动态生成or查询条件 +
+
+                 foreach (var item in parameters) +
+
+                 { +
+
+                     if (!string.IsNullOrEmpty(item.Value)) +
+
+                     { +
+
+                         //注意:这里只需要判断or查询的字段,其他的字段不需要处理 +
+
+                         //这里必须拷贝value值 +
+
+                         if (orFilter==null){ orFilter = x => false; } +
+
+                         string value = item.Value; +
+
+                         if (item.Name == "TranNo") +
+
+                         { +
+
+                             //进行or模糊查询 +
+
+                             orFilter = orFilter.Or(x => x.TranNo.Contains(value)); +
+
+                             //清空原来的数据 +
+
+                             item.Value = null; +
+
+                         } +
+
+                         else if (item.Name == "SellNo") +
+
+                         { +
+
+                             //进行or等于查询 +
+
+                             orFilter = orFilter.Or(x => x.SellNo == value); +
+
+                             //清空原来的数据 +
+
+                             item.Value = null; +
+
+                         } +
+
+                     } +
+
+                 } +
+
+                 ///方式2:原生sql查询,需要自己处理sql注入问题(不建议使用此方法) +
+
+                 //string sql = null; +
+
+                 //foreach (var item in parameters) +
+
+                 //{ +
+
+                 //    if (!string.IsNullOrEmpty(item.Value)) +
+
+                 //    { +
+
+                 //        if (sql == null) +
+
+                 //        { +
+
+                 //            sql = "where 1=2"; +
+
+                 //        } +
+ + +
+                 //        string value = item.Value; +
+
+                 //        //清空原来的数据 +
+
+                 //        item.Value = null; +
+
+                 //        if (item.Name == "TranNo") +
+
+                 //        { +
+
+                 //            sql += $" or TranNo='{value}'"; +
+
+                 //            //清空原来的数据 +
+
+                 //            item.Value = null; +
+
+                 //        } +
+
+                 //        else if (item.Name == "SellNo") +
+
+                 //        { +
+
+                 //            sql += $" or SellNo='{value}'"; +
+
+                 //        } +
+
+                 //    } +
+
+                 //} +
+
+                 //QuerySql = "select * from sellorder " + sql; +
+
+             }; +
+
+
+             QueryRelativeExpression = (IQueryable<SellOrder> queryable) => +
+
+             { +
+
+                 if (orFilter != null) +
+
+                 { +
+
+                     queryable = queryable.Where(orFilter); +
+
+                 } +
+
+                 return queryable; +
+
+             }; +
+
+             return base.GetPageData(options); +
+
+         } +
+

+
+     /// <summary> +
+
+     /// 设置弹出框明细表的合计信息 +
+
+     /// </summary> +
+
+     /// <typeparam name="detail"></typeparam> +
+
+     /// <param name="queryeable"></param> +
+
+     /// <returns></returns> +
+
+     protected override object GetDetailSummary<detail>(IQueryable<detail> queryeable) +
+
+     { +
+
+         return (queryeable as IQueryable<SellOrderList>).GroupBy(x => 1).Select(x => new +
+
+         { +
+
+             //Weight/Qty注意大小写和数据库字段大小写一样 +
+
+             Weight = x.Sum(o => o.Weight), +
+
+             Qty = x.Sum(o => o.Qty) +
+
+         }).FirstOrDefault(); +
+
+     } +
+
+
+     /// <summary> +
+
+     /// 查询业务代码编写(从表(明细表查询)) +
+
+     /// </summary> +
+
+     /// <param name="pageData"></param> +
+
+     /// <returns></returns> +
+
+     public override object GetDetailPage(PageDataOptions pageData) +
+
+     { +
+
+         //自定义查询胆细表 +
+
+
+         ////明细表自定义查询方式一:EF +
+
+         //var query = SellOrderListRepository.Instance.IQueryablePage<SellOrderList>( +
+
+         //     pageData.Page, +
+
+         //     pageData.Rows, +
+
+         //     out int count, +
+
+         //     x => x.Order_Id == pageData.Value.GetGuid(), +
+
+         //      orderBy: x => new Dictionary<object, QueryOrderBy>() { { x.CreateDate, QueryOrderBy.Desc } } +
+
+         //    ); +
+
+         //PageGridData<SellOrderList> detailGrid = new PageGridData<SellOrderList>(); +
+
+         //detailGrid.rows = query.ToList(); +
+
+         //detailGrid.total = count; +
+
+
+         ////明细表自定义查询方式二:dapper +
+
+         //string sql = "select count(1) from SellOrderList where Order_Id=@orderId"; +
+
+         //detailGrid.total = repository.DapperContext.ExecuteScalar(sql, new { orderId = pageData.Value }).GetInt(); +
+
+
+         //sql = @$"select * from ( +
+
+         //              select *,ROW_NUMBER()over(order by createdate desc) as rowId +
+
+         //           from SellOrderList where Order_Id=@orderId +
+
+         //        ) as s where s.rowId between {((pageData.Page - 1) * pageData.Rows + 1)} and {pageData.Page * pageData.Rows} "; +
+
+         //detailGrid.rows = repository.DapperContext.QueryList<SellOrderList>(sql, new { orderId = pageData.Value }); +
+
+
+         //return detailGrid; +
+
+
+         return base.GetDetailPage(pageData); +
+
+     } +
+
+
+     /// <summary> +
+
+     /// 新建 +
+
+     /// </summary> +
+
+     /// <param name="saveDataModel"></param> +
+
+     /// <returns></returns> +
+
+     public override WebResponseContent Add(SaveModel saveDataModel) +
+
+     { +
+
+         //此处saveModel是从前台提交的原生数据,可对数据进修改过滤 +
+
+         AddOnExecute = (SaveModel saveModel) => +
+
+         { +
+
+             //如果返回false,后面代码不会再执行 +
+
+             return webResponse.OK(); +
+
+         }; +
+
+         // 在保存数据库前的操作,所有数据都验证通过了,这一步执行完就执行数据库保存 +
+
+         AddOnExecuting = (SellOrder order, object list) => +
+
+         { +
+
+             //明细表对象 +
+
+             List<SellOrderList> orderLists = list as List<SellOrderList>; +

-
-             return base.GetPageData(options); -
-
-         } -
-
-         /// <summary> -
-
-         /// 设置弹出框明细表的合计信息 -
-
-         /// </summary> -
-
-         /// <typeparam name="detail"></typeparam> -
-
-         /// <param name="queryeable"></param> -
-
-         /// <returns></returns> -
-
-         protected override object GetDetailSummary<detail>(IQueryable<detailqueryeable) -
-
-         { -
-
-             return (queryeable as IQueryable<SellOrderList>).GroupBy(x => 1).Select(x => new -
-
-             { -
-
-                 //Weight/Qty注意大小写和数据库字段大小写一样 -
-
-                 Weight = x.Sum(o => o.Weight), -
-
-                 Qty = x.Sum(o => o.Qty) -
-
-             }).FirstOrDefault(); -
-
-         } -
+
+             //自定义逻辑 +
+
+             if (orderLists == null || orderLists.Count == 0) +
+
+             {//如果没有界面上没有填写明细,则中断执行 +
+
+                 return webResponse.Error("必须填写明细数据"); +
+
+             } +
+
+             if (orderLists.Exists(x => x.Qty <= 20)) +
+
+                 return webResponse.Error("明细数量必须大于20"); +

-
-         /// <summary> -
-
-         /// 查询业务代码编写(从表(明细表查询)) -
-
-         /// </summary> -
-
-         /// <param name="pageData"></param> -
-
-         /// <returns></returns> -
-
-         public override object GetDetailPage(PageDataOptions pageData) -
-
-         { -
-
-             //自定义查询胆细表 -
+
+             //设置webResponse.Code = "-1"会中止后面代码执行,与返回 webResponse.Error()一样,区别在于前端提示的是成功或失败 +
+
+             //webResponse.Code = "-1"; +
+
+             // webResponse.Message = "测试强制返回"; +
+
+             //return webResponse.OK("ok"); +

-
-             ////明细表自定义查询方式一:EF -
-
-             //var query = SellOrderListRepository.Instance.IQueryablePage<SellOrderList>( -
-
-             //     pageData.Page, -
-
-             //     pageData.Rows, -
-
-             //     out int count, -
-
-             //     x => x.Order_Id == pageData.Value.GetGuid(), -
-
-             //      orderBy: x => new Dictionary<object, QueryOrderBy>() { { x.CreateDate, QueryOrderBy.Desc } } -
-
-             //    ); -
-
-             //PageGridData<SellOrderList> detailGrid = new PageGridData<SellOrderList>(); -
-
-             //detailGrid.rows = query.ToList(); -
-
-             //detailGrid.total = count; -
+
+             return webResponse.OK(); +
+
+         }; +

-
-             ////明细表自定义查询方式二:dapper -
-
-             //string sql = "select count(1) from SellOrderList where Order_Id=@orderId"; -
-
-             //detailGrid.total = repository.DapperContext.ExecuteScalar(sql, new { orderId = pageData.Value }).GetInt(); -
+
+         //此方法中已开启了事务,如果在此方法中做其他数据库操作,请不要再开启事务 +
+
+         // 在保存数据库后的操作,此时已进行数据提交,但未提交事务,如果返回false,则会回滚提交 +
+
+         AddOnExecuted = (SellOrder order, object list) => +
+
+         { +
+
+             //明细表对象 +
+
+             // List<SellOrderList> orderLists = list as List<SellOrderList>; +

-
-             //sql = @$"select * from ( -
-
-             //              select *,ROW_NUMBER()over(order by createdate desc) as rowId  -
-
-             //           from SellOrderList where Order_Id=@orderId -
-
-             //        ) as s where s.rowId between {((pageData.Page - 1) * pageData.Rows + 1)} and {pageData.Page * pageData.Rows} "; -
-
-             //detailGrid.rows = repository.DapperContext.QueryList<SellOrderList>(sql, new { orderId = pageData.Value }); -
+
+             if (order.Qty < 10) +
+
+             {  //如果输入的销售数量<10,会回滚数据库 +
+
+                 return webResponse.Error("销售数量必须大于1000"); +
+
+             } +

-
-             //return detailGrid; -
+
+             return webResponse.OK("已新建成功,台AddOnExecuted方法返回的消息"); +
+
+         }; +

-
-             return base.GetDetailPage(pageData); -
-
-         } -
+
+         //新建的数据进入审批流程前处理, +
+
+         AddWorkFlowExecuting = (SellOrder order) => +
+
+         { +
+
+             //返回false,当前数据不会进入审批流程 +
+
+             return true; +
+
+         }; +

-
-         /// <summary> -
-
-         /// 新建 -
-
-         /// </summary> -
-
-         /// <param name="saveDataModel"></param> -
-
-         /// <returns></returns> -
-
-         public override WebResponseContent Add(SaveModel saveDataModel) -
-
-         { -
-
-             //此处saveModel是从前台提交的原生数据,可对数据进修改过滤 -
-
-             AddOnExecute = (SaveModel saveModel=> -
-
-             { -
-
-                 //如果返回false,后面代码不会再执行 -
-
-                 return webResponse.OK(); -
-
-             }; -
-
-             // 在保存数据库前的操作,所有数据都验证通过了,这一步执行完就执行数据库保存 -
-
-             AddOnExecuting = (SellOrder orderobject list=> -
-
-             { -
-
-                 //如果设置code=-1会强制返回,不再继续后面的操作,2021.07.04更新LambdaExtensions文件后才可以使用此属性 -
-
-                 //webResponse.Code = "-1"; -
-
-                 // webResponse.Message = "测试强制返回"; -
-
-                 //return webResponse.OK(); -
+
+         //新建的数据写入审批流程后,第二个参数为审批人的用户id +
+
+         AddWorkFlowExecuted = (SellOrder order, List<int> userIds) => +
+
+         { +
+
+             //这里可以做发邮件通知 +
+
+             //var userInfo = repository.DbContext.Set<Sys_User>() +
+
+             //                .Where(x => userIds.Contains(x.User_Id)) +
+
+             //                .Select(s => new { s.User_Id, s.UserTrueName, s.Email, s.PhoneNo }).ToList(); +
+
+
+             //发送邮件方法 +
+
+             //MailHelper.Send() +
+
+         }; +

-
-                 List<SellOrderListorderLists = list as List<SellOrderList>; -
-
-                 if (orderLists == null || orderLists.Count == 0) -
-
-                 {//如果没有界面上没有填写明细,则中断执行 -
-
-                     return webResponse.Error("必须填写明细数据"); -
-
-                 } -
-
-                 if (orderLists.Exists(x => x.Qty <= 20)) -
-
-                     return webResponse.Error("明细数量必须大于20"); -
+
+         return base.Add(saveDataModel); +
+
+     } +
+
+     /// <summary> +
+
+     /// 编辑操作 +
+
+     /// </summary> +
+
+     /// <param name="saveModel"></param> +
+
+     /// <returns></returns> +
+
+     public override WebResponseContent Update(SaveModel saveModel) +
+
+     { +
+
+         //注意:如果要给其他字段设置值,请在此处设置,如:(代码生成器上将字段编辑行设置为0,然后点生成model) +
+
+         //saveModel.MainData["字段"] = "值"; +

-
-                 return webResponse.OK(); -
-
-             }; -
+
+         //此处saveModel是从前台提交的原生数据,可对数据进修改过滤 +
+
+         UpdateOnExecute = (SaveModel model) => +
+
+         { +
+
+             ////这里的设置配合下面order.Remark = "888"代码位置使用 +
+
+             // saveModel.MainData.TryAdd("Remark", "1231"); +

-
-             //此方法中已开启了事务,如果在此方法中做其他数据库操作,请不要再开启事务 -
-
-             // 在保存数据库后的操作,此时已进行数据提交,但未提交事务,如果返回false,则会回滚提交 -
-
-             AddOnExecuted = (SellOrder orderobject list=> -
-
-             { -
-
-                 if (order.Qty < 10) -
-
-                 {  //如果输入的销售数量<10,会回滚数据库 -
-
-                     return webResponse.Error("销售数量必须大于1000"); -
-
-                 } -
-
-                 return webResponse.OK("已新建成功,台AddOnExecuted方法返回的消息"); -
-
-             }; -
+
+             //如果不想前端提交某些可以编辑的字段的值,直接移除字段 +
+
+             // saveModel.MainData.Remove("字段"); +

-
-             return base.Add(saveDataModel); -
-
-         } -
-
-         /// <summary> -
-
-         /// 编辑操作 -
-
-         /// </summary> -
-
-         /// <param name="saveModel"></param> -
-
-         /// <returns></returns> -
-
-         public override WebResponseContent Update(SaveModel saveModel) -
-
-         { -
-
-             //此处saveModel是从前台提交的原生数据,可对数据进修改过滤 -
-
-             UpdateOnExecute = (SaveModel model=> -
-
-             { -
-
-                 ////这里的设置配合下面order.Remark = "888"代码位置使用 -
-
-                 // saveModel.MainData.TryAdd("Remark", "1231"); -
+
+             //如果返回false,后面代码不会再执行 +
+
+             return webResponse.OK(); +

-
-                 //如果不想前端提交某些可以编辑的字段的值,直接移除字段 -
-
-                 // saveModel.MainData.Remove("字段"); -
+
+         }; +

-
-                 //如果返回false,后面代码不会再执行 -
-
-                 return webResponse.OK(); -
+
+         //编辑方法保存数据库前处理 +
+
+         UpdateOnExecuting = (SellOrder order, object addList, object updateList, List<object> delKeys) => +
+
+           { +
+
+               if (order.TranNo == "2019000001810001") +
+
+               { +
+
+                   //如果设置code=-1会强制返回,不再继续后面的操作,2021.07.04更新LambdaExtensions文件后才可以使用此属性 +
+
+                   //webResponse.Code = "-1"; +
+
+                   // webResponse.Message = "测试强制返回"; +
+
+                   //return webResponse.OK(); +
+
+                   return webResponse.Error("不能更新此[" + order.TranNo + "]单号"); +
+
+               } +

-
-             }; -
+
+               ////如果要手动设置某些字段的值,值不是前端提交的(代码生成器里面编辑行必须设置为0并生成model),如Remark字段: +
+
+               ////注意必须设置上面saveModel.MainData.TryAdd("Remark", "1231") +
+
+               //order.Remark = "888"; +

+
+               //新增的明细表 +
+
+               List<SellOrderList> add = addList as List<SellOrderList>; +
+
+               //修改的明细表 +
+
+               List<SellOrderList> update = updateList as List<SellOrderList>; +
+
+               //删除明细表Id +
+
+               var guids = delKeys?.Select(x => (Guid)x); +

-
-             //编辑方法保存数据库前处理 -
-
-             UpdateOnExecuting = (SellOrder orderobject addListobject updateListList<objectdelKeys=> -
-
-               { -
-
-                   if (order.TranNo == "2019000001810001") -
-
-                   { -
-
-                       //如果设置code=-1会强制返回,不再继续后面的操作,2021.07.04更新LambdaExtensions文件后才可以使用此属性 -
-
-                       //webResponse.Code = "-1"; -
-
-                       // webResponse.Message = "测试强制返回"; -
-
-                       //return webResponse.OK(); -
-
-                       return webResponse.Error("不能更新此[" + order.TranNo + "]单号"); -
-
-                   } -
+
+               //设置webResponse.Code = "-1"会中止后面代码执行,与返回 webResponse.Error()一样,区别在于前端提示的是成功或失败 +
+
+               //webResponse.Code = "-1"; +
+
+               // webResponse.Message = "测试强制返回"; +
+
+               //return webResponse.OK("ok"); +
+
+
+               return webResponse.OK(); +
+
+           }; +
+
+
+         //编辑方法保存数据库后处理 +
+
+         //此方法中已开启了事务,如果在此方法中做其他数据库操作,请不要再开启事务 +
+
+         // 在保存数据库后的操作,此时已进行数据提交,但未提交事务,如果返回false,则会回滚提交 +
+
+         UpdateOnExecuted = (SellOrder order, object addList, object updateList, List<object> delKeys) => +
+
+           { +
+
+               //新增的明细 +
+
+               List<SellOrderList> add = addList as List<SellOrderList>; +
+
+               //修改的明细 +
+
+               List<SellOrderList> update = updateList as List<SellOrderList>; +
+
+               //删除的行的主键 +
+
+               var guids = delKeys?.Select(x => (Guid)x); +
+
+               return webResponse.OK(); +
+
+           }; +
+
+
+         return base.Update(saveModel); +
+
+     } +
+
+
+     /// <summary> +
+
+     /// 删除 +
+
+     /// </summary> +
+
+     /// <param name="keys">删除的行的主键</param> +
+
+     /// <param name="delList">删除时是否将明细也删除</param> +
+
+     /// <returns></returns> +
+
+     public override WebResponseContent Del(object[] keys, bool delList = true) +
+
+     { +
+
+         //删除前处理 +
+
+         //删除的行的主键 +
+
+         DelOnExecuting = (object[] _keys) => +
+
+         { +
+
+             return webResponse.OK(); +
+
+         }; +
+
+         //删除后处理 +
+
+         //删除的行的主键 +
+
+         DelOnExecuted = (object[] _keys) => +
+
+          { +
+
+              return webResponse.OK(); +
+
+          }; +
+
+         return base.Del(keys, delList); +
+
+     } +
+
+     public override WebResponseContent Audit(object[] keys, int? auditStatus, string auditReason) +
+
+     { +
+
+         //status当前审批状态,lastAudit是否最后一个审批节点 +
+
+         AuditWorkFlowExecuting = (SellOrder order, AuditStatus status, bool lastAudit) => +
+
+         { +
+
+             return webResponse.OK(); +
+
+         }; +
+
+         //status当前审批状态,nextUserIds下一个节点审批人的帐号id(可以从sys_user表中查询用户具体信息),lastAudit是否最后一个审批节点 +
+
+         AuditWorkFlowExecuted = (SellOrder order, AuditStatus status, List<int> nextUserIds, bool lastAudit) => +
+
+         { +
+
+             //lastAudit=true时,流程已经结束 +
+
+             if (!lastAudit) +
+
+             { +
+
+                 //这里可以给下一批审批发送邮件通知 +
+
+                 //var userInfo = repository.DbContext.Set<Sys_User>() +
+
+                 //             .Where(x => nextUserIds.Contains(x.User_Id)) +
+
+                 //             .Select(s => new { s.User_Id, s.UserTrueName, s.Email, s.PhoneNo }).ToList(); +
+
+             } +

-
-                   ////如果要手动设置某些字段的值,值不是前端提交的(代码生成器里面编辑行必须设置为0并生成model),如Remark字段: -
-
-                   ////注意必须设置上面saveModel.MainData.TryAdd("Remark", "1231") -
-
-                   //order.Remark = "888"; -
+
+             //审批流程回退功能,回到第一个审批人重新审批(重新生成审批流程) +
+
+             //if (status==AuditStatus.审核未通过||status==AuditStatus.驳回) +
+
+             //{ +
+
+             //    base.RewriteFlow(order); +
+
+             //} +

-
-                   //新增的明细表 -
-
-                   List<SellOrderListadd = addList as List<SellOrderList>; -
-
-                   //修改的明细表 -
-
-                   List<SellOrderListupdate = updateList as List<SellOrderList>; -
-
-                   //删除明细表Id -
-
-                   var guids = delKeys?.Select(x => (Guid)x); -
+
+             return webResponse.OK(); +
+
+         }; +

-
-                   return webResponse.OK(); -
-
-               }; -
+
+         //审核保存前处理(不是审批流程) +
+
+         AuditOnExecuting = (List<SellOrder> order) => +
+
+         { +
+
+             return webResponse.OK(); +
+
+         }; +
+
+         //审核后处理(不是审批流程) +
+
+         AuditOnExecuted = (List<SellOrder> order) => +
+
+         { +
+
+             return webResponse.OK(); +
+
+         }; +

-
-             //编辑方法保存数据库后处理 -
-
-             //此方法中已开启了事务,如果在此方法中做其他数据库操作,请不要再开启事务 -
-
-             // 在保存数据库后的操作,此时已进行数据提交,但未提交事务,如果返回false,则会回滚提交 -
-
-             UpdateOnExecuted = (SellOrder orderobject addListobject updateListList<objectdelKeys=> -
-
-               { -
-
-                   //新增的明细 -
-
-                   List<SellOrderListadd = addList as List<SellOrderList>; -
-
-                   //修改的明细 -
-
-                   List<SellOrderListupdate = updateList as List<SellOrderList>; -
-
-                   //删除的行的主键 -
-
-                   var guids = delKeys?.Select(x => (Guid)x); -
-
-                   return webResponse.OK(); -
-
-               }; -

-
-             return base.Update(saveModel); -
-
-         } -
+
+         return base.Audit(keys, auditStatus, auditReason); +
+
+     } +

-
-         /// <summary> -
-
-         /// 删除 -
-
-         /// </summary> -
-
-         /// <param name="keys">删除的行的主键</param> -
-
-         /// <param name="delList">删除时是否将明细也删除</param> -
-
-         /// <returns></returns> -
-
-         public override WebResponseContent Del(object[] keysbool delList = true) -
-
-         { -
-
-             //删除前处理 -
-
-             //删除的行的主键 -
-
-             DelOnExecuting = (object[] _keys=> -
-
-             { -
-
-                 return webResponse.OK(); -
-
-             }; -
-
-             //删除后处理 -
-
-             //删除的行的主键 -
-
-             DelOnExecuted = (object[] _keys=> -
-
-              { -
-
-                  return webResponse.OK(); -
-
-              }; -
-
-             return base.Del(keysdelList); -
-
-         } -
-
-         public override WebResponseContent Audit(object[] keysintauditStatusstring auditReason) -
-
-         { -
-
-             //审核保存前处理 -
-
-             AuditOnExecuting = (List<SellOrderorder=> -
-
-             { -
-
-                 return webResponse.OK(); -
-
-             }; -
+
+     /// <summary> +
+
+     /// 导出 +
+
+     /// </summary> +
+
+     /// <param name="pageData"></param> +
+
+     /// <returns></returns> +
+
+     public override WebResponseContent Export(PageDataOptions pageData) +
+
+     { +
+
+         //设置最大导出的数量 +
+
+         Limit = 1000; +
+
+         //指定导出的字段(2020.05.07) +
+
+         ExportColumns = x => new { x.SellNo, x.TranNo, x.CreateDate }; +

-
-             AuditOnExecuted = (List<SellOrderorder=> -
-
-             { -
-
-                 return webResponse.OK(); -
-
-             }; -
-
-             return base.Audit(keysauditStatus, auditReason); -
-
-         } -
+
+         //查询要导出的数据后,在生成excel文件前处理 +
+
+         //list导出的实体,ignore过滤不导出的字段 +
+
+         ExportOnExecuting = (List<SellOrder> list, List<string> ignore) => +
+
+         { +
+
+             return webResponse.OK(); +
+
+         }; +

-
-         /// <summary> -
-
-         /// 导出 -
-
-         /// </summary> -
-
-         /// <param name="pageData"></param> -
-
-         /// <returns></returns> -
-
-         public override WebResponseContent Export(PageDataOptions pageData) -
-
-         { -
-
-             //设置最大导出的数量 -
-
-             Limit = 1000; -
-
-             //指定导出的字段(2020.05.07) -
-
-             ExportColumns = x => new { x.SellNox.TranNox.CreateDate }; -
+
+         return base.Export(pageData); +
+
+     } +

-
-             //查询要导出的数据后,在生成excel文件前处理 -
-
-             //list导出的实体,ignore过滤不导出的字段 -
-
-             ExportOnExecuting = (List<SellOrderlistList<stringignore=> -
-
-             { -
-
-                 return webResponse.OK(); -
-
-             }; -
+
+     /// <summary> +
+
+     /// 下载模板(导入时弹出框中的下载模板)(2020.05.07) +
+
+     /// </summary> +
+
+     /// <returns></returns> +
+
+     public override WebResponseContent DownLoadTemplate() +
+
+     { +
+
+         //指定导出模板的字段,如果不设置DownLoadTemplateColumns,默认导出查所有页面上能看到的列(2020.05.07) +
+
+         DownLoadTemplateColumns = x => new { x.SellNo, x.TranNo, x.Remark, x.CreateDate }; +
+
+         return base.DownLoadTemplate(); +
+
+     } +

-
-             return base.Export(pageData); -
-
-         } -
+
+     /// <summary> +
+
+     /// 导入 +
+
+     /// </summary> +
+
+     /// <param name="files"></param> +
+
+     /// <returns></returns> +
+
+     public override WebResponseContent Import(List<IFormFile> files) +
+
+     { +
+
+         //(2020.05.07) +
+
+         //设置导入的字段(如果指定了上面导出模板的字段,这里配置应该与上面DownLoadTemplate方法里配置一样) +
+
+         //如果不设置导入的字段DownLoadTemplateColumns,默认显示所有界面上所有可以看到的字段 +
+
+         DownLoadTemplateColumns = x => new { x.SellNo, x.TranNo, x.Remark, x.CreateDate }; +

-
-         /// <summary> -
-
-         /// 下载模板(导入时弹出框中的下载模板)(2020.05.07) -
-
-         /// </summary> -
-
-         /// <returns></returns> -
-
-         public override WebResponseContent DownLoadTemplate() -
-
-         { -
-
-             //指定导出模板的字段,如果不设置DownLoadTemplateColumns,默认导出查所有页面上能看到的列(2020.05.07) -
-
-             DownLoadTemplateColumns = x => new { x.SellNox.TranNox.Remarkx.CreateDate }; -
-
-             return base.DownLoadTemplate(); -
-
-         } -
+
+         /// <summary> +
+
+         /// 2022.06.20增加原生excel读取方法(导入时可以自定义读取excel内容) +
+
+         /// string=当前读取的excel单元格的值 +
+
+         /// ExcelWorksheet=excel对象 +
+
+         /// ExcelRange当前excel单元格对象 +
+
+         /// int=当前读取的第几行 +
+
+         /// int=当前读取的第几列 +
+
+         /// string=返回的值 +
+
+         /// </summary> +
+
+         ImportOnReadCellValue = (string value, ExcelWorksheet worksheet, ExcelRange excelRange, int rowIndex, int columnIndex) => +
+
+         { +
+
+             string 表头列名 = worksheet.Cells[1, columnIndex].Value?.ToString(); +
+
+             //这里可以返回处理后的值,值最终写入到model字段上 +
+
+             return value; +
+
+         }; +

-
-         /// <summary> -
-
-         /// 导入 -
-
-         /// </summary> -
-
-         /// <param name="files"></param> -
-
-         /// <returns></returns> -
-
-         public override WebResponseContent Import(List<IFormFilefiles) -
-
-         { -
-
-             //(2020.05.07) -
-
-             //设置导入的字段(如果指定了上面导出模板的字段,这里配置应该与上面DownLoadTemplate方法里配置一样) -
-
-             //如果不设置导入的字段DownLoadTemplateColumns,默认显示所有界面上所有可以看到的字段 -
-
-             DownLoadTemplateColumns = x => new { x.SellNox.TranNox.Remarkx.CreateDate }; -
+
+         //导入保存前处理(可以对list设置新的值) +
+
+         ImportOnExecuting = (List<SellOrder> list) => +
+
+         { +
+
+             //设置webResponse.Code = "-1"会中止后面代码执行,与返回 webResponse.Error()一样,区别在于前端提示的是成功或失败 +
+
+             //webResponse.Code = "-1"; +
+
+             //webResponse.Message = "测试强制返回"; +
+
+             //return webResponse.OK("ok"); +

-
-             //导入保存前处理(可以对list设置新的值) -
-
-             ImportOnExecuting = (List<SellOrderlist=> -
-
-             { -
-
-                 return webResponse.OK(); -
-
-             }; -
+
+             return webResponse.OK(); +
+
+         }; +

-
-             //导入后处理(已经写入到数据库了) -
-
-             ImportOnExecuted = (List<SellOrderlist=> -
-
-             { -
-
-                 return webResponse.OK(); -
-
-             }; -
-
-             return base.Import(files); -
-
-         } -
+
+         //导入后处理(已经写入到数据库了) +
+
+         ImportOnExecuted = (List<SellOrder> list) => +
+
+         { +
+
+             return webResponse.OK(); +
+
+         }; +
+
+         return base.Import(files); +
+
+     } +

-
-     } +
+     public override WebResponseContent Upload(List<IFormFile> files) +
+
+     { +
+
+         //自定义上传文件路径(目前只支持配置相对路径,默认上传到wwwwroot下) +
+
+         //2022.10.07更新ServiceBase.cs、ServiceFunFilter.cs后才能使用 +
+
+         UploadFolder = $"test/{DateTime.Now.ToString("yyyyMMdd")}"; +
+
+         return base.Upload(files); +
+
+     } +
+
+
+ } +
-
`, +

+

+
+

`, ], tips: `后面扩展实现覆盖了常用业务,请根据需要实现对应方法`, }, diff --git a/Vol.Vue/src/views/document/vueDev.vue b/Vol.Vue/src/views/document/vueDev.vue index 760d2f8bc..cc930a536 100644 --- a/Vol.Vue/src/views/document/vueDev.vue +++ b/Vol.Vue/src/views/document/vueDev.vue @@ -16,7 +16,7 @@ :style="item.style" @click="scrollIntoView(index)" >{{ index + 1 }}. - {{ index == 0 ? "添加动态按钮" : item.title }} @@ -26,38 +26,13 @@

前端开发

-
+
+

此文档是对生成页面的常用功能示例扩展

- 此文档是对代码生成viewGrid组件页面业务逻辑进行扩展(列举的是常用功能) + 详细文档见:组件api->代码生成页面ViewGrid或SellOrder.js文件

-

详细文档见:组件api->代码生成页面ViewGrid

-
-

- 更多具体扩展代码实现参照:extension->order->SellOrder.js或viewgird组件demo -

-
-
- - 提示 - - -
-

- 下面都是对表App_Expert.js进行的扩展操作,将下面代码复制到App_Expert.js文件methods下即可直接运行 -

-

- 没有特别标明的,都是实现的App_Expert.js扩展,也适用其它所有代码生成的页面 -

-

所有图片点击即可查看大图

1、菜单上点击[其他权限]

2、分配按钮权限

-

3、在buttons.js中添加按钮配置

`, +

3、在buttons.js中添加按钮配置

` ], buttonClick: () => { this.doc_model = true; @@ -175,14 +150,15 @@ export default { tips: ` `, drawer: true, img: [ - "https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/20201213btn01.jpg?imageMogr2/thumbnail/!35p", - "https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/20201213btn02.jpg?imageMogr2/thumbnail/!35p", - "https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/20201213btn03.jpg?imageMogr2/thumbnail/!35p", - "https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/20201213btn04.jpg?imageMogr2/thumbnail/!35p", + 'https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/20201213btn01.jpg?imageMogr2/thumbnail/!35p', + 'https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/20201213btn02.jpg?imageMogr2/thumbnail/!35p', + 'https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/20201213btn03.jpg?imageMogr2/thumbnail/!35p', + 'https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/20201213btn04.jpg?imageMogr2/thumbnail/!35p' ], + tips: '无' }, { - title: "禁用页面缓存keepAlive", + title: '禁用页面缓存keepAlive', content: [ `所有页面默认开启了缓存,即所有页面只会执行一次created与onInit

@@ -194,13 +170,13 @@ export default { 解决方法2:如果需要每次进入页面查询数据,在[表名.js]文件中添加:
   onActivated(){
   }

`, + 
` ], - tips: "", - img: "", + tips: '无', + img: '' }, { - title: "判断是否有按钮权限", + title: '判断是否有按钮权限', content: [ `
@@ -229,23 +205,23 @@ export default {
-
`, +
` ], - tips: "", - img: "", + tips: '', + img: '' }, { - title: "前端断点调试", + title: '前端断点调试', content: [`见右边截图`], - tips: "", - img: "https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/2020121302.png?imageMogr2/thumbnail/!35p", + tips: '', + img: 'https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/2020121302.png?imageMogr2/thumbnail/!35p' }, { - title: "查询界面操作", - type: "line", + title: '查询界面操作', + type: 'line' }, { - title: "查询界面动态添加按钮", + title: '查询界面动态添加按钮', content: [ `
@@ -281,13 +257,13 @@ export default {
    }
-
`, +
` ], tips: ` this.buttons来源:ViewGrid.vue组件data->buttons属性`, - img: "https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/01.png?imageMogr2/thumbnail/!35p", + img: 'https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/01.png?imageMogr2/thumbnail/!35p' }, { - title: "查询界面--默认排序", + title: '查询界面--默认排序', content: [ `
@@ -305,13 +281,13 @@ export default {


-

`, +

` ], - tips: "", - img: "", + tips: '', + img: '' }, { - title: "查询界面--固定列fixed", + title: '查询界面--固定列fixed', content: [ `

@@ -349,13 +325,13 @@ export default {


-

`, +

` ], - tips: "", - img: "https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/0922.png?imageMogr2/thumbnail/!35p", + tips: '', + img: 'https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/0922.png?imageMogr2/thumbnail/!35p' }, { - title: "查询界面--第二种布局", + title: '查询界面--第二种布局', content: [ `
   //调用setFiexdSearchForm方法后,即可开启第二种查询布局
@@ -374,13 +350,13 @@ export default {
    }
-
`, +
` ], tips: `还没想好`, - img: "https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/35.png?imageMogr2/thumbnail/!35p", + img: 'https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/35.png?imageMogr2/thumbnail/!35p' }, { - title: "查询界面--默认查询值", + title: '查询界面--默认查询值', content: [ `
@@ -398,23 +374,23 @@ export default {
    }
-
`, +
` ], tips: ` 还没想好`, - img: "https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/36.png?imageMogr2/thumbnail/!35p", + img: 'https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/36.png?imageMogr2/thumbnail/!35p' }, { - title: "查询界面--区间查询", + title: '查询界面--区间查询', content: [ - `2021.05.01更新后,直接使用代码生成器生成,升级方式见`, + `2021.05.01更新后,直接使用代码生成器生成,升级方式见` ], tips: `还没想好`, - img: "https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/41.png?imageMogr2/thumbnail/!35p", + img: 'https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/41.png?imageMogr2/thumbnail/!35p' }, { - title: "查询界面--单日期查询", + title: '查询界面--单日期查询', content: [ `
@@ -459,14 +435,14 @@ export default {
    }
-
`, +
` ], tips: ` 还没想好`, - img: "https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/2020112101.png?imageMogr2/thumbnail/!35p", + img: 'https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/2020112101.png?imageMogr2/thumbnail/!35p' }, { - title: "查询界面-移除快捷查询", + title: '查询界面-移除快捷查询', content: [ `
@@ -478,17 +454,17 @@ export default {
    }
-
`, +
` ], tips: ` 还没想好`, img: [ - "https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/2020112102.png?imageMogr2/thumbnail/!35p", - "https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/2020112103.png?imageMogr2/thumbnail/!35p", - ], + 'https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/2020112102.png?imageMogr2/thumbnail/!35p', + 'https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/2020112103.png?imageMogr2/thumbnail/!35p' + ] }, { - title: "查询界面-destroyed页面销毁", + title: '查询界面-destroyed页面销毁', content: [ `
@@ -512,13 +488,13 @@ export default {
  }
-
`, +
` ], tips: ` 还没想好`, - img: [""], + img: [''] }, { - title: "查询界面-隐藏查询按钮", + title: '查询界面-隐藏查询按钮', content: [ `
2020.11.29更新viewgrid.vue组件才能使用 @@ -560,16 +536,16 @@ export default {
    }
-
`, +
` ], tips: ` 还没想好`, img: [ - "https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/2020112901.png?imageMogr2/thumbnail/!35p", - "https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/2020112902.png?imageMogr2/thumbnail/!35p", - ], + 'https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/2020112901.png?imageMogr2/thumbnail/!35p', + 'https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/2020112902.png?imageMogr2/thumbnail/!35p' + ] }, { - title: "查询界面-自定义弹出框", + title: '查询界面-自定义弹出框', content: [ `
扩展子组件的内容App_ExpertGridHeader.vue @@ -1063,23 +1039,23 @@ export default { export default extension;
-`, +` ], tips: ` 还没想好`, img: [ - "https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/2020120601.png?imageMogr2/thumbnail/!35p", - "https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/2020120602.png?imageMogr2/thumbnail/!35p", - "https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/2020120603.png?imageMogr2/thumbnail/!35p", - "https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/2020120604.png?imageMogr2/thumbnail/!35p", - ], + 'https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/2020120601.png?imageMogr2/thumbnail/!35p', + 'https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/2020120602.png?imageMogr2/thumbnail/!35p', + 'https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/2020120603.png?imageMogr2/thumbnail/!35p', + 'https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/2020120604.png?imageMogr2/thumbnail/!35p' + ] }, { - title: "查询界面-多个弹出框", - content: ["见上面【自定义弹出框】"], - tips: ` 见上面【自定义弹出框】`, + title: '查询界面-多个弹出框', + content: ['见上面【自定义弹出框】'], + tips: ` 见上面【自定义弹出框】` }, { - title: "弹出框界面动态按钮", + title: '弹出框界面动态按钮', content: [ `
@@ -1139,13 +1115,13 @@ export default {
    }
-
`, +
` ], tips: `可根据this.currentAction判断当前是新建还是编辑来动态设置弹出框按钮`, - img: "https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/19.png?imageMogr2/thumbnail/!35p", + img: 'https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/19.png?imageMogr2/thumbnail/!35p' }, { - title: "设置按钮显示个数", + title: '设置按钮显示个数', content: [ `
@@ -1166,25 +1142,25 @@ export default {
-
`, +
` ], tips: ` this.maxBtnLength来源:ViewGrid.vue组件data->maxBtnLength属性`, - img: "https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/02.png?imageMogr2/thumbnail/!35p", + img: 'https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/02.png?imageMogr2/thumbnail/!35p' }, { - title: "点击按钮弹出框", + title: '点击按钮弹出框', content: [ `

点击按钮,弹出自定义弹出框(参照SellOrder.js实现)

实现思路:

      1、定义一个弹出框的vue页面,此页面可以写任意代码

      2、gridHeader引入此vue页面

-

      3、点击按钮触发 this.$refs.gridHeader.model

`, +

      3、点击按钮触发 this.$refs.gridHeader.model

` ], tips: ` SellOrder.js点击自定的义按钮后,再弹弹出自定义的这个vue页面`, - img: "https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/06.png?imageMogr2/thumbnail/!35p", + img: 'https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/06.png?imageMogr2/thumbnail/!35p' }, { - title: "手动打开/关闭tabs", + title: '手动打开/关闭tabs', content: [ `
2020.08.01(需要更新文件:index.vue 、main.js标注了更新位置)
@@ -1231,27 +1207,27 @@ export default {
    this.$tabs.close("/userinfo");
-
`, +
` ], tips: `还没想好`, - img: "", + img: '' }, { - title: "页面显示扩展", + title: '页面显示扩展', content: [ `

如果页面需要更多信息,可实现自下定义扩展

可以对查询页面,弹出框进行扩展显示更多信息

-

参照App_Appointment.js实现(SellOrder.js实现更全面)

`, +

参照App_Appointment.js实现(SellOrder.js实现更全面)

` ], tips: ` App_Appointment.js中将自己写的vue页面引用到gridHeader/gridBody/gridFooter属性上即可实现功能`, - img: "https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/07.png?imageMogr2/thumbnail/!35p", + img: 'https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/07.png?imageMogr2/thumbnail/!35p' }, { - title: "查询界面table修改", - type: "line", + title: '查询界面table修改', + type: 'line' }, { - title: "render渲染table对象", + title: 'render渲染table对象', content: [ `
@@ -1443,14 +1419,14 @@ export default {
    }
-
`, +
` ], tips: ` render操作table组件,可以在单元格中添加任意组件,包括chart图表,具体render参数见vue官方文档`, - img: "https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/16.png?imageMogr2/thumbnail/!35p", + img: 'https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/16.png?imageMogr2/thumbnail/!35p' }, { - title: "render渲染form对象1", + title: 'render渲染form对象1', content: [ `
@@ -1588,13 +1564,13 @@ export default {
    }
-
`, +
` ], tips: `render操作form组件,可以在表单中添加任意组件,包括chart图表,具体render参数见vue官方文档`, - img: "https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/17.png?imageMogr2/thumbnail/!35p", + img: 'https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/17.png?imageMogr2/thumbnail/!35p' }, { - title: "render渲染form对象1-1", + title: 'render渲染form对象1-1', content: [ `
@@ -1678,13 +1654,13 @@ export default {
    }
-
`, +
` ], tips: `render操作form组件,可以在表单中添加任意组件,包括chart图表,具体render参数见vue官方文档`, - img: "https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/2020122701.png?imageMogr2/thumbnail/!35p", + img: 'https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/2020122701.png?imageMogr2/thumbnail/!35p' }, { - title: "render渲染form对象2", + title: 'render渲染form对象2', content: [ `
@@ -1852,13 +1828,13 @@ export default {
    }
-
`, +
` ], tips: `render操作form组件,可以在表单中添加任意组件,包括chart图表,具体render参数见vue官方文档`, - img: "https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/18.png?imageMogr2/thumbnail/!35p", + img: 'https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/18.png?imageMogr2/thumbnail/!35p' }, { - title: "render渲染form对象3", + title: 'render渲染form对象3', content: [ `
@@ -2053,14 +2029,14 @@ export default {
export default extension;
-
`, +
` ], tips: `render操作form组件,可以在表单中添加任意组件,包括chart图表,具体render参数见vue官方文档`, - img: "https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/22.png?imageMogr2/thumbnail/!35p", + img: 'https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/22.png?imageMogr2/thumbnail/!35p' }, { - title: "render渲染form对象4", + title: 'render渲染form对象4', content: [ `
@@ -2292,13 +2268,13 @@ export default {
    },
-
`, +
` ], tips: `render操作form组件,可以在表单中添加任意组件,包括chart图表,具体render参数见vue官方文档`, - img: "https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/42.png?imageMogr2/thumbnail/!35p", + img: 'https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/42.png?imageMogr2/thumbnail/!35p' }, { - title: "table自定义显示图片及base64格式", + title: 'table自定义显示图片及base64格式', content: [ `
2020.12.19更新basic组件才能使用
@@ -2344,13 +2320,13 @@ export default {
    }
-
`, +
` ], tips: ``, - img: "", + img: '' }, { - title: "table格式化数据", + title: 'table格式化数据', content: [ `
@@ -2401,13 +2377,13 @@ export default {
    }
-
`, +
` ], tips: ` this.columns数据源来源ViewGrid组件props.js属性(实际为App_Expert.Vue里columns),formatter 方法参数配置见VolTable组件文档`, - img: "https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/08.png?imageMogr2/thumbnail/!35p", + img: 'https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/08.png?imageMogr2/thumbnail/!35p' }, { - title: "table动态添加一列按钮", + title: 'table动态添加一列按钮', content: [ `
@@ -2497,13 +2473,13 @@ export default {
-
`, +
` ], tips: ` this.columns数据源来源ViewGrid组件props.js属性(实际为App_Expert.Vue里columns),options参数配置见VolTable组件中columns属性`, - img: "https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/0922_01.png?imageMogr2/thumbnail/!35p", + img: 'https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/0922_01.png?imageMogr2/thumbnail/!35p' }, { - title: "table行点击事件", + title: 'table行点击事件', content: [ `
@@ -2527,13 +2503,13 @@ export default {

-
`, +` ], - tips: "", - img: "", + tips: '', + img: '' }, { - title: "table单元格点击事件", + title: 'table单元格点击事件', content: [ `
@@ -2578,13 +2554,13 @@ export default {
    }
-
`, +
` ], - tips: "", - img: "", + tips: '', + img: '' }, { - title: "table单元格td背景颜色", + title: 'table单元格td背景颜色', content: [ `
2020.12.13需要更新前端voltable组件
@@ -2647,13 +2623,13 @@ export default {
    }
-
`, +
` ], - tips: "", - img: "https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/2020121301.png?imageMogr2/thumbnail/!35p", + tips: '', + img: 'https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/2020121301.png?imageMogr2/thumbnail/!35p' }, { - title: "table设置/移除列颜色", + title: 'table设置/移除列颜色', content: [ `
2020.09.06需要更新前端voltable组件(与上面设置颜色的区别,此处操作是对于有数据源的操作,上面的是对于整个td设置背景颜色)
@@ -2725,13 +2701,13 @@ export default {
    }
-
`, +
` ], tips: `还没想好`, - img: "https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/37.png?imageMogr2/thumbnail/!35p", + img: 'https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/37.png?imageMogr2/thumbnail/!35p' }, { - title: "table手动设置排序列", + title: 'table手动设置排序列', content: [ `
@@ -2758,13 +2734,13 @@ export default {
    }
-
`, +
` ], tips: ` this.columns数据源来源ViewGrid组件props.js属性(实际为App_Expert.Vue里columns),sort参数配置见VolTable组件文档`, - img: "https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/03.png?imageMogr2/thumbnail/!35p", + img: 'https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/03.png?imageMogr2/thumbnail/!35p' }, { - title: "table触发switch", + title: 'table触发switch', content: [ `
@@ -2824,13 +2800,13 @@ export default {
-
`, +` ], tips: ` this.columns数据源来源ViewGrid组件props.js属性(实际为App_Expert.Vue里columns),edit/bind/onChange参数配置见VolTable组件文档`, - img: "https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/04.png?imageMogr2/thumbnail/!35p", + img: 'https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/04.png?imageMogr2/thumbnail/!35p' }, { - title: "table查询界面编辑", + title: 'table查询界面编辑', content: [ `
@@ -2924,14 +2900,14 @@ export default {
    }
-
`, +
` ], tips: ` this.columns数据源来源ViewGrid组件props.js属性(实际为App_Expert.Vue里columns),edit/bind/onChange参数配置见VolTable组件文档`, - img: "https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/13.png?imageMogr2/thumbnail/!35p", + img: 'https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/13.png?imageMogr2/thumbnail/!35p' }, { - title: "table显示合计", + title: 'table显示合计', content: [ `
@@ -3007,13 +2983,13 @@ export default {             };
            return base.GetPageData(options);
        }
-
`, +
` ], tips: `在前端表的扩展js中,onInit与onInited初始化要统计的字段,后台在xxxService.cs中重写查询方法,并实现要统计的字段即可完成表格统计,无需其他操作`, - img: "https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/09.png?imageMogr2/thumbnail/!35p", + img: 'https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/09.png?imageMogr2/thumbnail/!35p' }, { - title: "table动态隐藏列", + title: 'table动态隐藏列', content: [ `
@@ -3046,12 +3022,12 @@ export default {
    }
-
`, +
` ], - tips: ` this.columns数据源来源ViewGrid组件props.js属性(实际为App_Expert.Vue里columns),options参数配置见VolTable组件中columns属性`, + tips: ` this.columns数据源来源ViewGrid组件props.js属性(实际为App_Expert.Vue里columns),options参数配置见VolTable组件中columns属性` }, { - title: "table设置分页条大小", + title: 'table设置分页条大小', content: [ `
@@ -3072,13 +3048,13 @@ export default {
        }
-
`, +
` ], tips: ``, - img: "https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/28.png?imageMogr2/thumbnail/!100p", + img: 'https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/28.png?imageMogr2/thumbnail/!100p' }, { - title: "table获取所有行数据", + title: 'table获取所有行数据', content: [ `
@@ -3093,13 +3069,13 @@ export default {
            this.$refs.detail.rowData;
-
`, +
` ], tips: ``, - img: "", + img: '' }, { - title: "table获取选中的行", + title: 'table获取选中的行', content: [ `
@@ -3114,14 +3090,14 @@ export default {
            this.$refs.detail.getSelected();
-
`, +
` ], tips: ``, - img: "", + img: '' }, { - title: "table从表编辑实时计算", + title: 'table从表编辑实时计算', content: [ `
@@ -3181,14 +3157,14 @@ export default {
        }
-
`, +
` ], tips: `如果是单独引用的voltable组件,同样适用上面的方法`, - img: "https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/21.png?imageMogr2/thumbnail/!35p", + img: 'https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/21.png?imageMogr2/thumbnail/!35p' }, { - title: "table动态列", + title: 'table动态列', content: [ `
需要更新前端Basic下的组件2020.10.30
1、后台代码
@@ -3342,13 +3318,13 @@ export default {
    },
-
`, +
` ], tips: ``, - img: "", + img: '' }, { - title: "table点击行选中当前行", + title: 'table点击行选中当前行', content: [ `
@@ -3383,13 +3359,13 @@ export default {     }
-
`, +
` ], tips: ` --`, - img: "https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/48.png?45geMogr2/thumbnail/!50p", + img: 'https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/48.png?45geMogr2/thumbnail/!50p' }, { - title: "table显示序号checkbox", + title: 'table显示序号checkbox', content: [ `
@@ -3422,21 +3398,297 @@ export default {
    }
-
`, +
` ], tips: `如果是单独引用的voltable组件,同样适用上面的方法`, - img: "https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/43.png?imageMogr2/thumbnail/!35p", + img: 'https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/43.png?imageMogr2/thumbnail/!35p' + }, + { + title: '编辑表单操作', + type: 'line' + }, + { + title: '编辑表单分组显示', + content: [ + `

+

+
+  //事件扩展 +
+
+     onInit() { +
+
+       //设置表单分组 +
+
+       this.editFormOptions.splice(0, 0, [ +
+
+         { +
+
+           colSize: 12, +
+
+           render: (h) => { +
+
+             return h( +
+
+               'div', +
+
+               { +
+
+                 style: { +
+
+                   display: 'flex', +
+
+                   'margin-bottom': '-4px', +
+
+                   'line-height': '20px', +
+
+                   'margin-top': '-10px', +
+
+                   'padding-bottom': '5px', +
+
+                   'border-bottom': '1px solid #eee' +
+
+                 } +
+
+               }, +
+
+               [ +
+
+                 h('div', { +
+
+                   style: { +
+
+                     height: '19px', +
+
+                     background: '#2dced9', +
+
+                     width: '9px', +
+
+                     'border-radius': '10px' +
+
+                   } +
+
+                 }), +
+
+                 h( +
+
+                   'div', +
+
+                   { +
+
+                     style: { +
+
+                       'padding-left': '6px', +
+
+                       'font-weight': 'bold', +
+
+                       'font-size': '13px' +
+
+                     } +
+
+                   }, +
+
+                   '基础信息' +
+
+                 ) +
+
+               ] +
+
+             ); +
+
+           } +
+
+         } +
+
+       ]); +
+
+
+       this.editFormOptions.splice(2, 0, [ +
+
+         { +
+
+           colSize: 12, +
+
+           render: (h) => { +
+
+             return h( +
+
+               'div', +
+
+               { +
+
+                 style: { +
+
+                   display: 'flex', +
+
+                   'margin-bottom': '-4px', +
+
+                   'line-height': '20px', +
+
+                   'margin-top': '5px', +
+
+                   'padding-bottom': '5px', +
+
+                   'border-bottom': '1px solid #eee' +
+
+                 } +
+
+               }, +
+
+               [ +
+
+                 h('div', { +
+
+                   style: { +
+
+                     height: '19px', +
+
+                     background: '#2dced9', +
+
+                     width: '9px', +
+
+                     'border-radius': '10px' +
+
+                   } +
+
+                 }), +
+
+                 h( +
+
+                   'div', +
+
+                   { +
+
+                     style: { +
+
+                       'padding-left': '6px', +
+
+                       'font-weight': 'bold', +
+
+                       'font-size': '13px' +
+
+                     } +
+
+                   }, +
+
+                   '其他信息' +
+
+                 ) +
+
+               ] +
+
+             ); +
+
+           } +
+
+         } +
+
+       ]); +
+
+     }, +
+
+

+

+
+

` + ], + img: 'https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/20220912.png?imageMogr2/thumbnail/!35p' }, { - title: "编辑表单操作", - type: "line", - }, { - title: "明细表导入导出", - content: [`

1、2021.01.08更新明细表导入导出功能,更新文件见2021.01.08更新说明:http://v2.volcore.xyz/document/log

-

明细表导入导出同样全部由框架自动完成,但需要重写明细表的接口权限,可参照Sys_DictionaryListController.cs或SellOrderListController.cs

`] - , tips: ""}, + title: '明细表导入导出', + content: [ + `

1、2021.01.08更新明细表导入导出功能,更新文件见2021.01.08更新说明:http://v2.volcore.xyz/document/log

+

明细表导入导出同样全部由框架自动完成,但需要重写明细表的接口权限,可参照Sys_DictionaryListController.cs或SellOrderListController.cs

` + ], + tips: '' + }, { - title: "新建保存后连续添加", + title: '新建保存后连续添加', content: [ `
@@ -3463,21 +3715,21 @@ export default {
-
`, +` ], tips: ``, - img: "https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/p2021041101.png?imageMogr2/thumbnail/!35p", + img: 'https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/p2021041101.png?imageMogr2/thumbnail/!35p' }, { - title: "编辑表单弹出框关闭事件", + title: '编辑表单弹出框关闭事件', content: [ - `编辑表单弹出框,点击右上角[x]或点击关闭按钮触发事件,具体使用见:组件api->viewgrid文档->onModelClose方法`, + `编辑表单弹出框,点击右上角[x]或点击关闭按钮触发事件,具体使用见:组件api->viewgrid文档->onModelClose方法` ], tips: ``, - img: "", + img: '' }, { - title: "编辑表单标签文字太长", + title: '编辑表单标签文字太长', content: [ `
@@ -3511,13 +3763,56 @@ export default {
-`, +` ], tips: ``, - img: "", + img: '' }, + { + title: '编辑输入设置焦点foucs', + content: [ + `
+
+    modelOpenAfter () { +
+
+       //弹出框打开后给某个字段设置焦点 +
+
+        setTimeout(()=>{ +
+
+          this.$refs.form.$refs.字段名[0].foucs() +
+
+        },200) +
+
+     } +
+
+
+
+ +
+
+ +
+
+ +
+
+
+
+
+
+
` + ], + tips: ``, + img: '' + }, { - title: "编辑表单输入框回车事件、输入事件", + title: '编辑表单输入框回车事件、输入事件', content: [ `
@@ -3565,13 +3860,13 @@ export default {
-`, +` ], tips: ``, - img: "", + img: '' }, { - title: "编辑表单设置日期可选范围", + title: '编辑表单设置日期可选范围', content: [ `
@@ -3619,13 +3914,13 @@ export default {
-`, +` ], tips: ``, - img: "https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/2021071701.png?imageMogr2/thumbnail/!35p", + img: 'https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/2021071701.png?imageMogr2/thumbnail/!35p' }, { - title: "编辑表单实时计算", + title: '编辑表单实时计算', content: [ `
@@ -3688,13 +3983,13 @@ export default {
        }
-
`, +
` ], tips: `如果是单独引用的volfrom组件,同样适用上面的方法`, - img: "https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/20.png?imageMogr2/thumbnail/!35p", + img: 'https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/20.png?imageMogr2/thumbnail/!35p' }, { - title: "编辑表单动态显示隐藏select数据源", + title: '编辑表单动态显示隐藏select数据源', content: [ `
@@ -3739,16 +4034,16 @@ export default {
    }
-
`, +
` ], tips: ``, img: [ - "https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/2021051601.png?imageMogr2/thumbnail/!35p", - "https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/2021051602.png?imageMogr2/thumbnail/!35p", - ], + 'https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/2021051601.png?imageMogr2/thumbnail/!35p', + 'https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/2021051602.png?imageMogr2/thumbnail/!35p' + ] }, { - title: "编辑表单动态显示隐藏", + title: '编辑表单动态显示隐藏', content: [ `
@@ -3974,18 +4269,18 @@ export default {
-
`, +` ], tips: `如果是单独引用的volfrom组件,同样适用上面的方法`, img: [ - "https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/2020112104.png?imageMogr2/thumbnail/!35p", - "https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/2020112105.png?imageMogr2/thumbnail/!35p", - "https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/2020112106.png?imageMogr2/thumbnail/!35p", - ], + 'https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/2020112104.png?imageMogr2/thumbnail/!35p', + 'https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/2020112105.png?imageMogr2/thumbnail/!35p', + 'https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/2020112106.png?imageMogr2/thumbnail/!35p' + ] }, { - title: "编辑表单只读/默认值", + title: '编辑表单只读/默认值', content: [ `
@@ -4045,13 +4340,13 @@ export default {
        }
-
`, +
` ], tips: ``, - img: "https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/26.png?imageMogr2/thumbnail/!35p", + img: 'https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/26.png?imageMogr2/thumbnail/!35p' }, { - title: "编辑表单添加额外属性", + title: '编辑表单添加额外属性', content: [ `
@@ -4120,41 +4415,41 @@ export default {
      }
-
`, +
` ], tips: ` 可给编辑表单添加描述或触发事件,更多属性配置参照volform组件api`, - img: "https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/12.png?imageMogr2/thumbnail/!35p", + img: 'https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/12.png?imageMogr2/thumbnail/!35p' }, { - title: "编辑弹出框选择数据1", + title: '编辑弹出框选择数据1', content: [ `

1、2021.09.26将示例代码更新到最新版,示例已经提交到演示环境菜单页面【多弹出框上传】

2、实际代码见vue2/3版本中文件:App_Expert.js、App_ExpertModelBody.vue、App_ExpertController.cs

- `, + ` ], tips: `给编辑表单设置一个【选择数据】操作,见volfrom组件api配置,选择后回写到编辑框了`, img: [ // "https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/31.png?imageMogr2/thumbnail/!35p", - "https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/29.png?imageMogr2/thumbnail/!35p", - "https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/30.png?imageMogr2/thumbnail/!35p", - ], + 'https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/29.png?imageMogr2/thumbnail/!35p', + 'https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/30.png?imageMogr2/thumbnail/!35p' + ] }, { - title: "编辑弹出框选择数据2", + title: '编辑弹出框选择数据2', content: [ `

1、2021.09.26将示例代码更新到最新版,示例已经提交到演示环境菜单页面【主从一对一(2)】编辑弹出框

2、实际代码见vue2/3版本中文件:SellOrder2.js、SellOrder2ModelBody.vue

- `, + ` ], tips: ` 点击自定的义按钮后,再弹弹出自定义的这个vue页面`, img: [ // "https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/32.png?imageMogr2/thumbnail/!35p", - "https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/33.png?imageMogr2/thumbnail/!35p", - "https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/34.png?imageMogr2/thumbnail/!35p", - ], + 'https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/33.png?imageMogr2/thumbnail/!35p', + 'https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/34.png?imageMogr2/thumbnail/!35p' + ] }, { - title: "编辑多图/文件上传", + title: '编辑多图/文件上传', content: [ `
@@ -4271,14 +4566,14 @@ export default {
    
-
`, +
` ], tips: ` 代码生成默认使用的是单图上传,多图上传更多属性配置参照volupload组件`, - img: "https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/11.png?imageMogr2/thumbnail/!35p", + img: 'https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/11.png?imageMogr2/thumbnail/!35p' }, { - title: "编辑框级联操作(1)", + title: '编辑框级联操作(1)', content: [ `
@@ -4398,13 +4693,13 @@ export default {
    }
-
`, +
` ], tips: `级联操作基于Iview组件cascader(数据源的格式见iview原生组件demo配置),数据量少的情况下建议直接把数据源加载出来绑定,数据量过多时使用懒加载`, - img: "https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/14.png?imageMogr2/thumbnail/!35p", + img: 'https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/14.png?imageMogr2/thumbnail/!35p' }, { - title: "编辑框级联操作(2)", + title: '编辑框级联操作(2)', content: [ `
@@ -4536,13 +4831,13 @@ export default {
    },
-
`, +
` ], tips: `从后台加载数据后,不用自己设置children,直接用this.base.convertTree()转换`, - img: "", + img: '' }, { - title: "编辑表单select默认值", + title: '编辑表单select默认值', content: [ `
@@ -4597,15 +4892,15 @@ export default {
    }
-
`, +
` ], tips: ``, img: [ - "https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/2021041801.png?imageMogr2/thumbnail/!35p", - ], + 'https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/2021041801.png?imageMogr2/thumbnail/!35p' + ] }, { - title: "编辑select触发只读", + title: '编辑select触发只读', content: [ `
@@ -4691,13 +4986,13 @@ export default {         }
-

`, +
` ], tips: ``, - img: "https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/27.png?imageMogr2/thumbnail/!35p", + img: 'https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/27.png?imageMogr2/thumbnail/!35p' }, { - title: "编辑select触发级联", + title: '编辑select触发级联', content: [ `
@@ -4807,14 +5102,15 @@ export default {
    }
-
`, +
` ], tips: `select选择后给字段设置值或数据源,实现手动级联操作`, - img: "https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/15.png?imageMogr2/thumbnail/!35p", + img: 'https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/15.png?imageMogr2/thumbnail/!35p' }, - { - title: "编辑select下拉框选项禁用或隐藏显示", - content: [`

+ { + title: '编辑select下拉框选项禁用或隐藏显示', + content: [ + `


@@ -4928,13 +5224,14 @@ export default {

-`], +` + ], tips: ``, - img: [], + img: [] }, { - title: "编辑框(明细)从表select下拉框选择事件", + title: '编辑框(明细)从表select下拉框选择事件', content: [ `
@@ -4988,21 +5285,21 @@ export default {
-`, +` ], tips: ` 从表图片上传,是对代码生成进行的扩展实现.按此方法可自行实现任意功能`, - img: "https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/10.png?imageMogr2/thumbnail/!35p", + img: 'https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/10.png?imageMogr2/thumbnail/!35p' }, { - title: "编辑框从表上传图片", + title: '编辑框从表上传图片', content: [ - `点击从表列即可完成对从表图片或文件上传,参照菜单:【一对一与一对多】->【从表图片上传】`, + `点击从表列即可完成对从表图片或文件上传,参照菜单:【一对一与一对多】->【从表图片上传】` ], tips: ` 从表图片上传,是对代码生成进行的扩展实现.按此方法可自行实现任意功能`, - img: "https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/10.png?imageMogr2/thumbnail/!35p", + img: 'https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/10.png?imageMogr2/thumbnail/!35p' }, { - title: "编辑框从表第二种编辑", + title: '编辑框从表第二种编辑', content: [ `
默认为单击行开启编辑,鼠标离开结束编辑,现支持点击表头或其他行结束编辑
@@ -5056,13 +5353,13 @@ export default {
        }
-
`, +
` ], tips: ` 默认为单击行开启编辑,鼠标离开结束编辑,现支持点击表头或其他行结束编辑`, - img: "https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/38.png?imageMogr2/thumbnail/!35p", + img: 'https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/38.png?imageMogr2/thumbnail/!35p' }, { - title: "编辑表单数字最大/小值,字符串长度限制", + title: '编辑表单数字最大/小值,字符串长度限制', content: [ `
@@ -5104,14 +5401,14 @@ export default {
    }
-
`, +
` ], tips: ` --`, - img: "https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/46.png?45geMogr2/thumbnail/!50p", + img: 'https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/46.png?45geMogr2/thumbnail/!50p' }, { - title: "编辑表单自定义验证", + title: '编辑表单自定义验证', content: [ `
@@ -5162,14 +5459,14 @@ export default {
    }
-
`, +
` ], tips: ` `, - img: "https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/47.png?45geMogr2/thumbnail/!50p", + img: 'https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/47.png?45geMogr2/thumbnail/!50p' }, { - title: "数组对象转换为tree", + title: '数组对象转换为tree', content: [ `
@@ -5300,118 +5597,14 @@ export default {
      // }]
-
`, +
` ], tips: `使用this.base.convertTree转换成tree结构,避免重复写递归生成tree的代码`, - img: "", + img: '' }, + { - title: "级联(后台加载数据源)", - content: [ - `
-
-   onInit() { -
-
-       //设置表单的默认值,没有值就设置为空数组(必须) -
-
-       //在数据库中保存后的多个值实际是以逗号的字符串 -
-
-       this.editFormFields.ExpertName = []; //["北京","天坛"] -
-
-       //设置数据源(必须) -
-
-       this.editFormOptions.forEach(x => { -
-
-         x.forEach(item => { -
-
-           if (item.field == 'ExpertName') { -
-
-             //设置为级联类型(必须) -
-
-             item.type = "cascader"; -
-
-             //初始一个空的数据源(必须) -
-
-             item.data = []; -
-
-             //从后台接口返回数据源,格式见iview组件result(建议在modelOpenBefore方法中设置数据源) -
-
-             this.http.post("xxx").then(result=>{ -
-
-                 item.data.push(...result); -
-
-                 //result数据格式或见iview组件cascader数据源配置格式 -
-
-                 // [{ -
-
-                 //   value: "北京", -
-
-                 //   label: "北京", -
-
-                 //   children: [ -
-
-                 //     { value: "天坛", label: "天坛" }, -
-
-                 //     { value: "王府井", label: "王府井" } -
-
-                 //   ] -
-
-                 // }]; -
-
-             }) -
-
-           } -
-
-         }) -
-
-       }) -
-
-     }, -
-
-     modelOpenBefore(){//打开弹出框时 -
-
-         //如果考虑性能,建议在此处调用 this.http.post设置级联数据源 -
-
-     }, -
-
`, - ], - tips: `级联操作基于Iview组件cascader(数据源的格式见iview原生组件demo配置),数据量少的情况下建议直接把数据源加载出来绑定,数据量过多时使用懒加载`, - img: "", - }, - { - title: "级联赖(动态)加载", + title: '级联赖(动态)加载', content: [ `
@@ -5678,13 +5871,13 @@ export default {
    }
-
`, +
` ], tips: `级联操作基于Iview组件cascader(数据源的格式见iview原生组件demo配置),数据量少的情况下建议直接把数据源加载出来绑定,数据量过多时使用懒加载`, - img: "", + img: '' }, { - title: "级联终极版(代码生成)", + title: '级联终极版(代码生成)', content: [ `

@@ -5776,17 +5969,17 @@ export default {

-`, +` ], tips: ``, - img: "https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/44.png?imageMogr2/thumbnail/!35p", + img: 'https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/44.png?imageMogr2/thumbnail/!35p' }, { - title: "其他分类", - type: "line", + title: '其他分类', + type: 'line' }, { - title: "http请求", + title: 'http请求', content: [ `
@@ -5842,32 +6035,32 @@ export default {
    // 或者使用使用this.ajax,ajax使用见index.vue获取菜单的方法
-
`, +
` ], tips: `无`, - img: "", + img: '' }, { - title: "主从表一对一", + title: '主从表一对一', content: [ `

主从表一对一全部由代码生成器生成,无需写任何代码

参照代码生成器文档

-

菜单:主从表一对一

`, +

菜单:主从表一对一

` ], tips: ` 菜单:主从表一对一或系统->下拉框绑定设置,都是由代码生成器生成`, - img: "", + img: '' }, { - title: "主从表一对多", + title: '主从表一对多', content: [ - `一对多从表,不限制从表类型与从表数理,但需要自己写从表的扩展,参照菜单:自定义扩展一对多`, + `一对多从表,不限制从表类型与从表数理,但需要自己写从表的扩展,参照菜单:自定义扩展一对多` ], tips: ` 一对多从表自定义实现,需要对照volgrid,volform,voltable组件api找需要的属性与方法`, - img: "", + img: '' }, { - title: "子父组件传值(vuex)", + title: '子父组件传值(vuex)', content: [ `
@@ -5907,26 +6100,26 @@ export default {
}
-
`, +
` ], tips: `子父组件通过this.$store.getters.data().xxx缓存或读取数据(注意xxx作为key的唯一性)`, - img: "", + img: '' }, { - title: "自动绑定表单/表数据源", + title: '自动绑定表单/表数据源', content: [ `

只需要提前配置好数据源,其他全部由框架完成

数据源需要提前在菜单:系统->下拉框绑定设置中配置

在代码生成器中选择数据(字典编号)与编辑(查询)类型

-

文档组件api中:viewgrid组件api、voltable组件api、voltable组件api都提供了demo

`, +

文档组件api中:viewgrid组件api、voltable组件api、voltable组件api都提供了demo

` ], tips: `字典绑定数据还支持远程模糊查询与自动模糊查询,提前在菜单[下拉框绑定设置]配置好,不需要写任何代码`, - img: "", + img: '' }, { - title: "select远程搜索", + title: 'select远程搜索', content: [ `
@@ -5986,13 +6179,13 @@ export default {
    }
-
`, +
` ], tips: ` select远程搜索适用于数据源比较大的情况,开启远程搜索实时从后台返回数据绑定到select组件中`, - img: "", + img: '' }, { - title: "excel导入增加参数", + title: 'excel导入增加参数', content: [ `
excel导入时添加其他参数到后台需要2020.10.16更新前端basic组件
`, `
此处以App_Transaction.js为例
`, @@ -6263,23 +6456,23 @@ export default {
-`, +` ], tips: ` excel导入时添加其他参数到后台需要2020.10.16更新前端basic组件`, img: [ - "https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/39.png?imageMogr2/thumbnail/!35p", - "https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/40.png?imageMogr2/thumbnail/!35p", - ], + 'https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/39.png?imageMogr2/thumbnail/!35p', + 'https://doc-vue-1256993465.cos.ap-chengdu.myqcloud.com/40.png?imageMogr2/thumbnail/!35p' + ] }, { - title: "编写中--待完", + title: '编写中--待完', content: [`编写中`], tips: ` 编写中`, - img: "", - }, - ], + img: '' + } + ] }; - }, + } }; diff --git "a/Vol.Vue3\347\211\210\346\234\254/public/static/login_bg.png" "b/Vol.Vue3\347\211\210\346\234\254/public/static/login_bg.png" new file mode 100644 index 000000000..925a5da6f Binary files /dev/null and "b/Vol.Vue3\347\211\210\346\234\254/public/static/login_bg.png" differ diff --git "a/Vol.Vue3\347\211\210\346\234\254/run\345\220\257\345\212\250\345\274\202\345\270\270\350\257\264\346\230\216.txt" "b/Vol.Vue3\347\211\210\346\234\254/run\345\220\257\345\212\250\345\274\202\345\270\270\350\257\264\346\230\216.txt" new file mode 100644 index 000000000..585f16fcb --- /dev/null +++ "b/Vol.Vue3\347\211\210\346\234\254/run\345\220\257\345\212\250\345\274\202\345\270\270\350\257\264\346\230\216.txt" @@ -0,0 +1,10 @@ +双击run.bat启动异常: + 使用cmd输入node -v查看版本,如果是18.+版本,请将package.json中第五行scripts中的内容替换为: + +"scripts": { + "serve": " SET NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve", + "build": "SET NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service build", + "test:unit": "vue-cli-service test:unit", + "lint": "vue-cli-service lint" +} + diff --git "a/Vol.Vue3\347\211\210\346\234\254/src/api/http.js" "b/Vol.Vue3\347\211\210\346\234\254/src/api/http.js" index 15c8555eb..4d2a9b8a2 100644 --- "a/Vol.Vue3\347\211\210\346\234\254/src/api/http.js" +++ "b/Vol.Vue3\347\211\210\346\234\254/src/api/http.js" @@ -21,6 +21,9 @@ else if (process.env.NODE_ENV == 'debug') { else if (process.env.NODE_ENV == 'production') { axios.defaults.baseURL = 'http://api.volcore.xyz/'; } +if (!axios.defaults.baseURL.endsWith('/')) { + axios.defaults.baseURL+="/"; +} let ipAddress = axios.defaults.baseURL; axios.interceptors.request.use((config) => { return config; @@ -97,10 +100,10 @@ function showLoading (loading) { return; } loadingInstance = Loading.service({ - target: '#loading-container', - customClass: "el-loading", - text: typeof loading == "string" ? loading : '正在处理.....', - spinner: 'el-icon-loading', + lock: true, + text: 'Loading', + customClass:"http-loading", + background: typeof loading == "string" ? loading : '正在处理.....', background: 'rgba(58, 61, 63, 0.32)' }); } @@ -148,7 +151,29 @@ function get (url, param, loading, config) { }) } - +//url:url地址 +//params:请求参数 +//fileName:下载的文件名 +//loading:是否显示加载状态 +function download (url, params, fileName, loading,callback) { + fileName = fileName.replace(">", ">").replace("<", "<"); + post(url, params, loading, { responseType: 'blob' }).then(content => { + const blob = new Blob([content]) + if ('download' in document.createElement('a')) { // 非IE下载 + const elink = document.createElement('a') + elink.download = fileName + elink.style.display = 'none' + elink.href = URL.createObjectURL(blob) + document.body.appendChild(elink) + elink.click() + URL.revokeObjectURL(elink.href) // 释放URL 对象 + document.body.removeChild(elink) + } else { // IE10+下载 + navigator.msSaveBlob(blob, fileName) + } + callback&&callback(); + }) +} function createXHR () { @@ -293,4 +318,4 @@ ajax.post = function (url, param, success, errror) { ajax.get = function (url, param, success, errror) { ajax({ url: url, param: param, success: success, error: errror, type: 'get' }) } -export default { post, get, ajax, ipAddress } +export default { post, get,download, ajax, ipAddress } diff --git "a/Vol.Vue3\347\211\210\346\234\254/src/assets/element-icon/fonts/element-icons.ttf" "b/Vol.Vue3\347\211\210\346\234\254/src/assets/element-icon/fonts/element-icons.ttf" new file mode 100644 index 000000000..91b74de36 Binary files /dev/null and "b/Vol.Vue3\347\211\210\346\234\254/src/assets/element-icon/fonts/element-icons.ttf" differ diff --git "a/Vol.Vue3\347\211\210\346\234\254/src/assets/element-icon/fonts/element-icons.woff" "b/Vol.Vue3\347\211\210\346\234\254/src/assets/element-icon/fonts/element-icons.woff" new file mode 100644 index 000000000..02b9a2539 Binary files /dev/null and "b/Vol.Vue3\347\211\210\346\234\254/src/assets/element-icon/fonts/element-icons.woff" differ diff --git "a/Vol.Vue3\347\211\210\346\234\254/src/assets/element-icon/icon.css" "b/Vol.Vue3\347\211\210\346\234\254/src/assets/element-icon/icon.css" new file mode 100644 index 000000000..bf3ae3ef0 --- /dev/null +++ "b/Vol.Vue3\347\211\210\346\234\254/src/assets/element-icon/icon.css" @@ -0,0 +1 @@ +@font-face{font-family:element-icons;src:url(fonts/element-icons.woff) format("woff"),url(fonts/element-icons.ttf) format("truetype");font-weight:400;font-display:"auto";font-style:normal}[class*=" el-icon-"],[class^=el-icon-]{font-family:element-icons!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;vertical-align:baseline;display:inline-block;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.el-icon-ice-cream-round:before{content:"\e6a0"}.el-icon-ice-cream-square:before{content:"\e6a3"}.el-icon-lollipop:before{content:"\e6a4"}.el-icon-potato-strips:before{content:"\e6a5"}.el-icon-milk-tea:before{content:"\e6a6"}.el-icon-ice-drink:before{content:"\e6a7"}.el-icon-ice-tea:before{content:"\e6a9"}.el-icon-coffee:before{content:"\e6aa"}.el-icon-orange:before{content:"\e6ab"}.el-icon-pear:before{content:"\e6ac"}.el-icon-apple:before{content:"\e6ad"}.el-icon-cherry:before{content:"\e6ae"}.el-icon-watermelon:before{content:"\e6af"}.el-icon-grape:before{content:"\e6b0"}.el-icon-refrigerator:before{content:"\e6b1"}.el-icon-goblet-square-full:before{content:"\e6b2"}.el-icon-goblet-square:before{content:"\e6b3"}.el-icon-goblet-full:before{content:"\e6b4"}.el-icon-goblet:before{content:"\e6b5"}.el-icon-cold-drink:before{content:"\e6b6"}.el-icon-coffee-cup:before{content:"\e6b8"}.el-icon-water-cup:before{content:"\e6b9"}.el-icon-hot-water:before{content:"\e6ba"}.el-icon-ice-cream:before{content:"\e6bb"}.el-icon-dessert:before{content:"\e6bc"}.el-icon-sugar:before{content:"\e6bd"}.el-icon-tableware:before{content:"\e6be"}.el-icon-burger:before{content:"\e6bf"}.el-icon-knife-fork:before{content:"\e6c1"}.el-icon-fork-spoon:before{content:"\e6c2"}.el-icon-chicken:before{content:"\e6c3"}.el-icon-food:before{content:"\e6c4"}.el-icon-dish-1:before{content:"\e6c5"}.el-icon-dish:before{content:"\e6c6"}.el-icon-moon-night:before{content:"\e6ee"}.el-icon-moon:before{content:"\e6f0"}.el-icon-cloudy-and-sunny:before{content:"\e6f1"}.el-icon-partly-cloudy:before{content:"\e6f2"}.el-icon-cloudy:before{content:"\e6f3"}.el-icon-sunny:before{content:"\e6f6"}.el-icon-sunset:before{content:"\e6f7"}.el-icon-sunrise-1:before{content:"\e6f8"}.el-icon-sunrise:before{content:"\e6f9"}.el-icon-heavy-rain:before{content:"\e6fa"}.el-icon-lightning:before{content:"\e6fb"}.el-icon-light-rain:before{content:"\e6fc"}.el-icon-wind-power:before{content:"\e6fd"}.el-icon-baseball:before{content:"\e712"}.el-icon-soccer:before{content:"\e713"}.el-icon-football:before{content:"\e715"}.el-icon-basketball:before{content:"\e716"}.el-icon-ship:before{content:"\e73f"}.el-icon-truck:before{content:"\e740"}.el-icon-bicycle:before{content:"\e741"}.el-icon-mobile-phone:before{content:"\e6d3"}.el-icon-service:before{content:"\e6d4"}.el-icon-key:before{content:"\e6e2"}.el-icon-unlock:before{content:"\e6e4"}.el-icon-lock:before{content:"\e6e5"}.el-icon-watch:before{content:"\e6fe"}.el-icon-watch-1:before{content:"\e6ff"}.el-icon-timer:before{content:"\e702"}.el-icon-alarm-clock:before{content:"\e703"}.el-icon-map-location:before{content:"\e704"}.el-icon-delete-location:before{content:"\e705"}.el-icon-add-location:before{content:"\e706"}.el-icon-location-information:before{content:"\e707"}.el-icon-location-outline:before{content:"\e708"}.el-icon-location:before{content:"\e79e"}.el-icon-place:before{content:"\e709"}.el-icon-discover:before{content:"\e70a"}.el-icon-first-aid-kit:before{content:"\e70b"}.el-icon-trophy-1:before{content:"\e70c"}.el-icon-trophy:before{content:"\e70d"}.el-icon-medal:before{content:"\e70e"}.el-icon-medal-1:before{content:"\e70f"}.el-icon-stopwatch:before{content:"\e710"}.el-icon-mic:before{content:"\e711"}.el-icon-copy-document:before{content:"\e718"}.el-icon-full-screen:before{content:"\e719"}.el-icon-switch-button:before{content:"\e71b"}.el-icon-aim:before{content:"\e71c"}.el-icon-crop:before{content:"\e71d"}.el-icon-odometer:before{content:"\e71e"}.el-icon-time:before{content:"\e71f"}.el-icon-bangzhu:before{content:"\e724"}.el-icon-close-notification:before{content:"\e726"}.el-icon-microphone:before{content:"\e727"}.el-icon-turn-off-microphone:before{content:"\e728"}.el-icon-position:before{content:"\e729"}.el-icon-postcard:before{content:"\e72a"}.el-icon-message:before{content:"\e72b"}.el-icon-chat-line-square:before{content:"\e72d"}.el-icon-chat-dot-square:before{content:"\e72e"}.el-icon-chat-dot-round:before{content:"\e72f"}.el-icon-chat-square:before{content:"\e730"}.el-icon-chat-line-round:before{content:"\e731"}.el-icon-chat-round:before{content:"\e732"}.el-icon-set-up:before{content:"\e733"}.el-icon-turn-off:before{content:"\e734"}.el-icon-open:before{content:"\e735"}.el-icon-connection:before{content:"\e736"}.el-icon-link:before{content:"\e737"}.el-icon-cpu:before{content:"\e738"}.el-icon-thumb:before{content:"\e739"}.el-icon-female:before{content:"\e73a"}.el-icon-male:before{content:"\e73b"}.el-icon-guide:before{content:"\e73c"}.el-icon-news:before{content:"\e73e"}.el-icon-price-tag:before{content:"\e744"}.el-icon-discount:before{content:"\e745"}.el-icon-wallet:before{content:"\e747"}.el-icon-coin:before{content:"\e748"}.el-icon-money:before{content:"\e749"}.el-icon-bank-card:before{content:"\e74a"}.el-icon-box:before{content:"\e74b"}.el-icon-present:before{content:"\e74c"}.el-icon-sell:before{content:"\e6d5"}.el-icon-sold-out:before{content:"\e6d6"}.el-icon-shopping-bag-2:before{content:"\e74d"}.el-icon-shopping-bag-1:before{content:"\e74e"}.el-icon-shopping-cart-2:before{content:"\e74f"}.el-icon-shopping-cart-1:before{content:"\e750"}.el-icon-shopping-cart-full:before{content:"\e751"}.el-icon-smoking:before{content:"\e752"}.el-icon-no-smoking:before{content:"\e753"}.el-icon-house:before{content:"\e754"}.el-icon-table-lamp:before{content:"\e755"}.el-icon-school:before{content:"\e756"}.el-icon-office-building:before{content:"\e757"}.el-icon-toilet-paper:before{content:"\e758"}.el-icon-notebook-2:before{content:"\e759"}.el-icon-notebook-1:before{content:"\e75a"}.el-icon-files:before{content:"\e75b"}.el-icon-collection:before{content:"\e75c"}.el-icon-receiving:before{content:"\e75d"}.el-icon-suitcase-1:before{content:"\e760"}.el-icon-suitcase:before{content:"\e761"}.el-icon-film:before{content:"\e763"}.el-icon-collection-tag:before{content:"\e765"}.el-icon-data-analysis:before{content:"\e766"}.el-icon-pie-chart:before{content:"\e767"}.el-icon-data-board:before{content:"\e768"}.el-icon-data-line:before{content:"\e76d"}.el-icon-reading:before{content:"\e769"}.el-icon-magic-stick:before{content:"\e76a"}.el-icon-coordinate:before{content:"\e76b"}.el-icon-mouse:before{content:"\e76c"}.el-icon-brush:before{content:"\e76e"}.el-icon-headset:before{content:"\e76f"}.el-icon-umbrella:before{content:"\e770"}.el-icon-scissors:before{content:"\e771"}.el-icon-mobile:before{content:"\e773"}.el-icon-attract:before{content:"\e774"}.el-icon-monitor:before{content:"\e775"}.el-icon-search:before{content:"\e778"}.el-icon-takeaway-box:before{content:"\e77a"}.el-icon-paperclip:before{content:"\e77d"}.el-icon-printer:before{content:"\e77e"}.el-icon-document-add:before{content:"\e782"}.el-icon-document:before{content:"\e785"}.el-icon-document-checked:before{content:"\e786"}.el-icon-document-copy:before{content:"\e787"}.el-icon-document-delete:before{content:"\e788"}.el-icon-document-remove:before{content:"\e789"}.el-icon-tickets:before{content:"\e78b"}.el-icon-folder-checked:before{content:"\e77f"}.el-icon-folder-delete:before{content:"\e780"}.el-icon-folder-remove:before{content:"\e781"}.el-icon-folder-add:before{content:"\e783"}.el-icon-folder-opened:before{content:"\e784"}.el-icon-folder:before{content:"\e78a"}.el-icon-edit-outline:before{content:"\e764"}.el-icon-edit:before{content:"\e78c"}.el-icon-date:before{content:"\e78e"}.el-icon-c-scale-to-original:before{content:"\e7c6"}.el-icon-view:before{content:"\e6ce"}.el-icon-loading:before{content:"\e6cf"}.el-icon-rank:before{content:"\e6d1"}.el-icon-sort-down:before{content:"\e7c4"}.el-icon-sort-up:before{content:"\e7c5"}.el-icon-sort:before{content:"\e6d2"}.el-icon-finished:before{content:"\e6cd"}.el-icon-refresh-left:before{content:"\e6c7"}.el-icon-refresh-right:before{content:"\e6c8"}.el-icon-refresh:before{content:"\e6d0"}.el-icon-video-play:before{content:"\e7c0"}.el-icon-video-pause:before{content:"\e7c1"}.el-icon-d-arrow-right:before{content:"\e6dc"}.el-icon-d-arrow-left:before{content:"\e6dd"}.el-icon-arrow-up:before{content:"\e6e1"}.el-icon-arrow-down:before{content:"\e6df"}.el-icon-arrow-right:before{content:"\e6e0"}.el-icon-arrow-left:before{content:"\e6de"}.el-icon-top-right:before{content:"\e6e7"}.el-icon-top-left:before{content:"\e6e8"}.el-icon-top:before{content:"\e6e6"}.el-icon-bottom:before{content:"\e6eb"}.el-icon-right:before{content:"\e6e9"}.el-icon-back:before{content:"\e6ea"}.el-icon-bottom-right:before{content:"\e6ec"}.el-icon-bottom-left:before{content:"\e6ed"}.el-icon-caret-top:before{content:"\e78f"}.el-icon-caret-bottom:before{content:"\e790"}.el-icon-caret-right:before{content:"\e791"}.el-icon-caret-left:before{content:"\e792"}.el-icon-d-caret:before{content:"\e79a"}.el-icon-share:before{content:"\e793"}.el-icon-menu:before{content:"\e798"}.el-icon-s-grid:before{content:"\e7a6"}.el-icon-s-check:before{content:"\e7a7"}.el-icon-s-data:before{content:"\e7a8"}.el-icon-s-opportunity:before{content:"\e7aa"}.el-icon-s-custom:before{content:"\e7ab"}.el-icon-s-claim:before{content:"\e7ad"}.el-icon-s-finance:before{content:"\e7ae"}.el-icon-s-comment:before{content:"\e7af"}.el-icon-s-flag:before{content:"\e7b0"}.el-icon-s-marketing:before{content:"\e7b1"}.el-icon-s-shop:before{content:"\e7b4"}.el-icon-s-open:before{content:"\e7b5"}.el-icon-s-management:before{content:"\e7b6"}.el-icon-s-ticket:before{content:"\e7b7"}.el-icon-s-release:before{content:"\e7b8"}.el-icon-s-home:before{content:"\e7b9"}.el-icon-s-promotion:before{content:"\e7ba"}.el-icon-s-operation:before{content:"\e7bb"}.el-icon-s-unfold:before{content:"\e7bc"}.el-icon-s-fold:before{content:"\e7a9"}.el-icon-s-platform:before{content:"\e7bd"}.el-icon-s-order:before{content:"\e7be"}.el-icon-s-cooperation:before{content:"\e7bf"}.el-icon-bell:before{content:"\e725"}.el-icon-message-solid:before{content:"\e799"}.el-icon-video-camera:before{content:"\e772"}.el-icon-video-camera-solid:before{content:"\e796"}.el-icon-camera:before{content:"\e779"}.el-icon-camera-solid:before{content:"\e79b"}.el-icon-download:before{content:"\e77c"}.el-icon-upload2:before{content:"\e77b"}.el-icon-upload:before{content:"\e7c3"}.el-icon-picture-outline-round:before{content:"\e75f"}.el-icon-picture-outline:before{content:"\e75e"}.el-icon-picture:before{content:"\e79f"}.el-icon-close:before{content:"\e6db"}.el-icon-check:before{content:"\e6da"}.el-icon-plus:before{content:"\e6d9"}.el-icon-minus:before{content:"\e6d8"}.el-icon-help:before{content:"\e73d"}.el-icon-s-help:before{content:"\e7b3"}.el-icon-circle-close:before{content:"\e78d"}.el-icon-circle-check:before{content:"\e720"}.el-icon-circle-plus-outline:before{content:"\e723"}.el-icon-remove-outline:before{content:"\e722"}.el-icon-zoom-out:before{content:"\e776"}.el-icon-zoom-in:before{content:"\e777"}.el-icon-error:before{content:"\e79d"}.el-icon-success:before{content:"\e79c"}.el-icon-circle-plus:before{content:"\e7a0"}.el-icon-remove:before{content:"\e7a2"}.el-icon-info:before{content:"\e7a1"}.el-icon-question:before{content:"\e7a4"}.el-icon-warning-outline:before{content:"\e6c9"}.el-icon-warning:before{content:"\e7a3"}.el-icon-goods:before{content:"\e7c2"}.el-icon-s-goods:before{content:"\e7b2"}.el-icon-star-off:before{content:"\e717"}.el-icon-star-on:before{content:"\e797"}.el-icon-more-outline:before{content:"\e6cc"}.el-icon-more:before{content:"\e794"}.el-icon-phone-outline:before{content:"\e6cb"}.el-icon-phone:before{content:"\e795"}.el-icon-user:before{content:"\e6e3"}.el-icon-user-solid:before{content:"\e7a5"}.el-icon-setting:before{content:"\e6ca"}.el-icon-s-tools:before{content:"\e7ac"}.el-icon-delete:before{content:"\e6d7"}.el-icon-delete-solid:before{content:"\e7c9"}.el-icon-eleme:before{content:"\e7c7"}.el-icon-platform-eleme:before{content:"\e7ca"}.el-icon-loading{-webkit-animation:rotating 2s linear infinite;animation:rotating 2s linear infinite}.el-icon--right{margin-left:5px}.el-icon--left{margin-right:5px}@-webkit-keyframes rotating{0%{-webkit-transform:rotateZ(0);transform:rotateZ(0)}100%{-webkit-transform:rotateZ(360deg);transform:rotateZ(360deg)}}@keyframes rotating{0%{-webkit-transform:rotateZ(0);transform:rotateZ(0)}100%{-webkit-transform:rotateZ(360deg);transform:rotateZ(360deg)}} \ No newline at end of file diff --git "a/Vol.Vue3\347\211\210\346\234\254/src/components/basic/QuickSearch.vue" "b/Vol.Vue3\347\211\210\346\234\254/src/components/basic/QuickSearch.vue" index 9653d2dd7..185cbf2d8 100644 --- "a/Vol.Vue3\347\211\210\346\234\254/src/components/basic/QuickSearch.vue" +++ "b/Vol.Vue3\347\211\210\346\234\254/src/components/basic/QuickSearch.vue" @@ -2,7 +2,6 @@
- + + + +
\ No newline at end of file + + \ No newline at end of file diff --git "a/Vol.Vue3\347\211\210\346\234\254/src/components/basic/UploadExcel.vue" "b/Vol.Vue3\347\211\210\346\234\254/src/components/basic/UploadExcel.vue" index 2e5a8b8a2..942dde458 100644 --- "a/Vol.Vue3\347\211\210\346\234\254/src/components/basic/UploadExcel.vue" +++ "b/Vol.Vue3\347\211\210\346\234\254/src/components/basic/UploadExcel.vue" @@ -19,27 +19,25 @@ style="margin-left: 10px" type="primary" size="small" - icon="el-icon-bottom" @click="dowloadTemplate" :loading="loadingStatus" - > - + > + 下载模板 - + > + 上传文件
只能上传excel文件,文件大小不超过5M只能上传excel文件,文件大小不超过{{ maxSize }}M
@@ -64,48 +62,52 @@ export default { props: { url: { type: String, - default: "", + default: '' }, template: { //下载模板配置 type: Object, default: () => { return { - url: "", //模板下载路径,如果没有模板路径,则不显示下载模板功能 - fileName: "未定义文件名", //下载模板的文件名 + url: '', //模板下载路径,如果没有模板路径,则不显示下载模板功能 + fileName: '未定义文件名' //下载模板的文件名 }; - }, + } }, importExcelBefore: { type: Function, default: (file) => { return true; - }, - }, + } + } }, data() { return { - maxSize: 102 * 5, + maxSize: 100, model: true, file: null, loadingStatus: false, - message: "", - resultClass: "", + message: '', + resultClass: '' }; }, methods: { clearMsg() { - this.message = ""; + this.message = ''; }, reset() { this.file = null; - this.message = ""; - this.resultClass = ""; + this.message = ''; + this.resultClass = ''; }, getFileType() { - let fileName = this.file.name.split(".").pop().toLocaleLowerCase() || ""; - if (["numbers", "csv", "xls", "xlsx"].indexOf(fileName) == -1) { - this.$Message.error("只能选择excel文件"); + let fileName = + this.file.name + .split('.') + .pop() + .toLocaleLowerCase() || ''; + if (['numbers', 'csv', 'xls', 'xlsx'].indexOf(fileName) == -1) { + this.$Message.error('只能选择excel文件'); return false; } return true; @@ -120,14 +122,14 @@ export default { upload() { let _url = this.url; if (!_url) { - return this.$Message.error("没有配置好Url"); + return this.$Message.error('没有配置好Url'); } if (!this.file) { - return this.$Message.error("请选择文件"); + return this.$Message.error('请选择文件'); } var formData = new FormData(); - formData.append("fileInput", this.file); + formData.append('fileInput', this.file); if (!this.importExcelBefore(formData)) { return; } @@ -138,11 +140,11 @@ export default { this.loadingStatus = false; this.file = null; if (x.status) { - this.$emit("importExcelAfter", x); + this.$emit('importExcelAfter', x); } this.message = x.message; - this.resultClass = x.status ? "v-r-success" : "v-r-error"; + this.resultClass = x.status ? 'v-r-success' : 'v-r-error'; }, (error) => { this.loadingStatus = false; @@ -152,21 +154,21 @@ export default { dowloadTemplate() { let url = this.template.url; let xmlResquest = new XMLHttpRequest(); - xmlResquest.open("GET", url, true); - xmlResquest.setRequestHeader("Content-type", "application/json"); + xmlResquest.open('GET', url, true); + xmlResquest.setRequestHeader('Content-type', 'application/json'); xmlResquest.setRequestHeader( - "Authorization", + 'Authorization', this.$store.getters.getToken() ); - let fileName = this.template.fileName + ".xlsx"; + let fileName = this.template.fileName + '.xlsx'; let elink = this.$refs.template; - xmlResquest.responseType = "blob"; + xmlResquest.responseType = 'blob'; let $_vue = this; this.loadingStatus = true; - xmlResquest.onload = function (oEvent) { + xmlResquest.onload = function(oEvent) { $_vue.loadingStatus = false; - if (xmlResquest.response.type == "application/json") { - return $_vue.message.error("未找到下载文件"); + if (xmlResquest.response.type == 'application/json') { + return $_vue.message.error('未找到下载文件'); } let content = xmlResquest.response; elink.download = fileName; @@ -175,13 +177,13 @@ export default { elink.click(); }; xmlResquest.send(); - }, - }, + } + } }; + + diff --git "a/Vol.Vue3\347\211\210\346\234\254/src/components/basic/ViewGrid/ViewGridCustomColumn.js" "b/Vol.Vue3\347\211\210\346\234\254/src/components/basic/ViewGrid/ViewGridCustomColumn.js" new file mode 100644 index 000000000..16a49e023 --- /dev/null +++ "b/Vol.Vue3\347\211\210\346\234\254/src/components/basic/ViewGrid/ViewGridCustomColumn.js" @@ -0,0 +1,151 @@ +export default { + initViewColumns(isReset) { + //初始化自定列配置 + if (isReset) { + this.resetViewColumns(); + } + if (!this.orginColumnFields) { + this.orginColumnFields = this.columns.map((c) => { + return c.field; + }); + } + this.viewColumns = this.columns + .filter((c) => { + return !c.hidden && !c.render; + }) + .map((c) => { + return { field: c.field, title: c.title, show: !c.hidden }; + }); + if (isReset) { + return; + } + this.getCacheViewColumn(); + }, + getViewCacheKey(){ + return 'custom:column'+this.table.name; + }, + getCacheViewColumn() { + try { + let columns = localStorage.getItem(this.getViewCacheKey()); + if (!columns) return; + columns = JSON.parse(columns); + if (columns.some(x=>{return !this.viewColumns.some(c=> {return c.field==x.field})})|| + this.viewColumns.some(x=>{return !columns.some(c=> {return c.field==x.field})}) + ) { + localStorage.removeItem(this.getViewCacheKey()) + return; + } + let sortTableColumns = []; + //弹出框的列 + let _viewColumns = []; + columns.forEach((column) => { + let _column = this.viewColumns.find((c) => { + return c.field == column.field; + }); + if (_column) { + _column.show = column.show; + _viewColumns.push(_column); + } + let tableColumn = this.columns.find((c) => { + return c.field == column.field; + }); + if (tableColumn) { + tableColumn.hidden = !column.show; + sortTableColumns.push(tableColumn); + } + }); + //重新排版弹出框自定义列 + let otherColumns = this.viewColumns.filter((c) => { + return !_viewColumns.some((s) => { + return c.field == s.field; + }); + }); + //重新排版弹出框自定义列 + _viewColumns.push(...otherColumns); + this.viewColumns.splice(0); + this.viewColumns.push(..._viewColumns); + + this.sortViewColumns(sortTableColumns); + } catch (error) { + console.log('设置默认自定义列异常:' + error.message); + } + }, + sortViewColumns(sortColumns) { + if (sortColumns.length) { + let hiddenColumns = this.columns.filter((c) => { + return !sortColumns.some((s) => { + return c.field == s.field; + }); + }); + sortColumns.push(...hiddenColumns); + this.columns.splice(0); + this.columns.push(...sortColumns); + } + }, + resetViewColumns() { + if (!this.orginColumnFields) { + return; + } + let _columns = []; + this.orginColumnFields.forEach((x) => { + _columns.push( + this.columns.find((c) => { + return c.field == x; + }) + ); + }); + let otherColumns = this.columns.filter((c) => { + return !this.orginColumnFields.some((s) => { + return c.field == s; + }); + }); + _columns.push(...otherColumns); + this.columns.splice(0); + this.columns.push(..._columns); + }, + showCustomModel() { + if (!this.viewColumns.length) { + this.initViewColumns(); + } + this.viewColumnsClone = JSON.parse(JSON.stringify(this.viewColumns)); + this.viewModel = true; + }, + closeCustomModel() { + this.viewModel=false; + if (this.checkColumnChanged()) { + this.viewColumns = JSON.parse(JSON.stringify(this.viewColumnsClone)); + } + }, + checkColumnChanged() { + return ( + JSON.stringify(this.viewColumns) != JSON.stringify(this.viewColumnsClone) + ); + }, + saveColumnConfig() { + let hasShowColumn = this.viewColumns.some((x) => { + return x.show; + }); + if (!hasShowColumn) { + return this.$message.error('至少选择一列显示'); + } + this.viewModel = false; + if (this.checkColumnChanged()) { + let sortColumns = []; + this.viewColumns.forEach((column) => { + let _column = this.columns.find((c) => { + return c.field == column.field; + }); + if (_column) { + _column.hidden = !column.show; + sortColumns.push(_column); + } + }); + this.sortViewColumns(sortColumns); + } + try { + localStorage.setItem(this.getViewCacheKey(), JSON.stringify(this.viewColumns)); + } catch (error) { + console.log('获取自定义列异常:' + error.message); + } + } +}; diff --git "a/Vol.Vue3\347\211\210\346\234\254/src/components/basic/ViewGrid/ViewGridCustomColumn.vue" "b/Vol.Vue3\347\211\210\346\234\254/src/components/basic/ViewGrid/ViewGridCustomColumn.vue" new file mode 100644 index 000000000..97feb802b --- /dev/null +++ "b/Vol.Vue3\347\211\210\346\234\254/src/components/basic/ViewGrid/ViewGridCustomColumn.vue" @@ -0,0 +1,95 @@ + + + diff --git "a/Vol.Vue3\347\211\210\346\234\254/src/components/basic/ViewGrid/detailMethods.js" "b/Vol.Vue3\347\211\210\346\234\254/src/components/basic/ViewGrid/detailMethods.js" index 4d014d57a..88d5961eb 100644 --- "a/Vol.Vue3\347\211\210\346\234\254/src/components/basic/ViewGrid/detailMethods.js" +++ "b/Vol.Vue3\347\211\210\346\234\254/src/components/basic/ViewGrid/detailMethods.js" @@ -1,7 +1,8 @@ //从表方法 let detailMethods = { //查询从表前先做内部处理 - loadInternalDetailTableBefore(param, callBack) {//加载明细表数据之前,需要设定查询的主表的ID + loadInternalDetailTableBefore(param, callBack) { + //加载明细表数据之前,需要设定查询的主表的ID //每次只要加载明细表格数据就重置删除明细的值 if (this.detailOptions.delKeys.length > 0) { this.detailOptions.delKeys = []; @@ -15,26 +16,27 @@ let detailMethods = { detailRowOnChange(row) { this.detailRowChange(row); }, - detailRowChange(row) {//checkbox选中行事件 - + detailRowChange(row) { + //checkbox选中行事件 }, detailRowOnClick({ row, column, event }) { //明细表点击行事件2020.11.07 - this.detailRowClick({ row, column, event }) - }, - detailRowClick({ row, column, event }) { - + this.detailRowClick({ row, column, event }); }, - resetDetailTable(row) {//编辑和查看明细时重置从表数据 + detailRowClick({ row, column, event }) {}, + resetDetailTable(row) { + //编辑和查看明细时重置从表数据 if (!this.detailOptions.columns || this.detailOptions.columns.length == 0) { return; } let key = this.table.key; - let query = { value: row ? row[key] : this.currentRow[key] } - if (this.$refs.detail) { - this.$refs.detail.reset(); - this.$refs.detail.load(query); - } + let query = { value: row ? row[key] : this.currentRow[key] }; + this.$nextTick(() => { + if (this.$refs.detail) { + this.$refs.detail.reset(); + this.$refs.detail.load(query); + } + }); }, //从后面加载从表数据 refreshRow() { @@ -42,12 +44,13 @@ let detailMethods = { }, addRow() { this.$refs.detail.addRow({}); + this.$refs.detail.edit.rowIndex=-1; this.updateDetailTableSummaryTotal(); }, delRow() { let rows = this.$refs.detail.getSelected(); if (!rows || rows.length == 0) { - return this.$message.error("请选择要删除的行!"); + return this.$message.error('请选择要删除的行!'); } if (!this.delDetailRow(rows)) { return false; @@ -65,15 +68,16 @@ let detailMethods = { rows = this.$refs.detail.delRow(); let key = this.detailOptions.key; //记录删除的行数据 - rows.forEach(x => { + rows.forEach((x) => { if (x.hasOwnProperty(key) && x[key]) { this.detailOptions.delKeys.push(x[key]); } - }) + }); this.updateDetailTableSummaryTotal(); }); }, - updateDetailTableSummaryTotal() { //2021.09.25增加明细表删除、修改时重新计算行数与汇总 + updateDetailTableSummaryTotal() { + //2021.09.25增加明细表删除、修改时重新计算行数与汇总 //2021.12.12增加明细表判断(强制刷新合计时会用到) if (!this.$refs.detail) { return; @@ -82,13 +86,13 @@ let detailMethods = { this.$refs.detail.paginations.total = this.$refs.detail.rowData.length; //重新设置合计 if (this.$refs.detail.summary) { - this.$refs.detail.columns.forEach(column => { + this.$refs.detail.columns.forEach((column) => { if (column.summary) { this.$refs.detail.getInputSummaries(null, null, null, column); } - }) + }); } } -} +}; export default detailMethods; diff --git "a/Vol.Vue3\347\211\210\346\234\254/src/components/basic/ViewGrid/methods.js" "b/Vol.Vue3\347\211\210\346\234\254/src/components/basic/ViewGrid/methods.js" index 423852eab..799059285 100644 --- "a/Vol.Vue3\347\211\210\346\234\254/src/components/basic/ViewGrid/methods.js" +++ "b/Vol.Vue3\347\211\210\346\234\254/src/components/basic/ViewGrid/methods.js" @@ -30,8 +30,10 @@ let methods = { return x.value == 'Search'; }); //添加高级查询 - let hasOneFormItem = this.searchFormOptions.length==1&&this.searchFormOptions[0].length==1; - if (searchIndex != -1&&!hasOneFormItem) { + let hasOneFormItem = + this.searchFormOptions.length == 1 && + this.searchFormOptions[0].length == 1; + if (searchIndex != -1 && !hasOneFormItem) { this.buttons.splice(searchIndex + 1, 0, { icon: this.fiexdSearchForm ? 'el-icon-refresh-left' : 'el-icon-search', name: this.fiexdSearchForm ? '重置' : '高级查询', @@ -46,13 +48,15 @@ let methods = { }); } if (hasOneFormItem) { - this.fiexdSearchForm=false; + this.fiexdSearchForm = false; } this.maxBtnLength += searchIndex == -1 ? 0 : 1; - if (this.buttons.length <= this.maxBtnLength) return this.buttons; - let btns = this.buttons.slice(0, this.maxBtnLength); - btns[this.maxBtnLength - 1].last = true; - return btns; + // if (this.buttons.length <= this.maxBtnLength) { + // return this.buttons; + // } + // let btns = this.buttons.slice(0, this.maxBtnLength); + // btns[this.maxBtnLength - 1].last = true; + // return btns; }, extendBtn(btns, source) { //btns权限按钮,source为扩展按钮 @@ -185,16 +189,16 @@ let methods = { onClick() { this.save(); } - }, - { - name: '重 置', - icon: 'el-icon-refresh-right', - type: 'primary', - disabled: false, - onClick() { - this.resetEdit(); - } } + // { + // name: '重 置', + // icon: 'el-icon-refresh-right', + // type: 'primary', + // disabled: false, + // onClick() { + // this.resetEdit(); + // } + // } ] ); //从表表格操作按钮 @@ -349,14 +353,30 @@ let methods = { if (query) { param = Object.assign(param, query); } + if (this.isViewFlow() && this.$route.query.id) { + param.wheres.push({ + name: this.table.key, + value: this.$route.query.id + }); + } let status = this.searchBefore(param); callBack(status); }, + loadTableAfter(data, callBack, result) { //查询后 //2020.10.30增加查询后返回所有的查询信息 let status = this.searchAfter(data, result); callBack(status); + //自动弹出框审批详情 + if (this.isViewFlow() && data && data.length) { + let query = JSON.parse(JSON.stringify(this.$route.query)); + query.viewflow = 0; + this.$router.replace({ path: this.$route.path, query: query }); + this.$nextTick(() => { + this.getWorkFlowSteps(data[0]); + }); + } }, loadDetailTableBefore(param, callBack) { //明细查询前 @@ -383,7 +403,8 @@ let methods = { return x.field == field; }); } - return data.type; + + return (data || {}).type; }, resetSearch() { //重置查询对象 @@ -420,6 +441,11 @@ let methods = { this.$refs.detail.reset(); } this.resetForm('form', sourceObj); + if (this.$refs.form && this.$refs.form.$refs.volform) { + setTimeout(() => { + this.$refs.form.$refs.volform.clearValidate(); + }, 100); + } }, getKeyValueType(formData, isEditForm) { try { @@ -496,7 +522,7 @@ let methods = { }); if (treeDic && treeDic.orginData && treeDic.orginData.length) { if (typeof treeDic.orginData[0].id == 'number') { - newVal = ~~newVal; + newVal = newVal * 1 || 0; } else { newVal = newVal + ''; } @@ -586,6 +612,10 @@ let methods = { return x.path; }); editFormFields[key] = allPath.join(','); + } else if (typeof this.editFormFields[key] == 'function') { + try { + editFormFields[key] = this.editFormFields[key](); + } catch (error) { } } else { //2021.05.30修复下拉框清除数据后后台不能保存的问题 if ( @@ -627,6 +657,27 @@ let methods = { //获取明细数据(前台数据明细未做校验,待完.后台已经校验) if (this.hasDetail) { formData.detailData = this.$refs.detail.rowData; + let _fields = this.detail.columns + .filter((c) => { + return ( + c.type == 'selectList' || (c.edit && c.edit.type == 'selectList') + ); + }) + .map((c) => { + return c.field; + }); + //2022.06.20增加保存时对明细表下拉框多选的判断 + if (_fields.length) { + formData.detailData = JSON.parse(JSON.stringify(formData.detailData)); + formData.detailData.forEach((row) => { + for (let index = 0; index < _fields.length; index++) { + const _field = _fields[index]; + if (Array.isArray(row[_field])) { + row[_field] = row[_field].join(','); + } + } + }); + } } if (this.detailOptions.delKeys.length > 0) { formData.delKeys = this.detailOptions.delKeys; @@ -665,7 +716,7 @@ let methods = { if (!this.updateAfter(x)) return; } if (!x.status) return this.$error(x.message); - this.$success(x.message); + this.$success(x.message || '操作成功'); //如果保存成功后需要关闭编辑框,直接返回不处理后面 if (this.boxOptions.saveClose) { this.boxModel = false; @@ -781,6 +832,7 @@ let methods = { this.boxModel = true; }, async linkData(row, column) { + this.boxOptions.title = this.table.cnName + '(编辑)'; //点击table单元格快捷链接显示编辑数据 this.currentAction = this.const.EDIT; this.currentRow = row; @@ -820,6 +872,7 @@ let methods = { this.resetEditForm(obj); }, async add() { + this.boxOptions.title = this.table.cnName + '(新建)'; //新建 this.currentAction = this.const.ADD; this.currentRow = {}; @@ -834,6 +887,7 @@ let methods = { // this.modelOpenAfter(); }, async edit(rows) { + this.boxOptions.title = '编辑'; //编辑 this.currentAction = this.const.EDIT; if (rows) { @@ -971,7 +1025,8 @@ let methods = { param.wheres = JSON.stringify(param.wheres); } let $http = this.http; - let fileName = this.getFileName(isDetail); + //2022.09.26增加自定义导出文件名 + let fileName = this.downloadFileName || this.getFileName(isDetail); //2021.01.08优化导出功能 $http .post(url, param, '正在导出数据....', { responseType: 'blob' }) @@ -1028,17 +1083,13 @@ let methods = { this.auditParam.model = true; }, saveAudit() { + if (this.auditParam.status == -1 && this.auditParam.value == -1) { + this.$message.error('请选择审批状态'); + return; + } //保存审核 - let rows = this.$refs.table.getSelected(); - if (this.auditParam.status == -1) return this.$error('请选择审核结果!'); - - if (rows.length != this.auditParam.rows) - return this.$error('所选数据已发生变化,请重新选择审数据!'); - - let keys = rows.map((x) => { - return x[this.table.key]; - }); - if (!this.auditBefore(keys, rows)) { + let keys = [this.editFormFields[this.table.key]]; + if (!this.auditBefore(keys, this.currentRow)) { return; } let url = @@ -1046,16 +1097,20 @@ let methods = { '?auditReason=' + this.auditParam.reason + '&auditStatus=' + - this.auditParam.status; + (this.auditParam.status < 0 + ? this.auditParam.value + : this.auditParam.status); this.http.post(url, keys, '审核中....').then((x) => { - if (!this.auditAfter(x, rows)) { + if (!this.auditAfter(x, keys)) { return; } if (!x.status) return this.$error(x.message); this.auditParam.rows = 0; this.auditParam.status = -1; + this.auditParam.value = -1; this.auditParam.reason = ''; this.auditParam.model = false; + this.boxModel = false; this.$success(x.message); this.refresh(); }); @@ -1073,6 +1128,10 @@ let methods = { formOptions.forEach((item) => { item.forEach((d) => { if (d.type == 'number') { + //2022.08.22优化表单类型为number时的默认值 + if (formFields[d.field] === '') { + formFields[d.field] = undefined; + } this.numberFields.push(d.field); } if ( @@ -1134,7 +1193,8 @@ let methods = { d, this.dicKeys.filter((f) => { return f.dicNo == d.dataKey; - })[0] + })[0], + { type: d.type } ); } }); @@ -1176,6 +1236,18 @@ let methods = { //绑定下拉框的数据源 //绑定后台的字典数据 dic.forEach((d) => { + if (d.data.length >= (this.select2Count || 500)) { + if ( + !this.dicKeys.some((x) => { + return x.dicNo == d.dicNo && x.type == 'cascader'; + }) + ) { + d.data.forEach((item) => { + item.label = item.value; + item.value = item.key; + }); + } + } this.dicKeys.forEach((x) => { if (x.dicNo != d.dicNo) return true; //2020.10.26增加级联数据源绑定处理 @@ -1370,7 +1442,7 @@ let methods = { clientHeight = clientHeight * 0.85; if (!this.detailOptions.height) { this.detailOptions.height = - clientHeight - this.editFormOptions.length * 57 - 205; + clientHeight - this.editFormOptions.length * 36 - 234; this.detailOptions.height = this.detailOptions.height < 240 ? 240 : this.detailOptions.height; } @@ -1447,6 +1519,17 @@ let methods = { }; } }, + tableBeginEdit(row, column, index) { + //2021.03.19是否开启查询界面表格双击编辑结束方法,返回false不会结束编辑 + return this.beginEdit(row, column, index); + }, + beginEdit(row, column, index) { + //2021.03.19是否开启查询界面表格双击编辑结束方法,返回false不会结束编辑 + return true; + }, + tableEndEditBefore(row, column, index) { + return this.endEditBefore(row, column, index); + }, endEditBefore(row, column, index) { //2021.03.19是否开启查询界面表格双击编辑结束方法,返回false不会结束编辑 return true; @@ -1495,8 +1578,114 @@ let methods = { return; } this.importAfter(data); + }, + onGridModelClose(iconClick) { + if (this.isBoxAudit) { + this.initFormOptionType(false); + } + this.isBoxAudit = false; + this.onModelClose(iconClick); + }, + initAuditColumn() { + let _btn = this.buttons.find((x) => { + return x.value == 'Audit'; + }); + let auditField = this.columns + .map((m) => { + return m.field; + }) + .find((name) => { + return (name || '').toLowerCase() == 'auditstatus'; + }); + if (!_btn || !auditField) return; + + _btn.hidden = true; + this.columns.push({ + field: '操作', + title: '操作', + width: 70, + fixed: 'right', + align: 'center', + formatter: (row) => { + return ( + '查看' + : 'class="el-icon-edit">审核') + ); + }, + click: (row) => { + this.getWorkFlowSteps(row); + } + }); + }, + getWorkFlowSteps(row) { + let table = this.table.url.replaceAll('/', ''); + let url = `api/Sys_WorkFlow/getSteps?tableName=${table}&id=${row[this.table.key] + }`; + this.http.get(url, {}, true).then((result) => { + this.workFlowSteps.splice(0); + //有可能没有配置审批流程 + if (!result.list || !result.list.length) { + result.list = []; + this.auditParam.showAction = true; + this.auditParam.height = 240; + this.auditParam.showViewButton = row.AuditStatus == 0; + } else { + this.auditParam.showAction = result.list.some((c) => { + return c.isCurrentUser; + }); + this.auditParam.height = 511; + this.auditParam.showViewButton = true; + } + this.auditParam.reason = ''; + this.auditParam.status = -1; + this.auditParam.value = -1; + if (result.his) { + result.his.forEach((item) => { + item.auditStatus = this.getAuditStatus(item.auditStatus); + }); + } + + this.auditParam.auditHis = result.his; + this.workFlowSteps.push(...result.list); + this.isBoxAudit = true; + this.initFormOptionType(true); + this.edit(row); + this.boxOptions.title = '审核'; + }); + }, + initFormOptionType(isReadonly) { + this.editFormOptions.forEach((options) => { + options.forEach((option) => { + if (isReadonly) { + if (!option.readonly) { + this.formFieldsType.push(option.field); + option.readonly = true; + } + } else { + if (this.formFieldsType.indexOf(option.field) != -1) { + option.readonly = false; + } + } + }); + }); + }, + getAuditStatus(status) { + let data = this.auditParam.data.find((x) => { + return x.value == status; + }); + if (!data) { + return '-'; + // return `审核值不正确:${status}` + } + return data.text; + }, + isViewFlow() { + return this.$route.query.viewflow == '1'; } }; +import customColumns from './ViewGridCustomColumn.js'; //合并扩展方法 -methods = Object.assign(methods, detailMethods, serviceFilter); +methods = Object.assign(methods, detailMethods, serviceFilter, customColumns); export default methods; diff --git "a/Vol.Vue3\347\211\210\346\234\254/src/components/basic/VolBox.vue" "b/Vol.Vue3\347\211\210\346\234\254/src/components/basic/VolBox.vue" index 964cf7485..06ca7ad9b 100644 --- "a/Vol.Vue3\347\211\210\346\234\254/src/components/basic/VolBox.vue" +++ "b/Vol.Vue3\347\211\210\346\234\254/src/components/basic/VolBox.vue" @@ -6,9 +6,11 @@ :close-on-click-modal="false" :close-on-press-escape="false" :width="width" + :draggable="draggable" + :modal="modal" :before-close="handleClose" > - +
@@ -17,7 +19,7 @@ class="srcoll-content" :style="{ padding: padding + 'px' }" > - +
@@ -36,7 +38,7 @@ diff --git "a/Vol.Vue3\347\211\210\346\234\254/src/components/basic/VolElementMenu.vue" "b/Vol.Vue3\347\211\210\346\234\254/src/components/basic/VolElementMenu.vue" index 9351aed7c..66a977996 100644 --- "a/Vol.Vue3\347\211\210\346\234\254/src/components/basic/VolElementMenu.vue" +++ "b/Vol.Vue3\347\211\210\346\234\254/src/components/basic/VolElementMenu.vue" @@ -2,6 +2,8 @@
diff --git "a/Vol.Vue3\347\211\210\346\234\254/src/components/basic/VolForm.vue" "b/Vol.Vue3\347\211\210\346\234\254/src/components/basic/VolForm.vue" index 37e36f002..9f3801afc 100644 --- "a/Vol.Vue3\347\211\210\346\234\254/src/components/basic/VolForm.vue" +++ "b/Vol.Vue3\347\211\210\346\234\254/src/components/basic/VolForm.vue" @@ -9,7 +9,7 @@ :rules="rules" > + @@ -122,9 +173,13 @@ v-else-if="item.type == 'radio'" @change="item.onChange" > - {{ - kv.value - }} + {{ kv.value }} {{ kv.value }} @@ -149,14 +205,13 @@ " > + + +
+
+
-
const rule = { change: [ - 'checkbox', - 'select', - 'date', - 'datetime', - 'drop', - 'radio', - 'cascader' + "checkbox", + "select", + "date", + "datetime", + "drop", + "radio", + "cascader", ], // 2020.05.31增加级联类型 phone: /^[1][3,4,5,6,7,8,9][0-9]{9}$/, decimal: /(^[\-0-9][0-9]*(.[0-9]+)?)$/, - number: /(^[\-0-9][0-9]*([0-9]+)?)$/ + number: /(^[\-0-9][0-9]*([0-9]+)?)$/, }; -const inputTypeArr = ['text', 'string', 'mail', 'textarea', 'password']; +const inputTypeArr = ["text", "string", "mail", "textarea", "password"]; const types = { - int: 'number', - byte: 'number', - decimal: 'number', // "float", - string: 'string', - bool: 'boolean', - date: 'datetime', - date: 'date', - mail: 'email' + int: "number", + byte: "number", + decimal: "number", // "float", + string: "string", + bool: "boolean", + date: "datetime", + date: "date", + mail: "email", }; //表单验证注意:每次验证都必须执行callback,否则验证不执行回调方法 const colPow = Math.pow(10, 3); -import FormExpand from './VolForm/VolFormRender'; +import FormExpand from "./VolForm/VolFormRender"; import { defineAsyncComponent, defineComponent, @@ -424,52 +495,61 @@ import { toRefs, getCurrentInstance, onMounted, - watch -} from 'vue'; + watch, +} from "vue"; export default defineComponent({ components: { FormExpand, - 'vol-upload': defineAsyncComponent(() => - import('@/components/basic/VolUpload.vue') + "vol-upload": defineAsyncComponent(() => + import("@/components/basic/VolUpload.vue") + ), + "vol-wang-editor": defineAsyncComponent(() => + import("@/components/editor/VolWangEditor.vue") ), - 'vol-wang-editor': defineAsyncComponent(() => - import('@/components/editor/VolWangEditor.vue') - ) }, props: { loadKey: { // 是否加载formRules字段配置的数据源 type: Boolean, - default: true + default: true, }, width: { // 表单宽度 type: Number, - default: 0 + default: 0, }, labelWidth: { // 表单左边label文字标签的宽度 type: Number, - default: 100 + default: 100, }, formRules: { // 表单配置规则,如字段类型,是否必填 type: Array, - default: [] + default: [], }, formFields: { type: Object, default: () => { return {}; - } + }, }, editor: { // 2021.01.16编辑器信息 {uploadImgUrl:"",upload:null//上传方法} type: Object, default: () => { return {}; - } - } + }, + }, + size: { + type: String, //large / default / small + default: "large", + }, + select2Count: { + //超出数量显示select2组件 + type: Number, + default: 500, + }, }, computed: { rules() { @@ -479,11 +559,16 @@ export default defineComponent({ ruleResult[item.field] = [this.getRule(item, this.formFields)]; }); }); + if( this.$refs.volform){ + setTimeout(()=>{ + this.$refs.volform.clearValidate(); + },100) + } return ruleResult; - } + }, }, setup(props, context) { - const { appContext } = getCurrentInstance(); + const { appContext, proxy } = getCurrentInstance(); const remoteCall = ref(true); const span = ref(1); const rangeFields = toRefs([]); @@ -513,7 +598,7 @@ export default defineComponent({ }); } row.forEach((item, yIndex) => { - if (item.type == 'number') { + if (item.type == "number") { numberFields.push(item.field); } // 目前只支持select单选远程搜索,remote远程从后台字典数据源进行搜索,url从指定的url搜索 @@ -527,18 +612,18 @@ export default defineComponent({ // 初始化数据源空对象 if (item.dataKey) { // 下拉框都强制设置为字符串类型 - item.columnType = 'string'; + item.columnType = "string"; if (!item.data) { item.data = []; } } - if (item.range || item.type == 'range') { + if (item.range || item.type == "range") { if ( !(props.formFields[item.field] instanceof Array) || props.formFields[item.field].length != 2 ) { - props.formFields[item.field] = ['', '']; + props.formFields[item.field] = ["", ""]; } rangeFields.push(item.field); } @@ -564,19 +649,32 @@ export default defineComponent({ if (keys.length == 0) return; appContext.config.globalProperties.http - .post('/api/Sys_Dictionary/GetVueDictionary', keys) + .post("/api/Sys_Dictionary/GetVueDictionary", keys) .then((dic) => { bindOptions(dic, binds); + proxy.$emit("dicInited", dic); }); }; const bindOptions = (dic, binds) => { dic.forEach((d) => { + if (d.data.length > props.select2Count) { + if ( + !binds.some((x) => { + return x.key == d.dicNo && x.type == "cascader"; + }) + ) { + d.data.forEach((item) => { + item.label = item.value; + item.value = item.key; + }); + } + } binds.forEach((x) => { if (x.key != d.dicNo) return true; // 如果有数据的则不查询 if (x.data.length > 0) return true; //2022.03.13增加级联数据源自动转换 - if (x.type == 'cascader') { + if (x.type == "cascader") { let _data = JSON.parse(JSON.stringify(d.data)); let cascaderArr = appContext.config.globalProperties.base.convertTree( @@ -597,13 +695,13 @@ export default defineComponent({ } }); }); - } else if (d.data.length > 0 && !d.data[0].hasOwnProperty('key')) { + } else if (d.data.length > 0 && !d.data[0].hasOwnProperty("key")) { let source = d.data, newSource = new Array(source.length); for (let index = 0; index < source.length; index++) { newSource[index] = { - key: source['key'] + '', - value: source['value'] + key: source["key"] + "", + value: source["value"], }; } x.data.push(...newSource); @@ -617,17 +715,17 @@ export default defineComponent({ const initUpload = (item, init) => { if (!init) return; if ( - ['img', 'excel', 'file'].indexOf(item.type != -1) || - item.columnType == 'img' + ["img", "excel", "file"].indexOf(item.type != -1) || + item.columnType == "img" ) { // 只是没设置是否自动上传的,默认都是选择文件后自动上传 - if (!item.hasOwnProperty('autoUpload')) { + if (!item.hasOwnProperty("autoUpload")) { item.autoUpload = true; } - if (!item.hasOwnProperty('fileList')) { + if (!item.hasOwnProperty("fileList")) { item.fileList = true; } - if (!item.hasOwnProperty('downLoad')) { + if (!item.hasOwnProperty("downLoad")) { item.downLoad = true; } if (!item.removeBefore) { @@ -661,10 +759,16 @@ export default defineComponent({ let result = true; volform.value.validate((valid) => { if (!valid) { - appContext.config.globalProperties.$message.error('数据验证未通过!'); + appContext.config.globalProperties.$message.error("数据验证未通过!"); result = false; - } else if (typeof callback === 'function') { - callback(valid); + } else if (typeof callback === "function") { + try { + callback(valid); + } catch (error) { + let msg = `表单验证回调方法异常:${error.message}`; + appContext.config.globalProperties.$message.error(msg); + console.log(msg); + } } }); return result; @@ -677,7 +781,7 @@ export default defineComponent({ rangeFields, numberFields, validate, - volform + volform, // initFormRules, // initSource }; @@ -689,7 +793,7 @@ export default defineComponent({ data() { return { // remoteCall: true, - errorImg: 'this.src="' + require('@/assets/imgs/error-img.png') + '"' + errorImg: 'this.src="' + require("@/assets/imgs/error-img.png") + '"', // span: 1, // rangeFields: [], }; @@ -717,7 +821,7 @@ export default defineComponent({ }, getSrc(path) { if (!path) return; - if (!this.base.isUrl(path) && path.indexOf('.') != -1) { + if (!this.base.isUrl(path) && path.indexOf(".") != -1) { return this.http.ipAddress + path; } return path; @@ -725,10 +829,10 @@ export default defineComponent({ // 是否为图片文件等格式并对字段的转换成数组:[{name:'1.jpg',path:'127.0.0.1/ff/1.jpg'}] isFile(item, formFields) { if ( - item.type == 'img' || - item.columnType == 'img' || - item.type == 'excel' || - item.type == 'file' + item.type == "img" || + item.columnType == "img" || + item.type == "excel" || + item.type == "file" ) { this.convertFileToArray(item, formFields); return true; @@ -755,21 +859,21 @@ export default defineComponent({ return; } // 将以逗号隔开的文件分割成数组127.0.0.1/aa/1.jpg,将127.0.0.1/aa/2.jpg - if (typeof fileInfo === 'string') { - if (fileInfo.trim() === '') { + if (typeof fileInfo === "string") { + if (fileInfo.trim() === "") { formFields[item.field] = []; return; } // 如果文件路径是字符串,则使用,拆分 - fileInfo = fileInfo.replace(/\\/g, '/'); - let files = fileInfo.split(','); + fileInfo = fileInfo.replace(/\\/g, "/"); + let files = fileInfo.split(","); formFields[item.field] = []; for (let index = 0; index < files.length; index++) { let file = files[index]; - let splitFile = file.split('/'); + let splitFile = file.split("/"); formFields[item.field].push({ name: splitFile.length > 0 ? splitFile[splitFile.length - 1] : file, - path: file // this.base.isUrl(file) ? file : this.http.ipAddress + file, + path: file, // this.base.isUrl(file) ? file : this.http.ipAddress + file, }); } } @@ -779,59 +883,59 @@ export default defineComponent({ file.path, file.name, { - Authorization: this.$store.getters.getToken() + Authorization: this.$store.getters.getToken(), }, this.http.ipAddress ); }, validatorPhone(ruleOption, value, callback) { - if (!ruleOption.required && !value && value != '0') { + if (!ruleOption.required && !value && value != "0") { return callback(); } - if (!rule.phone.test((value || '').trim())) { - return callback(new Error('请输入正确的手机号')); + if (!rule.phone.test((value || "").trim())) { + return callback(new Error("请输入正确的手机号")); } callback(); }, validatorPwd(ruleOption, value, callback) { - if (!ruleOption.required && !value && value != '0') { + if (!ruleOption.required && !value && value != "0") { return callback(); } - if ((value + '').trim().length < 6) { - return callback(new Error('密码长度不能小于6位')); + if ((value + "").trim().length < 6) { + return callback(new Error("密码长度不能小于6位")); } callback(); }, convertArrayValue(data, val) { // 2020.12.13增加表单多选只转换字典 // 编辑多选table显示 - let valArr = val instanceof Array ? val : val.split(','); + let valArr = val instanceof Array ? val : val.split(","); for (let index = 0; index < valArr.length; index++) { var _item = data.find((x) => { - return x.key && x.key != '0' && x.key + '' == valArr[index] + ''; + return x.key && x.key != "0" && x.key + "" == valArr[index] + ""; }); if (_item) { valArr[index] = _item.value; } } - return valArr.join(','); + return valArr.join(","); }, getText(formFields, item) { // 2019.10.24修复表单select组件为只读的属性时没有绑定数据源 let text = formFields[item.field]; - if (typeof text === 'function') return text(formFields); - if (text === 'null' || text === '' || text === null || text === undefined) - return '--'; + if (typeof text === "function") return text(formFields); + if (text === "null" || text === "" || text === null || text === undefined) + return "--"; //2021.03.02增加只读时日期处理 - if (item.type == 'date') { - return text.replace('T', ' ').split(' ')[0]; + if (item.type == "date") { + return text.replace("T", " ").split(" ")[0]; } //2021.03.31修复表单switch只读时没有转换值的问题 - if (item.type == 'switch') { - return text ? '是' : '否'; + if (item.type == "switch") { + return text ? "是" : "否"; } if (!item.data) return text; - if (item.type == 'selectList' || item.type == 'checkbox') { + if (item.type == "selectList" || item.type == "checkbox") { return this.convertArrayValue(item.data, text); } var _item = item.data.find((x) => { @@ -845,7 +949,7 @@ export default defineComponent({ // console.log(2); }, onChange(item, value) { - if (item.onChange && typeof item.onChange === 'function') { + if (item.onChange && typeof item.onChange === "function") { item.onChange(value, item); } }, @@ -856,7 +960,7 @@ export default defineComponent({ // console.log('undefined'); } this.remoteCall = false; - if (item.onChange && typeof item.onChange === 'function') { + if (item.onChange && typeof item.onChange === "function") { item.onChange(value, item); } }, @@ -866,8 +970,11 @@ export default defineComponent({ // 远程搜索(打开弹出框时应该禁止搜索) remoteSearch(item, formFields, val) { + if (!item.remote && !item.url) { + return; + } if ( - val == '' || + val == "" || (item.data.length == 1 && (val == item.data[0].key || val == item.data[0].value)) ) { @@ -876,14 +983,14 @@ export default defineComponent({ // 弹出框或初始化表单时给data设置数组默认值2 // 2020.09.26修复远程搜索自定义url不起作用的问题 let url; - if (typeof item.url === 'function') { + if (typeof item.url === "function") { url = item.url(val, item.dataKey, item); } else { url = - (item.url || '/api/Sys_Dictionary/GetSearchDictionary') + - '?dicNo=' + + (item.url || "/api/Sys_Dictionary/GetSearchDictionary") + + "?dicNo=" + item.dataKey + - '&value=' + + "&value=" + val; } this.http.post(url).then((dicData) => { @@ -894,14 +1001,14 @@ export default defineComponent({ }); }, getObject(date) { - if (typeof date === 'object') { + if (typeof date === "object") { return date; } return new Date(date); }, reset(sourceObj) { // 重置表单时,禁用远程查询 - this.$refs['volform'].resetFields(); + this.$refs["volform"].resetFields(); if (this.rangeFields.length) { this.rangeFields.forEach((key) => { this.formFields[key].splice(0); @@ -936,24 +1043,24 @@ export default defineComponent({ if ( // item.readonly || // item.disabled || - item.type == 'switch' || - item.type == 'range' + item.type == "switch" || + item.type == "range" ) return { required: false }; // 用户设置的自定义方法 - if (item.validator && typeof item.validator === 'function') { + if (item.validator && typeof item.validator === "function") { return { validator: (rule, val, callback) => { // 用户自定义的方法,如果返回了值,直接显示返回的值,验证不通过 let message = item.validator(rule, val); - if (message) return callback(new Error(message + '')); + if (message) return callback(new Error(message + "")); return callback(); }, required: item.required, - trigger: rule.change.indexOf(item.type) != -1 ? 'change' : 'blur' + trigger: rule.change.indexOf(item.type) != -1 ? "change" : "blur", }; } - if (['img', 'excel', 'file'].indexOf(item.type) != -1) { + if (["img", "excel", "file"].indexOf(item.type) != -1) { return { validator: (rule, val, callback) => { //2021.09.05移除文件上传默认必填 @@ -963,126 +1070,118 @@ export default defineComponent({ (!val || !val.length) ) { return callback( - new Error(item.type == 'img' ? '请上传照片' : '请上传文件') + new Error(item.type == "img" ? "请上传照片" : "请上传文件") ); } return callback(); }, required: item.required, - trigger: 'change' + trigger: "change", }; } // 设置数字的最大值民最小值 if ( - item.type == 'number' || - item.columnType == 'number' || - item.columnType == 'int' || - item.type == 'decimal' + item.type == "number" || + item.columnType == "number" || + item.columnType == "int" || + item.type == "decimal" ) { // 如果是必填项的数字,设置一个默认最大与最值小 - if (item.required && typeof item.min !== 'number') { + if (item.required && typeof item.min !== "number") { item.min = 0; //item.type == "decimal" ? 0.1 : 1; } return { required: item.required, - message: item.title, + message: item.title+"只能是数字", title: item.title, - trigger: 'blur', + trigger: "blur", min: item.min, max: item.max, type: item.columnType || item.type, validator: (ruleObj, value, callback) => { if (!ruleObj.min && !ruleObj.max) { if (ruleObj.required) { - if (value == '') { - formFields[rule.field] = 0; - return callback(); + if (!value&&value!="0"||!rule.decimal.test(value)) { + return callback(new Error("只能是数字")); } } - if (value === '' || value === undefined) return callback(); + return callback(); } if (this.isReadonly(item)) return callback(); - if (ruleObj.type == 'number') { + if (ruleObj.type == "number") { if (!rule.number.test(value)) { - ruleObj.message = ruleObj.title + '只能是整数'; + ruleObj.message = ruleObj.title + "只能是整数"; return callback(new Error(ruleObj.message)); } } else { if (!rule.decimal.test(value)) { - ruleObj.message = ruleObj.title + '只能是数字'; + ruleObj.message = ruleObj.title + "只能是数字"; return callback(new Error(ruleObj.message)); } } if ( ruleObj.min !== undefined && - typeof ruleObj.min === 'number' && + typeof ruleObj.min === "number" && value < ruleObj.min ) { - ruleObj.message = ruleObj.title + '不能小于' + ruleObj.min; + ruleObj.message = ruleObj.title + "不能小于" + ruleObj.min; return callback(new Error(ruleObj.message)); } if ( ruleObj.max !== undefined && - typeof ruleObj.max === 'number' && + typeof ruleObj.max === "number" && value > ruleObj.max ) { - ruleObj.message = ruleObj.title + '不能大于' + ruleObj.max; + ruleObj.message = ruleObj.title + "不能大于" + ruleObj.max; return callback(new Error(ruleObj.message)); } return callback(); - } + }, }; } // 手机、密码验证 - if (item.type == 'password' || item.type == 'phone') { + if (item.type == "password" || item.type == "phone") { return { validator: - item.type == 'phone' ? this.validatorPhone : this.validatorPwd, + item.type == "phone" ? this.validatorPhone : this.validatorPwd, required: item.required, - trigger: 'blur' + trigger: "blur", }; } - if (!item.required && item.type != 'mail') return { required: false }; + if (!item.required && item.type != "mail") return { required: false }; - if (!item.hasOwnProperty('type')) item.type = 'text'; + if (!item.hasOwnProperty("type")) item.type = "text"; if (inputTypeArr.indexOf(item.type) != -1) { let message = item.title + - (item.type == 'mail' ? '必须是一个邮箱地址' : '不能为空'); - let type = item.type == 'mail' ? 'email' : types[item.columnType]; + (item.type == "mail" ? "必须是一个邮箱地址" : "不能为空"); + let type = item.type == "mail" ? "email" : types[item.columnType]; let _rule = { required: true, message: message, - trigger: 'blur', + trigger: "blur", type: type, validator: (ruleObj, value, callback) => { if ( !this.isReadonly(item) && - (value === '' || value === undefined || value === null) + (value === "" || value === undefined || value === null) ) { return callback(new Error(ruleObj.message)); } return callback(); - } + }, }; - if (item.type == 'mail') { - _rule.required = item.required; - return [ - _rule, - { - type: type, - message: message, - trigger: 'blur' - } - ]; + if (item.type == "mail") { + _rule.validator = undefined; + return _rule; } if (item.min) { _rule.min = item.min; - _rule.message = item.title + '至少' + item.min + '个字符!'; + _rule.message = item.title + "至少" + item.min + "个字符!"; } if (item.max) { return [ @@ -1090,90 +1189,91 @@ export default defineComponent({ { max: item.max, required: true, - message: item.title + '最多' + item.max + '个字符!', - trigger: 'blur' - } + message: item.title + "最多" + item.max + "个字符!", + trigger: "blur", + }, ]; } return _rule; } - if (item.type == 'radio') { + if (item.type == "radio") { return { required: item.required, - message: '请选择' + item.title, - trigger: 'change', - type: 'string' + message: "请选择" + item.title, + trigger: "change", + type: "string", }; } if ( - item.type == 'date' || - item.type == 'datetime' || - item.type == 'time' + item.type == "date" || + item.type == "datetime" || + item.type == "month"|| + item.type == "time" ) { return { required: true, - message: '请选择' + item.title, - trigger: 'change', - type: item.range ? 'array' : 'string', + message: "请选择" + item.title, + trigger: "change", + type: item.range ? "array" : "string", validator: (rule, val, callback) => { if (this.isReadonly(item)) return callback(); // 用户自定义的方法,如果返回了值,直接显示返回的值,验证不通过 if (!val || (item.range && !val.length)) { - return callback(new Error('请选择日期')); + return callback(new Error("请选择日期")); } return callback(); - } + }, }; } - if (item.type == 'cascader') { + if (item.type == "cascader") { return { - type: 'array', + type: "array", required: true, min: item.min || 1, // message: "请选择" + item.title, - trigger: 'change', + trigger: "change", validator: (rule, val, callback) => { if (this.isReadonly(item)) return callback(); // 用户自定义的方法,如果返回了值,直接显示返回的值,验证不通过 let _arr = this.formFields[item.field]; if (!_arr || !_arr.length) { - return callback(new Error('请选择' + item.title)); + return callback(new Error("请选择" + item.title)); } return callback(); - } + }, }; } if ( - ['select', 'selectList', 'checkbox', 'cascader'].indexOf(item.type) != + ["select", "selectList", "checkbox", "cascader"].indexOf(item.type) != -1 ) { let _rule = { - type: item.type == 'select' ? 'string' : 'array', + type: item.type == "select" ? "string" : "array", required: true, min: item.min || 1, - message: '请选择' + item.title, - trigger: 'change', + message: "请选择" + item.title, + trigger: "change", validator: (rule, value, callback) => { if (this.isReadonly(item)) return callback(); //2021.11.27修复多选没有提示的问题 - if (value == undefined || value === '') { + if (value == undefined || value === "") { return callback(new Error(rule.message)); } else if ( - (item.type == 'checkbox' || item.type == 'selectList') && + (item.type == "checkbox" || item.type == "selectList") && (!(value instanceof Array) || !value.length) ) { return callback(new Error(rule.message)); } return callback(); - } + }, }; if (_rule.max) { _rule.nax = item.max; - _rule.message = '最多只能选择' + item.max + '项'; + _rule.message = "最多只能选择" + item.max + "项"; } return _rule; } @@ -1185,7 +1285,7 @@ export default defineComponent({ } return ( date1.valueOf() < - (typeof date2 == 'number' ? date2 : new Date(date2).valueOf()) + (typeof date2 == "number" ? date2 : new Date(date2).valueOf()) ); }, getDateOptions(date, item) { @@ -1193,21 +1293,27 @@ export default defineComponent({ if ((!item.min && !item.max) || !date) { return false; } - if (item.min && item.min.indexOf(' ') == -1) { + if (item.min && item.min.indexOf(" ") == -1) { //不设置时分秒,后面会自动加上 08:00 - item.min = item.min + ' 00:00:000'; + item.min = item.min + " 00:00:000"; } return ( this.compareDate(date, item.min) || !this.compareDate(date, item.max) ); }, getDateFormat(item) { + if (item.type == "month") { + return "YYYY-MM"; + } + // if (item.type=='time') { + // return 'HH:mm:ss' + // } //见https://day.js.org/docs/zh-CN/display/format - return item.type == 'date' ? 'YYYY-MM-DD' : 'YYYY-MM-DD HH:mm:ss'; + return item.type == "date" ? "YYYY-MM-DD" : "YYYY-MM-DD HH:mm:ss"; }, dateRangeChange(val, item) { if (!val) { - this.$emit('update:formFields'); + this.$emit("update:formFields"); return; } item.onChange && item.onChange(val); @@ -1217,8 +1323,8 @@ export default defineComponent({ return; } item.onKeyPress($event); - } - } + }, + }, }); diff --git "a/Vol.Vue3\347\211\210\346\234\254/src/components/basic/VolFormDraggable/VolFormPreview.vue" "b/Vol.Vue3\347\211\210\346\234\254/src/components/basic/VolFormDraggable/VolFormPreview.vue" index cd9aaa831..7d8aa9393 100644 --- "a/Vol.Vue3\347\211\210\346\234\254/src/components/basic/VolFormDraggable/VolFormPreview.vue" +++ "b/Vol.Vue3\347\211\210\346\234\254/src/components/basic/VolFormDraggable/VolFormPreview.vue" @@ -22,7 +22,7 @@
- 提交 重置 下载代码
diff --git "a/Vol.Vue3\347\211\210\346\234\254/src/components/basic/VolHeader.vue" "b/Vol.Vue3\347\211\210\346\234\254/src/components/basic/VolHeader.vue" index 00d7fc72d..0b69882d4 100644 --- "a/Vol.Vue3\347\211\210\346\234\254/src/components/basic/VolHeader.vue" +++ "b/Vol.Vue3\347\211\210\346\234\254/src/components/basic/VolHeader.vue" @@ -2,7 +2,7 @@
- {{text}} + {{ title || text }}
@@ -17,11 +17,15 @@ export default { props: { icon: { type: String, - default: "" + default: '' + }, + title: { + type: String, + default: '' }, text: { type: String, - default: "未定义名称" + default: '未定义名称' } } }; @@ -52,9 +56,9 @@ export default { } .v-right-content { flex: 1; - text-align: right; + text-align: right; } - .h-icon{ + .h-icon { position: relative; top: 2px; margin-right: 3px; diff --git "a/Vol.Vue3\347\211\210\346\234\254/src/components/basic/VolTable.vue" "b/Vol.Vue3\347\211\210\346\234\254/src/components/basic/VolTable.vue" index 3425c3452..81eb1bff9 100644 --- "a/Vol.Vue3\347\211\210\346\234\254/src/components/basic/VolTable.vue" +++ "b/Vol.Vue3\347\211\210\346\234\254/src/components/basic/VolTable.vue" @@ -24,6 +24,7 @@ @row-dblclick="rowDbClick" @row-click="rowClick" @header-click="headerClick" + :highlight-current-row="highlightCurrentRow" ref="table" class="v-table" @sort-change="sortChange" @@ -35,6 +36,7 @@ :row-class-name="initIndex" :cell-style="getCellStyle" style="width: 100%" + :scrollbar-always-on="true" > + + + diff --git "a/Vol.Vue3\347\211\210\346\234\254/src/views/index/index.less" "b/Vol.Vue3\347\211\210\346\234\254/src/views/index/index.less" index aab66be1d..c872e9114 100644 --- "a/Vol.Vue3\347\211\210\346\234\254/src/views/index/index.less" +++ "b/Vol.Vue3\347\211\210\346\234\254/src/views/index/index.less" @@ -1,11 +1,14 @@ - - .vol-aside { height: 100%; position: absolute; float: left; overflow: hidden; } + +.vol-menu { + border: 0 !important; +} + .vol-aside .tac { text-align: left; } @@ -17,6 +20,7 @@ position: relative; line-height: 60px; } + .vol-aside .vol-menu { position: absolute; width: 100%; @@ -31,9 +35,11 @@ position: unset; width: 100% !important; } + .vol-aside .vol-menu ::v-deep(.is-horizontal) { display: none !important; } + .vol-aside .vol-menu ::v-deep(.is-vertical) { width: 2px; right: -1px; @@ -55,6 +61,7 @@ display: inline-block; border-bottom: 1px solid #eee; } + .vol-container .vol-path span { position: relative; margin-right: 10px; @@ -68,6 +75,7 @@ display: flex; border-bottom: 1px solid #eee; } + .vol-main { border-left: 1px solid #eee; position: absolute; @@ -78,25 +86,27 @@ overflow: auto; } - - .header { padding: 5px; } + .header img { height: 100%; margin-right: 25px; } + .header-info { padding-right: 20px; display: inline-block; // position: absolute; height: 100%; } + .header-info > div { float: left; height: 100%; } + .user-header { background: white; height: 52px; @@ -108,12 +118,15 @@ position: relative; border: 1px solid #dfdfdf; } -.project-name{ + +.project-name { line-height: 60px; padding: 0 50px 0 20px; color: #fff; - font-size: 14px; + font-size: 16px; + letter-spacing: 1px; } + .header-text { vertical-align: middle; height: 100%; @@ -125,76 +138,89 @@ line-height: 60px; letter-spacing: 1px; } + .vol-header .user { text-align: left; - padding: 12px; + padding: 0 12px; position: relative; - display: inline-block; height: 100%; + display: flex; + flex-direction: column; + // height: 60px; + justify-content: center; span:last-child { font-size: 12px; } } + .vol-header .settings { padding-top: 10px; color: #d4d2d2; } + .vol-header .user span { position: relative; } + .header-info:hover { cursor: pointer; } + .header-navigation { - cursor: pointer; - box-shadow: none; - border-bottom: 1px solid #eee; - height: 34px; - /* overflow: hidden; */ - line-height: 35px; - display: block; - margin: 0; - padding: 0; - outline: 0; - list-style: none; - position: relative; - z-index: 900; - font-weight: initial; - margin-top: -1px; + cursor: pointer; + box-shadow: none; + border-bottom: 1px solid #eee; + height: 34px; + /* overflow: hidden; */ + line-height: 35px; + display: block; + margin: 0; + padding: 0; + outline: 0; + list-style: none; + position: relative; + z-index: 900; + font-weight: initial; + margin-top: -1px; } -.el-tabs--border-card{ + +.el-tabs--border-card { border: none; } -.header-navigation ::v-deep(.el-tabs__item){ - height: 34px; - font-size: 14px; - line-height: 34px; - padding-bottom: 6px; - color: #525252 !important; - position: relative; - margin: 0 4px; - border: 1px solid #e2e2e2; - border-top-right-radius: 4px; - border-top-left-radius: 4px; - // border-bottom: 0px; + +.header-navigation ::v-deep(.el-tabs__item) { + height: 34px; + font-size: 14px; + line-height: 34px; + padding-bottom: 6px; + color: #525252 !important; + position: relative; + margin: 0 4px; + border: 1px solid #e2e2e2; + border-top-right-radius: 4px; + border-top-left-radius: 4px; + // border-bottom: 0px; } -.header-navigation ::v-deep(.el-tabs__item.is-active){ - color: #1a81ea !important; + +.header-navigation ::v-deep(.el-tabs__item.is-active) { + color: #1a81ea !important; } + .header-navigation ::v-deep(.el-tabs__nav-prev), .header-navigation ::v-deep(.el-tabs__nav-next) { - line-height: 35px; - padding-left: 4px; + line-height: 35px; + padding-left: 4px; } - .vol-header .user span:first-child { font-size: 15px; font-weight: bolder; } + .h-link { line-height: 59px; } + .h-link a { font-size: 14px; text-decoration: none; @@ -203,70 +229,76 @@ display: inline-block; } -img[src=""], +img[src=''], img:not([src]) { opacity: 0; } - - - - - //黑色 .vol-theme-dark { .header { background: #101010; } + .header-text { color: white; } + .vol-header { background-color: #272929; } + .h-link a:hover { background: #0c0202; } - a{ + + a { color: #f2f2f2; } + .h-link a:hover { color: #dfdfdf; } + .h-link .actived { border-bottom: 2px solid white; } + .h-link .actived a { color: white !important; } + .vol-header .user { color: #ececec; } + .vol-header .settings { color: #d4d2d2; } + .vol-aside .vol-menu { background: black; } - } - - .vol-theme-white .vol-aside ::v-deep(.vol-el-menu-item) { - background: black; + background: #2e333b; color: white; } + .vol-theme-dark .vol-aside ::v-deep(.vol-menu .el-submenu) { background: black; } -.vol-theme-dark .vol-aside ::v-deep(.vol-menu .el-submenu__title *) { + +.vol-theme-dark .vol-aside ::v-deep(.vol-menu .el-sub-menu__title *) { color: #d6d6d6; } + .vol-theme-dark .vol-aside ::v-deep(.vol-el-menu-item .el-menu-item) { color: #eee; background: #1f1f1f; } + .vol-theme-dark .vol-aside ::v-deep(.vol-el-menu-item .el-menu-item.is-active), .vol-theme-dark .vol-aside ::v-deep(.menu-item-lv1) { background: black; @@ -280,33 +312,37 @@ img:not([src]) { .vol-theme-dark .vol-aside ::v-deep(.vol-el-menu-item .el-menu-item:hover) { background: black; } -.vol-theme-dark .vol-aside ::v-deep(.el-submenu__title:hover) { + +.vol-theme-dark .vol-aside ::v-deep(.el-sub-menu__title) { background-color: black; } -.vol-theme-dark .vol-aside ::v-deep(.el-submenu__title:hover *) { - color: white; -} - - - +.vol-theme-dark .vol-aside ::v-deep(.el-sub-menu__title:hover) { + background-color: rgb(25, 25, 25); +} +.vol-theme-dark .vol-aside ::v-deep(.el-sub-menu__title:hover *) { + color: white; +} .vol-theme-red, .vol-theme-red2 { .vol-header { background-color: rgb(237, 64, 20); } + .header-text { color: #dcdfe6; } + .h-link a:hover { background: #d71212; } + .h-link .actived { border-bottom: 2px solid white; } - + .h-link a, .h-link .actived a, .vol-header .settings, @@ -324,21 +360,19 @@ img:not([src]) { background-color: rgb(237, 64, 20); } } + .vol-theme-red2 { .header { background-color: #a90000; } } - - - - .vol-theme-orange, .vol-theme-orange2 { .header-text { color: #dcdfe6; } + .vol-header { background-color: rgb(255, 153, 0); } @@ -346,6 +380,7 @@ img:not([src]) { .h-link a:hover { background: #c97901; } + .h-link .actived { border-bottom: 2px solid white; } @@ -356,29 +391,31 @@ img:not([src]) { .vol-header .user { color: white; } + .vol-header .header-text { color: #fbfbfb; } } + .vol-theme-orange { .header { background: rgb(255, 153, 0); } } + .vol-theme-orange2 { .header { background-color: rgb(232, 141, 5); } } - - //绿色 .vol-theme-green, .vol-theme-green2 { .header-text { color: #dcdfe6; } + .vol-header { background-color: rgb(25, 190, 107); } @@ -386,6 +423,7 @@ img:not([src]) { .h-link a:hover { background: #329103; } + .h-link .actived { border-bottom: 2px solid white; } @@ -401,26 +439,26 @@ img:not([src]) { color: #fbfbfb; } } + .vol-theme-green { .header { background: rgb(25, 190, 107); } } + .vol-theme-green2 { .header { background-color: rgb(1, 158, 79); } } - - - //蓝色 .vol-theme-blue, .vol-theme-blue2 { .header-text { color: #dcdfe6; } + .vol-header { background-color: rgb(45, 140, 240); } @@ -428,6 +466,7 @@ img:not([src]) { .h-link a:hover { background: #0170e3; } + .h-link .actived { border-bottom: 2px solid white; } @@ -438,31 +477,34 @@ img:not([src]) { .vol-header .user { color: white; } + .vol-header .header-text { color: #fbfbfb; } } + .vol-theme-blue { .header { background-color: rgb(45, 140, 240); } } + .vol-theme-blue2 { .header { background-color: rgb(0, 104, 214); } } - - //白色 .vol-theme-white { .header { background-color: #434956; } + .h-link a:hover { background: #eeeeee; } + .h-link a { color: #211f1f; } @@ -482,8 +524,43 @@ img:not([src]) { z-index: 900; font-weight: 400; } + + .vol-aside .vol-menu { + background: #353941; + } +} + +.vol-theme-white .project-name { + color: #505050; } +.vol-theme-white .vol-aside::v-deep(.vol-el-menu-item .el-menu-item.is-active), +.vol-theme-white .vol-aside ::v-deep(.menu-item-lv1) { + background: #353941; +} + +.vol-theme-white .vol-aside ::v-deep(.menu-item-lv1) { + background: #353941; + color: #d6d6d6; +} + +.vol-theme-white .vol-aside ::v-deep(.vol-el-menu-item .el-menu-item:hover) { + background: #353941; +} + +.vol-theme-white .vol-aside ::v-deep(.el-sub-menu__title) { + background-color: #353941; +} + +.vol-theme-white .vol-aside ::v-deep(.el-sub-menu__title:hover) { + background-color: rgb(47, 46, 46); +} + +.vol-theme-white .vol-aside ::v-deep(.el-sub-menu__title), +.vol-theme-white .vol-aside ::v-deep(.el-menu-item), +.vol-theme-white .vol-aside ::v-deep(.el-sub-menu__title:hover *) { + color: #bababa; +} // .vol-theme-white .vol-aside ::v-deep(.vol-el-menu-item) { // background: #363e4f; @@ -496,7 +573,7 @@ img:not([src]) { // .vol-theme-white .vol-aside ::v-deep(.vol-menu) { // background: #515a6e; // } -// .vol-theme-white .vol-aside ::v-deep(.vol-menu .el-submenu__title *), +// .vol-theme-white .vol-aside ::v-deep(.vol-menu .el-sub-menu__title *), // .vol-theme-white .vol-aside ::v-deep(.menu-item-lv1 *) { // color: #d6d6d6; // } @@ -511,10 +588,10 @@ img:not([src]) { // .vol-theme-white .vol-aside ::v-deep(.vol-el-menu-item .el-menu-item:hover) { // background: #6a758c; // } -// .vol-theme-white .vol-aside ::v-deep(.el-submenu__title:hover) { +// .vol-theme-white .vol-aside ::v-deep(.el-sub-menu__title:hover) { // background-color: #525865; // } -// .vol-theme-white .vol-aside ::v-deep(.el-submenu__title:hover *) { +// .vol-theme-white .vol-aside ::v-deep(.el-sub-menu__title:hover *) { // color: white; // } @@ -540,10 +617,10 @@ img:not([src]) { // background-color: #19be6b; // } - .theme-selector { - height: 100%; - padding-left: 16px; + height: 100%; + padding-left: 16px; + .item { cursor: pointer; width: 60px; @@ -556,13 +633,12 @@ img:not([src]) { } } - .collapse-menu { - font-size: 21px; - color: #fff; - line-height: 60px; - position: absolute; - top: 0; - right: 5px; - cursor: pointer; + font-size: 21px; + color: #fff; + line-height: 60px; + position: absolute; + top: 0; + right: 5px; + cursor: pointer; } diff --git "a/Vol.Vue3\347\211\210\346\234\254/src/views/signalR/Index.vue" "b/Vol.Vue3\347\211\210\346\234\254/src/views/signalR/Index.vue" index 92d93bf36..1a0a489f3 100644 --- "a/Vol.Vue3\347\211\210\346\234\254/src/views/signalR/Index.vue" +++ "b/Vol.Vue3\347\211\210\346\234\254/src/views/signalR/Index.vue" @@ -21,9 +21,8 @@
发送消息发送消息
diff --git "a/Vol.Vue3\347\211\210\346\234\254/src/views/system/Permission.vue" "b/Vol.Vue3\347\211\210\346\234\254/src/views/system/Permission.vue" index 81d077af3..c10b9b215 100644 --- "a/Vol.Vue3\347\211\210\346\234\254/src/views/system/Permission.vue" +++ "b/Vol.Vue3\347\211\210\346\234\254/src/views/system/Permission.vue" @@ -1,41 +1,58 @@ @@ -68,9 +67,6 @@ } }, async onLoad() { - uni.hideTabBar({ - animation: false - }) let _this = this; uni.getSystemInfo({ success: function(res) { diff --git a/vol.uniapp/pages/order/App_Appointment/App_Appointment.vue b/vol.uniapp/pages/order/App_Appointment/App_Appointment.vue index e6de01e3a..bb74f259c 100644 --- a/vol.uniapp/pages/order/App_Appointment/App_Appointment.vue +++ b/vol.uniapp/pages/order/App_Appointment/App_Appointment.vue @@ -1,13 +1,20 @@ @@ -81,9 +80,6 @@ }) }, onShow() { - uni.hideTabBar({ - animation: false - }) this.getUserInfo(); }, methods: { diff --git a/vol.uniapp/static/icons/home.png b/vol.uniapp/static/icons/home.png new file mode 100644 index 000000000..912befc31 Binary files /dev/null and b/vol.uniapp/static/icons/home.png differ diff --git a/vol.uniapp/static/icons/home_active.png b/vol.uniapp/static/icons/home_active.png new file mode 100644 index 000000000..9f7925047 Binary files /dev/null and b/vol.uniapp/static/icons/home_active.png differ diff --git a/vol.uniapp/static/icons/mail.png b/vol.uniapp/static/icons/mail.png new file mode 100644 index 000000000..c7663627f Binary files /dev/null and b/vol.uniapp/static/icons/mail.png differ diff --git a/vol.uniapp/static/icons/mail_active.png b/vol.uniapp/static/icons/mail_active.png new file mode 100644 index 000000000..afba7bc85 Binary files /dev/null and b/vol.uniapp/static/icons/mail_active.png differ diff --git a/vol.uniapp/static/icons/menu.png b/vol.uniapp/static/icons/menu.png new file mode 100644 index 000000000..d586b4d67 Binary files /dev/null and b/vol.uniapp/static/icons/menu.png differ diff --git a/vol.uniapp/static/icons/menu_active.png b/vol.uniapp/static/icons/menu_active.png new file mode 100644 index 000000000..b8dc35783 Binary files /dev/null and b/vol.uniapp/static/icons/menu_active.png differ diff --git a/vol.uniapp/static/icons/message.png b/vol.uniapp/static/icons/message.png new file mode 100644 index 000000000..3c57f919a Binary files /dev/null and b/vol.uniapp/static/icons/message.png differ diff --git a/vol.uniapp/static/icons/message_active.png b/vol.uniapp/static/icons/message_active.png new file mode 100644 index 000000000..ac0262b49 Binary files /dev/null and b/vol.uniapp/static/icons/message_active.png differ diff --git a/vol.uniapp/static/icons/stats.png b/vol.uniapp/static/icons/stats.png new file mode 100644 index 000000000..a15abcc3e Binary files /dev/null and b/vol.uniapp/static/icons/stats.png differ diff --git a/vol.uniapp/static/icons/stats1.png b/vol.uniapp/static/icons/stats1.png new file mode 100644 index 000000000..5c9931df4 Binary files /dev/null and b/vol.uniapp/static/icons/stats1.png differ diff --git a/vol.uniapp/static/icons/stats1_active.png b/vol.uniapp/static/icons/stats1_active.png new file mode 100644 index 000000000..6699d2ce5 Binary files /dev/null and b/vol.uniapp/static/icons/stats1_active.png differ diff --git a/vol.uniapp/static/icons/stats_active.png b/vol.uniapp/static/icons/stats_active.png new file mode 100644 index 000000000..507d270bb Binary files /dev/null and b/vol.uniapp/static/icons/stats_active.png differ diff --git a/vol.uniapp/static/icons/user.png b/vol.uniapp/static/icons/user.png new file mode 100644 index 000000000..9615cf188 Binary files /dev/null and b/vol.uniapp/static/icons/user.png differ diff --git a/vol.uniapp/static/icons/user_active.png b/vol.uniapp/static/icons/user_active.png new file mode 100644 index 000000000..e2a1b2039 Binary files /dev/null and b/vol.uniapp/static/icons/user_active.png differ diff --git "a/vol.uniapp/static/icons/\345\205\263\344\272\216\345\233\276\346\240\207.txt" "b/vol.uniapp/static/icons/\345\205\263\344\272\216\345\233\276\346\240\207.txt" new file mode 100644 index 000000000..3c25b0fe1 --- /dev/null +++ "b/vol.uniapp/static/icons/\345\205\263\344\272\216\345\233\276\346\240\207.txt" @@ -0,0 +1 @@ +底部图标库(需要授权的自行联系作者):https://www.iconfont.cn/search/index \ No newline at end of file diff --git "a/vol.uniapp/static/icons/\347\273\237\350\256\241\346\212\245\350\241\250 (1).png" "b/vol.uniapp/static/icons/\347\273\237\350\256\241\346\212\245\350\241\250 (1).png" new file mode 100644 index 000000000..efa6cd4f2 Binary files /dev/null and "b/vol.uniapp/static/icons/\347\273\237\350\256\241\346\212\245\350\241\250 (1).png" differ diff --git "a/vol.uniapp/static/icons/\347\273\237\350\256\241\346\212\245\350\241\250.png" "b/vol.uniapp/static/icons/\347\273\237\350\256\241\346\212\245\350\241\250.png" new file mode 100644 index 000000000..4be887987 Binary files /dev/null and "b/vol.uniapp/static/icons/\347\273\237\350\256\241\346\212\245\350\241\250.png" differ diff --git a/vol.uniapp/static/location-1.png b/vol.uniapp/static/location-1.png new file mode 100644 index 000000000..0ad0bb9c9 Binary files /dev/null and b/vol.uniapp/static/location-1.png differ diff --git a/vol.uniapp/static/location-2.png b/vol.uniapp/static/location-2.png new file mode 100644 index 000000000..a204435c9 Binary files /dev/null and b/vol.uniapp/static/location-2.png differ diff --git a/vol.uniapp/static/swiper1.png b/vol.uniapp/static/swiper1.png index 3def3bd8c..28cd3e005 100644 Binary files a/vol.uniapp/static/swiper1.png and b/vol.uniapp/static/swiper1.png differ diff --git a/vol.uniapp/util/common.js b/vol.uniapp/util/common.js index 36253853d..f6e668d98 100644 --- a/vol.uniapp/util/common.js +++ b/vol.uniapp/util/common.js @@ -19,6 +19,43 @@ export default { minute = fillZero(date.getMinutes()), second = fillZero(date.getSeconds()); return `${ _getDate(date)} ${hour}:${minute}:${second}`; + }, + //日期+多少天 + //日期-10天:this.base.date('2023-04-02',-10) + //当天日期-10天:this.base.date(this.base.getDate(),-10) + addDay(date, days) { + if (!days) { + return date; + } + date = new Date(new Date(date).setDate(new Date(date).getDate() + days)); + var year = date.getFullYear(); + var month = date.getMonth() + 1; + if (month < 10) { + month = "0" + month; + } + var day = date.getDate(); + if (day < 10) { + day = "0" + day; + } + return year + "-" + month + "-" + day; + }, + //日期+多少月,同上 + addMonth(date, m) { + date = new Date( + new Date(date).setMonth( + new Date(date).getMonth() + (m === undefined ? 1 : m) + ) + ); + var year = date.getFullYear(); + var month = date.getMonth() + 1; + if (month < 10) { + month = "0" + month; + } + var day = date.getDate(); + if (day < 10) { + day = "0" + day; + } + return year + "-" + month + "-" + day; }, isEmpty(value, checkArr) { if (checkArr) { diff --git "a/\345\274\200\345\217\221\347\211\210dev/Vue.NetCore/DB/mysql/mysql\350\241\250\347\273\223\346\236\204\344\270\216\350\241\250\346\225\260\346\215\256.sql" "b/\345\274\200\345\217\221\347\211\210dev/Vue.NetCore/DB/mysql/mysql\350\241\250\347\273\223\346\236\204\344\270\216\350\241\250\346\225\260\346\215\256.sql" index 173ad3ec0..6bfaf8145 100644 --- "a/\345\274\200\345\217\221\347\211\210dev/Vue.NetCore/DB/mysql/mysql\350\241\250\347\273\223\346\236\204\344\270\216\350\241\250\346\225\260\346\215\256.sql" +++ "b/\345\274\200\345\217\221\347\211\210dev/Vue.NetCore/DB/mysql/mysql\350\241\250\347\273\223\346\236\204\344\270\216\350\241\250\346\225\260\346\215\256.sql" @@ -1,22 +1,217 @@ /* Navicat Premium Data Transfer - Source Server : 120 + Source Server : 120.53.251.208 Source Server Type : MySQL Source Server Version : 50729 Source Host : 120.53.251.208:3306 - Source Schema : dev1 + Source Schema : 1105 Target Server Type : MySQL Target Server Version : 50729 File Encoding : 65001 - Date: 14/11/2020 14:59:17 + Date: 06/11/2022 00:36:34 */ SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; +-- ---------------------------- +-- Table structure for FormCollectionObject +-- ---------------------------- +DROP TABLE IF EXISTS `FormCollectionObject`; +CREATE TABLE `FormCollectionObject` ( + `FormCollectionId` char(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `FormId` char(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `Title` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL, + `FormData` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL, + `CreateDate` datetime(0) NULL DEFAULT NULL, + `CreateID` int(11) NULL DEFAULT NULL, + `Creator` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `Modifier` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `ModifyDate` datetime(0) NULL DEFAULT NULL, + `ModifyID` int(11) NULL DEFAULT NULL, + PRIMARY KEY (`FormCollectionId`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of FormCollectionObject +-- ---------------------------- +INSERT INTO `FormCollectionObject` VALUES ('00ac79fa-529b-45c1-ae98-1838d86f5e95', '0431a578-bfc9-407f-b95e-321c350f10cb', NULL, '{\"FormId\":\"0431a578-bfc9-407f-b95e-321c350f10cb\",\"field1640871905593\":\"1\",\"field1640871902689\":\"2022-04-21\",\"field1641207457900\":null,\"field1641207424694\":\"\"}', '2022-04-28 10:20:13', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('03c45672-2149-4399-9ecb-75644718f038', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"0\",\"field1641206170991\":\"非常满意\",\"field1641205647957\":\"非常满意\",\"field1641206608182\":null}', '2022-02-17 13:16:44', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('0513b2ca-6ccd-489d-9e83-ea3de7b01754', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"1\",\"field1641206170991\":\"十分满意\",\"field1641205647957\":\"十分满意\",\"field1641206608182\":\"d\"}', '2022-02-28 08:14:37', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('066ed25e-9f90-498f-bdec-05cb7881913e', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"1\",\"field1641206170991\":\"十分满意\",\"field1641205647957\":\"十分满意\",\"field1641206608182\":null}', '2022-01-26 11:50:22', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('06febfc3-28d0-497f-828d-a29d5acfa366', '0431a578-bfc9-407f-b95e-321c350f10cb', NULL, '{\"FormId\":\"0431a578-bfc9-407f-b95e-321c350f10cb\",\"field1640871905593\":\"1\",\"field1640871902689\":\"2022-03-08\",\"field1641207457900\":\"324\",\"field1641207424694\":\"\"}', '2022-03-16 16:51:55', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('0a71d04e-6840-48ba-a3de-817896e1e111', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"0\",\"field1641206170991\":\"非常满意\",\"field1641205647957\":\"非常满意\",\"field1641206608182\":null}', '2022-01-14 01:44:33', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('0b0d324e-916b-4246-9f7a-96f5f9435320', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"1\",\"field1641206170991\":\"十分满意\",\"field1641205647957\":\"十分满意\",\"field1641206608182\":\"22\"}', '2022-03-10 08:58:21', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('0b3ac6d2-35ac-42b0-84c5-bd4a22157dc2', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"0\",\"field1641206170991\":\"非常满意,十分满意\",\"field1641205647957\":\"非常满意\",\"field1650260639951\":\"1\",\"field1650260638189\":\"1\",\"field1650260647796\":\"1\",\"field1641206608182\":\"1\"}', '2022-05-14 23:18:19', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('0b5e3fb4-9c8b-407d-931e-bae4b8b34ce9', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"1\",\"field1641206170991\":\"非常满意\",\"field1641205647957\":\"非常满意\",\"field1650260639951\":\"11\",\"field1650260638189\":null,\"field1650260647796\":null,\"field1641206608182\":null}', '2022-06-30 16:41:37', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('1041a590-3d36-43c8-8b1d-fe6a7a7ca18f', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"0\",\"field1641206170991\":\"非常满意\",\"field1641205647957\":\"非常满意\",\"field1650260639951\":\"1\",\"field1650260638189\":\"1\",\"field1650260647796\":\"1\",\"field1641206608182\":\"1\"}', '2022-04-18 18:07:15', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('10e5c36a-c3b0-4d9f-83bc-c25bd97e2b82', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"1\",\"field1641206170991\":\"非常满意\",\"field1641205647957\":\"十分满意\",\"field1641206608182\":\"0\"}', '2022-02-12 14:12:00', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('15290644-4a33-4c16-8326-fd75974592a6', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"1\",\"field1641206170991\":\"十分满意\",\"field1641205647957\":\"十分满意\",\"field1650260639951\":\"7\",\"field1650260638189\":\"7777777777777777\",\"field1650260647796\":\"7777777777777777\",\"field1641206608182\":\"777\"}', '2022-06-06 16:31:29', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('1550cb90-47c6-43cd-8690-97999d72d92f', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"1\",\"field1641206170991\":\"十分满意\",\"field1641205647957\":\"十分满意\",\"field1650260639951\":null,\"field1650260638189\":null,\"field1650260647796\":null,\"field1641206608182\":null}', '2022-06-13 10:35:58', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('16d5ead2-e9ef-40fb-b275-832898b8cdfa', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"0\",\"field1641206170991\":\"非常满意\",\"field1641205647957\":\"非常满意\",\"field1641206608182\":\"fgdfghf gfh fg\"}', '2022-03-09 17:07:15', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('182125f4-f074-4b48-8ab1-e17aba5b82e9', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"0\",\"field1641206170991\":\"非常满意\",\"field1641205647957\":\"非常满意\",\"field1641206608182\":\"FAS\"}', '2022-02-08 17:18:44', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('1da99df3-fc0c-48e6-98db-e95daeeddd05', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"1\",\"field1641206170991\":\"非常满意\",\"field1641205647957\":\"非常满意\",\"field1650260639951\":\"4、输入框:\",\"field1650260638189\":\"5、输入框:\",\"field1650260647796\":\"6、输入框:\",\"field1641206608182\":\"7、其他意见:\"}', '2022-06-11 23:15:22', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('1f50d9ec-6be5-4410-b54b-e918ee0eb386', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"1\",\"field1641206170991\":\"非常满意\",\"field1641205647957\":\"相当满意\",\"field1641206608182\":null}', '2022-03-24 21:27:29', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('201e9a14-7ee7-4f68-919f-aac4059dfc2c', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"0\",\"field1641206170991\":\"非常满意\",\"field1641205647957\":\"非常满意\",\"field1641206608182\":null}', '2022-04-12 14:49:03', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('21323223-980d-4177-a144-210fd26f10bf', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"1\",\"field1641206170991\":\"非常满意\",\"field1641205647957\":\"非常满意\",\"field1641206608182\":\"fq\"}', '2022-03-25 19:45:47', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('248d00a3-73fd-4c44-84b2-142543c61155', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"0\",\"field1641206170991\":\"十分满意\",\"field1641205647957\":\"十分满意\",\"field1641206608182\":\"111\"}', '2022-02-17 14:01:27', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('25b4cd02-8602-4516-8394-b4025e9cc420', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"1\",\"field1641206170991\":\"非常满意\",\"field1641205647957\":\"非常满意\",\"field1650260639951\":\"1\",\"field1650260638189\":\"2\",\"field1650260647796\":\"3\",\"field1641206608182\":\"4\"}', '2022-04-27 10:09:39', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('29819b15-d57b-435a-a4aa-68458e60bc4d', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"1\",\"field1641206170991\":\"非常满意\",\"field1641205647957\":\"非常满意\",\"field1650260639951\":\"1\",\"field1650260638189\":\"2\",\"field1650260647796\":\"3\",\"field1641206608182\":\"\\n\"}', '2022-05-27 10:51:36', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('2cf3ecde-45f3-44e5-af2a-329a8e91e6da', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"0\",\"field1641206170991\":\"非常满意\",\"field1641205647957\":\"非常满意\",\"field1641206608182\":\"人\"}', '2022-03-27 22:52:18', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('2e10dfbc-5e80-466d-9e68-00f4c03b03cb', '0431a578-bfc9-407f-b95e-321c350f10cb', NULL, '{\"FormId\":\"0431a578-bfc9-407f-b95e-321c350f10cb\",\"field1640871905593\":\"1\",\"field1640871902689\":\"2022-01-07\",\"field1641207457900\":null,\"field1641207424694\":\"\"}', '2022-01-19 11:10:53', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('2e426da4-9bc2-4086-b910-55335252e286', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"0\",\"field1641206170991\":\"非常满意\",\"field1641205647957\":\"十分满意\",\"field1650260639951\":null,\"field1650260638189\":null,\"field1650260647796\":null,\"field1641206608182\":null}', '2022-07-07 17:15:39', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('2e71a231-ec58-4fe4-8101-f0d3405ac79d', '0431a578-bfc9-407f-b95e-321c350f10cb', NULL, '{\"FormId\":\"0431a578-bfc9-407f-b95e-321c350f10cb\",\"field1640871905593\":\"0\",\"field1640871902689\":\"2022-03-12\",\"field1641207457900\":null,\"field1641207424694\":\"\"}', '2022-03-12 07:21:12', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('2e860327-82a9-4e51-a451-f32295db062a', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"0\",\"field1641206170991\":\"十分满意\",\"field1641205647957\":\"十分满意\",\"field1650260639951\":\"5\",\"field1650260638189\":\"5\",\"field1650260647796\":\"5\",\"field1641206608182\":\"5\"}', '2022-05-11 09:59:04', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('2ea29d88-281d-449a-a200-645ca8c613d5', '0431a578-bfc9-407f-b95e-321c350f10cb', NULL, '{\"FormId\":\"0431a578-bfc9-407f-b95e-321c350f10cb\",\"field1640871905593\":\"1\",\"field1640871902689\":\"2017-05-04\",\"field1641207457900\":null,\"field1641207424694\":\"\"}', '2022-05-23 17:21:34', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('2f9fbaff-4c97-42e4-94b2-5fc2704b3a18', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"1\",\"field1641206170991\":\"十分满意\",\"field1641205647957\":\"相当满意\",\"field1641206608182\":null}', '2022-03-03 10:14:39', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('32c11483-0898-447b-baff-a5911e988925', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"1\",\"field1641206170991\":\"十分满意\",\"field1641205647957\":\"十分满意\",\"field1641206608182\":null}', '2022-02-05 11:32:07', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('33d6d570-c665-40b6-9035-c5f6a7fce01f', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"0\",\"field1641206170991\":\"非常满意\",\"field1641205647957\":\"非常满意\",\"field1641206608182\":\"11111111\"}', '2022-03-04 16:54:25', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('35cbe5b1-2498-4f13-b605-ee6f191d30a9', '0431a578-bfc9-407f-b95e-321c350f10cb', NULL, '{\"FormId\":\"0431a578-bfc9-407f-b95e-321c350f10cb\",\"field1640871905593\":\"1\",\"field1640871902689\":\"2022-06-08\",\"field1641207457900\":\"v v \",\"field1641207424694\":\"\"}', '2022-06-03 22:02:09', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('370e55db-746a-40cd-90f2-ff73b64eab00', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"1\",\"field1641206170991\":\"相当满意,比较满意\",\"field1641205647957\":\"非常满意\",\"field1650260639951\":null,\"field1650260638189\":null,\"field1650260647796\":null,\"field1641206608182\":null}', '2022-08-02 11:37:54', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('372a0316-bf48-4411-bef0-bdfc2deefeb8', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"1\",\"field1641206170991\":\"十分满意\",\"field1641205647957\":\"非常满意\",\"field1650260639951\":null,\"field1650260638189\":null,\"field1650260647796\":null,\"field1641206608182\":null}', '2022-06-22 16:39:37', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('3990f4bd-68ac-483c-bc85-38335e83b88a', '0431a578-bfc9-407f-b95e-321c350f10cb', NULL, '{\"FormId\":\"0431a578-bfc9-407f-b95e-321c350f10cb\",\"field1640871905593\":\"1\",\"field1640871902689\":\"2022-01-30\",\"field1641207457900\":\"的风景埃里克就\",\"field1641207424694\":\"\"}', '2022-01-22 21:16:06', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('3bb62484-b056-43a2-9b33-5764fc625ab9', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"1\",\"field1641206170991\":\"十分满意\",\"field1641205647957\":\"相当满意\",\"field1650260639951\":null,\"field1650260638189\":null,\"field1650260647796\":null,\"field1641206608182\":null}', '2022-06-16 10:45:34', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('3e7a21bf-dd68-4b6a-bfa9-b0aaa3e8d49f', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"0\",\"field1641206170991\":\"非常满意\",\"field1641205647957\":\"非常满意\",\"field1641206608182\":\"1231\"}', '2022-03-02 13:58:08', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('3f22aafc-214f-4374-a97c-2cdcce81e08a', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"1\",\"field1641206170991\":\"十分满意\",\"field1641205647957\":\"十分满意\",\"field1641206608182\":null}', '2022-03-31 16:19:16', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('4254e8ed-0e9f-4423-9f72-1007df7fceb1', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"1\",\"field1641206170991\":\"十分满意\",\"field1641205647957\":\"相当满意\",\"field1641206608182\":\"test\"}', '2022-01-19 23:07:20', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('448ef9bf-bb84-4e56-af5b-17032207fa23', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"0\",\"field1641206170991\":\"非常满意\",\"field1641205647957\":\"非常满意\",\"field1650260639951\":null,\"field1650260638189\":null,\"field1650260647796\":null,\"field1641206608182\":null}', '2022-08-01 10:56:59', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('4dcd83b4-5e1e-4299-9bc6-302313f98d5f', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"0\",\"field1641206170991\":\"非常满意\",\"field1641205647957\":\"十分满意\",\"field1641206608182\":null}', '2022-04-02 21:09:23', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('4f443026-4c8f-4c27-b6b7-20eeefab42a1', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"0\",\"field1641206170991\":\"非常满意\",\"field1641205647957\":\"非常满意\",\"field1641206608182\":\"sss\"}', '2022-02-25 17:30:06', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('51fcee24-aee5-4b55-9c30-f42082e8c61e', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"0\",\"field1641206170991\":\"非常满意,十分满意,相当满意,比较满意\",\"field1641205647957\":\"非常满意\",\"field1641206608182\":null}', '2022-01-13 08:56:25', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('52990452-b50e-497c-aa0f-5093214d690b', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"0\",\"field1641206170991\":\"非常满意\",\"field1641205647957\":\"十分满意\",\"field1641206608182\":\"22233\"}', '2022-03-10 08:58:37', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('530ce4a0-d399-49e3-b417-9dfdf2ac4da7', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"0\",\"field1641206170991\":\"十分满意,相当满意,比较满意\",\"field1641205647957\":\"非常满意\",\"field1641206608182\":null}', '2022-03-31 15:29:02', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('53e1f20a-6c35-48b5-9fca-d5c72f87ca76', '0431a578-bfc9-407f-b95e-321c350f10cb', NULL, '{\"FormId\":\"0431a578-bfc9-407f-b95e-321c350f10cb\",\"field1640871905593\":\"0\",\"field1640871902689\":\"2022-02-01\",\"field1641207457900\":null,\"field1641207424694\":\"\"}', '2022-02-08 23:58:30', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('55419def-5b55-4878-9575-430a9761ac93', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"1\",\"field1641206170991\":\"十分满意\",\"field1641205647957\":\"十分满意\",\"field1641206608182\":null}', '2022-01-15 18:38:30', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('58253f8c-66d5-4eeb-a952-c84841351fe4', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"1\",\"field1641206170991\":\"相当满意\",\"field1641205647957\":\"比较满意\",\"field1650260639951\":null,\"field1650260638189\":null,\"field1650260647796\":null,\"field1641206608182\":null}', '2022-05-23 17:21:10', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('584c592f-0fb5-4246-a57e-9f39e80f97da', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"0\",\"field1641206170991\":\"非常满意\",\"field1641205647957\":\"非常满意\",\"field1650260639951\":null,\"field1650260638189\":null,\"field1650260647796\":null,\"field1641206608182\":null}', '2022-05-06 12:03:23', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('5d26599c-2dbb-4261-9569-01472b8f525d', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"1\",\"field1641206170991\":\"十分满意\",\"field1641205647957\":\"十分满意\",\"field1641206608182\":null}', '2022-03-08 14:21:34', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('5dba775b-c261-46ec-bf4c-e3747e2939f8', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"1\",\"field1641206170991\":\"非常满意\",\"field1641205647957\":\"非常满意\",\"field1641206608182\":null}', '2022-02-17 18:17:30', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('5e8d3723-e5b4-41a3-b088-12266b98c523', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"1\",\"field1641206170991\":\"非常满意,十分满意,相当满意,比较满意\",\"field1641205647957\":\"十分满意\",\"field1641206608182\":\"111222333\"}', '2022-02-14 13:39:41', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('5fa2dc0b-a498-4434-9286-690f0df8a914', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"1\",\"field1641206170991\":\"十分满意\",\"field1641205647957\":\"十分满意\",\"field1641206608182\":null}', '2022-01-12 10:53:22', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('5fdcfca6-99b5-4477-b9d8-103e9787dc2f', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"0\",\"field1641206170991\":\"非常满意\",\"field1641205647957\":\"非常满意\",\"field1641206608182\":null}', '2022-08-13 10:04:15', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('61ca3776-d945-4b44-9242-a73a70b925c4', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"0\",\"field1641206170991\":\"十分满意\",\"field1641205647957\":\"十分满意\",\"field1641206608182\":\"qqqq\"}', '2022-02-20 21:11:02', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('63398fae-9ce4-4818-9103-68c095fc9b6b', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"1\",\"field1641206170991\":\"十分满意\",\"field1641205647957\":\"十分满意\",\"field1641206608182\":null}', '2022-04-06 21:57:17', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('63c4f091-b740-4995-a4e4-f46183cfcb49', '0431a578-bfc9-407f-b95e-321c350f10cb', NULL, '{\"FormId\":\"0431a578-bfc9-407f-b95e-321c350f10cb\",\"field1640871905593\":\"1\",\"field1640871902689\":\"2022-06-16\",\"field1641207457900\":\"哈哈哈哈\",\"field1641207424694\":\"\"}', '2022-06-22 17:26:14', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('650dc3f2-075b-490b-9382-bd813af0dcd9', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"1\",\"field1641206170991\":\"非常满意\",\"field1641205647957\":\"相当满意\",\"field1650260639951\":\"111\",\"field1650260638189\":\"111\",\"field1650260647796\":\"111\",\"field1641206608182\":\"111\"}', '2022-06-23 13:50:13', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('67941f5e-7f34-455b-9afd-280ec7f02240', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"0\",\"field1641206170991\":\"非常满意,十分满意\",\"field1641205647957\":\"非常满意\",\"field1641206608182\":\"请问\"}', '2022-01-22 17:22:18', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('6c8a34fc-f86a-4517-a792-2a941ceb2015', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"0\",\"field1641206170991\":\"非常满意\",\"field1641205647957\":\"十分满意\",\"field1650260639951\":\"sdad\",\"field1650260638189\":null,\"field1650260647796\":null,\"field1641206608182\":null}', '2022-04-28 17:07:37', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('6d36b685-e343-4e0f-b17d-ba39d83e3f72', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"1\",\"field1641206170991\":\"十分满意,非常满意\",\"field1641205647957\":\"非常满意\",\"field1641206608182\":\"111\"}', '2022-01-18 16:07:10', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('6e279655-a553-494b-80e9-ac1b14361cab', '0431a578-bfc9-407f-b95e-321c350f10cb', NULL, '{\"FormId\":\"0431a578-bfc9-407f-b95e-321c350f10cb\",\"field1640871905593\":\"1\",\"field1640871902689\":\"2022-07-07\",\"field1641207457900\":\"1334\",\"field1641207424694\":\"\"}', '2022-07-07 16:52:47', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('71ccce55-7dd4-4de7-962b-a0625ffaabf7', '0431a578-bfc9-407f-b95e-321c350f10cb', NULL, '{\"FormId\":\"0431a578-bfc9-407f-b95e-321c350f10cb\",\"field1640871905593\":\"1\",\"field1640871902689\":\"2022-02-03\",\"field1641207457900\":null,\"field1641207424694\":\"\"}', '2022-02-17 21:57:14', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('73eb6ca6-1159-4c95-a0cd-03789e158dd6', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"0\",\"field1641206170991\":\"十分满意\",\"field1641205647957\":\"十分满意\",\"field1650260639951\":null,\"field1650260638189\":null,\"field1650260647796\":null,\"field1641206608182\":null}', '2022-07-05 10:33:25', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('766e2ed2-8de0-4043-bc77-93533e4bb666', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"0\",\"field1641206170991\":\"十分满意\",\"field1641205647957\":\"十分满意\",\"field1641206608182\":\"5\"}', '2022-08-11 09:38:56', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('7835bd2f-46f4-4476-92fc-562343f5222c', '0431a578-bfc9-407f-b95e-321c350f10cb', NULL, '{\"FormId\":\"0431a578-bfc9-407f-b95e-321c350f10cb\",\"field1640871905593\":\"1\",\"field1640871902689\":\"2022-08-03\",\"field1641207457900\":\"test\",\"field1641207424694\":\"\"}', '2022-08-07 17:14:22', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('793a839a-4fb4-45a4-a274-c265529a08d7', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"1\",\"field1641206170991\":\"非常满意\",\"field1641205647957\":\"十分满意\",\"field1641206608182\":\"888\"}', '2022-04-06 21:57:39', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('7c2c5dde-1318-4382-848c-215a862bbc14', '0431a578-bfc9-407f-b95e-321c350f10cb', NULL, '{\"FormId\":\"0431a578-bfc9-407f-b95e-321c350f10cb\",\"field1640871905593\":\"1\",\"field1640871902689\":\"2022-01-01\",\"field1641207457900\":null,\"field1641207424694\":\"\"}', '2022-01-25 09:24:22', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('7cc358fe-d17c-49b0-a32d-4bde5b8d81ba', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"1\",\"field1641206170991\":\"十分满意,相当满意\",\"field1641205647957\":\"十分满意\",\"field1641206608182\":null}', '2022-08-03 15:58:01', 1, '超级管理员', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('7f7591b8-367e-4128-9e43-ef68e67edb5d', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"0\",\"field1641206170991\":\"非常满意\",\"field1641205647957\":\"非常满意\",\"field1641206608182\":null}', '2022-04-14 09:20:31', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('7fd4ea6c-d4ec-4cbe-a0dd-1ea77992ba88', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"0\",\"field1641206170991\":\"非常满意\",\"field1641205647957\":\"非常满意\",\"field1641206608182\":null}', '2022-02-22 17:22:06', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('814dbafb-dd62-438e-81c9-56e71cf49fa7', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"0\",\"field1641206170991\":\"非常满意\",\"field1641205647957\":\"十分满意\",\"field1650260639951\":null,\"field1650260638189\":null,\"field1650260647796\":null,\"field1641206608182\":null}', '2022-06-11 21:45:22', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('8245c9b8-a4c9-4db8-96e4-3cc471acbb79', '0431a578-bfc9-407f-b95e-321c350f10cb', NULL, '{\"FormId\":\"0431a578-bfc9-407f-b95e-321c350f10cb\",\"field1640871905593\":\"1\",\"field1640871902689\":\"2022-06-10\",\"field1641207457900\":\"C#越学越不会了\",\"field1641207424694\":\"\"}', '2022-06-05 16:40:26', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('84754fa9-d2d0-4ed3-b3f0-90157a0a78c6', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"1\",\"field1641206170991\":\"非常满意\",\"field1641205647957\":\"非常满意\",\"field1641206608182\":null}', '2022-03-02 14:23:40', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('848437d7-50be-40e7-88b4-de67ec402faa', '0431a578-bfc9-407f-b95e-321c350f10cb', NULL, '{\"FormId\":\"0431a578-bfc9-407f-b95e-321c350f10cb\",\"field1640871905593\":\"1\",\"field1640871902689\":\"2022-04-22\",\"field1641207457900\":null,\"field1641207424694\":\"\"}', '2022-04-13 13:25:29', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('8510b8ea-e415-48b7-adbd-c88c39fe8136', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"0\",\"field1641206170991\":\"十分满意\",\"field1641205647957\":\"非常满意\",\"field1641206608182\":\"XIONG GONG\"}', '2022-08-16 09:20:07', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('87166fa0-cfba-406c-b09e-2d94308a4905', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"1\",\"field1641206170991\":\"十分满意\",\"field1641205647957\":\"十分满意\",\"field1650260639951\":null,\"field1650260638189\":null,\"field1650260647796\":null,\"field1641206608182\":null}', '2022-06-02 21:48:04', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('87a68d22-74e1-498f-88cb-3462904eb0c7', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"1\",\"field1641206170991\":\"十分满意\",\"field1641205647957\":\"十分满意\",\"field1650260639951\":null,\"field1650260638189\":null,\"field1650260647796\":null,\"field1641206608182\":null}', '2022-05-08 01:46:27', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('8f754069-a619-4eb5-9261-aab4163b9e34', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"0\",\"field1641206170991\":\"非常满意\",\"field1641205647957\":\"非常满意\",\"field1641206608182\":null}', '2022-08-16 11:22:32', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('90513c4c-b639-4d0d-8c9d-fb69b77620f8', '0431a578-bfc9-407f-b95e-321c350f10cb', NULL, '{\"FormId\":\"0431a578-bfc9-407f-b95e-321c350f10cb\",\"field1640871905593\":\"1\",\"field1640871902689\":\"2022-01-05\",\"field1641207457900\":null,\"field1641207424694\":\"\"}', '2022-01-03 19:06:50', 1, '超级管理员', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('90f1525a-062c-4180-9a92-00bc802901c9', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"1\",\"field1641206170991\":\"比较满意,十分满意\",\"field1641205647957\":\"十分满意\",\"field1641206608182\":null}', '2022-01-21 15:24:27', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('9245c5de-c3d8-45a4-a8a0-a03975f15efc', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"0\",\"field1641206170991\":\"非常满意\",\"field1641205647957\":\"非常满意\",\"field1641206608182\":null}', '2022-02-28 20:04:37', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('956d43cc-c96a-4945-a029-079b0f99508f', '0431a578-bfc9-407f-b95e-321c350f10cb', NULL, '{\"FormId\":\"0431a578-bfc9-407f-b95e-321c350f10cb\",\"field1640871905593\":\"1\",\"field1640871902689\":\"1999-06-01\",\"field1641207457900\":null,\"field1641207424694\":\"\"}', '2022-04-20 11:40:36', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('96348cf2-095e-4a37-8ab4-d0072b780c55', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"1\",\"field1641206170991\":\"十分满意\",\"field1641205647957\":\"十分满意\",\"field1641206608182\":\"1\"}', '2022-04-12 15:11:51', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('9c1226c7-5694-4d52-8d2f-23ae5ade8b92', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"0\",\"field1641206170991\":\"非常满意\",\"field1641205647957\":\"非常满意\",\"field1650260639951\":\"12\",\"field1650260638189\":\"34\",\"field1650260647796\":\"455\",\"field1641206608182\":\"66\"}', '2022-04-28 15:39:06', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('a37c1956-ddc0-457b-8f0a-93cdc44c257d', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"1\",\"field1641206170991\":\"十分满意,相当满意\",\"field1641205647957\":\"相当满意\",\"field1641206608182\":\"没有意见\"}', '2022-01-03 19:05:46', 1, '超级管理员', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('a507f976-af08-4e7a-9885-9a04a97592df', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"1\",\"field1641206170991\":\"十分满意\",\"field1641205647957\":\"十分满意\",\"field1650260639951\":null,\"field1650260638189\":null,\"field1650260647796\":null,\"field1641206608182\":null}', '2022-04-18 14:32:03', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('a5c0e586-c7ad-43f4-8629-aa9e1c672c42', '0431a578-bfc9-407f-b95e-321c350f10cb', NULL, '{\"FormId\":\"0431a578-bfc9-407f-b95e-321c350f10cb\",\"field1640871905593\":\"1\",\"field1640871902689\":\"2022-01-19\",\"field1641207457900\":null,\"field1641207424694\":\"\"}', '2022-01-21 13:49:39', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('a60cfa8b-cdb0-47f9-9cee-570c3150e055', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"0\",\"field1641206170991\":\"非常满意,十分满意,相当满意,比较满意\",\"field1641205647957\":\"非常满意\",\"field1641206608182\":null}', '2022-01-16 08:53:12', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('a7ac9b0d-f866-4db0-b499-59e3d36d8131', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"1\",\"field1641206170991\":\"十分满意,相当满意\",\"field1641205647957\":\"十分满意\",\"field1650260639951\":\"1\",\"field1650260638189\":\"1\",\"field1650260647796\":\"1\",\"field1641206608182\":\"1\"}', '2022-07-19 16:00:56', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('a8adcb8f-3238-41f3-b3bd-28197a5bc230', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"0\",\"field1641206170991\":\"非常满意\",\"field1641205647957\":\"非常满意\",\"field1641206608182\":null}', '2022-01-18 14:13:54', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('a92575b4-9889-42ed-9677-5a648a429970', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"1\",\"field1641206170991\":\"非常满意\",\"field1641205647957\":\"非常满意\",\"field1650260639951\":\"1\",\"field1650260638189\":\"1\",\"field1650260647796\":\"1\",\"field1641206608182\":\"1\"}', '2022-04-26 10:09:18', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('ad25a88c-54c6-4164-8f8a-9d54d6489b42', '0431a578-bfc9-407f-b95e-321c350f10cb', NULL, '{\"FormId\":\"0431a578-bfc9-407f-b95e-321c350f10cb\",\"field1640871905593\":\"1\",\"field1640871902689\":\"2022-02-01\",\"field1641207457900\":null,\"field1641207424694\":\"\"}', '2022-02-15 13:35:39', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('ae89f005-a7a2-43cc-9786-99301569f78e', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"0\",\"field1641206170991\":\"非常满意\",\"field1641205647957\":\"非常满意\",\"field1650260639951\":\"sdf\",\"field1650260638189\":\"dsf\",\"field1650260647796\":\"sdf\",\"field1641206608182\":\"dsf\"}', '2022-06-15 15:28:11', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('ae8f2272-1311-4a2d-a58c-ea2b6fa36578', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"0\",\"field1641206170991\":\"非常满意\",\"field1641205647957\":\"非常满意\",\"field1641206608182\":\"0000\"}', '2022-03-16 15:53:31', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('afe8243d-a936-443f-864c-7b5278f26167', '0431a578-bfc9-407f-b95e-321c350f10cb', NULL, '{\"FormId\":\"0431a578-bfc9-407f-b95e-321c350f10cb\",\"field1640871905593\":\"0\",\"field1640871902689\":\"2018-01-03\",\"field1641207457900\":\"这个低代码会有很多坑 实际用的时候 发现很痛苦\\n小项目会很方便\",\"field1641207424694\":\"\"}', '2022-01-14 15:53:14', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('b2097447-69bb-454f-809e-d47ad90301d9', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"1\",\"field1641206170991\":\"十分满意\",\"field1641205647957\":\"十分满意\",\"field1641206608182\":null}', '2022-04-09 21:39:04', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('b5fab3ae-ec1d-4a51-a9b5-041104b957d8', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"0\",\"field1641206170991\":\"非常满意\",\"field1641205647957\":\"非常满意\",\"field1641206608182\":null}', '2022-03-09 13:47:41', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('bf26c23b-88ed-404b-98f1-e081c4d92f54', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"1\",\"field1641206170991\":\"非常满意,十分满意,相当满意,比较满意\",\"field1641205647957\":\"非常满意\",\"field1641206608182\":null}', '2022-08-07 17:14:14', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('c0dbcff2-b8f6-4c3b-93ec-59ee17dbab6f', '0431a578-bfc9-407f-b95e-321c350f10cb', NULL, '{\"FormId\":\"0431a578-bfc9-407f-b95e-321c350f10cb\",\"field1640871905593\":\"1\",\"field1640871902689\":\"2017-03-24\",\"field1641207457900\":\"支持博主,希望网站越做越完善\",\"field1641207424694\":\"\"}', '2022-05-22 07:46:53', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('c1c56c53-785c-4641-a581-228326dcf491', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"1\",\"field1641206170991\":\"十分满意\",\"field1641205647957\":\"十分满意\",\"field1641206608182\":null}', '2022-04-01 10:25:59', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('c217f308-55ed-431f-8de3-8a41c197c336', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"1\",\"field1641206170991\":\"相当满意\",\"field1641205647957\":\"相当满意\",\"field1650260639951\":null,\"field1650260638189\":null,\"field1650260647796\":null,\"field1641206608182\":null}', '2022-04-18 14:32:43', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('c768c884-d674-44be-a003-aae62eeff90c', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"1\",\"field1641206170991\":\"十分满意,相当满意\",\"field1641205647957\":\"十分满意\",\"field1641206608182\":\"3333\"}', '2022-03-18 12:01:53', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('cafcb37f-b6e8-46a1-b786-78a38a76c40b', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"1\",\"field1641206170991\":\"十分满意\",\"field1641205647957\":\"十分满意\",\"field1650260639951\":null,\"field1650260638189\":null,\"field1650260647796\":null,\"field1641206608182\":null}', '2022-07-19 23:39:56', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('cb7e2576-3b88-48bf-9202-3f77a9f915b5', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"0\",\"field1641206170991\":\"非常满意\",\"field1641205647957\":\"相当满意\",\"field1650260639951\":null,\"field1650260638189\":null,\"field1650260647796\":null,\"field1641206608182\":null}', '2022-07-25 22:24:50', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('cccc519c-c448-4292-85d1-6a0ac2828fd9', '0431a578-bfc9-407f-b95e-321c350f10cb', NULL, '{\"FormId\":\"0431a578-bfc9-407f-b95e-321c350f10cb\",\"field1640871905593\":\"1\",\"field1640871902689\":\"2022-01-04\",\"field1641207457900\":\"123456\",\"field1641207424694\":\"\"}', '2022-01-03 19:09:53', 1, '超级管理员', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('cce9c0a6-8850-43a1-aca9-b7e6321dceef', '0431a578-bfc9-407f-b95e-321c350f10cb', NULL, '{\"FormId\":\"0431a578-bfc9-407f-b95e-321c350f10cb\",\"field1640871905593\":\"0\",\"field1640871902689\":\"2022-01-16\",\"field1641207457900\":\"科技大道就看见\",\"field1641207424694\":\"\"}', '2022-01-16 16:21:36', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('cde313b5-1fa1-4c43-9765-df1d66f19249', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"0\",\"field1641206170991\":\"非常满意\",\"field1641205647957\":\"十分满意\",\"field1650260639951\":\"111\",\"field1650260638189\":\"222\",\"field1650260647796\":\"333\",\"field1641206608182\":\"44\"}', '2022-05-07 15:33:29', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('ce238aa2-5355-463c-8341-15e08fce098b', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"1\",\"field1641206170991\":\"十分满意\",\"field1641205647957\":\"十分满意\",\"field1641206608182\":\"78999\"}', '2022-04-12 18:53:36', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('cfa58a5a-2b94-42a2-8825-acd558983a2b', '0431a578-bfc9-407f-b95e-321c350f10cb', NULL, '{\"FormId\":\"0431a578-bfc9-407f-b95e-321c350f10cb\",\"field1640871905593\":\"1\",\"field1640871902689\":\"2022-04-27\",\"field1641207457900\":null,\"field1641207424694\":\"\"}', '2022-05-10 01:27:35', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('d01d07e6-b8dc-49de-b6a9-9b54333af37a', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"0\",\"field1641206170991\":\"非常满意\",\"field1641205647957\":\"非常满意\",\"field1641206608182\":\"444\"}', '2022-03-23 14:43:19', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('d01d544c-d260-4ee9-9929-b18daba2b880', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"1\",\"field1641206170991\":\"非常满意\",\"field1641205647957\":\"非常满意\",\"field1650260639951\":\"456\",\"field1650260638189\":\"456\",\"field1650260647796\":\"456\",\"field1641206608182\":\"456\"}', '2022-06-29 13:21:54', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('d3a90649-7dbe-4f27-ad73-2a201bd2b7fa', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"0\",\"field1641206170991\":\"非常满意\",\"field1641205647957\":\"非常满意\",\"field1641206608182\":null}', '2022-04-13 13:22:36', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('d7833a92-c0d9-4a90-b70f-375b980258c4', '0431a578-bfc9-407f-b95e-321c350f10cb', NULL, '{\"FormId\":\"0431a578-bfc9-407f-b95e-321c350f10cb\",\"field1640871905593\":\"0\",\"field1640871902689\":\"2022-01-01\",\"field1641207457900\":null,\"field1641207424694\":\"\"}', '2022-01-16 17:00:28', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('d8c84159-280d-4280-a374-63f4fecc9b8c', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"1\",\"field1641206170991\":\"十分满意\",\"field1641205647957\":\"十分满意\",\"field1641206608182\":null}', '2022-03-12 07:21:22', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('d9d8dca9-8899-4636-886b-929d91de6cf9', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"1\",\"field1641206170991\":\"十分满意\",\"field1641205647957\":\"十分满意\",\"field1650260639951\":\"e\",\"field1650260638189\":\"we\",\"field1650260647796\":\"ew\",\"field1641206608182\":\"we\"}', '2022-05-31 15:45:49', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('da47770c-9067-459b-805c-e7081480c9d4', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"1\",\"field1641206170991\":\"十分满意\",\"field1641205647957\":\"非常满意\",\"field1650260639951\":null,\"field1650260638189\":null,\"field1650260647796\":null,\"field1641206608182\":null}', '2022-06-09 12:22:22', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('dc0319f2-3b02-465e-9c94-d32c19cc83ba', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"1\",\"field1641206170991\":\"十分满意\",\"field1641205647957\":\"十分满意\",\"field1650260639951\":null,\"field1650260638189\":null,\"field1650260647796\":null,\"field1641206608182\":null}', '2022-07-01 09:24:58', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('dc4af657-1e89-4807-baf9-92693aff0762', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"1\",\"field1641206170991\":\"比较满意,相当满意,十分满意\",\"field1641205647957\":\"相当满意\",\"field1650260639951\":null,\"field1650260638189\":null,\"field1650260647796\":null,\"field1641206608182\":null}', '2022-06-02 09:42:43', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('dc827875-7c48-4092-8299-615e60897dd6', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"1\",\"field1641206170991\":\"十分满意\",\"field1641205647957\":\"非常满意\",\"field1641206608182\":null}', '2022-08-07 17:13:45', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('dd6b3150-808e-4ca9-b936-66b12e88173b', '0431a578-bfc9-407f-b95e-321c350f10cb', NULL, '{\"FormId\":\"0431a578-bfc9-407f-b95e-321c350f10cb\",\"field1640871905593\":\"0\",\"field1640871902689\":\"2022-03-31\",\"field1641207457900\":null,\"field1641207424694\":\"\"}', '2022-04-26 10:08:55', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('dedb01d1-b168-4ef7-a9f8-e2fc809821d7', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"1\",\"field1641206170991\":\"非常满意,十分满意,比较满意,相当满意\",\"field1641205647957\":\"非常满意\",\"field1641206608182\":null}', '2022-02-22 09:11:27', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('dfd6a79c-5ee7-4362-a7b5-a7ee556dcb4f', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"0\",\"field1641206170991\":\"非常满意\",\"field1641205647957\":\"非常满意\",\"field1641206608182\":\"36\"}', '2022-01-14 15:10:33', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('e003b80d-a262-49f5-86f5-7a9be8cfebb8', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"0\",\"field1641206170991\":\"非常满意\",\"field1641205647957\":\"非常满意\",\"field1641206608182\":\";ppp\"}', '2022-01-18 22:46:35', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('e3eaeafe-19cc-4335-b05a-ba1723532a94', '0431a578-bfc9-407f-b95e-321c350f10cb', NULL, '{\"FormId\":\"0431a578-bfc9-407f-b95e-321c350f10cb\",\"field1640871905593\":\"1\",\"field1640871902689\":\"2022-06-15\",\"field1641207457900\":\"3333\",\"field1641207424694\":\"\"}', '2022-06-22 17:25:54', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('e4a9051a-acd6-4c9f-b484-6ade9641b97a', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"1\",\"field1641206170991\":\"非常满意\",\"field1641205647957\":\"非常满意\",\"field1641206608182\":\"我的测试\"}', '2022-03-23 09:55:50', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('e6e08ec4-5b55-4b3f-8f1f-b399817ddab6', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"0\",\"field1641206170991\":\"非常满意\",\"field1641205647957\":\"十分满意\",\"field1641206608182\":\"2323\"}', '2022-03-07 13:02:29', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('e75f8825-5934-4562-9846-a938e105a6aa', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"0\",\"field1641206170991\":\"十分满意,相当满意\",\"field1641205647957\":\"十分满意\",\"field1641206608182\":null}', '2022-04-18 11:56:55', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('e894b567-e6e0-4fb9-9eac-6b90557b4c06', '0431a578-bfc9-407f-b95e-321c350f10cb', NULL, '{\"FormId\":\"0431a578-bfc9-407f-b95e-321c350f10cb\",\"field1640871905593\":\"1\",\"field1640871902689\":\"2022-03-10\",\"field1641207457900\":\"dddd\",\"field1641207424694\":\"\"}', '2022-03-18 20:23:02', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('e8f5cdee-4b67-4191-bb48-0c9968fa49d4', '0431a578-bfc9-407f-b95e-321c350f10cb', NULL, '{\"FormId\":\"0431a578-bfc9-407f-b95e-321c350f10cb\",\"field1640871905593\":\"1\",\"field1640871902689\":\"2022-04-13\",\"field1641207457900\":\"432\",\"field1641207424694\":\"\"}', '2022-04-13 09:04:19', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('e913389c-e11a-4675-b8eb-a25c75086e37', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"1\",\"field1641206170991\":\"非常满意,十分满意,相当满意\",\"field1641205647957\":\"非常满意\",\"field1641206608182\":\"1111\"}', '2022-01-03 19:09:45', 1, '超级管理员', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('e988f446-00df-4d43-9682-eba419c9f18b', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"1\",\"field1641206170991\":\"比较满意\",\"field1641205647957\":\"比较满意\",\"field1641206608182\":\"滚滚滚\"}', '2022-01-16 16:17:55', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('ed4863d4-6bf7-4f4c-bd6b-b984881d6dd1', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"0\",\"field1641206170991\":\"非常满意\",\"field1641205647957\":\"非常满意\",\"field1641206608182\":\"123\"}', '2022-03-16 14:36:51', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('edfac119-20ec-494f-b92e-b9f340ef7093', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"1\",\"field1641206170991\":\"十分满意\",\"field1641205647957\":\"非常满意\",\"field1641206608182\":null}', '2022-01-13 14:49:38', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('ef16549c-59b7-425d-b32e-424882eeb92f', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"1\",\"field1641206170991\":\"非常满意,十分满意,相当满意\",\"field1641205647957\":\"十分满意\",\"field1641206608182\":\"123\"}', '2022-04-01 15:27:07', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('f011feed-4cff-4f9d-a878-a38a8afd539c', '0431a578-bfc9-407f-b95e-321c350f10cb', NULL, '{\"FormId\":\"0431a578-bfc9-407f-b95e-321c350f10cb\",\"field1640871905593\":\"0\",\"field1640871902689\":\"2022-08-19\",\"field1641207457900\":null,\"field1641207424694\":\"\"}', '2022-08-03 15:56:21', 1, '超级管理员', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('f549faa0-c6e0-431e-a029-a0ba7767386b', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"0\",\"field1641206170991\":\"十分满意\",\"field1641205647957\":\"十分满意\",\"field1641206608182\":\"1\"}', '2022-02-16 11:45:15', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('f6cbc763-5cd0-4774-be84-06e7a9872278', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"1\",\"field1641206170991\":\"十分满意,相当满意\",\"field1641205647957\":\"非常满意\",\"field1641206608182\":null}', '2022-01-12 11:32:06', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('f6f2586f-2249-4bca-928f-0b513deab6e2', '0431a578-bfc9-407f-b95e-321c350f10cb', NULL, '{\"FormId\":\"0431a578-bfc9-407f-b95e-321c350f10cb\",\"field1640871905593\":\"1\",\"field1640871902689\":\"2022-08-09\",\"field1641207457900\":null,\"field1641207424694\":\"\"}', '2022-08-15 13:21:19', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('f8d30ab4-8d7f-42ac-899c-dac1c5f61619', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"0\",\"field1641206170991\":\"非常满意,十分满意,相当满意,比较满意\",\"field1641205647957\":\"十分满意\",\"field1641206608182\":\"34343\"}', '2022-04-14 21:07:46', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('fa69e0b6-4bbd-4ac0-a691-cbbb2905f589', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"0\",\"field1641206170991\":\"非常满意\",\"field1641205647957\":\"非常满意\",\"field1641206608182\":\"111\"}', '2022-03-04 16:53:11', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('fbb50231-efa5-46c2-a3bb-9ce2279de293', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"0\",\"field1641206170991\":\"非常满意\",\"field1641205647957\":\"非常满意\",\"field1650260639951\":\"e\",\"field1650260638189\":\"qew\",\"field1650260647796\":\"eqw\",\"field1641206608182\":\"qwe\"}', '2022-07-14 14:52:12', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('fced572f-b387-46a4-9afc-c70c4931f3cf', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"0\",\"field1641206170991\":\"相当满意\",\"field1641205647957\":\"十分满意\",\"field1650260639951\":\"1\",\"field1650260638189\":\"1\",\"field1650260647796\":\"1\",\"field1641206608182\":\"1\"}', '2022-08-01 12:47:47', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('fd8d649a-ce7f-4801-89dc-0a7e3556468c', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"1\",\"field1641206170991\":\"十分满意\",\"field1641205647957\":\"十分满意\",\"field1650260639951\":\"AAA\",\"field1650260638189\":\"AAA\",\"field1650260647796\":\"AAA\",\"field1641206608182\":null}', '2022-06-12 17:24:32', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('fe3cc538-3bf7-4c9c-a6cf-9c96386d17e5', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"1\",\"field1641206170991\":\"十分满意,相当满意\",\"field1641205647957\":\"相当满意\",\"field1650260639951\":null,\"field1650260638189\":null,\"field1650260647796\":null,\"field1641206608182\":null}', '2022-05-02 14:30:57', 3362, '演示帐号', NULL, NULL, NULL); +INSERT INTO `FormCollectionObject` VALUES ('ff2b479b-66ca-4ad4-9272-6671d465d9d3', '8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', NULL, '{\"FormId\":\"8e6d9e7c-16c2-48b8-9d67-f1a1a19453da\",\"field1641205615398\":\"1\",\"field1641206170991\":\"十分满意\",\"field1641205647957\":\"十分满意\",\"field1650260639951\":null,\"field1650260638189\":null,\"field1650260647796\":null,\"field1641206608182\":null}', '2022-04-23 22:57:26', 3362, '演示帐号', NULL, NULL, NULL); + +-- ---------------------------- +-- Table structure for FormDesignOptions +-- ---------------------------- +DROP TABLE IF EXISTS `FormDesignOptions`; +CREATE TABLE `FormDesignOptions` ( + `FormId` char(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `Title` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `DaraggeOptions` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL, + `FormOptions` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL, + `FormConfig` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL, + `FormFields` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL, + `TableConfig` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL, + `CreateDate` datetime(0) NULL DEFAULT NULL, + `CreateID` int(11) NULL DEFAULT NULL, + `Creator` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `Modifier` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `ModifyDate` datetime(0) NULL DEFAULT NULL, + `ModifyID` int(11) NULL DEFAULT NULL, + PRIMARY KEY (`FormId`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of FormDesignOptions +-- ---------------------------- +INSERT INTO `FormDesignOptions` VALUES ('0431a578-bfc9-407f-b95e-321c350f10cb', '2021开发语言使用调查', '[{\"id\":5,\"name\":\"多种语言开发\",\"type\":\"radio\",\"icon\":\"el-icon-aim\",\"value\":0,\"data\":[{\"key\":\"0\",\"value\":\"否\"},{\"key\":\"2\",\"value\":\"xx11\"},{\"key\":\"1\",\"value\":\"是\"}],\"key\":\"enable\",\"field\":\"field1640871905593\",\"width\":100,\"readonly\":false,\"required\":true,\"values\":[\"否\"]},{\"id\":3,\"name\":\"从什么时候开始做开发?\",\"type\":\"date\",\"icon\":\"el-icon-date\",\"value\":null,\"field\":\"field1640871902689\",\"width\":100,\"readonly\":false,\"required\":true},{\"id\":2,\"name\":\"说点什么\",\"type\":\"textarea\",\"value\":\"\",\"icon\":\"el-icon-document-copy\",\"field\":\"field1641207457900\",\"width\":100,\"readonly\":false,\"required\":false},{\"id\":9,\"name\":\"图片上传\",\"type\":\"img\",\"url\":\"\",\"maxSize\":3,\"fileInfo\":[],\"multiple\":false,\"autoUpload\":false,\"maxFile\":5,\"icon\":\"el-icon-picture-outline\",\"field\":\"field1641207424694\",\"width\":100,\"readonly\":false,\"required\":false}]', '{\"fields\":{\"field1640871905593\":[],\"field1640871902689\":null,\"field1641207457900\":null,\"field1641207424694\":null},\"formOptions\":[[{\"field\":\"field1640871905593\",\"title\":\"多种语言开发\",\"type\":\"radio\",\"required\":true,\"readonly\":false,\"colSize\":12,\"data\":[{\"key\":\"0\",\"value\":\"否\"},{\"key\":\"2\",\"value\":\"xx11\"},{\"key\":\"1\",\"value\":\"是\"}],\"dataKey\":\"enable\"}],[{\"field\":\"field1640871902689\",\"title\":\"从什么时候开始做开发?\",\"type\":\"date\",\"required\":true,\"readonly\":false,\"colSize\":12}],[{\"field\":\"field1641207457900\",\"title\":\"说点什么\",\"type\":\"textarea\",\"required\":false,\"readonly\":false,\"colSize\":12}],[{\"field\":\"field1641207424694\",\"title\":\"图片上传\",\"type\":\"img\",\"required\":false,\"readonly\":false,\"colSize\":12,\"maxSize\":3,\"fileInfo\":[],\"multiple\":false,\"autoUpload\":false,\"maxFile\":5,\"url\":\"\"}]],\"tables\":[],\"tabs\":[]}', '[{\"field\":\"field1640871905593\",\"title\":\"多种语言开发\",\"type\":\"radio\",\"required\":true,\"readonly\":false,\"colSize\":12,\"data\":[{\"key\":\"0\",\"value\":\"否\"},{\"key\":\"2\",\"value\":\"xx11\"},{\"key\":\"1\",\"value\":\"是\"}],\"dataKey\":\"enable\"},{\"field\":\"field1640871902689\",\"title\":\"从什么时候开始做开发?\",\"type\":\"date\",\"required\":true,\"readonly\":false,\"colSize\":12},{\"field\":\"field1641207457900\",\"title\":\"说点什么\",\"type\":\"textarea\",\"required\":false,\"readonly\":false,\"colSize\":12},{\"field\":\"field1641207424694\",\"title\":\"图片上传\",\"type\":\"img\",\"required\":false,\"readonly\":false,\"colSize\":12,\"maxSize\":3,\"fileInfo\":[],\"multiple\":false,\"autoUpload\":false,\"maxFile\":5,\"url\":\"\"}]', NULL, '[]', '2021-12-29 23:39:22', 1, '超级管理员', '超级管理员', '2022-08-03 15:58:37', 1); +INSERT INTO `FormDesignOptions` VALUES ('8e6d9e7c-16c2-48b8-9d67-f1a1a19453da', '2021双减政策调查', '[{\"id\":5,\"name\":\"您的孩子放学后是否有学校布置的书面作业?\",\"type\":\"radio\",\"icon\":\"el-icon-aim\",\"value\":0,\"data\":[{\"key\":\"0\",\"value\":\"否\"},{\"key\":\"2\",\"value\":\"xx11\"},{\"key\":\"1\",\"value\":\"是\"}],\"key\":\"enable\",\"field\":\"field1641205615398\",\"width\":100,\"readonly\":false,\"required\":true,\"values\":[\"否\"]},{\"id\":6,\"name\":\"您认为放学后作业对孩子的负担怎样?\",\"values\":[\"非常满意\"],\"type\":\"checkbox\",\"key\":\"满意度\",\"data\":[{\"key\":\"非常满意\",\"value\":\"非常满意\"},{\"key\":\"十分满意\",\"value\":\"十分满意\"},{\"key\":\"相当满意\",\"value\":\"相当满意\"}],\"icon\":\"el-icon-circle-check\",\"field\":\"field1641206170991\",\"width\":100,\"readonly\":false,\"required\":true},{\"id\":5,\"name\":\"作为家长,对当前双减政策是否满意?\",\"type\":\"radio\",\"icon\":\"el-icon-aim\",\"value\":0,\"data\":[{\"key\":\"非常满意\",\"value\":\"非常满意\"},{\"key\":\"十分满意\",\"value\":\"十分满意\"},{\"key\":\"相当满意\",\"value\":\"相当满意\"}],\"key\":\"满意度\",\"field\":\"field1641205647957\",\"width\":100,\"readonly\":false,\"required\":true,\"values\":[\"非常满意\"]},{\"id\":2,\"name\":\"其他意见\",\"type\":\"textarea\",\"value\":\"\",\"icon\":\"el-icon-document-copy\",\"field\":\"field1641206608182\",\"width\":100,\"readonly\":false,\"required\":false}]', '{\"fields\":{\"field1641205615398\":[],\"field1641206170991\":[],\"field1641205647957\":[],\"field1641206608182\":null},\"formOptions\":[[{\"field\":\"field1641205615398\",\"title\":\"您的孩子放学后是否有学校布置的书面作业?\",\"type\":\"radio\",\"required\":true,\"readonly\":false,\"colSize\":12,\"data\":[{\"key\":\"0\",\"value\":\"否\"},{\"key\":\"2\",\"value\":\"xx11\"},{\"key\":\"1\",\"value\":\"是\"}],\"dataKey\":\"enable\"}],[{\"field\":\"field1641206170991\",\"title\":\"您认为放学后作业对孩子的负担怎样?\",\"type\":\"checkbox\",\"required\":true,\"readonly\":false,\"colSize\":12,\"data\":[{\"key\":\"非常满意\",\"value\":\"非常满意\"},{\"key\":\"十分满意\",\"value\":\"十分满意\"},{\"key\":\"相当满意\",\"value\":\"相当满意\"}],\"dataKey\":\"满意度\"}],[{\"field\":\"field1641205647957\",\"title\":\"作为家长,对当前双减政策是否满意?\",\"type\":\"radio\",\"required\":true,\"readonly\":false,\"colSize\":12,\"data\":[{\"key\":\"非常满意\",\"value\":\"非常满意\"},{\"key\":\"十分满意\",\"value\":\"十分满意\"},{\"key\":\"相当满意\",\"value\":\"相当满意\"}],\"dataKey\":\"满意度\"}],[{\"field\":\"field1641206608182\",\"title\":\"其他意见\",\"type\":\"textarea\",\"required\":false,\"readonly\":false,\"colSize\":12}]],\"tables\":[],\"tabs\":[]}', '[{\"field\":\"field1641205615398\",\"title\":\"您的孩子放学后是否有学校布置的书面作业?\",\"type\":\"radio\",\"required\":true,\"readonly\":false,\"colSize\":12,\"data\":[{\"key\":\"0\",\"value\":\"否\"},{\"key\":\"2\",\"value\":\"xx11\"},{\"key\":\"1\",\"value\":\"是\"}],\"dataKey\":\"enable\"},{\"field\":\"field1641206170991\",\"title\":\"您认为放学后作业对孩子的负担怎样?\",\"type\":\"checkbox\",\"required\":true,\"readonly\":false,\"colSize\":12,\"data\":[{\"key\":\"非常满意\",\"value\":\"非常满意\"},{\"key\":\"十分满意\",\"value\":\"十分满意\"},{\"key\":\"相当满意\",\"value\":\"相当满意\"}],\"dataKey\":\"满意度\"},{\"field\":\"field1641205647957\",\"title\":\"作为家长,对当前双减政策是否满意?\",\"type\":\"radio\",\"required\":true,\"readonly\":false,\"colSize\":12,\"data\":[{\"key\":\"非常满意\",\"value\":\"非常满意\"},{\"key\":\"十分满意\",\"value\":\"十分满意\"},{\"key\":\"相当满意\",\"value\":\"相当满意\"}],\"dataKey\":\"满意度\"},{\"field\":\"field1641206608182\",\"title\":\"其他意见\",\"type\":\"textarea\",\"required\":false,\"readonly\":false,\"colSize\":12}]', NULL, '[]', '2021-12-30 21:45:16', 1, '超级管理员', '超级管理员', '2022-08-03 15:57:54', 1); + -- ---------------------------- -- Table structure for Sys_City -- ---------------------------- @@ -399,33 +594,35 @@ CREATE TABLE `Sys_Dictionary` ( `ParentId` int(11) NOT NULL, `Remark` varchar(2000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, PRIMARY KEY (`Dic_ID`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 69 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = COMPACT; +) ENGINE = InnoDB AUTO_INCREMENT = 76 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = COMPACT; -- ---------------------------- -- Records of Sys_Dictionary -- ---------------------------- -INSERT INTO `Sys_Dictionary` VALUES (3, '{valueField: \'Enable\',\ntextField: \'Enable\',\n containField: null,\n handler: null }', '2019-07-05 17:36:23', NULL, 'admin', '1', NULL, '是否值', 'enable', 1, '测试超级管理员', '2018-07-10 16:38:51', 1, NULL, 0, NULL); +INSERT INTO `Sys_Dictionary` VALUES (3, '{valueField: \'Enable\',\ntextField: \'Enable\',\n containField: null,\n handler: null }', '2019-07-05 17:36:23', NULL, 'admin', '1', NULL, '是否值', 'enable', 1, '超级管理员', '2022-08-03 15:59:01', 1, NULL, 0, NULL); INSERT INTO `Sys_Dictionary` VALUES (30, '{valueField: \'Success\',\n textField: \'Success\', \n containField: null,\n handler: null }\n', '2018-06-11 18:26:05', 0, '测试超级管理员', NULL, NULL, '响应状态', 'restatus', 1, '测试超级管理员', '2018-06-12 10:21:48', 1, NULL, 0, NULL); -INSERT INTO `Sys_Dictionary` VALUES (31, '{valueField: \'LogType\',\n textField: \'LogType\', \n containField: null,\n handler: null }\n', '2018-06-12 14:46:07', NULL, '测试超级管理员', NULL, NULL, '日志类型', 'log', 1, '超级管理员', '2019-11-25 09:26:09', 1, NULL, 1, NULL); +INSERT INTO `Sys_Dictionary` VALUES (31, '{valueField: \'LogType\',\n textField: \'LogType\', \n containField: null,\n handler: null }\n', '2018-06-12 14:46:07', NULL, '测试超级管理员', NULL, NULL, '日志类型', 'log', 1, '超级管理员', '2022-02-21 12:43:18', 1, NULL, 1, NULL); INSERT INTO `Sys_Dictionary` VALUES (32, '{valueField: \'Role_Id\',\n textField: \'RoleName\', \n containField: [\'Role_Id\',\'RoleName\'],\n handler: null }\n', '2018-06-14 16:48:35', NULL, '测试超级管理员', NULL, 'SELECT Role_Id as \'key\',RoleName as \'value\' FROM Sys_Role WHERE Enable=1\n', '角色列表', 'roles', 1, '测试超级管理员', '2018-07-13 15:03:53', 1, 123, 0, 'sql语句需要key,value列,界面才能绑定数据源'); -INSERT INTO `Sys_Dictionary` VALUES (35, '{\n valueField: \'AuditStatus\',\n textField: \'AuditStatus\',\n containField:null \n}', '2018-07-10 10:51:37', NULL, '测试超级管理员', NULL, NULL, '审核状态', 'audit', 1, '测试超级管理员', '2018-07-10 11:02:59', 1, NULL, 0, NULL); -INSERT INTO `Sys_Dictionary` VALUES (36, '{\n valueField: \'Variety\',\n textField: \'Variety\',\n containField:null \n}', '2018-07-10 14:06:12', 1, '测试超级管理员', NULL, NULL, '品种', 'pz', 1, NULL, NULL, NULL, NULL, 0, NULL); -INSERT INTO `Sys_Dictionary` VALUES (37, '{\n valueField: \'AgeRange\',\n textField: \'AgeRange\',\n containField:null \n}', '2018-07-10 14:07:46', NULL, '测试超级管理员', NULL, NULL, '月龄', 'age', 1, '测试超级管理员', '2018-07-10 14:14:49', 1, NULL, 0, NULL); +INSERT INTO `Sys_Dictionary` VALUES (35, '{\n valueField: \'AuditStatus\',\n textField: \'AuditStatus\',\n containField:null \n}', '2018-07-10 10:51:37', NULL, '测试超级管理员', NULL, NULL, '审核状态', 'audit', 1, '演示帐号', '2020-09-10 11:42:31', 3362, NULL, 0, NULL); +INSERT INTO `Sys_Dictionary` VALUES (36, '{\n valueField: \'Variety\',\n textField: \'Variety\',\n containField:null \n}', '2018-07-10 14:06:12', 1, '测试超级管理员', NULL, NULL, '分类', 'pz', 1, '超级管理员', '2022-03-26 02:18:40', 1, NULL, 0, NULL); +INSERT INTO `Sys_Dictionary` VALUES (37, '{\n valueField: \'AgeRange\',\n textField: \'AgeRange\',\n containField:null \n}', '2018-07-10 14:07:46', NULL, '测试超级管理员', NULL, NULL, '值范围', 'age', 1, '超级管理员', '2022-03-26 02:18:48', 1, NULL, 0, NULL); INSERT INTO `Sys_Dictionary` VALUES (38, '{\n valueField: \'City\',\n textField: \'City\',\n containField:null \n}', '2018-07-10 14:18:25', NULL, '测试超级管理员', NULL, 'SELECT CASE WHEN CityName=\'市辖区\' THEN ProvinceName ELSE CityName end as \'key\',CASE WHEN CityName=\'市辖区\' THEN ProvinceName ELSE CityName end as \'value\' FROM Sys_City AS a \nINNER JOIN Sys_Province AS b \nON a.ProvinceCode=b.ProvinceCode\nWHERE a.CityName<> \'县\'', '城市', 'city', 1, '测试超级管理员', '2018-07-16 17:03:50', 1, NULL, 0, NULL); -INSERT INTO `Sys_Dictionary` VALUES (44, '{\n valueField: \'NewsType\',\n textField: \'NewsType\',\n containField:null \n}', '2018-07-10 16:15:59', 1, '测试超级管理员', NULL, NULL, '新闻类型', 'news', 1, NULL, NULL, NULL, NULL, 0, NULL); +INSERT INTO `Sys_Dictionary` VALUES (44, '{\n valueField: \'NewsType\',\n textField: \'NewsType\',\n containField:null \n}', '2018-07-10 16:15:59', 1, '测试超级管理员', NULL, NULL, '新闻类型', 'news', 1, '超级管理员', '2022-06-27 13:46:28', 1, NULL, 0, NULL); INSERT INTO `Sys_Dictionary` VALUES (45, '{\n valueField: \'Expire\',\n textField: \'Expire\',\n containField:null \n}', '2018-07-10 16:38:40', 1, '测试超级管理员', NULL, NULL, '是否过期', 'expire', 1, NULL, NULL, NULL, NULL, 0, NULL); INSERT INTO `Sys_Dictionary` VALUES (46, '{\n valueField: \'ProvinceName\',\n textField: \'ProvinceName\',\n containField:null \n}', '2018-07-16 13:27:34', NULL, '测试超级管理员', NULL, 'SELECT CASE WHEN CityName=\'市辖区\' THEN ProvinceName ELSE CityName end as \'key\',CASE WHEN CityName=\'市辖区\' THEN ProvinceName ELSE CityName end as \'value\' FROM Sys_City AS a \nINNER JOIN Sys_Province AS b \nON a.ProvinceCode=b.ProvinceCode\nWHERE a.CityName<> \'县\'', '省列表', 'pro', 1, '测试超级管理员', '2018-07-23 15:23:21', 1, NULL, 0, 'sql语句需要key,value列,界面才能绑定数据源'); INSERT INTO `Sys_Dictionary` VALUES (48, '{\n valueField: \'ClassifyId\',\n textField: \'ClassifyTitle\',\n containField:null \n}', '2018-07-18 10:16:22', NULL, '测试超级管理员', NULL, NULL, '是否买入', 'nav', 1, '超级管理员', '2019-09-18 18:09:42', 1, NULL, 0, NULL); INSERT INTO `Sys_Dictionary` VALUES (49, '{\n valueField: \'Gender\',\n textField: \'Gender\',\n containField:null \n}', '2018-07-23 10:04:45', NULL, '测试超级管理员', NULL, NULL, '性别', 'gender', 1, '测试超级管理员', '2018-07-23 11:10:28', 1, NULL, 0, NULL); INSERT INTO `Sys_Dictionary` VALUES (50, '{\n valueField: \'Enable\',\n textField: \'Enable\',\n containField:null \n}', '2018-07-23 15:36:43', 1, '测试超级管理员', NULL, NULL, '启用状态', 'status', 1, NULL, NULL, NULL, NULL, 0, NULL); -INSERT INTO `Sys_Dictionary` VALUES (52, '{\n valueField: \'Choiceness\',\n textField: \'Choiceness\',\n containField:null \n}', '2018-07-24 15:45:47', 1, '测试超级管理员', NULL, NULL, '是否买入', 'cq', 1, '超级管理员', '2019-09-18 17:32:36', 1, NULL, 0, NULL); -INSERT INTO `Sys_Dictionary` VALUES (59, '{\n valueField: \'IsRegregisterPhone\',\n textField: \'IsRegregisterPhone\',\n containField:null \n}', '2018-08-29 15:54:21', 1, '测试超级管理员', NULL, NULL, '是否手机用户', 'isphone', 1, '超级管理员', '2019-09-17 11:22:03', 1, NULL, 0, NULL); -INSERT INTO `Sys_Dictionary` VALUES (62, '{\n valueField: \'IsTop\',\n textField: \'IsTop\',\n containField:null \n}', '2019-08-20 09:57:54', 1, '超级管理员', NULL, NULL, '推荐价格', 'top', 1, '超级管理员', '2019-09-18 15:23:10', 1, NULL, 1, 'dddd'); +INSERT INTO `Sys_Dictionary` VALUES (52, '{\n valueField: \'Choiceness\',\n textField: \'Choiceness\',\n containField:null \n}', '2018-07-24 15:45:47', 1, '测试超级管理员', NULL, NULL, '是否买入', 'cq', 1, '超级管理员', '2022-03-26 23:07:16', 1, NULL, 0, NULL); +INSERT INTO `Sys_Dictionary` VALUES (59, '{\n valueField: \'IsRegregisterPhone\',\n textField: \'IsRegregisterPhone\',\n containField:null \n}', '2018-08-29 15:54:21', 1, '测试超级管理员', NULL, NULL, 'test', 'isphone', 1, '超级管理员', '2020-12-19 18:02:55', 1, NULL, 0, NULL); +INSERT INTO `Sys_Dictionary` VALUES (62, '{\n valueField: \'IsTop\',\n textField: \'IsTop\',\n containField:null \n}', '2019-08-20 09:57:54', 1, '超级管理员', NULL, NULL, 'test1', 'top', 1, '超级管理员', '2022-01-03 19:13:37', 1, NULL, 1, 'dddd'); INSERT INTO `Sys_Dictionary` VALUES (64, NULL, '2019-09-18 19:25:47', 1, '超级管理员', NULL, NULL, '订单类型', 'ordertype', 1, NULL, NULL, NULL, NULL, 0, NULL); -INSERT INTO `Sys_Dictionary` VALUES (65, NULL, '2019-09-19 10:07:23', 1, '超级管理员', NULL, NULL, '商品名称', 'pn', 1, NULL, NULL, NULL, NULL, 0, NULL); +INSERT INTO `Sys_Dictionary` VALUES (65, NULL, '2019-09-19 10:07:23', 1, '超级管理员', NULL, NULL, '商品名称', 'pn', 1, '超级管理员', '2022-07-12 10:55:23', 1, NULL, 0, NULL); INSERT INTO `Sys_Dictionary` VALUES (66, NULL, '2020-05-08 09:42:50', 1, '超级管理员', NULL, NULL, 'dr', 'dr', 1, NULL, NULL, NULL, NULL, 0, NULL); INSERT INTO `Sys_Dictionary` VALUES (67, NULL, '2020-05-30 19:48:29', 1, '超级管理员', NULL, NULL, '获取所有角色Table显示用', 't_roles', 1, '超级管理员', '2020-05-30 19:48:36', 1, NULL, 0, NULL); -INSERT INTO `Sys_Dictionary` VALUES (68, NULL, '2020-11-14 14:58:45', 1, '超级管理员', NULL, 'SELECT Role_Id AS id,parentId,Role_Id AS `key`,RoleName AS value FROM Sys_Role', '级联角色', 'tree_roles', 1, NULL, NULL, NULL, NULL, 0, NULL); +INSERT INTO `Sys_Dictionary` VALUES (69, NULL, '2020-09-18 23:13:42', 1, '超级管理员', NULL, NULL, '11', 'test111', 1, '超级管理员', '2022-06-16 11:00:09', 1, 1, 0, NULL); +INSERT INTO `Sys_Dictionary` VALUES (70, NULL, '2020-11-02 19:18:08', 1, '超级管理员', NULL, 'SELECT Role_Id AS id,parentId,Role_Id AS `key`,RoleName AS `value` FROM Sys_Role', '级联角色', 'tree_roles', 1, '超级管理员', '2021-02-28 14:35:35', 1, NULL, 0, NULL); +INSERT INTO `Sys_Dictionary` VALUES (75, NULL, '2022-01-03 19:31:24', 1, '超级管理员', NULL, NULL, '满意度', '满意度', 1, '超级管理员', '2022-03-26 23:07:19', 1, NULL, 0, NULL); -- ---------------------------- -- Table structure for Sys_DictionaryList @@ -446,71 +643,77 @@ CREATE TABLE `Sys_DictionaryList` ( `OrderNo` int(11) NULL DEFAULT NULL, `Remark` varchar(2000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, PRIMARY KEY (`DicList_ID`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 160 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = COMPACT; +) ENGINE = InnoDB AUTO_INCREMENT = 183 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = COMPACT; -- ---------------------------- -- Records of Sys_DictionaryList -- ---------------------------- -INSERT INTO `Sys_DictionaryList` VALUES (3, NULL, 1, 'admin', '否', '0', 3, NULL, '超级管理员', '2019-08-23 10:45:47', 1, 2, NULL); -INSERT INTO `Sys_DictionaryList` VALUES (4, NULL, 1, 'xxx', '是', '1', 3, NULL, '超级管理员', '2019-08-23 10:45:47', 1, 1, NULL); +INSERT INTO `Sys_DictionaryList` VALUES (3, NULL, 1, 'admin', '否', '0', 3, NULL, '超级管理员', '2022-08-03 15:59:01', 1, 2, NULL); +INSERT INTO `Sys_DictionaryList` VALUES (4, NULL, 1, 'xxx', '是', '1', 3, NULL, '超级管理员', '2022-08-03 15:59:01', 1, 1, NULL); INSERT INTO `Sys_DictionaryList` VALUES (22, '2018-06-11 18:26:05', 1, '测试超级管理员', '其他', '0', 30, NULL, '超级管理员', '2019-08-21 16:49:43', 1, 10, NULL); INSERT INTO `Sys_DictionaryList` VALUES (23, '2018-06-11 18:26:05', 1, '测试超级管理员', '成功', '1', 30, NULL, '超级管理员', '2019-08-21 16:49:43', 1, 100, NULL); INSERT INTO `Sys_DictionaryList` VALUES (24, '2018-06-12 09:41:58', 1, '测试超级管理员', '异常', '2', 30, NULL, '超级管理员', '2019-08-21 16:49:43', 1, 50, NULL); -INSERT INTO `Sys_DictionaryList` VALUES (25, '2018-06-12 14:46:08', 1, '测试超级管理员', '系统', 'System', 31, NULL, '超级管理员', '2019-11-25 09:26:09', 1, 100, NULL); -INSERT INTO `Sys_DictionaryList` VALUES (26, '2018-06-12 14:47:32', 1, '测试超级管理员', '登陆', 'Login', 31, NULL, '超级管理员', '2019-11-25 09:26:09', 1, 90, NULL); -INSERT INTO `Sys_DictionaryList` VALUES (27, '2018-06-15 15:29:58', 1, '测试超级管理员', '新建', 'Add', 31, NULL, '超级管理员', '2019-11-25 09:26:09', 1, NULL, NULL); -INSERT INTO `Sys_DictionaryList` VALUES (28, '2018-06-15 15:29:58', 1, '测试超级管理员', '删除', 'Del', 31, 1, '超级管理员', '2019-11-25 09:26:09', 1, NULL, NULL); -INSERT INTO `Sys_DictionaryList` VALUES (29, '2018-06-15 15:30:34', 1, '测试超级管理员', '编辑', 'Edit', 31, 1, '超级管理员', '2019-11-25 09:26:09', 1, NULL, NULL); -INSERT INTO `Sys_DictionaryList` VALUES (37, '2018-07-10 10:51:38', 1, '测试超级管理员', '审核中', '0', 35, NULL, '测试超级管理员', '2018-07-10 11:02:59', 1, NULL, NULL); -INSERT INTO `Sys_DictionaryList` VALUES (38, '2018-07-10 10:51:38', 1, '测试超级管理员', '审核通过', '1', 35, NULL, '测试超级管理员', '2018-07-10 11:02:59', 1, NULL, NULL); -INSERT INTO `Sys_DictionaryList` VALUES (39, '2018-07-10 10:51:38', 1, '测试超级管理员', '审核未通过', '2', 35, NULL, '测试超级管理员', '2018-07-10 11:02:59', 1, NULL, NULL); -INSERT INTO `Sys_DictionaryList` VALUES (40, '2018-07-10 14:06:13', 1, '测试超级管理员', '西门塔尔', '西门塔尔', 36, NULL, '测试超级管理员', '2018-09-04 16:13:57', 1, NULL, NULL); -INSERT INTO `Sys_DictionaryList` VALUES (41, '2018-07-10 14:06:13', 1, '测试超级管理员', '利木赞牛', '利木赞牛', 36, NULL, '测试超级管理员', '2018-09-04 16:13:57', 1, NULL, NULL); -INSERT INTO `Sys_DictionaryList` VALUES (42, '2018-07-10 14:06:13', 1, '测试超级管理员', '夏洛莱牛', '夏洛莱牛', 36, NULL, '测试超级管理员', '2018-09-04 16:13:57', 1, NULL, NULL); -INSERT INTO `Sys_DictionaryList` VALUES (43, '2018-07-10 14:06:13', 1, '测试超级管理员', '鲁西黄牛', '鲁西黄牛', 36, NULL, '测试超级管理员', '2018-09-04 16:13:57', 1, NULL, NULL); -INSERT INTO `Sys_DictionaryList` VALUES (44, '2018-07-10 14:06:13', 1, '测试超级管理员', '神户肉牛', '神户肉牛', 36, NULL, '测试超级管理员', '2018-09-04 16:13:57', 1, NULL, NULL); -INSERT INTO `Sys_DictionaryList` VALUES (45, '2018-07-10 14:06:13', 1, '测试超级管理员', '南阳牛', '南阳牛', 36, NULL, '测试超级管理员', '2018-09-04 16:13:58', 1, NULL, NULL); -INSERT INTO `Sys_DictionaryList` VALUES (46, '2018-07-10 14:06:13', 1, '测试超级管理员', '秦川牛', '秦川牛', 36, NULL, '测试超级管理员', '2018-09-04 16:13:58', 1, NULL, NULL); -INSERT INTO `Sys_DictionaryList` VALUES (47, '2018-07-10 14:07:46', 1, '测试超级管理员', '0-2月龄', '0-2月龄', 37, NULL, '测试超级管理员', '2018-09-06 15:57:29', 1, NULL, NULL); -INSERT INTO `Sys_DictionaryList` VALUES (48, '2018-07-10 14:07:46', 1, '测试超级管理员', '2-6月龄', '2-6月龄', 37, NULL, '测试超级管理员', '2018-09-06 15:57:29', 1, NULL, NULL); -INSERT INTO `Sys_DictionaryList` VALUES (49, '2018-07-10 14:07:46', 1, '测试超级管理员', '7-12月龄', '7-12月龄', 37, NULL, '测试超级管理员', '2018-09-06 15:57:29', 1, NULL, NULL); -INSERT INTO `Sys_DictionaryList` VALUES (50, '2018-07-10 14:07:46', 1, '测试超级管理员', '12-16月龄', '12-16月龄', 37, NULL, '测试超级管理员', '2018-09-06 15:57:29', 1, NULL, NULL); -INSERT INTO `Sys_DictionaryList` VALUES (51, '2018-07-10 14:07:46', 1, '测试超级管理员', '16月龄以上', '16月龄以上', 37, NULL, '测试超级管理员', '2018-09-06 15:57:29', 1, NULL, NULL); -INSERT INTO `Sys_DictionaryList` VALUES (64, '2018-07-10 16:15:59', 1, '测试超级管理员', '行业新闻', '1', 44, NULL, NULL, NULL, NULL, NULL, NULL); -INSERT INTO `Sys_DictionaryList` VALUES (65, '2018-07-10 16:15:59', 1, '测试超级管理员', '行情资讯', '2', 44, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO `Sys_DictionaryList` VALUES (25, '2018-06-12 14:46:08', 1, '测试超级管理员', '系统', 'System', 31, NULL, '超级管理员', '2022-02-21 12:43:18', 1, 100, NULL); +INSERT INTO `Sys_DictionaryList` VALUES (26, '2018-06-12 14:47:32', 1, '测试超级管理员', '登陆', 'Login', 31, NULL, '超级管理员', '2022-02-21 12:43:18', 1, 90, NULL); +INSERT INTO `Sys_DictionaryList` VALUES (27, '2018-06-15 15:29:58', 1, '测试超级管理员', '新建', 'Add', 31, NULL, '超级管理员', '2022-02-21 12:43:18', 1, NULL, NULL); +INSERT INTO `Sys_DictionaryList` VALUES (28, '2018-06-15 15:29:58', 1, '测试超级管理员', '删除', 'Del', 31, 1, '超级管理员', '2022-02-21 12:43:18', 1, NULL, NULL); +INSERT INTO `Sys_DictionaryList` VALUES (29, '2018-06-15 15:30:34', 1, '测试超级管理员', '编辑', 'Edit', 31, 1, '超级管理员', '2022-02-21 12:43:18', 1, NULL, NULL); +INSERT INTO `Sys_DictionaryList` VALUES (37, '2018-07-10 10:51:38', 1, '测试超级管理员', '审核中', '0', 35, NULL, '演示帐号', '2020-09-10 11:42:31', 3362, NULL, NULL); +INSERT INTO `Sys_DictionaryList` VALUES (38, '2018-07-10 10:51:38', 1, '测试超级管理员', '审核通过', '1', 35, NULL, '演示帐号', '2020-09-10 11:42:31', 3362, NULL, NULL); +INSERT INTO `Sys_DictionaryList` VALUES (39, '2018-07-10 10:51:38', 1, '测试超级管理员', '审核未通过', '2', 35, NULL, '演示帐号', '2020-09-10 11:42:31', 3362, NULL, NULL); +INSERT INTO `Sys_DictionaryList` VALUES (40, '2018-07-10 14:06:13', 1, '测试超级管理员', '数码相框', '数码相框', 36, 0, '超级管理员', '2022-03-26 02:18:40', 1, NULL, NULL); +INSERT INTO `Sys_DictionaryList` VALUES (41, '2018-07-10 14:06:13', 1, '测试超级管理员', '影棚器材', '影棚器材', 36, 0, '超级管理员', '2022-03-26 02:18:40', 1, NULL, NULL); +INSERT INTO `Sys_DictionaryList` VALUES (42, '2018-07-10 14:06:13', 1, '测试超级管理员', '户外器材', '户外器材', 36, 0, '超级管理员', '2022-03-26 02:18:40', 1, NULL, NULL); +INSERT INTO `Sys_DictionaryList` VALUES (44, '2018-07-10 14:06:13', 1, '测试超级管理员', '运动相机', '运动相机', 36, 0, '超级管理员', '2022-03-26 02:18:40', 1, NULL, NULL); +INSERT INTO `Sys_DictionaryList` VALUES (45, '2018-07-10 14:06:13', 1, '测试超级管理员', '微单相机', '微单相机', 36, 0, '超级管理员', '2022-03-26 02:18:40', 1, NULL, NULL); +INSERT INTO `Sys_DictionaryList` VALUES (46, '2018-07-10 14:06:13', 1, '测试超级管理员', '单反相机', '单反相机', 36, 0, '超级管理员', '2022-03-26 02:18:40', 1, NULL, NULL); +INSERT INTO `Sys_DictionaryList` VALUES (47, '2018-07-10 14:07:46', 1, '测试超级管理员', '50-60', '50-60', 37, 0, '超级管理员', '2022-03-26 02:18:48', 1, NULL, NULL); +INSERT INTO `Sys_DictionaryList` VALUES (48, '2018-07-10 14:07:46', 1, '测试超级管理员', '40-50', '40-50', 37, 0, '超级管理员', '2022-03-26 02:18:48', 1, NULL, NULL); +INSERT INTO `Sys_DictionaryList` VALUES (49, '2018-07-10 14:07:46', 1, '测试超级管理员', '30-40', '30-40', 37, 0, '超级管理员', '2022-03-26 02:18:48', 1, NULL, NULL); +INSERT INTO `Sys_DictionaryList` VALUES (50, '2018-07-10 14:07:46', 1, '测试超级管理员', '20-30', '20-30', 37, 0, '超级管理员', '2022-03-26 02:18:48', 1, NULL, NULL); +INSERT INTO `Sys_DictionaryList` VALUES (51, '2018-07-10 14:07:46', 1, '测试超级管理员', '10-20', '10-20', 37, 0, '超级管理员', '2022-03-26 02:18:48', 1, NULL, NULL); +INSERT INTO `Sys_DictionaryList` VALUES (64, '2018-07-10 16:15:59', 1, '测试超级管理员', '更新日志', '1', 44, 0, '超级管理员', '2022-04-20 01:31:15', 1, NULL, NULL); +INSERT INTO `Sys_DictionaryList` VALUES (65, '2018-07-10 16:15:59', 1, '测试超级管理员', '其他信息', '2', 44, 0, '超级管理员', '2022-04-20 01:31:15', 1, NULL, NULL); INSERT INTO `Sys_DictionaryList` VALUES (66, '2018-07-10 16:38:40', 1, '测试超级管理员', '否', '0', 45, NULL, '超级管理员', '2019-09-03 13:20:46', 1, NULL, NULL); INSERT INTO `Sys_DictionaryList` VALUES (67, '2018-07-10 16:38:40', 1, '测试超级管理员', '是', '1', 45, NULL, '超级管理员', '2019-09-03 13:20:46', 1, NULL, NULL); -INSERT INTO `Sys_DictionaryList` VALUES (70, '2018-07-11 17:11:18', 1, '测试超级管理员', 'App请求异常', 'ApiException', 31, NULL, '超级管理员', '2019-11-25 09:26:09', 1, NULL, NULL); -INSERT INTO `Sys_DictionaryList` VALUES (71, '2018-07-11 17:11:19', 1, '测试超级管理员', 'PC请求异常', 'Exception', 31, NULL, '超级管理员', '2019-11-25 09:26:09', 1, NULL, NULL); +INSERT INTO `Sys_DictionaryList` VALUES (71, '2018-07-11 17:11:19', 1, '测试超级管理员', 'PC请求异常', 'Exception', 31, NULL, '超级管理员', '2022-02-21 12:43:18', 1, NULL, NULL); INSERT INTO `Sys_DictionaryList` VALUES (77, '2018-07-18 10:16:22', 1, '测试超级管理员', '现金', '1', 48, NULL, '超级管理员', '2019-09-18 18:09:42', 1, 120, NULL); INSERT INTO `Sys_DictionaryList` VALUES (78, '2018-07-18 10:16:23', 1, '测试超级管理员', '赊账', '2', 48, NULL, '超级管理员', '2019-09-18 18:09:42', 1, 70, NULL); INSERT INTO `Sys_DictionaryList` VALUES (79, '2018-07-18 10:16:23', 1, '测试超级管理员', '抵扣', '3', 48, NULL, '超级管理员', '2019-09-18 18:09:42', 1, 100, NULL); INSERT INTO `Sys_DictionaryList` VALUES (90, '2018-07-23 10:04:45', 1, '测试超级管理员', '男', '0', 49, NULL, '测试超级管理员', '2018-07-23 11:10:28', 1, NULL, NULL); INSERT INTO `Sys_DictionaryList` VALUES (91, '2018-07-23 10:04:45', 1, '测试超级管理员', '女', '1', 49, NULL, '测试超级管理员', '2018-07-23 11:10:28', 1, NULL, NULL); -INSERT INTO `Sys_DictionaryList` VALUES (92, '2018-07-23 10:44:14', 1, '测试超级管理员', '修改密码', 'ApiModifyPwd', 31, 0, '超级管理员', '2019-11-25 09:26:09', 1, NULL, NULL); INSERT INTO `Sys_DictionaryList` VALUES (96, '2018-07-23 15:36:43', 1, '测试超级管理员', '未启用', '0', 50, 1, '超级管理员', '2019-08-16 18:17:47', 1, NULL, NULL); INSERT INTO `Sys_DictionaryList` VALUES (97, '2018-07-23 15:36:43', 1, '测试超级管理员', '已启用', '1', 50, 1, '超级管理员', '2019-08-16 18:17:47', 1, NULL, NULL); INSERT INTO `Sys_DictionaryList` VALUES (98, '2018-07-23 15:36:43', 1, '测试超级管理员', '已删除', '2', 50, 1, '超级管理员', '2019-08-16 18:17:47', 1, NULL, NULL); -INSERT INTO `Sys_DictionaryList` VALUES (101, '2018-07-24 15:45:47', 1, '测试超级管理员', '否', '0', 52, 0, '超级管理员', '2019-09-18 17:32:36', 1, NULL, NULL); -INSERT INTO `Sys_DictionaryList` VALUES (102, '2018-07-24 15:45:47', 1, '测试超级管理员', '是', '1', 52, 0, '超级管理员', '2019-09-18 17:32:36', 1, NULL, NULL); -INSERT INTO `Sys_DictionaryList` VALUES (128, '2018-08-29 15:54:21', 1, '测试超级管理员', '是', '1', 59, 0, '超级管理员', '2019-09-17 11:22:03', 1, NULL, NULL); -INSERT INTO `Sys_DictionaryList` VALUES (129, '2018-08-29 15:54:21', 1, '测试超级管理员', '否', '0', 59, 1, '超级管理员', '2019-09-17 11:22:03', 1, NULL, NULL); -INSERT INTO `Sys_DictionaryList` VALUES (130, '2018-09-04 16:13:47', 1, '测试超级管理员', '安格斯', '安格斯', 36, 1, '测试超级管理员', '2018-09-04 16:13:58', 1, NULL, NULL); -INSERT INTO `Sys_DictionaryList` VALUES (142, '2019-08-20 09:57:54', 1, '超级管理员', '是', '1', 62, 1, '超级管理员', '2019-09-18 15:23:10', 1, NULL, '1'); -INSERT INTO `Sys_DictionaryList` VALUES (143, '2019-08-20 09:57:54', 1, '超级管理员', '否', '0', 62, 1, '超级管理员', '2019-09-18 15:23:10', 1, NULL, '测试'); -INSERT INTO `Sys_DictionaryList` VALUES (144, '2019-08-21 16:40:50', 1, '超级管理员', '刷新Token', 'ReplaceToeken', 31, NULL, '超级管理员', '2019-11-25 09:26:09', 1, 110, NULL); +INSERT INTO `Sys_DictionaryList` VALUES (101, '2018-07-24 15:45:47', 1, '测试超级管理员', '否', '0', 52, 0, '超级管理员', '2022-03-26 23:07:16', 1, NULL, NULL); +INSERT INTO `Sys_DictionaryList` VALUES (102, '2018-07-24 15:45:47', 1, '测试超级管理员', '是', '1', 52, 0, '超级管理员', '2022-03-26 23:07:16', 1, NULL, NULL); +INSERT INTO `Sys_DictionaryList` VALUES (128, '2018-08-29 15:54:21', 1, '测试超级管理员', '是', '1', 59, 0, '超级管理员', '2020-12-19 18:02:55', 1, NULL, NULL); +INSERT INTO `Sys_DictionaryList` VALUES (129, '2018-08-29 15:54:21', 1, '测试超级管理员', '否', '0', 59, 1, '超级管理员', '2020-12-19 18:02:55', 1, NULL, NULL); +INSERT INTO `Sys_DictionaryList` VALUES (130, '2018-09-04 16:13:47', 1, '测试超级管理员', '数码相机', '数码相机', 36, 1, '超级管理员', '2022-03-26 02:18:40', 1, NULL, NULL); +INSERT INTO `Sys_DictionaryList` VALUES (142, '2019-08-20 09:57:54', 1, '超级管理员', '是', '1', 62, 1, '超级管理员', '2022-01-03 19:13:37', 1, NULL, '1'); +INSERT INTO `Sys_DictionaryList` VALUES (143, '2019-08-20 09:57:54', 1, '超级管理员', '否', '0', 62, 1, '超级管理员', '2022-01-03 19:13:37', 1, NULL, '测试'); +INSERT INTO `Sys_DictionaryList` VALUES (144, '2019-08-21 16:40:50', 1, '超级管理员', '刷新Token', 'ReplaceToeken', 31, NULL, '超级管理员', '2022-02-21 12:43:18', 1, 110, NULL); INSERT INTO `Sys_DictionaryList` VALUES (145, '2019-08-21 16:49:43', 1, '超级管理员', 'Info', '3', 30, NULL, NULL, NULL, NULL, NULL, NULL); -INSERT INTO `Sys_DictionaryList` VALUES (147, '2019-08-28 14:54:11', 1, '超级管理员', 'xx', '2', 62, 1, '超级管理员', '2019-09-18 15:23:10', 1, NULL, NULL); INSERT INTO `Sys_DictionaryList` VALUES (149, '2019-09-18 19:25:47', 1, '超级管理员', '发货', '1', 64, 1, NULL, NULL, NULL, NULL, NULL); INSERT INTO `Sys_DictionaryList` VALUES (150, '2019-09-18 19:25:47', 1, '超级管理员', '退货', '2', 64, 1, NULL, NULL, NULL, NULL, NULL); INSERT INTO `Sys_DictionaryList` VALUES (151, '2019-09-18 19:25:47', 1, '超级管理员', '返单', '3', 64, 1, NULL, NULL, NULL, NULL, NULL); -INSERT INTO `Sys_DictionaryList` VALUES (152, '2019-09-19 10:07:23', 1, '超级管理员', '家居', '家居', 65, 1, NULL, NULL, NULL, NULL, NULL); -INSERT INTO `Sys_DictionaryList` VALUES (153, '2019-09-19 10:07:23', 1, '超级管理员', '男装', '男装', 65, 1, NULL, NULL, NULL, 4, NULL); -INSERT INTO `Sys_DictionaryList` VALUES (154, '2019-09-19 10:07:23', 1, '超级管理员', '女装', '女装', 65, NULL, NULL, NULL, NULL, 6, NULL); -INSERT INTO `Sys_DictionaryList` VALUES (155, '2019-09-19 10:07:23', 1, '超级管理员', '食品', '食品', 65, NULL, NULL, NULL, NULL, NULL, NULL); -INSERT INTO `Sys_DictionaryList` VALUES (156, '2019-10-11 10:41:32', 1, '超级管理员', '登陆已过期', 'ApiAuthorize', 31, NULL, '超级管理员', '2019-11-25 09:26:09', 1, NULL, NULL); +INSERT INTO `Sys_DictionaryList` VALUES (152, '2019-09-19 10:07:23', 1, '超级管理员', '二手', '二手', 65, 1, '超级管理员', '2021-03-24 13:43:23', 1, NULL, NULL); +INSERT INTO `Sys_DictionaryList` VALUES (153, '2019-09-19 10:07:23', 1, '超级管理员', '潮流', '潮流', 65, 1, '超级管理员', '2021-03-24 13:43:23', 1, 4, NULL); +INSERT INTO `Sys_DictionaryList` VALUES (154, '2019-09-19 10:07:23', 1, '超级管理员', '家电', '家电', 65, NULL, '超级管理员', '2021-03-24 13:43:23', 1, 6, NULL); +INSERT INTO `Sys_DictionaryList` VALUES (155, '2019-09-19 10:07:23', 1, '超级管理员', '食品', '食品', 65, NULL, '超级管理员', '2021-03-24 13:43:23', 1, NULL, NULL); +INSERT INTO `Sys_DictionaryList` VALUES (156, '2019-10-11 10:41:32', 1, '超级管理员', '登陆已过期', 'ApiAuthorize', 31, NULL, '超级管理员', '2022-02-21 12:43:18', 1, NULL, NULL); INSERT INTO `Sys_DictionaryList` VALUES (157, '2020-05-08 09:42:50', 1, '超级管理员', '否', '0', 66, 0, NULL, NULL, NULL, NULL, NULL); INSERT INTO `Sys_DictionaryList` VALUES (158, '2020-05-08 09:42:50', 1, '超级管理员', '是', '1', 66, 0, NULL, NULL, NULL, NULL, NULL); +INSERT INTO `Sys_DictionaryList` VALUES (161, '2020-09-11 23:10:50', 1, '超级管理员', '审核', 'Audit', 31, 0, '超级管理员', '2022-02-21 12:43:18', 1, NULL, NULL); +INSERT INTO `Sys_DictionaryList` VALUES (162, '2020-09-11 23:10:50', 1, '超级管理员', '打印', 'Print', 31, 0, '超级管理员', '2022-02-21 12:43:18', 1, NULL, NULL); +INSERT INTO `Sys_DictionaryList` VALUES (164, '2020-09-11 23:12:54', 1, '超级管理员', '开启权限', 'Open', 31, 0, '超级管理员', '2022-02-21 12:43:18', 1, NULL, NULL); +INSERT INTO `Sys_DictionaryList` VALUES (165, '2020-09-11 23:12:54', 1, '超级管理员', '其他', 'Other', 31, 0, '超级管理员', '2022-02-21 12:43:18', 1, NULL, NULL); +INSERT INTO `Sys_DictionaryList` VALUES (168, '2020-11-05 10:28:22', 1, '超级管理员', 'Info', '3', 31, 0, '超级管理员', '2022-02-21 12:43:18', 1, NULL, NULL); +INSERT INTO `Sys_DictionaryList` VALUES (171, '2021-08-16 14:00:45', 1, '超级管理员', '3', '3', 69, 0, '超级管理员', '2021-10-15 16:27:27', 1, NULL, NULL); +INSERT INTO `Sys_DictionaryList` VALUES (175, '2022-01-03 19:31:25', 1, '超级管理员', '非常满意', '非常满意', 75, 0, '超级管理员', '2022-03-26 23:07:19', 1, NULL, NULL); +INSERT INTO `Sys_DictionaryList` VALUES (176, '2022-01-03 19:31:25', 1, '超级管理员', '十分满意', '十分满意', 75, 0, '超级管理员', '2022-03-26 23:07:19', 1, NULL, NULL); +INSERT INTO `Sys_DictionaryList` VALUES (177, '2022-01-03 19:31:25', 1, '超级管理员', '相当满意', '相当满意', 75, 0, '超级管理员', '2022-03-26 23:07:19', 1, NULL, NULL); +INSERT INTO `Sys_DictionaryList` VALUES (178, '2022-01-03 19:31:25', 1, '超级管理员', '比较满意', '比较满意', 75, 0, '超级管理员', '2022-03-26 23:07:19', 1, NULL, NULL); -- ---------------------------- -- Table structure for Sys_Log @@ -519,7 +722,7 @@ DROP TABLE IF EXISTS `Sys_Log`; CREATE TABLE `Sys_Log` ( `Id` int(11) NOT NULL AUTO_INCREMENT, `BeginDate` datetime(0) NULL DEFAULT NULL, - `BrowserType` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `BrowserType` varchar(2000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `ElapsedTime` int(11) NULL DEFAULT NULL, `EndDate` datetime(0) NULL DEFAULT NULL, `ExceptionInfo` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL, @@ -533,8 +736,9 @@ CREATE TABLE `Sys_Log` ( `UserIP` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `UserName` varchar(4000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `User_Id` int(11) NULL DEFAULT NULL, - PRIMARY KEY (`Id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 249520 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = COMPACT; + PRIMARY KEY (`Id`) USING BTREE, + INDEX `IDX_BeginDate`(`BeginDate`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = COMPACT; -- ---------------------------- -- Records of Sys_Log @@ -559,27 +763,94 @@ CREATE TABLE `Sys_Menu` ( `Creator` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `ModifyDate` datetime(0) NULL DEFAULT NULL, `Modifier` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `MenuType` int(11) NULL DEFAULT NULL, PRIMARY KEY (`Menu_Id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 88 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = COMPACT; +) ENGINE = InnoDB AUTO_INCREMENT = 129 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = COMPACT; -- ---------------------------- -- Records of Sys_Menu -- ---------------------------- -INSERT INTO `Sys_Menu` VALUES (2, '用户基础信息', '[{\"text\":\"查询\",\"value\":\"Search\"}]', 'ivu-icon ivu-icon-md-contact', NULL, 1, 1600, '.', 0, NULL, '2017-08-28 12:21:13', '2017-08-28 11:12:45', '2019-10-11 14:33:29', '超级管理员'); -INSERT INTO `Sys_Menu` VALUES (3, '角色管理', '[{\"text\":\"查询\",\"value\":\"Search\"},{\"text\":\"新建\",\"value\":\"Add\"},{\"text\":\"删除\",\"value\":\"Delete\"},{\"text\":\"编辑\",\"value\":\"Update\"},{\"text\":\"导出\",\"value\":\"Export\"}]', '', NULL, 1, 900, 'Sys_Role', 2, '/Sys_Role/Manager', '2017-09-12 16:20:02', '2017-08-28 14:19:13', '2019-08-15 10:27:41', '超级管理员'); -INSERT INTO `Sys_Menu` VALUES (5, '日志管理', '[{\"text\":\"查询\",\"value\":\"Search\"}]', 'ivu-icon ivu-icon-ios-create', NULL, 1, 1300, 'xxx', 0, '/', '2017-09-22 17:59:37', '2017-09-22 17:59:37', '2019-10-11 14:34:00', '超级管理员'); -INSERT INTO `Sys_Menu` VALUES (6, '系统日志', '[{\"text\":\"查询\",\"value\":\"Search\"},{\"text\":\"删除\",\"value\":\"Delete\"},{\"text\":\"导出\",\"value\":\"Export\"}]', '', NULL, 1, 0, 'Sys_Log', 5, '/Sys_Log/Manager', '2017-09-22 18:00:25', '2017-09-22 18:0:25', '2019-08-14 16:20:35', '超级管理员'); -INSERT INTO `Sys_Menu` VALUES (9, '用户管理', '[{\"text\":\"查询\",\"value\":\"Search\"},{\"text\":\"新建\",\"value\":\"Add\"},{\"text\":\"删除\",\"value\":\"Delete\"},{\"text\":\"编辑\",\"value\":\"Update\"},{\"text\":\"导入\",\"value\":\"Import\"},{\"text\":\"导出\",\"value\":\"Export\"},{\"text\":\"上传\",\"value\":\"Upload\"},{\"text\":\"审核\",\"value\":\"Audit\"}]', '', NULL, 1, 11110, 'Sys_User', 2, '/Sys_User/Manager', NULL, NULL, '2019-08-14 14:28:43', '超级管理员'); -INSERT INTO `Sys_Menu` VALUES (16, '首页轮播图片', '[{\"text\":\"查询\",\"value\":\"Search\"},{\"text\":\"新建\",\"value\":\"Add\"},{\"text\":\"删除\",\"value\":\"Delete\"},{\"text\":\"编辑\",\"value\":\"Update\"},{\"text\":\"导入\",\"value\":\"Import\"},{\"text\":\"导出\",\"value\":\"Export\"},{\"text\":\"上传\",\"value\":\"Upload\"},{\"text\":\"审核\",\"value\":\"Audit\"}]', '', NULL, 0, 2000, 'App_HomeHeadImages', 15, '/App_HomeHeadImages/Manager', NULL, NULL, '2019-08-12 16:26:44', '超级管理员'); -INSERT INTO `Sys_Menu` VALUES (38, '省市列表', '[{\"text\":\"查询\",\"value\":\"Search\"},{\"text\":\"新建\",\"value\":\"Add\"},{\"text\":\"删除\",\"value\":\"Delete\"},{\"text\":\"编辑\",\"value\":\"Update\"},{\"text\":\"导出\",\"value\":\"Export\"}]', '', NULL, 1, 1000, 'vProvinceCity', 15, '/vProvinceCity', NULL, NULL, '2019-08-20 09:30:04', '超级管理员'); -INSERT INTO `Sys_Menu` VALUES (46, '产业联盟', '[{\"text\":\"查询\",\"value\":\"Search\"},{\"text\":\"新建\",\"value\":\"Add\"},{\"text\":\"删除\",\"value\":\"Delete\"},{\"text\":\"编辑\",\"value\":\"Update\"},{\"text\":\"导出\",\"value\":\"Export\"},{\"text\":\"审核\",\"value\":\"Audit\"}]', '', NULL, 1, 10, 'App_Alliance', 15, '/App_Alliance/Manager', NULL, NULL, '2019-08-13 13:12:42', '超级管理员'); -INSERT INTO `Sys_Menu` VALUES (47, 'test2019', '[{\"text\":\"查询\",\"value\":\"Search\"},{\"text\":\"新建\",\"value\":\"Add\"},{\"text\":\"删除\",\"value\":\"Delete\"},{\"text\":\"编辑\",\"value\":\"Update\"},{\"text\":\"导出\",\"value\":\"Export\"}]', '', NULL, 1, 0, 'test2019', 15, '/test2019', '2019-04-30 15:16:23', '超级管理员', '2019-08-13 13:12:50', '超级管理员'); -INSERT INTO `Sys_Menu` VALUES (61, '系统', '[{\"text\":\"查询\",\"value\":\"Search\"}]', 'ivu-icon ivu-icon-md-settings', NULL, 1, 1350, '系统', 0, '/', '2019-07-12 14:04:04', '超级管理员', '2019-11-27 13:30:08', '超级管理员'); -INSERT INTO `Sys_Menu` VALUES (62, '菜单设置', '[{\"text\":\"查询\",\"value\":\"Search\"},{\"text\":\"新建\",\"value\":\"Add\"},{\"text\":\"编辑\",\"value\":\"Update\"}]', '', NULL, 1, 10, 'Sys_Menu', 61, '/sysmenu', '2019-07-12 14:04:35', '超级管理员', '2019-10-31 13:23:09', '超级管理员'); -INSERT INTO `Sys_Menu` VALUES (63, '下拉框绑定设置', '[{\"text\":\"查询\",\"value\":\"Search\"},{\"text\":\"新建\",\"value\":\"Add\"},{\"text\":\"删除\",\"value\":\"Delete\"},{\"text\":\"编辑\",\"value\":\"Update\"},{\"text\":\"导出\",\"value\":\"Export\"}]', '', NULL, 1, 10, 'Sys_Dictionary', 61, '/Sys_Dictionary', '2019-07-12 14:05:58', '超级管理员', '2019-08-16 17:41:15', '超级管理员'); -INSERT INTO `Sys_Menu` VALUES (64, '代码在线生成器', '[{\"text\":\"查询\",\"value\":\"Search\"}]', 'ivu-icon ivu-icon-ios-construct', NULL, 1, 1500, '代码在线生成器', 0, '/coding', '2019-07-12 14:07:55', '超级管理员', '2020-01-08 13:54:50', '超级管理员'); -INSERT INTO `Sys_Menu` VALUES (65, 'Vue+后台代码生成', '[{\"text\":\"查询\",\"value\":\"Search\"},{\"text\":\"新建\",\"value\":\"Add\"},{\"text\":\"删除\",\"value\":\"Delete\"},{\"text\":\"编辑\",\"value\":\"Update\"}]', '', NULL, 1, 10, '/', 64, '/coder', '2019-07-12 14:08:58', '超级管理员', '2019-09-22 23:27:54', '超级管理员'); -INSERT INTO `Sys_Menu` VALUES (71, 'vue权限管理', '[{\"text\":\"查询\",\"value\":\"Search\"},{\"text\":\"编辑\",\"value\":\"Update\"}]', 'ivu-icon ivu-icon-ios-boat', NULL, 1, 1000, 'Sys_Role2', 2, '/permission', '2019-08-10 10:25:36', '超级管理员', NULL, NULL); +INSERT INTO `Sys_Menu` VALUES (2, '用户信息', '[{\"text\":\"查询\",\"value\":\"Search\"}]', 'el-icon-user-solid', NULL, 1, 1600, '.', 0, NULL, '2017-08-28 12:21:13', '2017-08-28 11:12:45', '2021-08-02 02:59:11', '超级管理员', NULL); +INSERT INTO `Sys_Menu` VALUES (3, '角色管理', '[{\"text\":\"查询\",\"value\":\"Search\"},{\"text\":\"新建\",\"value\":\"Add\"},{\"text\":\"删除\",\"value\":\"Delete\"},{\"text\":\"编辑\",\"value\":\"Update\"},{\"text\":\"导出\",\"value\":\"Export\"}]', '', NULL, 1, 900, 'Sys_Role', 2, '/Sys_Role', '2017-09-12 16:20:02', '2017-08-28 14:19:13', '2021-05-02 15:55:09', '超级管理员', NULL); +INSERT INTO `Sys_Menu` VALUES (5, '日志管理', '[{\"text\":\"查询\",\"value\":\"Search\"}]', 'el-icon-info', NULL, 1, 1300, 'xxx', 0, '/', '2017-09-22 17:59:37', '2017-09-22 17:59:37', '2021-08-02 03:00:14', '超级管理员', NULL); +INSERT INTO `Sys_Menu` VALUES (6, '系统日志', '[{\"text\":\"查询\",\"value\":\"Search\"},{\"text\":\"删除\",\"value\":\"Delete\"},{\"text\":\"导出\",\"value\":\"Export\"}]', '', NULL, 1, 0, 'Sys_Log', 5, '/Sys_Log/Manager', '2017-09-22 18:00:25', '2017-09-22 18:0:25', '2019-08-14 16:20:35', '超级管理员', NULL); +INSERT INTO `Sys_Menu` VALUES (9, '用户管理', '[{\"text\":\"查询\",\"value\":\"Search\"},{\"text\":\"新建\",\"value\":\"Add\"},{\"text\":\"删除\",\"value\":\"Delete\"},{\"text\":\"编辑\",\"value\":\"Update\"},{\"text\":\"导入\",\"value\":\"Import\"},{\"text\":\"导出\",\"value\":\"Export\"},{\"text\":\"上传\",\"value\":\"Upload\"},{\"text\":\"审核\",\"value\":\"Audit\"}]', '', NULL, 1, 11110, 'Sys_User', 2, '/Sys_User', NULL, NULL, '2021-05-02 15:56:46', '超级管理员', NULL); +INSERT INTO `Sys_Menu` VALUES (10, '表单与上传下载', '[{\"text\":\"查询\",\"value\":\"Search\"}]', '', NULL, 1, 0, '/', 28, '/formUpload', NULL, NULL, '2019-12-07 11:16:47', '超级管理员', NULL); +INSERT INTO `Sys_Menu` VALUES (11, 'api加载table数据', '[{\"text\":\"查询\",\"value\":\"Search\"}]', '', NULL, 1, 600, 'table2', 12, '/table2', NULL, NULL, '2019-11-14 00:11:17', '超级管理员', NULL); +INSERT INTO `Sys_Menu` VALUES (16, '首页轮播图片', '[{\"text\":\"查询\",\"value\":\"Search\"},{\"text\":\"新建\",\"value\":\"Add\"},{\"text\":\"删除\",\"value\":\"Delete\"},{\"text\":\"编辑\",\"value\":\"Update\"},{\"text\":\"导入\",\"value\":\"Import\"},{\"text\":\"导出\",\"value\":\"Export\"},{\"text\":\"上传\",\"value\":\"Upload\"},{\"text\":\"审核\",\"value\":\"Audit\"}]', '', NULL, 0, 2000, 'App_HomeHeadImages', 15, '/App_HomeHeadImages/Manager', NULL, NULL, '2019-08-12 16:26:44', '超级管理员', NULL); +INSERT INTO `Sys_Menu` VALUES (24, '后台加载table数据', '[{\"text\":\"查询\",\"value\":\"Search\"}]', '', NULL, 0, 750, '/', 56, '/table', NULL, NULL, '2021-07-25 12:26:52', '超级管理员', NULL); +INSERT INTO `Sys_Menu` VALUES (25, '其他组件', '[{\"text\":\"查询\",\"value\":\"Search\"},{\"text\":\"新建\",\"value\":\"Add\"},{\"text\":\"删除\",\"value\":\"Delete\"},{\"text\":\"编辑\",\"value\":\"Update\"},{\"text\":\"导入\",\"value\":\"Import\"},{\"text\":\"导出\",\"value\":\"Export\"},{\"text\":\"上传\",\"value\":\"Upload\"},{\"text\":\"审核\",\"value\":\"Audit\"}]', '', NULL, 1, 1100, '/', 29, '/form6', NULL, NULL, '2019-09-22 23:27:37', '超级管理员', NULL); +INSERT INTO `Sys_Menu` VALUES (26, '文件上传', '[{\"text\":\"查询\",\"value\":\"Search\"}]', '', NULL, 1, 1050, 'volUploadExample', 28, '/volUploadExample', NULL, NULL, '2019-12-17 18:29:50', '超级管理员', NULL); +INSERT INTO `Sys_Menu` VALUES (27, 'table编辑(一)', '[{\"text\":\"查询\",\"value\":\"Search\"}]', '', NULL, 1, 1050, 'vtable', 12, '/table1', NULL, NULL, '2021-03-20 15:20:43', '超级管理员', NULL); +INSERT INTO `Sys_Menu` VALUES (30, '图表', '[{\"text\":\"查询\",\"value\":\"Search\"}]', '', NULL, 1, 100000, 'App_PriceTendency', 34, '/chart', NULL, NULL, '2019-11-14 00:07:26', '超级管理员', NULL); +INSERT INTO `Sys_Menu` VALUES (31, '图表+表单', '[{\"text\":\"查询\",\"value\":\"Search\"}]', '', NULL, 1, 950, 'App_Comment', 34, '/formChart', NULL, NULL, '2019-11-14 00:07:51', '超级管理员', NULL); +INSERT INTO `Sys_Menu` VALUES (33, '完整table+forms', '[{\"text\":\"查询\",\"value\":\"Search\"}]', '', NULL, 2, 800, 'tableForms', 12, '/tableForms', NULL, NULL, '2021-08-03 09:51:26', '超级管理员', NULL); +INSERT INTO `Sys_Menu` VALUES (35, '可编辑的table', '[{\"text\":\"查询\",\"value\":\"Search\"}]', '', NULL, 0, 730, 'editTable', 56, '/editTable', NULL, NULL, '2021-07-25 12:26:55', '超级管理员', NULL); +INSERT INTO `Sys_Menu` VALUES (36, '表单一对多table', '[{\"text\":\"查询\",\"value\":\"Search\"},{\"text\":\"新建\",\"value\":\"Add\"},{\"text\":\"删除\",\"value\":\"Delete\"},{\"text\":\"编辑\",\"value\":\"Update\"},{\"text\":\"导入\",\"value\":\"Import\"},{\"text\":\"导出\",\"value\":\"Export\"}]', '', NULL, 1, 950, 'App_TransactionAvgPrice1', 32, '/multi1', NULL, NULL, '2019-11-14 00:03:19', '超级管理员', NULL); +INSERT INTO `Sys_Menu` VALUES (37, '表单+图表', '[{\"text\":\"查询\",\"value\":\"Search\"},{\"text\":\"新建\",\"value\":\"Add\"},{\"text\":\"删除\",\"value\":\"Delete\"},{\"text\":\"编辑\",\"value\":\"Update\"},{\"text\":\"导入\",\"value\":\"Import\"},{\"text\":\"导出\",\"value\":\"Export\"},{\"text\":\"上传\",\"value\":\"Upload\"},{\"text\":\"审核\",\"value\":\"Audit\"}]', '', NULL, 1, 800, 'App_Transaction', 32, '/multi3', NULL, NULL, '2019-11-14 00:04:17', '超级管理员', NULL); +INSERT INTO `Sys_Menu` VALUES (42, '主从表单明细一对多', '[{\"text\":\"查询\",\"value\":\"Search\"},{\"text\":\"新建\",\"value\":\"Add\"},{\"text\":\"删除\",\"value\":\"Delete\"},{\"text\":\"编辑\",\"value\":\"Update\"},{\"text\":\"导出\",\"value\":\"Export\"}]', '', NULL, 2, 0, 'SellOrder1', 32, '/multi4', NULL, NULL, '2021-08-03 09:51:10', '超级管理员', NULL); +INSERT INTO `Sys_Menu` VALUES (45, '不用节点放此处', '', '', NULL, 0, 0, '/', 0, NULL, NULL, NULL, '2022-08-19 16:30:43', '超级管理员', 0); +INSERT INTO `Sys_Menu` VALUES (49, '基础只读表单', '[{\"text\":\"查询\",\"value\":\"Search\"},{\"text\":\"导入\",\"value\":\"Import\"},{\"text\":\"导出\",\"value\":\"Export\"},{\"text\":\"上传\",\"value\":\"Upload\"}]', '', NULL, 1, 1000, 'App_Appointment', 48, '/App_Appointment', '2019-07-12 13:28:17', '超级管理员', '2022-03-26 01:33:01', '超级管理员', 0); +INSERT INTO `Sys_Menu` VALUES (50, '自动绑定下拉框', '[{\"text\":\"查询\",\"value\":\"Search\"},{\"text\":\"新建\",\"value\":\"Add\"},{\"text\":\"删除\",\"value\":\"Delete\"},{\"text\":\"编辑\",\"value\":\"Update\"}]', '', NULL, 1, 900, 'App_TransactionAvgPrice', 48, '/App_TransactionAvgPrice', '2019-07-12 13:53:32', '超级管理员', '2020-12-27 13:34:36', '超级管理员', NULL); +INSERT INTO `Sys_Menu` VALUES (51, '主从一对多弹出框(4)', '[{\"text\":\"查询\",\"value\":\"Search\"},{\"text\":\"新建\",\"value\":\"Add\"},{\"text\":\"删除\",\"value\":\"Delete\"},{\"text\":\"编辑\",\"value\":\"Update\"},{\"text\":\"导出\",\"value\":\"Export\"},{\"text\":\"审核\",\"value\":\"Audit\"}]', '', NULL, 1, 800, 'App_ReportPrice', 74, '/App_ReportPrice', '2019-07-12 13:55:21', '超级管理员', '2021-03-14 23:53:29', '超级管理员', NULL); +INSERT INTO `Sys_Menu` VALUES (52, '导入导出表单', '[{\"text\":\"查询\",\"value\":\"Search\"},{\"text\":\"新建\",\"value\":\"Add\"},{\"text\":\"删除\",\"value\":\"Delete\"},{\"text\":\"编辑\",\"value\":\"Update\"},{\"text\":\"导入\",\"value\":\"Import\"},{\"text\":\"导出\",\"value\":\"Export\"}]', '', NULL, 1, 600, 'App_Transaction', 48, '/App_Transaction', '2019-07-12 13:56:15', '超级管理员', '2019-10-31 13:23:37', '超级管理员', NULL); +INSERT INTO `Sys_Menu` VALUES (57, '单列表单', '[{\"text\":\"查询\",\"value\":\"Search\"}]', '', NULL, 1, 1000, '.', 56, '/form1', '2019-07-12 14:01:12', '超级管理员', '2019-09-20 13:59:00', '超级管理员', NULL); +INSERT INTO `Sys_Menu` VALUES (58, '两列表单', '[{\"text\":\"查询\",\"value\":\"Search\"}]', '', NULL, 1, 900, '两列表单', 56, '/form2', '2019-07-12 14:01:43', '超级管理员', '2019-09-20 13:59:03', '超级管理员', NULL); +INSERT INTO `Sys_Menu` VALUES (59, '多列表单自动数据源', '[{\"text\":\"查询\",\"value\":\"Search\"}]', '', NULL, 1, 800, '多列表单', 56, '/form3', '2019-07-12 14:02:17', '超级管理员', '2019-12-17 11:08:06', '超级管理员', NULL); +INSERT INTO `Sys_Menu` VALUES (60, 'Table+表单', '[{\"text\":\"查询\",\"value\":\"Search\"}]', '', NULL, 1, 700, 'Table+表单', 56, '/form4', '2019-07-12 14:03:14', '超级管理员', '2019-09-20 13:59:09', '超级管理员', NULL); +INSERT INTO `Sys_Menu` VALUES (61, '系统设置', '[{\"text\":\"查询\",\"value\":\"Search\"}]', 'el-icon-setting', NULL, 1, 1350, '系统', 0, '/', '2019-07-12 14:04:04', '超级管理员', '2021-08-02 02:59:47', '超级管理员', NULL); +INSERT INTO `Sys_Menu` VALUES (62, '菜单设置', '[{\"text\":\"查询\",\"value\":\"Search\"},{\"text\":\"新建\",\"value\":\"Add\"},{\"text\":\"编辑\",\"value\":\"Update\"}]', '', NULL, 1, 10, 'Sys_Menu', 61, '/sysmenu', '2019-07-12 14:04:35', '超级管理员', '2019-10-31 13:23:09', '超级管理员', NULL); +INSERT INTO `Sys_Menu` VALUES (63, '下拉框绑定设置', '[{\"text\":\"查询\",\"value\":\"Search\"},{\"text\":\"新建\",\"value\":\"Add\"},{\"text\":\"删除\",\"value\":\"Delete\"},{\"text\":\"编辑\",\"value\":\"Update\"},{\"text\":\"导出\",\"value\":\"Export\"}]', '', NULL, 1, 10, 'Sys_Dictionary', 61, '/Sys_Dictionary', '2019-07-12 14:05:58', '超级管理员', '2019-08-16 17:41:15', '超级管理员', NULL); +INSERT INTO `Sys_Menu` VALUES (64, '代码生成', '[{\"text\":\"查询\",\"value\":\"Search\"}]', 'el-icon-position', NULL, 1, 1500, '代码在线生成器', 0, '/coding', '2019-07-12 14:07:55', '超级管理员', '2021-08-02 02:59:37', '超级管理员', NULL); +INSERT INTO `Sys_Menu` VALUES (65, '代码生成器', '[{\"text\":\"查询\",\"value\":\"Search\"},{\"text\":\"新建\",\"value\":\"Add\"},{\"text\":\"删除\",\"value\":\"Delete\"},{\"text\":\"编辑\",\"value\":\"Update\"}]', '', NULL, 1, 10, '/', 64, '/coder', '2019-07-12 14:08:58', '超级管理员', '2021-05-18 09:50:56', '超级管理员', NULL); +INSERT INTO `Sys_Menu` VALUES (67, '静态页面发布', '[{\"text\":\"查询\",\"value\":\"Search\"},{\"text\":\"新建\",\"value\":\"Add\"},{\"text\":\"删除\",\"value\":\"Delete\"},{\"text\":\"编辑\",\"value\":\"Update\"},{\"text\":\"导出\",\"value\":\"Export\"},{\"text\":\"上传\",\"value\":\"Upload\"}]', '', NULL, 1, 10, 'App_News', 66, '/App_News', '2019-07-12 14:14:16', '超级管理员', '2019-12-22 00:40:46', '超级管理员', NULL); +INSERT INTO `Sys_Menu` VALUES (68, '多弹出框上传', '[{\"text\":\"查询\",\"value\":\"Search\"},{\"text\":\"新建\",\"value\":\"Add\"},{\"text\":\"删除\",\"value\":\"Delete\"},{\"text\":\"编辑\",\"value\":\"Update\"},{\"text\":\"导出\",\"value\":\"Export\"},{\"text\":\"审核\",\"value\":\"Audit\"}]', '', NULL, 1, 700, 'App_Expert', 48, '/App_Expert', '2019-07-12 14:24:15', '超级管理员', '2021-08-03 09:49:40', '超级管理员', NULL); +INSERT INTO `Sys_Menu` VALUES (69, '前端自定义扩展', '', '', NULL, 0, 500, '前端自定义扩展', 48, '/coding', '2019-07-12 14:26:25', '超级管理员', '2019-09-25 17:22:22', '超级管理员', NULL); +INSERT INTO `Sys_Menu` VALUES (70, '编辑器表格换行', '[{\"text\":\"查询\",\"value\":\"Search\"},{\"text\":\"新建\",\"value\":\"Add\"},{\"text\":\"删除\",\"value\":\"Delete\"},{\"text\":\"编辑\",\"value\":\"Update\"},{\"text\":\"导入\",\"value\":\"Import\"},{\"text\":\"导出\",\"value\":\"Export\"},{\"text\":\"上传\",\"value\":\"Upload\"}]', '', NULL, 1, 400, 'App_NewsEditor', 48, '/App_NewsEditor', '2019-07-12 14:28:45', '超级管理员', '2021-08-03 09:50:03', '超级管理员', NULL); +INSERT INTO `Sys_Menu` VALUES (71, '权限管理', '[{\"text\":\"查询\",\"value\":\"Search\"},{\"text\":\"编辑\",\"value\":\"Update\"}]', 'ivu-icon ivu-icon-ios-boat', NULL, 1, 1000, 'Sys_Role2', 2, '/permission', '2019-08-10 10:25:36', '超级管理员', '2020-12-21 23:27:09', '超级管理员', NULL); +INSERT INTO `Sys_Menu` VALUES (73, '移动端H5开发', '[{\"text\":\"查询\",\"value\":\"Search\"}]', '', NULL, 1, NULL, '/', 72, '/app/guide', '2019-08-14 13:16:55', '超级管理员', '2021-05-05 15:21:18', '超级管理员', NULL); +INSERT INTO `Sys_Menu` VALUES (75, '主从一对一(1)', '[{\"text\":\"查询\",\"value\":\"Search\"},{\"text\":\"新建\",\"value\":\"Add\"},{\"text\":\"删除\",\"value\":\"Delete\"},{\"text\":\"编辑\",\"value\":\"Update\"},{\"text\":\"导入\",\"value\":\"Import\"},{\"text\":\"导出\",\"value\":\"Export\"},{\"text\":\"上传\",\"value\":\"Upload\"},{\"text\":\"审核\",\"value\":\"Audit\"}]', '', NULL, 1, 1000, 'SellOrder', 74, '/SellOrder', '2019-08-22 18:12:43', '超级管理员', '2021-03-14 23:52:28', '超级管理员', NULL); +INSERT INTO `Sys_Menu` VALUES (77, '表单只读', '[{\"text\":\"查询\",\"value\":\"Search\"}]', '', NULL, 1, 600, '表单只读', 56, '/form7', '2019-08-26 11:58:55', '超级管理员', '2019-09-20 13:59:13', '超级管理员', NULL); +INSERT INTO `Sys_Menu` VALUES (78, '混合表单一对多', '[{\"text\":\"查询\",\"value\":\"Search\"},{\"text\":\"新建\",\"value\":\"Add\"},{\"text\":\"删除\",\"value\":\"Delete\"},{\"text\":\"编辑\",\"value\":\"Update\"},{\"text\":\"导入\",\"value\":\"Import\"},{\"text\":\"导出\",\"value\":\"Export\"},{\"text\":\"上传\",\"value\":\"Upload\"},{\"text\":\"审核\",\"value\":\"Audit\"}]', '', NULL, 1, 900, '32', 32, '/multi2', '2019-10-12 09:18:41', '超级管理员', '2019-11-14 00:03:51', '超级管理员', NULL); +INSERT INTO `Sys_Menu` VALUES (79, 'wangEditor编辑器', '[{\"text\":\"查询\",\"value\":\"Search\"}]', '', NULL, 1, 100, 'WangEditor编辑器', 66, '/kindEditor', '2019-12-22 00:36:10', '超级管理员', '2021-09-05 21:50:33', '超级管理员', NULL); +INSERT INTO `Sys_Menu` VALUES (80, '静态页面列表', '[{\"text\":\"查询\",\"value\":\"Search\"}]', '', NULL, 1, 0, 'htmlList', 66, '/htmlList', '2019-12-22 00:36:54', '超级管理员', '2019-12-21 22:50:41', NULL, NULL); +INSERT INTO `Sys_Menu` VALUES (81, '后台参数校验', '[{\"text\":\"查询\",\"value\":\"Search\"}]', '', NULL, 1, 0, '/', 41, '/validator', '2020-02-02 20:01:59', '超级管理员', '2020-02-02 20:01:16', NULL, NULL); +INSERT INTO `Sys_Menu` VALUES (82, '数字排版', '[{\"text\":\"查询\",\"value\":\"Search\"}]', '', NULL, 1, 0, 'flex', 34, '/flex', '2020-04-07 23:55:33', '超级管理员', '2019-11-15 14:32:56', NULL, NULL); +INSERT INTO `Sys_Menu` VALUES (83, '从表图片上传', '[{\"text\":\"查询\",\"value\":\"Search\"},{\"text\":\"新建\",\"value\":\"Add\"},{\"text\":\"删除\",\"value\":\"Delete\"},{\"text\":\"编辑\",\"value\":\"Update\"},{\"text\":\"导出\",\"value\":\"Export\"}]', '', NULL, 1, 0, 'vSellorderImg', 74, '/vSellorderImg', '2020-04-07 23:56:22', '超级管理员', '2020-04-07 23:56:28', '超级管理员', NULL); +INSERT INTO `Sys_Menu` VALUES (85, 'tree与代码生成页面', '[{\"text\":\"查询\",\"value\":\"Search\"},{\"text\":\"新建\",\"value\":\"Add\"},{\"text\":\"删除\",\"value\":\"Delete\"},{\"text\":\"编辑\",\"value\":\"Update\"}]', '', NULL, 1, 100, 'treetable1', 84, '/treetable1', '2020-04-26 20:20:28', '超级管理员', '2019-11-15 14:32:32', NULL, NULL); +INSERT INTO `Sys_Menu` VALUES (86, 'tree自定义table数据', '[{\"text\":\"查询\",\"value\":\"Search\"}]', '', NULL, 1, 10, 'treetable2', 84, '/treetable2', '2020-04-26 20:20:57', '超级管理员', '2020-04-26 20:21:34', '超级管理员', NULL); +INSERT INTO `Sys_Menu` VALUES (89, '流程管理', '[{\"text\":\"查询\",\"value\":\"Search\"}]', 'el-icon-s-operation', NULL, 1, 1765, '.', 0, '', '2020-11-29 16:49:27', '超级管理员', '2022-07-25 03:04:30', '超级管理员', 0); +INSERT INTO `Sys_Menu` VALUES (90, '审批流程', '[{\"text\":\"查询\",\"value\":\"Search\"},{\"text\":\"新建\",\"value\":\"Add\"},{\"text\":\"删除\",\"value\":\"Delete\"},{\"text\":\"编辑\",\"value\":\"Update\"},{\"text\":\"导出\",\"value\":\"Export\"}]', '', NULL, 1, 2000, 'Sys_WorkFlow', 89, '/Sys_WorkFlow', '2020-11-29 16:49:42', '超级管理员', '2022-08-15 04:33:07', '超级管理员', 0); +INSERT INTO `Sys_Menu` VALUES (91, '多列合并显示', '[{\"text\":\"查询\",\"value\":\"Search\"},{\"text\":\"新建\",\"value\":\"Add\"},{\"text\":\"删除\",\"value\":\"Delete\"},{\"text\":\"编辑\",\"value\":\"Update\"},{\"text\":\"导入\",\"value\":\"Import\"},{\"text\":\"导出\",\"value\":\"Export\"}]', '', NULL, 1, 0, '/App_Expert', 48, '/App_Expert2', '2021-03-06 17:47:23', '超级管理员', '2021-02-28 22:18:37', NULL, NULL); +INSERT INTO `Sys_Menu` VALUES (92, '主从一对一(2)', '[{\"text\":\"查询\",\"value\":\"Search\"},{\"text\":\"新建\",\"value\":\"Add\"},{\"text\":\"删除\",\"value\":\"Delete\"},{\"text\":\"编辑\",\"value\":\"Update\"},{\"text\":\"导入\",\"value\":\"Import\"},{\"text\":\"导出\",\"value\":\"Export\"}]', '', NULL, 1, 890, 'SellOrder2', 74, '/SellOrder2', '2021-03-14 23:52:46', '超级管理员', '2021-03-14 23:52:54', '超级管理员', NULL); +INSERT INTO `Sys_Menu` VALUES (93, '主从一对一(3)', '[{\"text\":\"查询\",\"value\":\"Search\"},{\"text\":\"新建\",\"value\":\"Add\"},{\"text\":\"编辑\",\"value\":\"Update\"},{\"text\":\"导入\",\"value\":\"Import\"},{\"text\":\"导出\",\"value\":\"Export\"}]', '', NULL, 1, 880, 'SellOrder3', 74, '/SellOrder3', '2021-03-14 23:53:50', '超级管理员', '2021-03-14 23:52:54', NULL, NULL); +INSERT INTO `Sys_Menu` VALUES (94, '在线表格编辑', '[{\"text\":\"查询\",\"value\":\"Search\"},{\"text\":\"新建\",\"value\":\"Add\"},{\"text\":\"删除\",\"value\":\"Delete\"},{\"text\":\"编辑\",\"value\":\"Update\"}]', '', NULL, 1, 0, 'App_Transaction2', 48, '/App_Transaction2', '2021-03-20 15:19:14', '超级管理员', '2021-02-28 22:18:37', NULL, NULL); +INSERT INTO `Sys_Menu` VALUES (95, 'table编辑(二)', '[{\"text\":\"查询\",\"value\":\"Search\"},{\"text\":\"新建\",\"value\":\"Add\"},{\"text\":\"删除\",\"value\":\"Delete\"},{\"text\":\"编辑\",\"value\":\"Update\"}]', '', NULL, 1, 1040, 'table3', 12, '/table3', '2021-03-20 15:21:05', '超级管理员', '2021-03-20 15:21:07', '超级管理员', NULL); +INSERT INTO `Sys_Menu` VALUES (96, 'treetable', '[{\"text\":\"查询\",\"value\":\"Search\"}]', '', NULL, 1, 0, 'treetable3', 84, 'treetable3', '2021-05-02 15:54:23', '超级管理员', '2019-11-15 14:32:32', NULL, NULL); +INSERT INTO `Sys_Menu` VALUES (97, '角色管理(tree)', '[{\"text\":\"查询\",\"value\":\"Search\"},{\"text\":\"新建\",\"value\":\"Add\"},{\"text\":\"删除\",\"value\":\"Delete\"},{\"text\":\"编辑\",\"value\":\"Update\"}]', '', NULL, 1, 0, 'Sys_Role1', 2, '/Sys_Role1', '2021-05-02 15:56:15', '超级管理员', '2021-05-02 18:29:18', '超级管理员', NULL); +INSERT INTO `Sys_Menu` VALUES (98, '低代码设计器', '[{\"text\":\"查询\",\"value\":\"Search\"}]', 'el-icon-news', NULL, 1, 3000, '.', 0, '', '2021-08-30 02:48:10', '超级管理员', '2022-03-27 02:14:48', '超级管理员', NULL); +INSERT INTO `Sys_Menu` VALUES (99, '低代码设计器', '[{\"text\":\"查询\",\"value\":\"Search\"}]', '', NULL, 1, 1000, '.', 98, '/formDraggable', '2021-08-30 02:48:34', '超级管理员', '2022-03-27 02:15:01', '超级管理员', NULL); +INSERT INTO `Sys_Menu` VALUES (100, '明细表', '[{\"text\":\"查询\",\"value\":\"Search\"}]', '', NULL, 2, 0, 'SellOrderList', 74, '', '2021-09-27 00:47:23', '超级管理员', '2021-03-14 23:52:28', NULL, NULL); +INSERT INTO `Sys_Menu` VALUES (101, '表单配置', '[{\"text\":\"查询\",\"value\":\"Search\"},{\"text\":\"新建\",\"value\":\"Add\"},{\"text\":\"删除\",\"value\":\"Delete\"},{\"text\":\"导出\",\"value\":\"Export\"}]', '', NULL, 1, 900, 'FormDesignOptions', 98, '/FormDesignOptions', '2022-01-03 19:32:02', '超级管理员', '2022-03-27 03:02:12', '超级管理员', NULL); +INSERT INTO `Sys_Menu` VALUES (102, '数据收集', '[{\"text\":\"查询\",\"value\":\"Search\"},{\"text\":\"导出\",\"value\":\"Export\"}]', '', NULL, 1, 0, 'formCollectionResultTree', 98, '/formCollectionResultTree', '2022-01-03 19:33:09', '超级管理员', '2022-01-10 10:28:14', '超级管理员', NULL); +INSERT INTO `Sys_Menu` VALUES (103, '多页签', '[{\"text\":\"查询\",\"value\":\"Search\"}]', '', NULL, 1, 0, '.', 105, '/tabsTable', '2022-01-08 17:14:01', '超级管理员', '2022-01-08 18:06:44', '超级管理员', NULL); +INSERT INTO `Sys_Menu` VALUES (104, '多表头', '[{\"text\":\"查询\",\"value\":\"Search\"},{\"text\":\"新建\",\"value\":\"Add\"},{\"text\":\"删除\",\"value\":\"Delete\"},{\"text\":\"编辑\",\"value\":\"Update\"}]', '', NULL, 1, 0, '.', 105, '/App_Appointment2', '2022-01-08 17:14:44', '超级管理员', '2022-01-08 18:06:49', '超级管理员', NULL); +INSERT INTO `Sys_Menu` VALUES (106, '数据收集(表数据)', '[{\"text\":\"查询\",\"value\":\"Search\"},{\"text\":\"导出\",\"value\":\"Export\"}]', '', NULL, 2, 0, 'FormCollectionObject', 98, '/FormCollectionObject', '2022-01-10 10:28:31', '超级管理员', '2022-01-10 10:28:34', '超级管理员', NULL); +INSERT INTO `Sys_Menu` VALUES (108, '只读页面', '[{\"text\":\"查询\",\"value\":\"Search\"}]', '', NULL, 1, 10, 'App_Appointment', 107, 'pages/order/App_Appointment/App_Appointment', '2022-03-26 00:59:36', '超级管理员', '2022-03-27 09:00:19', '超级管理员', 1); +INSERT INTO `Sys_Menu` VALUES (109, '水平显示', '[{\"text\":\"查询\",\"value\":\"Search\"}]', '', NULL, 1, 0, '.', 107, '/pages/order/App_Appointment1/App_Appointment1', '2022-03-26 01:00:38', '超级管理员', '2022-03-26 01:10:16', '超级管理员', 1); +INSERT INTO `Sys_Menu` VALUES (111, '数据源绑定', '[{\"text\":\"查询\",\"value\":\"Search\"},{\"text\":\"新建\",\"value\":\"Add\"},{\"text\":\"删除\",\"value\":\"Delete\"},{\"text\":\"编辑\",\"value\":\"Update\"}]', '', NULL, 1, 10, 'App_TransactionAvgPrice', 110, 'pages/appmanager/App_TransactionAvgPrice/App_TransactionAvgPrice', '2022-03-26 02:04:58', '超级管理员', '2022-03-27 09:00:13', '超级管理员', 1); +INSERT INTO `Sys_Menu` VALUES (113, '事件绑定', '[{\"text\":\"查询\",\"value\":\"Search\"},{\"text\":\"新建\",\"value\":\"Add\"},{\"text\":\"删除\",\"value\":\"Delete\"},{\"text\":\"编辑\",\"value\":\"Update\"}]', '', NULL, 1, 10, 'App_Transaction', 112, '/pages/appmanager/App_Transaction/App_Transaction', '2022-03-26 03:09:17', '超级管理员', '2022-03-27 09:00:09', '超级管理员', 1); +INSERT INTO `Sys_Menu` VALUES (114, '格式化', '[{\"text\":\"查询\",\"value\":\"Search\"},{\"text\":\"新建\",\"value\":\"Add\"},{\"text\":\"删除\",\"value\":\"Delete\"},{\"text\":\"编辑\",\"value\":\"Update\"}]', '', NULL, 1, 0, '.', 112, '/pages/appmanager/App_Transaction1/App_Transaction1', '2022-03-26 03:09:45', '超级管理员', '2022-03-26 22:39:35', '超级管理员', 1); +INSERT INTO `Sys_Menu` VALUES (116, '主表1对1', '[{\"text\":\"查询\",\"value\":\"Search\"},{\"text\":\"新建\",\"value\":\"Add\"},{\"text\":\"删除\",\"value\":\"Delete\"},{\"text\":\"编辑\",\"value\":\"Update\"}]', '', NULL, 1, 0, 'SellOrder', 115, '/pages/order/SellOrder/SellOrder', '2022-03-26 03:11:13', '超级管理员', '2022-03-26 23:29:38', '超级管理员', 1); +INSERT INTO `Sys_Menu` VALUES (118, '表单配置', '[{\"text\":\"查询\",\"value\":\"Search\"}]', '', NULL, 1, 10, '.', 117, '/pages/form/form2', '2022-03-26 03:12:39', '超级管理员', '2022-03-27 08:59:33', '超级管理员', 1); +INSERT INTO `Sys_Menu` VALUES (119, '表单只读', '[{\"text\":\"查询\",\"value\":\"Search\"}]', '', NULL, 1, 0, '.', 117, 'pages/form/form1', '2022-03-26 03:12:52', '超级管理员', '2022-03-27 08:59:28', '超级管理员', 1); +INSERT INTO `Sys_Menu` VALUES (121, '列表显示table', '[{\"text\":\"查询\",\"value\":\"Search\"}]', '', NULL, 1, 0, '.', 120, 'pages/table/table2/table2', '2022-03-26 03:13:47', '超级管理员', '2022-03-27 02:43:58', '超级管理员', 1); +INSERT INTO `Sys_Menu` VALUES (122, '表格显示table', '[{\"text\":\"查询\",\"value\":\"Search\"}]', '', NULL, 1, 0, 'App_Expert', 120, '/pages/table/table1/table1', '2022-03-26 03:13:59', '超级管理员', '2022-03-27 02:44:00', '超级管理员', 1); +INSERT INTO `Sys_Menu` VALUES (124, '生成页面扩展组件', '[{\"text\":\"查询\",\"value\":\"Search\"}]', '', NULL, 1, 0, '.', 123, 'pages/pagedemo/pagedemo', '2022-03-26 03:16:51', '超级管理员', '2022-03-27 09:04:15', '超级管理员', 1); +INSERT INTO `Sys_Menu` VALUES (125, '手动绑定数据', '[{\"text\":\"查询\",\"value\":\"Search\"}]', '', NULL, 1, 0, '.', 120, 'pages/table/table3/table3', '2022-03-27 03:02:06', '超级管理员', '2022-03-27 02:15:29', NULL, 1); +INSERT INTO `Sys_Menu` VALUES (126, '消息推送', '[{\"text\":\"查询\",\"value\":\"Search\"}]', 'el-icon-chat-line-round', NULL, 1, 2900, '.', 0, '/signalR', '2022-05-04 12:00:00', '超级管理员', '2022-05-05 15:31:04', '超级管理员', 0); +INSERT INTO `Sys_Menu` VALUES (127, '我的任务', '[{\"text\":\"查询\",\"value\":\"Search\"},{\"text\":\"导出\",\"value\":\"Export\"}]', '', NULL, 1, 1500, 'Sys_WorkFlowTable', 89, '/Sys_WorkFlowTable', '2022-08-15 04:33:28', '超级管理员', '2022-08-15 04:33:39', '超级管理员', 0); +INSERT INTO `Sys_Menu` VALUES (128, '发起流程', '[{\"text\":\"查询\",\"value\":\"Search\"}]', '', NULL, 1, 0, '发起流程', 89, '/flowdemo', '2022-08-15 04:33:54', '超级管理员', '2022-08-15 04:34:33', '超级管理员', 0); -- ---------------------------- -- Table structure for Sys_Province @@ -633,6 +904,64 @@ INSERT INTO `Sys_Province` VALUES (34, '820000', '澳门特别行政区', '港 INSERT INTO `Sys_Province` VALUES (35, 'thd', '桃花岛', '东北'); INSERT INTO `Sys_Province` VALUES (43, '测试1', '测试1', '港澳台'); +-- ---------------------------- +-- Table structure for Sys_QuartzLog +-- ---------------------------- +DROP TABLE IF EXISTS `Sys_QuartzLog`; +CREATE TABLE `Sys_QuartzLog` ( + `LogId` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `Id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `TaskName` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `ElapsedTime` int(11) NULL DEFAULT NULL, + `StratDate` datetime(0) NULL DEFAULT NULL, + `EndDate` datetime(0) NULL DEFAULT NULL, + `Result` int(11) NULL DEFAULT NULL, + `ResponseContent` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL, + `ErrorMsg` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL, + `CreateID` int(11) NULL DEFAULT NULL, + `Creator` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `CreateDate` datetime(0) NULL DEFAULT NULL, + `ModifyID` int(11) NULL DEFAULT NULL, + `Modifier` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `ModifyDate` datetime(0) NULL DEFAULT NULL, + PRIMARY KEY (`LogId`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of Sys_QuartzLog +-- ---------------------------- + +-- ---------------------------- +-- Table structure for Sys_QuartzOptions +-- ---------------------------- +DROP TABLE IF EXISTS `Sys_QuartzOptions`; +CREATE TABLE `Sys_QuartzOptions` ( + `Id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `TaskName` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `GroupName` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `CronExpression` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `Method` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `ApiUrl` varchar(2000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `AuthKey` varchar(2000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `AuthValue` varchar(2000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `LastRunTime` datetime(0) NULL DEFAULT NULL, + `Status` int(11) NULL DEFAULT NULL, + `Describe` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `PostData` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `TimeOut` int(11) NULL DEFAULT NULL, + `CreateID` int(11) NULL DEFAULT NULL, + `Creator` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `CreateDate` datetime(0) NULL DEFAULT NULL, + `ModifyID` int(11) NULL DEFAULT NULL, + `Modifier` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `ModifyDate` datetime(0) NULL DEFAULT NULL, + PRIMARY KEY (`Id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of Sys_QuartzOptions +-- ---------------------------- + -- ---------------------------- -- Table structure for Sys_Role -- ---------------------------- @@ -651,17 +980,20 @@ CREATE TABLE `Sys_Role` ( `ParentId` int(11) NOT NULL, `RoleName` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, PRIMARY KEY (`Role_Id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 7 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = COMPACT; +) ENGINE = InnoDB AUTO_INCREMENT = 13 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = COMPACT; -- ---------------------------- -- Records of Sys_Role -- ---------------------------- -INSERT INTO `Sys_Role` VALUES (1, '2018-08-23 11:46:06', ' ', NULL, '无', 0, 1, '测试超级管理员', '2018-09-06 17:08:35', 1000, 0, '超级管理员'); -INSERT INTO `Sys_Role` VALUES (2, '2018-08-23 11:46:52', ' 小编', NULL, '1', 0, 1, '超级管理员', '2019-12-08 20:15:46', NULL, 1, '测试管理员'); -INSERT INTO `Sys_Role` VALUES (3, '2018-08-23 11:47:10', '小编', NULL, '无', 0, 1, '超级管理员', '2019-12-08 20:15:45', NULL, 1, '小编'); -INSERT INTO `Sys_Role` VALUES (4, '2018-08-23 11:47:41', '测试超级管理员', NULL, '无 ', 0, 1, '超级管理员', '2019-12-11 17:16:28', NULL, 1, '信息员'); -INSERT INTO `Sys_Role` VALUES (5, '2019-05-30 10:59:13', '超级管理员', NULL, '还没想好', NULL, 1, '超级管理员', '2019-12-08 20:16:43', NULL, 1, '主管'); -INSERT INTO `Sys_Role` VALUES (6, '2020-04-26 20:22:17', '超级管理员', NULL, NULL, NULL, 1, '', NULL, NULL, 2, '测试003'); +INSERT INTO `Sys_Role` VALUES (1, '2018-08-23 11:46:06', 'admin', NULL, '无', 0, 1, '测试超级管理员', '2018-09-06 17:08:35', 1000, 0, '超级管理员'); +INSERT INTO `Sys_Role` VALUES (2, '2018-08-23 11:46:52', 'admin', NULL, '1', 0, 1, '超级管理员', '2019-12-08 20:15:46', NULL, 1, '测试管理员'); +INSERT INTO `Sys_Role` VALUES (3, '2018-08-23 11:47:10', 'admin', NULL, '无', 0, 1, '超级管理员', '2020-11-16 14:16:57', NULL, 5, '小编'); +INSERT INTO `Sys_Role` VALUES (4, '2018-08-23 11:47:41', 'admin', NULL, '无 ', 0, 1, '超级管理员', '2020-11-16 14:17:00', NULL, 0, '信息员'); +INSERT INTO `Sys_Role` VALUES (5, '2019-05-30 10:59:13', 'admin', NULL, '还没想好', NULL, 1, '超级管理员', '2019-12-08 20:16:43', NULL, 0, '主管'); +INSERT INTO `Sys_Role` VALUES (8, '2021-05-02 18:33:49', '超级管理员', NULL, NULL, NULL, 1, '', NULL, NULL, 4, '二级角色'); +INSERT INTO `Sys_Role` VALUES (10, '2021-07-09 22:28:18', '超级管理员', NULL, NULL, NULL, 1, '', NULL, NULL, 8, '三级角色'); +INSERT INTO `Sys_Role` VALUES (11, '2021-07-09 22:29:07', '超级管理员', NULL, NULL, NULL, 1, '超级管理员', '2021-08-06 11:22:06', NULL, 8, '四级角色'); +INSERT INTO `Sys_Role` VALUES (12, '2022-03-23 09:47:00', '超级管理员', NULL, NULL, NULL, 1, '', NULL, NULL, 2, '测试角色'); -- ---------------------------- -- Table structure for Sys_RoleAuth @@ -678,11 +1010,131 @@ CREATE TABLE `Sys_RoleAuth` ( `Role_Id` int(11) NULL DEFAULT NULL, `User_Id` int(11) NULL DEFAULT NULL, PRIMARY KEY (`Auth_Id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 213 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = COMPACT; +) ENGINE = InnoDB AUTO_INCREMENT = 271 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = COMPACT; -- ---------------------------- -- Records of Sys_RoleAuth -- ---------------------------- +INSERT INTO `Sys_RoleAuth` VALUES (151, 'Search', '2020-05-05 12:05:34', '超级管理员', 30, '超级管理员', '2020-05-05 12:05:34', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (152, 'Search,Add,Delete,Update,Export', '2020-05-05 12:05:34', '超级管理员', 3, '超级管理员', '2020-05-05 12:05:34', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (153, 'Search,Add,Delete,Update,Export,Audit', '2020-05-05 12:05:34', '超级管理员', 51, '超级管理员', '2020-05-05 12:05:34', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (154, 'Search', '2020-05-05 12:05:34', '超级管理员', 59, '超级管理员', '2020-05-05 12:05:34', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (155, 'Search,Add,Delete,Update,Import,Export,Upload,Audit', '2020-05-05 12:05:34', '超级管理员', 37, '超级管理员', '2020-05-05 12:05:34', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (156, 'Search', '2020-05-05 12:05:34', '超级管理员', 33, '超级管理员', '2020-05-05 12:05:34', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (157, '', '2020-05-05 12:05:34', '超级管理员', 24, '超级管理员', '2020-05-05 12:05:34', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (158, '', '2020-05-05 12:05:34', '超级管理员', 35, '超级管理员', '2020-05-05 12:05:34', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (159, 'Search', '2020-05-05 12:05:34', '超级管理员', 60, '超级管理员', '2020-05-05 12:05:34', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (160, 'Search,Add,Delete,Update,Export,Audit', '2020-05-05 12:05:34', '超级管理员', 68, '超级管理员', '2021-03-06 17:47:32', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (161, 'Search', '2020-05-05 12:05:34', '超级管理员', 77, '超级管理员', '2020-05-05 12:05:34', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (162, 'Search,Add,Delete,Update,Import,Export', '2020-05-05 12:05:34', '超级管理员', 52, '超级管理员', '2020-05-05 12:05:34', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (163, 'Search', '2020-05-05 12:05:34', '超级管理员', 11, '超级管理员', '2020-05-05 12:05:34', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (164, 'Search,Add,Delete,Update', '2020-05-05 12:05:34', '超级管理员', 85, '超级管理员', '2020-05-05 12:05:34', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (165, 'Search', '2020-05-05 12:05:34', '超级管理员', 79, '超级管理员', '2020-05-05 12:05:34', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (166, 'Search', '2020-05-05 12:05:34', '超级管理员', 86, '超级管理员', '2020-05-05 12:05:34', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (167, 'Search,Add,Delete,Update,Export,Upload', '2020-05-05 12:05:34', '超级管理员', 67, '超级管理员', '2020-05-05 12:05:34', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (168, 'Search,Add,Delete,Update', '2020-05-05 12:05:34', '超级管理员', 65, '超级管理员', '2020-05-05 12:05:34', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (169, 'Search,Add,Update', '2020-05-05 12:05:34', '超级管理员', 62, '超级管理员', '2020-05-05 12:05:34', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (170, 'Search,Add,Delete,Update,Export', '2020-05-05 12:05:34', '超级管理员', 63, '超级管理员', '2020-05-05 12:05:34', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (171, 'Search,Add,Delete,Update,Export', '2020-05-05 12:05:34', '超级管理员', 83, '超级管理员', '2020-05-05 12:05:34', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (172, 'Search', '2020-05-05 12:05:34', '超级管理员', 80, '超级管理员', '2020-05-05 12:05:34', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (173, 'Search', '2020-05-05 12:05:34', '超级管理员', 81, '超级管理员', '2020-05-05 12:05:34', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (174, 'Search', '2020-05-05 12:05:34', '超级管理员', 82, '超级管理员', '2020-05-05 12:05:34', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (175, 'Search,Add,Delete,Update,Export', '2020-05-05 12:05:34', '超级管理员', 42, '超级管理员', '2020-05-05 12:05:34', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (176, 'Search', '2020-05-05 12:05:34', '超级管理员', 10, '超级管理员', '2020-05-05 12:05:34', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (177, 'Search,Add,Delete,Update,Import,Export,Upload,Audit', '2020-05-05 12:05:34', '超级管理员', 78, '超级管理员', '2020-05-05 12:05:34', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (178, 'Search,Delete,Export', '2020-05-05 12:05:34', '超级管理员', 6, '超级管理员', '2020-05-05 12:05:34', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (179, 'Search,Add,Delete,Update', '2020-05-05 12:05:34', '超级管理员', 50, '超级管理员', '2020-05-05 12:05:34', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (180, 'Search,Add,Delete,Update,Import,Export', '2020-05-05 12:05:34', '超级管理员', 36, '超级管理员', '2020-05-05 12:05:34', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (181, 'Search,Add,Delete,Update,Import,Export,Upload,Audit', '2020-05-05 12:05:34', '超级管理员', 9, '超级管理员', '2020-05-05 12:05:34', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (182, 'Search', '2020-05-05 12:05:34', '超级管理员', 48, '超级管理员', '2021-01-16 12:14:19', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (183, 'Search', '2020-05-05 12:05:34', '超级管理员', 74, '超级管理员', '2020-05-05 12:05:34', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (184, 'Search', '2020-05-05 12:05:34', '超级管理员', 56, '超级管理员', '2020-05-05 12:05:34', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (185, 'Search', '2020-05-05 12:05:34', '超级管理员', 32, '超级管理员', '2020-05-05 12:05:34', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (186, 'Search', '2020-05-05 12:05:34', '超级管理员', 34, '超级管理员', '2020-05-05 12:05:34', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (187, 'Search', '2020-05-05 12:05:34', '超级管理员', 12, '超级管理员', '2020-05-05 12:05:34', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (188, 'Search', '2020-05-05 12:05:34', '超级管理员', 84, '超级管理员', '2020-05-05 12:05:34', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (189, 'Search', '2020-05-05 12:05:34', '超级管理员', 41, '超级管理员', '2020-05-05 12:05:34', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (190, 'Search,Add,Delete,Update,Import,Export,Upload,Audit', '2020-05-05 12:05:34', '超级管理员', 28, '超级管理员', '2020-05-05 12:05:34', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (191, 'Search', '2020-05-05 12:05:34', '超级管理员', 66, '超级管理员', '2020-05-05 12:05:34', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (192, 'Search', '2020-05-05 12:05:34', '超级管理员', 29, '超级管理员', '2020-05-05 12:05:34', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (193, 'Search', '2020-05-05 12:05:34', '超级管理员', 72, '超级管理员', '2020-05-05 12:05:34', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (194, 'Search', '2020-05-05 12:05:34', '超级管理员', 2, '超级管理员', '2020-05-05 12:05:34', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (195, 'Search', '2020-05-05 12:05:34', '超级管理员', 64, '超级管理员', '2020-05-05 12:05:34', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (196, 'Search', '2020-05-05 12:05:34', '超级管理员', 61, '超级管理员', '2020-05-05 12:05:34', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (197, 'Search', '2020-05-05 12:05:34', '超级管理员', 5, '超级管理员', '2020-05-05 12:05:34', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (198, 'Search,Add,Delete,Update,Import,Export,Upload,Audit', '2020-05-05 12:05:34', '超级管理员', 25, '超级管理员', '2020-05-05 12:05:34', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (199, 'Search', '2020-05-05 12:05:34', '超级管理员', 26, '超级管理员', '2020-05-05 12:05:34', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (200, 'Search', '2020-05-05 12:05:34', '超级管理员', 27, '超级管理员', '2020-05-05 12:05:34', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (201, 'Search,Add,Delete,Update,Import,Export,Upload,Audit', '2020-05-05 12:05:34', '超级管理员', 75, '超级管理员', '2020-05-05 12:05:34', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (202, 'Search', '2020-05-05 12:05:34', '超级管理员', 57, '超级管理员', '2020-05-05 12:05:34', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (203, 'Search,Import,Export,Upload', '2020-05-05 12:05:34', '超级管理员', 49, '超级管理员', '2022-03-26 03:22:47', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (204, 'Search,Update', '2020-05-05 12:05:34', '超级管理员', 71, '超级管理员', '2020-05-05 12:05:34', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (205, 'Search', '2020-05-05 12:05:34', '超级管理员', 31, '超级管理员', '2020-05-05 12:05:34', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (206, 'Search', '2020-05-05 12:05:34', '超级管理员', 58, '超级管理员', '2020-05-05 12:05:34', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (207, 'Search', '2020-05-05 12:05:34', '超级管理员', 73, '超级管理员', '2020-05-05 12:05:34', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (208, 'Search', '2020-05-25 13:15:51', '超级管理员', 48, '超级管理员', '2020-05-25 13:15:51', 4, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (209, 'Search,Add,Update,Import,Export,Upload', '2020-05-25 13:15:51', '超级管理员', 49, '超级管理员', '2020-05-25 13:15:51', 4, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (210, 'Search,Add,Delete,Update', '2020-05-25 13:15:51', '超级管理员', 50, '超级管理员', '2020-05-25 13:15:51', 4, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (211, 'Search,Add,Update,Export,Audit', '2020-05-25 13:15:51', '超级管理员', 68, '超级管理员', '2020-05-25 13:15:51', 4, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (212, 'Search,Add,Delete,Update,Import,Export', '2020-05-25 13:15:51', '超级管理员', 52, '超级管理员', '2020-05-25 13:15:51', 4, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (213, 'Search,Import,Export,Upload', '2020-09-11 01:03:11', '演示帐号', 49, '演示帐号', '2020-09-11 01:03:11', 6, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (214, 'Search', '2020-11-29 16:52:52', '超级管理员', 89, '超级管理员', '2020-11-29 16:52:52', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (215, 'Search,Add,Delete,Update,Export', '2020-11-29 16:52:52', '超级管理员', 90, '超级管理员', '2022-07-25 03:10:47', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (216, 'Search,Add,Delete,Update,Import,Export,Upload', '2021-01-16 12:01:58', '超级管理员', 70, '超级管理员', '2021-01-16 12:01:58', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (217, 'Search,Add,Delete,Update,Import,Export', '2021-03-06 17:47:32', '超级管理员', 91, '超级管理员', '2021-03-06 17:47:32', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (218, 'Search,Add,Delete,Update,Import,Export', '2021-03-14 23:56:27', '超级管理员', 92, '超级管理员', '2021-03-14 23:56:27', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (219, 'Search,Add,Update,Import,Export', '2021-03-14 23:56:27', '超级管理员', 93, '超级管理员', '2021-03-14 23:56:27', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (220, 'Search,Add,Delete,Update', '2021-03-20 15:25:20', '超级管理员', 95, '超级管理员', '2021-03-20 15:25:20', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (221, 'Search,Add,Delete,Update', '2021-03-20 15:25:20', '超级管理员', 94, '超级管理员', '2021-03-20 15:25:20', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (222, 'Search', '2021-05-02 15:57:11', '超级管理员', 96, '超级管理员', '2021-05-02 15:57:11', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (223, 'Search', '2021-05-02 15:57:11', '超级管理员', 97, '超级管理员', '2021-05-02 15:57:11', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (224, 'Export', '2021-05-05 15:25:06', '超级管理员', 68, '超级管理员', '2021-05-05 15:25:06', 6, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (225, 'Search', '2021-08-30 02:51:00', '超级管理员', 98, '超级管理员', '2022-03-27 02:41:51', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (226, 'Search', '2021-08-30 02:51:00', '超级管理员', 99, '超级管理员', '2022-03-27 02:41:51', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (227, 'Search', '2021-09-27 00:47:34', '超级管理员', 100, '超级管理员', '2021-09-27 00:47:34', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (228, 'Search', '2022-01-08 17:16:55', '超级管理员', 103, '超级管理员', '2022-01-08 17:16:55', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (229, 'Search,Add,Delete,Update', '2022-01-08 17:16:55', '超级管理员', 104, '超级管理员', '2022-01-08 17:16:55', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (230, 'Search', '2022-01-08 18:07:11', '超级管理员', 105, '超级管理员', '2022-01-08 18:07:11', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (231, 'Search,Add,Delete,Export', '2022-01-08 18:07:11', '超级管理员', 101, '超级管理员', '2022-03-27 02:41:51', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (232, 'Search,Export', '2022-01-08 18:07:11', '超级管理员', 102, '超级管理员', '2022-03-27 02:41:51', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (233, 'Search,Export', '2022-01-10 10:30:29', '超级管理员', 106, '超级管理员', '2022-03-27 02:41:51', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (234, 'Search', '2022-03-26 03:22:47', '超级管理员', 108, '超级管理员', '2022-03-26 03:22:47', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (235, 'Search,Add,Delete,Update', '2022-03-26 03:22:47', '超级管理员', 111, '超级管理员', '2022-03-26 03:22:47', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (236, 'Search,Add,Delete,Update', '2022-03-26 03:22:47', '超级管理员', 114, '超级管理员', '2022-03-26 03:22:47', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (237, 'Search,Add,Delete,Update', '2022-03-26 03:22:47', '超级管理员', 113, '超级管理员', '2022-03-26 03:22:47', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (238, 'Search,Add,Delete,Update', '2022-03-26 03:22:47', '超级管理员', 116, '超级管理员', '2022-03-26 03:22:47', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (239, 'Search', '2022-03-26 03:22:47', '超级管理员', 119, '超级管理员', '2022-03-26 03:22:47', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (240, 'Search', '2022-03-26 03:22:47', '超级管理员', 118, '超级管理员', '2022-03-26 03:22:47', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (241, 'Search', '2022-03-26 03:22:47', '超级管理员', 109, '超级管理员', '2022-03-26 03:22:47', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (242, 'Search', '2022-03-26 03:22:47', '超级管理员', 122, '超级管理员', '2022-03-26 03:22:47', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (243, 'Search', '2022-03-26 03:22:47', '超级管理员', 124, '超级管理员', '2022-03-26 03:22:47', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (244, 'Search', '2022-03-26 03:22:47', '超级管理员', 120, '超级管理员', '2022-03-26 03:22:47', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (245, 'Search', '2022-03-26 03:22:47', '超级管理员', 117, '超级管理员', '2022-03-26 03:22:47', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (246, 'Search', '2022-03-26 03:22:47', '超级管理员', 123, '超级管理员', '2022-03-26 03:22:47', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (247, 'Search', '2022-03-26 03:22:47', '超级管理员', 115, '超级管理员', '2022-03-26 03:22:47', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (248, 'Search', '2022-03-26 03:22:47', '超级管理员', 112, '超级管理员', '2022-03-26 03:22:47', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (249, 'Search', '2022-03-26 03:22:47', '超级管理员', 110, '超级管理员', '2022-03-26 03:22:47', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (250, 'Search', '2022-03-26 03:22:47', '超级管理员', 121, '超级管理员', '2022-03-26 03:22:47', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (251, 'Search', '2022-03-26 03:22:47', '超级管理员', 107, '超级管理员', '2022-03-26 03:22:47', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (252, 'Search', '2022-03-27 02:39:28', '超级管理员', 107, '超级管理员', '2022-03-27 02:39:28', 12, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (253, 'Search', '2022-03-27 02:39:28', '超级管理员', 110, '超级管理员', '2022-03-27 02:39:28', 12, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (254, 'Search', '2022-03-27 02:39:28', '超级管理员', 112, '超级管理员', '2022-03-27 02:39:28', 12, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (255, 'Search', '2022-03-27 02:39:28', '超级管理员', 115, '超级管理员', '2022-03-27 02:39:28', 12, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (256, 'Search', '2022-03-27 02:39:28', '超级管理员', 123, '超级管理员', '2022-03-27 02:39:28', 12, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (257, 'Search', '2022-03-27 02:39:28', '超级管理员', 117, '超级管理员', '2022-03-27 02:39:28', 12, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (258, 'Search', '2022-03-27 02:39:28', '超级管理员', 124, '超级管理员', '2022-03-27 02:39:28', 12, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (259, 'Search', '2022-03-27 02:39:28', '超级管理员', 118, '超级管理员', '2022-03-27 02:39:28', 12, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (260, 'Search', '2022-03-27 02:39:28', '超级管理员', 119, '超级管理员', '2022-03-27 02:39:28', 12, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (261, 'Search,Add,Delete,Update', '2022-03-27 02:39:28', '超级管理员', 116, '超级管理员', '2022-03-27 02:39:28', 12, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (262, 'Search,Add,Delete,Update', '2022-03-27 02:39:28', '超级管理员', 113, '超级管理员', '2022-03-27 02:39:28', 12, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (263, 'Search,Add,Delete,Update', '2022-03-27 02:39:28', '超级管理员', 114, '超级管理员', '2022-03-27 02:39:28', 12, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (264, 'Search,Add,Delete,Update', '2022-03-27 02:39:28', '超级管理员', 111, '超级管理员', '2022-03-27 02:39:28', 12, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (265, 'Search', '2022-03-27 02:39:28', '超级管理员', 108, '超级管理员', '2022-03-27 02:39:28', 12, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (266, 'Search', '2022-03-27 02:39:28', '超级管理员', 109, '超级管理员', '2022-03-27 02:39:28', 12, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (267, 'Search', '2022-03-27 03:02:19', '超级管理员', 125, '超级管理员', '2022-03-27 03:02:19', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (268, 'Search', '2022-05-04 14:45:36', '超级管理员', 126, '超级管理员', '2022-05-04 14:45:36', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (269, 'Search,Export', '2022-08-15 05:02:56', '超级管理员', 127, '超级管理员', '2022-08-15 05:02:56', 2, NULL); +INSERT INTO `Sys_RoleAuth` VALUES (270, 'Search', '2022-08-15 05:02:56', '超级管理员', 128, '超级管理员', '2022-08-15 05:02:56', 2, NULL); -- ---------------------------- -- Table structure for Sys_RoleAuthData @@ -749,23 +1201,23 @@ CREATE TABLE `Sys_TableColumn` ( `TableName` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `Table_Id` int(11) NULL DEFAULT NULL, PRIMARY KEY (`ColumnId`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 764 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = COMPACT; +) ENGINE = InnoDB AUTO_INCREMENT = 865 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = COMPACT; -- ---------------------------- -- Records of Sys_TableColumn -- ---------------------------- -INSERT INTO `Sys_TableColumn` VALUES (20, NULL, NULL, NULL, NULL, '角色ID', 'Role_Id', 'int', 70, '', '2018-06-04 10:14:21', NULL, NULL, '', NULL, NULL, '', NULL, 1, 1, NULL, 1, 0, 1, NULL, '超级管理员', '2020-11-14 14:55:06', 1, 1420, '', NULL, NULL, '', NULL, 'Sys_Role', 2); -INSERT INTO `Sys_TableColumn` VALUES (21, NULL, NULL, NULL, NULL, '父级ID', 'ParentId', 'int', 70, '', '2018-06-04 10:14:21', NULL, NULL, 'roles', NULL, 1, 'cascader', NULL, 1, 1, NULL, 0, 0, 0, NULL, '超级管理员', '2020-11-14 14:55:06', 1, 1410, '', NULL, NULL, '', NULL, 'Sys_Role', 2); -INSERT INTO `Sys_TableColumn` VALUES (22, NULL, NULL, NULL, NULL, '角色名称', 'RoleName', 'string', 90, '', '2018-06-04 10:14:21', NULL, NULL, '', NULL, 1, '', NULL, 1, 1, NULL, 0, 1, 0, 50, '超级管理员', '2020-11-14 14:55:06', 1, 1400, '', NULL, 1, 'text', NULL, 'Sys_Role', 2); -INSERT INTO `Sys_TableColumn` VALUES (23, NULL, NULL, NULL, NULL, '部门ID', 'Dept_Id', 'int', 90, '', '2018-06-04 10:14:21', NULL, NULL, '', NULL, NULL, '', NULL, 1, 0, NULL, 0, 1, 0, NULL, '超级管理员', '2020-11-14 14:55:06', 1, 1390, '', NULL, NULL, '', NULL, 'Sys_Role', 2); -INSERT INTO `Sys_TableColumn` VALUES (24, NULL, NULL, NULL, NULL, '部门名称', 'DeptName', 'string', 90, '', '2018-06-04 10:14:21', NULL, NULL, '', NULL, 2, '', NULL, 1, 1, NULL, 0, 1, 0, 50, '超级管理员', '2020-11-14 14:55:06', 1, 1380, '', NULL, 1, 'text', NULL, 'Sys_Role', 2); -INSERT INTO `Sys_TableColumn` VALUES (25, NULL, NULL, NULL, NULL, '排序', 'OrderNo', 'int', 90, '', '2018-06-04 10:14:21', NULL, NULL, '', NULL, NULL, '', NULL, 1, 0, NULL, 0, 1, 0, NULL, '超级管理员', '2020-11-14 14:55:06', 1, 1370, '', NULL, NULL, '', NULL, 'Sys_Role', 2); -INSERT INTO `Sys_TableColumn` VALUES (26, NULL, NULL, NULL, NULL, '创建人', 'Creator', 'string', 130, '', '2018-06-04 10:14:21', NULL, NULL, '', NULL, 4, '', NULL, 1, 1, NULL, 0, 1, 1, 50, '超级管理员', '2020-11-14 14:55:06', 1, 1360, '', NULL, NULL, '', NULL, 'Sys_Role', 2); -INSERT INTO `Sys_TableColumn` VALUES (27, NULL, NULL, NULL, NULL, '创建时间', 'CreateDate', 'DateTime', 90, '', '2018-06-04 10:14:21', NULL, NULL, '', NULL, 4, 'datetime', NULL, 1, 1, NULL, 0, 1, 1, NULL, '超级管理员', '2020-11-14 14:55:06', 1, 1350, '', NULL, 2, 'datetime', NULL, 'Sys_Role', 2); -INSERT INTO `Sys_TableColumn` VALUES (28, NULL, NULL, NULL, NULL, '修改人', 'Modifier', 'string', 130, '', '2018-06-04 10:14:21', NULL, NULL, '', NULL, 5, '', NULL, 1, 1, NULL, 0, 1, 1, 50, '超级管理员', '2020-11-14 14:55:06', 1, 1340, '', NULL, NULL, '', NULL, 'Sys_Role', 2); -INSERT INTO `Sys_TableColumn` VALUES (29, NULL, NULL, NULL, NULL, '修改时间', 'ModifyDate', 'DateTime', 90, '', '2018-06-04 10:14:21', NULL, NULL, '', NULL, 5, '', NULL, 1, 1, NULL, 0, 1, 1, NULL, '超级管理员', '2020-11-14 14:55:06', 1, 1330, '', NULL, 2, 'datetime', NULL, 'Sys_Role', 2); -INSERT INTO `Sys_TableColumn` VALUES (30, NULL, NULL, NULL, NULL, '', 'DeleteBy', 'string', 90, '', '2018-06-04 10:14:21', NULL, NULL, '', NULL, NULL, '', NULL, 0, 0, NULL, 0, 1, 0, 50, '超级管理员', '2020-11-14 14:55:06', 1, 1320, '', NULL, NULL, '', NULL, 'Sys_Role', 2); -INSERT INTO `Sys_TableColumn` VALUES (31, NULL, NULL, NULL, NULL, '是否启用', 'Enable', 'sbyte', 90, '', '2018-06-04 10:14:21', NULL, NULL, 'enable', NULL, 2, 'switch', NULL, 1, 1, NULL, 0, 1, 0, NULL, '超级管理员', '2020-11-14 14:55:06', 1, 1375, '', NULL, 1, 'select', NULL, 'Sys_Role', 2); +INSERT INTO `Sys_TableColumn` VALUES (20, NULL, NULL, NULL, NULL, '角色ID', 'Role_Id', 'int', 70, '', '2018-06-04 10:14:21', NULL, NULL, '', NULL, NULL, '', NULL, 1, 1, NULL, 1, 0, 1, NULL, '超级管理员', '2022-04-06 22:34:14', 1, 1420, '', NULL, NULL, '', 0, 'Sys_Role', 2); +INSERT INTO `Sys_TableColumn` VALUES (21, NULL, NULL, NULL, NULL, '父级ID', 'ParentId', 'int', 70, '', '2018-06-04 10:14:21', NULL, NULL, 'tree_roles', NULL, 1, 'cascader', NULL, 1, 1, NULL, 0, 0, 0, NULL, '超级管理员', '2022-04-06 22:34:14', 1, 1410, '', NULL, NULL, '', 0, 'Sys_Role', 2); +INSERT INTO `Sys_TableColumn` VALUES (22, NULL, NULL, NULL, NULL, '角色名称', 'RoleName', 'string', 90, '', '2018-06-04 10:14:21', NULL, NULL, '', NULL, 1, '', NULL, 1, 1, NULL, 0, 1, 0, 50, '超级管理员', '2022-04-06 22:34:14', 1, 1400, '', NULL, 1, 'text', 0, 'Sys_Role', 2); +INSERT INTO `Sys_TableColumn` VALUES (23, NULL, NULL, NULL, NULL, '部门ID', 'Dept_Id', 'int', 90, '', '2018-06-04 10:14:21', NULL, NULL, '', NULL, NULL, '', NULL, 1, 0, NULL, 0, 1, 0, NULL, '超级管理员', '2022-04-06 22:34:14', 1, 1390, '', NULL, NULL, '', 0, 'Sys_Role', 2); +INSERT INTO `Sys_TableColumn` VALUES (24, NULL, NULL, NULL, NULL, '部门名称', 'DeptName', 'string', 90, '', '2018-06-04 10:14:21', NULL, NULL, '', NULL, 2, '', NULL, 1, 1, NULL, 0, 1, 0, 50, '超级管理员', '2022-04-06 22:34:14', 1, 1380, '', NULL, 1, 'text', 0, 'Sys_Role', 2); +INSERT INTO `Sys_TableColumn` VALUES (25, NULL, NULL, NULL, NULL, '排序', 'OrderNo', 'int', 90, '', '2018-06-04 10:14:21', NULL, NULL, '', NULL, NULL, '', NULL, 1, 0, NULL, 0, 1, 0, NULL, '超级管理员', '2022-04-06 22:34:14', 1, 1370, '', NULL, NULL, '', 0, 'Sys_Role', 2); +INSERT INTO `Sys_TableColumn` VALUES (26, NULL, NULL, NULL, NULL, '创建人', 'Creator', 'string', 130, '', '2018-06-04 10:14:21', NULL, NULL, '', NULL, 4, '', NULL, 1, 1, NULL, 0, 1, 1, 50, '超级管理员', '2022-04-06 22:34:14', 1, 1360, '', NULL, NULL, '', 0, 'Sys_Role', 2); +INSERT INTO `Sys_TableColumn` VALUES (27, NULL, NULL, NULL, NULL, '创建时间', 'CreateDate', 'DateTime', 90, '', '2018-06-04 10:14:21', NULL, NULL, '', NULL, 4, 'datetime', NULL, 1, 1, NULL, 0, 1, 1, NULL, '超级管理员', '2022-04-06 22:34:14', 1, 1350, '', NULL, 2, 'datetime', 0, 'Sys_Role', 2); +INSERT INTO `Sys_TableColumn` VALUES (28, NULL, NULL, NULL, NULL, '修改人', 'Modifier', 'string', 130, '', '2018-06-04 10:14:21', NULL, NULL, '', NULL, 5, '', NULL, 1, 1, NULL, 0, 1, 1, 50, '超级管理员', '2022-04-06 22:34:14', 1, 1340, '', NULL, NULL, '', 0, 'Sys_Role', 2); +INSERT INTO `Sys_TableColumn` VALUES (29, NULL, NULL, NULL, NULL, '修改时间', 'ModifyDate', 'DateTime', 90, '', '2018-06-04 10:14:21', NULL, NULL, '', NULL, 5, '', NULL, 1, 1, NULL, 0, 1, 1, NULL, '超级管理员', '2022-04-06 22:34:14', 1, 1330, '', NULL, 2, 'datetime', 0, 'Sys_Role', 2); +INSERT INTO `Sys_TableColumn` VALUES (30, NULL, NULL, NULL, NULL, '', 'DeleteBy', 'string', 90, '', '2018-06-04 10:14:21', NULL, NULL, '', NULL, NULL, '', NULL, 0, 0, NULL, 0, 1, 0, 50, '超级管理员', '2022-04-06 22:34:14', 1, 1320, '', NULL, NULL, '', 0, 'Sys_Role', 2); +INSERT INTO `Sys_TableColumn` VALUES (31, NULL, NULL, NULL, NULL, '是否启用', 'Enable', 'sbyte', 90, '', '2018-06-04 10:14:21', NULL, NULL, 'enable', NULL, 2, 'switch', NULL, 1, 1, NULL, 0, 1, 0, NULL, '超级管理员', '2022-04-06 22:34:14', 1, 1375, '', NULL, 1, 'select', 0, 'Sys_Role', 2); INSERT INTO `Sys_TableColumn` VALUES (32, NULL, NULL, NULL, NULL, '字典ID', 'Dic_ID', 'int', 90, NULL, '2018-06-06 14:05:43', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, 0, NULL, 1, 0, 1, NULL, '超级管理员', '2019-08-23 10:17:27', 1, 1300, NULL, NULL, NULL, NULL, NULL, 'Sys_Dictionary', 3); INSERT INTO `Sys_TableColumn` VALUES (33, NULL, NULL, NULL, NULL, '字典名称', 'DicName', 'string', 140, NULL, '2018-06-06 14:05:43', NULL, NULL, NULL, NULL, 1, NULL, NULL, 1, 1, NULL, 0, 0, 0, 100, '超级管理员', '2019-08-23 10:17:27', 1, 1290, NULL, NULL, 1, 'textarea', NULL, 'Sys_Dictionary', 3); INSERT INTO `Sys_TableColumn` VALUES (34, NULL, NULL, NULL, NULL, '父级ID', 'ParentId', 'int', 90, NULL, '2018-06-06 14:05:43', NULL, NULL, NULL, NULL, 1, NULL, NULL, 1, 1, NULL, 0, 0, 0, NULL, '超级管理员', '2019-08-23 10:17:27', 1, 1280, NULL, NULL, 1, NULL, NULL, 'Sys_Dictionary', 3); @@ -782,67 +1234,154 @@ INSERT INTO `Sys_TableColumn` VALUES (44, NULL, NULL, NULL, NULL, '创建时间' INSERT INTO `Sys_TableColumn` VALUES (45, NULL, NULL, NULL, NULL, NULL, 'ModifyID', 'int', 90, NULL, '2018-06-06 14:05:43', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, 0, NULL, 0, 1, 0, NULL, '超级管理员', '2019-08-23 10:17:27', 1, 1170, NULL, NULL, NULL, NULL, NULL, 'Sys_Dictionary', 3); INSERT INTO `Sys_TableColumn` VALUES (46, NULL, NULL, NULL, NULL, '修改人', 'Modifier', 'string', 130, NULL, '2018-06-06 14:05:43', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, 1, NULL, 0, 1, 1, 30, '超级管理员', '2019-08-23 10:17:27', 1, 1160, NULL, NULL, NULL, NULL, NULL, 'Sys_Dictionary', 3); INSERT INTO `Sys_TableColumn` VALUES (47, NULL, NULL, NULL, NULL, '修改时间', 'ModifyDate', 'DateTime', 150, NULL, '2018-06-06 14:05:43', NULL, NULL, NULL, NULL, NULL, 'datetime', NULL, 1, 1, NULL, 0, 1, 1, NULL, '超级管理员', '2019-08-23 10:17:27', 1, 1150, NULL, NULL, 2, 'datetime', NULL, 'Sys_Dictionary', 3); -INSERT INTO `Sys_TableColumn` VALUES (48, NULL, NULL, NULL, NULL, '', 'DicList_ID', 'int', 90, '', '2018-06-06 14:12:18', NULL, NULL, '', NULL, NULL, '', NULL, 1, 0, NULL, 1, 0, 1, NULL, '超级管理员', '2019-08-20 10:08:56', 1, 1140, '', NULL, NULL, '', NULL, 'Sys_DictionaryList', 4); -INSERT INTO `Sys_TableColumn` VALUES (49, NULL, NULL, NULL, NULL, '数据源ID', 'Dic_ID', 'int', 90, '', '2018-06-06 14:12:18', NULL, NULL, '', NULL, 0, '', NULL, 1, 1, NULL, 0, 1, 1, NULL, '超级管理员', '2019-08-20 10:08:56', 1, 1130, '', NULL, NULL, '', NULL, 'Sys_DictionaryList', 4); -INSERT INTO `Sys_TableColumn` VALUES (50, NULL, NULL, NULL, NULL, '数据源Value', 'DicValue', 'string', 90, '', '2018-06-06 14:12:18', NULL, NULL, '', NULL, 1, 'text', NULL, 1, 1, NULL, 0, 1, 0, 100, '超级管理员', '2019-08-20 10:08:56', 1, 1120, '', NULL, NULL, '', NULL, 'Sys_DictionaryList', 4); -INSERT INTO `Sys_TableColumn` VALUES (51, NULL, NULL, NULL, NULL, '数据源Text', 'DicName', 'string', 90, '', '2018-06-06 14:12:18', NULL, NULL, '', NULL, 1, 'text', NULL, 1, 1, NULL, 0, 1, 0, 100, '超级管理员', '2019-08-20 10:08:56', 1, 1110, '', NULL, NULL, '', NULL, 'Sys_DictionaryList', 4); -INSERT INTO `Sys_TableColumn` VALUES (52, NULL, NULL, NULL, NULL, '排序号', 'OrderNo', 'int', 90, '', '2018-06-06 14:12:18', NULL, NULL, '', NULL, 1, 'text', NULL, 1, 1, NULL, 0, 1, 0, NULL, '超级管理员', '2019-08-20 10:08:56', 1, 1100, '', NULL, NULL, '', NULL, 'Sys_DictionaryList', 4); -INSERT INTO `Sys_TableColumn` VALUES (53, NULL, NULL, NULL, NULL, '备注', 'Remark', 'string', 90, '', '2018-06-06 14:12:18', NULL, NULL, '', NULL, 1, 'text', NULL, 1, 1, NULL, 0, 1, 0, 2000, '超级管理员', '2019-08-20 10:08:56', 1, 1090, '', NULL, NULL, '', NULL, 'Sys_DictionaryList', 4); -INSERT INTO `Sys_TableColumn` VALUES (54, NULL, NULL, NULL, NULL, '是否可用', 'Enable', 'sbyte', 90, '', '2018-06-06 14:12:18', NULL, NULL, 'enable', NULL, 1, 'switch', NULL, 1, 1, NULL, 0, 1, 0, NULL, '超级管理员', '2019-08-20 10:08:56', 1, 1080, '', NULL, NULL, '', NULL, 'Sys_DictionaryList', 4); -INSERT INTO `Sys_TableColumn` VALUES (55, NULL, NULL, NULL, NULL, '', 'CreateID', 'int', 90, '', '2018-06-06 14:12:18', NULL, NULL, '', NULL, NULL, '无', NULL, 1, 0, NULL, 0, 1, 0, NULL, '超级管理员', '2019-08-20 10:08:56', 1, 1070, '', NULL, NULL, '', NULL, 'Sys_DictionaryList', 4); -INSERT INTO `Sys_TableColumn` VALUES (56, NULL, NULL, NULL, NULL, '创建人', 'Creator', 'string', 130, '', '2018-06-06 14:12:18', NULL, NULL, '', NULL, NULL, '', NULL, 1, 1, NULL, 0, 1, 1, 30, '超级管理员', '2019-08-20 10:08:56', 1, 1060, '', NULL, NULL, '', NULL, 'Sys_DictionaryList', 4); -INSERT INTO `Sys_TableColumn` VALUES (57, NULL, NULL, NULL, NULL, '创建时间', 'CreateDate', 'DateTime', 90, '', '2018-06-06 14:12:18', NULL, NULL, '', NULL, NULL, '', NULL, 1, 1, NULL, 0, 1, 1, NULL, '超级管理员', '2019-08-20 10:08:56', 1, 1050, '', NULL, NULL, '', NULL, 'Sys_DictionaryList', 4); -INSERT INTO `Sys_TableColumn` VALUES (58, NULL, NULL, NULL, NULL, '', 'ModifyID', 'int', 90, '', '2018-06-06 14:12:18', NULL, NULL, '', NULL, NULL, '', NULL, 1, 0, NULL, 0, 1, 0, NULL, '超级管理员', '2019-08-20 10:08:56', 1, 1040, '', NULL, NULL, '', NULL, 'Sys_DictionaryList', 4); -INSERT INTO `Sys_TableColumn` VALUES (59, NULL, NULL, NULL, NULL, '修改人', 'Modifier', 'string', 130, '', '2018-06-06 14:12:18', NULL, NULL, '', NULL, NULL, '', NULL, 1, 1, NULL, 0, 1, 0, 30, '超级管理员', '2019-08-20 10:08:56', 1, 1030, '', NULL, NULL, '', NULL, 'Sys_DictionaryList', 4); -INSERT INTO `Sys_TableColumn` VALUES (60, NULL, NULL, NULL, NULL, '修改时间', 'ModifyDate', 'DateTime', 90, '', '2018-06-06 14:12:18', NULL, NULL, '', NULL, NULL, '', NULL, 1, 1, NULL, 0, 1, 0, NULL, '超级管理员', '2019-08-20 10:08:56', 1, 1020, '', NULL, NULL, '', NULL, 'Sys_DictionaryList', 4); -INSERT INTO `Sys_TableColumn` VALUES (61, NULL, NULL, NULL, NULL, NULL, 'Id', 'int', 90, NULL, '2018-06-11 18:22:16', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, 0, NULL, 1, 0, 1, NULL, '超级管理员', '2020-11-14 14:51:27', 1, 10000, NULL, NULL, NULL, NULL, NULL, 'Sys_Log', 5); -INSERT INTO `Sys_TableColumn` VALUES (62, NULL, NULL, NULL, 12, '日志类型', 'LogType', 'string', 120, NULL, '2018-06-11 18:22:16', NULL, NULL, 'log', NULL, NULL, NULL, NULL, 1, 1, NULL, 0, 1, 0, 50, '超级管理员', '2020-11-14 14:51:27', 1, 8888, NULL, NULL, 3, 'checkbox', NULL, 'Sys_Log', 5); -INSERT INTO `Sys_TableColumn` VALUES (63, NULL, NULL, NULL, NULL, '请求参数', 'RequestParameter', 'string', 300, NULL, '2018-06-11 18:22:16', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, 1, NULL, 0, 1, 0, 0, '超级管理员', '2020-11-14 14:51:27', 1, 7990, NULL, NULL, NULL, NULL, NULL, 'Sys_Log', 5); -INSERT INTO `Sys_TableColumn` VALUES (64, NULL, NULL, NULL, NULL, '响应参数', 'ResponseParameter', 'string', 250, NULL, '2018-06-11 18:22:16', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, 1, NULL, 0, 1, 0, 0, '超级管理员', '2020-11-14 14:51:27', 1, 7980, NULL, NULL, NULL, NULL, NULL, 'Sys_Log', 5); -INSERT INTO `Sys_TableColumn` VALUES (65, NULL, NULL, NULL, NULL, '异常信息', 'ExceptionInfo', 'string', 280, NULL, '2018-06-11 18:22:16', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, 1, NULL, 0, 1, 0, 0, '超级管理员', '2020-11-14 14:51:27', 1, 7970, NULL, NULL, NULL, NULL, NULL, 'Sys_Log', 5); -INSERT INTO `Sys_TableColumn` VALUES (66, NULL, NULL, NULL, NULL, '响应状态', 'Success', 'int', 90, NULL, '2018-06-11 18:22:16', NULL, NULL, 'restatus', NULL, NULL, NULL, NULL, 1, 1, NULL, 0, 1, 0, NULL, '超级管理员', '2020-11-14 14:51:27', 1, 8700, NULL, NULL, 2, 'dropList', NULL, 'Sys_Log', 5); -INSERT INTO `Sys_TableColumn` VALUES (67, NULL, NULL, NULL, NULL, '开始时间', 'BeginDate', 'DateTime', 150, NULL, '2018-06-11 18:22:16', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, 1, NULL, 0, 1, 0, NULL, '超级管理员', '2020-11-14 14:51:27', 1, 9999, NULL, NULL, 2, 'datetime', NULL, 'Sys_Log', 5); -INSERT INTO `Sys_TableColumn` VALUES (68, NULL, NULL, NULL, NULL, '结束时间', 'EndDate', 'DateTime', 150, NULL, '2018-06-11 18:22:16', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, 1, NULL, 0, 1, 0, NULL, '超级管理员', '2020-11-14 14:51:27', 1, 880, NULL, NULL, NULL, NULL, NULL, 'Sys_Log', 5); -INSERT INTO `Sys_TableColumn` VALUES (69, NULL, NULL, NULL, NULL, '时长(毫秒)', 'ElapsedTime', 'int', 90, NULL, '2018-06-11 18:22:16', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, 1, NULL, 0, 1, 0, NULL, '超级管理员', '2020-11-14 14:51:27', 1, 8600, NULL, NULL, NULL, NULL, NULL, 'Sys_Log', 5); -INSERT INTO `Sys_TableColumn` VALUES (70, NULL, NULL, NULL, NULL, '用户IP', 'UserIP', 'string', 90, NULL, '2018-06-11 18:22:16', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, 1, NULL, 0, 1, 0, 100, '超级管理员', '2020-11-14 14:51:27', 1, 7920, NULL, NULL, 1, 'text', NULL, 'Sys_Log', 5); -INSERT INTO `Sys_TableColumn` VALUES (71, NULL, NULL, NULL, NULL, '服务器IP', 'ServiceIP', 'string', 90, NULL, '2018-06-11 18:22:16', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, 1, NULL, 0, 1, 0, 100, '超级管理员', '2020-11-14 14:51:27', 1, 7910, NULL, NULL, 1, 'text', NULL, 'Sys_Log', 5); -INSERT INTO `Sys_TableColumn` VALUES (72, NULL, NULL, NULL, NULL, '浏览器类型', 'BrowserType', 'string', 90, NULL, '2018-06-11 18:22:16', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, 1, NULL, 0, 1, 0, 200, '超级管理员', '2020-11-14 14:51:27', 1, 7900, NULL, NULL, NULL, NULL, NULL, 'Sys_Log', 5); -INSERT INTO `Sys_TableColumn` VALUES (73, NULL, NULL, NULL, NULL, '请求地址', 'Url', 'string', 300, NULL, '2018-06-11 18:22:16', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, 1, NULL, 0, 1, 0, 4000, '超级管理员', '2020-11-14 14:51:27', 1, 9000, NULL, NULL, 1, 'text', NULL, 'Sys_Log', 5); -INSERT INTO `Sys_TableColumn` VALUES (74, NULL, NULL, NULL, NULL, '用户ID', 'User_Id', 'int', 90, NULL, '2018-06-11 18:22:16', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, 1, NULL, 0, 1, 0, NULL, '超级管理员', '2020-11-14 14:51:27', 1, 7880, NULL, NULL, NULL, '无', NULL, 'Sys_Log', 5); -INSERT INTO `Sys_TableColumn` VALUES (75, NULL, NULL, NULL, NULL, '用户名称', 'UserName', 'string', 90, NULL, '2018-06-11 18:22:16', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, 1, NULL, 0, 1, 0, 4000, '超级管理员', '2020-11-14 14:51:27', 1, 7870, NULL, NULL, NULL, NULL, NULL, 'Sys_Log', 5); -INSERT INTO `Sys_TableColumn` VALUES (76, NULL, NULL, NULL, NULL, '角色ID', 'Role_Id', 'int', 90, NULL, '2018-06-11 18:22:16', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, 1, NULL, 0, 1, 0, NULL, '超级管理员', '2020-11-14 14:51:27', 1, 7860, NULL, NULL, 2, 'text', NULL, 'Sys_Log', 5); -INSERT INTO `Sys_TableColumn` VALUES (77, NULL, NULL, NULL, NULL, '', 'User_Id', 'int', 90, '', '2018-06-14 16:44:15', NULL, NULL, '', NULL, NULL, '', NULL, 1, 0, NULL, 1, 0, 1, NULL, '超级管理员', '2020-11-14 14:51:11', 1, 7850, '', NULL, NULL, '', NULL, 'Sys_User', 6); -INSERT INTO `Sys_TableColumn` VALUES (78, NULL, NULL, NULL, NULL, '', 'Dept_Id', 'int', 90, '', '2018-06-14 16:44:15', NULL, NULL, '', NULL, NULL, '', NULL, 1, 0, NULL, 0, 1, 0, NULL, '超级管理员', '2020-11-14 14:51:11', 1, 7840, '', NULL, NULL, '', NULL, 'Sys_User', 6); -INSERT INTO `Sys_TableColumn` VALUES (79, 0, NULL, 1, NULL, '部门', 'DeptName', 'string', 150, '', '2018-06-14 16:44:15', NULL, NULL, '', NULL, 0, 'text', NULL, 1, 0, NULL, 0, 1, 0, 150, '超级管理员', '2020-11-14 14:51:11', 1, 7830, '', NULL, 2, '', NULL, 'Sys_User', 6); -INSERT INTO `Sys_TableColumn` VALUES (80, 0, 0, 1, NULL, '角色', 'Role_Id', 'int', 150, '', '2018-06-14 16:44:15', NULL, NULL, 'roles', NULL, 2, 'select', NULL, 1, 1, NULL, 0, 0, 0, NULL, '超级管理员', '2020-11-14 14:51:11', 1, 7820, '', NULL, 2, 'drop', NULL, 'Sys_User', 6); -INSERT INTO `Sys_TableColumn` VALUES (81, NULL, NULL, NULL, NULL, '', 'RoleName', 'string', 90, '', '2018-06-14 16:44:15', NULL, NULL, '', NULL, 0, '', NULL, 1, 0, NULL, 0, 0, 0, 150, '超级管理员', '2020-11-14 14:51:11', 1, 7810, '', NULL, NULL, '', NULL, 'Sys_User', 6); -INSERT INTO `Sys_TableColumn` VALUES (82, 1, 0, 1, NULL, '用户名', 'UserName', 'string', 120, '', '2018-06-14 16:44:15', NULL, NULL, '', NULL, 1, '', NULL, 1, 1, NULL, 0, 0, 1, 100, '超级管理员', '2020-11-14 14:51:11', 1, 7945, '', NULL, 1, '', NULL, 'Sys_User', 6); -INSERT INTO `Sys_TableColumn` VALUES (83, 1, 0, NULL, NULL, '密码', 'UserPwd', 'string', 90, '', '2018-06-14 16:44:15', NULL, NULL, '', NULL, NULL, '', NULL, 0, 0, NULL, 0, 1, 0, 200, '超级管理员', '2020-11-14 14:51:11', 1, 7790, '', NULL, NULL, '', NULL, 'Sys_User', 6); -INSERT INTO `Sys_TableColumn` VALUES (84, NULL, NULL, NULL, NULL, '用户真实姓名', 'UserTrueName', 'string', 150, '', '2018-06-14 16:44:15', NULL, NULL, '', NULL, 1, 'text', NULL, 1, 1, NULL, 0, 0, 0, 20, '超级管理员', '2020-11-14 14:51:11', 1, 7792, '', NULL, 1, '', NULL, 'Sys_User', 6); -INSERT INTO `Sys_TableColumn` VALUES (85, NULL, NULL, NULL, NULL, '地址', 'Address', 'string', 190, '', '2018-06-14 16:44:15', NULL, NULL, '', NULL, 3, 'text', NULL, 1, 1, NULL, 0, 1, 0, 200, '超级管理员', '2020-11-14 14:51:11', 1, 7270, '', NULL, 4, '', NULL, 'Sys_User', 6); -INSERT INTO `Sys_TableColumn` VALUES (86, NULL, NULL, NULL, NULL, '电话', 'Mobile', 'string', 140, '', '2018-06-14 16:44:15', NULL, NULL, '', NULL, 3, 'text', NULL, 1, 1, NULL, 0, 1, 0, 100, '超级管理员', '2020-11-14 14:51:11', 1, 7260, '', NULL, NULL, '', NULL, 'Sys_User', 6); -INSERT INTO `Sys_TableColumn` VALUES (87, NULL, NULL, NULL, NULL, 'Email', 'Email', 'string', 140, '', '2018-06-14 16:44:15', NULL, NULL, '', NULL, 5, 'text', NULL, 1, 1, NULL, 0, 1, 0, 100, '超级管理员', '2020-11-14 14:51:11', 1, 7250, '', NULL, 4, '', NULL, 'Sys_User', 6); -INSERT INTO `Sys_TableColumn` VALUES (88, NULL, NULL, NULL, NULL, '', 'Tel', 'string', 90, '', '2018-06-14 16:44:15', NULL, NULL, '', NULL, NULL, '', NULL, 1, 0, NULL, 0, 1, 0, 20, '超级管理员', '2020-11-14 14:51:11', 1, 7740, '', NULL, NULL, '', NULL, 'Sys_User', 6); -INSERT INTO `Sys_TableColumn` VALUES (89, NULL, NULL, NULL, 12, '备注', 'Remark', 'string', 180, '', '2018-06-14 16:44:15', NULL, NULL, '', NULL, 7, 'textarea', NULL, 1, 1, NULL, 0, 1, 0, 200, '超级管理员', '2020-11-14 14:51:11', 1, 7230, '', NULL, NULL, '', NULL, 'Sys_User', 6); -INSERT INTO `Sys_TableColumn` VALUES (90, NULL, NULL, NULL, NULL, '排序号', 'OrderNo', 'int', 90, '', '2018-06-14 16:44:15', NULL, NULL, '', NULL, 0, 'text', NULL, 1, 1, NULL, 0, 1, 0, NULL, '超级管理员', '2020-11-14 14:51:11', 1, 7220, '', NULL, NULL, '', NULL, 'Sys_User', 6); -INSERT INTO `Sys_TableColumn` VALUES (91, NULL, NULL, NULL, NULL, '是否可用', 'Enable', 'sbyte', 90, '', '2018-06-14 16:44:15', NULL, NULL, 'enable', NULL, 5, 'select', NULL, 1, 1, NULL, 0, 0, 0, NULL, '超级管理员', '2020-11-14 14:51:11', 1, 7670, '', NULL, 4, 'drop', NULL, 'Sys_User', 6); -INSERT INTO `Sys_TableColumn` VALUES (92, NULL, NULL, NULL, NULL, '', 'CreateID', 'int', 90, '', '2018-06-14 16:44:15', NULL, NULL, '', NULL, NULL, '', NULL, 1, 0, NULL, 0, 1, 0, NULL, '超级管理员', '2020-11-14 14:51:11', 1, 7700, '', NULL, NULL, '', NULL, 'Sys_User', 6); -INSERT INTO `Sys_TableColumn` VALUES (93, NULL, NULL, NULL, NULL, '创建人', 'Creator', 'string', 130, '', '2018-06-14 16:44:15', NULL, NULL, '', NULL, 6, '', NULL, 1, 1, NULL, 0, 1, 1, 200, '超级管理员', '2020-11-14 14:51:11', 1, 7690, '', NULL, NULL, '', NULL, 'Sys_User', 6); -INSERT INTO `Sys_TableColumn` VALUES (94, NULL, NULL, NULL, NULL, '注册时间', 'CreateDate', 'DateTime', 150, '', '2018-06-14 16:44:15', NULL, NULL, '', NULL, 6, '', NULL, 1, 1, NULL, 0, 1, 1, NULL, '超级管理员', '2020-11-14 14:51:11', 1, 7780, '', NULL, 5, 'datetime', NULL, 'Sys_User', 6); -INSERT INTO `Sys_TableColumn` VALUES (95, NULL, NULL, NULL, NULL, '', 'ModifyID', 'int', 90, '', '2018-06-14 16:44:15', NULL, NULL, '', NULL, NULL, '', NULL, 1, 0, NULL, 0, 1, 0, NULL, '超级管理员', '2020-11-14 14:51:11', 1, 7670, '', NULL, NULL, '', NULL, 'Sys_User', 6); -INSERT INTO `Sys_TableColumn` VALUES (96, NULL, NULL, NULL, NULL, '修改人', 'Modifier', 'string', 130, '', '2018-06-14 16:44:15', NULL, NULL, '', NULL, NULL, '', NULL, 1, 1, NULL, 0, 1, 1, 200, '超级管理员', '2020-11-14 14:51:11', 1, 7660, '', NULL, NULL, '', NULL, 'Sys_User', 6); -INSERT INTO `Sys_TableColumn` VALUES (97, NULL, NULL, NULL, NULL, '修改时间', 'ModifyDate', 'DateTime', 90, '', '2018-06-14 16:44:15', NULL, NULL, '', NULL, NULL, 'datetime', NULL, 1, 1, NULL, 0, 1, 1, NULL, '超级管理员', '2020-11-14 14:51:11', 1, 7650, '', NULL, NULL, '', NULL, 'Sys_User', 6); -INSERT INTO `Sys_TableColumn` VALUES (98, NULL, NULL, NULL, NULL, '审核状态', 'AuditStatus', 'int', 90, '', '2018-06-14 16:44:15', NULL, NULL, 'audit', NULL, NULL, '', NULL, 1, 1, NULL, 0, 1, 0, NULL, '超级管理员', '2020-11-14 14:51:11', 1, 7640, '', NULL, NULL, '', NULL, 'Sys_User', 6); -INSERT INTO `Sys_TableColumn` VALUES (99, NULL, NULL, NULL, NULL, '审核人', 'Auditor', 'string', 90, '', '2018-06-14 16:44:15', NULL, NULL, '', NULL, NULL, '', NULL, 1, 1, NULL, 0, 1, 0, 200, '超级管理员', '2020-11-14 14:51:11', 1, 7630, '', NULL, NULL, '', NULL, 'Sys_User', 6); -INSERT INTO `Sys_TableColumn` VALUES (100, NULL, NULL, NULL, NULL, '审核时间', 'AuditDate', 'DateTime', 150, '', '2018-06-14 16:44:15', NULL, NULL, '', NULL, NULL, '', NULL, 1, 1, NULL, 0, 1, 0, NULL, '超级管理员', '2020-11-14 14:51:11', 1, 7620, '', NULL, NULL, '', NULL, 'Sys_User', 6); -INSERT INTO `Sys_TableColumn` VALUES (101, NULL, NULL, NULL, NULL, '最后登陆时间', 'LastLoginDate', 'DateTime', 150, '', '2018-06-14 16:44:15', NULL, NULL, '', NULL, NULL, '', NULL, 1, 1, NULL, 0, 1, 0, NULL, '超级管理员', '2020-11-14 14:51:11', 1, 7610, '', NULL, 5, 'datetime', NULL, 'Sys_User', 6); -INSERT INTO `Sys_TableColumn` VALUES (102, NULL, NULL, NULL, NULL, '最后密码修改时间', 'LastModifyPwdDate', 'DateTime', 150, '', '2018-06-14 16:44:15', NULL, NULL, '', NULL, NULL, '', NULL, 1, 1, NULL, 0, 1, 0, NULL, '超级管理员', '2020-11-14 14:51:11', 1, 7600, '', NULL, NULL, '', NULL, 'Sys_User', 6); -INSERT INTO `Sys_TableColumn` VALUES (114, NULL, NULL, NULL, NULL, '头像', 'HeadImageUrl', 'string', 150, '', NULL, NULL, NULL, '', NULL, 9, 'img', NULL, 1, 1, 1, NULL, 1, 0, 200, '超级管理员', '2020-11-14 14:51:11', 1, 7842, '', NULL, NULL, '', NULL, 'Sys_User', 6); -INSERT INTO `Sys_TableColumn` VALUES (429, 1, 0, NULL, NULL, '手机号', 'PhoneNo', 'string', 150, '', NULL, NULL, NULL, '', NULL, NULL, '', NULL, 1, 1, NULL, NULL, 1, 0, 11, '超级管理员', '2020-11-14 14:51:11', 1, 7760, '', NULL, 3, '', NULL, 'Sys_User', 6); -INSERT INTO `Sys_TableColumn` VALUES (431, NULL, NULL, NULL, NULL, 'Token', 'Token', 'string', 180, '', NULL, NULL, NULL, '', NULL, 4, '', NULL, 1, 1, NULL, NULL, 1, 0, 500, '超级管理员', '2020-11-14 14:51:11', 1, 7810, '', NULL, 2, '', NULL, 'Sys_User', 6); -INSERT INTO `Sys_TableColumn` VALUES (506, NULL, NULL, NULL, NULL, '性别', 'Gender', 'int', 100, '', NULL, NULL, NULL, 'gender', NULL, 4, 'select', NULL, 1, 1, NULL, NULL, 1, 0, NULL, '超级管理员', '2020-11-14 14:51:11', 1, 7843, '', NULL, 1, 'drop', NULL, 'Sys_User', 6); -INSERT INTO `Sys_TableColumn` VALUES (654, NULL, NULL, NULL, NULL, '登陆设备类型', 'AppType', 'int', 150, '', NULL, NULL, NULL, 'ut', NULL, 0, '', NULL, 1, 1, NULL, NULL, 1, 0, NULL, '超级管理员', '2020-11-14 14:51:11', 1, 7809, '', NULL, 3, 'dropList', NULL, 'Sys_User', 6); -INSERT INTO `Sys_TableColumn` VALUES (659, NULL, NULL, NULL, NULL, '是否手机用户', 'IsRegregisterPhone', 'int', 120, '', NULL, NULL, NULL, 'isphone', NULL, 2, 'select', NULL, 1, 0, NULL, NULL, 0, 0, NULL, '超级管理员', '2020-11-14 14:51:11', 1, 7771, '', NULL, 3, 'drop', NULL, 'Sys_User', 6); +INSERT INTO `Sys_TableColumn` VALUES (48, NULL, NULL, NULL, NULL, '', 'DicList_ID', 'int', 90, '', '2018-06-06 14:12:18', NULL, NULL, '', NULL, NULL, '', NULL, 1, 0, NULL, 1, 0, 1, NULL, '超级管理员', '2021-05-05 19:40:42', 1, 1140, '', NULL, NULL, '', 0, 'Sys_DictionaryList', 4); +INSERT INTO `Sys_TableColumn` VALUES (49, NULL, NULL, NULL, NULL, '数据源ID', 'Dic_ID', 'int', 90, '', '2018-06-06 14:12:18', NULL, NULL, '', NULL, 0, '', NULL, 1, 1, NULL, 0, 1, 1, NULL, '超级管理员', '2021-05-05 19:40:42', 1, 1130, '', NULL, NULL, '', 0, 'Sys_DictionaryList', 4); +INSERT INTO `Sys_TableColumn` VALUES (50, NULL, NULL, NULL, NULL, '数据源Value', 'DicValue', 'string', 90, '', '2018-06-06 14:12:18', NULL, NULL, '', NULL, 1, 'text', NULL, 1, 1, NULL, 0, 1, 0, 100, '超级管理员', '2021-05-05 19:40:42', 1, 1120, '', NULL, NULL, '', 0, 'Sys_DictionaryList', 4); +INSERT INTO `Sys_TableColumn` VALUES (51, NULL, NULL, NULL, NULL, '数据源Text', 'DicName', 'string', 90, '', '2018-06-06 14:12:18', NULL, NULL, '', NULL, 1, 'text', NULL, 1, 1, NULL, 0, 1, 0, 100, '超级管理员', '2021-05-05 19:40:42', 1, 1110, '', NULL, NULL, '', 0, 'Sys_DictionaryList', 4); +INSERT INTO `Sys_TableColumn` VALUES (52, NULL, NULL, NULL, NULL, '排序号', 'OrderNo', 'int', 90, '', '2018-06-06 14:12:18', NULL, NULL, '', NULL, 1, 'text', NULL, 1, 1, NULL, 0, 1, 0, NULL, '超级管理员', '2021-05-05 19:40:42', 1, 1100, '', NULL, NULL, '', 0, 'Sys_DictionaryList', 4); +INSERT INTO `Sys_TableColumn` VALUES (53, NULL, NULL, NULL, NULL, '备注', 'Remark', 'string', 90, '', '2018-06-06 14:12:18', NULL, NULL, '', NULL, 1, 'text', NULL, 1, 1, NULL, 0, 1, 0, 2000, '超级管理员', '2021-05-05 19:40:42', 1, 1090, '', NULL, NULL, '', 0, 'Sys_DictionaryList', 4); +INSERT INTO `Sys_TableColumn` VALUES (54, NULL, NULL, NULL, NULL, '是否可用', 'Enable', 'sbyte', 90, '', '2018-06-06 14:12:18', NULL, NULL, 'enable', NULL, 1, 'switch', NULL, 1, 1, NULL, 0, 1, 0, NULL, '超级管理员', '2021-05-05 19:40:42', 1, 1080, '', NULL, NULL, '', 0, 'Sys_DictionaryList', 4); +INSERT INTO `Sys_TableColumn` VALUES (55, NULL, NULL, NULL, NULL, '', 'CreateID', 'int', 90, '', '2018-06-06 14:12:18', NULL, NULL, '', NULL, NULL, '无', NULL, 1, 0, NULL, 0, 1, 0, NULL, '超级管理员', '2021-05-05 19:40:42', 1, 1070, '', NULL, NULL, '', 0, 'Sys_DictionaryList', 4); +INSERT INTO `Sys_TableColumn` VALUES (56, NULL, NULL, NULL, NULL, '创建人', 'Creator', 'string', 130, '', '2018-06-06 14:12:18', NULL, NULL, '', NULL, NULL, '', NULL, 1, 1, NULL, 0, 1, 1, 30, '超级管理员', '2021-05-05 19:40:42', 1, 1060, '', NULL, NULL, '', 0, 'Sys_DictionaryList', 4); +INSERT INTO `Sys_TableColumn` VALUES (57, NULL, NULL, NULL, NULL, '创建时间', 'CreateDate', 'DateTime', 90, '', '2018-06-06 14:12:18', NULL, NULL, '', NULL, NULL, '', NULL, 1, 1, NULL, 0, 1, 1, NULL, '超级管理员', '2021-05-05 19:40:42', 1, 1050, '', NULL, NULL, '', 0, 'Sys_DictionaryList', 4); +INSERT INTO `Sys_TableColumn` VALUES (58, NULL, NULL, NULL, NULL, '', 'ModifyID', 'int', 90, '', '2018-06-06 14:12:18', NULL, NULL, '', NULL, NULL, '', NULL, 1, 0, NULL, 0, 1, 0, NULL, '超级管理员', '2021-05-05 19:40:42', 1, 1040, '', NULL, NULL, '', 0, 'Sys_DictionaryList', 4); +INSERT INTO `Sys_TableColumn` VALUES (59, NULL, NULL, NULL, NULL, '修改人', 'Modifier', 'string', 130, '', '2018-06-06 14:12:18', NULL, NULL, '', NULL, NULL, '', NULL, 1, 1, NULL, 0, 1, 0, 30, '超级管理员', '2021-05-05 19:40:42', 1, 1030, '', NULL, NULL, '', 0, 'Sys_DictionaryList', 4); +INSERT INTO `Sys_TableColumn` VALUES (60, NULL, NULL, NULL, NULL, '修改时间', 'ModifyDate', 'DateTime', 90, '', '2018-06-06 14:12:18', NULL, NULL, '', NULL, NULL, '', NULL, 1, 1, NULL, 0, 1, 0, NULL, '超级管理员', '2021-05-05 19:40:42', 1, 1020, '', NULL, NULL, '', 0, 'Sys_DictionaryList', 4); +INSERT INTO `Sys_TableColumn` VALUES (61, NULL, NULL, NULL, NULL, NULL, 'Id', 'int', 90, NULL, '2018-06-11 18:22:16', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, 0, NULL, 1, 0, 1, NULL, '超级管理员', '2020-03-02 19:22:18', 1, 10000, NULL, NULL, NULL, NULL, NULL, 'Sys_Log', 5); +INSERT INTO `Sys_TableColumn` VALUES (62, NULL, NULL, NULL, 12, '日志类型', 'LogType', 'string', 120, NULL, '2018-06-11 18:22:16', NULL, NULL, 'log', NULL, NULL, NULL, NULL, 1, 1, NULL, 0, 1, 0, 50, '超级管理员', '2020-03-02 19:22:18', 1, 8888, NULL, NULL, 3, 'checkbox', NULL, 'Sys_Log', 5); +INSERT INTO `Sys_TableColumn` VALUES (63, NULL, NULL, NULL, NULL, '请求参数', 'RequestParameter', 'string', 300, NULL, '2018-06-11 18:22:16', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, 1, NULL, 0, 1, 0, 0, '超级管理员', '2020-03-02 19:22:18', 1, 7990, NULL, NULL, NULL, NULL, NULL, 'Sys_Log', 5); +INSERT INTO `Sys_TableColumn` VALUES (64, NULL, NULL, NULL, NULL, '响应参数', 'ResponseParameter', 'string', 250, NULL, '2018-06-11 18:22:16', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, 1, NULL, 0, 1, 0, 0, '超级管理员', '2020-03-02 19:22:18', 1, 7980, NULL, NULL, NULL, NULL, NULL, 'Sys_Log', 5); +INSERT INTO `Sys_TableColumn` VALUES (65, NULL, NULL, NULL, NULL, '异常信息', 'ExceptionInfo', 'string', 280, NULL, '2018-06-11 18:22:16', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, 1, NULL, 0, 1, 0, 0, '超级管理员', '2020-03-02 19:22:18', 1, 7970, NULL, NULL, NULL, NULL, NULL, 'Sys_Log', 5); +INSERT INTO `Sys_TableColumn` VALUES (66, NULL, NULL, NULL, NULL, '响应状态', 'Success', 'int', 90, NULL, '2018-06-11 18:22:16', NULL, NULL, 'restatus', NULL, NULL, NULL, NULL, 1, 1, NULL, 0, 1, 0, NULL, '超级管理员', '2020-03-02 19:22:18', 1, 8700, NULL, NULL, 2, 'dropList', NULL, 'Sys_Log', 5); +INSERT INTO `Sys_TableColumn` VALUES (67, NULL, NULL, NULL, NULL, '开始时间', 'BeginDate', 'DateTime', 150, NULL, '2018-06-11 18:22:16', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, 1, NULL, 0, 1, 0, NULL, '超级管理员', '2020-03-02 19:22:18', 1, 9999, NULL, NULL, 2, 'datetime', NULL, 'Sys_Log', 5); +INSERT INTO `Sys_TableColumn` VALUES (68, NULL, NULL, NULL, NULL, '结束时间', 'EndDate', 'DateTime', 150, NULL, '2018-06-11 18:22:16', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, 1, NULL, 0, 1, 0, NULL, '超级管理员', '2020-03-02 19:22:18', 1, 880, NULL, NULL, NULL, NULL, NULL, 'Sys_Log', 5); +INSERT INTO `Sys_TableColumn` VALUES (69, NULL, NULL, NULL, NULL, '时长(毫秒)', 'ElapsedTime', 'int', 90, NULL, '2018-06-11 18:22:16', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, 1, NULL, 0, 1, 0, NULL, '超级管理员', '2020-03-02 19:22:18', 1, 8600, NULL, NULL, NULL, NULL, NULL, 'Sys_Log', 5); +INSERT INTO `Sys_TableColumn` VALUES (70, NULL, NULL, NULL, NULL, '用户IP', 'UserIP', 'string', 90, NULL, '2018-06-11 18:22:16', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, 1, NULL, 0, 1, 0, 100, '超级管理员', '2020-03-02 19:22:18', 1, 7920, NULL, NULL, 1, 'text', NULL, 'Sys_Log', 5); +INSERT INTO `Sys_TableColumn` VALUES (71, NULL, NULL, NULL, NULL, '服务器IP', 'ServiceIP', 'string', 90, NULL, '2018-06-11 18:22:16', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, 1, NULL, 0, 1, 0, 100, '超级管理员', '2020-03-02 19:22:18', 1, 7910, NULL, NULL, 1, 'text', NULL, 'Sys_Log', 5); +INSERT INTO `Sys_TableColumn` VALUES (72, NULL, NULL, NULL, NULL, '浏览器类型', 'BrowserType', 'string', 90, NULL, '2018-06-11 18:22:16', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, 1, NULL, 0, 1, 0, 200, '超级管理员', '2020-03-02 19:22:18', 1, 7900, NULL, NULL, NULL, NULL, NULL, 'Sys_Log', 5); +INSERT INTO `Sys_TableColumn` VALUES (73, NULL, NULL, NULL, NULL, '请求地址', 'Url', 'string', 300, NULL, '2018-06-11 18:22:16', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, 1, NULL, 0, 1, 0, 4000, '超级管理员', '2020-03-02 19:22:18', 1, 9000, NULL, NULL, 1, 'text', NULL, 'Sys_Log', 5); +INSERT INTO `Sys_TableColumn` VALUES (74, NULL, NULL, NULL, NULL, '用户ID', 'User_Id', 'int', 90, NULL, '2018-06-11 18:22:16', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, 1, NULL, 0, 1, 0, NULL, '超级管理员', '2020-03-02 19:22:18', 1, 7880, NULL, NULL, NULL, '无', NULL, 'Sys_Log', 5); +INSERT INTO `Sys_TableColumn` VALUES (75, NULL, NULL, NULL, NULL, '用户名称', 'UserName', 'string', 90, NULL, '2018-06-11 18:22:16', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, 1, NULL, 0, 1, 0, 4000, '超级管理员', '2020-03-02 19:22:18', 1, 7870, NULL, NULL, NULL, NULL, NULL, 'Sys_Log', 5); +INSERT INTO `Sys_TableColumn` VALUES (76, NULL, NULL, NULL, NULL, '角色ID', 'Role_Id', 'int', 90, NULL, '2018-06-11 18:22:16', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, 1, NULL, 0, 1, 0, NULL, '超级管理员', '2020-03-02 19:22:18', 1, 7860, NULL, NULL, 2, 'text', NULL, 'Sys_Log', 5); +INSERT INTO `Sys_TableColumn` VALUES (77, NULL, NULL, NULL, NULL, '', 'User_Id', 'int', 90, '', '2018-06-14 16:44:15', NULL, NULL, '', NULL, NULL, '', NULL, 1, 0, NULL, 1, 0, 1, NULL, '超级管理员', '2021-04-12 23:04:26', 1, 7850, '', NULL, NULL, '', 0, 'Sys_User', 6); +INSERT INTO `Sys_TableColumn` VALUES (78, NULL, NULL, NULL, NULL, '', 'Dept_Id', 'int', 90, '', '2018-06-14 16:44:15', NULL, NULL, '', NULL, NULL, '', NULL, 1, 0, NULL, 0, 1, 0, NULL, '超级管理员', '2021-04-12 23:04:26', 1, 7840, '', NULL, NULL, '', 0, 'Sys_User', 6); +INSERT INTO `Sys_TableColumn` VALUES (79, 0, NULL, 1, NULL, '部门', 'DeptName', 'string', 150, '', '2018-06-14 16:44:15', NULL, NULL, '', NULL, 0, 'text', NULL, 1, 0, NULL, 0, 1, 0, 150, '超级管理员', '2021-04-12 23:04:26', 1, 7830, '', NULL, 2, '', 0, 'Sys_User', 6); +INSERT INTO `Sys_TableColumn` VALUES (80, 0, 0, 1, NULL, '角色', 'Role_Id', 'int', 150, '', '2018-06-14 16:44:15', NULL, NULL, 'roles', NULL, 2, 'drop', NULL, 1, 1, NULL, 0, 0, 0, NULL, '超级管理员', '2021-04-12 23:04:26', 1, 7820, '', NULL, 2, 'drop', 0, 'Sys_User', 6); +INSERT INTO `Sys_TableColumn` VALUES (81, NULL, NULL, NULL, NULL, '', 'RoleName', 'string', 90, '', '2018-06-14 16:44:15', NULL, NULL, '', NULL, 0, '', NULL, 1, 0, NULL, 0, 0, 0, 150, '超级管理员', '2021-04-12 23:04:26', 1, 7810, '', NULL, NULL, '', 0, 'Sys_User', 6); +INSERT INTO `Sys_TableColumn` VALUES (82, 1, 0, 1, NULL, '用户名', 'UserName', 'string', 120, '', '2018-06-14 16:44:15', NULL, NULL, '', NULL, 1, '', NULL, 1, 1, NULL, 0, 0, 1, 100, '超级管理员', '2021-04-12 23:04:26', 1, 7945, '', NULL, 1, '', 0, 'Sys_User', 6); +INSERT INTO `Sys_TableColumn` VALUES (83, 1, 0, NULL, NULL, '密码', 'UserPwd', 'string', 90, '', '2018-06-14 16:44:15', NULL, NULL, '', NULL, NULL, '', NULL, 0, 0, NULL, 0, 1, 0, 200, '超级管理员', '2021-04-12 23:04:26', 1, 7790, '', NULL, NULL, '', 0, 'Sys_User', 6); +INSERT INTO `Sys_TableColumn` VALUES (84, NULL, NULL, NULL, NULL, '用户真实姓名', 'UserTrueName', 'string', 150, '', '2018-06-14 16:44:15', NULL, NULL, '', NULL, 1, 'text', NULL, 1, 1, NULL, 0, 0, 0, 20, '超级管理员', '2021-04-12 23:04:26', 1, 7792, '', NULL, 1, '', 0, 'Sys_User', 6); +INSERT INTO `Sys_TableColumn` VALUES (85, NULL, NULL, NULL, NULL, '地址', 'Address', 'string', 190, '', '2018-06-14 16:44:15', NULL, NULL, '', NULL, 3, 'text', NULL, 1, 1, NULL, 0, 1, 0, 200, '超级管理员', '2021-04-12 23:04:26', 1, 7270, '', NULL, 4, '', 0, 'Sys_User', 6); +INSERT INTO `Sys_TableColumn` VALUES (86, NULL, NULL, NULL, NULL, '电话', 'Mobile', 'string', 140, '', '2018-06-14 16:44:15', NULL, NULL, '', NULL, 3, 'text', NULL, 1, 1, NULL, 0, 1, 0, 100, '超级管理员', '2021-04-12 23:04:26', 1, 7260, '', NULL, NULL, '', 0, 'Sys_User', 6); +INSERT INTO `Sys_TableColumn` VALUES (87, NULL, NULL, NULL, NULL, 'Email', 'Email', 'string', 140, '', '2018-06-14 16:44:15', NULL, NULL, '', NULL, 5, 'text', NULL, 1, 1, NULL, 0, 1, 0, 100, '超级管理员', '2021-04-12 23:04:26', 1, 7250, '', NULL, 4, '', 0, 'Sys_User', 6); +INSERT INTO `Sys_TableColumn` VALUES (88, NULL, NULL, NULL, NULL, '', 'Tel', 'string', 90, '', '2018-06-14 16:44:15', NULL, NULL, '', NULL, NULL, '', NULL, 1, 0, NULL, 0, 1, 0, 20, '超级管理员', '2021-04-12 23:04:26', 1, 7740, '', NULL, NULL, '', 0, 'Sys_User', 6); +INSERT INTO `Sys_TableColumn` VALUES (89, NULL, NULL, NULL, 12, '备注', 'Remark', 'string', 180, '', '2018-06-14 16:44:15', NULL, NULL, '', NULL, 7, 'textarea', NULL, 1, 1, NULL, 0, 1, 0, 200, '超级管理员', '2021-04-12 23:04:26', 1, 7230, '', NULL, NULL, '', 0, 'Sys_User', 6); +INSERT INTO `Sys_TableColumn` VALUES (90, NULL, NULL, NULL, NULL, '排序号', 'OrderNo', 'int', 90, '', '2018-06-14 16:44:15', NULL, NULL, '', NULL, 0, 'text', NULL, 1, 1, NULL, 0, 1, 0, NULL, '超级管理员', '2021-04-12 23:04:26', 1, 7220, '', NULL, NULL, '', 0, 'Sys_User', 6); +INSERT INTO `Sys_TableColumn` VALUES (91, NULL, NULL, NULL, NULL, '是否可用', 'Enable', 'sbyte', 90, '', '2018-06-14 16:44:15', NULL, NULL, 'enable', NULL, 5, 'drop', NULL, 1, 1, NULL, 0, 0, 0, NULL, '超级管理员', '2021-04-12 23:04:26', 1, 7670, '', NULL, 4, 'drop', 0, 'Sys_User', 6); +INSERT INTO `Sys_TableColumn` VALUES (92, NULL, NULL, NULL, NULL, '', 'CreateID', 'int', 90, '', '2018-06-14 16:44:15', NULL, NULL, '', NULL, NULL, '', NULL, 1, 0, NULL, 0, 1, 0, NULL, '超级管理员', '2021-04-12 23:04:26', 1, 7700, '', NULL, NULL, '', 0, 'Sys_User', 6); +INSERT INTO `Sys_TableColumn` VALUES (93, NULL, NULL, NULL, NULL, '创建人', 'Creator', 'string', 130, '', '2018-06-14 16:44:15', NULL, NULL, '', NULL, 6, '', NULL, 1, 1, NULL, 0, 1, 1, 200, '超级管理员', '2021-04-12 23:04:26', 1, 7690, '', NULL, NULL, '', 0, 'Sys_User', 6); +INSERT INTO `Sys_TableColumn` VALUES (94, NULL, NULL, NULL, NULL, '注册时间', 'CreateDate', 'DateTime', 150, '', '2018-06-14 16:44:15', NULL, NULL, '', NULL, 6, '', NULL, 1, 1, NULL, 0, 1, 1, NULL, '超级管理员', '2021-04-12 23:04:26', 1, 7780, '', NULL, 5, 'datetime', 0, 'Sys_User', 6); +INSERT INTO `Sys_TableColumn` VALUES (95, NULL, NULL, NULL, NULL, '', 'ModifyID', 'int', 90, '', '2018-06-14 16:44:15', NULL, NULL, '', NULL, NULL, '', NULL, 1, 0, NULL, 0, 1, 0, NULL, '超级管理员', '2021-04-12 23:04:26', 1, 7670, '', NULL, NULL, '', 0, 'Sys_User', 6); +INSERT INTO `Sys_TableColumn` VALUES (96, NULL, NULL, NULL, NULL, '修改人', 'Modifier', 'string', 130, '', '2018-06-14 16:44:15', NULL, NULL, '', NULL, NULL, '', NULL, 1, 1, NULL, 0, 1, 1, 200, '超级管理员', '2021-04-12 23:04:26', 1, 7660, '', NULL, NULL, '', 0, 'Sys_User', 6); +INSERT INTO `Sys_TableColumn` VALUES (97, NULL, NULL, NULL, NULL, '修改时间', 'ModifyDate', 'DateTime', 90, '', '2018-06-14 16:44:15', NULL, NULL, '', NULL, NULL, 'datetime', NULL, 1, 1, NULL, 0, 1, 1, NULL, '超级管理员', '2021-04-12 23:04:26', 1, 7650, '', NULL, NULL, '', 0, 'Sys_User', 6); +INSERT INTO `Sys_TableColumn` VALUES (98, NULL, NULL, NULL, NULL, '审核状态', 'AuditStatus', 'int', 90, '', '2018-06-14 16:44:15', NULL, NULL, 'audit', NULL, NULL, '', NULL, 1, 1, NULL, 0, 1, 0, NULL, '超级管理员', '2021-04-12 23:04:26', 1, 7640, '', NULL, NULL, '', 0, 'Sys_User', 6); +INSERT INTO `Sys_TableColumn` VALUES (99, NULL, NULL, NULL, NULL, '审核人', 'Auditor', 'string', 90, '', '2018-06-14 16:44:15', NULL, NULL, '', NULL, NULL, '', NULL, 1, 1, NULL, 0, 1, 0, 200, '超级管理员', '2021-04-12 23:04:26', 1, 7630, '', NULL, NULL, '', 0, 'Sys_User', 6); +INSERT INTO `Sys_TableColumn` VALUES (100, NULL, NULL, NULL, NULL, '审核时间', 'AuditDate', 'DateTime', 150, '', '2018-06-14 16:44:15', NULL, NULL, '', NULL, NULL, '', NULL, 1, 1, NULL, 0, 1, 0, NULL, '超级管理员', '2021-04-12 23:04:26', 1, 7620, '', NULL, NULL, '', 0, 'Sys_User', 6); +INSERT INTO `Sys_TableColumn` VALUES (101, NULL, NULL, NULL, NULL, '最后登陆时间', 'LastLoginDate', 'DateTime', 150, '', '2018-06-14 16:44:15', NULL, NULL, '', NULL, NULL, '', NULL, 1, 1, NULL, 0, 1, 0, NULL, '超级管理员', '2021-04-12 23:04:26', 1, 7610, '', NULL, 5, 'datetime', 0, 'Sys_User', 6); +INSERT INTO `Sys_TableColumn` VALUES (102, NULL, NULL, NULL, NULL, '最后密码修改时间', 'LastModifyPwdDate', 'DateTime', 150, '', '2018-06-14 16:44:15', NULL, NULL, '', NULL, NULL, '', NULL, 1, 1, NULL, 0, 1, 0, NULL, '超级管理员', '2021-04-12 23:04:26', 1, 7600, '', NULL, NULL, '', 0, 'Sys_User', 6); +INSERT INTO `Sys_TableColumn` VALUES (114, NULL, NULL, NULL, NULL, '头像', 'HeadImageUrl', 'string', 150, '', NULL, NULL, NULL, '', NULL, 9, 'img', NULL, 1, 1, 1, NULL, 1, 0, 200, '超级管理员', '2021-04-12 23:04:26', 1, 7842, '', NULL, NULL, '', 0, 'Sys_User', 6); +INSERT INTO `Sys_TableColumn` VALUES (429, 1, 0, NULL, NULL, '手机号', 'PhoneNo', 'string', 150, '', NULL, NULL, NULL, '', NULL, NULL, '', NULL, 1, 1, NULL, NULL, 1, 0, 11, '超级管理员', '2021-04-12 23:04:26', 1, 7760, '', NULL, 3, '', 0, 'Sys_User', 6); +INSERT INTO `Sys_TableColumn` VALUES (431, NULL, NULL, NULL, NULL, 'Token', 'Token', 'string', 180, '', NULL, NULL, NULL, '', NULL, 4, '', NULL, 1, 1, NULL, NULL, 1, 0, 500, '超级管理员', '2021-04-12 23:04:26', 1, 7810, '', NULL, 2, '', 0, 'Sys_User', 6); +INSERT INTO `Sys_TableColumn` VALUES (506, NULL, NULL, NULL, NULL, '性别', 'Gender', 'int', 100, '', NULL, NULL, NULL, 'gender', NULL, 4, 'drop', NULL, 1, 1, NULL, NULL, 1, 0, NULL, '超级管理员', '2021-04-12 23:04:26', 1, 7843, '', NULL, 1, 'drop', 0, 'Sys_User', 6); +INSERT INTO `Sys_TableColumn` VALUES (654, NULL, NULL, NULL, NULL, '登陆设备类型', 'AppType', 'int', 150, '', NULL, NULL, NULL, 'ut', NULL, 0, '', NULL, 1, 1, NULL, NULL, 1, 0, NULL, '超级管理员', '2021-04-12 23:04:26', 1, 7809, '', NULL, 3, 'dropList', 0, 'Sys_User', 6); +INSERT INTO `Sys_TableColumn` VALUES (659, NULL, NULL, NULL, NULL, '是否手机用户', 'IsRegregisterPhone', 'int', 120, '', NULL, NULL, NULL, 'isphone', NULL, 2, 'drop', NULL, 1, 0, NULL, NULL, 0, 0, NULL, '超级管理员', '2021-04-12 23:04:26', 1, 7771, '', NULL, 3, 'drop', 0, 'Sys_User', 6); +INSERT INTO `Sys_TableColumn` VALUES (764, NULL, NULL, NULL, NULL, '', 'FormId', 'string', 110, NULL, '2022-01-03 19:26:44', 1, '超级管理员', NULL, NULL, NULL, NULL, NULL, 1, 0, NULL, 1, 0, 1, 36, '超级管理员', '2022-01-03 19:28:41', 1, 1150, NULL, NULL, NULL, NULL, 0, 'FormDesignOptions', 84); +INSERT INTO `Sys_TableColumn` VALUES (765, NULL, NULL, NULL, NULL, '表单名称', 'Title', 'string', 220, NULL, '2022-01-03 19:26:44', 1, '超级管理员', NULL, NULL, 1, NULL, NULL, 1, 1, NULL, 0, 0, 0, 500, '超级管理员', '2022-01-03 19:28:41', 1, 1100, NULL, NULL, 1, 'like', 0, 'FormDesignOptions', 84); +INSERT INTO `Sys_TableColumn` VALUES (766, NULL, NULL, NULL, NULL, '设计器配置', 'DaraggeOptions', 'string', 110, NULL, '2022-01-03 19:26:44', 1, '超级管理员', NULL, NULL, NULL, NULL, NULL, 1, 1, NULL, 0, 1, 0, 0, '超级管理员', '2022-01-03 19:28:41', 1, 1050, NULL, NULL, NULL, NULL, 0, 'FormDesignOptions', 84); +INSERT INTO `Sys_TableColumn` VALUES (767, NULL, NULL, NULL, NULL, '表单参数', 'FormOptions', 'string', 110, NULL, '2022-01-03 19:26:44', 1, '超级管理员', NULL, NULL, NULL, NULL, NULL, 1, 1, NULL, 0, 1, 0, 0, '超级管理员', '2022-01-03 19:28:41', 1, 1000, NULL, NULL, NULL, NULL, 0, 'FormDesignOptions', 84); +INSERT INTO `Sys_TableColumn` VALUES (768, NULL, NULL, NULL, NULL, '表单配置', 'FormConfig', 'string', 110, NULL, '2022-01-03 19:26:44', 1, '超级管理员', NULL, NULL, NULL, NULL, NULL, 1, 1, NULL, 0, 1, 0, 0, '超级管理员', '2022-01-03 19:28:41', 1, 950, NULL, NULL, NULL, NULL, 0, 'FormDesignOptions', 84); +INSERT INTO `Sys_TableColumn` VALUES (769, NULL, NULL, NULL, NULL, '表单字段', 'FormFields', 'string', 110, NULL, '2022-01-03 19:26:44', 1, '超级管理员', NULL, NULL, NULL, NULL, NULL, 1, 1, NULL, 0, 1, 0, 0, '超级管理员', '2022-01-03 19:28:41', 1, 900, NULL, NULL, NULL, NULL, 0, 'FormDesignOptions', 84); +INSERT INTO `Sys_TableColumn` VALUES (770, NULL, NULL, NULL, NULL, '表格配置', 'TableConfig', 'string', 110, NULL, '2022-01-03 19:26:44', 1, '超级管理员', NULL, NULL, NULL, NULL, NULL, 1, 1, NULL, 0, 1, 0, 0, '超级管理员', '2022-01-03 19:28:41', 1, 850, NULL, NULL, NULL, NULL, 0, 'FormDesignOptions', 84); +INSERT INTO `Sys_TableColumn` VALUES (771, NULL, NULL, NULL, NULL, '创建时间', 'CreateDate', 'DateTime', 110, NULL, '2022-01-03 19:26:44', 1, '超级管理员', NULL, NULL, NULL, NULL, NULL, 1, 1, NULL, 0, 1, 0, NULL, '超级管理员', '2022-01-03 19:28:41', 1, 800, NULL, NULL, 1, 'datetime', 0, 'FormDesignOptions', 84); +INSERT INTO `Sys_TableColumn` VALUES (772, NULL, NULL, NULL, NULL, '', 'CreateID', 'int', 80, NULL, '2022-01-03 19:26:44', 1, '超级管理员', NULL, NULL, NULL, NULL, NULL, 1, 0, NULL, 0, 1, 0, NULL, '超级管理员', '2022-01-03 19:28:41', 1, 750, NULL, NULL, NULL, NULL, 0, 'FormDesignOptions', 84); +INSERT INTO `Sys_TableColumn` VALUES (773, NULL, NULL, NULL, NULL, '创建人', 'Creator', 'string', 130, NULL, '2022-01-03 19:26:44', 1, '超级管理员', NULL, NULL, NULL, NULL, NULL, 1, 1, NULL, 0, 1, 0, 30, '超级管理员', '2022-01-03 19:28:41', 1, 700, NULL, NULL, NULL, NULL, 0, 'FormDesignOptions', 84); +INSERT INTO `Sys_TableColumn` VALUES (774, NULL, NULL, NULL, NULL, '', 'Modifier', 'string', 130, NULL, '2022-01-03 19:26:44', 1, '超级管理员', NULL, NULL, NULL, NULL, NULL, 1, 1, NULL, 0, 1, 0, 30, '超级管理员', '2022-01-03 19:28:41', 1, 650, NULL, NULL, NULL, NULL, 0, 'FormDesignOptions', 84); +INSERT INTO `Sys_TableColumn` VALUES (775, NULL, NULL, NULL, NULL, '', 'ModifyDate', 'DateTime', 110, NULL, '2022-01-03 19:26:44', 1, '超级管理员', NULL, NULL, NULL, NULL, NULL, 1, 1, NULL, 0, 1, 0, NULL, '超级管理员', '2022-01-03 19:28:41', 1, 600, NULL, NULL, NULL, NULL, 0, 'FormDesignOptions', 84); +INSERT INTO `Sys_TableColumn` VALUES (776, NULL, NULL, NULL, NULL, '', 'ModifyID', 'int', 80, NULL, '2022-01-03 19:26:44', 1, '超级管理员', NULL, NULL, NULL, NULL, NULL, 1, 0, NULL, 0, 1, 0, NULL, '超级管理员', '2022-01-03 19:28:41', 1, 550, NULL, NULL, NULL, NULL, 0, 'FormDesignOptions', 84); +INSERT INTO `Sys_TableColumn` VALUES (777, NULL, NULL, NULL, NULL, '', 'FormCollectionId', 'string', 110, NULL, '2022-01-03 19:29:20', 1, '超级管理员', NULL, NULL, NULL, NULL, NULL, 1, 0, NULL, 1, 0, 1, 36, '超级管理员', '2022-01-03 19:30:13', 1, 1000, NULL, NULL, NULL, NULL, 0, 'FormCollectionObject', 85); +INSERT INTO `Sys_TableColumn` VALUES (778, NULL, NULL, NULL, NULL, '', 'FormId', 'string', 110, NULL, '2022-01-03 19:29:20', 1, '超级管理员', NULL, NULL, NULL, NULL, NULL, 1, 1, NULL, 0, 1, 0, 36, '超级管理员', '2022-01-03 19:30:13', 1, 950, NULL, NULL, NULL, NULL, 0, 'FormCollectionObject', 85); +INSERT INTO `Sys_TableColumn` VALUES (779, NULL, NULL, NULL, NULL, '标题', 'Title', 'string', 110, NULL, '2022-01-03 19:29:20', 1, '超级管理员', NULL, NULL, NULL, NULL, NULL, 1, 1, NULL, 0, 1, 0, 0, '超级管理员', '2022-01-03 19:30:13', 1, 900, NULL, NULL, 1, 'like', 0, 'FormCollectionObject', 85); +INSERT INTO `Sys_TableColumn` VALUES (780, NULL, NULL, NULL, NULL, '表单数据', 'FormData', 'string', 110, NULL, '2022-01-03 19:29:20', 1, '超级管理员', NULL, NULL, NULL, NULL, NULL, 1, 1, NULL, 0, 1, 0, 0, '超级管理员', '2022-01-03 19:30:13', 1, 850, NULL, NULL, NULL, NULL, 0, 'FormCollectionObject', 85); +INSERT INTO `Sys_TableColumn` VALUES (781, NULL, NULL, NULL, NULL, '提交时间', 'CreateDate', 'DateTime', 110, NULL, '2022-01-03 19:29:20', 1, '超级管理员', NULL, NULL, NULL, NULL, NULL, 1, 1, NULL, 0, 1, 0, NULL, '超级管理员', '2022-01-03 19:30:13', 1, 800, NULL, NULL, 1, 'datetime', 0, 'FormCollectionObject', 85); +INSERT INTO `Sys_TableColumn` VALUES (782, NULL, NULL, NULL, NULL, '', 'CreateID', 'int', 80, NULL, '2022-01-03 19:29:20', 1, '超级管理员', NULL, NULL, NULL, NULL, NULL, 1, 0, NULL, 0, 1, 0, NULL, '超级管理员', '2022-01-03 19:30:13', 1, 750, NULL, NULL, NULL, NULL, 0, 'FormCollectionObject', 85); +INSERT INTO `Sys_TableColumn` VALUES (783, NULL, NULL, NULL, NULL, '提交人', 'Creator', 'string', 130, NULL, '2022-01-03 19:29:20', 1, '超级管理员', NULL, NULL, NULL, NULL, NULL, 1, 1, NULL, 0, 1, 0, 30, '超级管理员', '2022-01-03 19:30:13', 1, 700, NULL, NULL, 1, NULL, 0, 'FormCollectionObject', 85); +INSERT INTO `Sys_TableColumn` VALUES (784, NULL, NULL, NULL, NULL, '', 'Modifier', 'string', 130, NULL, '2022-01-03 19:29:20', 1, '超级管理员', NULL, NULL, NULL, NULL, NULL, 1, 1, NULL, 0, 1, 0, 30, '超级管理员', '2022-01-03 19:30:13', 1, 650, NULL, NULL, NULL, NULL, 0, 'FormCollectionObject', 85); +INSERT INTO `Sys_TableColumn` VALUES (785, NULL, NULL, NULL, NULL, '', 'ModifyDate', 'DateTime', 110, NULL, '2022-01-03 19:29:20', 1, '超级管理员', NULL, NULL, NULL, NULL, NULL, 1, 1, NULL, 0, 1, 0, NULL, '超级管理员', '2022-01-03 19:30:13', 1, 600, NULL, NULL, NULL, NULL, 0, 'FormCollectionObject', 85); +INSERT INTO `Sys_TableColumn` VALUES (786, NULL, NULL, NULL, NULL, '', 'ModifyID', 'int', 80, NULL, '2022-01-03 19:29:20', 1, '超级管理员', NULL, NULL, NULL, NULL, NULL, 1, 0, NULL, 0, 1, 0, NULL, '超级管理员', '2022-01-03 19:30:13', 1, 550, NULL, NULL, NULL, NULL, 0, 'FormCollectionObject', 85); +INSERT INTO `Sys_TableColumn` VALUES (801, NULL, NULL, NULL, NULL, '', 'WorkFlow_Id', 'string', 120, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, 0, NULL, 1, 0, 1, 36, '超级管理员', '2022-08-17 23:37:59', 1, 0, NULL, NULL, NULL, NULL, 0, 'Sys_WorkFlow', 88); +INSERT INTO `Sys_TableColumn` VALUES (802, NULL, NULL, NULL, NULL, '流程名称', 'WorkName', 'string', 120, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, 1, 1, NULL, 0, 0, 0, 200, '超级管理员', '2022-08-17 23:37:59', 1, 0, NULL, NULL, 1, 'like', 0, 'Sys_WorkFlow', 88); +INSERT INTO `Sys_TableColumn` VALUES (803, NULL, NULL, NULL, NULL, '表名', 'WorkTable', 'string', 120, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, 1, 1, NULL, 0, 0, 0, 200, '超级管理员', '2022-08-17 23:37:59', 1, 0, NULL, NULL, 1, '', 0, 'Sys_WorkFlow', 88); +INSERT INTO `Sys_TableColumn` VALUES (804, NULL, NULL, NULL, NULL, '功能菜单', 'WorkTableName', 'string', 120, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, 1, 1, NULL, 0, 1, 0, 200, '超级管理员', '2022-08-17 23:37:59', 1, 0, NULL, NULL, NULL, NULL, 0, 'Sys_WorkFlow', 88); +INSERT INTO `Sys_TableColumn` VALUES (805, NULL, NULL, NULL, NULL, '节点信息', 'NodeConfig', 'string', 120, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, 1, 1, NULL, 0, 1, 0, 0, '超级管理员', '2022-08-17 23:37:59', 1, 0, NULL, NULL, NULL, NULL, 0, 'Sys_WorkFlow', 88); +INSERT INTO `Sys_TableColumn` VALUES (806, NULL, NULL, NULL, NULL, '连接配置', 'LineConfig', 'string', 120, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, 1, 1, NULL, 0, 1, 0, 0, '超级管理员', '2022-08-17 23:37:59', 1, 0, NULL, NULL, NULL, NULL, 0, 'Sys_WorkFlow', 88); +INSERT INTO `Sys_TableColumn` VALUES (807, NULL, NULL, NULL, NULL, '备注', 'Remark', 'string', 120, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, 1, 1, NULL, 0, 1, 0, 500, '超级管理员', '2022-08-17 23:37:59', 1, 0, NULL, NULL, NULL, NULL, 0, 'Sys_WorkFlow', 88); +INSERT INTO `Sys_TableColumn` VALUES (808, NULL, NULL, NULL, NULL, '创建时间', 'CreateDate', 'DateTime', 120, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, 1, 1, NULL, 0, 1, 0, NULL, '超级管理员', '2022-08-17 23:37:59', 1, 0, NULL, NULL, NULL, NULL, 0, 'Sys_WorkFlow', 88); +INSERT INTO `Sys_TableColumn` VALUES (809, NULL, NULL, NULL, NULL, '', 'CreateID', 'int', 120, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, 0, NULL, 0, 1, 0, NULL, '超级管理员', '2022-08-17 23:37:59', 1, 0, NULL, NULL, NULL, NULL, 0, 'Sys_WorkFlow', 88); +INSERT INTO `Sys_TableColumn` VALUES (810, NULL, NULL, NULL, NULL, '', 'Creator', 'string', 120, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, 0, NULL, 0, 1, 0, 30, '超级管理员', '2022-08-17 23:37:59', 1, 0, NULL, NULL, NULL, NULL, 0, 'Sys_WorkFlow', 88); +INSERT INTO `Sys_TableColumn` VALUES (811, NULL, NULL, NULL, NULL, '是否启用', 'Enable', 'sbyte', 120, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, 1, NULL, 0, 1, 0, NULL, '超级管理员', '2022-08-17 23:37:59', 1, 0, NULL, NULL, 1, 'datetime', 0, 'Sys_WorkFlow', 88); +INSERT INTO `Sys_TableColumn` VALUES (812, NULL, NULL, NULL, NULL, '', 'Modifier', 'string', 120, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, 1, NULL, 0, 1, 0, 30, '超级管理员', '2022-08-17 23:37:59', 1, 0, NULL, NULL, NULL, NULL, 0, 'Sys_WorkFlow', 88); +INSERT INTO `Sys_TableColumn` VALUES (813, NULL, NULL, NULL, NULL, '', 'ModifyDate', 'DateTime', 120, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, 0, NULL, 0, 1, 0, NULL, '超级管理员', '2022-08-17 23:37:59', 1, 0, NULL, NULL, NULL, NULL, 0, 'Sys_WorkFlow', 88); +INSERT INTO `Sys_TableColumn` VALUES (814, NULL, NULL, NULL, NULL, '', 'ModifyID', 'int', 120, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, 0, NULL, 0, 1, 0, NULL, '超级管理员', '2022-08-17 23:37:59', 1, 0, NULL, NULL, NULL, NULL, 0, 'Sys_WorkFlow', 88); +INSERT INTO `Sys_TableColumn` VALUES (815, NULL, NULL, NULL, NULL, '', 'WorkStepFlow_Id', 'string', 110, NULL, '2022-08-17 23:20:22', 1, '超级管理员', NULL, NULL, NULL, NULL, NULL, 1, 0, NULL, 1, 0, 1, 36, '超级管理员', '2022-08-17 23:38:35', 1, 1250, NULL, NULL, NULL, NULL, 0, 'Sys_WorkFlowStep', 89); +INSERT INTO `Sys_TableColumn` VALUES (816, NULL, NULL, NULL, NULL, '流程主表id', 'WorkFlow_Id', 'string', 110, NULL, '2022-08-17 23:20:22', 1, '超级管理员', NULL, NULL, 0, NULL, NULL, 1, 1, NULL, 0, 1, 0, 36, '超级管理员', '2022-08-17 23:38:35', 1, 1200, NULL, NULL, NULL, NULL, 0, 'Sys_WorkFlowStep', 89); +INSERT INTO `Sys_TableColumn` VALUES (817, NULL, NULL, NULL, NULL, '流程节点Id', 'StepId', 'string', 120, NULL, '2022-08-17 23:20:22', 1, '超级管理员', NULL, NULL, 0, NULL, NULL, 1, 1, NULL, 0, 1, 0, 100, '超级管理员', '2022-08-17 23:38:35', 1, 1150, NULL, NULL, NULL, NULL, 0, 'Sys_WorkFlowStep', 89); +INSERT INTO `Sys_TableColumn` VALUES (818, NULL, NULL, NULL, NULL, '节点名称', 'StepName', 'string', 180, NULL, '2022-08-17 23:20:22', 1, '超级管理员', NULL, NULL, 0, NULL, NULL, 1, 1, NULL, 0, 1, 0, 200, '超级管理员', '2022-08-17 23:38:35', 1, 1100, NULL, NULL, NULL, NULL, 0, 'Sys_WorkFlowStep', 89); +INSERT INTO `Sys_TableColumn` VALUES (819, NULL, NULL, NULL, NULL, '节点类型(1=按用户审批,2=按角色审批,3=按部门审批)', 'StepType', 'int', 110, NULL, '2022-08-17 23:20:22', 1, '超级管理员', NULL, NULL, 0, NULL, NULL, 1, 1, NULL, 0, 1, 0, NULL, '超级管理员', '2022-08-17 23:38:35', 1, 1050, NULL, NULL, NULL, NULL, 0, 'Sys_WorkFlowStep', 89); +INSERT INTO `Sys_TableColumn` VALUES (820, NULL, NULL, NULL, NULL, '审批用户id或角色id、部门id', 'StepValue', 'int', 110, NULL, '2022-08-17 23:20:22', 1, '超级管理员', NULL, NULL, 0, NULL, NULL, 1, 1, NULL, 0, 1, 0, NULL, '超级管理员', '2022-08-17 23:38:35', 1, 1000, NULL, NULL, NULL, NULL, 0, 'Sys_WorkFlowStep', 89); +INSERT INTO `Sys_TableColumn` VALUES (821, NULL, NULL, NULL, NULL, '审批顺序', 'OrderId', 'int', 110, NULL, '2022-08-17 23:20:22', 1, '超级管理员', NULL, NULL, 0, NULL, NULL, 1, 1, NULL, 0, 1, 0, NULL, '超级管理员', '2022-08-17 23:38:35', 1, 950, NULL, NULL, NULL, NULL, 0, 'Sys_WorkFlowStep', 89); +INSERT INTO `Sys_TableColumn` VALUES (822, NULL, NULL, NULL, NULL, '备注', 'Remark', 'string', 220, NULL, '2022-08-17 23:20:22', 1, '超级管理员', NULL, NULL, 0, NULL, NULL, 1, 1, NULL, 0, 1, 0, 500, '超级管理员', '2022-08-17 23:38:35', 1, 900, NULL, NULL, NULL, NULL, 0, 'Sys_WorkFlowStep', 89); +INSERT INTO `Sys_TableColumn` VALUES (823, NULL, NULL, NULL, NULL, '创建时间', 'CreateDate', 'DateTime', 110, NULL, '2022-08-17 23:20:22', 1, '超级管理员', NULL, NULL, 0, NULL, NULL, 1, 1, NULL, 0, 1, 0, NULL, '超级管理员', '2022-08-17 23:38:35', 1, 850, NULL, NULL, NULL, NULL, 0, 'Sys_WorkFlowStep', 89); +INSERT INTO `Sys_TableColumn` VALUES (824, NULL, NULL, NULL, NULL, '', 'CreateID', 'int', 80, NULL, '2022-08-17 23:20:22', 1, '超级管理员', NULL, NULL, NULL, NULL, NULL, 1, 0, NULL, 0, 1, 0, NULL, '超级管理员', '2022-08-17 23:38:35', 1, 800, NULL, NULL, NULL, NULL, 0, 'Sys_WorkFlowStep', 89); +INSERT INTO `Sys_TableColumn` VALUES (825, NULL, NULL, NULL, NULL, '', 'Creator', 'string', 130, NULL, '2022-08-17 23:20:22', 1, '超级管理员', NULL, NULL, NULL, NULL, NULL, 1, 1, NULL, 0, 1, 0, 30, '超级管理员', '2022-08-17 23:38:35', 1, 750, NULL, NULL, NULL, NULL, 0, 'Sys_WorkFlowStep', 89); +INSERT INTO `Sys_TableColumn` VALUES (826, NULL, NULL, NULL, NULL, '', 'Enable', 'sbyte', 110, NULL, '2022-08-17 23:20:22', 1, '超级管理员', NULL, NULL, NULL, NULL, NULL, 1, 1, NULL, 0, 1, 0, NULL, '超级管理员', '2022-08-17 23:38:35', 1, 700, NULL, NULL, NULL, NULL, 0, 'Sys_WorkFlowStep', 89); +INSERT INTO `Sys_TableColumn` VALUES (827, NULL, NULL, NULL, NULL, '', 'Modifier', 'string', 130, NULL, '2022-08-17 23:20:22', 1, '超级管理员', NULL, NULL, NULL, NULL, NULL, 1, 1, NULL, 0, 1, 0, 30, '超级管理员', '2022-08-17 23:38:35', 1, 650, NULL, NULL, NULL, NULL, 0, 'Sys_WorkFlowStep', 89); +INSERT INTO `Sys_TableColumn` VALUES (828, NULL, NULL, NULL, NULL, '', 'ModifyDate', 'DateTime', 110, NULL, '2022-08-17 23:20:22', 1, '超级管理员', NULL, NULL, NULL, NULL, NULL, 1, 1, NULL, 0, 1, 0, NULL, '超级管理员', '2022-08-17 23:38:35', 1, 600, NULL, NULL, NULL, NULL, 0, 'Sys_WorkFlowStep', 89); +INSERT INTO `Sys_TableColumn` VALUES (829, NULL, NULL, NULL, NULL, '', 'ModifyID', 'int', 80, NULL, '2022-08-17 23:20:22', 1, '超级管理员', NULL, NULL, NULL, NULL, NULL, 1, 0, NULL, 0, 1, 0, NULL, '超级管理员', '2022-08-17 23:38:35', 1, 550, NULL, NULL, NULL, NULL, 0, 'Sys_WorkFlowStep', 89); +INSERT INTO `Sys_TableColumn` VALUES (830, NULL, NULL, NULL, NULL, '', 'WorkFlowTable_Id', 'string', 110, NULL, '2022-08-17 23:21:04', 1, '超级管理员', NULL, NULL, NULL, NULL, NULL, 1, 0, NULL, 1, 0, 1, 36, '超级管理员', '2022-08-17 23:40:13', 1, 1250, NULL, NULL, NULL, NULL, 0, 'Sys_WorkFlowTable', 90); +INSERT INTO `Sys_TableColumn` VALUES (831, NULL, NULL, NULL, NULL, '流程id', 'WorkFlow_Id', 'string', 110, NULL, '2022-08-17 23:21:04', 1, '超级管理员', NULL, NULL, NULL, NULL, NULL, 1, 0, NULL, 0, 1, 0, 36, '超级管理员', '2022-08-17 23:40:13', 1, 1200, NULL, NULL, NULL, NULL, 0, 'Sys_WorkFlowTable', 90); +INSERT INTO `Sys_TableColumn` VALUES (832, NULL, NULL, NULL, NULL, '流程名称', 'WorkName', 'string', 180, NULL, '2022-08-17 23:21:04', 1, '超级管理员', NULL, NULL, NULL, NULL, NULL, 1, 1, NULL, 0, 1, 0, 200, '超级管理员', '2022-08-17 23:40:13', 1, 1150, NULL, NULL, 1, NULL, 0, 'Sys_WorkFlowTable', 90); +INSERT INTO `Sys_TableColumn` VALUES (833, NULL, NULL, NULL, NULL, '表主键id', 'WorkTableKey', 'string', 180, NULL, '2022-08-17 23:21:04', 1, '超级管理员', NULL, NULL, NULL, NULL, NULL, 1, 0, NULL, 0, 1, 0, 200, '超级管理员', '2022-08-17 23:40:13', 1, 1100, NULL, NULL, NULL, NULL, 0, 'Sys_WorkFlowTable', 90); +INSERT INTO `Sys_TableColumn` VALUES (834, NULL, NULL, NULL, NULL, '表名', 'WorkTable', 'string', 120, NULL, '2022-08-17 23:21:04', 1, '超级管理员', NULL, NULL, NULL, NULL, NULL, 1, 1, NULL, 0, 1, 0, 200, '超级管理员', '2022-08-17 23:40:13', 1, 1050, NULL, NULL, 1, NULL, 0, 'Sys_WorkFlowTable', 90); +INSERT INTO `Sys_TableColumn` VALUES (835, NULL, NULL, NULL, NULL, '业务名称', 'WorkTableName', 'string', 120, NULL, '2022-08-17 23:21:04', 1, '超级管理员', NULL, NULL, NULL, NULL, NULL, 1, 1, NULL, 0, 1, 0, 200, '超级管理员', '2022-08-17 23:40:13', 1, 1000, NULL, NULL, 1, NULL, 0, 'Sys_WorkFlowTable', 90); +INSERT INTO `Sys_TableColumn` VALUES (836, NULL, NULL, NULL, NULL, '当前审批节点', 'CurrentOrderId', 'int', 110, NULL, '2022-08-17 23:21:04', 1, '超级管理员', NULL, NULL, NULL, NULL, NULL, 1, 1, NULL, 0, 1, 0, NULL, '超级管理员', '2022-08-17 23:40:13', 1, 950, NULL, NULL, NULL, NULL, 0, 'Sys_WorkFlowTable', 90); +INSERT INTO `Sys_TableColumn` VALUES (837, NULL, NULL, NULL, NULL, '审批状态', 'AuditStatus', 'int', 110, NULL, '2022-08-17 23:21:04', 1, '超级管理员', 'audit', NULL, NULL, NULL, NULL, 1, 1, NULL, 0, 1, 0, NULL, '超级管理员', '2022-08-17 23:40:13', 1, 900, NULL, NULL, 1, 'select', 0, 'Sys_WorkFlowTable', 90); +INSERT INTO `Sys_TableColumn` VALUES (838, NULL, NULL, NULL, NULL, '创建时间', 'CreateDate', 'DateTime', 110, NULL, '2022-08-17 23:21:04', 1, '超级管理员', NULL, NULL, NULL, NULL, NULL, 1, 1, NULL, 0, 1, 0, NULL, '超级管理员', '2022-08-17 23:40:13', 1, 850, NULL, NULL, NULL, NULL, 0, 'Sys_WorkFlowTable', 90); +INSERT INTO `Sys_TableColumn` VALUES (839, NULL, NULL, NULL, NULL, '', 'CreateID', 'int', 80, NULL, '2022-08-17 23:21:04', 1, '超级管理员', NULL, NULL, NULL, NULL, NULL, 1, 0, NULL, 0, 1, 0, NULL, '超级管理员', '2022-08-17 23:40:13', 1, 800, NULL, NULL, NULL, NULL, 0, 'Sys_WorkFlowTable', 90); +INSERT INTO `Sys_TableColumn` VALUES (840, NULL, NULL, NULL, NULL, '创建时间', 'Creator', 'string', 130, NULL, '2022-08-17 23:21:04', 1, '超级管理员', NULL, NULL, NULL, NULL, NULL, 1, 1, NULL, 0, 1, 0, 30, '超级管理员', '2022-08-17 23:40:13', 1, 750, NULL, NULL, 1, 'datetime', 0, 'Sys_WorkFlowTable', 90); +INSERT INTO `Sys_TableColumn` VALUES (841, NULL, NULL, NULL, NULL, '', 'Enable', 'sbyte', 110, NULL, '2022-08-17 23:21:04', 1, '超级管理员', NULL, NULL, NULL, NULL, NULL, 1, 1, NULL, 0, 1, 0, NULL, '超级管理员', '2022-08-17 23:40:13', 1, 700, NULL, NULL, NULL, NULL, 0, 'Sys_WorkFlowTable', 90); +INSERT INTO `Sys_TableColumn` VALUES (842, NULL, NULL, NULL, NULL, '', 'Modifier', 'string', 130, NULL, '2022-08-17 23:21:04', 1, '超级管理员', NULL, NULL, NULL, NULL, NULL, 1, 1, NULL, 0, 1, 0, 30, '超级管理员', '2022-08-17 23:40:13', 1, 650, NULL, NULL, NULL, NULL, 0, 'Sys_WorkFlowTable', 90); +INSERT INTO `Sys_TableColumn` VALUES (843, NULL, NULL, NULL, NULL, '', 'ModifyDate', 'DateTime', 110, NULL, '2022-08-17 23:21:04', 1, '超级管理员', NULL, NULL, NULL, NULL, NULL, 1, 1, NULL, 0, 1, 0, NULL, '超级管理员', '2022-08-17 23:40:13', 1, 600, NULL, NULL, NULL, NULL, 0, 'Sys_WorkFlowTable', 90); +INSERT INTO `Sys_TableColumn` VALUES (844, NULL, NULL, NULL, NULL, '', 'ModifyID', 'int', 80, NULL, '2022-08-17 23:21:04', 1, '超级管理员', NULL, NULL, NULL, NULL, NULL, 1, 0, NULL, 0, 1, 0, NULL, '超级管理员', '2022-08-17 23:40:13', 1, 550, NULL, NULL, NULL, NULL, 0, 'Sys_WorkFlowTable', 90); +INSERT INTO `Sys_TableColumn` VALUES (845, NULL, NULL, NULL, NULL, '', 'Sys_WorkFlowTableStep_Id', 'string', 110, NULL, '2022-08-17 23:22:13', 1, '超级管理员', NULL, NULL, NULL, NULL, NULL, 1, 0, NULL, 1, 0, 1, 36, '超级管理员', '2022-08-17 23:22:24', 1, 1500, NULL, NULL, NULL, NULL, 0, 'Sys_WorkFlowTableStep', 91); +INSERT INTO `Sys_TableColumn` VALUES (846, NULL, NULL, NULL, NULL, '', 'Modifier', 'string', 130, NULL, '2022-08-17 23:22:13', 1, '超级管理员', NULL, NULL, NULL, NULL, NULL, 1, 1, NULL, 0, 1, 0, 30, '超级管理员', '2022-08-17 23:22:24', 1, 650, NULL, NULL, NULL, NULL, 0, 'Sys_WorkFlowTableStep', 91); +INSERT INTO `Sys_TableColumn` VALUES (847, NULL, NULL, NULL, NULL, '', 'Enable', 'sbyte', 110, NULL, '2022-08-17 23:22:13', 1, '超级管理员', NULL, NULL, NULL, NULL, NULL, 1, 1, NULL, 0, 1, 0, NULL, '超级管理员', '2022-08-17 23:22:24', 1, 700, NULL, NULL, NULL, NULL, 0, 'Sys_WorkFlowTableStep', 91); +INSERT INTO `Sys_TableColumn` VALUES (848, NULL, NULL, NULL, NULL, '', 'Creator', 'string', 130, NULL, '2022-08-17 23:22:13', 1, '超级管理员', NULL, NULL, NULL, NULL, NULL, 1, 1, NULL, 0, 1, 0, 30, '超级管理员', '2022-08-17 23:22:24', 1, 750, NULL, NULL, NULL, NULL, 0, 'Sys_WorkFlowTableStep', 91); +INSERT INTO `Sys_TableColumn` VALUES (849, NULL, NULL, NULL, NULL, '', 'CreateID', 'int', 80, NULL, '2022-08-17 23:22:13', 1, '超级管理员', NULL, NULL, NULL, NULL, NULL, 1, 0, NULL, 0, 1, 0, NULL, '超级管理员', '2022-08-17 23:22:24', 1, 800, NULL, NULL, NULL, NULL, 0, 'Sys_WorkFlowTableStep', 91); +INSERT INTO `Sys_TableColumn` VALUES (850, NULL, NULL, NULL, NULL, '', 'CreateDate', 'DateTime', 110, NULL, '2022-08-17 23:22:13', 1, '超级管理员', NULL, NULL, NULL, NULL, NULL, 1, 1, NULL, 0, 1, 0, NULL, '超级管理员', '2022-08-17 23:22:24', 1, 850, NULL, NULL, NULL, NULL, 0, 'Sys_WorkFlowTableStep', 91); +INSERT INTO `Sys_TableColumn` VALUES (851, NULL, NULL, NULL, NULL, '', 'Remark', 'string', 220, NULL, '2022-08-17 23:22:13', 1, '超级管理员', NULL, NULL, NULL, NULL, NULL, 1, 1, NULL, 0, 1, 0, 500, '超级管理员', '2022-08-17 23:22:24', 1, 900, NULL, NULL, NULL, NULL, 0, 'Sys_WorkFlowTableStep', 91); +INSERT INTO `Sys_TableColumn` VALUES (852, NULL, NULL, NULL, NULL, '审核时间', 'AuditDate', 'DateTime', 110, NULL, '2022-08-17 23:22:13', 1, '超级管理员', NULL, NULL, NULL, NULL, NULL, 1, 1, NULL, 0, 1, 0, NULL, '超级管理员', '2022-08-17 23:22:24', 1, 950, NULL, NULL, NULL, NULL, 0, 'Sys_WorkFlowTableStep', 91); +INSERT INTO `Sys_TableColumn` VALUES (853, NULL, NULL, NULL, NULL, '审核状态', 'AuditStatus', 'int', 110, NULL, '2022-08-17 23:22:13', 1, '超级管理员', NULL, NULL, NULL, NULL, NULL, 1, 1, NULL, 0, 1, 0, NULL, '超级管理员', '2022-08-17 23:22:24', 1, 1000, NULL, NULL, NULL, NULL, 0, 'Sys_WorkFlowTableStep', 91); +INSERT INTO `Sys_TableColumn` VALUES (854, NULL, NULL, NULL, NULL, '审核人', 'Auditor', 'string', 110, NULL, '2022-08-17 23:22:13', 1, '超级管理员', NULL, NULL, NULL, NULL, NULL, 1, 1, NULL, 0, 1, 0, 50, '超级管理员', '2022-08-17 23:22:24', 1, 1050, NULL, NULL, NULL, NULL, 0, 'Sys_WorkFlowTableStep', 91); +INSERT INTO `Sys_TableColumn` VALUES (855, NULL, NULL, NULL, NULL, '审核人id', 'AuditId', 'int', 110, NULL, '2022-08-17 23:22:13', 1, '超级管理员', NULL, NULL, NULL, NULL, NULL, 1, 1, NULL, 0, 1, 0, NULL, '超级管理员', '2022-08-17 23:22:24', 1, 1100, NULL, NULL, NULL, NULL, 0, 'Sys_WorkFlowTableStep', 91); +INSERT INTO `Sys_TableColumn` VALUES (856, NULL, NULL, NULL, NULL, '审批顺序', 'OrderId', 'int', 110, NULL, '2022-08-17 23:22:13', 1, '超级管理员', NULL, NULL, NULL, NULL, NULL, 1, 1, NULL, 0, 1, 0, NULL, '超级管理员', '2022-08-17 23:22:24', 1, 1150, NULL, NULL, NULL, NULL, 0, 'Sys_WorkFlowTableStep', 91); +INSERT INTO `Sys_TableColumn` VALUES (857, NULL, NULL, NULL, NULL, '节点类型(1=按用户审批,2=按角色审批,3=按部门审批 )', 'StepValue', 'int', 110, NULL, '2022-08-17 23:22:13', 1, '超级管理员', NULL, NULL, NULL, NULL, NULL, 1, 1, NULL, 0, 1, 0, NULL, '超级管理员', '2022-08-17 23:22:24', 1, 1200, NULL, NULL, NULL, NULL, 0, 'Sys_WorkFlowTableStep', 91); +INSERT INTO `Sys_TableColumn` VALUES (858, NULL, NULL, NULL, NULL, '审批类型', 'StepType', 'int', 110, NULL, '2022-08-17 23:22:13', 1, '超级管理员', NULL, NULL, NULL, NULL, NULL, 1, 1, NULL, 0, 1, 0, NULL, '超级管理员', '2022-08-17 23:22:24', 1, 1250, NULL, NULL, NULL, NULL, 0, 'Sys_WorkFlowTableStep', 91); +INSERT INTO `Sys_TableColumn` VALUES (859, NULL, NULL, NULL, NULL, '节名称', 'StepName', 'string', 180, NULL, '2022-08-17 23:22:13', 1, '超级管理员', NULL, NULL, NULL, NULL, NULL, 1, 1, NULL, 0, 1, 0, 200, '超级管理员', '2022-08-17 23:22:24', 1, 1300, NULL, NULL, NULL, NULL, 0, 'Sys_WorkFlowTableStep', 91); +INSERT INTO `Sys_TableColumn` VALUES (860, NULL, NULL, NULL, NULL, '节点id', 'StepId', 'string', 120, NULL, '2022-08-17 23:22:13', 1, '超级管理员', NULL, NULL, NULL, NULL, NULL, 1, 1, NULL, 0, 1, 0, 100, '超级管理员', '2022-08-17 23:22:24', 1, 1350, NULL, NULL, NULL, NULL, 0, 'Sys_WorkFlowTableStep', 91); +INSERT INTO `Sys_TableColumn` VALUES (861, NULL, NULL, NULL, NULL, '流程id', 'WorkFlow_Id', 'string', 110, NULL, '2022-08-17 23:22:13', 1, '超级管理员', NULL, NULL, NULL, NULL, NULL, 1, 1, NULL, 0, 1, 0, 36, '超级管理员', '2022-08-17 23:22:24', 1, 1400, NULL, NULL, NULL, NULL, 0, 'Sys_WorkFlowTableStep', 91); +INSERT INTO `Sys_TableColumn` VALUES (862, NULL, NULL, NULL, NULL, '主表id', 'WorkFlowTable_Id', 'string', 110, NULL, '2022-08-17 23:22:13', 1, '超级管理员', NULL, NULL, NULL, NULL, NULL, 1, 1, NULL, 0, 0, 0, 36, '超级管理员', '2022-08-17 23:22:24', 1, 1450, NULL, NULL, NULL, NULL, 0, 'Sys_WorkFlowTableStep', 91); +INSERT INTO `Sys_TableColumn` VALUES (863, NULL, NULL, NULL, NULL, '', 'ModifyDate', 'DateTime', 110, NULL, '2022-08-17 23:22:13', 1, '超级管理员', NULL, NULL, NULL, NULL, NULL, 1, 1, NULL, 0, 1, 0, NULL, '超级管理员', '2022-08-17 23:22:24', 1, 600, NULL, NULL, NULL, NULL, 0, 'Sys_WorkFlowTableStep', 91); +INSERT INTO `Sys_TableColumn` VALUES (864, NULL, NULL, NULL, NULL, '', 'ModifyID', 'int', 80, NULL, '2022-08-17 23:22:13', 1, '超级管理员', NULL, NULL, NULL, NULL, NULL, 1, 0, NULL, 0, 1, 0, NULL, '超级管理员', '2022-08-17 23:22:24', 1, 550, NULL, NULL, NULL, NULL, 0, 'Sys_WorkFlowTableStep', 91); -- ---------------------------- -- Table structure for Sys_TableInfo @@ -870,19 +1409,27 @@ CREATE TABLE `Sys_TableInfo` ( `UploadField` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `UploadMaxCount` int(11) NULL DEFAULT NULL, PRIMARY KEY (`Table_Id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 81 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = COMPACT; +) ENGINE = InnoDB AUTO_INCREMENT = 92 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = COMPACT; -- ---------------------------- -- Records of Sys_TableInfo -- ---------------------------- INSERT INTO `Sys_TableInfo` VALUES (2, '角色管理', '角色管理', NULL, NULL, NULL, NULL, NULL, 1, 'RoleName', 'System', 'VOL.System', NULL, 8, NULL, NULL, 'Sys_Role', 'Sys_Role', NULL, NULL); INSERT INTO `Sys_TableInfo` VALUES (3, '字典数据', '字典数据', NULL, NULL, '字典明细', 'Sys_DictionaryList', NULL, 1, 'DicName', 'System', 'VOL.System', NULL, 11, NULL, NULL, 'Sys_Dictionary', NULL, NULL, NULL); -INSERT INTO `Sys_TableInfo` VALUES (4, '字典明细', '字典明细', NULL, NULL, NULL, NULL, NULL, 1, NULL, 'System', 'VOL.System', NULL, 11, NULL, NULL, 'Sys_DictionaryList', NULL, NULL, NULL); +INSERT INTO `Sys_TableInfo` VALUES (4, '字典明细', '字典明细', NULL, NULL, NULL, NULL, NULL, 1, NULL, 'System', 'VOL.System', NULL, 11, NULL, NULL, 'Sys_DictionaryList', 'Sys_DictionaryList', NULL, NULL); INSERT INTO `Sys_TableInfo` VALUES (5, '系统日志', '系统日志', NULL, NULL, NULL, NULL, NULL, 1, NULL, 'System', 'VOL.System', NULL, 10, NULL, NULL, 'Sys_Log', 'Sys_Log', NULL, NULL); INSERT INTO `Sys_TableInfo` VALUES (6, NULL, '用户管理', NULL, NULL, NULL, NULL, NULL, 1, 'UserName', 'System', 'VOL.System', NULL, 8, NULL, '', 'Sys_User', 'Sys_User', 'HeadImageUrl', 1); INSERT INTO `Sys_TableInfo` VALUES (8, '用户基础信息', '用户基础信息', NULL, NULL, NULL, NULL, NULL, 1, NULL, 'System', 'VOL.System', 200, 0, NULL, NULL, '无', NULL, NULL, NULL); -INSERT INTO `Sys_TableInfo` VALUES (10, '日志管理', '日志管理', NULL, NULL, NULL, NULL, NULL, 1, NULL, 'System', 'VOL.System', NULL, 0, NULL, '170', '日志管理', NULL, NULL, NULL); +INSERT INTO `Sys_TableInfo` VALUES (10, '日志管理', '日志管理', NULL, NULL, NULL, NULL, NULL, 1, NULL, 'System', 'VOL.System', NULL, 0, NULL, '170', '日志管理', '日志管理', NULL, NULL); INSERT INTO `Sys_TableInfo` VALUES (11, '配置管理', '配置管理', NULL, NULL, NULL, NULL, NULL, 1, NULL, 'System', 'VOL.System', NULL, 0, NULL, '250', '配置管理', NULL, NULL, NULL); +INSERT INTO `Sys_TableInfo` VALUES (83, '表单设计', '表单设计', NULL, NULL, NULL, NULL, NULL, 1, NULL, 'System', 'VOL.System', NULL, 0, NULL, NULL, '表单设计', NULL, NULL, NULL); +INSERT INTO `Sys_TableInfo` VALUES (84, '表单设计', '表单设计', NULL, NULL, NULL, '', NULL, 1, 'Title', 'form', 'VOL.System', NULL, 83, NULL, 'CreateDate', 'FormDesignOptions', 'FormDesignOptions', NULL, NULL); +INSERT INTO `Sys_TableInfo` VALUES (85, '数据采集', '数据采集', NULL, NULL, NULL, NULL, NULL, 1, NULL, 'form', 'VOL.System', NULL, 83, NULL, 'CreateDate', 'FormCollectionObject', 'FormCollectionObject', NULL, NULL); +INSERT INTO `Sys_TableInfo` VALUES (87, '审批流程', '审批流程', NULL, NULL, NULL, NULL, NULL, 1, NULL, '审批流程', 'VOL.System', NULL, 0, NULL, NULL, '审批流程', NULL, NULL, NULL); +INSERT INTO `Sys_TableInfo` VALUES (88, '审批流程配置', '审批流程配置', NULL, NULL, '审批步骤', 'Sys_WorkFlowStep', NULL, 1, 'WorkName', 'flow', 'VOL.System', NULL, 87, NULL, 'CreateDate', 'Sys_WorkFlow', 'Sys_WorkFlow', NULL, NULL); +INSERT INTO `Sys_TableInfo` VALUES (89, '审批节点配置', '审批节点配置', NULL, NULL, '', NULL, NULL, 1, NULL, 'flow', 'VOL.System', NULL, 87, NULL, 'CreateDate', 'Sys_WorkFlowStep', 'Sys_WorkFlowStep', NULL, NULL); +INSERT INTO `Sys_TableInfo` VALUES (90, '审批流程', '审批流程', NULL, NULL, '审批节点', 'Sys_WorkFlowTableStep', NULL, 1, NULL, 'flow', 'VOL.System', NULL, 87, NULL, 'CreateDate', 'Sys_WorkFlowTable', 'Sys_WorkFlowTable', NULL, NULL); +INSERT INTO `Sys_TableInfo` VALUES (91, '审批节点', '审批节点', NULL, NULL, NULL, NULL, NULL, 1, NULL, 'flow', 'VOL.System', NULL, 87, NULL, 'CreateDate', 'Sys_WorkFlowTableStep', 'Sys_WorkFlowTableStep', NULL, NULL); -- ---------------------------- -- Table structure for Sys_User @@ -922,23 +1469,151 @@ CREATE TABLE `Sys_User` ( `UserTrueName` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, `Token` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, PRIMARY KEY (`User_Id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 3372 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = COMPACT; +) ENGINE = InnoDB AUTO_INCREMENT = 3380 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = COMPACT; -- ---------------------------- -- Records of Sys_User -- ---------------------------- -INSERT INTO `Sys_User` VALUES (1, '北京市西城区', 0, '2019-08-18 00:54:06', 1, '超级管理员', '2012-06-10 11:10:03', NULL, NULL, NULL, 0, '283591387@qq.com', 1, 1, 'https://imgs-1256993465.cos.ap-chengdu.myqcloud.com/head.png', 0, '2017-08-28 09:58:55', '2019-12-14 15:13:49', NULL, '超级管理员', '2019-05-30 11:37:41', 1, 0, 1, '超级管理员', '13888888888', '~还没想好...', NULL, 'admin', 'j79rYYvCz4vdhcboB1Ausg==', '超级管理员', 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiIxIiwiaWF0IjoiMTYwNTMzNTgwOSIsIm5iZiI6IjE2MDUzMzU4MDkiLCJleHAiOiIxNjA1MzQzMDA5IiwiaXNzIjoidm9sLmNvcmUub3duZXIiLCJhdWQiOiJ2b2wuY29yZSJ9.Yj-A6n09YvdU5VMNzopUUKTUNY5uKVSQ8W0zkNUO1hQ'); -INSERT INTO `Sys_User` VALUES (3362, '北京市还没注册', NULL, '2019-08-18 00:54:06', 1, '超级管理员', '2019-08-13 14:24:27', NULL, NULL, NULL, NULL, NULL, 1, 0, 'Upload/Tables/Sys_User/202004241341311851/04.jpg', 0, NULL, '2019-09-22 23:12:33', '01012345678', '超级管理员', '2020-04-27 09:48:53', 1, NULL, 2, '测试管理员', NULL, NULL, NULL, 'admin666', 'j79rYYvCz4vdhcboB1Ausg==', '演示帐号', ''); -INSERT INTO `Sys_User` VALUES (3364, '北京市西城区', NULL, NULL, NULL, NULL, '2019-10-10 17:29:14', 1, '超级管理员', NULL, NULL, '123@qq.com', 1, 0, 'Upload/Tables/Sys_User/202004270952013790/06.jpg', 0, NULL, NULL, '139999999999', '超级管理员', '2020-11-14 14:51:33', 1, NULL, 2, '测试管理员', NULL, NULL, NULL, 'admin777', 'E2J_2bOfPPSTYWeMKksiaw==', '你猜?', NULL); -INSERT INTO `Sys_User` VALUES (3365, '北京市还没注册', NULL, NULL, NULL, NULL, '2019-10-24 11:39:22', 1, '超级管理员', NULL, NULL, NULL, 1, NULL, 'Upload/Tables/Sys_User/202004270952176882/111.jpg', 0, NULL, NULL, '01012345678', '超级管理员', '2020-04-27 09:52:18', 1, NULL, 4, '信息员', NULL, NULL, NULL, 'test123', 'CfpTfV6KXdeC5TVoy5WL~w==', 'zs j', ''); -INSERT INTO `Sys_User` VALUES (3367, NULL, NULL, NULL, NULL, NULL, '2020-03-25 11:24:59', 1, '超级管理员', NULL, NULL, NULL, 1, 0, 'Upload/Tables/Sys_User/202004270952259380/1111.jpg', 0, NULL, NULL, NULL, '超级管理员', '2020-04-27 09:52:25', 1, NULL, 4, '信息员', NULL, NULL, NULL, 'admin111', 'tr8aEOCW6YdvgRfzgxf4mg==', '11', NULL); -INSERT INTO `Sys_User` VALUES (3371, NULL, NULL, NULL, NULL, NULL, '2020-04-29 15:44:15', 1, '超级管理员', NULL, NULL, NULL, 1, 0, 'Upload/Tables/Sys_User/202004291544153171/1111s.jpg', 0, NULL, NULL, NULL, '超级管理员', '2020-05-09 11:52:29', 1, NULL, 6, '测试003', NULL, NULL, NULL, 'treetest1', 'kba29e~WKmea~Dis3YNQKg==', 'tree', NULL); +INSERT INTO `Sys_User` VALUES (1, '北京市西城区', 0, '2019-08-18 00:54:06', 1, '超级管理员', '2012-06-10 11:10:03', NULL, NULL, NULL, 0, '283591387@qq.com', 1, 1, 'Upload/Tables/Sys_User/202006191408112343/1111s.jpg', 0, '2017-08-28 09:58:55', '2019-12-14 15:13:49', NULL, '超级管理员', '2020-06-19 14:08:12', 1, 0, 1, '超级管理员', '13888888888', '~还没想好...', NULL, 'admin', 'j79rYYvCz4vdhcboB1Ausg==', '超级管理员', 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiIxIiwiaWF0IjoiMTY2NzY2NjA4OSIsIm5iZiI6IjE2Njc2NjYwODkiLCJleHAiOiIxNjY3NjczMjg5IiwiaXNzIjoidm9sLmNvcmUub3duZXIiLCJhdWQiOiJ2b2wuY29yZSJ9.YNJMmbtmwkVSOEOHGVZquZqvOnhDQkqJkRlM2Sx-o2g'); +INSERT INTO `Sys_User` VALUES (3362, '北京市还没注册', NULL, '2019-08-18 00:54:06', 1, '超级管理员', '2019-08-13 14:24:27', NULL, NULL, NULL, NULL, NULL, 1, 0, 'Upload/Tables/Sys_User/202004241341311851/04.jpg', 0, NULL, '2019-09-22 23:12:33', '01012345678', '超级管理员', '2021-01-27 12:53:41', 1, NULL, 2, '测试管理员', NULL, NULL, NULL, 'admin666', 'j79rYYvCz4vdhcboB1Ausg==', '演示帐号', 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiIzMzYyIiwiaWF0IjoiMTY2MDg5NTY1MiIsIm5iZiI6IjE2NjA4OTU2NTIiLCJleHAiOiIxNjYzNDg3NjUyIiwiaXNzIjoidm9sLmNvcmUub3duZXIiLCJhdWQiOiJ2b2wuY29yZSJ9.h2-MxpKITk_YN7wkQMNQgZok_ioP5o-bY_PR0MPbT9U'); +INSERT INTO `Sys_User` VALUES (3378, NULL, NULL, NULL, NULL, NULL, '2021-09-27 15:50:22', 1, '超级管理员', NULL, NULL, NULL, 0, 0, 'Upload/Tables/Sys_User/202109271550212214/12313.jpg', 1, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, '小编', NULL, NULL, NULL, 'Admin888', 'al7ulHECMmQ_i6lA3dPKlg==', 'Admin888', 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiIzMzc4IiwiaWF0IjoiMTY0NTQxODQ0NyIsIm5iZiI6IjE2NDU0MTg0NDciLCJleHAiOiIxNjQ1NDI1NjQ3IiwiaXNzIjoidm9sLmNvcmUub3duZXIiLCJhdWQiOiJ2b2wuY29yZSJ9.mbKyMF6dQMZEmOjnRy8MZwXjz3jsm2DsejSrkFWD3B4'); -SET FOREIGN_KEY_CHECKS = 1; +-- ---------------------------- +-- Table structure for Sys_WorkFlow +-- ---------------------------- +DROP TABLE IF EXISTS `Sys_WorkFlow`; +CREATE TABLE `Sys_WorkFlow` ( + `WorkFlow_Id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `WorkName` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '流程名称', + `WorkTable` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '表名', + `WorkTableName` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '功能菜单', + `NodeConfig` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '节点信息', + `LineConfig` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '连接配置', + `Remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', + `CreateDate` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `CreateID` int(11) NULL DEFAULT NULL, + `Creator` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `Enable` tinyint(4) NULL DEFAULT NULL COMMENT '是否启用', + `Modifier` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `ModifyDate` datetime(0) NULL DEFAULT NULL, + `ModifyID` int(11) NULL DEFAULT NULL, + PRIMARY KEY (`WorkFlow_Id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of Sys_WorkFlow +-- ---------------------------- +INSERT INTO `Sys_WorkFlow` VALUES ('c016fa5e-6f44-4d59-a929-7391e82caf18', '订单流程测试', 'SellOrder', '销售订单', '[{\"id\":\"1659276275052\",\"name\":\"流程-节点A\",\"type\":\"task\",\"left\":\"230px\",\"top\":\"15px\",\"ico\":\"el-icon-user-solid\",\"nodeType\":\"1\",\"userId\":1,\"roleId\":null},{\"id\":\"1659276282115\",\"name\":\"流程-节点B\",\"type\":\"task\",\"left\":\"228px\",\"top\":\"127px\",\"ico\":\"el-icon-goods\",\"nodeType\":\"1\",\"userId\":3362,\"roleId\":null},{\"id\":\"l0om4eidz\",\"name\":\"流程-节点C\",\"type\":\"timer\",\"left\":\"226px\",\"top\":\"243.25px\",\"ico\":\"el-icon-plus\",\"state\":\"success\",\"nodeType\":\"1\",\"userId\":3378,\"roleId\":null}]', '[{\"from\":\"1659276275052\",\"to\":\"1659276282115\"},{\"from\":\"1659276282115\",\"to\":\"l0om4eidz\"}]', '订单流程测试', '2022-08-15 05:00:03', 1, '超级管理员', 0, NULL, NULL, NULL); +INSERT INTO `Sys_WorkFlow` VALUES ('d3445da2-043f-4c8b-943a-0c8a8f92d4b5', '流程测试', 'App_Expert', '启用图片支持', '[{\"id\":\"1659276275052\",\"name\":\"流程C-节点A\",\"type\":\"task\",\"left\":\"46px\",\"top\":\"28px\",\"ico\":\"el-icon-user-solid\",\"nodeType\":\"1\",\"userId\":1,\"roleId\":null},{\"id\":\"1659276282115\",\"name\":\"流程C-节点B\",\"type\":\"task\",\"left\":\"61px\",\"top\":\"195px\",\"ico\":\"el-icon-goods\",\"nodeType\":\"1\",\"userId\":1,\"roleId\":null},{\"id\":\"txpo1vyv8u\",\"name\":\"添加节点\",\"type\":\"timer\",\"left\":\"266px\",\"top\":\"99px\",\"ico\":\"el-icon-plus\",\"state\":\"success\",\"stepValue\":null,\"nodeType\":1,\"userId\":3362,\"roleId\":null,\"deptId\":null},{\"id\":\"yshtxdrq9u\",\"name\":\"添加节点1\",\"type\":\"timer\",\"left\":\"498px\",\"top\":\"200px\",\"ico\":\"el-icon-plus\",\"state\":\"success\",\"stepValue\":null,\"nodeType\":1,\"userId\":3378,\"roleId\":null,\"deptId\":null},{\"id\":\"64q19orr1h\",\"name\":\"添加节点2\",\"type\":\"timer\",\"left\":\"515px\",\"top\":\"39px\",\"ico\":\"el-icon-plus\",\"state\":\"success\",\"stepValue\":null,\"nodeType\":1,\"userId\":1,\"roleId\":null,\"deptId\":null}]', '[{\"from\":\"1659276275052\",\"to\":\"1659276282115\"},{\"from\":\"1659276282115\",\"to\":\"txpo1vyv8u\"},{\"from\":\"txpo1vyv8u\",\"to\":\"yshtxdrq9u\"},{\"from\":\"yshtxdrq9u\",\"to\":\"64q19orr1h\"}]', '流程测试', '2022-08-15 05:02:05', 1, '超级管理员', 0, '超级管理员', '2022-08-17 00:30:38', 1); + +-- ---------------------------- +-- Table structure for Sys_WorkFlowStep +-- ---------------------------- +DROP TABLE IF EXISTS `Sys_WorkFlowStep`; +CREATE TABLE `Sys_WorkFlowStep` ( + `WorkStepFlow_Id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `WorkFlow_Id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '流程主表id', + `StepId` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '流程节点Id', + `StepName` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '节点名称', + `StepType` int(11) NULL DEFAULT NULL COMMENT '节点类型(1=按用户审批,2=按角色审批,3=按部门审批)', + `StepValue` int(11) NULL DEFAULT NULL COMMENT '审批用户id或角色id、部门id', + `OrderId` int(11) NULL DEFAULT NULL COMMENT '审批顺序', + `Remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', + `CreateDate` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `CreateID` int(11) NULL DEFAULT NULL, + `Creator` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `Enable` tinyint(4) NULL DEFAULT NULL, + `Modifier` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `ModifyDate` datetime(0) NULL DEFAULT NULL, + `ModifyID` int(11) NULL DEFAULT NULL, + PRIMARY KEY (`WorkStepFlow_Id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of Sys_WorkFlowStep +-- ---------------------------- +INSERT INTO `Sys_WorkFlowStep` VALUES ('08da7e37-f54f-4d01-841c-fd9981caf52c', 'c016fa5e-6f44-4d59-a929-7391e82caf18', '1659276275052', '流程-节点A', 1, 1, 1, NULL, '2022-08-15 05:00:03', 1, '超级管理员', NULL, NULL, NULL, NULL); +INSERT INTO `Sys_WorkFlowStep` VALUES ('08da7e37-f54f-4d43-8759-ea887bb9ad66', 'c016fa5e-6f44-4d59-a929-7391e82caf18', '1659276282115', '流程-节点B', 1, 3362, 2, NULL, '2022-08-15 05:00:03', 1, '超级管理员', NULL, NULL, NULL, NULL); +INSERT INTO `Sys_WorkFlowStep` VALUES ('08da7e37-f54f-4d6a-8e9b-5a067e559d4c', 'c016fa5e-6f44-4d59-a929-7391e82caf18', 'l0om4eidz', '流程-节点C', 1, 3378, 3, NULL, '2022-08-15 05:00:03', 1, '超级管理员', NULL, NULL, NULL, NULL); +INSERT INTO `Sys_WorkFlowStep` VALUES ('08da7e38-3e0b-48c7-8c31-702b73e9d97e', 'd3445da2-043f-4c8b-943a-0c8a8f92d4b5', '1659276275052', '流程C-节点A', 1, 1, 1, NULL, '2022-08-15 05:02:05', 1, '超级管理员', NULL, '超级管理员', '2022-08-17 00:30:38', 1); +INSERT INTO `Sys_WorkFlowStep` VALUES ('08da7e38-3e0b-48ef-8010-b941874857b5', 'd3445da2-043f-4c8b-943a-0c8a8f92d4b5', '1659276282115', '流程C-节点B', 1, 1, 2, NULL, '2022-08-15 05:02:05', 1, '超级管理员', NULL, '超级管理员', '2022-08-17 00:30:38', 1); +INSERT INTO `Sys_WorkFlowStep` VALUES ('257cb391-4b84-41eb-b8db-d38c6dde4e9c', 'd3445da2-043f-4c8b-943a-0c8a8f92d4b5', 'txpo1vyv8u', '添加节点', 1, 3362, 3, NULL, '2022-08-17 00:30:38', 1, '超级管理员', NULL, NULL, NULL, NULL); +INSERT INTO `Sys_WorkFlowStep` VALUES ('a6b7408c-9dc4-422d-8d98-c9a5660f579a', 'd3445da2-043f-4c8b-943a-0c8a8f92d4b5', 'yshtxdrq9u', '添加节点1', 1, 3378, 4, NULL, '2022-08-17 00:30:38', 1, '超级管理员', NULL, NULL, NULL, NULL); +INSERT INTO `Sys_WorkFlowStep` VALUES ('ee385e1c-d78a-4eb8-9539-661822dcbfb8', 'd3445da2-043f-4c8b-943a-0c8a8f92d4b5', '64q19orr1h', '添加节点2', 1, 1, 5, NULL, '2022-08-17 00:30:38', 1, '超级管理员', NULL, NULL, NULL, NULL); -ALTER TABLE Sys_Menu ADD MenuType INT; +-- ---------------------------- +-- Table structure for Sys_WorkFlowTable +-- ---------------------------- +DROP TABLE IF EXISTS `Sys_WorkFlowTable`; +CREATE TABLE `Sys_WorkFlowTable` ( + `WorkFlowTable_Id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `WorkFlow_Id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '流程id', + `WorkName` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '流程名称', + `WorkTableKey` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '表主键id', + `WorkTable` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '表名', + `WorkTableName` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '业务名称', + `CurrentOrderId` int(11) NULL DEFAULT NULL COMMENT '当前审批节点', + `AuditStatus` int(11) NULL DEFAULT NULL COMMENT '审批状态', + `CreateDate` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `CreateID` int(11) NULL DEFAULT NULL, + `Creator` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建时间', + `Enable` tinyint(4) NULL DEFAULT NULL, + `Modifier` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `ModifyDate` datetime(0) NULL DEFAULT NULL, + `ModifyID` int(11) NULL DEFAULT NULL, + PRIMARY KEY (`WorkFlowTable_Id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC; -INSERT Sys_Menu (MenuName, Auth, Icon, Description, Enable, OrderNo, TableName, - ParentId, Url, CreateDate, Creator, ModifyDate, Modifier, MenuType) - VALUES ( '消息推送', '{"text":"查询","value":"Search"}', N'el-icon-chat-line-round', NULL, 1, 1700, '.', 0, '/signalR', - '2022-05-04 12:00', N'超级管理员', null, '超级管理员', 0) +-- ---------------------------- +-- Records of Sys_WorkFlowTable +-- ---------------------------- +INSERT INTO `Sys_WorkFlowTable` VALUES ('460b5903-4ff2-4f84-a88f-bbbf473942ec', 'c016fa5e-6f44-4d59-a929-7391e82caf18', '订单流程测试', 'ec217c01-42a2-435f-bdb6-70613b947bf9', 'SellOrder', '销售订单', 2, 1, '2022-08-15 05:01:04', 1, '超级管理员', 1, NULL, NULL, NULL); +INSERT INTO `Sys_WorkFlowTable` VALUES ('8abd4a91-fad8-466f-9fe4-6524188ef4c9', 'd3445da2-043f-4c8b-943a-0c8a8f92d4b5', '流程油荒', '287', 'App_Expert', '启用图片支持', 1, 0, '2022-08-15 05:02:14', 1, '超级管理员', 1, NULL, NULL, NULL); +INSERT INTO `Sys_WorkFlowTable` VALUES ('a251f602-f8d1-4399-8429-48d3349ad210', 'c016fa5e-6f44-4d59-a929-7391e82caf18', '订单流程测试', '978ad775-77c0-49ca-be31-ba36bb6f8af8', 'SellOrder', '销售订单', 1, 0, '2022-08-17 23:27:48', 1, '超级管理员', 1, NULL, NULL, NULL); +INSERT INTO `Sys_WorkFlowTable` VALUES ('b4d10013-8297-421f-aad4-3147fdac2450', 'c016fa5e-6f44-4d59-a929-7391e82caf18', '订单流程测试', '47e41e06-cb4a-4763-9aeb-df66cd6615e1', 'SellOrder', '销售订单', 2, 0, '2022-08-16 02:03:17', 1, '超级管理员', 1, NULL, NULL, NULL); + +-- ---------------------------- +-- Table structure for Sys_WorkFlowTableStep +-- ---------------------------- +DROP TABLE IF EXISTS `Sys_WorkFlowTableStep`; +CREATE TABLE `Sys_WorkFlowTableStep` ( + `Sys_WorkFlowTableStep_Id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `WorkFlowTable_Id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '主表id', + `WorkFlow_Id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '流程id', + `StepId` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '节点id', + `StepName` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '节名称', + `StepType` int(11) NULL DEFAULT NULL COMMENT '审批类型', + `StepValue` int(11) NULL DEFAULT NULL COMMENT '节点类型(1=按用户审批,2=按角色审批,3=按部门审批 )', + `OrderId` int(11) NULL DEFAULT NULL COMMENT '审批顺序', + `AuditId` int(11) NULL DEFAULT NULL COMMENT '审核人id', + `Auditor` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '审核人', + `AuditStatus` int(11) NULL DEFAULT NULL COMMENT '审核状态', + `AuditDate` datetime(0) NULL DEFAULT NULL COMMENT '审核时间', + `Remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `CreateDate` datetime(0) NULL DEFAULT NULL, + `CreateID` int(11) NULL DEFAULT NULL, + `Creator` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `Enable` tinyint(4) NULL DEFAULT NULL, + `Modifier` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `ModifyDate` datetime(0) NULL DEFAULT NULL, + `ModifyID` int(11) NULL DEFAULT NULL, + PRIMARY KEY (`Sys_WorkFlowTableStep_Id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of Sys_WorkFlowTableStep +-- ---------------------------- +INSERT INTO `Sys_WorkFlowTableStep` VALUES ('02e50a7c-e04b-41cd-a8cf-6224b77a9c1b', '8abd4a91-fad8-466f-9fe4-6524188ef4c9', 'd3445da2-043f-4c8b-943a-0c8a8f92d4b5', '1659276282115', '流程C-节点B', 1, 1, 2, 1, NULL, NULL, NULL, NULL, '2022-08-15 05:02:14', NULL, NULL, 1, NULL, NULL, NULL); +INSERT INTO `Sys_WorkFlowTableStep` VALUES ('136b08e5-1fb5-4a07-8d7f-6f78d09c2685', '460b5903-4ff2-4f84-a88f-bbbf473942ec', 'c016fa5e-6f44-4d59-a929-7391e82caf18', 'l0om4eidz', '流程-节点C', 1, 3378, 3, 3378, NULL, NULL, NULL, NULL, '2022-08-15 05:01:04', NULL, NULL, 1, NULL, NULL, NULL); +INSERT INTO `Sys_WorkFlowTableStep` VALUES ('1ac547df-27cf-4eb4-9ad6-37881ef671cc', 'a251f602-f8d1-4399-8429-48d3349ad210', 'c016fa5e-6f44-4d59-a929-7391e82caf18', '1659276282115', '流程-节点B', 1, 3362, 2, 3362, NULL, NULL, NULL, NULL, '2022-08-17 23:27:48', NULL, NULL, 1, NULL, NULL, NULL); +INSERT INTO `Sys_WorkFlowTableStep` VALUES ('1c75af0d-96ea-4777-8f1b-98a8ba168d89', '8abd4a91-fad8-466f-9fe4-6524188ef4c9', 'd3445da2-043f-4c8b-943a-0c8a8f92d4b5', '1659276275052', '流程C-节点A', 1, 1, 1, 1, NULL, NULL, NULL, NULL, '2022-08-15 05:02:14', NULL, NULL, 1, NULL, NULL, NULL); +INSERT INTO `Sys_WorkFlowTableStep` VALUES ('21c8252a-15a3-4435-a6ca-0dbee4474bba', 'b4d10013-8297-421f-aad4-3147fdac2450', 'c016fa5e-6f44-4d59-a929-7391e82caf18', '1659276275052', '流程-节点A', 1, 1, 1, 1, '超级管理员', 1, '2022-08-16 02:03:38', '审批通过测试', '2022-08-16 02:03:17', NULL, NULL, 1, NULL, NULL, NULL); +INSERT INTO `Sys_WorkFlowTableStep` VALUES ('521f23e3-6d5d-4a9d-8e67-a289440f7ecd', 'a251f602-f8d1-4399-8429-48d3349ad210', 'c016fa5e-6f44-4d59-a929-7391e82caf18', '1659276275052', '流程-节点A', 1, 1, 1, 1, NULL, NULL, NULL, NULL, '2022-08-17 23:27:48', NULL, NULL, 1, NULL, NULL, NULL); +INSERT INTO `Sys_WorkFlowTableStep` VALUES ('81856e1e-9796-4ceb-8b8a-36b201604e25', '460b5903-4ff2-4f84-a88f-bbbf473942ec', 'c016fa5e-6f44-4d59-a929-7391e82caf18', '1659276275052', '流程-节点A', 1, 1, 1, 1, '超级管理员', 1, '2022-08-15 05:13:51', '1', '2022-08-15 05:01:04', NULL, NULL, 1, NULL, NULL, NULL); +INSERT INTO `Sys_WorkFlowTableStep` VALUES ('83485f9f-119b-4344-a26a-22a1f4a3760e', 'b4d10013-8297-421f-aad4-3147fdac2450', 'c016fa5e-6f44-4d59-a929-7391e82caf18', 'l0om4eidz', '流程-节点C', 1, 3378, 3, 3378, NULL, NULL, NULL, NULL, '2022-08-16 02:03:17', NULL, NULL, 1, NULL, NULL, NULL); +INSERT INTO `Sys_WorkFlowTableStep` VALUES ('d9a0f59c-7b3e-4099-84a5-2b3c74414b46', 'a251f602-f8d1-4399-8429-48d3349ad210', 'c016fa5e-6f44-4d59-a929-7391e82caf18', 'l0om4eidz', '流程-节点C', 1, 3378, 3, 3378, NULL, NULL, NULL, NULL, '2022-08-17 23:27:48', NULL, NULL, 1, NULL, NULL, NULL); +INSERT INTO `Sys_WorkFlowTableStep` VALUES ('e623c47c-e0f5-4052-a2be-baf857784499', '460b5903-4ff2-4f84-a88f-bbbf473942ec', 'c016fa5e-6f44-4d59-a929-7391e82caf18', '1659276282115', '流程-节点B', 1, 3362, 2, 3362, NULL, NULL, NULL, NULL, '2022-08-15 05:01:04', NULL, NULL, 1, NULL, NULL, NULL); +INSERT INTO `Sys_WorkFlowTableStep` VALUES ('f92d5a23-f572-446e-a3e4-e6063ee6dcdf', 'b4d10013-8297-421f-aad4-3147fdac2450', 'c016fa5e-6f44-4d59-a929-7391e82caf18', '1659276282115', '流程-节点B', 1, 3362, 2, 3362, NULL, NULL, NULL, NULL, '2022-08-16 02:03:17', NULL, NULL, 1, NULL, NULL, NULL); + +SET FOREIGN_KEY_CHECKS = 1; +set global local_infile = 'ON'; diff --git "a/\345\274\200\345\217\221\347\211\210dev/Vue.NetCore/DB/pgsql/pgsql(\345\220\253\345\237\272\347\241\200\346\225\260\346\215\256).sql" "b/\345\274\200\345\217\221\347\211\210dev/Vue.NetCore/DB/pgsql/pgsql(\345\220\253\345\237\272\347\241\200\346\225\260\346\215\256).sql" index 6dd147dc0..acf7cde10 100644 --- "a/\345\274\200\345\217\221\347\211\210dev/Vue.NetCore/DB/pgsql/pgsql(\345\220\253\345\237\272\347\241\200\346\225\260\346\215\256).sql" +++ "b/\345\274\200\345\217\221\347\211\210dev/Vue.NetCore/DB/pgsql/pgsql(\345\220\253\345\237\272\347\241\200\346\225\260\346\215\256).sql" @@ -1922,3 +1922,4 @@ ALTER TABLE "public"."Sys_TableInfo" ADD CONSTRAINT "sys_tableinfo_pkey" PRIMARY -- Primary Key structure for table Sys_User -- ---------------------------- ALTER TABLE "public"."Sys_User" ADD CONSTRAINT "sys_user_pkey" PRIMARY KEY ("User_Id"); +ALTER TABLE "public"."Sys_Menu" ADD "MenuType" int4 diff --git "a/\345\274\200\345\217\221\347\211\210dev/Vue.NetCore/DB/sqlserver/\350\204\232\346\234\254\344\277\256\346\224\271.sql" "b/\345\274\200\345\217\221\347\211\210dev/Vue.NetCore/DB/sqlserver/\350\204\232\346\234\254\344\277\256\346\224\271.sql" deleted file mode 100644 index e69de29bb..000000000 diff --git "a/\345\274\200\345\217\221\347\211\210dev/Vue.NetCore/DB/sqlserver/\350\241\250\347\273\223\346\236\204\344\270\216\346\225\260\346\215\256.sql" "b/\345\274\200\345\217\221\347\211\210dev/Vue.NetCore/DB/sqlserver/\350\241\250\347\273\223\346\236\204\344\270\216\346\225\260\346\215\256.sql" index 847bf435b..201db807b 100644 Binary files "a/\345\274\200\345\217\221\347\211\210dev/Vue.NetCore/DB/sqlserver/\350\241\250\347\273\223\346\236\204\344\270\216\346\225\260\346\215\256.sql" and "b/\345\274\200\345\217\221\347\211\210dev/Vue.NetCore/DB/sqlserver/\350\241\250\347\273\223\346\236\204\344\270\216\346\225\260\346\215\256.sql" differ diff --git "a/\345\274\200\345\217\221\347\211\210dev/Vue.NetCore/Vol.Vue/src/components/basic/ViewGridConfig/methods.js" "b/\345\274\200\345\217\221\347\211\210dev/Vue.NetCore/Vol.Vue/src/components/basic/ViewGridConfig/methods.js" index 294d59e26..e07d4fc5d 100644 --- "a/\345\274\200\345\217\221\347\211\210dev/Vue.NetCore/Vol.Vue/src/components/basic/ViewGridConfig/methods.js" +++ "b/\345\274\200\345\217\221\347\211\210dev/Vue.NetCore/Vol.Vue/src/components/basic/ViewGridConfig/methods.js" @@ -1,40 +1,40 @@ -import detailMethods from "./detailMethods.js"; +import detailMethods from './detailMethods.js'; //业务处理方法,全部可以由开发覆盖 -import serviceFilter from "./serviceFilter.js"; +import serviceFilter from './serviceFilter.js'; let methods = { //当添加扩展组件gridHeader/gridBody/gridFooter及明细modelHeader/modelBody/modelFooter时, //如果要获取父级Vue对象,请使用此方法进行回调 parentCall(fun) { - if (typeof fun != "function") { - return console.log("扩展组件需要传入一个回调方法才能获取父级Vue对象"); + if (typeof fun != 'function') { + return console.log('扩展组件需要传入一个回调方法才能获取父级Vue对象'); } fun(this); }, getCurrentAction() { if (this.currentReadonly) { - return ""; + return ''; } - return "--" + (this.currentAction == this.const.ADD ? "新增" : "编辑"); + return '--' + (this.currentAction == this.const.ADD ? '新增' : '编辑'); }, quickSearchKeyPress($event) { //查询字段为input时,按回车查询 if ($event.keyCode == 13) { - if (this._searchFormFields[this.singleSearch.field] != "") { + if (this._searchFormFields[this.singleSearch.field] != '') { this.search(); } } }, getButtons() { //生成ViewGrid界面的操作按钮及更多选项 - let searchIndex = this.buttons.findIndex(x => { - return x.value == "Search"; + let searchIndex = this.buttons.findIndex((x) => { + return x.value == 'Search'; }); //添加高级查询 if (searchIndex != -1) { this.buttons.splice(searchIndex + 1, 0, { - icon: "ios-arrow-down", - class: "r-dropdown", - name: "", + icon: 'ios-arrow-down', + class: 'r-dropdown', + name: '', type: this.buttons[searchIndex].type, onClick: () => { this.searchBoxShow = !this.searchBoxShow; @@ -53,7 +53,7 @@ let methods = { return; } //source通过在表的扩展js文件中buttons对应按钮的属性index决定按钮所放位置 - source.forEach(x => { + source.forEach((x) => { //通过按钮的Index属性,放到指定的位置 btns.splice(x.index == undefined ? btns.length : x.index, 0, x); }); @@ -75,13 +75,24 @@ let methods = { ); if (permissionButtons) { //2020.03.31添加深拷贝按钮组 - permissionButtons.forEach(p => { + permissionButtons.forEach((p) => { let _obj = {}; for (const key in p) { _obj[key] = p[key]; } this.buttons.push(_obj); }); + this.buttons.splice(1, 0, { + name: '重 置', + icon: 'md-refresh', + class: '', + value: "reset", + hidden: true, + type: 'success', + onClick: function () { + this.resetSearch(); + } + }); // this.buttons.push(...permissionButtons); } if (!this.extend) { @@ -98,7 +109,7 @@ let methods = { //弹出框按钮 let boxButtons = []; - let saveBtn = this.buttons.some(x => { + let saveBtn = this.buttons.some((x) => { if ( x.value && (x.value.toLowerCase() == this.const.ADD.toLowerCase() || @@ -109,8 +120,8 @@ let methods = { this.currentReadonly = !saveBtn; //从表表格操作按钮 let detailGridButtons = { - name: "刷新", - icon: "md-refresh", + name: '刷新', + icon: 'md-refresh', onClick() { //如果明细表当前的状态为新建时,禁止刷新 if (this.currentAction == this.const.ADD) { @@ -120,7 +131,7 @@ let methods = { } }; - let importExcel = this.buttons.some(x => { + let importExcel = this.buttons.some((x) => { if (x.value == this.const.IMPORT) return true; }); //如果有导入权限,则需要初始化导入组件 @@ -137,15 +148,15 @@ let methods = { //如果当前角色没有编辑或新建功能,查看明细时字段设置全部只读 //只有明细表,将明细表也设置为不可能编辑,并且不显示添加行、删除行 if (!saveBtn) { - this.editFormOptions.forEach(row => { - row.forEach(x => { + this.editFormOptions.forEach((row) => { + row.forEach((x) => { x.disabled = true; }); }); //没有新增编辑权限的,弹出框都设置为只读 - this.detail.columns.forEach(row => { - if (row.hasOwnProperty("edit")) { - row["edit"] = false; + this.detail.columns.forEach((row) => { + if (row.hasOwnProperty('edit')) { + row['edit'] = false; } }); //弹出框扩展按钮 @@ -163,18 +174,18 @@ let methods = { boxButtons.push( ...[ { - name: "保 存", - icon: "md-checkmark", - type: "error", - value: "save", + name: '保 存', + icon: 'md-checkmark', + type: 'error', + value: 'save', onClick() { this.save(); } }, { - name: "重 置", - icon: "md-refresh", - type: "success", + name: '重 置', + icon: 'md-refresh', + type: 'success', onClick() { this.resetEdit(); } @@ -185,27 +196,27 @@ let methods = { this.detailOptions.buttons.push( ...[ { - name: "添加行", - icon: "md-add", + name: '添加行', + icon: 'md-add', onClick() { this.addRow(); } }, { - name: "删除行", - icon: "md-close", + name: '删除行', + icon: 'md-close', onClick() { this.delRow(); } - },//2022.01.08增加明细表导入导出功能 + }, //2022.01.08增加明细表导入导出功能 //注意需要重写后台明细表接口的导入与下载模板、导出的权限,Sys_DictionaryListController.cs/SellOrderListController.cs { type: 'danger', plain: true, - name: "导入", + name: '导入', value: 'import', hidden: false, - icon: "md-arrow-up", + icon: 'md-arrow-up', onClick() { this.upload.url = `${this.http.ipAddress}api/${this.detail.table}/${this.const.IMPORT}?table=1`; this.upload.template.url = `${this.http.ipAddress}api/${this.detail.table}/${this.const.DOWNLOADTEMPLATE}`; @@ -217,9 +228,9 @@ let methods = { { type: 'danger', plain: true, - name: "导出", + name: '导出', value: 'export', - icon: "md-arrow-down", + icon: 'md-arrow-down', hidden: false, onClick() { this.export(true); @@ -242,7 +253,7 @@ let methods = { click.apply(this); }, changeDropdown(btnName, v1) { - let button = this.buttons.filter(x => { + let button = this.buttons.filter((x) => { return x.name == btnName; }); if (button && button.length > 0) { @@ -250,13 +261,13 @@ let methods = { } }, emptyValue(value) { - if (typeof value == 'string' && value.trim() === "") { + if (typeof value == 'string' && value.trim() === '') { return true; } if (value instanceof Array && !value.length) { return true; } - return value === null || value === undefined || value === ""; + return value === null || value === undefined || value === ''; }, getSearchParameters() { //获取查询参数 @@ -270,25 +281,25 @@ let methods = { let value = this._searchFormFields[key]; if (this.emptyValue(value)) continue; - if (typeof value == "number") { - value = value + ""; + if (typeof value == 'number') { + value = value + ''; } let displayType = this.getSearchItem(key); //联级只保留选中节点的最后一个值 - if (displayType == "cascader") { + if (displayType == 'cascader') { //查询下面所有的子节点,如:选中的是父节点,应该查询下面所有的节点数据--待完 - value = value.length ? (value[value.length - 1] + "") : ""; + value = value.length ? value[value.length - 1] + '' : ''; } //2021.05.02增加区间查询 if ( - typeof value == "string" || - ["date", "datetime", "range"].indexOf(displayType) == -1 + typeof value == 'string' || + ['date', 'datetime', 'range'].indexOf(displayType) == -1 ) { - query.wheres.push({ name: key, - value: typeof value == "string" ? (value + '').trim() : value.join(","), + value: + typeof value == 'string' ? (value + '').trim() : value.join(','), displayType: displayType }); continue; @@ -299,8 +310,8 @@ let methods = { name: key, value: (value[index] + '').trim(), displayType: (() => { - if (["date", "datetime", "range"].indexOf(displayType) != -1) { - return index ? "lessorequal" : "thanorequal"; + if (['date', 'datetime', 'range'].indexOf(displayType) != -1) { + return index ? 'lessorequal' : 'thanorequal'; } return displayType; })() @@ -352,7 +363,7 @@ let methods = { for (let index = 0; index < this.searchFormOptions.length; index++) { if (data) return data.type; const item = this.searchFormOptions[index]; - data = item.find(x => { + data = item.find((x) => { return x.field == field; }); } @@ -368,7 +379,7 @@ let methods = { //重置编辑的数据 let isEdit = this.currentAction != this.const.ADD; //重置之前 - if (!this[isEdit ? "resetUpdateFormBefore" : "resetAddFormBefore"]()) { + if (!this[isEdit ? 'resetUpdateFormBefore' : 'resetAddFormBefore']()) { return; } let objKey = {}; @@ -379,31 +390,31 @@ let methods = { this.resetEditForm(objKey); //重置之后 - if (!this[isEdit ? "resetUpdateFormAfter" : "resetAddFormAfter"]()) { + if (!this[isEdit ? 'resetUpdateFormAfter' : 'resetAddFormAfter']()) { return; } }, resetSearchForm(sourceObj) { //重置查询表 - this.resetForm("searchForm", sourceObj); + this.resetForm('searchForm', sourceObj); }, resetEditForm(sourceObj) { if (this.hasDetail && this.$refs.detail) { // this.$refs.detail.rowData.splice(0); this.$refs.detail.reset(); } - this.resetForm("form", sourceObj); + this.resetForm('form', sourceObj); }, getKeyValueType(formData, isEditForm) { try { - let keyLeft = (isEditForm ? "e" : "s") + "_b_"; - formData.forEach(item => { - item.forEach(x => { + let keyLeft = (isEditForm ? 'e' : 's') + '_b_'; + formData.forEach((item) => { + item.forEach((x) => { if (this.keyValueType.hasOwnProperty(keyLeft + x.field)) { return true; } let data; - if (x.type == "switch") { + if (x.type == 'switch') { this.keyValueType[x.field] = 1; } else if (x.bind && x.bind.data) { data = x.bind.data; @@ -437,12 +448,12 @@ let methods = { if (!sourceObj) return; let form, keyLeft; - if (formName == "searchForm") { + if (formName == 'searchForm') { form = this._searchFormFields; - keyLeft = "s" + "_b_"; + keyLeft = 's' + '_b_'; } else { form = this._editFormFields; - keyLeft = "e" + "_b_"; + keyLeft = 'e' + '_b_'; } //获取数据源的data类型,否则如果数据源data的key是数字,重置的值是字符串就无法绑定值 if (!this.keyValueType._dinit) { @@ -457,66 +468,70 @@ let methods = { let kv_type = this.keyValueType[keyLeft + key]; if ( - kv_type == "selectList" || - kv_type == "checkbox" || - kv_type == "cascader" + kv_type == 'selectList' || + kv_type == 'checkbox' || + kv_type == 'cascader' ) { // 2020.05.31增加iview组件Cascader // 2020.11.01增加iview组件Cascader表单重置时查询所有的父节点 - if (kv_type == "cascader") { - var treeDic = this.dicKeys.find(dic => { + if (kv_type == 'cascader') { + var treeDic = this.dicKeys.find((dic) => { return dic.fileds && dic.fileds.indexOf(key) != -1; - }) + }); if (treeDic && treeDic.orginData && treeDic.orginData.length) { if (typeof treeDic.orginData[0].id == 'number') { newVal = ~~newVal; } else { newVal = newVal + ''; } - _cascaderParentTree = this.base.getTreeAllParent(newVal, treeDic.orginData); + _cascaderParentTree = this.base.getTreeAllParent( + newVal, + treeDic.orginData + ); if (_cascaderParentTree) { - newVal = _cascaderParentTree.map(x => { return x.id }) + newVal = _cascaderParentTree.map((x) => { + return x.id; + }); } } else { newVal = [newVal]; } - } - else if ( - newVal != "" && + } else if ( + newVal != '' && newVal != undefined && - typeof newVal == "string" + typeof newVal == 'string' ) { - newVal = newVal.split(","); - } else if (kv_type == "checkbox") { + newVal = newVal.split(','); + } else if (kv_type == 'checkbox') { newVal = []; } } else if ( this.keyValueType.hasOwnProperty(key) && - typeof this.keyValueType[key] == "number" && + typeof this.keyValueType[key] == 'number' && newVal * 1 == newVal ) { newVal = newVal * 1; } else { if (newVal == null || newVal == undefined) { - newVal = ""; + newVal = ''; } else { - newVal += ""; + newVal += ''; } } if (newVal instanceof Array) { if (form[key]) { form[key] = []; } - form[key].splice(0) + form[key].splice(0); // this.$set(form, key, newVal); form[key].push(...newVal); - if (kv_type == "cascader") { + if (kv_type == 'cascader') { this.$nextTick(() => { //封装后iview原生监听不到model变化,后面再调试看看2020.11.01 _cascaderParentTree = _cascaderParentTree || []; - _cascaderParentTree.forEach(c => { + _cascaderParentTree.forEach((c) => { c.label = c.value; - }) + }); //2021.08.22优化表单级联只读判断 if (this.$refs.form.$refs[key]) { this.$refs.form.$refs[key][0].selected = _cascaderParentTree; @@ -527,7 +542,7 @@ let methods = { form[key] = newVal; } } else { - form[key] = form[key] instanceof Array ? [] : ""; + form[key] = form[key] instanceof Array ? [] : ''; } } }, @@ -548,7 +563,7 @@ let methods = { save() { //新增或编辑时保存 // if (!this.$refs.form.validate()) return; - this.$refs.form.validate(result => { + this.$refs.form.validate((result) => { if (result) { this.saveExecute(); } @@ -564,32 +579,39 @@ let methods = { this.uploadfiled.indexOf(key) != -1 && this._editFormFields[key] instanceof Array ) { - let allPath = this._editFormFields[key].map(x => { + let allPath = this._editFormFields[key].map((x) => { return x.path; }); - _editFormFields[key] = allPath.join(","); + _editFormFields[key] = allPath.join(','); } else { //2021.05.30修复下拉框清除数据后后台不能保存的问题 - if (this._editFormFields[key] === undefined && this.dicKeys.some(x => { return x.fileds && x.fileds.indexOf(key) != -1 })) { + if ( + this._editFormFields[key] === undefined && + this.dicKeys.some((x) => { + return x.fileds && x.fileds.indexOf(key) != -1; + }) + ) { _editFormFields[key] = null; } else { _editFormFields[key] = this._editFormFields[key]; } - } } //将数组转换成string //2020.11.01增加级联处理 for (const key in _editFormFields) { if (_editFormFields[key] instanceof Array) { - - var iscascader = this.dicKeys.some(x => { return x.type == "cascader" && x.fileds && x.fileds.indexOf(key) != -1 }); + var iscascader = this.dicKeys.some((x) => { + return ( + x.type == 'cascader' && x.fileds && x.fileds.indexOf(key) != -1 + ); + }); if (iscascader && _editFormFields[key].length) { - _editFormFields[key] = _editFormFields[key][_editFormFields[key].length - 1]; + _editFormFields[key] = + _editFormFields[key][_editFormFields[key].length - 1]; } else { - _editFormFields[key] = _editFormFields[key].join(","); + _editFormFields[key] = _editFormFields[key].join(','); } - } } @@ -611,17 +633,22 @@ let methods = { if (_currentIsAdd) { //2020.12.06增加新建前异步处理方法 //2021.08.16修复异步语法写错的问题 - if (!this.addBefore(formData) || !await this.addBeforeAsync(formData)) return; + if (!this.addBefore(formData) || !(await this.addBeforeAsync(formData))) + return; } else { //2020.12.06增加修改前异步处理方法 - if (!this.updateBefore(formData) || !await this.updateBeforeAsync(formData)) return; + if ( + !this.updateBefore(formData) || + !(await this.updateBeforeAsync(formData)) + ) + return; } let url = this.getUrl(this.currentAction); - this.http.post(url, formData, true).then(x => { + this.http.post(url, formData, true).then((x) => { //保存后 if (_currentIsAdd) { if (!this.addAfter(x)) return; - //连续添加 + //连续添加 if (this.continueAdd && x.status) { this.$success(x.message); //新建 @@ -645,7 +672,7 @@ let methods = { return; } let resultRow; - if (typeof x.data == "string" && x.data != "") { + if (typeof x.data == 'string' && x.data != '') { resultRow = JSON.parse(x.data); } else { resultRow = x.data; @@ -653,7 +680,7 @@ let methods = { if (this.currentAction == this.const.ADD) { // this.currentRow=x.data; - this._editFormFields[this.table.key] = ""; + this._editFormFields[this.table.key] = ''; this.currentAction = this.const.EDIT; this.currentRow = resultRow.data; } @@ -669,29 +696,35 @@ let methods = { // this.refresh(); }); }, - del() { + del(rows) { + if (rows) { + if (!Array.isArray(rows)) { + rows = [rows]; + } + } else { + rows = this.$refs.table.getSelected(); + } //删除数据 - let rows = this.$refs.table.getSelected(); - if (rows.length == 0) return this.$error("请选择要删除的行!"); - let delKeys = rows.map(x => { + if (rows.length == 0) return this.$error('请选择要删除的行!'); + let delKeys = rows.map((x) => { return x[this.table.key]; }); if (!delKeys || delKeys.length == 0) - return this.$error("没有获取要删除的行数据!"); + return this.$error('没有获取要删除的行数据!'); //删除前 if (!this.delBefore(delKeys, rows)) { return; } let tigger = false; this.$Modal.confirm({ - title: "删除警告!", + title: '删除警告!', content: '

确认要删除选择的数据吗?

', onOk: () => { if (tigger) return; tigger = true; let url = this.getUrl(this.const.DEL); - this.http.post(url, delKeys, "正在删除数据....").then(x => { + this.http.post(url, delKeys, '正在删除数据....').then((x) => { if (!x.status) return this.$error(x.message); this.$success(x.message); //删除后 @@ -708,13 +741,13 @@ let methods = { }, async initBox() { //2022.01.08增加新建时隐藏明细表导出功能 - this.detailOptions.buttons.forEach(x => { + this.detailOptions.buttons.forEach((x) => { if (x.value == 'export') { - x.hidden = this.currentAction == 'Add' + x.hidden = this.currentAction == 'Add'; } - }) + }); //初始化新建、编辑的弹出框 - if (!await this.modelOpenBeforeAsync(this.currentRow)) return false; + if (!(await this.modelOpenBeforeAsync(this.currentRow))) return false; this.modelOpenBefore(this.currentRow); if (!this.boxInit) { this.boxInit = true; @@ -726,9 +759,9 @@ let methods = { setEditForm(row) { // if (this.remoteColumns.length == 0 || !rows || rows.length == 0) return; let remoteColumns = this.$refs.table.remoteColumns; - remoteColumns.forEach(column => { - this.editFormOptions.forEach(option => { - option.forEach(x => { + remoteColumns.forEach((column) => { + this.editFormOptions.forEach((option) => { + option.forEach((x) => { if (x.field == column.field) { x.data.data = Object.assign([], x.data, column.bind.data); } @@ -747,7 +780,7 @@ let methods = { //点击table单元格快捷链接显示编辑数据 this.currentAction = this.const.EDIT; this.currentRow = row; - if (!await this.initBox()) return; + if (!(await this.initBox())) return; this.resetDetailTable(row); this.setEditForm(row); this.setContinueAdd(false); @@ -758,7 +791,9 @@ let methods = { }, setContinueAdd(isAdd) { if (!this.continueAdd) return; - var _button = this.boxButtons.find(x => { return x.value == "save" }); + var _button = this.boxButtons.find((x) => { + return x.value == 'save'; + }); if (_button) { _button.name = isAdd ? this.continueAddName : '保 存'; } @@ -771,9 +806,9 @@ let methods = { } let obj = {}; //如果有switch标签,默认都设置为是 - this.editFormOptions.forEach(x => { - x.forEach(item => { - if (item.type == "switch") { + this.editFormOptions.forEach((x) => { + x.forEach((item) => { + if (item.type == 'switch') { obj[item.field] = 1; } }); @@ -784,7 +819,7 @@ let methods = { //新建 this.currentAction = this.const.ADD; this.currentRow = {}; - if (!await this.initBox()) return; + if (!(await this.initBox())) return; this.resetAdd(); this.setContinueAdd(true); @@ -794,20 +829,27 @@ let methods = { this.modelOpenProcess(); // this.modelOpenAfter(); }, - async edit() { + async edit(rows) { + if (rows) { + if (!Array.isArray(rows)) { + rows = [rows]; + } + } else { + rows = this.$refs.table.getSelected(); + } //编辑 this.currentAction = this.const.EDIT; - let rows = this.$refs.table.getSelected(); + if (rows.length == 0) { - return this.$error("请选择要编辑的行!"); + return this.$error('请选择要编辑的行!'); } - if (rows.length!=1) { - return this.$error("只能选择一行数据进行编辑!"); + if (rows.length != 1) { + return this.$error('只能选择一行数据进行编辑!'); } //记录当前编辑的行 this.currentRow = rows[0]; //初始化弹出框 - if (!await this.initBox()) return; + if (!(await this.initBox())) return; this.setContinueAdd(false); //重置表单 this.resetDetailTable(); @@ -827,12 +869,12 @@ let methods = { this.editFormOptions.forEach((x, xIndex) => { x.forEach((item, yIndex) => { if (item.remote) { - let column = this.columns.find(x => { + let column = this.columns.find((x) => { return x.bind && x.bind.key == item.dataKey; }); if (!column) return; let key = this.currentRow[item.field]; - let obj = column.bind.data.find(x => { + let obj = column.bind.data.find((x) => { return x.key == key; }); // obj ? obj.value : key如果没有查到数据源,直接使用原数据 @@ -865,17 +907,17 @@ let methods = { download(url, fileName) { //下载导出的文件 let xmlResquest = new XMLHttpRequest(); - xmlResquest.open("GET", url, true); - xmlResquest.setRequestHeader("Content-type", "application/json"); + xmlResquest.open('GET', url, true); + xmlResquest.setRequestHeader('Content-type', 'application/json'); xmlResquest.setRequestHeader( - "Authorization", + 'Authorization', this.$store.getters.getToken() ); let elink = this.$refs.export; - xmlResquest.responseType = "blob"; + xmlResquest.responseType = 'blob'; xmlResquest.onload = function (oEvent) { if (xmlResquest.status != 200) { - this.$error("下载文件出错了.."); + this.$error('下载文件出错了..'); return; } let content = xmlResquest.response; @@ -890,23 +932,30 @@ let methods = { }; xmlResquest.send(); }, - getFileName(isDetail) { //2021.01.08增加导出excel时自定义文件名 + getFileName(isDetail) { + //2021.01.08增加导出excel时自定义文件名 if (isDetail) { return this.detail.cnName + '.xlsx'; } return this.table.cnName + '.xlsx'; }, - export(isDetail) {//2021.01.08增加导出明细表与主表区分 + export(isDetail) { + //2021.01.08增加导出明细表与主表区分 //导出 let url, query, param; if (isDetail) { //明细表导出时如果是新建状态,禁止导出 - if (this.currentAction == "Add") { + if (this.currentAction == 'Add') { return; } url = `api/${this.detail.table}/${this.const.EXPORT}`; - param = { wheres: [{ name: this.table.key, value: this.editFormFields[this.table.key] }] }; - } else {//主表导出 + param = { + wheres: [ + { name: this.table.key, value: this.editFormFields[this.table.key] } + ] + }; + } else { + //主表导出 url = this.getUrl(this.const.EXPORT); query = this.getSearchParameters(); param = { order: this.pagination.order, wheres: query.wheres || [] }; @@ -916,29 +965,31 @@ let methods = { return; } - if (param.wheres && typeof param.wheres == "object") { + if (param.wheres && typeof param.wheres == 'object') { param.wheres = JSON.stringify(param.wheres); } let $http = this.http; - let fileName = this.getFileName(isDetail) + let fileName = this.getFileName(isDetail); //2021.01.08优化导出功能 - $http.post(url, param, "正在导出数据....", { responseType: "blob" }).then((content) => { - const blob = new Blob([content]); - if ("download" in document.createElement("a")) { - // 非IE下载 - const elink = document.createElement("a"); - elink.download = fileName; - elink.style.display = "none"; - elink.href = URL.createObjectURL(blob); - document.body.appendChild(elink); - elink.click(); - URL.revokeObjectURL(elink.href); - document.body.removeChild(elink); - } else { - // IE10+下载 - navigator.msSaveBlob(blob, fileName); - } - }); + $http + .post(url, param, '正在导出数据....', { responseType: 'blob' }) + .then((content) => { + const blob = new Blob([content]); + if ('download' in document.createElement('a')) { + // 非IE下载 + const elink = document.createElement('a'); + elink.download = fileName; + elink.style.display = 'none'; + elink.href = URL.createObjectURL(blob); + document.body.appendChild(elink); + elink.click(); + URL.revokeObjectURL(elink.href); + document.body.removeChild(elink); + } else { + // IE10+下载 + navigator.msSaveBlob(blob, fileName); + } + }); //.then(result => { // if (!result.status) { // return this.$error(result.message); @@ -966,23 +1017,23 @@ let methods = { audit() { //审核弹出框 let rows = this.$refs.table.getSelected(); - if (rows.length == 0) return this.$error("请选择要审核的行!"); - let checkStatus = rows.every(x => { + if (rows.length == 0) return this.$error('请选择要审核的行!'); + let checkStatus = rows.every((x) => { return x.AuditStatus > 0; }); - if (checkStatus) return this.$error("只能选择审核中的数据!"); + if (checkStatus) return this.$error('只能选择审核中的数据!'); this.auditParam.rows = rows.length; this.auditParam.model = true; }, saveAudit() { //保存审核 let rows = this.$refs.table.getSelected(); - if (this.auditParam.status == -1) return this.$error("请选择审核结果!"); + if (this.auditParam.status == -1) return this.$error('请选择审核结果!'); if (rows.length != this.auditParam.rows) - return this.$error("所选数据已发生变化,请重新选择审数据!"); + return this.$error('所选数据已发生变化,请重新选择审数据!'); - let keys = rows.map(x => { + let keys = rows.map((x) => { return x[this.table.key]; }); if (!this.auditBefore(keys, rows)) { @@ -990,18 +1041,18 @@ let methods = { } let url = this.getUrl(this.const.AUDIT) + - "?auditReason=" + + '?auditReason=' + this.auditParam.reason + - "&auditStatus=" + + '&auditStatus=' + this.auditParam.status; - this.http.post(url, keys, "审核中....").then(x => { + this.http.post(url, keys, '审核中....').then((x) => { if (!this.auditAfter(x, rows)) { return; } if (!x.status) return this.$error(x.message); this.auditParam.rows = 0; this.auditParam.status = -1; - this.auditParam.reason = ""; + this.auditParam.reason = ''; this.auditParam.model = false; this.$success(x.message); this.refresh(); @@ -1012,22 +1063,22 @@ let methods = { if (this.viewColumns == 0) { this.viewColumns.push( ...[ - { title: "名称", key: "title" }, - { title: "字段", key: "field" }, - { title: "类型", key: "type" }, - { title: "是否显示", key: "hidden" }, - { title: "绑定数据源", key: "bind" } + { title: '名称', key: 'title' }, + { title: '字段', key: 'field' }, + { title: '类型', key: 'type' }, + { title: '是否显示', key: 'hidden' }, + { title: '绑定数据源', key: 'bind' } ] ); - this.columns.forEach(x => { + this.columns.forEach((x) => { this.viewData.push({ title: x.title, field: x.field, type: x.type, - hidden: x.hidden ? "否" : "是", - bind: x.bind ? x.bind.dicNo : "--", + hidden: x.hidden ? '否' : '是', + bind: x.bind ? x.bind.dicNo : '--', cellClassName: { - title: "table-info-cell-title" + title: 'table-info-cell-title' } }); }); @@ -1044,20 +1095,20 @@ let methods = { //有上传的字段 //2020.05.03新增 //编辑数据源的类型 - formOptions.forEach(item => { - item.forEach(d => { + formOptions.forEach((item) => { + item.forEach((d) => { if ( - d.type == "img" || - d.type == "excel" || - d.type == "file" || - d.columnType == "img" + d.type == 'img' || + d.type == 'excel' || + d.type == 'file' || + d.columnType == 'img' ) { - d.url = this.http.ipAddress + "api" + this.table.url + "Upload"; + d.url = this.http.ipAddress + 'api' + this.table.url + 'Upload'; this.uploadfiled.push(d.field); } if (!d.dataKey) return true; //2022.02.20强制开启联级可以选择某个节点 - if (d.type == "cascader" && !d.hasOwnProperty("changeOnSelect")) { + if (d.type == 'cascader' && !d.hasOwnProperty('changeOnSelect')) { //强制开启联级可以选择某个节点 d.changeOnSelect = true; } @@ -1068,7 +1119,7 @@ let methods = { return true; } //2020.05.03增加编辑表单对checkbox的支持 - if (d.type == "checkbox" && !(formFileds[d.field] instanceof Array)) { + if (d.type == 'checkbox' && !(formFileds[d.field] instanceof Array)) { formFileds[d.field] = []; } if (keys.indexOf(d.dataKey) == -1) { @@ -1078,27 +1129,32 @@ let methods = { //2020.05.03修复查询表单与编辑表单type类型变成强一致性的问题 //this.dicKeys.push({ dicNo: d.dataKey, data: [], type: d.type }); // 2020.11.01增加iview组件Cascader数据源存储 - let _dic = { dicNo: d.dataKey, data: [], fileds: [d.field], orginData: []}; - if (d.type == "cascader") { - _dic.type = "cascader"; + let _dic = { + dicNo: d.dataKey, + data: [], + fileds: [d.field], + orginData: [] + }; + if (d.type == 'cascader') { + _dic.type = 'cascader'; } if (isEdit) { _dic['e_type'] = d.type; } this.dicKeys.push(_dic); - } else if (d.type == "cascader") { - this.dicKeys.forEach(x => { + } else if (d.type == 'cascader') { + this.dicKeys.forEach((x) => { if (x.dicNo == d.dataKey) { - x.type = "cascader"; + x.type = 'cascader'; x.fileds.push(d.field); } - }) + }); } //2020.01.30移除内部表单formOptions数据源配置格式data.data,所有参数改为与组件api格式相同 Object.assign( d, - this.dicKeys.filter(f => { + this.dicKeys.filter((f) => { return f.dicNo == d.dataKey; })[0] ); @@ -1108,7 +1164,7 @@ let methods = { //初始table与明细表的数据源指向dicKeys对象,再去后台加载数据源 initColumns(scoure, dicKeys, keys) { if (!scoure || !(scoure instanceof Array)) return; - scoure.forEach(item => { + scoure.forEach((item) => { if (!item.bind || (item.bind.data && item.bind.data.length > 0)) return true; let key = item.bind.key || item.bind.dicNo; @@ -1119,7 +1175,7 @@ let methods = { if (this.hasKeyField.indexOf(item.field) == -1) { this.hasKeyField.push(item.field); } - var dic = dicKeys.filter(x => { + var dic = dicKeys.filter((x) => { return x.dicNo == key; }); if (!dic || dic.length == 0) { @@ -1128,43 +1184,48 @@ let methods = { keys.push(key); } //2020.11.01增加级联处理 - if (dic[0].type == "cascader") { - item.bind = { data: dic[0].orginData, tyep: "select",key:key } + if (dic[0].type == 'cascader') { + item.bind = { data: dic[0].orginData, tyep: 'select', key: key }; } else { item.bind = dic[0]; } //2020.05.03优化table数据源checkbox与select类型从编辑列中选取 - item.bind.type = item.bind.e_type || "string"; + item.bind.type = item.bind.e_type || 'string'; }); }, bindOptions(dic) { //绑定下拉框的数据源 //绑定后台的字典数据 - dic.forEach(d => { - this.dicKeys.forEach(x => { + dic.forEach((d) => { + this.dicKeys.forEach((x) => { if (x.dicNo != d.dicNo) return true; //2020.10.26增加级联数据源绑定处理 - if (x.type == "cascader") { + if (x.type == 'cascader') { //2022.04.04增加级联字典数据源刷新后table没有变化的问题 - this.columns.forEach(column=>{ - if (column.bind&&column.bind.key==d.dicNo) { - column.bind.data=d.data; + this.columns.forEach((column) => { + if (column.bind && column.bind.key == d.dicNo) { + column.bind.data = d.data; } - }) + }); //生成tree结构 - x.data.push(... this.base.convertTree(JSON.parse(JSON.stringify(d.data)), (node, data, isRoot) => { - node.label = node.value; - node.value = node.key; - })); + x.data.push( + ...this.base.convertTree( + JSON.parse(JSON.stringify(d.data)), + (node, data, isRoot) => { + node.label = node.value; + node.value = node.key; + } + ) + ); x.orginData.push(...d.data); - } else if (d.data.length > 0 && !d.data[0].hasOwnProperty("key")) { + } else if (d.data.length > 0 && !d.data[0].hasOwnProperty('key')) { let source = d.data, newSource = new Array(source.length); for (let index = 0; index < source.length; index++) { newSource[index] = { //默认从字典数据读出来的key都是string类型,但如果数据从sql中查询的可能为非string,否是async-validator需要重置设置格式 - key: source["key"] + "", //source[index][x.config.valueField] + "", - value: source["value"] //source[index][x.config.textField] + key: source['key'] + '', //source[index][x.config.valueField] + "", + value: source['value'] //source[index][x.config.textField] }; } @@ -1172,12 +1233,12 @@ let methods = { } else { //2020.06.06,如果是selectList数据源使用的自定义sql并且key是数字,强制转换成字符串 if ( - x.e_type == "selectList" && + x.e_type == 'selectList' && d.data.length > 0 && - typeof d.data[0].key == "number" + typeof d.data[0].key == 'number' ) { - d.data.forEach(c => { - c.key = c.key + ""; + d.data.forEach((c) => { + c.key = c.key + ''; }); } x.data.push(...d.data); @@ -1194,19 +1255,24 @@ let methods = { }, getUrl(action, ingorPrefix) { //是否忽略前缀/ 获取操作的url - return (!ingorPrefix ? "/" : "") + "api" + this.table.url + action; + return (!ingorPrefix ? '/' : '') + 'api' + this.table.url + action; }, initDicKeys() { //初始化字典数据 let keys = []; //2022.04.17优化重新加载数据源 - this.dicKeys.forEach(item=>{ + this.dicKeys.forEach((item) => { item.data.splice(0); - item.orginData&&item.orginData.splice(0); - }) - // this.dicKeys.splice(0); + item.orginData && item.orginData.splice(0); + }); + // this.dicKeys.splice(0); //初始化编辑数据源,默认为一个空数组,如果要求必填设置type=number/decimal的最小值 - this.initFormOptions(this.editFormOptions, keys, this._editFormFields, true); + this.initFormOptions( + this.editFormOptions, + keys, + this._editFormFields, + true + ); //初始化查询数据源,默认为一个空数组 this.initFormOptions( this.searchFormOptions, @@ -1215,9 +1281,9 @@ let methods = { false ); //查询日期设置为可选开始与结果日期 - this.searchFormOptions.forEach(item => { - item.forEach(x => { - if (x.type == "date" || x.type == "datetime") x.range = true; + this.searchFormOptions.forEach((item) => { + item.forEach((x) => { + if (x.type == 'date' || x.type == 'datetime') x.range = true; }); }); //初始化datatable表数据源,默认为一个空数组,dicKeys为界面所有的数据字典编号 @@ -1244,23 +1310,23 @@ let methods = { } if (keys.length == 0) return; let $this = this; - this.http.post("/api/Sys_Dictionary/GetVueDictionary", keys).then(dic => { + this.http.post('/api/Sys_Dictionary/GetVueDictionary', keys).then((dic) => { $this.bindOptions(dic); //2022.04.04增加字典加载完成方法 - $this.dicInited&&$this.dicInited(dic) + $this.dicInited && $this.dicInited(dic); }); }, setFiexdColumn(columns, containerWidth) { //计算整个table的宽度,根据宽度决定是否启用第一行显示的列为固定列 let columnsWidth = 0; - columns.forEach(x => { + columns.forEach((x) => { if (!x.hidden && x.width) { columnsWidth += x.width; } }); //启用第一列为固定列 if (columnsWidth > containerWidth) { - let firstColumn = columns.find(x => !x.hidden); + let firstColumn = columns.find((x) => !x.hidden); if (firstColumn) { firstColumn.fixed = true; } @@ -1272,12 +1338,17 @@ let methods = { //弹出框高度至少250px clientHeight = clientHeight < 250 ? 250 : clientHeight; let clientWidth = document.documentElement.clientWidth; - if (this.editFormOptions.some(x => { return x.some(item => { return item.type == "editor" }) })) { - this.editor.uploadImgUrl = this.getUrl("upload"); + if ( + this.editFormOptions.some((x) => { + return x.some((item) => { + return item.type == 'editor'; + }); + }) + ) { + this.editor.uploadImgUrl = this.getUrl('upload'); this.boxOptions.height = clientHeight * 0.8; this.boxOptions.width = clientWidth * 0.8; - } - else { + } else { if (this.boxOptions.height) { //如果高度与宽度超过了获取到的可见高宽度,则设为默认的90%高宽 if (this.boxOptions.height > clientHeight * 0.8) { @@ -1314,12 +1385,12 @@ let methods = { this.detailOptions.pagination.sortName = this.detail.sortName; this.detailOptions.cnName = this.detail.cnName; this.detailOptions.key = this.detail.key; - this.detailOptions.url = this.getUrl("getDetailPage"); + this.detailOptions.url = this.getUrl('getDetailPage'); //计算弹出框整个table的宽度,根据宽度决定是否启用第一行显示的列为固定列 this.setFiexdColumn(this.detail.columns, clientWidth); } else { let maxColumns = 1; //最大列数,根据列计算弹框的宽度 - this.editFormOptions.forEach(x => { + this.editFormOptions.forEach((x) => { if (x.length > maxColumns) maxColumns = x.length; }); let maxHeightRate = 0.7, @@ -1369,54 +1440,66 @@ let methods = { duration: 3 }); }, - setFiexdSearchForm(visiable) { //2020.09.011增加固定查询表单功能,visiable=true默认将查询表单展开 + setFiexdSearchForm(visiable) { + //2020.09.011增加固定查询表单功能,visiable=true默认将查询表单展开 this.fiexdSearchForm = true; - let refreshBtn = this.buttons.find(x => x.name == "刷 新"); + this.buttons.forEach(btn => { + if (btn.value == 'reset') { + btn.hidden = !btn.hidden; + } + }) + let refreshBtn = this.buttons.find((x) => x.name == '刷 新'); if (visiable) { this.searchBoxShow = true; } if (refreshBtn) { - refreshBtn.name = "重 置"; + refreshBtn.name = '重 置'; refreshBtn.onClick = function () { this.resetSearch(); }; } }, - endEditBefore(row, column, index) {//2021.03.19是否开启查询界面表格双击编辑结束方法,返回false不会结束编辑 + endEditBefore(row, column, index) { + //2021.03.19是否开启查询界面表格双击编辑结束方法,返回false不会结束编辑 return true; }, - filterPermission(tableName, permission) { //2021.03.19判断是否有某个表的按钮权限 + filterPermission(tableName, permission) { + //2021.03.19判断是否有某个表的按钮权限 //:["Search","Add","Delete","Update","Import","Export","Upload","Audit"] - const _result = (this.$store.state.system.permission || []).find(x => { return x.url == '/' + tableName }); - return _result && _result.permission.some(x => x == permission); + const _result = (this.$store.state.system.permission || []).find((x) => { + return x.url == '/' + tableName; + }); + return _result && _result.permission.some((x) => x == permission); }, - destroyed() { //2021.04.11增加vue页面销毁方法,路由必须设置keepLive:false,设置方法见:前端开发文档-》[禁用页面缓存keepAlive] - + destroyed() { + //2021.04.11增加vue页面销毁方法,路由必须设置keepLive:false,设置方法见:前端开发文档-》[禁用页面缓存keepAlive] }, loadTreeTableChildren(tree, treeNode, resolve) { this.loadTreeChildren.call(this, tree, treeNode, resolve); }, - loadTreeChildren(tree, treeNode, resolve) {//树形结构加载子节点(2021.05.02),在onInit中设置了rowKey主键字段后才会生效 + loadTreeChildren(tree, treeNode, resolve) { + //树形结构加载子节点(2021.05.02),在onInit中设置了rowKey主键字段后才会生效 return resolve([]); }, - importDetailAfter(data) { //2022.01.08增加明细表导入后处理 - + importDetailAfter(data) { + //2022.01.08增加明细表导入后处理 }, - importExcelAfter(data) {//2022.01.08增加明细表导入后方法判断 + importExcelAfter(data) { + //2022.01.08增加明细表导入后方法判断 if (!data.status) { - return;// this.$message.error(data.message); + return; // this.$message.error(data.message); } //明细表导入 if (this.boxModel) { if (data.data) { data.data = JSON.parse(data.data); } else { - data.data = [] + data.data = []; } - data.data.forEach(x => { + data.data.forEach((x) => { x[this.detail.key] = undefined; x[this.table.key] = undefined; - }) + }); this.importDetailAfter(data); //增加明细表导入后处理 this.$refs.detail.rowData.unshift(...data.data); this.upload.excel = false; diff --git "a/\345\274\200\345\217\221\347\211\210dev/Vue.NetCore/Vol.Vue/src/components/basic/VolTable.vue" "b/\345\274\200\345\217\221\347\211\210dev/Vue.NetCore/Vol.Vue/src/components/basic/VolTable.vue" index 2ef6eff12..c76831ddd 100644 --- "a/\345\274\200\345\217\221\347\211\210dev/Vue.NetCore/Vol.Vue/src/components/basic/VolTable.vue" +++ "b/\345\274\200\345\217\221\347\211\210dev/Vue.NetCore/Vol.Vue/src/components/basic/VolTable.vue" @@ -62,6 +62,13 @@ :align="column.align" :sortable="column.sort ? 'custom' : false" > + + } + + .v-date-range .el-icon-circle-check { + display: none !important; + } + + .v-dialog .el-dialog__header { + margin-right: 0; + } + + .el-button { + font-size: 12px !important; + } + + .el-button--small { + padding: 0px 15px !important; + height: 32px; + } + \ No newline at end of file diff --git "a/\345\274\200\345\217\221\347\211\210dev/Vue.NetCore/Vol.Vue3\347\211\210\346\234\254/public/static/login_bg.png" "b/\345\274\200\345\217\221\347\211\210dev/Vue.NetCore/Vol.Vue3\347\211\210\346\234\254/public/static/login_bg.png" new file mode 100644 index 000000000..925a5da6f Binary files /dev/null and "b/\345\274\200\345\217\221\347\211\210dev/Vue.NetCore/Vol.Vue3\347\211\210\346\234\254/public/static/login_bg.png" differ diff --git "a/\345\274\200\345\217\221\347\211\210dev/Vue.NetCore/Vol.Vue3\347\211\210\346\234\254/run\345\220\257\345\212\250\345\274\202\345\270\270\350\257\264\346\230\216.txt" "b/\345\274\200\345\217\221\347\211\210dev/Vue.NetCore/Vol.Vue3\347\211\210\346\234\254/run\345\220\257\345\212\250\345\274\202\345\270\270\350\257\264\346\230\216.txt" new file mode 100644 index 000000000..585f16fcb --- /dev/null +++ "b/\345\274\200\345\217\221\347\211\210dev/Vue.NetCore/Vol.Vue3\347\211\210\346\234\254/run\345\220\257\345\212\250\345\274\202\345\270\270\350\257\264\346\230\216.txt" @@ -0,0 +1,10 @@ +双击run.bat启动异常: + 使用cmd输入node -v查看版本,如果是18.+版本,请将package.json中第五行scripts中的内容替换为: + +"scripts": { + "serve": " SET NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve", + "build": "SET NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service build", + "test:unit": "vue-cli-service test:unit", + "lint": "vue-cli-service lint" +} + diff --git "a/\345\274\200\345\217\221\347\211\210dev/Vue.NetCore/Vol.Vue3\347\211\210\346\234\254/src/api/http.js" "b/\345\274\200\345\217\221\347\211\210dev/Vue.NetCore/Vol.Vue3\347\211\210\346\234\254/src/api/http.js" index 15c8555eb..4d2a9b8a2 100644 --- "a/\345\274\200\345\217\221\347\211\210dev/Vue.NetCore/Vol.Vue3\347\211\210\346\234\254/src/api/http.js" +++ "b/\345\274\200\345\217\221\347\211\210dev/Vue.NetCore/Vol.Vue3\347\211\210\346\234\254/src/api/http.js" @@ -21,6 +21,9 @@ else if (process.env.NODE_ENV == 'debug') { else if (process.env.NODE_ENV == 'production') { axios.defaults.baseURL = 'http://api.volcore.xyz/'; } +if (!axios.defaults.baseURL.endsWith('/')) { + axios.defaults.baseURL+="/"; +} let ipAddress = axios.defaults.baseURL; axios.interceptors.request.use((config) => { return config; @@ -97,10 +100,10 @@ function showLoading (loading) { return; } loadingInstance = Loading.service({ - target: '#loading-container', - customClass: "el-loading", - text: typeof loading == "string" ? loading : '正在处理.....', - spinner: 'el-icon-loading', + lock: true, + text: 'Loading', + customClass:"http-loading", + background: typeof loading == "string" ? loading : '正在处理.....', background: 'rgba(58, 61, 63, 0.32)' }); } @@ -148,7 +151,29 @@ function get (url, param, loading, config) { }) } - +//url:url地址 +//params:请求参数 +//fileName:下载的文件名 +//loading:是否显示加载状态 +function download (url, params, fileName, loading,callback) { + fileName = fileName.replace(">", ">").replace("<", "<"); + post(url, params, loading, { responseType: 'blob' }).then(content => { + const blob = new Blob([content]) + if ('download' in document.createElement('a')) { // 非IE下载 + const elink = document.createElement('a') + elink.download = fileName + elink.style.display = 'none' + elink.href = URL.createObjectURL(blob) + document.body.appendChild(elink) + elink.click() + URL.revokeObjectURL(elink.href) // 释放URL 对象 + document.body.removeChild(elink) + } else { // IE10+下载 + navigator.msSaveBlob(blob, fileName) + } + callback&&callback(); + }) +} function createXHR () { @@ -293,4 +318,4 @@ ajax.post = function (url, param, success, errror) { ajax.get = function (url, param, success, errror) { ajax({ url: url, param: param, success: success, error: errror, type: 'get' }) } -export default { post, get, ajax, ipAddress } +export default { post, get,download, ajax, ipAddress } diff --git "a/\345\274\200\345\217\221\347\211\210dev/Vue.NetCore/Vol.Vue3\347\211\210\346\234\254/src/assets/element-icon/fonts/element-icons.ttf" "b/\345\274\200\345\217\221\347\211\210dev/Vue.NetCore/Vol.Vue3\347\211\210\346\234\254/src/assets/element-icon/fonts/element-icons.ttf" new file mode 100644 index 000000000..91b74de36 Binary files /dev/null and "b/\345\274\200\345\217\221\347\211\210dev/Vue.NetCore/Vol.Vue3\347\211\210\346\234\254/src/assets/element-icon/fonts/element-icons.ttf" differ diff --git "a/\345\274\200\345\217\221\347\211\210dev/Vue.NetCore/Vol.Vue3\347\211\210\346\234\254/src/assets/element-icon/fonts/element-icons.woff" "b/\345\274\200\345\217\221\347\211\210dev/Vue.NetCore/Vol.Vue3\347\211\210\346\234\254/src/assets/element-icon/fonts/element-icons.woff" new file mode 100644 index 000000000..02b9a2539 Binary files /dev/null and "b/\345\274\200\345\217\221\347\211\210dev/Vue.NetCore/Vol.Vue3\347\211\210\346\234\254/src/assets/element-icon/fonts/element-icons.woff" differ diff --git "a/\345\274\200\345\217\221\347\211\210dev/Vue.NetCore/Vol.Vue3\347\211\210\346\234\254/src/assets/element-icon/icon.css" "b/\345\274\200\345\217\221\347\211\210dev/Vue.NetCore/Vol.Vue3\347\211\210\346\234\254/src/assets/element-icon/icon.css" new file mode 100644 index 000000000..bf3ae3ef0 --- /dev/null +++ "b/\345\274\200\345\217\221\347\211\210dev/Vue.NetCore/Vol.Vue3\347\211\210\346\234\254/src/assets/element-icon/icon.css" @@ -0,0 +1 @@ +@font-face{font-family:element-icons;src:url(fonts/element-icons.woff) format("woff"),url(fonts/element-icons.ttf) format("truetype");font-weight:400;font-display:"auto";font-style:normal}[class*=" el-icon-"],[class^=el-icon-]{font-family:element-icons!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;vertical-align:baseline;display:inline-block;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.el-icon-ice-cream-round:before{content:"\e6a0"}.el-icon-ice-cream-square:before{content:"\e6a3"}.el-icon-lollipop:before{content:"\e6a4"}.el-icon-potato-strips:before{content:"\e6a5"}.el-icon-milk-tea:before{content:"\e6a6"}.el-icon-ice-drink:before{content:"\e6a7"}.el-icon-ice-tea:before{content:"\e6a9"}.el-icon-coffee:before{content:"\e6aa"}.el-icon-orange:before{content:"\e6ab"}.el-icon-pear:before{content:"\e6ac"}.el-icon-apple:before{content:"\e6ad"}.el-icon-cherry:before{content:"\e6ae"}.el-icon-watermelon:before{content:"\e6af"}.el-icon-grape:before{content:"\e6b0"}.el-icon-refrigerator:before{content:"\e6b1"}.el-icon-goblet-square-full:before{content:"\e6b2"}.el-icon-goblet-square:before{content:"\e6b3"}.el-icon-goblet-full:before{content:"\e6b4"}.el-icon-goblet:before{content:"\e6b5"}.el-icon-cold-drink:before{content:"\e6b6"}.el-icon-coffee-cup:before{content:"\e6b8"}.el-icon-water-cup:before{content:"\e6b9"}.el-icon-hot-water:before{content:"\e6ba"}.el-icon-ice-cream:before{content:"\e6bb"}.el-icon-dessert:before{content:"\e6bc"}.el-icon-sugar:before{content:"\e6bd"}.el-icon-tableware:before{content:"\e6be"}.el-icon-burger:before{content:"\e6bf"}.el-icon-knife-fork:before{content:"\e6c1"}.el-icon-fork-spoon:before{content:"\e6c2"}.el-icon-chicken:before{content:"\e6c3"}.el-icon-food:before{content:"\e6c4"}.el-icon-dish-1:before{content:"\e6c5"}.el-icon-dish:before{content:"\e6c6"}.el-icon-moon-night:before{content:"\e6ee"}.el-icon-moon:before{content:"\e6f0"}.el-icon-cloudy-and-sunny:before{content:"\e6f1"}.el-icon-partly-cloudy:before{content:"\e6f2"}.el-icon-cloudy:before{content:"\e6f3"}.el-icon-sunny:before{content:"\e6f6"}.el-icon-sunset:before{content:"\e6f7"}.el-icon-sunrise-1:before{content:"\e6f8"}.el-icon-sunrise:before{content:"\e6f9"}.el-icon-heavy-rain:before{content:"\e6fa"}.el-icon-lightning:before{content:"\e6fb"}.el-icon-light-rain:before{content:"\e6fc"}.el-icon-wind-power:before{content:"\e6fd"}.el-icon-baseball:before{content:"\e712"}.el-icon-soccer:before{content:"\e713"}.el-icon-football:before{content:"\e715"}.el-icon-basketball:before{content:"\e716"}.el-icon-ship:before{content:"\e73f"}.el-icon-truck:before{content:"\e740"}.el-icon-bicycle:before{content:"\e741"}.el-icon-mobile-phone:before{content:"\e6d3"}.el-icon-service:before{content:"\e6d4"}.el-icon-key:before{content:"\e6e2"}.el-icon-unlock:before{content:"\e6e4"}.el-icon-lock:before{content:"\e6e5"}.el-icon-watch:before{content:"\e6fe"}.el-icon-watch-1:before{content:"\e6ff"}.el-icon-timer:before{content:"\e702"}.el-icon-alarm-clock:before{content:"\e703"}.el-icon-map-location:before{content:"\e704"}.el-icon-delete-location:before{content:"\e705"}.el-icon-add-location:before{content:"\e706"}.el-icon-location-information:before{content:"\e707"}.el-icon-location-outline:before{content:"\e708"}.el-icon-location:before{content:"\e79e"}.el-icon-place:before{content:"\e709"}.el-icon-discover:before{content:"\e70a"}.el-icon-first-aid-kit:before{content:"\e70b"}.el-icon-trophy-1:before{content:"\e70c"}.el-icon-trophy:before{content:"\e70d"}.el-icon-medal:before{content:"\e70e"}.el-icon-medal-1:before{content:"\e70f"}.el-icon-stopwatch:before{content:"\e710"}.el-icon-mic:before{content:"\e711"}.el-icon-copy-document:before{content:"\e718"}.el-icon-full-screen:before{content:"\e719"}.el-icon-switch-button:before{content:"\e71b"}.el-icon-aim:before{content:"\e71c"}.el-icon-crop:before{content:"\e71d"}.el-icon-odometer:before{content:"\e71e"}.el-icon-time:before{content:"\e71f"}.el-icon-bangzhu:before{content:"\e724"}.el-icon-close-notification:before{content:"\e726"}.el-icon-microphone:before{content:"\e727"}.el-icon-turn-off-microphone:before{content:"\e728"}.el-icon-position:before{content:"\e729"}.el-icon-postcard:before{content:"\e72a"}.el-icon-message:before{content:"\e72b"}.el-icon-chat-line-square:before{content:"\e72d"}.el-icon-chat-dot-square:before{content:"\e72e"}.el-icon-chat-dot-round:before{content:"\e72f"}.el-icon-chat-square:before{content:"\e730"}.el-icon-chat-line-round:before{content:"\e731"}.el-icon-chat-round:before{content:"\e732"}.el-icon-set-up:before{content:"\e733"}.el-icon-turn-off:before{content:"\e734"}.el-icon-open:before{content:"\e735"}.el-icon-connection:before{content:"\e736"}.el-icon-link:before{content:"\e737"}.el-icon-cpu:before{content:"\e738"}.el-icon-thumb:before{content:"\e739"}.el-icon-female:before{content:"\e73a"}.el-icon-male:before{content:"\e73b"}.el-icon-guide:before{content:"\e73c"}.el-icon-news:before{content:"\e73e"}.el-icon-price-tag:before{content:"\e744"}.el-icon-discount:before{content:"\e745"}.el-icon-wallet:before{content:"\e747"}.el-icon-coin:before{content:"\e748"}.el-icon-money:before{content:"\e749"}.el-icon-bank-card:before{content:"\e74a"}.el-icon-box:before{content:"\e74b"}.el-icon-present:before{content:"\e74c"}.el-icon-sell:before{content:"\e6d5"}.el-icon-sold-out:before{content:"\e6d6"}.el-icon-shopping-bag-2:before{content:"\e74d"}.el-icon-shopping-bag-1:before{content:"\e74e"}.el-icon-shopping-cart-2:before{content:"\e74f"}.el-icon-shopping-cart-1:before{content:"\e750"}.el-icon-shopping-cart-full:before{content:"\e751"}.el-icon-smoking:before{content:"\e752"}.el-icon-no-smoking:before{content:"\e753"}.el-icon-house:before{content:"\e754"}.el-icon-table-lamp:before{content:"\e755"}.el-icon-school:before{content:"\e756"}.el-icon-office-building:before{content:"\e757"}.el-icon-toilet-paper:before{content:"\e758"}.el-icon-notebook-2:before{content:"\e759"}.el-icon-notebook-1:before{content:"\e75a"}.el-icon-files:before{content:"\e75b"}.el-icon-collection:before{content:"\e75c"}.el-icon-receiving:before{content:"\e75d"}.el-icon-suitcase-1:before{content:"\e760"}.el-icon-suitcase:before{content:"\e761"}.el-icon-film:before{content:"\e763"}.el-icon-collection-tag:before{content:"\e765"}.el-icon-data-analysis:before{content:"\e766"}.el-icon-pie-chart:before{content:"\e767"}.el-icon-data-board:before{content:"\e768"}.el-icon-data-line:before{content:"\e76d"}.el-icon-reading:before{content:"\e769"}.el-icon-magic-stick:before{content:"\e76a"}.el-icon-coordinate:before{content:"\e76b"}.el-icon-mouse:before{content:"\e76c"}.el-icon-brush:before{content:"\e76e"}.el-icon-headset:before{content:"\e76f"}.el-icon-umbrella:before{content:"\e770"}.el-icon-scissors:before{content:"\e771"}.el-icon-mobile:before{content:"\e773"}.el-icon-attract:before{content:"\e774"}.el-icon-monitor:before{content:"\e775"}.el-icon-search:before{content:"\e778"}.el-icon-takeaway-box:before{content:"\e77a"}.el-icon-paperclip:before{content:"\e77d"}.el-icon-printer:before{content:"\e77e"}.el-icon-document-add:before{content:"\e782"}.el-icon-document:before{content:"\e785"}.el-icon-document-checked:before{content:"\e786"}.el-icon-document-copy:before{content:"\e787"}.el-icon-document-delete:before{content:"\e788"}.el-icon-document-remove:before{content:"\e789"}.el-icon-tickets:before{content:"\e78b"}.el-icon-folder-checked:before{content:"\e77f"}.el-icon-folder-delete:before{content:"\e780"}.el-icon-folder-remove:before{content:"\e781"}.el-icon-folder-add:before{content:"\e783"}.el-icon-folder-opened:before{content:"\e784"}.el-icon-folder:before{content:"\e78a"}.el-icon-edit-outline:before{content:"\e764"}.el-icon-edit:before{content:"\e78c"}.el-icon-date:before{content:"\e78e"}.el-icon-c-scale-to-original:before{content:"\e7c6"}.el-icon-view:before{content:"\e6ce"}.el-icon-loading:before{content:"\e6cf"}.el-icon-rank:before{content:"\e6d1"}.el-icon-sort-down:before{content:"\e7c4"}.el-icon-sort-up:before{content:"\e7c5"}.el-icon-sort:before{content:"\e6d2"}.el-icon-finished:before{content:"\e6cd"}.el-icon-refresh-left:before{content:"\e6c7"}.el-icon-refresh-right:before{content:"\e6c8"}.el-icon-refresh:before{content:"\e6d0"}.el-icon-video-play:before{content:"\e7c0"}.el-icon-video-pause:before{content:"\e7c1"}.el-icon-d-arrow-right:before{content:"\e6dc"}.el-icon-d-arrow-left:before{content:"\e6dd"}.el-icon-arrow-up:before{content:"\e6e1"}.el-icon-arrow-down:before{content:"\e6df"}.el-icon-arrow-right:before{content:"\e6e0"}.el-icon-arrow-left:before{content:"\e6de"}.el-icon-top-right:before{content:"\e6e7"}.el-icon-top-left:before{content:"\e6e8"}.el-icon-top:before{content:"\e6e6"}.el-icon-bottom:before{content:"\e6eb"}.el-icon-right:before{content:"\e6e9"}.el-icon-back:before{content:"\e6ea"}.el-icon-bottom-right:before{content:"\e6ec"}.el-icon-bottom-left:before{content:"\e6ed"}.el-icon-caret-top:before{content:"\e78f"}.el-icon-caret-bottom:before{content:"\e790"}.el-icon-caret-right:before{content:"\e791"}.el-icon-caret-left:before{content:"\e792"}.el-icon-d-caret:before{content:"\e79a"}.el-icon-share:before{content:"\e793"}.el-icon-menu:before{content:"\e798"}.el-icon-s-grid:before{content:"\e7a6"}.el-icon-s-check:before{content:"\e7a7"}.el-icon-s-data:before{content:"\e7a8"}.el-icon-s-opportunity:before{content:"\e7aa"}.el-icon-s-custom:before{content:"\e7ab"}.el-icon-s-claim:before{content:"\e7ad"}.el-icon-s-finance:before{content:"\e7ae"}.el-icon-s-comment:before{content:"\e7af"}.el-icon-s-flag:before{content:"\e7b0"}.el-icon-s-marketing:before{content:"\e7b1"}.el-icon-s-shop:before{content:"\e7b4"}.el-icon-s-open:before{content:"\e7b5"}.el-icon-s-management:before{content:"\e7b6"}.el-icon-s-ticket:before{content:"\e7b7"}.el-icon-s-release:before{content:"\e7b8"}.el-icon-s-home:before{content:"\e7b9"}.el-icon-s-promotion:before{content:"\e7ba"}.el-icon-s-operation:before{content:"\e7bb"}.el-icon-s-unfold:before{content:"\e7bc"}.el-icon-s-fold:before{content:"\e7a9"}.el-icon-s-platform:before{content:"\e7bd"}.el-icon-s-order:before{content:"\e7be"}.el-icon-s-cooperation:before{content:"\e7bf"}.el-icon-bell:before{content:"\e725"}.el-icon-message-solid:before{content:"\e799"}.el-icon-video-camera:before{content:"\e772"}.el-icon-video-camera-solid:before{content:"\e796"}.el-icon-camera:before{content:"\e779"}.el-icon-camera-solid:before{content:"\e79b"}.el-icon-download:before{content:"\e77c"}.el-icon-upload2:before{content:"\e77b"}.el-icon-upload:before{content:"\e7c3"}.el-icon-picture-outline-round:before{content:"\e75f"}.el-icon-picture-outline:before{content:"\e75e"}.el-icon-picture:before{content:"\e79f"}.el-icon-close:before{content:"\e6db"}.el-icon-check:before{content:"\e6da"}.el-icon-plus:before{content:"\e6d9"}.el-icon-minus:before{content:"\e6d8"}.el-icon-help:before{content:"\e73d"}.el-icon-s-help:before{content:"\e7b3"}.el-icon-circle-close:before{content:"\e78d"}.el-icon-circle-check:before{content:"\e720"}.el-icon-circle-plus-outline:before{content:"\e723"}.el-icon-remove-outline:before{content:"\e722"}.el-icon-zoom-out:before{content:"\e776"}.el-icon-zoom-in:before{content:"\e777"}.el-icon-error:before{content:"\e79d"}.el-icon-success:before{content:"\e79c"}.el-icon-circle-plus:before{content:"\e7a0"}.el-icon-remove:before{content:"\e7a2"}.el-icon-info:before{content:"\e7a1"}.el-icon-question:before{content:"\e7a4"}.el-icon-warning-outline:before{content:"\e6c9"}.el-icon-warning:before{content:"\e7a3"}.el-icon-goods:before{content:"\e7c2"}.el-icon-s-goods:before{content:"\e7b2"}.el-icon-star-off:before{content:"\e717"}.el-icon-star-on:before{content:"\e797"}.el-icon-more-outline:before{content:"\e6cc"}.el-icon-more:before{content:"\e794"}.el-icon-phone-outline:before{content:"\e6cb"}.el-icon-phone:before{content:"\e795"}.el-icon-user:before{content:"\e6e3"}.el-icon-user-solid:before{content:"\e7a5"}.el-icon-setting:before{content:"\e6ca"}.el-icon-s-tools:before{content:"\e7ac"}.el-icon-delete:before{content:"\e6d7"}.el-icon-delete-solid:before{content:"\e7c9"}.el-icon-eleme:before{content:"\e7c7"}.el-icon-platform-eleme:before{content:"\e7ca"}.el-icon-loading{-webkit-animation:rotating 2s linear infinite;animation:rotating 2s linear infinite}.el-icon--right{margin-left:5px}.el-icon--left{margin-right:5px}@-webkit-keyframes rotating{0%{-webkit-transform:rotateZ(0);transform:rotateZ(0)}100%{-webkit-transform:rotateZ(360deg);transform:rotateZ(360deg)}}@keyframes rotating{0%{-webkit-transform:rotateZ(0);transform:rotateZ(0)}100%{-webkit-transform:rotateZ(360deg);transform:rotateZ(360deg)}} \ No newline at end of file diff --git "a/\345\274\200\345\217\221\347\211\210dev/Vue.NetCore/Vol.Vue3\347\211\210\346\234\254/src/components/basic/QuickSearch.vue" "b/\345\274\200\345\217\221\347\211\210dev/Vue.NetCore/Vol.Vue3\347\211\210\346\234\254/src/components/basic/QuickSearch.vue" index 9653d2dd7..185cbf2d8 100644 --- "a/\345\274\200\345\217\221\347\211\210dev/Vue.NetCore/Vol.Vue3\347\211\210\346\234\254/src/components/basic/QuickSearch.vue" +++ "b/\345\274\200\345\217\221\347\211\210dev/Vue.NetCore/Vol.Vue3\347\211\210\346\234\254/src/components/basic/QuickSearch.vue" @@ -2,7 +2,6 @@
- + + + +
\ No newline at end of file + + \ No newline at end of file diff --git "a/\345\274\200\345\217\221\347\211\210dev/Vue.NetCore/Vol.Vue3\347\211\210\346\234\254/src/components/basic/UploadExcel.vue" "b/\345\274\200\345\217\221\347\211\210dev/Vue.NetCore/Vol.Vue3\347\211\210\346\234\254/src/components/basic/UploadExcel.vue" index 2e5a8b8a2..230fdadbb 100644 --- "a/\345\274\200\345\217\221\347\211\210dev/Vue.NetCore/Vol.Vue3\347\211\210\346\234\254/src/components/basic/UploadExcel.vue" +++ "b/\345\274\200\345\217\221\347\211\210dev/Vue.NetCore/Vol.Vue3\347\211\210\346\234\254/src/components/basic/UploadExcel.vue" @@ -19,27 +19,25 @@ style="margin-left: 10px" type="primary" size="small" - icon="el-icon-bottom" @click="dowloadTemplate" :loading="loadingStatus" - > - + > + 下载模板 - + > + 上传文件
只能上传excel文件,文件大小不超过5M只能上传excel文件,文件大小不超过{{ maxSize }}M
@@ -64,48 +62,52 @@ export default { props: { url: { type: String, - default: "", + default: '' }, template: { //下载模板配置 type: Object, default: () => { return { - url: "", //模板下载路径,如果没有模板路径,则不显示下载模板功能 - fileName: "未定义文件名", //下载模板的文件名 + url: '', //模板下载路径,如果没有模板路径,则不显示下载模板功能 + fileName: '未定义文件名' //下载模板的文件名 }; - }, + } }, importExcelBefore: { type: Function, default: (file) => { return true; - }, - }, + } + } }, data() { return { - maxSize: 102 * 5, + maxSize: 100, model: true, file: null, loadingStatus: false, - message: "", - resultClass: "", + message: '', + resultClass: '' }; }, methods: { clearMsg() { - this.message = ""; + this.message = ''; }, reset() { this.file = null; - this.message = ""; - this.resultClass = ""; + this.message = ''; + this.resultClass = ''; }, getFileType() { - let fileName = this.file.name.split(".").pop().toLocaleLowerCase() || ""; - if (["numbers", "csv", "xls", "xlsx"].indexOf(fileName) == -1) { - this.$Message.error("只能选择excel文件"); + let fileName = + this.file.name + .split('.') + .pop() + .toLocaleLowerCase() || ''; + if (['numbers', 'csv', 'xls', 'xlsx'].indexOf(fileName) == -1) { + this.$Message.error('只能选择excel文件'); return false; } return true; @@ -120,14 +122,14 @@ export default { upload() { let _url = this.url; if (!_url) { - return this.$Message.error("没有配置好Url"); + return this.$Message.error('没有配置好Url'); } if (!this.file) { - return this.$Message.error("请选择文件"); + return this.$Message.error('请选择文件'); } var formData = new FormData(); - formData.append("fileInput", this.file); + formData.append('fileInput', this.file); if (!this.importExcelBefore(formData)) { return; } @@ -138,11 +140,11 @@ export default { this.loadingStatus = false; this.file = null; if (x.status) { - this.$emit("importExcelAfter", x); + this.$emit('importExcelAfter', x); } this.message = x.message; - this.resultClass = x.status ? "v-r-success" : "v-r-error"; + this.resultClass = x.status ? 'v-r-success' : 'v-r-error'; }, (error) => { this.loadingStatus = false; @@ -152,21 +154,21 @@ export default { dowloadTemplate() { let url = this.template.url; let xmlResquest = new XMLHttpRequest(); - xmlResquest.open("GET", url, true); - xmlResquest.setRequestHeader("Content-type", "application/json"); + xmlResquest.open('GET', url, true); + xmlResquest.setRequestHeader('Content-type', 'application/json'); xmlResquest.setRequestHeader( - "Authorization", + 'Authorization', this.$store.getters.getToken() ); - let fileName = this.template.fileName + ".xlsx"; + let fileName = this.template.fileName + '.xlsx'; let elink = this.$refs.template; - xmlResquest.responseType = "blob"; + xmlResquest.responseType = 'blob'; let $_vue = this; this.loadingStatus = true; - xmlResquest.onload = function (oEvent) { + xmlResquest.onload = function(oEvent) { $_vue.loadingStatus = false; - if (xmlResquest.response.type == "application/json") { - return $_vue.message.error("未找到下载文件"); + if (xmlResquest.response.type == 'application/json') { + return $_vue.message.error('未找到下载文件'); } let content = xmlResquest.response; elink.download = fileName; @@ -175,13 +177,13 @@ export default { elink.click(); }; xmlResquest.send(); - }, - }, + } + } }; \ No newline at end of file + diff --git "a/\345\274\200\345\217\221\347\211\210dev/Vue.NetCore/Vol.Vue3\347\211\210\346\234\254/src/components/basic/ViewGrid/AuditHis.vue" "b/\345\274\200\345\217\221\347\211\210dev/Vue.NetCore/Vol.Vue3\347\211\210\346\234\254/src/components/basic/ViewGrid/AuditHis.vue" new file mode 100644 index 000000000..d1fcb4871 --- /dev/null +++ "b/\345\274\200\345\217\221\347\211\210dev/Vue.NetCore/Vol.Vue3\347\211\210\346\234\254/src/components/basic/ViewGrid/AuditHis.vue" @@ -0,0 +1,46 @@ + + diff --git "a/\345\274\200\345\217\221\347\211\210dev/Vue.NetCore/Vol.Vue3\347\211\210\346\234\254/src/components/basic/ViewGrid/ViewGrid.less" "b/\345\274\200\345\217\221\347\211\210dev/Vue.NetCore/Vol.Vue3\347\211\210\346\234\254/src/components/basic/ViewGrid/ViewGrid.less" index 958631b78..adc13c3e2 100644 --- "a/\345\274\200\345\217\221\347\211\210dev/Vue.NetCore/Vol.Vue3\347\211\210\346\234\254/src/components/basic/ViewGrid/ViewGrid.less" +++ "b/\345\274\200\345\217\221\347\211\210dev/Vue.NetCore/Vol.Vue3\347\211\210\346\234\254/src/components/basic/ViewGrid/ViewGrid.less" @@ -1,18 +1,19 @@ -.view-container{ +.view-container { // padding: 15px; background: white; - .grid-search{ - padding-top:15px; + .grid-search { + padding-top: 15px; //padding: 15px 15px 0 15px; } - .grid-container,.grid-body{ + .grid-container, + .grid-body { padding: 0 15px; } - .view-header{ + .view-header { padding-left: 15px; padding-right: 15px; } - .fs-line{ + .fs-line { height: 9px; background: #f1f1f1; margin-top: -10px; @@ -20,136 +21,135 @@ } } .view-header { - height: 45px; + height: 45px; + position: relative; + padding-bottom: 11px; + display: flex; + .search-line { + min-width: 150px; + } + .search-line > div { + margin-left: 5px; + margin-right: 10px; + } + .search-line > div > div { + width: 200px; + text-align: left; + } + .search-line > div:first-child { + flex: 1; + } + .search-line > div .ivu-select-dropdown { + max-height: 300px; + } + .btn-group { + white-space: nowrap; + button { + margin-left: 10px; + // padding: 5px 16px; + } + } + .btn-group .ivu-dropdown-item { + text-align: left !important; + } + .btn-group .ivu-dropdown-item:not(:last-child) { + border-bottom: 1px dotted #eee; + } + .desc-text { + margin-top: 5px; + font-weight: bold; + margin-bottom: 3px; + font-size: 14px; + color: #313131; + white-space: nowrap; + border-bottom: 2px solid #646565; + i { + font-size: 16px; + position: relative; + top: 1px; + margin-right: 2px; + } + } + .search-box { + background: #fefefe; + margin-top: 45px; + border: 1px solid #ececec; + position: absolute; + z-index: 999; + left: 0; + right: 0; + padding: 25px 40px; + padding-bottom: 0; + box-shadow: 0px 7px 18px -12px #bdc0bb; + } + .notice { + font-size: 13px; + color: #6b6b6b; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; position: relative; - padding-bottom: 11px; - display: flex; - .search-line { - min-width: 150px; - } - .search-line > div { - margin-left: 5px; - margin-right: 10px; - } - .search-line > div > div{ - width: 200px; - text-align: left; - } - .search-line > div:first-child{ - flex: 1; - } - .search-line > div .ivu-select-dropdown{ - max-height: 300px; - } - .btn-group{ - white-space: nowrap; - button { - margin-left: 10px; - // padding: 5px 16px; - } - } - .btn-group .ivu-dropdown-item { - text-align: left !important; - } - .btn-group .ivu-dropdown-item:not(:last-child) { - border-bottom: 1px dotted #eee; - } - .desc-text { - margin-top: 5px; - font-weight: bold; - margin-bottom: 3px; - font-size: 14px; - color: #313131; - white-space: nowrap; - border-bottom: 2px solid #646565; - i{ - font-size: 16px; - position: relative; - top: 1px; - margin-right: 2px; - } - } - .search-box { - background: #fefefe; - margin-top: 45px; - border: 1px solid #ececec; - position: absolute; - z-index: 999; - left: 0; - right: 0; - padding: 25px 40px; - padding-bottom: 0; - box-shadow: 0px 7px 18px -12px #bdc0bb; - } - .notice { - font-size: 13px; - color: #6b6b6b; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - position: relative; - top: 12px; - flex: 1; - left: 10px; - margin-right: 20px; - } + top: 12px; + flex: 1; + left: 10px; + margin-right: 20px; } +} .table-info-cell-title { - background-color: #f5f5f5 !important; - } + background-color: #f5f5f5 !important; +} .box-com { - - > div.item{ + > div.item { // margin-bottom: 10px; padding: 15px 17px 0 8px; margin-bottom: 12px; background: white; } - > div.form-item{ + > div.form-item { padding: 19px 16px 0px 5px; //box-shadow: 0 1px 7px rgb(199, 199, 199); } - > div.table-item{ + > div.table-item { padding: 0 10px; - border-top: 12px solid #eaeaea; + border-top: 1.5px solid #eaeaea; } - .v-text{ - line-height: 27px; - } - .form-text{ - position: relative; - border-bottom: 1px solid #eee; - font-size: 14px; - margin-bottom: 14px; - } + .v-text { + line-height: 27px; } - - .form-closex { - text-align: right; - padding-bottom: 24px; - } - .form-closex button { - margin-left: 10px; - padding: 4px 13px; + .form-text { + position: relative; + border-bottom: 1px solid #eee; + font-size: 14px; + margin-bottom: 14px; } - .toolbar{ +} + +.form-closex { + text-align: right; + padding-bottom: 24px; +} +.form-closex button { + margin-left: 10px; + padding: 4px 13px; +} +.toolbar { padding: 3px 0px; width: 100%; display: flex; - .title{ + .title { line-height: 29px; border-bottom: none; font-size: 13px; font-weight: bolder; margin-bottom: 0; color: #5d5c5c; - .icon{ + .icon { color: #009688; font-size: 18px; } - i{ + i { line-height: 29px; border-bottom: none; font-weight: bolder; @@ -159,22 +159,20 @@ margin-top: -4px; font-size: 14px; } - } - .btns{ - line-height: 28px; - flex: 1; - text-align: right; - button{ - // border: none; - // margin-left:15px; - border: 0px; - padding: 0px 9px; - } - // button:hover{ - // color: #FF9800; - // border-color: #FF9800; - // border: none; - // } - + } + .btns { + line-height: 28px; + flex: 1; + text-align: right; + button { + // border: none; + // margin-left:15px; + border: 0px; + padding: 0px 9px; + color: #292929; + } + button:hover{ + color: #0089f6; } - } \ No newline at end of file + } +} diff --git "a/\345\274\200\345\217\221\347\211\210dev/Vue.NetCore/Vol.Vue3\347\211\210\346\234\254/src/components/basic/ViewGrid/ViewGrid.vue" "b/\345\274\200\345\217\221\347\211\210dev/Vue.NetCore/Vol.Vue3\347\211\210\346\234\254/src/components/basic/ViewGrid/ViewGrid.vue" index c19025df1..85db5b3ed 100644 --- "a/\345\274\200\345\217\221\347\211\210dev/Vue.NetCore/Vol.Vue3\347\211\210\346\234\254/src/components/basic/ViewGrid/ViewGrid.vue" +++ "b/\345\274\200\345\217\221\347\211\210dev/Vue.NetCore/Vol.Vue3\347\211\210\346\234\254/src/components/basic/ViewGrid/ViewGrid.vue" @@ -2,39 +2,119 @@
- + + @@ -77,19 +157,21 @@ @@ -175,11 +265,13 @@ diff --git "a/\345\274\200\345\217\221\347\211\210dev/Vue.NetCore/Vol.Vue3\347\211\210\346\234\254/src/components/basic/VolElementMenu.vue" "b/\345\274\200\345\217\221\347\211\210dev/Vue.NetCore/Vol.Vue3\347\211\210\346\234\254/src/components/basic/VolElementMenu.vue" index 9351aed7c..66a977996 100644 --- "a/\345\274\200\345\217\221\347\211\210dev/Vue.NetCore/Vol.Vue3\347\211\210\346\234\254/src/components/basic/VolElementMenu.vue" +++ "b/\345\274\200\345\217\221\347\211\210dev/Vue.NetCore/Vol.Vue3\347\211\210\346\234\254/src/components/basic/VolElementMenu.vue" @@ -2,6 +2,8 @@
diff --git "a/\345\274\200\345\217\221\347\211\210dev/Vue.NetCore/Vol.Vue3\347\211\210\346\234\254/src/components/basic/VolForm.vue" "b/\345\274\200\345\217\221\347\211\210dev/Vue.NetCore/Vol.Vue3\347\211\210\346\234\254/src/components/basic/VolForm.vue" index 37e36f002..9f3801afc 100644 --- "a/\345\274\200\345\217\221\347\211\210dev/Vue.NetCore/Vol.Vue3\347\211\210\346\234\254/src/components/basic/VolForm.vue" +++ "b/\345\274\200\345\217\221\347\211\210dev/Vue.NetCore/Vol.Vue3\347\211\210\346\234\254/src/components/basic/VolForm.vue" @@ -9,7 +9,7 @@ :rules="rules" > + @@ -122,9 +173,13 @@ v-else-if="item.type == 'radio'" @change="item.onChange" > - {{ - kv.value - }} + {{ kv.value }} {{ kv.value }} @@ -149,14 +205,13 @@ " > + + +
+
+
-
const rule = { change: [ - 'checkbox', - 'select', - 'date', - 'datetime', - 'drop', - 'radio', - 'cascader' + "checkbox", + "select", + "date", + "datetime", + "drop", + "radio", + "cascader", ], // 2020.05.31增加级联类型 phone: /^[1][3,4,5,6,7,8,9][0-9]{9}$/, decimal: /(^[\-0-9][0-9]*(.[0-9]+)?)$/, - number: /(^[\-0-9][0-9]*([0-9]+)?)$/ + number: /(^[\-0-9][0-9]*([0-9]+)?)$/, }; -const inputTypeArr = ['text', 'string', 'mail', 'textarea', 'password']; +const inputTypeArr = ["text", "string", "mail", "textarea", "password"]; const types = { - int: 'number', - byte: 'number', - decimal: 'number', // "float", - string: 'string', - bool: 'boolean', - date: 'datetime', - date: 'date', - mail: 'email' + int: "number", + byte: "number", + decimal: "number", // "float", + string: "string", + bool: "boolean", + date: "datetime", + date: "date", + mail: "email", }; //表单验证注意:每次验证都必须执行callback,否则验证不执行回调方法 const colPow = Math.pow(10, 3); -import FormExpand from './VolForm/VolFormRender'; +import FormExpand from "./VolForm/VolFormRender"; import { defineAsyncComponent, defineComponent, @@ -424,52 +495,61 @@ import { toRefs, getCurrentInstance, onMounted, - watch -} from 'vue'; + watch, +} from "vue"; export default defineComponent({ components: { FormExpand, - 'vol-upload': defineAsyncComponent(() => - import('@/components/basic/VolUpload.vue') + "vol-upload": defineAsyncComponent(() => + import("@/components/basic/VolUpload.vue") + ), + "vol-wang-editor": defineAsyncComponent(() => + import("@/components/editor/VolWangEditor.vue") ), - 'vol-wang-editor': defineAsyncComponent(() => - import('@/components/editor/VolWangEditor.vue') - ) }, props: { loadKey: { // 是否加载formRules字段配置的数据源 type: Boolean, - default: true + default: true, }, width: { // 表单宽度 type: Number, - default: 0 + default: 0, }, labelWidth: { // 表单左边label文字标签的宽度 type: Number, - default: 100 + default: 100, }, formRules: { // 表单配置规则,如字段类型,是否必填 type: Array, - default: [] + default: [], }, formFields: { type: Object, default: () => { return {}; - } + }, }, editor: { // 2021.01.16编辑器信息 {uploadImgUrl:"",upload:null//上传方法} type: Object, default: () => { return {}; - } - } + }, + }, + size: { + type: String, //large / default / small + default: "large", + }, + select2Count: { + //超出数量显示select2组件 + type: Number, + default: 500, + }, }, computed: { rules() { @@ -479,11 +559,16 @@ export default defineComponent({ ruleResult[item.field] = [this.getRule(item, this.formFields)]; }); }); + if( this.$refs.volform){ + setTimeout(()=>{ + this.$refs.volform.clearValidate(); + },100) + } return ruleResult; - } + }, }, setup(props, context) { - const { appContext } = getCurrentInstance(); + const { appContext, proxy } = getCurrentInstance(); const remoteCall = ref(true); const span = ref(1); const rangeFields = toRefs([]); @@ -513,7 +598,7 @@ export default defineComponent({ }); } row.forEach((item, yIndex) => { - if (item.type == 'number') { + if (item.type == "number") { numberFields.push(item.field); } // 目前只支持select单选远程搜索,remote远程从后台字典数据源进行搜索,url从指定的url搜索 @@ -527,18 +612,18 @@ export default defineComponent({ // 初始化数据源空对象 if (item.dataKey) { // 下拉框都强制设置为字符串类型 - item.columnType = 'string'; + item.columnType = "string"; if (!item.data) { item.data = []; } } - if (item.range || item.type == 'range') { + if (item.range || item.type == "range") { if ( !(props.formFields[item.field] instanceof Array) || props.formFields[item.field].length != 2 ) { - props.formFields[item.field] = ['', '']; + props.formFields[item.field] = ["", ""]; } rangeFields.push(item.field); } @@ -564,19 +649,32 @@ export default defineComponent({ if (keys.length == 0) return; appContext.config.globalProperties.http - .post('/api/Sys_Dictionary/GetVueDictionary', keys) + .post("/api/Sys_Dictionary/GetVueDictionary", keys) .then((dic) => { bindOptions(dic, binds); + proxy.$emit("dicInited", dic); }); }; const bindOptions = (dic, binds) => { dic.forEach((d) => { + if (d.data.length > props.select2Count) { + if ( + !binds.some((x) => { + return x.key == d.dicNo && x.type == "cascader"; + }) + ) { + d.data.forEach((item) => { + item.label = item.value; + item.value = item.key; + }); + } + } binds.forEach((x) => { if (x.key != d.dicNo) return true; // 如果有数据的则不查询 if (x.data.length > 0) return true; //2022.03.13增加级联数据源自动转换 - if (x.type == 'cascader') { + if (x.type == "cascader") { let _data = JSON.parse(JSON.stringify(d.data)); let cascaderArr = appContext.config.globalProperties.base.convertTree( @@ -597,13 +695,13 @@ export default defineComponent({ } }); }); - } else if (d.data.length > 0 && !d.data[0].hasOwnProperty('key')) { + } else if (d.data.length > 0 && !d.data[0].hasOwnProperty("key")) { let source = d.data, newSource = new Array(source.length); for (let index = 0; index < source.length; index++) { newSource[index] = { - key: source['key'] + '', - value: source['value'] + key: source["key"] + "", + value: source["value"], }; } x.data.push(...newSource); @@ -617,17 +715,17 @@ export default defineComponent({ const initUpload = (item, init) => { if (!init) return; if ( - ['img', 'excel', 'file'].indexOf(item.type != -1) || - item.columnType == 'img' + ["img", "excel", "file"].indexOf(item.type != -1) || + item.columnType == "img" ) { // 只是没设置是否自动上传的,默认都是选择文件后自动上传 - if (!item.hasOwnProperty('autoUpload')) { + if (!item.hasOwnProperty("autoUpload")) { item.autoUpload = true; } - if (!item.hasOwnProperty('fileList')) { + if (!item.hasOwnProperty("fileList")) { item.fileList = true; } - if (!item.hasOwnProperty('downLoad')) { + if (!item.hasOwnProperty("downLoad")) { item.downLoad = true; } if (!item.removeBefore) { @@ -661,10 +759,16 @@ export default defineComponent({ let result = true; volform.value.validate((valid) => { if (!valid) { - appContext.config.globalProperties.$message.error('数据验证未通过!'); + appContext.config.globalProperties.$message.error("数据验证未通过!"); result = false; - } else if (typeof callback === 'function') { - callback(valid); + } else if (typeof callback === "function") { + try { + callback(valid); + } catch (error) { + let msg = `表单验证回调方法异常:${error.message}`; + appContext.config.globalProperties.$message.error(msg); + console.log(msg); + } } }); return result; @@ -677,7 +781,7 @@ export default defineComponent({ rangeFields, numberFields, validate, - volform + volform, // initFormRules, // initSource }; @@ -689,7 +793,7 @@ export default defineComponent({ data() { return { // remoteCall: true, - errorImg: 'this.src="' + require('@/assets/imgs/error-img.png') + '"' + errorImg: 'this.src="' + require("@/assets/imgs/error-img.png") + '"', // span: 1, // rangeFields: [], }; @@ -717,7 +821,7 @@ export default defineComponent({ }, getSrc(path) { if (!path) return; - if (!this.base.isUrl(path) && path.indexOf('.') != -1) { + if (!this.base.isUrl(path) && path.indexOf(".") != -1) { return this.http.ipAddress + path; } return path; @@ -725,10 +829,10 @@ export default defineComponent({ // 是否为图片文件等格式并对字段的转换成数组:[{name:'1.jpg',path:'127.0.0.1/ff/1.jpg'}] isFile(item, formFields) { if ( - item.type == 'img' || - item.columnType == 'img' || - item.type == 'excel' || - item.type == 'file' + item.type == "img" || + item.columnType == "img" || + item.type == "excel" || + item.type == "file" ) { this.convertFileToArray(item, formFields); return true; @@ -755,21 +859,21 @@ export default defineComponent({ return; } // 将以逗号隔开的文件分割成数组127.0.0.1/aa/1.jpg,将127.0.0.1/aa/2.jpg - if (typeof fileInfo === 'string') { - if (fileInfo.trim() === '') { + if (typeof fileInfo === "string") { + if (fileInfo.trim() === "") { formFields[item.field] = []; return; } // 如果文件路径是字符串,则使用,拆分 - fileInfo = fileInfo.replace(/\\/g, '/'); - let files = fileInfo.split(','); + fileInfo = fileInfo.replace(/\\/g, "/"); + let files = fileInfo.split(","); formFields[item.field] = []; for (let index = 0; index < files.length; index++) { let file = files[index]; - let splitFile = file.split('/'); + let splitFile = file.split("/"); formFields[item.field].push({ name: splitFile.length > 0 ? splitFile[splitFile.length - 1] : file, - path: file // this.base.isUrl(file) ? file : this.http.ipAddress + file, + path: file, // this.base.isUrl(file) ? file : this.http.ipAddress + file, }); } } @@ -779,59 +883,59 @@ export default defineComponent({ file.path, file.name, { - Authorization: this.$store.getters.getToken() + Authorization: this.$store.getters.getToken(), }, this.http.ipAddress ); }, validatorPhone(ruleOption, value, callback) { - if (!ruleOption.required && !value && value != '0') { + if (!ruleOption.required && !value && value != "0") { return callback(); } - if (!rule.phone.test((value || '').trim())) { - return callback(new Error('请输入正确的手机号')); + if (!rule.phone.test((value || "").trim())) { + return callback(new Error("请输入正确的手机号")); } callback(); }, validatorPwd(ruleOption, value, callback) { - if (!ruleOption.required && !value && value != '0') { + if (!ruleOption.required && !value && value != "0") { return callback(); } - if ((value + '').trim().length < 6) { - return callback(new Error('密码长度不能小于6位')); + if ((value + "").trim().length < 6) { + return callback(new Error("密码长度不能小于6位")); } callback(); }, convertArrayValue(data, val) { // 2020.12.13增加表单多选只转换字典 // 编辑多选table显示 - let valArr = val instanceof Array ? val : val.split(','); + let valArr = val instanceof Array ? val : val.split(","); for (let index = 0; index < valArr.length; index++) { var _item = data.find((x) => { - return x.key && x.key != '0' && x.key + '' == valArr[index] + ''; + return x.key && x.key != "0" && x.key + "" == valArr[index] + ""; }); if (_item) { valArr[index] = _item.value; } } - return valArr.join(','); + return valArr.join(","); }, getText(formFields, item) { // 2019.10.24修复表单select组件为只读的属性时没有绑定数据源 let text = formFields[item.field]; - if (typeof text === 'function') return text(formFields); - if (text === 'null' || text === '' || text === null || text === undefined) - return '--'; + if (typeof text === "function") return text(formFields); + if (text === "null" || text === "" || text === null || text === undefined) + return "--"; //2021.03.02增加只读时日期处理 - if (item.type == 'date') { - return text.replace('T', ' ').split(' ')[0]; + if (item.type == "date") { + return text.replace("T", " ").split(" ")[0]; } //2021.03.31修复表单switch只读时没有转换值的问题 - if (item.type == 'switch') { - return text ? '是' : '否'; + if (item.type == "switch") { + return text ? "是" : "否"; } if (!item.data) return text; - if (item.type == 'selectList' || item.type == 'checkbox') { + if (item.type == "selectList" || item.type == "checkbox") { return this.convertArrayValue(item.data, text); } var _item = item.data.find((x) => { @@ -845,7 +949,7 @@ export default defineComponent({ // console.log(2); }, onChange(item, value) { - if (item.onChange && typeof item.onChange === 'function') { + if (item.onChange && typeof item.onChange === "function") { item.onChange(value, item); } }, @@ -856,7 +960,7 @@ export default defineComponent({ // console.log('undefined'); } this.remoteCall = false; - if (item.onChange && typeof item.onChange === 'function') { + if (item.onChange && typeof item.onChange === "function") { item.onChange(value, item); } }, @@ -866,8 +970,11 @@ export default defineComponent({ // 远程搜索(打开弹出框时应该禁止搜索) remoteSearch(item, formFields, val) { + if (!item.remote && !item.url) { + return; + } if ( - val == '' || + val == "" || (item.data.length == 1 && (val == item.data[0].key || val == item.data[0].value)) ) { @@ -876,14 +983,14 @@ export default defineComponent({ // 弹出框或初始化表单时给data设置数组默认值2 // 2020.09.26修复远程搜索自定义url不起作用的问题 let url; - if (typeof item.url === 'function') { + if (typeof item.url === "function") { url = item.url(val, item.dataKey, item); } else { url = - (item.url || '/api/Sys_Dictionary/GetSearchDictionary') + - '?dicNo=' + + (item.url || "/api/Sys_Dictionary/GetSearchDictionary") + + "?dicNo=" + item.dataKey + - '&value=' + + "&value=" + val; } this.http.post(url).then((dicData) => { @@ -894,14 +1001,14 @@ export default defineComponent({ }); }, getObject(date) { - if (typeof date === 'object') { + if (typeof date === "object") { return date; } return new Date(date); }, reset(sourceObj) { // 重置表单时,禁用远程查询 - this.$refs['volform'].resetFields(); + this.$refs["volform"].resetFields(); if (this.rangeFields.length) { this.rangeFields.forEach((key) => { this.formFields[key].splice(0); @@ -936,24 +1043,24 @@ export default defineComponent({ if ( // item.readonly || // item.disabled || - item.type == 'switch' || - item.type == 'range' + item.type == "switch" || + item.type == "range" ) return { required: false }; // 用户设置的自定义方法 - if (item.validator && typeof item.validator === 'function') { + if (item.validator && typeof item.validator === "function") { return { validator: (rule, val, callback) => { // 用户自定义的方法,如果返回了值,直接显示返回的值,验证不通过 let message = item.validator(rule, val); - if (message) return callback(new Error(message + '')); + if (message) return callback(new Error(message + "")); return callback(); }, required: item.required, - trigger: rule.change.indexOf(item.type) != -1 ? 'change' : 'blur' + trigger: rule.change.indexOf(item.type) != -1 ? "change" : "blur", }; } - if (['img', 'excel', 'file'].indexOf(item.type) != -1) { + if (["img", "excel", "file"].indexOf(item.type) != -1) { return { validator: (rule, val, callback) => { //2021.09.05移除文件上传默认必填 @@ -963,126 +1070,118 @@ export default defineComponent({ (!val || !val.length) ) { return callback( - new Error(item.type == 'img' ? '请上传照片' : '请上传文件') + new Error(item.type == "img" ? "请上传照片" : "请上传文件") ); } return callback(); }, required: item.required, - trigger: 'change' + trigger: "change", }; } // 设置数字的最大值民最小值 if ( - item.type == 'number' || - item.columnType == 'number' || - item.columnType == 'int' || - item.type == 'decimal' + item.type == "number" || + item.columnType == "number" || + item.columnType == "int" || + item.type == "decimal" ) { // 如果是必填项的数字,设置一个默认最大与最值小 - if (item.required && typeof item.min !== 'number') { + if (item.required && typeof item.min !== "number") { item.min = 0; //item.type == "decimal" ? 0.1 : 1; } return { required: item.required, - message: item.title, + message: item.title+"只能是数字", title: item.title, - trigger: 'blur', + trigger: "blur", min: item.min, max: item.max, type: item.columnType || item.type, validator: (ruleObj, value, callback) => { if (!ruleObj.min && !ruleObj.max) { if (ruleObj.required) { - if (value == '') { - formFields[rule.field] = 0; - return callback(); + if (!value&&value!="0"||!rule.decimal.test(value)) { + return callback(new Error("只能是数字")); } } - if (value === '' || value === undefined) return callback(); + return callback(); } if (this.isReadonly(item)) return callback(); - if (ruleObj.type == 'number') { + if (ruleObj.type == "number") { if (!rule.number.test(value)) { - ruleObj.message = ruleObj.title + '只能是整数'; + ruleObj.message = ruleObj.title + "只能是整数"; return callback(new Error(ruleObj.message)); } } else { if (!rule.decimal.test(value)) { - ruleObj.message = ruleObj.title + '只能是数字'; + ruleObj.message = ruleObj.title + "只能是数字"; return callback(new Error(ruleObj.message)); } } if ( ruleObj.min !== undefined && - typeof ruleObj.min === 'number' && + typeof ruleObj.min === "number" && value < ruleObj.min ) { - ruleObj.message = ruleObj.title + '不能小于' + ruleObj.min; + ruleObj.message = ruleObj.title + "不能小于" + ruleObj.min; return callback(new Error(ruleObj.message)); } if ( ruleObj.max !== undefined && - typeof ruleObj.max === 'number' && + typeof ruleObj.max === "number" && value > ruleObj.max ) { - ruleObj.message = ruleObj.title + '不能大于' + ruleObj.max; + ruleObj.message = ruleObj.title + "不能大于" + ruleObj.max; return callback(new Error(ruleObj.message)); } return callback(); - } + }, }; } // 手机、密码验证 - if (item.type == 'password' || item.type == 'phone') { + if (item.type == "password" || item.type == "phone") { return { validator: - item.type == 'phone' ? this.validatorPhone : this.validatorPwd, + item.type == "phone" ? this.validatorPhone : this.validatorPwd, required: item.required, - trigger: 'blur' + trigger: "blur", }; } - if (!item.required && item.type != 'mail') return { required: false }; + if (!item.required && item.type != "mail") return { required: false }; - if (!item.hasOwnProperty('type')) item.type = 'text'; + if (!item.hasOwnProperty("type")) item.type = "text"; if (inputTypeArr.indexOf(item.type) != -1) { let message = item.title + - (item.type == 'mail' ? '必须是一个邮箱地址' : '不能为空'); - let type = item.type == 'mail' ? 'email' : types[item.columnType]; + (item.type == "mail" ? "必须是一个邮箱地址" : "不能为空"); + let type = item.type == "mail" ? "email" : types[item.columnType]; let _rule = { required: true, message: message, - trigger: 'blur', + trigger: "blur", type: type, validator: (ruleObj, value, callback) => { if ( !this.isReadonly(item) && - (value === '' || value === undefined || value === null) + (value === "" || value === undefined || value === null) ) { return callback(new Error(ruleObj.message)); } return callback(); - } + }, }; - if (item.type == 'mail') { - _rule.required = item.required; - return [ - _rule, - { - type: type, - message: message, - trigger: 'blur' - } - ]; + if (item.type == "mail") { + _rule.validator = undefined; + return _rule; } if (item.min) { _rule.min = item.min; - _rule.message = item.title + '至少' + item.min + '个字符!'; + _rule.message = item.title + "至少" + item.min + "个字符!"; } if (item.max) { return [ @@ -1090,90 +1189,91 @@ export default defineComponent({ { max: item.max, required: true, - message: item.title + '最多' + item.max + '个字符!', - trigger: 'blur' - } + message: item.title + "最多" + item.max + "个字符!", + trigger: "blur", + }, ]; } return _rule; } - if (item.type == 'radio') { + if (item.type == "radio") { return { required: item.required, - message: '请选择' + item.title, - trigger: 'change', - type: 'string' + message: "请选择" + item.title, + trigger: "change", + type: "string", }; } if ( - item.type == 'date' || - item.type == 'datetime' || - item.type == 'time' + item.type == "date" || + item.type == "datetime" || + item.type == "month"|| + item.type == "time" ) { return { required: true, - message: '请选择' + item.title, - trigger: 'change', - type: item.range ? 'array' : 'string', + message: "请选择" + item.title, + trigger: "change", + type: item.range ? "array" : "string", validator: (rule, val, callback) => { if (this.isReadonly(item)) return callback(); // 用户自定义的方法,如果返回了值,直接显示返回的值,验证不通过 if (!val || (item.range && !val.length)) { - return callback(new Error('请选择日期')); + return callback(new Error("请选择日期")); } return callback(); - } + }, }; } - if (item.type == 'cascader') { + if (item.type == "cascader") { return { - type: 'array', + type: "array", required: true, min: item.min || 1, // message: "请选择" + item.title, - trigger: 'change', + trigger: "change", validator: (rule, val, callback) => { if (this.isReadonly(item)) return callback(); // 用户自定义的方法,如果返回了值,直接显示返回的值,验证不通过 let _arr = this.formFields[item.field]; if (!_arr || !_arr.length) { - return callback(new Error('请选择' + item.title)); + return callback(new Error("请选择" + item.title)); } return callback(); - } + }, }; } if ( - ['select', 'selectList', 'checkbox', 'cascader'].indexOf(item.type) != + ["select", "selectList", "checkbox", "cascader"].indexOf(item.type) != -1 ) { let _rule = { - type: item.type == 'select' ? 'string' : 'array', + type: item.type == "select" ? "string" : "array", required: true, min: item.min || 1, - message: '请选择' + item.title, - trigger: 'change', + message: "请选择" + item.title, + trigger: "change", validator: (rule, value, callback) => { if (this.isReadonly(item)) return callback(); //2021.11.27修复多选没有提示的问题 - if (value == undefined || value === '') { + if (value == undefined || value === "") { return callback(new Error(rule.message)); } else if ( - (item.type == 'checkbox' || item.type == 'selectList') && + (item.type == "checkbox" || item.type == "selectList") && (!(value instanceof Array) || !value.length) ) { return callback(new Error(rule.message)); } return callback(); - } + }, }; if (_rule.max) { _rule.nax = item.max; - _rule.message = '最多只能选择' + item.max + '项'; + _rule.message = "最多只能选择" + item.max + "项"; } return _rule; } @@ -1185,7 +1285,7 @@ export default defineComponent({ } return ( date1.valueOf() < - (typeof date2 == 'number' ? date2 : new Date(date2).valueOf()) + (typeof date2 == "number" ? date2 : new Date(date2).valueOf()) ); }, getDateOptions(date, item) { @@ -1193,21 +1293,27 @@ export default defineComponent({ if ((!item.min && !item.max) || !date) { return false; } - if (item.min && item.min.indexOf(' ') == -1) { + if (item.min && item.min.indexOf(" ") == -1) { //不设置时分秒,后面会自动加上 08:00 - item.min = item.min + ' 00:00:000'; + item.min = item.min + " 00:00:000"; } return ( this.compareDate(date, item.min) || !this.compareDate(date, item.max) ); }, getDateFormat(item) { + if (item.type == "month") { + return "YYYY-MM"; + } + // if (item.type=='time') { + // return 'HH:mm:ss' + // } //见https://day.js.org/docs/zh-CN/display/format - return item.type == 'date' ? 'YYYY-MM-DD' : 'YYYY-MM-DD HH:mm:ss'; + return item.type == "date" ? "YYYY-MM-DD" : "YYYY-MM-DD HH:mm:ss"; }, dateRangeChange(val, item) { if (!val) { - this.$emit('update:formFields'); + this.$emit("update:formFields"); return; } item.onChange && item.onChange(val); @@ -1217,8 +1323,8 @@ export default defineComponent({ return; } item.onKeyPress($event); - } - } + }, + }, }); diff --git "a/\345\274\200\345\217\221\347\211\210dev/Vue.NetCore/Vol.Vue3\347\211\210\346\234\254/src/components/basic/VolFormDraggable/VolFormPreview.vue" "b/\345\274\200\345\217\221\347\211\210dev/Vue.NetCore/Vol.Vue3\347\211\210\346\234\254/src/components/basic/VolFormDraggable/VolFormPreview.vue" index cd9aaa831..7d8aa9393 100644 --- "a/\345\274\200\345\217\221\347\211\210dev/Vue.NetCore/Vol.Vue3\347\211\210\346\234\254/src/components/basic/VolFormDraggable/VolFormPreview.vue" +++ "b/\345\274\200\345\217\221\347\211\210dev/Vue.NetCore/Vol.Vue3\347\211\210\346\234\254/src/components/basic/VolFormDraggable/VolFormPreview.vue" @@ -22,7 +22,7 @@
- 提交 重置 下载代码
diff --git "a/\345\274\200\345\217\221\347\211\210dev/Vue.NetCore/Vol.Vue3\347\211\210\346\234\254/src/components/basic/VolHeader.vue" "b/\345\274\200\345\217\221\347\211\210dev/Vue.NetCore/Vol.Vue3\347\211\210\346\234\254/src/components/basic/VolHeader.vue" index 00d7fc72d..cbe64e73c 100644 --- "a/\345\274\200\345\217\221\347\211\210dev/Vue.NetCore/Vol.Vue3\347\211\210\346\234\254/src/components/basic/VolHeader.vue" +++ "b/\345\274\200\345\217\221\347\211\210dev/Vue.NetCore/Vol.Vue3\347\211\210\346\234\254/src/components/basic/VolHeader.vue" @@ -2,7 +2,7 @@
- {{text}} + {{ title || text }}
@@ -17,11 +17,15 @@ export default { props: { icon: { type: String, - default: "" + default: '' + }, + title: { + type: String, + default: '' }, text: { type: String, - default: "未定义名称" + default: '未定义名称' } } }; @@ -52,12 +56,12 @@ export default { } .v-right-content { flex: 1; - text-align: right; + text-align: right; } - .h-icon{ + .h-icon { position: relative; top: 2px; margin-right: 3px; } } - \ No newline at end of file + diff --git "a/\345\274\200\345\217\221\347\211\210dev/Vue.NetCore/Vol.Vue3\347\211\210\346\234\254/src/components/basic/VolTable.vue" "b/\345\274\200\345\217\221\347\211\210dev/Vue.NetCore/Vol.Vue3\347\211\210\346\234\254/src/components/basic/VolTable.vue" index 3425c3452..81eb1bff9 100644 --- "a/\345\274\200\345\217\221\347\211\210dev/Vue.NetCore/Vol.Vue3\347\211\210\346\234\254/src/components/basic/VolTable.vue" +++ "b/\345\274\200\345\217\221\347\211\210dev/Vue.NetCore/Vol.Vue3\347\211\210\346\234\254/src/components/basic/VolTable.vue" @@ -24,6 +24,7 @@ @row-dblclick="rowDbClick" @row-click="rowClick" @header-click="headerClick" + :highlight-current-row="highlightCurrentRow" ref="table" class="v-table" @sort-change="sortChange" @@ -35,6 +36,7 @@ :row-class-name="initIndex" :cell-style="getCellStyle" style="width: 100%" + :scrollbar-always-on="true" > + + +