style: 💄 代码整理 (#88)

This commit is contained in:
nsnail 2024-02-02 18:16:51 +08:00 committed by GitHub
parent 8293ec0297
commit 6f32acaacf
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
147 changed files with 715 additions and 658 deletions

View File

@ -15,17 +15,21 @@ XML注释文件不存在
唯一编码不能为空 唯一编码不能为空
图标代码不能为空 图标代码不能为空
图标名称不能为空 图标名称不能为空
婚姻状况不正确
字典名称不能为空 字典名称不能为空
字典目录不存在 字典目录不存在
字典目录编号不能为空 字典目录编号不能为空
字典编码不能为空 字典编码不能为空
学历不正确
密码不能为空 密码不能为空
已处理完毕 已处理完毕
开始事务 开始事务
性别不正确
手机号码不正确 手机号码不正确
手机号码不能为空 手机号码不能为空
接口编码不存在 接口编码不存在
支付宝账号 支付宝账号
政治面貌不正确
数据库同步开始 数据库同步开始
数据库服务器时钟偏移 数据库服务器时钟偏移
数据库结构同步完成 数据库结构同步完成
@ -47,6 +51,7 @@ XML注释文件不存在
未获取到待执行任务 未获取到待执行任务
模块名称不能为空 模块名称不能为空
模块说明不能为空 模块说明不能为空
民族不正确
消息主题不能为空 消息主题不能为空
消息内容不能为空 消息内容不能为空
父节点不存在 父节点不存在
@ -61,16 +66,21 @@ XML注释文件不存在
目标设备不能为空 目标设备不能为空
短信验证请求不能为空 短信验证请求不能为空
站内信不存在 站内信不存在
站内信状态不正确
站内信类型不正确
签名缺失 签名缺失
网络地址不正确 网络地址不正确
菜单名称不能为空 菜单名称不能为空
菜单标题不能为空 菜单标题不能为空
菜单类型不正确
菜单编号不能为空 菜单编号不能为空
角色不存在 角色不存在
角色名称不能为空 角色名称不能为空
角色数据范围不正确
角色编号不能为空 角色编号不能为空
角色编号列表不能为空 角色编号列表不能为空
设备类型不能为空 设备类型不能为空
证件类型不正确
该角色下存在用户 该角色下存在用户
该部门下存在子部门 该部门下存在子部门
该部门下存在用户 该部门下存在用户
@ -90,4 +100,6 @@ XML注释文件不存在
验证数据不能为空 验证数据不能为空
验证码不正确 验证码不正确
验证码不能为空 验证码不能为空
验证码目标设备类型不正确
验证码类型不正确
验证码类型不能为空 验证码类型不能为空

View File

@ -10,7 +10,7 @@ public interface IService
/// <summary> /// <summary>
/// 服务编号 /// 服务编号
/// </summary> /// </summary>
Guid ServiceId { get; set; } Guid ServiceId { get; init; }
/// <summary> /// <summary>
/// 上下文用户令牌 /// 上下文用户令牌

View File

@ -34,7 +34,7 @@ public abstract class ServiceBase : IScoped, IService
} }
/// <inheritdoc /> /// <inheritdoc />
public Guid ServiceId { get; set; } public Guid ServiceId { get; init; }
/// <inheritdoc /> /// <inheritdoc />
public ContextUserToken UserToken { get; set; } public ContextUserToken UserToken { get; set; }

View File

@ -52,7 +52,7 @@ public abstract class DistributedCache<TService> : CacheBase<IDistributedCache,
/// <summary> /// <summary>
/// 获取缓存键 /// 获取缓存键
/// </summary> /// </summary>
protected virtual string GetCacheKey(string id = "0", [CallerMemberName] string memberName = null) protected string GetCacheKey(string id = "0", [CallerMemberName] string memberName = null)
{ {
return $"{GetType().FullName}.{memberName}.{id}"; return $"{GetType().FullName}.{memberName}.{id}";
} }

View File

@ -13,5 +13,5 @@ public interface IFieldCreatedUser
/// <summary> /// <summary>
/// 创建者用户名 /// 创建者用户名
/// </summary> /// </summary>
string CreatedUserName { get; set; } string CreatedUserName { get; init; }
} }

View File

@ -26,7 +26,7 @@ public abstract record ImmutableEntity<T> : LiteImmutableEntity<T>, IFieldCreate
/// <inheritdoc cref="IFieldCreatedUser.CreatedUserName" /> /// <inheritdoc cref="IFieldCreatedUser.CreatedUserName" />
[JsonIgnore] [JsonIgnore]
[Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_31, CanUpdate = false, Position = -1)] [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_31, CanUpdate = false, Position = -1)]
public virtual string CreatedUserName { get; set; } public virtual string CreatedUserName { get; init; }
/// <inheritdoc cref="IFieldPrimary{T}.Id" /> /// <inheritdoc cref="IFieldPrimary{T}.Id" />
[Column(IsIdentity = false, IsPrimary = true, Position = 1)] [Column(IsIdentity = false, IsPrimary = true, Position = 1)]

View File

@ -25,7 +25,7 @@ public abstract record VersionEntity<T> : LiteVersionEntity<T>, IFieldModifiedUs
/// <inheritdoc /> /// <inheritdoc />
[JsonIgnore] [JsonIgnore]
[Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_31, CanUpdate = false, Position = -1)] [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_31, CanUpdate = false, Position = -1)]
public string CreatedUserName { get; set; } public string CreatedUserName { get; init; }
/// <inheritdoc cref="IFieldPrimary{T}.Id" /> /// <inheritdoc cref="IFieldPrimary{T}.Id" />
[Column(IsIdentity = false, IsPrimary = true, Position = 1)] [Column(IsIdentity = false, IsPrimary = true, Position = 1)]

View File

@ -21,7 +21,7 @@ public record Sys_Config : VersionEntity, IFieldEnabled
/// </summary> /// </summary>
[JsonIgnore] [JsonIgnore]
[Column] [Column]
public virtual bool UserRegisterConfirm { get; set; } public virtual bool UserRegisterConfirm { get; init; }
/// <summary> /// <summary>
/// 用户注册默认部门 /// 用户注册默认部门

View File

@ -15,21 +15,21 @@ public record Sys_JobRecord : LiteImmutableEntity
/// </summary> /// </summary>
[Column] [Column]
[JsonIgnore] [JsonIgnore]
public virtual long Duration { get; init; } public long Duration { get; init; }
/// <summary> /// <summary>
/// 请求方法 /// 请求方法
/// </summary> /// </summary>
[JsonIgnore] [JsonIgnore]
[Column] [Column]
public virtual HttpMethods HttpMethod { get; init; } public HttpMethods HttpMethod { get; init; }
/// <summary> /// <summary>
/// HTTP 状态码 /// HTTP 状态码
/// </summary> /// </summary>
[Column] [Column]
[JsonIgnore] [JsonIgnore]
public virtual HttpStatusCode HttpStatusCode { get; init; } public HttpStatusCode HttpStatusCode { get; init; }
/// <summary> /// <summary>
/// 作业编号 /// 作业编号
@ -43,40 +43,40 @@ public record Sys_JobRecord : LiteImmutableEntity
/// </summary> /// </summary>
[Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)] [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)]
[JsonIgnore] [JsonIgnore]
public virtual string RequestBody { get; init; } public string RequestBody { get; init; }
/// <summary> /// <summary>
/// 请求头 /// 请求头
/// </summary> /// </summary>
[Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)] [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)]
[JsonIgnore] [JsonIgnore]
public virtual string RequestHeader { get; init; } public string RequestHeader { get; init; }
/// <summary> /// <summary>
/// 请求的网络地址 /// 请求的网络地址
/// </summary> /// </summary>
[Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_127)] [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_127)]
[JsonIgnore] [JsonIgnore]
public virtual string RequestUrl { get; init; } public string RequestUrl { get; init; }
/// <summary> /// <summary>
/// 响应体 /// 响应体
/// </summary> /// </summary>
[Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)] [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)]
[JsonIgnore] [JsonIgnore]
public virtual string ResponseBody { get; init; } public string ResponseBody { get; init; }
/// <summary> /// <summary>
/// 响应头 /// 响应头
/// </summary> /// </summary>
[Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)] [Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)]
[JsonIgnore] [JsonIgnore]
public virtual string ResponseHeader { get; init; } public string ResponseHeader { get; init; }
/// <summary> /// <summary>
/// 执行时间编号 /// 执行时间编号
/// </summary> /// </summary>
[Column] [Column]
[JsonIgnore] [JsonIgnore]
public long TimeId { get; set; } public long TimeId { get; init; }
} }

View File

@ -23,21 +23,21 @@ public record Sys_SiteMsg : VersionEntity, IRegister, IFieldSummary
/// </summary> /// </summary>
[JsonIgnore] [JsonIgnore]
[Navigate(nameof(CreatedUserId))] [Navigate(nameof(CreatedUserId))]
public virtual Sys_User Creator { get; init; } public Sys_User Creator { get; init; }
/// <summary> /// <summary>
/// 消息-部门映射 /// 消息-部门映射
/// </summary> /// </summary>
[JsonIgnore] [JsonIgnore]
[Navigate(ManyToMany = typeof(Sys_SiteMsgDept))] [Navigate(ManyToMany = typeof(Sys_SiteMsgDept))]
public virtual ICollection<Sys_Dept> Depts { get; init; } public ICollection<Sys_Dept> Depts { get; init; }
/// <summary> /// <summary>
/// 消息-标记映射 /// 消息-标记映射
/// </summary> /// </summary>
[JsonIgnore] [JsonIgnore]
[Navigate(nameof(Sys_SiteMsgFlag.SiteMsgId))] [Navigate(nameof(Sys_SiteMsgFlag.SiteMsgId))]
public ICollection<Sys_SiteMsgFlag> Flags { get; set; } public ICollection<Sys_SiteMsgFlag> Flags { get; init; }
/// <summary> /// <summary>
/// 消息类型 /// 消息类型
@ -50,7 +50,7 @@ public record Sys_SiteMsg : VersionEntity, IRegister, IFieldSummary
/// </summary> /// </summary>
[JsonIgnore] [JsonIgnore]
[Navigate(ManyToMany = typeof(Sys_SiteMsgRole))] [Navigate(ManyToMany = typeof(Sys_SiteMsgRole))]
public virtual ICollection<Sys_Role> Roles { get; init; } public ICollection<Sys_Role> Roles { get; init; }
/// <summary> /// <summary>
/// 消息摘要 /// 消息摘要
@ -71,7 +71,7 @@ public record Sys_SiteMsg : VersionEntity, IRegister, IFieldSummary
/// </summary> /// </summary>
[JsonIgnore] [JsonIgnore]
[Navigate(ManyToMany = typeof(Sys_SiteMsgUser))] [Navigate(ManyToMany = typeof(Sys_SiteMsgUser))]
public virtual ICollection<Sys_User> Users { get; init; } public ICollection<Sys_User> Users { get; init; }
/// <inheritdoc /> /// <inheritdoc />
public void Register(TypeAdapterConfig config) public void Register(TypeAdapterConfig config)

View File

@ -20,7 +20,7 @@ public record Sys_SiteMsgDept : ImmutableEntity
/// </summary> /// </summary>
[JsonIgnore] [JsonIgnore]
[Column] [Column]
public virtual long DeptId { get; init; } public long DeptId { get; init; }
/// <summary> /// <summary>
/// 关联的站内信 /// 关联的站内信
@ -33,5 +33,5 @@ public record Sys_SiteMsgDept : ImmutableEntity
/// </summary> /// </summary>
[JsonIgnore] [JsonIgnore]
[Column] [Column]
public virtual long SiteMsgId { get; init; } public long SiteMsgId { get; init; }
} }

View File

@ -14,17 +14,17 @@ public record Sys_SiteMsgFlag : MutableEntity
/// 站内信编号 /// 站内信编号
/// </summary> /// </summary>
[JsonIgnore] [JsonIgnore]
public virtual long SiteMsgId { get; set; } public virtual long SiteMsgId { get; init; }
/// <summary> /// <summary>
/// 用户编号 /// 用户编号
/// </summary> /// </summary>
[JsonIgnore] [JsonIgnore]
public virtual long UserId { get; init; } public long UserId { get; init; }
/// <summary> /// <summary>
/// 用户站内信状态 /// 用户站内信状态
/// </summary> /// </summary>
[JsonIgnore] [JsonIgnore]
public virtual UserSiteMsgStatues UserSiteMsgStatus { get; set; } public virtual UserSiteMsgStatues UserSiteMsgStatus { get; init; }
} }

View File

@ -20,7 +20,7 @@ public record Sys_SiteMsgRole : ImmutableEntity
/// </summary> /// </summary>
[JsonIgnore] [JsonIgnore]
[Column] [Column]
public virtual long RoleId { get; init; } public long RoleId { get; init; }
/// <summary> /// <summary>
/// 关联的站内信 /// 关联的站内信
@ -33,5 +33,5 @@ public record Sys_SiteMsgRole : ImmutableEntity
/// </summary> /// </summary>
[JsonIgnore] [JsonIgnore]
[Column] [Column]
public virtual long SiteMsgId { get; init; } public long SiteMsgId { get; init; }
} }

View File

@ -20,7 +20,7 @@ public record Sys_SiteMsgUser : ImmutableEntity
/// </summary> /// </summary>
[JsonIgnore] [JsonIgnore]
[Column] [Column]
public virtual long SiteMsgId { get; init; } public long SiteMsgId { get; init; }
/// <summary> /// <summary>
/// 关联的用户 /// 关联的用户
@ -33,5 +33,5 @@ public record Sys_SiteMsgUser : ImmutableEntity
/// </summary> /// </summary>
[JsonIgnore] [JsonIgnore]
[Column] [Column]
public virtual long UserId { get; init; } public long UserId { get; init; }
} }

View File

@ -10,27 +10,27 @@ public record DynamicFilterInfo : DataAbstraction
/// <summary> /// <summary>
/// 字段名 /// 字段名
/// </summary> /// </summary>
public string Field { get; set; } public string Field { get; init; }
/// <summary> /// <summary>
/// 子过滤条件 /// 子过滤条件
/// </summary> /// </summary>
public List<DynamicFilterInfo> Filters { get; set; } public List<DynamicFilterInfo> Filters { get; init; }
/// <summary> /// <summary>
/// 子过滤条件逻辑关系 /// 子过滤条件逻辑关系
/// </summary> /// </summary>
public DynamicFilterLogics Logic { get; set; } public DynamicFilterLogics Logic { get; init; }
/// <summary> /// <summary>
/// 操作符 /// 操作符
/// </summary> /// </summary>
public DynamicFilterOperators Operator { get; set; } public DynamicFilterOperators Operator { get; init; }
/// <summary> /// <summary>
/// 值 /// 值
/// </summary> /// </summary>
public object Value { get; set; } public object Value { get; init; }
/// <summary> /// <summary>
/// 隐式转换为 FreeSql 的 DynamicFilterInfo 对象 /// 隐式转换为 FreeSql 的 DynamicFilterInfo 对象

View File

@ -25,7 +25,7 @@ public record QueryReq<T> : DataAbstraction
/// <summary> /// <summary>
/// 查询关键字 /// 查询关键字
/// </summary> /// </summary>
public string Keywords { get; set; } public string Keywords { get; init; }
/// <summary> /// <summary>
/// 排序方式 /// 排序方式

View File

@ -19,5 +19,5 @@ public record RestfulInfo<T> : DataAbstraction
/// <summary> /// <summary>
/// 消息 /// 消息
/// </summary> /// </summary>
public virtual object Msg { get; init; } public object Msg { get; init; }
} }

View File

@ -14,7 +14,7 @@ public record CreateConfigReq : Sys_Config
/// <inheritdoc cref="Sys_Config.UserRegisterConfirm" /> /// <inheritdoc cref="Sys_Config.UserRegisterConfirm" />
[JsonIgnore(Condition = JsonIgnoreCondition.Never)] [JsonIgnore(Condition = JsonIgnoreCondition.Never)]
public override bool UserRegisterConfirm { get; set; } public override bool UserRegisterConfirm { get; init; }
/// <inheritdoc cref="Sys_Config.UserRegisterDeptId" /> /// <inheritdoc cref="Sys_Config.UserRegisterDeptId" />
[JsonIgnore(Condition = JsonIgnoreCondition.Never)] [JsonIgnore(Condition = JsonIgnoreCondition.Never)]

View File

@ -20,7 +20,7 @@ public sealed record QueryConfigRsp : Sys_Config
/// <inheritdoc cref="Sys_Config.UserRegisterConfirm" /> /// <inheritdoc cref="Sys_Config.UserRegisterConfirm" />
[JsonIgnore(Condition = JsonIgnoreCondition.Never)] [JsonIgnore(Condition = JsonIgnoreCondition.Never)]
public override bool UserRegisterConfirm { get; set; } public override bool UserRegisterConfirm { get; init; }
/// <inheritdoc cref="Sys_Config.UserRegisterDept" /> /// <inheritdoc cref="Sys_Config.UserRegisterDept" />
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]

View File

@ -3,4 +3,4 @@ namespace NetAdmin.Domain.Dto.Sys.JobRecord;
/// <summary> /// <summary>
/// 请求:更新计划作业执行记录 /// 请求:更新计划作业执行记录
/// </summary> /// </summary>
public sealed record UpdateJobRecordReq : CreateJobRecordReq { } public sealed record UpdateJobRecordReq : CreateJobRecordReq;

View File

@ -66,6 +66,7 @@ public sealed record MetaInfo : DataAbstraction
/// <summary> /// <summary>
/// 类型 /// 类型
/// </summary> /// </summary>
[EnumDataType(typeof(MenuTypes))] [EnumDataType(typeof(MenuTypes), ErrorMessageResourceType = typeof(Ln)
, ErrorMessageResourceName = nameof(Ln.))]
public MenuTypes Type { get; init; } public MenuTypes Type { get; init; }
} }

View File

@ -37,7 +37,7 @@ public sealed record QueryRequestLogRsp : Sys_RequestLog, IRegister
/// <inheritdoc cref="IFieldCreatedUser.CreatedUserName" /> /// <inheritdoc cref="IFieldCreatedUser.CreatedUserName" />
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public override string CreatedUserName { get; set; } public override string CreatedUserName { get; init; }
/// <inheritdoc cref="Sys_RequestLog.Duration" /> /// <inheritdoc cref="Sys_RequestLog.Duration" />
[JsonIgnore(Condition = JsonIgnoreCondition.Never)] [JsonIgnore(Condition = JsonIgnoreCondition.Never)]
@ -102,6 +102,6 @@ public sealed record QueryRequestLogRsp : Sys_RequestLog, IRegister
/// <inheritdoc /> /// <inheritdoc />
public void Register(TypeAdapterConfig config) public void Register(TypeAdapterConfig config)
{ {
_ = config.ForType<Sys_RequestLog, QueryRequestLogRsp>().Map(dest => dest.ApiSummary, src => src.Api.Summary); _ = config.ForType<Sys_RequestLog, QueryRequestLogRsp>().Map(d => d.ApiSummary, s => s.Api.Summary);
} }
} }

View File

@ -16,7 +16,8 @@ public record CreateRoleReq : Sys_Role
public IReadOnlyCollection<string> ApiIds { get; init; } public IReadOnlyCollection<string> ApiIds { get; init; }
/// <inheritdoc cref="Sys_Role.DataScope" /> /// <inheritdoc cref="Sys_Role.DataScope" />
[EnumDataType(typeof(DataScopes))] [EnumDataType(typeof(DataScopes), ErrorMessageResourceType = typeof(Ln)
, ErrorMessageResourceName = nameof(Ln.))]
public override DataScopes DataScope { get; init; } = DataScopes.All; public override DataScopes DataScope { get; init; } = DataScopes.All;
/// <summary> /// <summary>

View File

@ -22,7 +22,8 @@ public record CreateSiteMsgReq : Sys_SiteMsg
/// <inheritdoc cref="Sys_SiteMsg.MsgType" /> /// <inheritdoc cref="Sys_SiteMsg.MsgType" />
[JsonIgnore(Condition = JsonIgnoreCondition.Never)] [JsonIgnore(Condition = JsonIgnoreCondition.Never)]
[EnumDataType(typeof(SiteMsgTypes))] [EnumDataType(typeof(SiteMsgTypes), ErrorMessageResourceType = typeof(Ln)
, ErrorMessageResourceName = nameof(Ln.))]
public override SiteMsgTypes MsgType { get; init; } public override SiteMsgTypes MsgType { get; init; }
/// <summary> /// <summary>

View File

@ -40,7 +40,7 @@ public sealed record QuerySiteMsgRsp : Sys_SiteMsg
/// <summary> /// <summary>
/// 我的标记 /// 我的标记
/// </summary> /// </summary>
public QuerySiteMsgFlagRsp MyFlags { get; set; } public QuerySiteMsgFlagRsp MyFlags { get; init; }
/// <inheritdoc cref="Sys_SiteMsg.Roles" /> /// <inheritdoc cref="Sys_SiteMsg.Roles" />
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]

View File

@ -10,10 +10,11 @@ public record CreateSiteMsgFlagReq : Sys_SiteMsgFlag
{ {
/// <inheritdoc cref="Sys_SiteMsgFlag.SiteMsgId" /> /// <inheritdoc cref="Sys_SiteMsgFlag.SiteMsgId" />
[JsonIgnore(Condition = JsonIgnoreCondition.Never)] [JsonIgnore(Condition = JsonIgnoreCondition.Never)]
public override long SiteMsgId { get; set; } public override long SiteMsgId { get; init; }
/// <inheritdoc cref="Sys_SiteMsgFlag.UserSiteMsgStatus" /> /// <inheritdoc cref="Sys_SiteMsgFlag.UserSiteMsgStatus" />
[JsonIgnore(Condition = JsonIgnoreCondition.Never)] [JsonIgnore(Condition = JsonIgnoreCondition.Never)]
[EnumDataType(typeof(UserSiteMsgStatues))] [EnumDataType(typeof(UserSiteMsgStatues), ErrorMessageResourceType = typeof(Ln)
public override UserSiteMsgStatues UserSiteMsgStatus { get; set; } , ErrorMessageResourceName = nameof(Ln.))]
public override UserSiteMsgStatues UserSiteMsgStatus { get; init; }
} }

View File

@ -15,5 +15,5 @@ public sealed record QuerySiteMsgFlagRsp : Sys_SiteMsgFlag
/// <inheritdoc /> /// <inheritdoc />
[JsonIgnore(Condition = JsonIgnoreCondition.Never)] [JsonIgnore(Condition = JsonIgnoreCondition.Never)]
public override UserSiteMsgStatues UserSiteMsgStatus { get; set; } public override UserSiteMsgStatues UserSiteMsgStatus { get; init; }
} }

View File

@ -13,5 +13,5 @@ public record GetModulesRsp : DataAbstraction
/// <summary> /// <summary>
/// 模块版本 /// 模块版本
/// </summary> /// </summary>
public string Version { get; set; } public string Version { get; init; }
} }

View File

@ -33,5 +33,5 @@ public record RegisterUserReq : Sys_User
/// 短信验证请求 /// 短信验证请求
/// </summary> /// </summary>
[Required(ErrorMessageResourceType = typeof(Ln), ErrorMessageResourceName = nameof(Ln.短信验证请求不能为空))] [Required(ErrorMessageResourceType = typeof(Ln), ErrorMessageResourceName = nameof(Ln.短信验证请求不能为空))]
public VerifySmsCodeReq VerifySmsCodeReq { get; set; } public VerifySmsCodeReq VerifySmsCodeReq { get; init; }
} }

View File

@ -19,7 +19,8 @@ public record CreateUserProfileReq : Sys_UserProfile
public override string CertificateNumber { get; init; } public override string CertificateNumber { get; init; }
/// <inheritdoc cref="Sys_UserProfile.CertificateType" /> /// <inheritdoc cref="Sys_UserProfile.CertificateType" />
[EnumDataType(typeof(CertificateTypes))] [EnumDataType(typeof(CertificateTypes), ErrorMessageResourceType = typeof(Ln)
, ErrorMessageResourceName = nameof(Ln.))]
[JsonIgnore(Condition = JsonIgnoreCondition.Never)] [JsonIgnore(Condition = JsonIgnoreCondition.Never)]
public override CertificateTypes? CertificateType { get; init; } public override CertificateTypes? CertificateType { get; init; }
@ -40,7 +41,8 @@ public record CreateUserProfileReq : Sys_UserProfile
public override string CompanyTelephone { get; init; } public override string CompanyTelephone { get; init; }
/// <inheritdoc cref="Sys_UserProfile.Education" /> /// <inheritdoc cref="Sys_UserProfile.Education" />
[EnumDataType(typeof(Educations))] [EnumDataType(typeof(Educations), ErrorMessageResourceType = typeof(Ln)
, ErrorMessageResourceName = nameof(Ln.))]
[JsonIgnore(Condition = JsonIgnoreCondition.Never)] [JsonIgnore(Condition = JsonIgnoreCondition.Never)]
public override Educations? Education { get; init; } public override Educations? Education { get; init; }
@ -82,12 +84,13 @@ public record CreateUserProfileReq : Sys_UserProfile
public override string HomeTelephone { get; init; } public override string HomeTelephone { get; init; }
/// <inheritdoc cref="Sys_UserProfile.MarriageStatus" /> /// <inheritdoc cref="Sys_UserProfile.MarriageStatus" />
[EnumDataType(typeof(MarriageStatues))] [EnumDataType(typeof(MarriageStatues), ErrorMessageResourceType = typeof(Ln)
, ErrorMessageResourceName = nameof(Ln.))]
[JsonIgnore(Condition = JsonIgnoreCondition.Never)] [JsonIgnore(Condition = JsonIgnoreCondition.Never)]
public override MarriageStatues? MarriageStatus { get; init; } public override MarriageStatues? MarriageStatus { get; init; }
/// <inheritdoc cref="Sys_UserProfile.Nation" /> /// <inheritdoc cref="Sys_UserProfile.Nation" />
[EnumDataType(typeof(Nations))] [EnumDataType(typeof(Nations), ErrorMessageResourceType = typeof(Ln), ErrorMessageResourceName = nameof(Ln.民族不正确))]
[JsonIgnore(Condition = JsonIgnoreCondition.Never)] [JsonIgnore(Condition = JsonIgnoreCondition.Never)]
public override Nations? Nation { get; init; } public override Nations? Nation { get; init; }
@ -96,7 +99,8 @@ public record CreateUserProfileReq : Sys_UserProfile
/// <inheritdoc cref="Sys_UserProfile.PoliticalStatus" /> /// <inheritdoc cref="Sys_UserProfile.PoliticalStatus" />
[JsonIgnore(Condition = JsonIgnoreCondition.Never)] [JsonIgnore(Condition = JsonIgnoreCondition.Never)]
[EnumDataType(typeof(PoliticalStatues))] [EnumDataType(typeof(PoliticalStatues), ErrorMessageResourceType = typeof(Ln)
, ErrorMessageResourceName = nameof(Ln.))]
public override PoliticalStatues? PoliticalStatus { get; init; } public override PoliticalStatues? PoliticalStatus { get; init; }
/// <inheritdoc cref="Sys_UserProfile.Profession" /> /// <inheritdoc cref="Sys_UserProfile.Profession" />
@ -108,7 +112,7 @@ public record CreateUserProfileReq : Sys_UserProfile
public override string RealName { get; init; } public override string RealName { get; init; }
/// <inheritdoc cref="Sys_UserProfile.Sex" /> /// <inheritdoc cref="Sys_UserProfile.Sex" />
[EnumDataType(typeof(Sexes))] [EnumDataType(typeof(Sexes), ErrorMessageResourceType = typeof(Ln), ErrorMessageResourceName = nameof(Ln.性别不正确))]
[JsonIgnore(Condition = JsonIgnoreCondition.Never)] [JsonIgnore(Condition = JsonIgnoreCondition.Never)]
public override Sexes? Sex { get; init; } public override Sexes? Sex { get; init; }
} }

View File

@ -18,7 +18,8 @@ public sealed record SendVerifyCodeReq : Sys_VerifyCode, IValidatableObject
/// <inheritdoc cref="Sys_VerifyCode.DeviceType" /> /// <inheritdoc cref="Sys_VerifyCode.DeviceType" />
[Required(ErrorMessageResourceType = typeof(Ln), ErrorMessageResourceName = nameof(Ln.设备类型不能为空))] [Required(ErrorMessageResourceType = typeof(Ln), ErrorMessageResourceName = nameof(Ln.设备类型不能为空))]
[JsonIgnore(Condition = JsonIgnoreCondition.Never)] [JsonIgnore(Condition = JsonIgnoreCondition.Never)]
[EnumDataType(typeof(VerifyCodeDeviceTypes))] [EnumDataType(typeof(VerifyCodeDeviceTypes), ErrorMessageResourceType = typeof(Ln)
, ErrorMessageResourceName = nameof(Ln.))]
public override VerifyCodeDeviceTypes DeviceType { get; init; } public override VerifyCodeDeviceTypes DeviceType { get; init; }
/// <inheritdoc cref="Sys_VerifyCode.Status" /> /// <inheritdoc cref="Sys_VerifyCode.Status" />
@ -27,7 +28,8 @@ public sealed record SendVerifyCodeReq : Sys_VerifyCode, IValidatableObject
/// <inheritdoc cref="Sys_VerifyCode.Type" /> /// <inheritdoc cref="Sys_VerifyCode.Type" />
[Required(ErrorMessageResourceType = typeof(Ln), ErrorMessageResourceName = nameof(Ln.验证码类型不能为空))] [Required(ErrorMessageResourceType = typeof(Ln), ErrorMessageResourceName = nameof(Ln.验证码类型不能为空))]
[JsonIgnore(Condition = JsonIgnoreCondition.Never)] [JsonIgnore(Condition = JsonIgnoreCondition.Never)]
[EnumDataType(typeof(VerifyCodeTypes))] [EnumDataType(typeof(VerifyCodeTypes), ErrorMessageResourceType = typeof(Ln)
, ErrorMessageResourceName = nameof(Ln.))]
public override VerifyCodeTypes Type { get; init; } public override VerifyCodeTypes Type { get; init; }
/// <summary> /// <summary>

View File

@ -54,7 +54,7 @@ public abstract class WorkBase<TLogger>
/// 通用工作流 /// 通用工作流
/// </summary> /// </summary>
/// <exception cref="NetAdminGetLockerException">加锁失败异常</exception> /// <exception cref="NetAdminGetLockerException">加锁失败异常</exception>
protected virtual async ValueTask WorkflowAsync(bool singleInstance, CancellationToken cancelToken) protected async ValueTask WorkflowAsync(bool singleInstance, CancellationToken cancelToken)
{ {
if (singleInstance) { if (singleInstance) {
// 加锁 // 加锁

View File

@ -13,10 +13,10 @@ public sealed record InstanceNode
/// <summary> /// <summary>
/// 数据库 /// 数据库
/// </summary> /// </summary>
public int Database { get; set; } public int Database { get; init; }
/// <summary> /// <summary>
/// 实例名称 /// 实例名称
/// </summary> /// </summary>
public string Name { get; set; } public string Name { get; init; }
} }

View File

@ -30,5 +30,5 @@ public abstract class NetAdminException : Exception
/// <summary> /// <summary>
/// 错误码 /// 错误码
/// </summary> /// </summary>
public ErrorCodes Code { get; set; } public ErrorCodes Code { get; init; }
} }

View File

@ -1,10 +1,13 @@
{ {
"tabWidth": 4, "attributeGroups": ["^v-", "$DEFAULT"],
"useTabs": false, "attributeSort": "ASC",
"bracketSameLine": true,
"endOfLine": "auto",
"plugins": ["prettier-plugin-organize-attributes"],
"printWidth": 150,
"semi": false, "semi": false,
"singleQuote": true, "singleQuote": true,
"tabWidth": 4,
"trailingComma": "all", "trailingComma": "all",
"bracketSameLine": true, "useTabs": false
"printWidth": 150,
"endOfLine": "auto"
} }

View File

@ -99,7 +99,7 @@
<noscript> <noscript>
<strong>We're sorry but NetAdmin doesn't work properly without JavaScript enabled. Please enable it to continue.</strong> <strong>We're sorry but NetAdmin doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
</noscript> </noscript>
<div id="app" class="aminui"> <div class="aminui" id="app">
<div class="app-loading"> <div class="app-loading">
<div class="app-loading__logo"> <div class="app-loading__logo">
<img alt="" src="/src/assets/img/logo.png" /> <img alt="" src="/src/assets/img/logo.png" />

View File

@ -36,6 +36,7 @@
"devDependencies": { "devDependencies": {
"@vitejs/plugin-vue": "^5.0.3", "@vitejs/plugin-vue": "^5.0.3",
"prettier": "^3.2.4", "prettier": "^3.2.4",
"prettier-plugin-organize-attributes": "^1.0.0",
"sass": "^1.70.0", "sass": "^1.70.0",
"terser": "^5.27.0", "terser": "^5.27.0",
"vite": "^5.0.12" "vite": "^5.0.12"

View File

@ -1,5 +1,5 @@
<template> <template>
<svg t="1700643247048" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5913" width="128" height="128"> <svg class="icon" height="128" p-id="5913" t="1700643247048" version="1.1" viewBox="0 0 1024 1024" width="128" xmlns="http://www.w3.org/2000/svg">
<path <path
d="M957.6 872l-432-736c-3.2-5.6-8.8-8-13.6-8s-10.4 2.4-13.6 8l-432 736c-6.4 10.4 1.6 24 13.6 24h864c12 0 20-13.6 13.6-24z m-793.6-40L512 239.2l348 592.8h-696zM480 704h64v64h-64v-64z m0-320h64v256h-64V384z" d="M957.6 872l-432-736c-3.2-5.6-8.8-8-13.6-8s-10.4 2.4-13.6 8l-432 736c-6.4 10.4 1.6 24 13.6 24h864c12 0 20-13.6 13.6-24z m-793.6-40L512 239.2l348 592.8h-696zM480 704h64v64h-64v-64z m0-320h64v256h-64V384z"
p-id="5914"></path> p-id="5914"></path>

View File

@ -1,7 +1,25 @@
<template> <template>
<svg class="icon" height="300" p-id="9845" t="1678846153777" version="1.1" viewBox="0 0 1024 1024" width="300" xmlns="http://www.w3.org/2000/svg"> <svg
class="icon"
height="128"
p-id="11193"
t="1706508305545"
version="1.1"
viewBox="0 0 1149 1024"
width="128"
xmlns="http://www.w3.org/2000/svg">
<path <path
d="M864 64H160a96 96 0 0 0-96 96v576a96 96 0 0 0 96 96h320v64H256a32 32 0 0 0 0 64h512a32 32 0 0 0 0-64h-224v-64h320a96 96 0 0 0 96-96V160a96 96 0 0 0-96-96zM160 128h704a32 32 0 0 1 32 32v448H128V160a32 32 0 0 1 32-32z m736 608a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32v-64h768v64z" d="M1061.585878 1024H88.369851A88.369851 88.369851 0 0 1 0 935.630149V88.369851A88.369851 88.369851 0 0 1 88.369851 0H1061.585878a88.369851 88.369851 0 0 1 88.369852 88.369851v847.260298A88.369851 88.369851 0 0 1 1061.585878 1024zM88.369851 57.38302A30.986831 30.986831 0 0 0 57.38302 88.369851v847.260298a30.986831 30.986831 0 0 0 30.986831 30.986831H1061.585878a30.986831 30.986831 0 0 0 30.986831-30.986831V88.369851A30.986831 30.986831 0 0 0 1061.585878 57.38302z"
p-id="9846"></path> p-id="11194"></path>
<path d="M28.69151 333.682264h1091.711964v57.38302H28.69151zM28.69151 655.027178h1091.711964v57.383021H28.69151z" p-id="11195"></path>
<path
d="M104.437097 168.70608m28.69151 0l82.63155 0q28.69151 0 28.69151 28.69151l0 0q0 28.69151-28.69151 28.691511l-82.63155 0q-28.69151 0-28.69151-28.691511l0 0q0-28.69151 28.69151-28.69151Z"
p-id="11196"></path>
<path
d="M104.437097 494.354721m28.69151 0l82.63155 0q28.69151 0 28.69151 28.69151l0 0q0 28.69151-28.69151 28.691511l-82.63155 0q-28.69151 0-28.69151-28.691511l0 0q0-28.69151 28.69151-28.69151Z"
p-id="11197"></path>
<path
d="M104.437097 815.986551m28.69151 0l82.63155 0q28.69151 0 28.69151 28.69151l0 0q0 28.69151-28.69151 28.69151l-82.63155 0q-28.69151 0-28.69151-28.69151l0 0q0-28.69151 28.69151-28.69151Z"
p-id="11198"></path>
</svg> </svg>
</template> </template>

View File

@ -1,5 +1,5 @@
<template> <template>
<svg t="1695638866565" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4181" width="128" height="128"> <svg class="icon" height="128" p-id="4181" t="1695638866565" version="1.1" viewBox="0 0 1024 1024" width="128" xmlns="http://www.w3.org/2000/svg">
<path <path
d="M512 97.52381c228.912762 0 414.47619 185.563429 414.47619 414.47619s-185.563429 414.47619-414.47619 414.47619S97.52381 740.912762 97.52381 512 283.087238 97.52381 512 97.52381z m129.29219 233.447619l-129.267809 129.29219-129.316571-129.29219-51.736381 51.736381 129.316571 129.267809-129.316571 129.316571 51.736381 51.736381L512 563.687619l129.29219 129.316571 51.736381-51.73638L563.687619 512l129.316571-129.29219-51.73638-51.736381z" d="M512 97.52381c228.912762 0 414.47619 185.563429 414.47619 414.47619s-185.563429 414.47619-414.47619 414.47619S97.52381 740.912762 97.52381 512 283.087238 97.52381 512 97.52381z m129.29219 233.447619l-129.267809 129.29219-129.316571-129.29219-51.736381 51.736381 129.316571 129.267809-129.316571 129.316571 51.736381 51.736381L512 563.687619l129.29219 129.316571 51.736381-51.73638L563.687619 512l129.316571-129.29219-51.73638-51.736381z"
p-id="4182"></path> p-id="4182"></path>

View File

@ -1,5 +1,5 @@
<template> <template>
<svg t="1700287923195" class="icon" viewBox="0 0 1159 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="7208" width="128" height="128"> <svg class="icon" height="128" p-id="7208" t="1700287923195" version="1.1" viewBox="0 0 1159 1024" width="128" xmlns="http://www.w3.org/2000/svg">
<path <path
d="M375.432019 950.647918H139.942526a65.628219 65.628219 0 0 1-66.59334-63.697977V137.051024a64.663098 64.663098 0 0 1 66.59334-63.697977h669.793885a64.663098 64.663098 0 0 1 66.59334 63.697977V289.540122a38.604835 38.604835 0 0 0 0 14.476813l7.720967 11.58145a37.639714 37.639714 0 0 0 40.535076 7.720967l11.581451-7.720967A37.639714 37.639714 0 0 0 949.678937 289.540122V137.051024A138.977405 138.977405 0 0 0 809.736411 0.00386H139.942526A138.977405 138.977405 0 0 0 0 137.051024v749.898917a138.977405 138.977405 0 0 0 139.942526 137.047164h235.489493a38.604835 38.604835 0 0 0 26.058263-10.61633 37.639714 37.639714 0 0 0 0-52.116527 38.604835 38.604835 0 0 0-26.058263-10.61633zM691.026544 289.540122a39.569956 39.569956 0 0 0-36.674593-39.569956H216.187075a39.569956 39.569956 0 0 0-36.674593 39.569956 38.604835 38.604835 0 0 0 36.674593 38.604835h438.164876a38.604835 38.604835 0 0 0 36.674593-38.604835zM216.187075 482.564296a39.569956 39.569956 0 0 0 0 79.139911h289.536261a39.569956 39.569956 0 0 0 0-79.139911z m219.082438 226.803405H216.187075a40.535077 40.535077 0 0 0-36.674593 40.535076 39.569956 39.569956 0 0 0 36.674593 39.569956h219.082438a39.569956 39.569956 0 0 0 36.674593-39.569956 40.535077 40.535077 0 0 0-36.674593-40.535076zM1147.528716 868.612644L895.632168 428.517527a86.860878 86.860878 0 0 0-146.698372 0L497.037249 868.612644a80.105032 80.105032 0 0 0-14.476813 38.604835 84.930637 84.930637 0 0 0 11.58145 42.465319 96.512087 96.512087 0 0 0 30.883868 30.883867 85.895758 85.895758 0 0 0 43.430439 11.581451h502.827974a85.895758 85.895758 0 0 0 86.860878-84.930637 80.105032 80.105032 0 0 0-10.616329-38.604835zM801.050323 796.228579h-8.686088a8.686088 8.686088 0 0 1 0-6.755846v-173.721757a7.720967 7.720967 0 0 1 7.720967 0h39.569956a9.651209 9.651209 0 0 1 8.686088 0v171.791515H839.655158z m0 37.639714h44.39556a18.337297 18.337297 0 0 1 0 9.651209V868.612644a18.337297 18.337297 0 0 1 0 9.651209 11.58145 11.58145 0 0 1-8.686088 0h-36.674593a8.686088 8.686088 0 0 1-7.720967 0 18.337297 18.337297 0 0 1 0-9.651209v-21.232659a18.337297 18.337297 0 0 1 0-9.651208z" d="M375.432019 950.647918H139.942526a65.628219 65.628219 0 0 1-66.59334-63.697977V137.051024a64.663098 64.663098 0 0 1 66.59334-63.697977h669.793885a64.663098 64.663098 0 0 1 66.59334 63.697977V289.540122a38.604835 38.604835 0 0 0 0 14.476813l7.720967 11.58145a37.639714 37.639714 0 0 0 40.535076 7.720967l11.581451-7.720967A37.639714 37.639714 0 0 0 949.678937 289.540122V137.051024A138.977405 138.977405 0 0 0 809.736411 0.00386H139.942526A138.977405 138.977405 0 0 0 0 137.051024v749.898917a138.977405 138.977405 0 0 0 139.942526 137.047164h235.489493a38.604835 38.604835 0 0 0 26.058263-10.61633 37.639714 37.639714 0 0 0 0-52.116527 38.604835 38.604835 0 0 0-26.058263-10.61633zM691.026544 289.540122a39.569956 39.569956 0 0 0-36.674593-39.569956H216.187075a39.569956 39.569956 0 0 0-36.674593 39.569956 38.604835 38.604835 0 0 0 36.674593 38.604835h438.164876a38.604835 38.604835 0 0 0 36.674593-38.604835zM216.187075 482.564296a39.569956 39.569956 0 0 0 0 79.139911h289.536261a39.569956 39.569956 0 0 0 0-79.139911z m219.082438 226.803405H216.187075a40.535077 40.535077 0 0 0-36.674593 40.535076 39.569956 39.569956 0 0 0 36.674593 39.569956h219.082438a39.569956 39.569956 0 0 0 36.674593-39.569956 40.535077 40.535077 0 0 0-36.674593-40.535076zM1147.528716 868.612644L895.632168 428.517527a86.860878 86.860878 0 0 0-146.698372 0L497.037249 868.612644a80.105032 80.105032 0 0 0-14.476813 38.604835 84.930637 84.930637 0 0 0 11.58145 42.465319 96.512087 96.512087 0 0 0 30.883868 30.883867 85.895758 85.895758 0 0 0 43.430439 11.581451h502.827974a85.895758 85.895758 0 0 0 86.860878-84.930637 80.105032 80.105032 0 0 0-10.616329-38.604835zM801.050323 796.228579h-8.686088a8.686088 8.686088 0 0 1 0-6.755846v-173.721757a7.720967 7.720967 0 0 1 7.720967 0h39.569956a9.651209 9.651209 0 0 1 8.686088 0v171.791515H839.655158z m0 37.639714h44.39556a18.337297 18.337297 0 0 1 0 9.651209V868.612644a18.337297 18.337297 0 0 1 0 9.651209 11.58145 11.58145 0 0 1-8.686088 0h-36.674593a8.686088 8.686088 0 0 1-7.720967 0 18.337297 18.337297 0 0 1 0-9.651209v-21.232659a18.337297 18.337297 0 0 1 0-9.651208z"
p-id="7209"></path> p-id="7209"></path>

View File

@ -1,5 +1,5 @@
<template> <template>
<svg t="1700642583398" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="6047" width="128" height="128"> <svg class="icon" height="128" p-id="6047" t="1700642583398" version="1.1" viewBox="0 0 1024 1024" width="128" xmlns="http://www.w3.org/2000/svg">
<path <path
d="M830.4 513.6C786.4 469.6 729.6 448 672 448c-48.8 0-96.8 16-136.8 47.2L277.6 237.6 384 131.2l-29.6-29.6L224 184 128.8 88.8l-44 44 406.4 406.4c-64.8 88-56.8 212 22.4 291.2 44 44 100.8 65.6 158.4 65.6s114.4-21.6 158.4-65.6c87.2-87.2 87.2-229.6 0-316.8z m-45.6 271.2c-30.4 30.4-70.4 47.2-112.8 47.2-42.4 0-83.2-16.8-112.8-47.2-62.4-62.4-62.4-164 0-226.4C588.8 528.8 629.6 512 672 512s83.2 16.8 112.8 47.2c62.4 62.4 62.4 163.2 0 225.6z" d="M830.4 513.6C786.4 469.6 729.6 448 672 448c-48.8 0-96.8 16-136.8 47.2L277.6 237.6 384 131.2l-29.6-29.6L224 184 128.8 88.8l-44 44 406.4 406.4c-64.8 88-56.8 212 22.4 291.2 44 44 100.8 65.6 158.4 65.6s114.4-21.6 158.4-65.6c87.2-87.2 87.2-229.6 0-316.8z m-45.6 271.2c-30.4 30.4-70.4 47.2-112.8 47.2-42.4 0-83.2-16.8-112.8-47.2-62.4-62.4-62.4-164 0-226.4C588.8 528.8 629.6 512 672 512s83.2 16.8 112.8 47.2c62.4 62.4 62.4 163.2 0 225.6z"
p-id="6048"></path> p-id="6048"></path>

View File

@ -1,5 +1,5 @@
<template> <template>
<svg t="1700278692453" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="7645" width="128" height="128"> <svg class="icon" height="128" p-id="7645" t="1700278692453" version="1.1" viewBox="0 0 1024 1024" width="128" xmlns="http://www.w3.org/2000/svg">
<path <path
d="M341.764096 68.266667h682.666667v136.533333H341.764096zM341.764096 443.733333h682.666667v136.533334H341.764096zM341.764096 819.2h682.666667v136.533333H341.764096zM111.022763 223.914667h-32.085334V0h32.085334zM189.529429 445.098667a57.344 57.344 0 0 1-22.528 49.834666 80.554667 80.554667 0 0 1-50.517333 14.336H68.697429a43.690667 43.690667 0 0 0-29.354666 6.826667 43.690667 43.690667 0 0 0-6.826667 30.037333v32.085334h154.282667V614.4H0.430763V546.133333a61.44 61.44 0 0 1 68.266666-68.266666h47.786667c27.306667 0 40.96-10.24 40.96-32.085334a23.210667 23.210667 0 0 0-10.24-18.432 44.373333 44.373333 0 0 0-26.624-8.192H0.430763v-32.085333h120.149333a79.189333 79.189333 0 0 1 45.056 12.970667 52.565333 52.565333 0 0 1 23.893333 45.056zM186.798763 955.733333a58.709333 58.709333 0 0 1-22.528 49.834667 77.141333 77.141333 0 0 1-49.152 15.701333H7.257429v-32.085333h106.496c26.624 0 40.277333-10.922667 40.277334-33.450667s-15.018667-34.133333-44.373334-34.133333H8.622763v-32.085333h105.130666c25.941333 0 38.912-10.922667 38.912-32.085334s-12.970667-27.989333-37.546666-27.989333H0.430763v-32.085333h114.688a73.728 73.728 0 0 1 42.325333 10.922666 51.882667 51.882667 0 0 1 27.306667 49.152 58.026667 58.026667 0 0 1-21.845334 49.152 51.882667 51.882667 0 0 1 23.893334 49.152z" d="M341.764096 68.266667h682.666667v136.533333H341.764096zM341.764096 443.733333h682.666667v136.533334H341.764096zM341.764096 819.2h682.666667v136.533333H341.764096zM111.022763 223.914667h-32.085334V0h32.085334zM189.529429 445.098667a57.344 57.344 0 0 1-22.528 49.834666 80.554667 80.554667 0 0 1-50.517333 14.336H68.697429a43.690667 43.690667 0 0 0-29.354666 6.826667 43.690667 43.690667 0 0 0-6.826667 30.037333v32.085334h154.282667V614.4H0.430763V546.133333a61.44 61.44 0 0 1 68.266666-68.266666h47.786667c27.306667 0 40.96-10.24 40.96-32.085334a23.210667 23.210667 0 0 0-10.24-18.432 44.373333 44.373333 0 0 0-26.624-8.192H0.430763v-32.085333h120.149333a79.189333 79.189333 0 0 1 45.056 12.970667 52.565333 52.565333 0 0 1 23.893333 45.056zM186.798763 955.733333a58.709333 58.709333 0 0 1-22.528 49.834667 77.141333 77.141333 0 0 1-49.152 15.701333H7.257429v-32.085333h106.496c26.624 0 40.277333-10.922667 40.277334-33.450667s-15.018667-34.133333-44.373334-34.133333H8.622763v-32.085333h105.130666c25.941333 0 38.912-10.922667 38.912-32.085334s-12.970667-27.989333-37.546666-27.989333H0.430763v-32.085333h114.688a73.728 73.728 0 0 1 42.325333 10.922666 51.882667 51.882667 0 0 1 27.306667 49.152 58.026667 58.026667 0 0 1-21.845334 49.152 51.882667 51.882667 0 0 1 23.893334 49.152z"
p-id="7646"></path> p-id="7646"></path>

View File

@ -1,5 +1,5 @@
<template> <template>
<svg t="1700287773746" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5124" width="128" height="128"> <svg class="icon" height="128" p-id="5124" t="1700287773746" version="1.1" viewBox="0 0 1024 1024" width="128" xmlns="http://www.w3.org/2000/svg">
<path <path
d="M136.3 410.2h70v150.2h-70zM206.3 851.3V733.8h-70v117.5c0 40.7 31.5 73.9 70.2 73.9h206.1v-70H207.5c-0.5-0.6-1.2-1.9-1.2-3.9zM206.3 139c0-2 0.7-3.3 1.1-3.9h619.8c0.5 0.6 1.1 1.8 1.1 3.9v151.1h70V139c0-40.7-31.5-73.9-70.2-73.9H206.5c-38.7 0-70.2 33.1-70.2 73.9v97.9h70V139zM886.8 677.2c-20-20-43-35.9-68-47.2 19.2-22.2 30.9-51.2 30.9-82.8 0-69.9-56.8-126.7-126.7-126.7s-126.7 56.8-126.7 126.7c0 31.6 11.7 60.6 30.9 82.8-25 11.4-48 27.2-68 47.2-43.8 43.8-67.9 101.9-67.9 163.8 0 6.1 0.2 12.2 0.7 18.2l69.8-5.5c-0.3-4.2-0.5-8.5-0.5-12.7 0-89.1 72.5-161.6 161.6-161.6S884.6 751.9 884.6 841c0 4.3-0.2 8.6-0.5 12.7l69.8 5.5c0.5-6 0.7-12.1 0.7-18.2 0-61.9-24.1-120-67.8-163.8zM723 490.5c31.3 0 56.7 25.4 56.7 56.7s-25.4 56.7-56.7 56.7-56.7-25.4-56.7-56.7 25.4-56.7 56.7-56.7zM93.9 288.5h154.8v70H93.9zM93.9 612.1h154.8v70H93.9z" d="M136.3 410.2h70v150.2h-70zM206.3 851.3V733.8h-70v117.5c0 40.7 31.5 73.9 70.2 73.9h206.1v-70H207.5c-0.5-0.6-1.2-1.9-1.2-3.9zM206.3 139c0-2 0.7-3.3 1.1-3.9h619.8c0.5 0.6 1.1 1.8 1.1 3.9v151.1h70V139c0-40.7-31.5-73.9-70.2-73.9H206.5c-38.7 0-70.2 33.1-70.2 73.9v97.9h70V139zM886.8 677.2c-20-20-43-35.9-68-47.2 19.2-22.2 30.9-51.2 30.9-82.8 0-69.9-56.8-126.7-126.7-126.7s-126.7 56.8-126.7 126.7c0 31.6 11.7 60.6 30.9 82.8-25 11.4-48 27.2-68 47.2-43.8 43.8-67.9 101.9-67.9 163.8 0 6.1 0.2 12.2 0.7 18.2l69.8-5.5c-0.3-4.2-0.5-8.5-0.5-12.7 0-89.1 72.5-161.6 161.6-161.6S884.6 751.9 884.6 841c0 4.3-0.2 8.6-0.5 12.7l69.8 5.5c0.5-6 0.7-12.1 0.7-18.2 0-61.9-24.1-120-67.8-163.8zM723 490.5c31.3 0 56.7 25.4 56.7 56.7s-25.4 56.7-56.7 56.7-56.7-25.4-56.7-56.7 25.4-56.7 56.7-56.7zM93.9 288.5h154.8v70H93.9zM93.9 612.1h154.8v70H93.9z"
p-id="5125"></path> p-id="5125"></path>

View File

@ -1,5 +1,5 @@
<template> <template>
<svg t="1700643176982" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4094" width="128" height="128"> <svg class="icon" height="128" p-id="4094" t="1700643176982" version="1.1" viewBox="0 0 1024 1024" width="128" xmlns="http://www.w3.org/2000/svg">
<path <path
d="M532.168854 539.929096h1.786692c15.748682 0 28.607548-12.809747 28.67918-28.559453 0.071631-15.821337-12.738116-28.739555-28.67918-28.811186-15.748682 0-28.607548 12.809747-28.679179 28.702716-0.071631 15.246239 11.874445 27.805276 26.892487 28.667923z" d="M532.168854 539.929096h1.786692c15.748682 0 28.607548-12.809747 28.67918-28.559453 0.071631-15.821337-12.738116-28.739555-28.67918-28.811186-15.748682 0-28.607548 12.809747-28.679179 28.702716-0.071631 15.246239 11.874445 27.805276 26.892487 28.667923z"
p-id="4095"></path> p-id="4095"></path>

View File

@ -1,5 +1,5 @@
<template> <template>
<svg t="1700287474570" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4076" width="128" height="128"> <svg class="icon" height="128" p-id="4076" t="1700287474570" version="1.1" viewBox="0 0 1024 1024" width="128" xmlns="http://www.w3.org/2000/svg">
<path <path
d="M758.969877 1017.428352H58.739777a35.205133 35.205133 0 0 1-35.205134-35.205134V154.902586a35.205133 35.205133 0 0 1 35.205134-35.205133h700.2301a35.205133 35.205133 0 0 1 35.205134 35.205133v177.609898a35.205133 35.205133 0 0 1-70.410267 0V190.10772H93.94491v756.910365h629.819834V805.376099a35.205133 35.205133 0 0 1 70.410267 0V982.223218a35.205133 35.205133 0 0 1-35.205134 35.205134z" d="M758.969877 1017.428352H58.739777a35.205133 35.205133 0 0 1-35.205134-35.205134V154.902586a35.205133 35.205133 0 0 1 35.205134-35.205133h700.2301a35.205133 35.205133 0 0 1 35.205134 35.205133v177.609898a35.205133 35.205133 0 0 1-70.410267 0V190.10772H93.94491v756.910365h629.819834V805.376099a35.205133 35.205133 0 0 1 70.410267 0V982.223218a35.205133 35.205133 0 0 1-35.205134 35.205134z"
p-id="4077"></path> p-id="4077"></path>

View File

@ -1,7 +1,13 @@
<template> <template>
<svg class="icon" height="300" p-id="4952" t="1678864333679" version="1.1" viewBox="0 0 1024 1024" width="300" xmlns="http://www.w3.org/2000/svg"> <svg class="icon" height="128" p-id="5220" t="1706579628535" version="1.1" viewBox="0 0 1024 1024" width="128" xmlns="http://www.w3.org/2000/svg">
<path <path
d="M342 472h342c0.4 0 0.9 0 1.3-0.1 4.4-0.7 7.3-4.8 6.6-9.2l-40.2-248c-0.6-3.9-4-6.7-7.9-6.7H382.2c-3.9 0-7.3 2.8-7.9 6.7l-40.2 248c-0.1 0.4-0.1 0.9-0.1 1.3 0 4.4 3.6 8 8 8z m91.2-196h159.5l20.7 128h-201l20.8-128zM435.7 558.7c-0.6-3.9-4-6.7-7.9-6.7H166.2c-3.9 0-7.3 2.8-7.9 6.7l-40.2 248c-0.1 0.4-0.1 0.9-0.1 1.3 0 4.4 3.6 8 8 8h342c0.4 0 0.9 0 1.3-0.1 4.4-0.7 7.3-4.8 6.6-9.2l-40.2-248zM196.5 748l20.7-128h159.5l20.7 128H196.5zM905.9 806.7l-40.2-248c-0.6-3.9-4-6.7-7.9-6.7H596.2c-3.9 0-7.3 2.8-7.9 6.7l-40.2 248c-0.1 0.4-0.1 0.9-0.1 1.3 0 4.4 3.6 8 8 8h342c0.4 0 0.9 0 1.3-0.1 4.3-0.7 7.3-4.8 6.6-9.2zM626.5 748l20.7-128h159.5l20.7 128H626.5z" d="M913.066667 264.533333l-371.2-209.066666c-25.6-12.8-59.733333-12.8-85.333334 0L89.6 264.533333C34.133333 298.666667 34.133333 379.733333 89.6 413.866667l371.2 209.066666c25.6 12.8 59.733333 12.8 85.333333 0l371.2-209.066666c55.466667-34.133333 55.466667-119.466667-4.266666-149.333334z m-413.866667 281.6L132.266667 337.066667 499.2 128l371.2 209.066667-371.2 209.066666z"
p-id="4953"></path> p-id="5221"></path>
<path
d="M46.933333 516.266667c12.8-21.333333 38.4-25.6 59.733334-17.066667l384 221.866667c12.8 8.533333 29.866667 8.533333 42.666666 0l388.266667-217.6c21.333333-12.8 46.933333-4.266667 59.733333 17.066666 12.8 21.333333 4.266667 46.933333-17.066666 59.733334l-388.266667 217.6c-38.4 21.333333-89.6 21.333333-128 0l-384-221.866667c-21.333333-12.8-25.6-38.4-17.066667-59.733333z"
p-id="5222"></path>
<path
d="M106.666667 669.866667c-21.333333-12.8-46.933333-4.266667-59.733334 17.066666-12.8 21.333333-4.266667 46.933333 17.066667 59.733334l388.266667 217.6c38.4 21.333333 85.333333 21.333333 128 0l379.733333-217.6c21.333333-12.8 25.6-38.4 17.066667-59.733334-12.8-21.333333-38.4-25.6-59.733334-17.066666l-379.733333 217.6c-12.8 8.533333-29.866667 8.533333-42.666667 0l-388.266666-217.6z"
p-id="5223"></path>
</svg> </svg>
</template> </template>

View File

@ -1,5 +1,5 @@
<template> <template>
<svg t="1706693297583" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4279" width="128" height="128"> <svg class="icon" height="128" p-id="4279" t="1706693297583" version="1.1" viewBox="0 0 1024 1024" width="128" xmlns="http://www.w3.org/2000/svg">
<path <path
d="M553 186.4v-84h204.8c22.5 0 41-18.4 41-41 0-22.5-18.4-41-41-41H266.2c-22.5 0-41 18.4-41 41 0 22.5 18.4 41 41 41H471v84C264 207 102.4 381.5 102.4 593.9c0 226.2 183.4 409.6 409.6 409.6s409.6-183.4 409.6-409.6c0-212.4-161.7-387-368.6-407.5z m-41 735.2c-180.7 0-327.7-147-327.7-327.7s147-327.7 327.7-327.7 327.7 147 327.7 327.7-147 327.7-327.7 327.7z" d="M553 186.4v-84h204.8c22.5 0 41-18.4 41-41 0-22.5-18.4-41-41-41H266.2c-22.5 0-41 18.4-41 41 0 22.5 18.4 41 41 41H471v84C264 207 102.4 381.5 102.4 593.9c0 226.2 183.4 409.6 409.6 409.6s409.6-183.4 409.6-409.6c0-212.4-161.7-387-368.6-407.5z m-41 735.2c-180.7 0-327.7-147-327.7-327.7s147-327.7 327.7-327.7 327.7 147 327.7 327.7-147 327.7-327.7 327.7z"
p-id="4280"></path> p-id="4280"></path>

View File

@ -1,5 +1,5 @@
<template> <template>
<svg t="1695640506520" class="icon" viewBox="0 0 1026 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4207" width="128" height="128"> <svg class="icon" height="128" p-id="4207" t="1695640506520" version="1.1" viewBox="0 0 1026 1024" width="128" xmlns="http://www.w3.org/2000/svg">
<path <path
d="M420.864 450.56l-164.864 139.264 0-186.368 185.344-162.816 5.12 6.144 167.936 195.584 308.224-320.512 92.16 112.64-413.696 431.104-3.072-7.168zM928.768 705.536q19.456 0 37.376 7.68t30.72 20.48 20.48 30.208 7.68 36.864q0 20.48-7.68 37.888t-20.48 30.208-30.72 20.48-37.376 7.68l-832.512 0q-20.48 0-37.888-7.68t-30.208-20.48-20.48-30.208-7.68-37.888l0-640q0-19.456 7.68-37.376t20.48-30.72 30.208-20.48 37.888-7.68q19.456 0 37.376 7.68t30.72 20.48 20.48 30.72 7.68 37.376l0 544.768 736.256 0z" d="M420.864 450.56l-164.864 139.264 0-186.368 185.344-162.816 5.12 6.144 167.936 195.584 308.224-320.512 92.16 112.64-413.696 431.104-3.072-7.168zM928.768 705.536q19.456 0 37.376 7.68t30.72 20.48 20.48 30.208 7.68 36.864q0 20.48-7.68 37.888t-20.48 30.208-30.72 20.48-37.376 7.68l-832.512 0q-20.48 0-37.888-7.68t-30.208-20.48-20.48-30.208-7.68-37.888l0-640q0-19.456 7.68-37.376t20.48-30.72 30.208-20.48 37.888-7.68q19.456 0 37.376 7.68t30.72 20.48 20.48 30.72 7.68 37.376l0 544.768 736.256 0z"
p-id="4208"></path> p-id="4208"></path>

View File

@ -1,10 +1,18 @@
<template> <template>
<svg class="icon" height="200" p-id="2826" t="1679624385345" version="1.1" viewBox="0 0 1024 1024" width="200" xmlns="http://www.w3.org/2000/svg"> <svg
class="icon"
height="128"
p-id="13280"
t="1706508686630"
version="1.1"
viewBox="0 0 1024 1024"
width="128"
xmlns="http://www.w3.org/2000/svg">
<path <path
d="M831.825474 63.940169H191.939717C121.2479 63.940169 63.940169 121.2479 63.940169 191.939717v639.885757C63.940169 902.517291 121.2479 959.825022 191.939717 959.825022h639.885757c70.691817 0 127.999548-57.307731 127.999548-127.999548V191.939717C959.825022 121.2479 902.517291 63.940169 831.825474 63.940169zM895.884854 831.998871A63.835408 63.835408 0 0 1 831.912173 895.884854H192.087827c-17.112123 0-33.270563-6.574639-45.372232-18.67631S127.880338 849.110994 127.880338 831.998871V192.001129A64.236389 64.236389 0 0 1 192.087827 127.880338h639.824346A64.037705 64.037705 0 0 1 895.884854 192.001129v639.997742z" d="M831.825474 63.940169H191.939717C121.2479 63.940169 63.940169 121.2479 63.940169 191.939717v639.885757C63.940169 902.517291 121.2479 959.825022 191.939717 959.825022h639.885757c70.691817 0 127.999548-57.307731 127.999548-127.999548V191.939717C959.825022 121.2479 902.517291 63.940169 831.825474 63.940169zM895.884854 831.998871A63.835408 63.835408 0 0 1 831.912173 895.884854H192.087827c-17.112123 0-33.270563-6.574639-45.372232-18.67631S127.880338 849.110994 127.880338 831.998871V192.001129A64.236389 64.236389 0 0 1 192.087827 127.880338h639.824346A64.037705 64.037705 0 0 1 895.884854 192.001129v639.997742z"
p-id="2827"></path> p-id="13281"></path>
<path <path
d="M791.998335 351.851551h-255.999097a31.970084 31.970084 0 0 0 0 63.940169h255.999097a31.970084 31.970084 0 0 0 0-63.940169zM791.998335 607.973471h-255.999097a31.970084 31.970084 0 0 0 0 63.940169h255.999097a31.970084 31.970084 0 0 0 0-63.940169zM344.001722 527.997686c-61.855792 0-111.985607 50.144265-111.985607 111.985606s50.144265 111.985607 111.985607 111.985607 111.985607-50.144265 111.985606-111.985607-50.129815-111.985607-111.985606-111.985606z m33.982213 145.982269a48.045438 48.045438 0 1 1 14.088511-33.982213 47.745605 47.745605 0 0 1-14.088511 33.985826zM417.395643 297.394035L311.999125 402.78694 270.6078 361.392003a31.970084 31.970084 0 1 0-45.213286 45.213285l63.997968 64.001581a31.970084 31.970084 0 0 0 45.213286 0l127.999548-127.999549a31.970084 31.970084 0 0 0-45.209673-45.213285z" d="M791.998335 351.851551h-255.999097a31.970084 31.970084 0 0 0 0 63.940169h255.999097a31.970084 31.970084 0 0 0 0-63.940169zM791.998335 607.973471h-255.999097a31.970084 31.970084 0 0 0 0 63.940169h255.999097a31.970084 31.970084 0 0 0 0-63.940169zM344.001722 527.997686c-61.855792 0-111.985607 50.144265-111.985607 111.985606s50.144265 111.985607 111.985607 111.985607 111.985607-50.144265 111.985606-111.985607-50.129815-111.985607-111.985606-111.985606z m33.982213 145.982269a48.045438 48.045438 0 1 1 14.088511-33.982213 47.745605 47.745605 0 0 1-14.088511 33.985826zM417.395643 297.394035L311.999125 402.78694 270.6078 361.392003a31.970084 31.970084 0 1 0-45.213286 45.213285l63.997968 64.001581a31.970084 31.970084 0 0 0 45.213286 0l127.999548-127.999549a31.970084 31.970084 0 0 0-45.209673-45.213285z"
p-id="2828"></path> p-id="13282"></path>
</svg> </svg>
</template> </template>

View File

@ -1,56 +1,56 @@
export { default as Vue } from './Vue.vue' export { default as Alert } from './Alert.vue'
export { default as Code } from './Code.vue'
export { default as Wechat } from './Wechat.vue'
export { default as BugFill } from './BugFill.vue'
export { default as BugLine } from './BugLine.vue'
export { default as FileWord } from './FileWord.vue'
export { default as FileExcel } from './FileExcel.vue'
export { default as FilePpt } from './FilePpt.vue'
export { default as Organization } from './Organization.vue'
export { default as Upload } from './Upload.vue'
export { default as Download } from './Download.vue'
export { default as Role } from './Role.vue'
export { default as Dept } from './Dept.vue'
export { default as Js } from './Js.vue'
export { default as Memory } from './Memory.vue'
export { default as Dashboard } from './Dashboard.vue'
export { default as Api } from './Api.vue' export { default as Api } from './Api.vue'
export { default as Code2 } from './Code2.vue'
export { default as Csharp } from './Csharp.vue'
export { default as Dic } from './Dic.vue'
export { default as Position } from './Position.vue'
export { default as Tpl } from './Tpl.vue'
export { default as Demo } from './Demo.vue'
export { default as Link } from './Link.vue'
export { default as Unlink } from './Unlink.vue'
export { default as Send } from './Send.vue'
export { default as SmsCode } from './SmsCode.vue'
export { default as Meter } from './Meter.vue'
export { default as Grafana } from './Grafana.vue'
export { default as Elastic } from './Elastic.vue'
export { default as Kibana } from './Kibana.vue'
export { default as Kafka } from './Kafka.vue'
export { default as Resource } from './Resource.vue'
export { default as Robot } from './Robot.vue'
export { default as Device } from './Device.vue'
export { default as Business } from './Business.vue'
export { default as App } from './App.vue' export { default as App } from './App.vue'
export { default as App2 } from './App2.vue' export { default as App2 } from './App2.vue'
export { default as Sync } from './Sync.vue' export { default as BugFill } from './BugFill.vue'
export { default as Drone } from './Drone.vue' export { default as BugLine } from './BugLine.vue'
export { default as Gitea } from './Gitea.vue' export { default as Business } from './Business.vue'
export { default as Code } from './Code.vue'
export { default as Code2 } from './Code2.vue'
export { default as Csharp } from './Csharp.vue'
export { default as Dashboard } from './Dashboard.vue'
export { default as Demo } from './Demo.vue'
export { default as Dept } from './Dept.vue'
export { default as Device } from './Device.vue'
export { default as Dic } from './Dic.vue'
export { default as Docker } from './Docker.vue' export { default as Docker } from './Docker.vue'
export { default as Task } from './Task.vue' export { default as Download } from './Download.vue'
export { default as ProductCategory } from './ProductCategory.vue' export { default as Drone } from './Drone.vue'
export { default as Product } from './Product.vue' export { default as Elastic } from './Elastic.vue'
export { default as Error } from './Error.vue' export { default as Error } from './Error.vue'
export { default as Warning } from './Warning.vue'
export { default as Stats } from './Stats.vue'
export { default as Log } from './Log.vue'
export { default as OperLog } from './OperLog.vue'
export { default as LoginLog } from './LoginLog.vue'
export { default as ExLog } from './ExLog.vue' export { default as ExLog } from './ExLog.vue'
export { default as FileExcel } from './FileExcel.vue'
export { default as FilePpt } from './FilePpt.vue'
export { default as FileWord } from './FileWord.vue'
export { default as Gitea } from './Gitea.vue'
export { default as Grafana } from './Grafana.vue'
export { default as Js } from './Js.vue'
export { default as Kafka } from './Kafka.vue'
export { default as Key } from './Key.vue' export { default as Key } from './Key.vue'
export { default as Kibana } from './Kibana.vue'
export { default as Link } from './Link.vue'
export { default as Log } from './Log.vue'
export { default as LoginLog } from './LoginLog.vue'
export { default as Memory } from './Memory.vue'
export { default as Meter } from './Meter.vue'
export { default as OpenDoor } from './OpenDoor.vue' export { default as OpenDoor } from './OpenDoor.vue'
export { default as Alert } from './Alert.vue' export { default as OperLog } from './OperLog.vue'
export { default as Organization } from './Organization.vue'
export { default as Position } from './Position.vue'
export { default as Product } from './Product.vue'
export { default as ProductCategory } from './ProductCategory.vue'
export { default as Resource } from './Resource.vue'
export { default as Robot } from './Robot.vue'
export { default as Role } from './Role.vue'
export { default as ScheduledJob } from './ScheduledJob.vue' export { default as ScheduledJob } from './ScheduledJob.vue'
export { default as Send } from './Send.vue'
export { default as SmsCode } from './SmsCode.vue'
export { default as Stats } from './Stats.vue'
export { default as Sync } from './Sync.vue'
export { default as Task } from './Task.vue'
export { default as Tpl } from './Tpl.vue'
export { default as Unlink } from './Unlink.vue'
export { default as Upload } from './Upload.vue'
export { default as Vue } from './Vue.vue'
export { default as Warning } from './Warning.vue'
export { default as Wechat } from './Wechat.vue'

View File

@ -1,16 +1,16 @@
<template> <template>
<sc-table-select <sc-table-select
ref="area"
v-model="area" v-model="area"
:apiObj="$API.sys_dic.pagedQueryContent" :apiObj="$API.sys_dic.pagedQueryContent"
:params="form" :params="form"
:props="{ label: 'key', value: 'value' }" :props="{ label: 'key', value: 'value' }"
:table-width="600" :table-width="600"
clearable> clearable
ref="area">
<template #header> <template #header>
<el-form :model="form"> <el-form :model="form">
<el-form-item> <el-form-item>
<el-input v-model="form.keywords" clearable :placeholder="$t('请输入地区或代码')" @input="onInput"></el-input> <el-input v-model="form.keywords" :placeholder="$t('请输入地区或代码')" @input="onInput" clearable></el-input>
</el-form-item> </el-form-item>
</el-form> </el-form>
</template> </template>

View File

@ -1,5 +1,5 @@
<template> <template>
<el-button icon="el-icon-plus" type="primary" @click="add"></el-button> <el-button @click="add" icon="el-icon-plus" type="primary"></el-button>
</template> </template>
<style scoped></style> <style scoped></style>
<script> <script>

View File

@ -1,5 +1,5 @@
<template> <template>
<el-button :disabled="vue.selection.length === 0" :loading="loading" icon="el-icon-delete" plain type="danger" @click="batchDel"></el-button> <el-button :disabled="vue.selection.length === 0" :loading="loading" @click="batchDel" icon="el-icon-delete" plain type="danger"></el-button>
</template> </template>
<style scoped></style> <style scoped></style>
<script> <script>

View File

@ -1,14 +1,14 @@
<template> <template>
<el-table-column align="right" :label="$t('操作')"> <el-table-column :label="$t('操作')" align="right">
<template #default="scope"> <template #default="scope">
<el-button-group> <el-button-group>
<template v-for="(item, i) in buttons?.filter((x) => !x.condition || x.condition(scope))" :key="i"> <template v-for="(item, i) in buttons?.filter((x) => !x.condition || x.condition(scope))" :key="i">
<el-popconfirm v-if="item.confirm" :title="`确定${item.title}吗?`" @confirm="item.click(scope.row, vue)"> <el-popconfirm v-if="item.confirm" :title="`确定${item.title}吗?`" @confirm="item.click(scope.row, vue)">
<template #reference> <template #reference>
<el-button :icon="item.icon" :title="item.title" :type="item.type" size="small" @click.native.stop></el-button> <el-button :icon="item.icon" :title="item.title" :type="item.type" @click.native.stop size="small"></el-button>
</template> </template>
</el-popconfirm> </el-popconfirm>
<el-button v-else :icon="item.icon" :title="item.title" size="small" @click="item.click(scope.row, vue)" <el-button v-else :icon="item.icon" :title="item.title" @click="item.click(scope.row, vue)" size="small"
>{{ item.title }} >{{ item.title }}
</el-button> </el-button>
</template> </template>

View File

@ -13,17 +13,17 @@
<div class="msg-yzm"> <div class="msg-yzm">
<el-input <el-input
v-model="form[Array.isArray(codeField) ? codeField[1] : codeField]" v-model="form[Array.isArray(codeField) ? codeField[1] : codeField]"
:placeholder="$t('邮箱验证码')"
clearable clearable
maxlength="4" maxlength="4"
oninput="value=value.replace(/\D/g,'')" oninput="value=value.replace(/\D/g,'')"
:placeholder="$t('邮箱验证码')"
prefix-icon="el-icon-message"></el-input> prefix-icon="el-icon-message"></el-input>
<el-button :disabled="sendDisabled" @click="getYzm" <el-button :disabled="sendDisabled" @click="getYzm"
>获取验证码<span v-if="sendDisabled"> ({{ waitSecs }})</span></el-button >获取验证码<span v-if="sendDisabled"> ({{ waitSecs }})</span></el-button
> >
</div> </div>
</el-form-item> </el-form-item>
<na-verify ref="verify" :imgSize="{ width: '310px', height: '155px' }" captchaType="blockPuzzle" mode="pop" @success="captchaSuccess"></na-verify> <na-verify :imgSize="{ width: '310px', height: '155px' }" @success="captchaSuccess" captchaType="blockPuzzle" mode="pop" ref="verify"></na-verify>
</template> </template>
<script> <script>

View File

@ -24,7 +24,7 @@
> >
</div> </div>
</el-form-item> </el-form-item>
<na-verify ref="verify" :imgSize="{ width: '310px', height: '155px' }" captchaType="blockPuzzle" mode="pop" @success="captchaSuccess"></na-verify> <na-verify :imgSize="{ width: '310px', height: '155px' }" @success="captchaSuccess" captchaType="blockPuzzle" mode="pop" ref="verify"></na-verify>
</template> </template>
<script> <script>

View File

@ -1,5 +1,5 @@
<template> <template>
<el-drawer v-model="visible" :size="size" :title="title" destroy-on-close @closed="$emit('closed')"> <el-drawer v-model="visible" :size="size" :title="title" @closed="$emit('closed')" destroy-on-close>
<el-main> <el-main>
<el-descriptions :column="1" border size="small"> <el-descriptions :column="1" border size="small">
<el-descriptions-item v-for="(item, i) in data" :key="i" :label="i" label-class-name="w15"> <el-descriptions-item v-for="(item, i) in data" :key="i" :label="i" label-class-name="w15">

View File

@ -1,8 +1,10 @@
<template> <template>
<form class="right-panel-search" @keyup.enter="search" @submit.prevent="search"> <form @keyup.enter="search" @submit.prevent="search" class="right-panel-search">
<el-date-picker <el-date-picker
v-if="hasDate" v-if="hasDate"
v-model="form.dy.createdTime" v-model="form.dy.createdTime"
:end-placeholder="$t('结束日期')"
:range-separator="$t('至')"
:shortcuts="[ :shortcuts="[
{ {
text: '今天', text: '今天',
@ -68,10 +70,8 @@
}, },
}, },
]" ]"
:teleported="false"
:end-placeholder="$t('结束日期')"
:range-separator="$t('至')"
:start-placeholder="$t('开始日期')" :start-placeholder="$t('开始日期')"
:teleported="false"
type="daterange" type="daterange"
value-format="YYYY-MM-DD"></el-date-picker> value-format="YYYY-MM-DD"></el-date-picker>
@ -118,8 +118,8 @@
</template> </template>
<el-button-group> <el-button-group>
<el-button icon="el-icon-search" type="primary" @click="search">查询</el-button> <el-button @click="search" icon="el-icon-search" type="primary">查询</el-button>
<el-button icon="el-icon-refresh-left" @click="tool.refreshTab(vue)">重置</el-button> <el-button @click="tool.refreshTab(vue)" icon="el-icon-refresh-left">重置</el-button>
</el-button-group> </el-button-group>
</form> </form>
</template> </template>

View File

@ -1,20 +1,20 @@
<template> <template>
<sc-table-select <sc-table-select
ref="user"
v-model="user" v-model="user"
:apiObj="$API.sys_user.pagedQuery" :apiObj="$API.sys_user.pagedQuery"
:params="form" :params="form"
:props="{ label: 'userName', value: 'id' }" :props="{ label: 'userName', value: 'id' }"
:table-width="600" :table-width="600"
clearable> clearable
ref="user">
<template #header> <template #header>
<el-form :model="form"> <el-form :model="form">
<el-form-item> <el-form-item>
<el-input <el-input
v-model="form.keywords" v-model="form.keywords"
clearable
:placeholder="$t('用户编号 / 用户名 / 手机号 / 邮箱 / 备注')" :placeholder="$t('用户编号 / 用户名 / 手机号 / 邮箱 / 备注')"
@input="onInput"></el-input> @input="onInput"
clearable></el-input>
</el-form-item> </el-form-item>
</el-form> </el-form>
</template> </template>

View File

@ -3,16 +3,14 @@
<div :class="mode === 'pop' ? 'verifybox' : ''" :style="{ 'max-width': parseInt(imgSize.width) + 30 + 'px' }"> <div :class="mode === 'pop' ? 'verifybox' : ''" :style="{ 'max-width': parseInt(imgSize.width) + 30 + 'px' }">
<div v-if="mode === 'pop'" class="verifybox-top"> <div v-if="mode === 'pop'" class="verifybox-top">
请完成安全验证 请完成安全验证
<span class="verifybox-close" @click="closeBox"> <span @click="closeBox" class="verifybox-close">
<i class="iconfont icon-close"></i> <i class="iconfont icon-close"></i>
</span> </span>
</div> </div>
<div :style="{ padding: mode === 'pop' ? '1rem' : '0' }" class="verifybox-bottom"> <div :style="{ padding: mode === 'pop' ? '1rem' : '0' }" class="verifybox-bottom">
<!-- 验证码容器 --> <!-- 验证码容器 -->
<component <component
:is="componentType"
v-if="componentType" v-if="componentType"
ref="instance"
:arith="arith" :arith="arith"
:barSize="barSize" :barSize="barSize"
:blockSize="blockSize" :blockSize="blockSize"
@ -20,10 +18,12 @@
:explain="explain" :explain="explain"
:figure="figure" :figure="figure"
:imgSize="imgSize" :imgSize="imgSize"
:is="componentType"
:mode="mode" :mode="mode"
:tpl="tpl" :tpl="tpl"
:type="verifyType" :type="verifyType"
:vSpace="vSpace"></component> :vSpace="vSpace"
ref="instance"></component>
</div> </div>
</div> </div>
</div> </div>

View File

@ -3,7 +3,7 @@
<div v-if="type === '2'" :style="{ height: parseInt(setSize.imgHeight) + vSpace + 'px' }" class="verify-img-out"> <div v-if="type === '2'" :style="{ height: parseInt(setSize.imgHeight) + vSpace + 'px' }" class="verify-img-out">
<div :style="{ width: setSize.imgWidth, height: setSize.imgHeight }" class="verify-img-panel"> <div :style="{ width: setSize.imgWidth, height: setSize.imgHeight }" class="verify-img-panel">
<img :src="backImgBase" alt="" style="width: 100%; height: 100%; display: block" /> <img :src="backImgBase" alt="" style="width: 100%; height: 100%; display: block" />
<div v-show="showRefresh" class="verify-refresh" @click="refresh"> <div v-show="showRefresh" @click="refresh" class="verify-refresh">
<i class="iconfont icon-refresh"></i> <i class="iconfont icon-refresh"></i>
</div> </div>
<transition name="tips"> <transition name="tips">
@ -19,7 +19,7 @@
'line-height': barSize.height, 'line-height': barSize.height,
}" }"
class="verify-bar-area"> class="verify-bar-area">
<span class="verify-msg" v-text="text"></span> <span v-text="text" class="verify-msg"></span>
<div <div
:style="{ :style="{
width: leftBarWidth !== undefined ? leftBarWidth : barSize.height, width: leftBarWidth !== undefined ? leftBarWidth : barSize.height,
@ -28,7 +28,7 @@
transaction: transitionWidth, transaction: transitionWidth,
}" }"
class="verify-left-bar"> class="verify-left-bar">
<span class="verify-msg" v-text="finishText"></span> <span v-text="finishText" class="verify-msg"></span>
<div <div
:style="{ :style="{
width: barSize.height, width: barSize.height,
@ -37,9 +37,9 @@
left: moveBlockLeft, left: moveBlockLeft,
transition: transitionLeft, transition: transitionLeft,
}" }"
class="verify-move-block"
@mousedown="start" @mousedown="start"
@touchstart="start"> @touchstart="start"
class="verify-move-block">
<i :class="['verify-icon iconfont', iconClass]" :style="{ color: iconColor }"></i> <i :class="['verify-icon iconfont', iconClass]" :style="{ color: iconColor }"></i>
<div <div
v-if="type === '2'" v-if="type === '2'"

View File

@ -10,7 +10,7 @@
<template> <template>
<transition name="el-zoom-in-top"> <transition name="el-zoom-in-top">
<div v-if="visible" ref="contextmenu" :style="{ left: left + 'px', top: top + 'px' }" class="sc-contextmenu" @contextmenu.prevent="fun"> <div v-if="visible" :style="{ left: left + 'px', top: top + 'px' }" @contextmenu.prevent="fun" class="sc-contextmenu" ref="contextmenu">
<ul class="sc-contextmenu__menu"> <ul class="sc-contextmenu__menu">
<slot></slot> <slot></slot>
</ul> </ul>

View File

@ -9,9 +9,9 @@
<template> <template>
<hr v-if="divided" /> <hr v-if="divided" />
<li :class="disabled ? 'disabled' : ''" @mouseenter="openSubmenu($event)" @mouseleave="closeSubmenu($event)" @click.stop="liClick"> <li :class="disabled ? 'disabled' : ''" @click.stop="liClick" @mouseenter="openSubmenu($event)" @mouseleave="closeSubmenu($event)">
<span class="title"> <span class="title">
<el-icon class="sc-contextmenu__icon"><component :is="icon" v-if="icon" /></el-icon> <el-icon class="sc-contextmenu__icon"><component v-if="icon" :is="icon" /></el-icon>
{{ title }} {{ title }}
</span> </span>
<span class="sc-contextmenu__suffix"> <span class="sc-contextmenu__suffix">

View File

@ -8,9 +8,9 @@
--> -->
<template> <template>
<el-input v-model="defaultValue" v-bind="$attrs"> <el-input v-bind="$attrs" v-model="defaultValue">
<template #append> <template #append>
<el-dropdown size="medium" @command="handleShortcuts"> <el-dropdown @command="handleShortcuts" size="medium">
<el-button icon="el-icon-arrow-down"></el-button> <el-button icon="el-icon-arrow-down"></el-button>
<template #dropdown> <template #dropdown>
<el-dropdown-menu> <el-dropdown-menu>
@ -20,7 +20,7 @@
<el-dropdown-item command="0 0 0 1 * ?">每月一号零点</el-dropdown-item> <el-dropdown-item command="0 0 0 1 * ?">每月一号零点</el-dropdown-item>
<el-dropdown-item command="0 0 0 L * ?">每月最后一天零点</el-dropdown-item> <el-dropdown-item command="0 0 0 L * ?">每月最后一天零点</el-dropdown-item>
<el-dropdown-item command="0 0 0 ? * 1">每周星期日零点</el-dropdown-item> <el-dropdown-item command="0 0 0 ? * 1">每周星期日零点</el-dropdown-item>
<el-dropdown-item v-for="(item, index) in shortcuts" :key="item.value" :command="item.value" :divided="index == 0" <el-dropdown-item v-for="(item, index) in shortcuts" :command="item.value" :divided="index == 0" :key="item.value"
>{{ item.text }} >{{ item.text }}
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item command="custom" divided icon="el-icon-plus">自定义</el-dropdown-item> <el-dropdown-item command="custom" divided icon="el-icon-plus">自定义</el-dropdown-item>
@ -295,7 +295,7 @@
<template #footer> <template #footer>
<el-button @click="dialogVisible = false"> </el-button> <el-button @click="dialogVisible = false"> </el-button>
<el-button type="primary" @click="submit()"> </el-button> <el-button @click="submit()" type="primary"> </el-button>
</template> </template>
</el-dialog> </el-dialog>
</template> </template>

View File

@ -11,11 +11,11 @@
<template> <template>
<div class="sc-cropper"> <div class="sc-cropper">
<div class="sc-cropper__img"> <div class="sc-cropper__img">
<img ref="img" :src="src" /> <img :src="src" ref="img" />
</div> </div>
<div class="sc-cropper__preview"> <div class="sc-cropper__preview">
<h4>图像预览</h4> <h4>图像预览</h4>
<div ref="preview" class="sc-cropper__preview__img"></div> <div class="sc-cropper__preview__img" ref="preview"></div>
</div> </div>
</div> </div>
</template> </template>

View File

@ -8,14 +8,14 @@
--> -->
<template> <template>
<div ref="scDialog" class="sc-dialog"> <div class="sc-dialog" ref="scDialog">
<el-dialog ref="dialog" v-model="dialogVisible" :fullscreen="isFullscreen" :show-close="false" v-bind="$attrs"> <el-dialog v-bind="$attrs" v-model="dialogVisible" :fullscreen="isFullscreen" :show-close="false" ref="dialog">
<template #header> <template #header>
<slot name="header"> <slot name="header">
<span class="el-dialog__title">{{ title }}</span> <span class="el-dialog__title">{{ title }}</span>
</slot> </slot>
<div class="sc-dialog__headerbtn"> <div class="sc-dialog__headerbtn">
<button v-if="showFullscreen" aria-label="fullscreen" type="button" @click="setFullscreen"> <button v-if="showFullscreen" @click="setFullscreen" aria-label="fullscreen" type="button">
<el-icon v-if="isFullscreen" class="el-dialog__close"> <el-icon v-if="isFullscreen" class="el-dialog__close">
<el-icon-bottom-left /> <el-icon-bottom-left />
</el-icon> </el-icon>
@ -23,7 +23,7 @@
<el-icon-full-screen /> <el-icon-full-screen />
</el-icon> </el-icon>
</button> </button>
<button v-if="showClose" aria-label="close" type="button" @click="closeDialog"> <button v-if="showClose" @click="closeDialog" aria-label="close" type="button">
<el-icon class="el-dialog__close"> <el-icon class="el-dialog__close">
<el-icon-close /> <el-icon-close />
</el-icon> </el-icon>
@ -48,19 +48,17 @@ export default {
showClose: { type: Boolean, default: true }, showClose: { type: Boolean, default: true },
showFullscreen: { type: Boolean, default: true }, showFullscreen: { type: Boolean, default: true },
loading: { type: Boolean, default: false }, loading: { type: Boolean, default: false },
fullScreen: { type: Boolean, default: false },
}, },
data() { data() {
return { return {
dialogVisible: false, dialogVisible: false,
isFullscreen: false, isFullscreen: this.fullScreen,
} }
}, },
watch: { watch: {
modelValue() { modelValue() {
this.dialogVisible = this.modelValue this.dialogVisible = this.modelValue
if (this.dialogVisible) {
this.isFullscreen = false
}
}, },
}, },
mounted() { mounted() {

View File

@ -1,5 +1,5 @@
<template> <template>
<div ref="scEcharts" :style="{ height: height, width: width }"></div> <div :style="{ height: height, width: width }" ref="scEcharts"></div>
</template> </template>
<script> <script>

View File

@ -1,5 +1,5 @@
<template> <template>
<el-table ref="table" :data="columnData" border row-key="prop" style="width: 100%"> <el-table :data="columnData" border ref="table" row-key="prop" style="width: 100%">
<el-table-column :label="$t('排序')" prop="" width="60"> <el-table-column :label="$t('排序')" prop="" width="60">
<el-tag class="move" disable-transitions style="cursor: move"> <el-tag class="move" disable-transitions style="cursor: move">
<el-icon style="cursor: move"> <el-icon style="cursor: move">

View File

@ -9,9 +9,9 @@
<template> <template>
<slot :open="open"> <slot :open="open">
<el-button plain type="primary" @click="open">导出</el-button> <el-button @click="open" plain type="primary">导出</el-button>
</slot> </slot>
<el-drawer v-model="dialog" :size="400" append-to-body destroy-on-close direction="rtl" :title="$t('导出')"> <el-drawer v-model="dialog" :size="400" :title="$t('导出')" append-to-body destroy-on-close direction="rtl">
<el-main style="padding: 0 20px 20px 20px"> <el-main style="padding: 0 20px 20px 20px">
<div v-loading="downLoading" :element-loading-text="$t('正在处理中...')"> <div v-loading="downLoading" :element-loading-text="$t('正在处理中...')">
<div <div
@ -35,14 +35,14 @@
<el-button <el-button
v-if="async" v-if="async"
:loading="asyncLoading" :loading="asyncLoading"
@click="download"
icon="el-icon-plus" icon="el-icon-plus"
size="large" size="large"
style="width: 100%" style="width: 100%"
type="primary" type="primary"
@click="download"
>发起导出任务 >发起导出任务
</el-button> </el-button>
<el-button v-else icon="el-icon-download" size="large" style="width: 100%" type="primary" @click="download"> </el-button> <el-button v-else @click="download" icon="el-icon-download" size="large" style="width: 100%" type="primary"> </el-button>
</el-tab-pane> </el-tab-pane>
<el-tab-pane v-if="columnData.length > 0" :label="$t('列设置')" lazy> <el-tab-pane v-if="columnData.length > 0" :label="$t('列设置')" lazy>
<columnSet :column="columnData"></columnSet> <columnSet :column="columnData"></columnSet>

View File

@ -9,13 +9,12 @@
<template> <template>
<slot :open="open"> <slot :open="open">
<el-button plain type="primary" @click="open">导入</el-button> <el-button @click="open" plain type="primary">导入</el-button>
</slot> </slot>
<el-dialog v-model="dialog" :close-on-click-modal="false" :width="550" append-to-body destroy-on-close :title="$t('导入')"> <el-dialog v-model="dialog" :close-on-click-modal="false" :title="$t('导入')" :width="550" append-to-body destroy-on-close>
<el-progress v-if="loading" :percentage="percentage" :stroke-width="20" :text-inside="true" style="margin-bottom: 1rem" /> <el-progress v-if="loading" :percentage="percentage" :stroke-width="20" :text-inside="true" style="margin-bottom: 1rem" />
<div v-loading="loading"> <div v-loading="loading">
<el-upload <el-upload
ref="uploader"
:accept="accept" :accept="accept"
:before-upload="before" :before-upload="before"
:data="data" :data="data"
@ -26,7 +25,8 @@
:on-progress="progress" :on-progress="progress"
:on-success="success" :on-success="success"
:show-file-list="false" :show-file-list="false"
drag> drag
ref="uploader">
<slot name="uploader"> <slot name="uploader">
<el-icon class="el-icon--upload"> <el-icon class="el-icon--upload">
<el-icon-upload-filled /> <el-icon-upload-filled />

View File

@ -12,14 +12,14 @@
<div v-loading="menuLoading" class="sc-file-select__side"> <div v-loading="menuLoading" class="sc-file-select__side">
<div class="sc-file-select__side-menu"> <div class="sc-file-select__side-menu">
<el-tree <el-tree
ref="group"
:current-node-key="menu.length > 0 ? menu[0][treeProps.key] : ''" :current-node-key="menu.length > 0 ? menu[0][treeProps.key] : ''"
:data="menu" :data="menu"
:node-key="treeProps.key" :node-key="treeProps.key"
:props="treeProps" :props="treeProps"
@node-click="groupClick"
class="menu" class="menu"
highlight-current highlight-current
@node-click="groupClick"> ref="group">
<template #default="{ node }"> <template #default="{ node }">
<span class="el-tree-node__label"> <span class="el-tree-node__label">
<el-icon class="icon"><el-icon-folder /></el-icon>{{ node.label }} <el-icon class="icon"><el-icon-folder /></el-icon>{{ node.label }}
@ -55,16 +55,16 @@
<div class="keyword"> <div class="keyword">
<el-input <el-input
v-model="keyword" v-model="keyword"
clearable
:placeholder="$t('文件名搜索')" :placeholder="$t('文件名搜索')"
prefix-icon="el-icon-search"
@clear="search" @clear="search"
@keyup.enter="search"></el-input> @keyup.enter="search"
clearable
prefix-icon="el-icon-search"></el-input>
</div> </div>
</div> </div>
<div class="sc-file-select__list"> <div class="sc-file-select__list">
<el-scrollbar ref="scrollbar"> <el-scrollbar ref="scrollbar">
<el-empty v-if="fileList.length === 0 && data.length === 0" :image-size="80" :description="$t('无数据')"></el-empty> <el-empty v-if="fileList.length === 0 && data.length === 0" :description="$t('无数据')" :image-size="80"></el-empty>
<div v-for="(file, index) in fileList" :key="index" class="sc-file-select__item"> <div v-for="(file, index) in fileList" :key="index" class="sc-file-select__item">
<div class="sc-file-select__item__file"> <div class="sc-file-select__item__file">
<div class="sc-file-select__item__upload"> <div class="sc-file-select__item__upload">
@ -76,10 +76,10 @@
</div> </div>
<div <div
v-for="item in data" v-for="item in data"
:key="item[fileProps.key]"
:class="{ active: value.includes(item[fileProps.url]) }" :class="{ active: value.includes(item[fileProps.url]) }"
class="sc-file-select__item" :key="item[fileProps.key]"
@click="select(item)"> @click="select(item)"
class="sc-file-select__item">
<div class="sc-file-select__item__file"> <div class="sc-file-select__item__file">
<div v-if="multiple" class="sc-file-select__item__checkbox"> <div v-if="multiple" class="sc-file-select__item__checkbox">
<el-icon> <el-icon>
@ -110,14 +110,14 @@
v-model:currentPage="currentPage" v-model:currentPage="currentPage"
:page-size="pageSize" :page-size="pageSize"
:total="total" :total="total"
@current-change="reload"
background background
layout="prev, pager, next" layout="prev, pager, next"
small small></el-pagination>
@current-change="reload"></el-pagination>
</div> </div>
<div class="sc-file-select__do"> <div class="sc-file-select__do">
<slot name="do"></slot> <slot name="do"></slot>
<el-button :disabled="value.length <= 0" type="primary" @click="submit"> </el-button> <el-button :disabled="value.length <= 0" @click="submit" type="primary"> </el-button>
</div> </div>
</div> </div>
</div> </div>

View File

@ -11,11 +11,11 @@
<div class="sc-filterBar"> <div class="sc-filterBar">
<slot :filterLength="filterObjLength" :openFilter="openFilter"> <slot :filterLength="filterObjLength" :openFilter="openFilter">
<el-badge :hidden="filterObjLength <= 0" :value="filterObjLength" type="danger"> <el-badge :hidden="filterObjLength <= 0" :value="filterObjLength" type="danger">
<el-button icon="el-icon-filter" @click="openFilter"></el-button> <el-button @click="openFilter" icon="el-icon-filter"></el-button>
</el-badge> </el-badge>
</slot> </slot>
<el-drawer v-model="drawer" :size="650" append-to-body :title="$t('过滤器')"> <el-drawer v-model="drawer" :size="650" :title="$t('过滤器')" append-to-body>
<el-container v-loading="saveLoading"> <el-container v-loading="saveLoading">
<el-main style="padding: 0"> <el-main style="padding: 0">
<el-tabs class="root"> <el-tabs class="root">
@ -44,9 +44,9 @@
v-model="item.field" v-model="item.field"
:filter="filter" :filter="filter"
:options="fields" :options="fields"
filterable
:placeholder="$t('过滤字段')" :placeholder="$t('过滤字段')"
@change="fieldChange(item)"> @change="fieldChange(item)"
filterable>
</py-select> </py-select>
</td> </td>
<td v-if="showOperator"> <td v-if="showOperator">
@ -62,8 +62,8 @@
<el-input <el-input
v-if="!item.field.type" v-if="!item.field.type"
v-model="item.value" v-model="item.value"
disabled :placeholder="$t('请选择过滤字段')"
:placeholder="$t('请选择过滤字段')"></el-input> disabled></el-input>
<!-- 输入框 --> <!-- 输入框 -->
<el-input <el-input
v-if="item.field.type === 'text'" v-if="item.field.type === 'text'"
@ -82,8 +82,8 @@
remoteMethod(query, item) remoteMethod(query, item)
} }
" "
filterable @visible-change="visibleChange($event, item)"
@visible-change="visibleChange($event, item)"> filterable>
<el-option <el-option
v-for="field in item.field.extend.data" v-for="field in item.field.extend.data"
:key="field.value" :key="field.value"
@ -152,13 +152,13 @@
no-data-text="$t('输入关键词后按回车确认')"></el-select> no-data-text="$t('输入关键词后按回车确认')"></el-select>
</td> </td>
<td> <td>
<el-icon class="del" @click="delFilter(index)"> <el-icon @click="delFilter(index)" class="del">
<el-icon-delete /> <el-icon-delete />
</el-icon> </el-icon>
</td> </td>
</tr> </tr>
</table> </table>
<el-button icon="el-icon-plus" text type="primary" @click="addFilter">增加过滤项</el-button> <el-button @click="addFilter" icon="el-icon-plus" text type="primary">增加过滤项</el-button>
</div> </div>
</el-scrollbar> </el-scrollbar>
</el-tab-pane> </el-tab-pane>
@ -167,14 +167,14 @@
<div class="tabs-label">常用</div> <div class="tabs-label">常用</div>
</template> </template>
<el-scrollbar> <el-scrollbar>
<my ref="my" :data="myFilter" :filterName="filterName" @selectMyfilter="selectMyfilter"></my> <my :data="myFilter" :filterName="filterName" @selectMyfilter="selectMyfilter" ref="my"></my>
</el-scrollbar> </el-scrollbar>
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>
</el-main> </el-main>
<el-footer> <el-footer>
<el-button :disabled="filter.length <= 0" type="primary" @click="ok">立即过滤</el-button> <el-button :disabled="filter.length <= 0" @click="ok" type="primary">立即过滤</el-button>
<el-button :disabled="filter.length <= 0" plain type="primary" @click="saveMy">另存为常用</el-button> <el-button :disabled="filter.length <= 0" @click="saveMy" plain type="primary">另存为常用</el-button>
<el-button @click="clear">清空过滤</el-button> <el-button @click="clear">清空过滤</el-button>
</el-footer> </el-footer>
</el-container> </el-container>

View File

@ -25,7 +25,7 @@
<label>{{ item.title }}</label> <label>{{ item.title }}</label>
<el-popconfirm :title="$t('确认删除此常用过滤吗?')" @confirm="closeMyfilter(item, index)"> <el-popconfirm :title="$t('确认删除此常用过滤吗?')" @confirm="closeMyfilter(item, index)">
<template #reference> <template #reference>
<el-icon class="del" @click.stop="() => {}"> <el-icon @click.stop="() => {}" class="del">
<el-icon-delete /> <el-icon-delete />
</el-icon> </el-icon>
</template> </template>

View File

@ -8,11 +8,11 @@
--> -->
<template> <template>
<el-select :filter-method="filterMethod" v-bind="$attrs" @visible-change="visibleChange"> <el-select v-bind="$attrs" :filter-method="filterMethod" @visible-change="visibleChange">
<el-option <el-option
v-for="field in optionsList" v-for="field in optionsList"
:key="field.value"
:disabled="isDisabled(field.value)" :disabled="isDisabled(field.value)"
:key="field.value"
:label="field.label" :label="field.label"
:value="field"></el-option> :value="field"></el-option>
</el-select> </el-select>

View File

@ -12,12 +12,12 @@
<el-form <el-form
v-else v-else
ref="form"
v-loading="loading" v-loading="loading"
:label-position="config.labelPosition" :label-position="config.labelPosition"
:label-width="config.labelWidth" :label-width="config.labelWidth"
:model="form" :model="form"
element-loading-text="Loading..."> element-loading-text="Loading..."
ref="form">
<el-row :gutter="15"> <el-row :gutter="15">
<template v-for="(item, index) in config.formItems" :key="index"> <template v-for="(item, index) in config.formItems" :key="index">
<el-col v-if="!hideHandle(item)" :span="item.span || 24"> <el-col v-if="!hideHandle(item)" :span="item.span || 24">
@ -45,15 +45,15 @@
<template v-if="item.name"> <template v-if="item.name">
<el-checkbox <el-checkbox
v-for="(_item, _index) in item.options.items" v-for="(_item, _index) in item.options.items"
:key="_index"
v-model="form[item.name][_item.name]" v-model="form[item.name][_item.name]"
:key="_index"
:label="_item.label"></el-checkbox> :label="_item.label"></el-checkbox>
</template> </template>
<template v-else> <template v-else>
<el-checkbox <el-checkbox
v-for="(_item, _index) in item.options.items" v-for="(_item, _index) in item.options.items"
:key="_index"
v-model="form[_item.name]" v-model="form[_item.name]"
:key="_index"
:label="_item.label"></el-checkbox> :label="_item.label"></el-checkbox>
</template> </template>
</template> </template>
@ -148,7 +148,7 @@
<el-col :span="24"> <el-col :span="24">
<el-form-item> <el-form-item>
<slot> <slot>
<el-button type="primary" @click="submit">提交</el-button> <el-button @click="submit" type="primary">提交</el-button>
</slot> </slot>
</el-form-item> </el-form-item>
</el-col> </el-col>

View File

@ -8,23 +8,23 @@
--> -->
<template> <template>
<div ref="scFormTable" class="sc-form-table"> <div class="sc-form-table" ref="scFormTable">
<el-table ref="table" :data="data" border stripe> <el-table :data="data" border ref="table" stripe>
<el-table-column fixed="left" type="index" width="50"> <el-table-column fixed="left" type="index" width="50">
<template #header> <template #header>
<el-button v-if="!hideAdd" circle icon="el-icon-plus" size="small" type="primary" @click="rowAdd"></el-button> <el-button v-if="!hideAdd" @click="rowAdd" circle icon="el-icon-plus" size="small" type="primary"></el-button>
</template> </template>
<template #default="scope"> <template #default="scope">
<div :class="['sc-form-table-handle', { 'sc-form-table-handle-delete': !hideDelete }]"> <div :class="['sc-form-table-handle', { 'sc-form-table-handle-delete': !hideDelete }]">
<span>{{ scope.$index + 1 }}</span> <span>{{ scope.$index + 1 }}</span>
<el-button <el-button
v-if="!hideDelete" v-if="!hideDelete"
@click="rowDel(scope.row, scope.$index)"
circle circle
icon="el-icon-delete" icon="el-icon-delete"
plain plain
size="small" size="small"
type="danger" type="danger"></el-button>
@click="rowDel(scope.row, scope.$index)"></el-button>
</div> </div>
</template> </template>
</el-table-column> </el-table-column>

View File

@ -9,18 +9,18 @@
<template> <template>
<div class="sc-icon-select"> <div class="sc-icon-select">
<div :class="{ hasValue: value }" class="sc-icon-select__wrapper" @click="open"> <div :class="{ hasValue: value }" @click="open" class="sc-icon-select__wrapper">
<el-input v-model="value" :disabled="disabled" :prefix-icon="value || 'el-icon-plus'" readonly></el-input> <el-input v-model="value" :disabled="disabled" :prefix-icon="value || 'el-icon-plus'" readonly></el-input>
</div> </div>
<el-dialog v-model="dialogVisible" :width="760" append-to-body destroy-on-close :title="$t('图标选择器')"> <el-dialog v-model="dialogVisible" :title="$t('图标选择器')" :width="760" append-to-body destroy-on-close>
<div class="sc-icon-select__dialog" style="margin: -20px 0 -10px 0"> <div class="sc-icon-select__dialog" style="margin: -20px 0 -10px 0">
<el-form :rules="{}"> <el-form :rules="{}">
<el-form-item prop="searchText"> <el-form-item prop="searchText">
<el-input <el-input
v-model="searchText" v-model="searchText"
:placeholder="$t('搜索')"
class="sc-icon-select__search-input" class="sc-icon-select__search-input"
clearable clearable
:placeholder="$t('搜索')"
prefix-icon="el-icon-search" prefix-icon="el-icon-search"
size="large" /> size="large" />
</el-form-item> </el-form-item>
@ -34,7 +34,7 @@
<div class="sc-icon-select__list"> <div class="sc-icon-select__list">
<el-scrollbar> <el-scrollbar>
<ul @click="selectIcon"> <ul @click="selectIcon">
<el-empty v-if="item.icons.length === 0" :image-size="100" :description="$t('未查询到相关图标')" /> <el-empty v-if="item.icons.length === 0" :description="$t('未查询到相关图标')" :image-size="100" />
<li v-for="icon in item.icons" :key="icon"> <li v-for="icon in item.icons" :key="icon">
<span :data-icon="icon"></span> <span :data-icon="icon"></span>
<el-icon> <el-icon>
@ -48,7 +48,7 @@
</el-tabs> </el-tabs>
</div> </div>
<template #footer> <template #footer>
<el-button text @click="clear">清除</el-button> <el-button @click="clear" text>清除</el-button>
<el-button @click="dialogVisible = false">取消</el-button> <el-button @click="dialogVisible = false">取消</el-button>
</template> </template>
</el-dialog> </el-dialog>

View File

@ -14,7 +14,7 @@
<el-icon-loading /> <el-icon-loading />
</el-icon> </el-icon>
</div> </div>
<el-select :loading="loading" v-bind="$attrs" @visible-change="visibleChange"> <el-select v-bind="$attrs" :loading="loading" @visible-change="visibleChange">
<el-option v-for="item in options" :key="item[props.value]" :label="item[props.label]" :value="objValueType ? item : item[props.value]"> <el-option v-for="item in options" :key="item[props.value]" :label="item[props.label]" :value="objValueType ? item : item[props.value]">
<slot :data="item" name="option"></slot> <slot :data="item" name="option"></slot>
</el-option> </el-option>

View File

@ -18,8 +18,8 @@
<ul> <ul>
<li <li
v-for="option in item.options" v-for="option in item.options"
:key="option.value"
:class="{ active: selected[item.key] && selected[item.key].includes(option.value) }" :class="{ active: selected[item.key] && selected[item.key].includes(option.value) }"
:key="option.value"
@click="select(option, item)"> @click="select(option, item)">
<el-icon v-if="option.icon"> <el-icon v-if="option.icon">
<component :is="option.icon" /> <component :is="option.icon" />

View File

@ -8,7 +8,7 @@
<span class="sortable_b">排序</span> <span class="sortable_b">排序</span>
<span class="fixed_b">固定</span> <span class="fixed_b">固定</span>
</div> </div>
<div ref="list" class="setting-column__list"> <div class="setting-column__list" ref="list">
<ul> <ul>
<li v-for="item in usercolumn" :key="item.prop"> <li v-for="item in usercolumn" :key="item.prop">
<span class="move_b"> <span class="move_b">
@ -32,10 +32,10 @@
</div> </div>
<div class="setting-column__bottom"> <div class="setting-column__bottom">
<el-button :disabled="isSave" @click="backDefaul">重置</el-button> <el-button :disabled="isSave" @click="backDefaul">重置</el-button>
<el-button type="primary" @click="save">保存</el-button> <el-button @click="save" type="primary">保存</el-button>
</div> </div>
</div> </div>
<el-empty v-else :image-size="80" :description="$t('暂无可配置的列')"></el-empty> <el-empty v-else :description="$t('暂无可配置的列')" :image-size="80"></el-empty>
</template> </template>
<script> <script>

View File

@ -7,24 +7,24 @@
* @LastEditTime: 2023年3月2日10:43:35 * @LastEditTime: 2023年3月2日10:43:35
--> -->
<template> <template>
<div ref="scTableMain" v-loading="loading" :style="{ height: _height }" class="scTable"> <div v-loading="loading" :style="{ height: _height }" class="scTable" ref="scTableMain">
<div :style="{ height: _table_height }" class="scTable-table"> <div :style="{ height: _table_height }" class="scTable-table">
<el-table <el-table
:key="toggleIndex" v-bind="$attrs"
ref="scTable"
:border="config.border" :border="config.border"
:data="tableData" :data="tableData"
:default-expand-all="config.defaultExpandAll" :default-expand-all="config.defaultExpandAll"
:default-sort="defaultSort" :default-sort="defaultSort"
:height="height === 'auto' ? null : '100%'" :height="height === 'auto' ? null : '100%'"
:key="toggleIndex"
:row-key="rowKey" :row-key="rowKey"
:size="config.size" :size="config.size"
:stripe="config.stripe" :stripe="config.stripe"
:summary-method="remoteSummary ? remoteSummaryMethod : summaryMethod" :summary-method="remoteSummary ? remoteSummaryMethod : summaryMethod"
v-bind="$attrs" @cell-click="cellClickMethod"
@sort-change="sortChange"
@filter-change="filterChange" @filter-change="filterChange"
@cell-click="cellClickMethod"> @sort-change="sortChange"
ref="scTable">
<slot></slot> <slot></slot>
<template v-for="(item, index) in userColumn" :key="index"> <template v-for="(item, index) in userColumn" :key="index">
<el-table-column <el-table-column
@ -39,7 +39,7 @@
:sortable="item.sortable" :sortable="item.sortable"
:width="item.width"> :width="item.width">
<template #default="scope"> <template #default="scope">
<slot :name="item.prop" v-bind="scope"> <slot v-bind="scope" :name="item.prop">
{{ scope.row[item.prop] }} {{ scope.row[item.prop] }}
</slot> </slot>
</template> </template>
@ -61,39 +61,39 @@
:page-sizes="pageSizes" :page-sizes="pageSizes"
:small="true" :small="true"
:total="total" :total="total"
background
@current-change="paginationChange" @current-change="paginationChange"
@update:page-size="pageSizeChange"></el-pagination> @update:page-size="pageSizeChange"
background></el-pagination>
</div> </div>
<div v-if="!hideDo" class="scTable-do"> <div v-if="!hideDo" class="scTable-do">
<el-button v-if="!hideRefresh" circle icon="el-icon-refresh" style="margin-left: 1rem" @click="refresh"></el-button> <el-button v-if="!hideRefresh" @click="refresh" circle icon="el-icon-refresh" style="margin-left: 1rem"></el-button>
<el-popover <el-popover
v-if="column" v-if="column"
:hide-after="0" :hide-after="0"
:width="500"
placement="top"
:title="$t('列设置')" :title="$t('列设置')"
trigger="click" :width="500"
@after-leave="customColumnShow = false"
@show="customColumnShow = true" @show="customColumnShow = true"
@after-leave="customColumnShow = false"> placement="top"
trigger="click">
<template #reference> <template #reference>
<el-button circle icon="el-icon-set-up" style="margin-left: 1rem"></el-button> <el-button circle icon="el-icon-set-up" style="margin-left: 1rem"></el-button>
</template> </template>
<columnSetting <columnSetting
v-if="customColumnShow" v-if="customColumnShow"
ref="columnSetting"
:column="userColumn" :column="userColumn"
@back="columnSettingBack" @back="columnSettingBack"
@save="columnSettingSave" @save="columnSettingSave"
@userChange="columnSettingChange"></columnSetting> @userChange="columnSettingChange"
ref="columnSetting"></columnSetting>
</el-popover> </el-popover>
<el-popover v-if="!hideSetting" :hide-after="0" :width="400" placement="top" :title="$t('表格设置')" trigger="click"> <el-popover v-if="!hideSetting" :hide-after="0" :title="$t('表格设置')" :width="400" placement="top" trigger="click">
<template #reference> <template #reference>
<el-button circle icon="el-icon-setting" style="margin-left: 1rem"></el-button> <el-button circle icon="el-icon-setting" style="margin-left: 1rem"></el-button>
</template> </template>
<el-form label-position="left" label-width="80px"> <el-form label-position="left" label-width="80px">
<el-form-item :label="$t('表格尺寸')"> <el-form-item :label="$t('表格尺寸')">
<el-radio-group v-model="config.size" size="small" @change="configSizeChange"> <el-radio-group v-model="config.size" @change="configSizeChange" size="small">
<el-radio-button label="large"></el-radio-button> <el-radio-button label="large"></el-radio-button>
<el-radio-button label="default">正常</el-radio-button> <el-radio-button label="default">正常</el-radio-button>
<el-radio-button label="small"></el-radio-button> <el-radio-button label="small"></el-radio-button>

View File

@ -9,7 +9,6 @@
<template> <template>
<el-select <el-select
ref="select"
v-model="defaultValue" v-model="defaultValue"
:clearable="clearable" :clearable="clearable"
:collapse-tags="collapseTags" :collapse-tags="collapseTags"
@ -22,20 +21,21 @@
:size="size" :size="size"
@clear="clear" @clear="clear"
@remove-tag="removeTag" @remove-tag="removeTag"
@visible-change="visibleChange"> @visible-change="visibleChange"
ref="select">
<template #empty> <template #empty>
<div v-loading="loading" :style="{ width: tableWidth + 'px' }" class="sc-table-select__table"> <div v-loading="loading" :style="{ width: tableWidth + 'px' }" class="sc-table-select__table">
<div class="sc-table-select__header"> <div class="sc-table-select__header">
<slot :form="formData" :submit="formSubmit" name="header"></slot> <slot :form="formData" :submit="formSubmit" name="header"></slot>
</div> </div>
<el-table <el-table
ref="table"
:data="tableData" :data="tableData"
:height="245"
:highlight-current-row="!multiple" :highlight-current-row="!multiple"
@select="select"
@row-click="click" @row-click="click"
@select-all="selectAll"> @select="select"
@select-all="selectAll"
max-height="30rem"
ref="table">
<el-table-column v-if="multiple" type="selection" width="45"></el-table-column> <el-table-column v-if="multiple" type="selection" width="45"></el-table-column>
<el-table-column v-else type="index" width="45"> <el-table-column v-else type="index" width="45">
<template #default="scope" <template #default="scope"
@ -49,10 +49,10 @@
v-model:currentPage="currentPage" v-model:currentPage="currentPage"
:page-size="pageSize" :page-size="pageSize"
:total="total" :total="total"
@current-change="reload"
background background
layout="prev, pager, next" layout="prev, pager, next"
small small></el-pagination>
@current-change="reload"></el-pagination>
</div> </div>
</div> </div>
</template> </template>
@ -182,7 +182,7 @@ export default {
item.currentLabel = item.value[this.defaultProps.label] item.currentLabel = item.value[this.defaultProps.label]
}) })
} else { } else {
this.$refs.select.selectedLabel = this.defaultValue[this.defaultProps.label] this.$refs.select.states.selectedLabel = this.defaultValue[this.defaultProps.label]
} }
}) })
}, },

View File

@ -13,14 +13,13 @@
</template> </template>
</el-image> </el-image>
<div v-if="!disabled" class="sc-upload__img-actions"> <div v-if="!disabled" class="sc-upload__img-actions">
<span class="del" @click="handleRemove()" <span @click="handleRemove()" class="del"
><el-icon><el-icon-delete /></el-icon ><el-icon><el-icon-delete /></el-icon
></span> ></span>
</div> </div>
</div> </div>
<el-upload <el-upload
v-if="!file" v-if="!file"
ref="uploader"
:accept="accept" :accept="accept"
:action="action" :action="action"
:auto-upload="cropper ? false : autoUpload" :auto-upload="cropper ? false : autoUpload"
@ -35,7 +34,8 @@
:on-exceed="handleExceed" :on-exceed="handleExceed"
:on-success="success" :on-success="success"
:show-file-list="showFileList" :show-file-list="showFileList"
class="uploader"> class="uploader"
ref="uploader">
<slot> <slot>
<div class="el-upload--picture-card"> <div class="el-upload--picture-card">
<div class="file-empty"> <div class="file-empty">
@ -48,11 +48,11 @@
</slot> </slot>
</el-upload> </el-upload>
<span style="display: none !important"><el-input v-model="value"></el-input></span> <span style="display: none !important"><el-input v-model="value"></el-input></span>
<el-dialog v-model="cropperDialogVisible" :width="580" destroy-on-close draggable :title="$t('剪裁')" @closed="cropperClosed"> <el-dialog v-model="cropperDialogVisible" :title="$t('剪裁')" :width="580" @closed="cropperClosed" destroy-on-close draggable>
<sc-cropper ref="cropper" :aspectRatio="aspectRatio" :compress="compress" :src="cropperFile.tempCropperFile"></sc-cropper> <sc-cropper :aspectRatio="aspectRatio" :compress="compress" :src="cropperFile.tempCropperFile" ref="cropper"></sc-cropper>
<template #footer> <template #footer>
<el-button @click="cropperDialogVisible = false"> </el-button> <el-button @click="cropperDialogVisible = false"> </el-button>
<el-button type="primary" @click="cropperSave"> </el-button> <el-button @click="cropperSave" type="primary"> </el-button>
</template> </template>
</el-dialog> </el-dialog>
</div> </div>

View File

@ -1,7 +1,6 @@
<template> <template>
<div class="sc-upload-multiple"> <div class="sc-upload-multiple">
<el-upload <el-upload
ref="uploader"
v-model:file-list="defaultFileList" v-model:file-list="defaultFileList"
:accept="accept" :accept="accept"
:action="action" :action="action"
@ -18,7 +17,8 @@
:on-preview="handlePreview" :on-preview="handlePreview"
:on-success="success" :on-success="success"
:show-file-list="showFileList" :show-file-list="showFileList"
list-type="picture-card"> list-type="picture-card"
ref="uploader">
<slot> <slot>
<el-icon> <el-icon>
<el-icon-plus /> <el-icon-plus />
@ -43,7 +43,7 @@
</template> </template>
</el-image> </el-image>
<div v-if="!disabled && file.status === 'success'" class="sc-upload__item-actions"> <div v-if="!disabled && file.status === 'success'" class="sc-upload__item-actions">
<span class="del" @click="handleRemove(file)" <span @click="handleRemove(file)" class="del"
><el-icon><el-icon-delete /></el-icon ><el-icon><el-icon-delete /></el-icon
></span> ></span>
</div> </div>

View File

@ -8,7 +8,7 @@
--> -->
<template> <template>
<div ref="scVideo" class="sc-video"></div> <div class="sc-video" ref="scVideo"></div>
</template> </template>
<script> <script>

View File

@ -8,7 +8,7 @@
--> -->
<template> <template>
<div ref="scWaterMark" class="sc-water-mark"> <div class="sc-water-mark" ref="scWaterMark">
<slot></slot> <slot></slot>
</div> </div>
</template> </template>

View File

@ -16,7 +16,7 @@
<div class="end-node-text">流程结束</div> <div class="end-node-text">流程结束</div>
</div> </div>
</div> </div>
<use-select v-if="selectVisible" ref="useselect" @closed="selectVisible = false"></use-select> <use-select v-if="selectVisible" @closed="selectVisible = false" ref="useselect"></use-select>
</div> </div>
</template> </template>

View File

@ -8,19 +8,19 @@
<div class="add-node-popover-body"> <div class="add-node-popover-body">
<ul> <ul>
<li> <li>
<el-icon style="color: #ff943e" @click="addType(1)"> <el-icon @click="addType(1)" style="color: #ff943e">
<el-icon-user-filled /> <el-icon-user-filled />
</el-icon> </el-icon>
<p>审批节点</p> <p>审批节点</p>
</li> </li>
<li> <li>
<el-icon style="color: #3296fa" @click="addType(2)"> <el-icon @click="addType(2)" style="color: #3296fa">
<el-icon-promotion /> <el-icon-promotion />
</el-icon> </el-icon>
<p>抄送节点</p> <p>抄送节点</p>
</li> </li>
<li> <li>
<el-icon style="color: #15bc83" @click="addType(4)"> <el-icon @click="addType(4)" style="color: #15bc83">
<el-icon-share /> <el-icon-share />
</el-icon> </el-icon>
<p>条件分支</p> <p>条件分支</p>

View File

@ -1,12 +1,12 @@
<template> <template>
<div class="node-wrap"> <div class="node-wrap">
<div class="node-wrap-box" @click="show"> <div @click="show" class="node-wrap-box">
<div class="title" style="background: #ff943e"> <div class="title" style="background: #ff943e">
<el-icon class="icon"> <el-icon class="icon">
<el-icon-user-filled /> <el-icon-user-filled />
</el-icon> </el-icon>
<span>{{ nodeConfig.nodeName }}</span> <span>{{ nodeConfig.nodeName }}</span>
<el-icon class="close" @click.stop="delNode()"> <el-icon @click.stop="delNode()" class="close">
<el-icon-close /> <el-icon-close />
</el-icon> </el-icon>
</div> </div>
@ -16,7 +16,7 @@
</div> </div>
</div> </div>
<add-node v-model="nodeConfig.childNode"></add-node> <add-node v-model="nodeConfig.childNode"></add-node>
<el-drawer v-model="drawer" :size="500" append-to-body destroy-on-close :title="$t('审批人设置')"> <el-drawer v-model="drawer" :size="500" :title="$t('审批人设置')" append-to-body destroy-on-close>
<template #header> <template #header>
<div class="node-wrap-drawer__title"> <div class="node-wrap-drawer__title">
<label v-if="!isEditTitle" @click="editTitle" <label v-if="!isEditTitle" @click="editTitle"
@ -27,11 +27,11 @@
</label> </label>
<el-input <el-input
v-if="isEditTitle" v-if="isEditTitle"
ref="nodeTitle"
v-model="form.nodeName" v-model="form.nodeName"
clearable
@blur="saveTitle" @blur="saveTitle"
@keyup.enter="saveTitle"></el-input> @keyup.enter="saveTitle"
clearable
ref="nodeTitle"></el-input>
</div> </div>
</template> </template>
<el-container> <el-container>
@ -39,19 +39,19 @@
<el-form label-position="top"> <el-form label-position="top">
<el-form-item :label="$t('审批人员类型')"> <el-form-item :label="$t('审批人员类型')">
<el-select v-model="form.setType"> <el-select v-model="form.setType">
<el-option :value="1" :label="$t('指定成员')"></el-option> <el-option :label="$t('指定成员')" :value="1"></el-option>
<el-option :value="2" :label="$t('主管')"></el-option> <el-option :label="$t('主管')" :value="2"></el-option>
<el-option :value="3" :label="$t('角色')"></el-option> <el-option :label="$t('角色')" :value="3"></el-option>
<el-option :value="4" :label="$t('发起人自选')"></el-option> <el-option :label="$t('发起人自选')" :value="4"></el-option>
<el-option :value="5" :label="$t('发起人自己')"></el-option> <el-option :label="$t('发起人自己')" :value="5"></el-option>
<el-option :value="7" :label="$t('连续多级主管')"></el-option> <el-option :label="$t('连续多级主管')" :value="7"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item v-if="form.setType === 1" :label="$t('选择成员')"> <el-form-item v-if="form.setType === 1" :label="$t('选择成员')">
<el-button icon="el-icon-plus" round type="primary" @click="selectHandle(1, form.nodeUserList)">选择人员</el-button> <el-button @click="selectHandle(1, form.nodeUserList)" icon="el-icon-plus" round type="primary">选择人员</el-button>
<div class="tags-list"> <div class="tags-list">
<el-tag v-for="(user, index) in form.nodeUserList" :key="user.id" closable @close="delUser(index)" <el-tag v-for="(user, index) in form.nodeUserList" :key="user.id" @close="delUser(index)" closable
>{{ user.name }} >{{ user.name }}
</el-tag> </el-tag>
</div> </div>
@ -64,9 +64,9 @@
</el-form-item> </el-form-item>
<el-form-item v-if="form.setType === 3" :label="$t('选择角色')"> <el-form-item v-if="form.setType === 3" :label="$t('选择角色')">
<el-button icon="el-icon-plus" round type="primary" @click="selectHandle(2, form.nodeRoleList)">选择角色</el-button> <el-button @click="selectHandle(2, form.nodeRoleList)" icon="el-icon-plus" round type="primary">选择角色</el-button>
<div class="tags-list"> <div class="tags-list">
<el-tag v-for="(role, index) in form.nodeRoleList" :key="role.id" closable type="info" @close="delRole(index)" <el-tag v-for="(role, index) in form.nodeRoleList" :key="role.id" @close="delRole(index)" closable type="info"
>{{ role.name }} >{{ role.name }}
</el-tag> </el-tag>
</div> </div>
@ -124,7 +124,7 @@
</el-form> </el-form>
</el-main> </el-main>
<el-footer> <el-footer>
<el-button type="primary" @click="save">保存</el-button> <el-button @click="save" type="primary">保存</el-button>
<el-button @click="drawer = false">取消</el-button> <el-button @click="drawer = false">取消</el-button>
</el-footer> </el-footer>
</el-container> </el-container>

View File

@ -2,12 +2,12 @@
<div class="branch-wrap"> <div class="branch-wrap">
<div class="branch-box-wrap"> <div class="branch-box-wrap">
<div class="branch-box"> <div class="branch-box">
<el-button class="add-branch" plain round type="success" @click="addTerm">添加条件</el-button> <el-button @click="addTerm" class="add-branch" plain round type="success">添加条件</el-button>
<div v-for="(item, index) in nodeConfig.conditionNodes" :key="index" class="col-box"> <div v-for="(item, index) in nodeConfig.conditionNodes" :key="index" class="col-box">
<div class="condition-node"> <div class="condition-node">
<div class="condition-node-box"> <div class="condition-node-box">
<div class="auto-judge" @click="show(index)"> <div @click="show(index)" class="auto-judge">
<div v-if="index !== 0" class="sort-left" @click.stop="arrTransfer(index, -1)"> <div v-if="index !== 0" @click.stop="arrTransfer(index, -1)" class="sort-left">
<el-icon> <el-icon>
<el-icon-arrow-left /> <el-icon-arrow-left />
</el-icon> </el-icon>
@ -15,7 +15,7 @@
<div class="title"> <div class="title">
<span class="node-title">{{ item.nodeName }}</span> <span class="node-title">{{ item.nodeName }}</span>
<span class="priority-title">优先级{{ item.priorityLevel }}</span> <span class="priority-title">优先级{{ item.priorityLevel }}</span>
<el-icon class="close" @click.stop="delTerm(index)"> <el-icon @click.stop="delTerm(index)" class="close">
<el-icon-close /> <el-icon-close />
</el-icon> </el-icon>
</div> </div>
@ -23,7 +23,7 @@
<span v-if="toText(nodeConfig, index)">{{ toText(nodeConfig, index) }}</span> <span v-if="toText(nodeConfig, index)">{{ toText(nodeConfig, index) }}</span>
<span v-else class="placeholder">请设置条件</span> <span v-else class="placeholder">请设置条件</span>
</div> </div>
<div v-if="index != nodeConfig.conditionNodes.length - 1" class="sort-right" @click.stop="arrTransfer(index)"> <div v-if="index != nodeConfig.conditionNodes.length - 1" @click.stop="arrTransfer(index)" class="sort-right">
<el-icon> <el-icon>
<el-icon-arrow-right /> <el-icon-arrow-right />
</el-icon> </el-icon>
@ -41,7 +41,7 @@
</div> </div>
<add-node v-model="nodeConfig.childNode"></add-node> <add-node v-model="nodeConfig.childNode"></add-node>
</div> </div>
<el-drawer v-model="drawer" :size="600" append-to-body destroy-on-close :title="$t('条件设置')"> <el-drawer v-model="drawer" :size="600" :title="$t('条件设置')" append-to-body destroy-on-close>
<template #header> <template #header>
<div class="node-wrap-drawer__title"> <div class="node-wrap-drawer__title">
<label v-if="!isEditTitle" @click="editTitle" <label v-if="!isEditTitle" @click="editTitle"
@ -52,11 +52,11 @@
</label> </label>
<el-input <el-input
v-if="isEditTitle" v-if="isEditTitle"
ref="nodeTitle"
v-model="form.nodeName" v-model="form.nodeName"
clearable
@blur="saveTitle" @blur="saveTitle"
@keyup.enter="saveTitle"></el-input> @keyup.enter="saveTitle"
clearable
ref="nodeTitle"></el-input>
</div> </div>
</template> </template>
<el-container> <el-container>
@ -102,18 +102,18 @@
</el-table-column> </el-table-column>
<el-table-column :label="$t('移除')" prop="value" width="55"> <el-table-column :label="$t('移除')" prop="value" width="55">
<template #default="scope"> <template #default="scope">
<el-link :underline="false" type="danger" @click="deleteConditionList(scope.$index)">移除</el-link> <el-link :underline="false" @click="deleteConditionList(scope.$index)" type="danger">移除</el-link>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
</el-form-item> </el-form-item>
<p> <p>
<el-button icon="el-icon-plus" round type="primary" @click="addConditionList">增加条件</el-button> <el-button @click="addConditionList" icon="el-icon-plus" round type="primary">增加条件</el-button>
</p> </p>
</el-form> </el-form>
</el-main> </el-main>
<el-footer> <el-footer>
<el-button type="primary" @click="save">保存</el-button> <el-button @click="save" type="primary">保存</el-button>
<el-button @click="drawer = false">取消</el-button> <el-button @click="drawer = false">取消</el-button>
</el-footer> </el-footer>
</el-container> </el-container>

View File

@ -1,6 +1,6 @@
<template> <template>
<div class="node-wrap"> <div class="node-wrap">
<div class="node-wrap-box start-node" @click="show"> <div @click="show" class="node-wrap-box start-node">
<div class="title" style="background: #576a95"> <div class="title" style="background: #576a95">
<el-icon class="icon"> <el-icon class="icon">
<el-icon-user-filled /> <el-icon-user-filled />
@ -12,7 +12,7 @@
</div> </div>
</div> </div>
<add-node v-model="nodeConfig.childNode"></add-node> <add-node v-model="nodeConfig.childNode"></add-node>
<el-drawer v-model="drawer" :size="500" append-to-body destroy-on-close :title="$t('发起人')"> <el-drawer v-model="drawer" :size="500" :title="$t('发起人')" append-to-body destroy-on-close>
<template #header> <template #header>
<div class="node-wrap-drawer__title"> <div class="node-wrap-drawer__title">
<label v-if="!isEditTitle" @click="editTitle" <label v-if="!isEditTitle" @click="editTitle"
@ -23,20 +23,20 @@
</label> </label>
<el-input <el-input
v-if="isEditTitle" v-if="isEditTitle"
ref="nodeTitle"
v-model="form.nodeName" v-model="form.nodeName"
clearable
@blur="saveTitle" @blur="saveTitle"
@keyup.enter="saveTitle"></el-input> @keyup.enter="saveTitle"
clearable
ref="nodeTitle"></el-input>
</div> </div>
</template> </template>
<el-container> <el-container>
<el-main style="padding: 0 20px 20px 20px"> <el-main style="padding: 0 20px 20px 20px">
<el-form label-position="top"> <el-form label-position="top">
<el-form-item :label="$t('谁可以发起此审批')"> <el-form-item :label="$t('谁可以发起此审批')">
<el-button icon="el-icon-plus" round type="primary" @click="selectHandle(2, form.nodeRoleList)">选择角色</el-button> <el-button @click="selectHandle(2, form.nodeRoleList)" icon="el-icon-plus" round type="primary">选择角色</el-button>
<div class="tags-list"> <div class="tags-list">
<el-tag v-for="(role, index) in form.nodeRoleList" :key="role.id" closable type="info" @close="delRole(index)" <el-tag v-for="(role, index) in form.nodeRoleList" :key="role.id" @close="delRole(index)" closable type="info"
>{{ role.name }} >{{ role.name }}
</el-tag> </el-tag>
</div> </div>
@ -49,7 +49,7 @@
</el-form> </el-form>
</el-main> </el-main>
<el-footer> <el-footer>
<el-button type="primary" @click="save">保存</el-button> <el-button @click="save" type="primary">保存</el-button>
<el-button @click="drawer = false">取消</el-button> <el-button @click="drawer = false">取消</el-button>
</el-footer> </el-footer>
</el-container> </el-container>

View File

@ -1,12 +1,12 @@
<template> <template>
<div class="node-wrap"> <div class="node-wrap">
<div class="node-wrap-box" @click="show"> <div @click="show" class="node-wrap-box">
<div class="title" style="background: #3296fa"> <div class="title" style="background: #3296fa">
<el-icon class="icon"> <el-icon class="icon">
<el-icon-promotion /> <el-icon-promotion />
</el-icon> </el-icon>
<span>{{ nodeConfig.nodeName }}</span> <span>{{ nodeConfig.nodeName }}</span>
<el-icon class="close" @click.stop="delNode()"> <el-icon @click.stop="delNode()" class="close">
<el-icon-close /> <el-icon-close />
</el-icon> </el-icon>
</div> </div>
@ -16,7 +16,7 @@
</div> </div>
</div> </div>
<add-node v-model="nodeConfig.childNode"></add-node> <add-node v-model="nodeConfig.childNode"></add-node>
<el-drawer v-model="drawer" :size="500" append-to-body destroy-on-close :title="$t('抄送人设置')"> <el-drawer v-model="drawer" :size="500" :title="$t('抄送人设置')" append-to-body destroy-on-close>
<template #header> <template #header>
<div class="node-wrap-drawer__title"> <div class="node-wrap-drawer__title">
<label v-if="!isEditTitle" @click="editTitle" <label v-if="!isEditTitle" @click="editTitle"
@ -27,20 +27,20 @@
</label> </label>
<el-input <el-input
v-if="isEditTitle" v-if="isEditTitle"
ref="nodeTitle"
v-model="form.nodeName" v-model="form.nodeName"
clearable
@blur="saveTitle" @blur="saveTitle"
@keyup.enter="saveTitle"></el-input> @keyup.enter="saveTitle"
clearable
ref="nodeTitle"></el-input>
</div> </div>
</template> </template>
<el-container> <el-container>
<el-main style="padding: 0 20px 20px 20px"> <el-main style="padding: 0 20px 20px 20px">
<el-form label-position="top"> <el-form label-position="top">
<el-form-item :label="$t('选择要抄送的人员')"> <el-form-item :label="$t('选择要抄送的人员')">
<el-button icon="el-icon-plus" round type="primary" @click="selectHandle(1, form.nodeUserList)">选择人员</el-button> <el-button @click="selectHandle(1, form.nodeUserList)" icon="el-icon-plus" round type="primary">选择人员</el-button>
<div class="tags-list"> <div class="tags-list">
<el-tag v-for="(user, index) in form.nodeUserList" :key="user.id" closable @close="delUser(index)" <el-tag v-for="(user, index) in form.nodeUserList" :key="user.id" @close="delUser(index)" closable
>{{ user.name }} >{{ user.name }}
</el-tag> </el-tag>
</div> </div>
@ -51,7 +51,7 @@
</el-form> </el-form>
</el-main> </el-main>
<el-footer> <el-footer>
<el-button type="primary" @click="save">保存</el-button> <el-button @click="save" type="primary">保存</el-button>
<el-button @click="drawer = false">取消</el-button> <el-button @click="drawer = false">取消</el-button>
</el-footer> </el-footer>
</el-container> </el-container>

View File

@ -3,16 +3,16 @@
v-model="dialogVisible" v-model="dialogVisible"
:title="titleMap[type - 1]" :title="titleMap[type - 1]"
:width="type == 1 ? 680 : 460" :width="type == 1 ? 680 : 460"
@closed="$emit('closed')"
append-to-body append-to-body
destroy-on-close destroy-on-close>
@closed="$emit('closed')">
<template v-if="type === 1"> <template v-if="type === 1">
<div class="sc-user-select"> <div class="sc-user-select">
<div class="sc-user-select__left"> <div class="sc-user-select__left">
<div class="sc-user-select__search"> <div class="sc-user-select__search">
<el-input v-model="keyword" :placeholder="$t('搜索成员')" prefix-icon="el-icon-search"> <el-input v-model="keyword" :placeholder="$t('搜索成员')" prefix-icon="el-icon-search">
<template #append> <template #append>
<el-button icon="el-icon-search" @click="search"></el-button> <el-button @click="search" icon="el-icon-search"></el-button>
</template> </template>
</el-input> </el-input>
</div> </div>
@ -20,30 +20,30 @@
<div v-loading="showGrouploading" class="sc-user-select__tree"> <div v-loading="showGrouploading" class="sc-user-select__tree">
<el-scrollbar> <el-scrollbar>
<el-tree <el-tree
ref="groupTree"
:current-node-key="groupId" :current-node-key="groupId"
:data="group" :data="group"
:expand-on-click-node="false" :expand-on-click-node="false"
:node-key="groupProps.key" :node-key="groupProps.key"
:props="groupProps" :props="groupProps"
@node-click="groupClick"
class="menu" class="menu"
highlight-current highlight-current
@node-click="groupClick" /> ref="groupTree" />
</el-scrollbar> </el-scrollbar>
</div> </div>
<div v-loading="showUserloading" class="sc-user-select__user"> <div v-loading="showUserloading" class="sc-user-select__user">
<div class="sc-user-select__user__list"> <div class="sc-user-select__user__list">
<el-scrollbar ref="userScrollbar"> <el-scrollbar ref="userScrollbar">
<el-tree <el-tree
ref="userTree"
:data="user" :data="user"
:default-checked-keys="selectedIds" :default-checked-keys="selectedIds"
:node-key="userProps.key" :node-key="userProps.key"
:props="userProps" :props="userProps"
@check-change="userClick"
check-on-click-node check-on-click-node
class="menu" class="menu"
show-checkbox ref="userTree"
@check-change="userClick"></el-tree> show-checkbox></el-tree>
</el-scrollbar> </el-scrollbar>
</div> </div>
<footer> <footer>
@ -51,10 +51,10 @@
v-model:currentPage="currentPage" v-model:currentPage="currentPage"
:page-size="pageSize" :page-size="pageSize"
:total="total" :total="total"
@current-change="paginationChange"
background background
layout="prev,next" layout="prev,next"
small small></el-pagination>
@current-change="paginationChange"></el-pagination>
</footer> </footer>
</div> </div>
</div> </div>
@ -74,7 +74,7 @@
<label>{{ item.name }}</label> <label>{{ item.name }}</label>
</span> </span>
<span class="delete"> <span class="delete">
<el-button circle icon="el-icon-delete" size="small" type="danger" @click="deleteSelected(index)"></el-button> <el-button @click="deleteSelected(index)" circle icon="el-icon-delete" size="small" type="danger"></el-button>
</span> </span>
</li> </li>
</el-scrollbar> </el-scrollbar>
@ -90,17 +90,17 @@
<div v-loading="showGrouploading" class="sc-user-select__tree"> <div v-loading="showGrouploading" class="sc-user-select__tree">
<el-scrollbar> <el-scrollbar>
<el-tree <el-tree
ref="groupTree"
:data="role" :data="role"
:default-checked-keys="selectedIds" :default-checked-keys="selectedIds"
:expand-on-click-node="false" :expand-on-click-node="false"
:node-key="roleProps.key" :node-key="roleProps.key"
:props="roleProps" :props="roleProps"
@check-change="roleClick"
check-on-click-node check-on-click-node
check-strictly check-strictly
class="menu" class="menu"
show-checkbox ref="groupTree"
@check-change="roleClick" /> show-checkbox />
</el-scrollbar> </el-scrollbar>
</div> </div>
</div> </div>
@ -119,7 +119,7 @@
<label>{{ item.name }}</label> <label>{{ item.name }}</label>
</span> </span>
<span class="delete"> <span class="delete">
<el-button circle icon="el-icon-delete" size="small" type="danger" @click="deleteSelected(index)"></el-button> <el-button @click="deleteSelected(index)" circle icon="el-icon-delete" size="small" type="danger"></el-button>
</span> </span>
</li> </li>
</el-scrollbar> </el-scrollbar>
@ -130,7 +130,7 @@
<template #footer> <template #footer>
<el-button @click="dialogVisible = false"> </el-button> <el-button @click="dialogVisible = false"> </el-button>
<el-button type="primary" @click="save"> </el-button> <el-button @click="save" type="primary"> </el-button>
</template> </template>
</el-dialog> </el-dialog>
</template> </template>

File diff suppressed because one or more lines are too long

View File

@ -6,7 +6,7 @@ export default {
vue.loading = true vue.loading = true
vue.dialog.save = true vue.dialog.save = true
await vue.$nextTick() await vue.$nextTick()
vue.$refs.saveDialog.open('view', row) await vue.$refs.saveDialog.open('view', row)
vue.loading = false vue.loading = false
}, },
}, },
@ -16,7 +16,7 @@ export default {
vue.loading = true vue.loading = true
vue.dialog.save = true vue.dialog.save = true
await vue.$nextTick() await vue.$nextTick()
vue.$refs.saveDialog.open('edit', row) await vue.$refs.saveDialog.open('edit', row)
vue.loading = false vue.loading = false
}, },
}, },

View File

@ -7,7 +7,7 @@ import copy from '@/directives/copy'
import errorHandler from '@/utils/errorHandler' import errorHandler from '@/utils/errorHandler'
import http from '@/utils/request' import http from '@/utils/request'
import naArea from '@/components/naArea/index.vue' import naArea from '@/components/naArea/index.vue'
import naUser from '@/components/naUser/index.vue' import naUserSelect from '@/components/naUserSelect/index.vue'
import naButtonAdd from '@/components/naButtonAdd/index.vue' import naButtonAdd from '@/components/naButtonAdd/index.vue'
import naButtonBatchDel from '@/components/naButtonBatchDel/index.vue' import naButtonBatchDel from '@/components/naButtonBatchDel/index.vue'
import naColAvatar from '@/components/naColAvatar' import naColAvatar from '@/components/naColAvatar'
@ -95,7 +95,7 @@ export default {
app.component('naButtonBatchDel', naButtonBatchDel) app.component('naButtonBatchDel', naButtonBatchDel)
app.component('naFormEmail', naFormEmail) app.component('naFormEmail', naFormEmail)
app.component('naColTime', naColTime) app.component('naColTime', naColTime)
app.component('naUser', naUser) app.component('naUserSelect', naUserSelect)
//注册全局指令 //注册全局指令
app.directive('auth', auth) app.directive('auth', auth)

View File

@ -1,10 +1,10 @@
<template> <template>
<div v-if="navMenus.length <= 0" style="padding: 20px"> <div v-if="navMenus.length <= 0" style="padding: 20px">
<el-alert :closable="false" center :title="$t('无子集菜单')" type="info"></el-alert> <el-alert :closable="false" :title="$t('无子集菜单')" center type="info"></el-alert>
</div> </div>
<template v-for="navMenu in navMenus" v-bind:key="navMenu"> <template v-bind:key="navMenu" v-for="navMenu in navMenus">
<el-menu-item v-if="!hasChildren(navMenu)" :index="navMenu.path"> <el-menu-item v-if="!hasChildren(navMenu)" :index="navMenu.path">
<a v-if="navMenu.meta && navMenu.meta.type == 'link'" :href="navMenu.path" target="_blank" @click.stop="() => {}"></a> <a v-if="navMenu.meta && navMenu.meta.type == 'link'" :href="navMenu.path" @click.stop="() => {}" target="_blank"></a>
<el-icon v-if="navMenu.meta && navMenu.meta.icon"> <el-icon v-if="navMenu.meta && navMenu.meta.icon">
<component :is="navMenu.meta.icon || 'el-icon-menu'" /> <component :is="navMenu.meta.icon || 'el-icon-menu'" />
</el-icon> </el-icon>

View File

@ -1,23 +1,23 @@
<template> <template>
<div class="sc-search"> <div class="sc-search">
<el-input <el-input
ref="input"
v-model="input" v-model="input"
:trigger-on-focus="false"
clearable
:placeholder="$t('搜索')" :placeholder="$t('搜索')"
:trigger-on-focus="false"
@input="inputChange"
clearable
prefix-icon="el-icon-search" prefix-icon="el-icon-search"
size="large" ref="input"
@input="inputChange" /> size="large" />
<div v-if="history.length > 0" class="sc-search-history"> <div v-if="history.length > 0" class="sc-search-history">
<el-tag <el-tag
v-for="(item, index) in history" v-for="(item, index) in history"
:key="item" :key="item"
@click="historyClick(item)"
@close="historyClose(index)"
closable closable
effect="dark" effect="dark"
type="info" type="info"
@click="historyClick(item)"
@close="historyClose(index)"
>{{ item }} >{{ item }}
</el-tag> </el-tag>
</div> </div>

View File

@ -1,11 +1,11 @@
<template> <template>
<div v-drag class="mobile-nav-button" draggable="false" @click="showMobileNav($event)"> <div v-drag @click="showMobileNav($event)" class="mobile-nav-button" draggable="false">
<el-icon> <el-icon>
<el-icon-menu /> <el-icon-menu />
</el-icon> </el-icon>
</div> </div>
<el-drawer ref="mobileNavBox" v-model="nav" :size="240" :with-header="false" destroy-on-close direction="ltr" :title="$t('移动端菜单')"> <el-drawer v-model="nav" :size="240" :title="$t('移动端菜单')" :with-header="false" destroy-on-close direction="ltr" ref="mobileNavBox">
<el-container class="mobile-nav"> <el-container class="mobile-nav">
<el-header> <el-header>
<div class="logo-bar"> <div class="logo-bar">
@ -16,11 +16,11 @@
<el-scrollbar> <el-scrollbar>
<el-menu <el-menu
:default-active="$route.meta.active || $route.fullPath" :default-active="$route.meta.active || $route.fullPath"
@select="select"
active-text-color="#409EFF" active-text-color="#409EFF"
background-color="#212d3d" background-color="#212d3d"
router router
text-color="#fff" text-color="#fff">
@select="select">
<NavMenu :navMenus="menu"></NavMenu> <NavMenu :navMenus="menu"></NavMenu>
</el-menu> </el-menu>
</el-scrollbar> </el-scrollbar>

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