mirror of
https://github.com/nsnail/NetAdmin.git
synced 2025-06-16 17:03:21 +08:00
style: 💄 代码整理 (#88)
This commit is contained in:
parent
8293ec0297
commit
6f32acaacf
@ -15,17 +15,21 @@ XML注释文件不存在
|
||||
唯一编码不能为空
|
||||
图标代码不能为空
|
||||
图标名称不能为空
|
||||
婚姻状况不正确
|
||||
字典名称不能为空
|
||||
字典目录不存在
|
||||
字典目录编号不能为空
|
||||
字典编码不能为空
|
||||
学历不正确
|
||||
密码不能为空
|
||||
已处理完毕
|
||||
开始事务
|
||||
性别不正确
|
||||
手机号码不正确
|
||||
手机号码不能为空
|
||||
接口编码不存在
|
||||
支付宝账号
|
||||
政治面貌不正确
|
||||
数据库同步开始
|
||||
数据库服务器时钟偏移
|
||||
数据库结构同步完成
|
||||
@ -47,6 +51,7 @@ XML注释文件不存在
|
||||
未获取到待执行任务
|
||||
模块名称不能为空
|
||||
模块说明不能为空
|
||||
民族不正确
|
||||
消息主题不能为空
|
||||
消息内容不能为空
|
||||
父节点不存在
|
||||
@ -61,16 +66,21 @@ XML注释文件不存在
|
||||
目标设备不能为空
|
||||
短信验证请求不能为空
|
||||
站内信不存在
|
||||
站内信状态不正确
|
||||
站内信类型不正确
|
||||
签名缺失
|
||||
网络地址不正确
|
||||
菜单名称不能为空
|
||||
菜单标题不能为空
|
||||
菜单类型不正确
|
||||
菜单编号不能为空
|
||||
角色不存在
|
||||
角色名称不能为空
|
||||
角色数据范围不正确
|
||||
角色编号不能为空
|
||||
角色编号列表不能为空
|
||||
设备类型不能为空
|
||||
证件类型不正确
|
||||
该角色下存在用户
|
||||
该部门下存在子部门
|
||||
该部门下存在用户
|
||||
@ -90,4 +100,6 @@ XML注释文件不存在
|
||||
验证数据不能为空
|
||||
验证码不正确
|
||||
验证码不能为空
|
||||
验证码目标设备类型不正确
|
||||
验证码类型不正确
|
||||
验证码类型不能为空
|
@ -10,7 +10,7 @@ public interface IService
|
||||
/// <summary>
|
||||
/// 服务编号
|
||||
/// </summary>
|
||||
Guid ServiceId { get; set; }
|
||||
Guid ServiceId { get; init; }
|
||||
|
||||
/// <summary>
|
||||
/// 上下文用户令牌
|
||||
|
@ -34,7 +34,7 @@ public abstract class ServiceBase : IScoped, IService
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public Guid ServiceId { get; set; }
|
||||
public Guid ServiceId { get; init; }
|
||||
|
||||
/// <inheritdoc />
|
||||
public ContextUserToken UserToken { get; set; }
|
||||
|
@ -52,7 +52,7 @@ public abstract class DistributedCache<TService> : CacheBase<IDistributedCache,
|
||||
/// <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}";
|
||||
}
|
||||
|
@ -13,5 +13,5 @@ public interface IFieldCreatedUser
|
||||
/// <summary>
|
||||
/// 创建者用户名
|
||||
/// </summary>
|
||||
string CreatedUserName { get; set; }
|
||||
string CreatedUserName { get; init; }
|
||||
}
|
@ -26,7 +26,7 @@ public abstract record ImmutableEntity<T> : LiteImmutableEntity<T>, IFieldCreate
|
||||
/// <inheritdoc cref="IFieldCreatedUser.CreatedUserName" />
|
||||
[JsonIgnore]
|
||||
[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" />
|
||||
[Column(IsIdentity = false, IsPrimary = true, Position = 1)]
|
||||
|
@ -25,7 +25,7 @@ public abstract record VersionEntity<T> : LiteVersionEntity<T>, IFieldModifiedUs
|
||||
/// <inheritdoc />
|
||||
[JsonIgnore]
|
||||
[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" />
|
||||
[Column(IsIdentity = false, IsPrimary = true, Position = 1)]
|
||||
|
@ -21,7 +21,7 @@ public record Sys_Config : VersionEntity, IFieldEnabled
|
||||
/// </summary>
|
||||
[JsonIgnore]
|
||||
[Column]
|
||||
public virtual bool UserRegisterConfirm { get; set; }
|
||||
public virtual bool UserRegisterConfirm { get; init; }
|
||||
|
||||
/// <summary>
|
||||
/// 用户注册默认部门
|
||||
|
@ -15,21 +15,21 @@ public record Sys_JobRecord : LiteImmutableEntity
|
||||
/// </summary>
|
||||
[Column]
|
||||
[JsonIgnore]
|
||||
public virtual long Duration { get; init; }
|
||||
public long Duration { get; init; }
|
||||
|
||||
/// <summary>
|
||||
/// 请求方法
|
||||
/// </summary>
|
||||
[JsonIgnore]
|
||||
[Column]
|
||||
public virtual HttpMethods HttpMethod { get; init; }
|
||||
public HttpMethods HttpMethod { get; init; }
|
||||
|
||||
/// <summary>
|
||||
/// HTTP 状态码
|
||||
/// </summary>
|
||||
[Column]
|
||||
[JsonIgnore]
|
||||
public virtual HttpStatusCode HttpStatusCode { get; init; }
|
||||
public HttpStatusCode HttpStatusCode { get; init; }
|
||||
|
||||
/// <summary>
|
||||
/// 作业编号
|
||||
@ -43,40 +43,40 @@ public record Sys_JobRecord : LiteImmutableEntity
|
||||
/// </summary>
|
||||
[Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)]
|
||||
[JsonIgnore]
|
||||
public virtual string RequestBody { get; init; }
|
||||
public string RequestBody { get; init; }
|
||||
|
||||
/// <summary>
|
||||
/// 请求头
|
||||
/// </summary>
|
||||
[Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)]
|
||||
[JsonIgnore]
|
||||
public virtual string RequestHeader { get; init; }
|
||||
public string RequestHeader { get; init; }
|
||||
|
||||
/// <summary>
|
||||
/// 请求的网络地址
|
||||
/// </summary>
|
||||
[Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_127)]
|
||||
[JsonIgnore]
|
||||
public virtual string RequestUrl { get; init; }
|
||||
public string RequestUrl { get; init; }
|
||||
|
||||
/// <summary>
|
||||
/// 响应体
|
||||
/// </summary>
|
||||
[Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)]
|
||||
[JsonIgnore]
|
||||
public virtual string ResponseBody { get; init; }
|
||||
public string ResponseBody { get; init; }
|
||||
|
||||
/// <summary>
|
||||
/// 响应头
|
||||
/// </summary>
|
||||
[Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)]
|
||||
[JsonIgnore]
|
||||
public virtual string ResponseHeader { get; init; }
|
||||
public string ResponseHeader { get; init; }
|
||||
|
||||
/// <summary>
|
||||
/// 执行时间编号
|
||||
/// </summary>
|
||||
[Column]
|
||||
[JsonIgnore]
|
||||
public long TimeId { get; set; }
|
||||
public long TimeId { get; init; }
|
||||
}
|
@ -23,21 +23,21 @@ public record Sys_SiteMsg : VersionEntity, IRegister, IFieldSummary
|
||||
/// </summary>
|
||||
[JsonIgnore]
|
||||
[Navigate(nameof(CreatedUserId))]
|
||||
public virtual Sys_User Creator { get; init; }
|
||||
public Sys_User Creator { get; init; }
|
||||
|
||||
/// <summary>
|
||||
/// 消息-部门映射
|
||||
/// </summary>
|
||||
[JsonIgnore]
|
||||
[Navigate(ManyToMany = typeof(Sys_SiteMsgDept))]
|
||||
public virtual ICollection<Sys_Dept> Depts { get; init; }
|
||||
public ICollection<Sys_Dept> Depts { get; init; }
|
||||
|
||||
/// <summary>
|
||||
/// 消息-标记映射
|
||||
/// </summary>
|
||||
[JsonIgnore]
|
||||
[Navigate(nameof(Sys_SiteMsgFlag.SiteMsgId))]
|
||||
public ICollection<Sys_SiteMsgFlag> Flags { get; set; }
|
||||
public ICollection<Sys_SiteMsgFlag> Flags { get; init; }
|
||||
|
||||
/// <summary>
|
||||
/// 消息类型
|
||||
@ -50,7 +50,7 @@ public record Sys_SiteMsg : VersionEntity, IRegister, IFieldSummary
|
||||
/// </summary>
|
||||
[JsonIgnore]
|
||||
[Navigate(ManyToMany = typeof(Sys_SiteMsgRole))]
|
||||
public virtual ICollection<Sys_Role> Roles { get; init; }
|
||||
public ICollection<Sys_Role> Roles { get; init; }
|
||||
|
||||
/// <summary>
|
||||
/// 消息摘要
|
||||
@ -71,7 +71,7 @@ public record Sys_SiteMsg : VersionEntity, IRegister, IFieldSummary
|
||||
/// </summary>
|
||||
[JsonIgnore]
|
||||
[Navigate(ManyToMany = typeof(Sys_SiteMsgUser))]
|
||||
public virtual ICollection<Sys_User> Users { get; init; }
|
||||
public ICollection<Sys_User> Users { get; init; }
|
||||
|
||||
/// <inheritdoc />
|
||||
public void Register(TypeAdapterConfig config)
|
||||
|
@ -20,7 +20,7 @@ public record Sys_SiteMsgDept : ImmutableEntity
|
||||
/// </summary>
|
||||
[JsonIgnore]
|
||||
[Column]
|
||||
public virtual long DeptId { get; init; }
|
||||
public long DeptId { get; init; }
|
||||
|
||||
/// <summary>
|
||||
/// 关联的站内信
|
||||
@ -33,5 +33,5 @@ public record Sys_SiteMsgDept : ImmutableEntity
|
||||
/// </summary>
|
||||
[JsonIgnore]
|
||||
[Column]
|
||||
public virtual long SiteMsgId { get; init; }
|
||||
public long SiteMsgId { get; init; }
|
||||
}
|
@ -14,17 +14,17 @@ public record Sys_SiteMsgFlag : MutableEntity
|
||||
/// 站内信编号
|
||||
/// </summary>
|
||||
[JsonIgnore]
|
||||
public virtual long SiteMsgId { get; set; }
|
||||
public virtual long SiteMsgId { get; init; }
|
||||
|
||||
/// <summary>
|
||||
/// 用户编号
|
||||
/// </summary>
|
||||
[JsonIgnore]
|
||||
public virtual long UserId { get; init; }
|
||||
public long UserId { get; init; }
|
||||
|
||||
/// <summary>
|
||||
/// 用户站内信状态
|
||||
/// </summary>
|
||||
[JsonIgnore]
|
||||
public virtual UserSiteMsgStatues UserSiteMsgStatus { get; set; }
|
||||
public virtual UserSiteMsgStatues UserSiteMsgStatus { get; init; }
|
||||
}
|
@ -20,7 +20,7 @@ public record Sys_SiteMsgRole : ImmutableEntity
|
||||
/// </summary>
|
||||
[JsonIgnore]
|
||||
[Column]
|
||||
public virtual long RoleId { get; init; }
|
||||
public long RoleId { get; init; }
|
||||
|
||||
/// <summary>
|
||||
/// 关联的站内信
|
||||
@ -33,5 +33,5 @@ public record Sys_SiteMsgRole : ImmutableEntity
|
||||
/// </summary>
|
||||
[JsonIgnore]
|
||||
[Column]
|
||||
public virtual long SiteMsgId { get; init; }
|
||||
public long SiteMsgId { get; init; }
|
||||
}
|
@ -20,7 +20,7 @@ public record Sys_SiteMsgUser : ImmutableEntity
|
||||
/// </summary>
|
||||
[JsonIgnore]
|
||||
[Column]
|
||||
public virtual long SiteMsgId { get; init; }
|
||||
public long SiteMsgId { get; init; }
|
||||
|
||||
/// <summary>
|
||||
/// 关联的用户
|
||||
@ -33,5 +33,5 @@ public record Sys_SiteMsgUser : ImmutableEntity
|
||||
/// </summary>
|
||||
[JsonIgnore]
|
||||
[Column]
|
||||
public virtual long UserId { get; init; }
|
||||
public long UserId { get; init; }
|
||||
}
|
@ -10,27 +10,27 @@ public record DynamicFilterInfo : DataAbstraction
|
||||
/// <summary>
|
||||
/// 字段名
|
||||
/// </summary>
|
||||
public string Field { get; set; }
|
||||
public string Field { get; init; }
|
||||
|
||||
/// <summary>
|
||||
/// 子过滤条件
|
||||
/// </summary>
|
||||
public List<DynamicFilterInfo> Filters { get; set; }
|
||||
public List<DynamicFilterInfo> Filters { get; init; }
|
||||
|
||||
/// <summary>
|
||||
/// 子过滤条件逻辑关系
|
||||
/// </summary>
|
||||
public DynamicFilterLogics Logic { get; set; }
|
||||
public DynamicFilterLogics Logic { get; init; }
|
||||
|
||||
/// <summary>
|
||||
/// 操作符
|
||||
/// </summary>
|
||||
public DynamicFilterOperators Operator { get; set; }
|
||||
public DynamicFilterOperators Operator { get; init; }
|
||||
|
||||
/// <summary>
|
||||
/// 值
|
||||
/// </summary>
|
||||
public object Value { get; set; }
|
||||
public object Value { get; init; }
|
||||
|
||||
/// <summary>
|
||||
/// 隐式转换为 FreeSql 的 DynamicFilterInfo 对象
|
||||
|
@ -25,7 +25,7 @@ public record QueryReq<T> : DataAbstraction
|
||||
/// <summary>
|
||||
/// 查询关键字
|
||||
/// </summary>
|
||||
public string Keywords { get; set; }
|
||||
public string Keywords { get; init; }
|
||||
|
||||
/// <summary>
|
||||
/// 排序方式
|
||||
|
@ -19,5 +19,5 @@ public record RestfulInfo<T> : DataAbstraction
|
||||
/// <summary>
|
||||
/// 消息
|
||||
/// </summary>
|
||||
public virtual object Msg { get; init; }
|
||||
public object Msg { get; init; }
|
||||
}
|
@ -14,7 +14,7 @@ public record CreateConfigReq : Sys_Config
|
||||
|
||||
/// <inheritdoc cref="Sys_Config.UserRegisterConfirm" />
|
||||
[JsonIgnore(Condition = JsonIgnoreCondition.Never)]
|
||||
public override bool UserRegisterConfirm { get; set; }
|
||||
public override bool UserRegisterConfirm { get; init; }
|
||||
|
||||
/// <inheritdoc cref="Sys_Config.UserRegisterDeptId" />
|
||||
[JsonIgnore(Condition = JsonIgnoreCondition.Never)]
|
||||
|
@ -20,7 +20,7 @@ public sealed record QueryConfigRsp : Sys_Config
|
||||
|
||||
/// <inheritdoc cref="Sys_Config.UserRegisterConfirm" />
|
||||
[JsonIgnore(Condition = JsonIgnoreCondition.Never)]
|
||||
public override bool UserRegisterConfirm { get; set; }
|
||||
public override bool UserRegisterConfirm { get; init; }
|
||||
|
||||
/// <inheritdoc cref="Sys_Config.UserRegisterDept" />
|
||||
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
|
||||
|
@ -3,4 +3,4 @@ namespace NetAdmin.Domain.Dto.Sys.JobRecord;
|
||||
/// <summary>
|
||||
/// 请求:更新计划作业执行记录
|
||||
/// </summary>
|
||||
public sealed record UpdateJobRecordReq : CreateJobRecordReq { }
|
||||
public sealed record UpdateJobRecordReq : CreateJobRecordReq;
|
@ -66,6 +66,7 @@ public sealed record MetaInfo : DataAbstraction
|
||||
/// <summary>
|
||||
/// 类型
|
||||
/// </summary>
|
||||
[EnumDataType(typeof(MenuTypes))]
|
||||
[EnumDataType(typeof(MenuTypes), ErrorMessageResourceType = typeof(Ln)
|
||||
, ErrorMessageResourceName = nameof(Ln.菜单类型不正确))]
|
||||
public MenuTypes Type { get; init; }
|
||||
}
|
@ -37,7 +37,7 @@ public sealed record QueryRequestLogRsp : Sys_RequestLog, IRegister
|
||||
|
||||
/// <inheritdoc cref="IFieldCreatedUser.CreatedUserName" />
|
||||
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
|
||||
public override string CreatedUserName { get; set; }
|
||||
public override string CreatedUserName { get; init; }
|
||||
|
||||
/// <inheritdoc cref="Sys_RequestLog.Duration" />
|
||||
[JsonIgnore(Condition = JsonIgnoreCondition.Never)]
|
||||
@ -102,6 +102,6 @@ public sealed record QueryRequestLogRsp : Sys_RequestLog, IRegister
|
||||
/// <inheritdoc />
|
||||
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);
|
||||
}
|
||||
}
|
@ -16,7 +16,8 @@ public record CreateRoleReq : Sys_Role
|
||||
public IReadOnlyCollection<string> ApiIds { get; init; }
|
||||
|
||||
/// <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;
|
||||
|
||||
/// <summary>
|
||||
|
@ -22,7 +22,8 @@ public record CreateSiteMsgReq : Sys_SiteMsg
|
||||
|
||||
/// <inheritdoc cref="Sys_SiteMsg.MsgType" />
|
||||
[JsonIgnore(Condition = JsonIgnoreCondition.Never)]
|
||||
[EnumDataType(typeof(SiteMsgTypes))]
|
||||
[EnumDataType(typeof(SiteMsgTypes), ErrorMessageResourceType = typeof(Ln)
|
||||
, ErrorMessageResourceName = nameof(Ln.站内信类型不正确))]
|
||||
public override SiteMsgTypes MsgType { get; init; }
|
||||
|
||||
/// <summary>
|
||||
|
@ -40,7 +40,7 @@ public sealed record QuerySiteMsgRsp : Sys_SiteMsg
|
||||
/// <summary>
|
||||
/// 我的标记
|
||||
/// </summary>
|
||||
public QuerySiteMsgFlagRsp MyFlags { get; set; }
|
||||
public QuerySiteMsgFlagRsp MyFlags { get; init; }
|
||||
|
||||
/// <inheritdoc cref="Sys_SiteMsg.Roles" />
|
||||
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
|
||||
|
@ -10,10 +10,11 @@ public record CreateSiteMsgFlagReq : Sys_SiteMsgFlag
|
||||
{
|
||||
/// <inheritdoc cref="Sys_SiteMsgFlag.SiteMsgId" />
|
||||
[JsonIgnore(Condition = JsonIgnoreCondition.Never)]
|
||||
public override long SiteMsgId { get; set; }
|
||||
public override long SiteMsgId { get; init; }
|
||||
|
||||
/// <inheritdoc cref="Sys_SiteMsgFlag.UserSiteMsgStatus" />
|
||||
[JsonIgnore(Condition = JsonIgnoreCondition.Never)]
|
||||
[EnumDataType(typeof(UserSiteMsgStatues))]
|
||||
public override UserSiteMsgStatues UserSiteMsgStatus { get; set; }
|
||||
[EnumDataType(typeof(UserSiteMsgStatues), ErrorMessageResourceType = typeof(Ln)
|
||||
, ErrorMessageResourceName = nameof(Ln.站内信状态不正确))]
|
||||
public override UserSiteMsgStatues UserSiteMsgStatus { get; init; }
|
||||
}
|
@ -15,5 +15,5 @@ public sealed record QuerySiteMsgFlagRsp : Sys_SiteMsgFlag
|
||||
|
||||
/// <inheritdoc />
|
||||
[JsonIgnore(Condition = JsonIgnoreCondition.Never)]
|
||||
public override UserSiteMsgStatues UserSiteMsgStatus { get; set; }
|
||||
public override UserSiteMsgStatues UserSiteMsgStatus { get; init; }
|
||||
}
|
@ -13,5 +13,5 @@ public record GetModulesRsp : DataAbstraction
|
||||
/// <summary>
|
||||
/// 模块版本
|
||||
/// </summary>
|
||||
public string Version { get; set; }
|
||||
public string Version { get; init; }
|
||||
}
|
@ -33,5 +33,5 @@ public record RegisterUserReq : Sys_User
|
||||
/// 短信验证请求
|
||||
/// </summary>
|
||||
[Required(ErrorMessageResourceType = typeof(Ln), ErrorMessageResourceName = nameof(Ln.短信验证请求不能为空))]
|
||||
public VerifySmsCodeReq VerifySmsCodeReq { get; set; }
|
||||
public VerifySmsCodeReq VerifySmsCodeReq { get; init; }
|
||||
}
|
@ -19,7 +19,8 @@ public record CreateUserProfileReq : Sys_UserProfile
|
||||
public override string CertificateNumber { get; init; }
|
||||
|
||||
/// <inheritdoc cref="Sys_UserProfile.CertificateType" />
|
||||
[EnumDataType(typeof(CertificateTypes))]
|
||||
[EnumDataType(typeof(CertificateTypes), ErrorMessageResourceType = typeof(Ln)
|
||||
, ErrorMessageResourceName = nameof(Ln.证件类型不正确))]
|
||||
[JsonIgnore(Condition = JsonIgnoreCondition.Never)]
|
||||
public override CertificateTypes? CertificateType { get; init; }
|
||||
|
||||
@ -40,7 +41,8 @@ public record CreateUserProfileReq : Sys_UserProfile
|
||||
public override string CompanyTelephone { get; init; }
|
||||
|
||||
/// <inheritdoc cref="Sys_UserProfile.Education" />
|
||||
[EnumDataType(typeof(Educations))]
|
||||
[EnumDataType(typeof(Educations), ErrorMessageResourceType = typeof(Ln)
|
||||
, ErrorMessageResourceName = nameof(Ln.学历不正确))]
|
||||
[JsonIgnore(Condition = JsonIgnoreCondition.Never)]
|
||||
public override Educations? Education { get; init; }
|
||||
|
||||
@ -82,12 +84,13 @@ public record CreateUserProfileReq : Sys_UserProfile
|
||||
public override string HomeTelephone { get; init; }
|
||||
|
||||
/// <inheritdoc cref="Sys_UserProfile.MarriageStatus" />
|
||||
[EnumDataType(typeof(MarriageStatues))]
|
||||
[EnumDataType(typeof(MarriageStatues), ErrorMessageResourceType = typeof(Ln)
|
||||
, ErrorMessageResourceName = nameof(Ln.婚姻状况不正确))]
|
||||
[JsonIgnore(Condition = JsonIgnoreCondition.Never)]
|
||||
public override MarriageStatues? MarriageStatus { get; init; }
|
||||
|
||||
/// <inheritdoc cref="Sys_UserProfile.Nation" />
|
||||
[EnumDataType(typeof(Nations))]
|
||||
[EnumDataType(typeof(Nations), ErrorMessageResourceType = typeof(Ln), ErrorMessageResourceName = nameof(Ln.民族不正确))]
|
||||
[JsonIgnore(Condition = JsonIgnoreCondition.Never)]
|
||||
public override Nations? Nation { get; init; }
|
||||
|
||||
@ -96,7 +99,8 @@ public record CreateUserProfileReq : Sys_UserProfile
|
||||
|
||||
/// <inheritdoc cref="Sys_UserProfile.PoliticalStatus" />
|
||||
[JsonIgnore(Condition = JsonIgnoreCondition.Never)]
|
||||
[EnumDataType(typeof(PoliticalStatues))]
|
||||
[EnumDataType(typeof(PoliticalStatues), ErrorMessageResourceType = typeof(Ln)
|
||||
, ErrorMessageResourceName = nameof(Ln.政治面貌不正确))]
|
||||
public override PoliticalStatues? PoliticalStatus { get; init; }
|
||||
|
||||
/// <inheritdoc cref="Sys_UserProfile.Profession" />
|
||||
@ -108,7 +112,7 @@ public record CreateUserProfileReq : Sys_UserProfile
|
||||
public override string RealName { get; init; }
|
||||
|
||||
/// <inheritdoc cref="Sys_UserProfile.Sex" />
|
||||
[EnumDataType(typeof(Sexes))]
|
||||
[EnumDataType(typeof(Sexes), ErrorMessageResourceType = typeof(Ln), ErrorMessageResourceName = nameof(Ln.性别不正确))]
|
||||
[JsonIgnore(Condition = JsonIgnoreCondition.Never)]
|
||||
public override Sexes? Sex { get; init; }
|
||||
}
|
@ -18,7 +18,8 @@ public sealed record SendVerifyCodeReq : Sys_VerifyCode, IValidatableObject
|
||||
/// <inheritdoc cref="Sys_VerifyCode.DeviceType" />
|
||||
[Required(ErrorMessageResourceType = typeof(Ln), ErrorMessageResourceName = nameof(Ln.设备类型不能为空))]
|
||||
[JsonIgnore(Condition = JsonIgnoreCondition.Never)]
|
||||
[EnumDataType(typeof(VerifyCodeDeviceTypes))]
|
||||
[EnumDataType(typeof(VerifyCodeDeviceTypes), ErrorMessageResourceType = typeof(Ln)
|
||||
, ErrorMessageResourceName = nameof(Ln.验证码目标设备类型不正确))]
|
||||
public override VerifyCodeDeviceTypes DeviceType { get; init; }
|
||||
|
||||
/// <inheritdoc cref="Sys_VerifyCode.Status" />
|
||||
@ -27,7 +28,8 @@ public sealed record SendVerifyCodeReq : Sys_VerifyCode, IValidatableObject
|
||||
/// <inheritdoc cref="Sys_VerifyCode.Type" />
|
||||
[Required(ErrorMessageResourceType = typeof(Ln), ErrorMessageResourceName = nameof(Ln.验证码类型不能为空))]
|
||||
[JsonIgnore(Condition = JsonIgnoreCondition.Never)]
|
||||
[EnumDataType(typeof(VerifyCodeTypes))]
|
||||
[EnumDataType(typeof(VerifyCodeTypes), ErrorMessageResourceType = typeof(Ln)
|
||||
, ErrorMessageResourceName = nameof(Ln.验证码类型不正确))]
|
||||
public override VerifyCodeTypes Type { get; init; }
|
||||
|
||||
/// <summary>
|
||||
|
@ -54,7 +54,7 @@ public abstract class WorkBase<TLogger>
|
||||
/// 通用工作流
|
||||
/// </summary>
|
||||
/// <exception cref="NetAdminGetLockerException">加锁失败异常</exception>
|
||||
protected virtual async ValueTask WorkflowAsync(bool singleInstance, CancellationToken cancelToken)
|
||||
protected async ValueTask WorkflowAsync(bool singleInstance, CancellationToken cancelToken)
|
||||
{
|
||||
if (singleInstance) {
|
||||
// 加锁
|
||||
|
@ -13,10 +13,10 @@ public sealed record InstanceNode
|
||||
/// <summary>
|
||||
/// 数据库
|
||||
/// </summary>
|
||||
public int Database { get; set; }
|
||||
public int Database { get; init; }
|
||||
|
||||
/// <summary>
|
||||
/// 实例名称
|
||||
/// </summary>
|
||||
public string Name { get; set; }
|
||||
public string Name { get; init; }
|
||||
}
|
@ -30,5 +30,5 @@ public abstract class NetAdminException : Exception
|
||||
/// <summary>
|
||||
/// 错误码
|
||||
/// </summary>
|
||||
public ErrorCodes Code { get; set; }
|
||||
public ErrorCodes Code { get; init; }
|
||||
}
|
@ -1,10 +1,13 @@
|
||||
{
|
||||
"tabWidth": 4,
|
||||
"useTabs": false,
|
||||
"attributeGroups": ["^v-", "$DEFAULT"],
|
||||
"attributeSort": "ASC",
|
||||
"bracketSameLine": true,
|
||||
"endOfLine": "auto",
|
||||
"plugins": ["prettier-plugin-organize-attributes"],
|
||||
"printWidth": 150,
|
||||
"semi": false,
|
||||
"singleQuote": true,
|
||||
"tabWidth": 4,
|
||||
"trailingComma": "all",
|
||||
"bracketSameLine": true,
|
||||
"printWidth": 150,
|
||||
"endOfLine": "auto"
|
||||
"useTabs": false
|
||||
}
|
@ -99,7 +99,7 @@
|
||||
<noscript>
|
||||
<strong>We're sorry but NetAdmin doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
|
||||
</noscript>
|
||||
<div id="app" class="aminui">
|
||||
<div class="aminui" id="app">
|
||||
<div class="app-loading">
|
||||
<div class="app-loading__logo">
|
||||
<img alt="" src="/src/assets/img/logo.png" />
|
||||
|
@ -36,6 +36,7 @@
|
||||
"devDependencies": {
|
||||
"@vitejs/plugin-vue": "^5.0.3",
|
||||
"prettier": "^3.2.4",
|
||||
"prettier-plugin-organize-attributes": "^1.0.0",
|
||||
"sass": "^1.70.0",
|
||||
"terser": "^5.27.0",
|
||||
"vite": "^5.0.12"
|
||||
|
@ -1,5 +1,5 @@
|
||||
<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
|
||||
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>
|
||||
|
@ -1,7 +1,25 @@
|
||||
<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
|
||||
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"
|
||||
p-id="9846"></path>
|
||||
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="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>
|
||||
</template>
|
@ -1,5 +1,5 @@
|
||||
<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
|
||||
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>
|
||||
|
@ -1,5 +1,5 @@
|
||||
<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
|
||||
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>
|
||||
|
@ -1,5 +1,5 @@
|
||||
<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
|
||||
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>
|
||||
|
@ -1,5 +1,5 @@
|
||||
<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
|
||||
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>
|
||||
|
@ -1,5 +1,5 @@
|
||||
<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
|
||||
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>
|
||||
|
@ -1,5 +1,5 @@
|
||||
<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
|
||||
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>
|
||||
|
@ -1,5 +1,5 @@
|
||||
<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
|
||||
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>
|
||||
|
@ -1,7 +1,13 @@
|
||||
<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
|
||||
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"
|
||||
p-id="4953"></path>
|
||||
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="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>
|
||||
</template>
|
@ -1,5 +1,5 @@
|
||||
<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
|
||||
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>
|
||||
|
@ -1,5 +1,5 @@
|
||||
<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
|
||||
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>
|
||||
|
@ -1,10 +1,18 @@
|
||||
<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
|
||||
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
|
||||
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>
|
||||
</template>
|
@ -1,56 +1,56 @@
|
||||
export { default as Vue } from './Vue.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 Alert } from './Alert.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 App2 } from './App2.vue'
|
||||
export { default as Sync } from './Sync.vue'
|
||||
export { default as Drone } from './Drone.vue'
|
||||
export { default as Gitea } from './Gitea.vue'
|
||||
export { default as BugFill } from './BugFill.vue'
|
||||
export { default as BugLine } from './BugLine.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 Task } from './Task.vue'
|
||||
export { default as ProductCategory } from './ProductCategory.vue'
|
||||
export { default as Product } from './Product.vue'
|
||||
export { default as Download } from './Download.vue'
|
||||
export { default as Drone } from './Drone.vue'
|
||||
export { default as Elastic } from './Elastic.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 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 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 Alert } from './Alert.vue'
|
||||
export { default as ScheduledJob } from './ScheduledJob.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 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'
|
@ -1,16 +1,16 @@
|
||||
<template>
|
||||
<sc-table-select
|
||||
ref="area"
|
||||
v-model="area"
|
||||
:apiObj="$API.sys_dic.pagedQueryContent"
|
||||
:params="form"
|
||||
:props="{ label: 'key', value: 'value' }"
|
||||
:table-width="600"
|
||||
clearable>
|
||||
clearable
|
||||
ref="area">
|
||||
<template #header>
|
||||
<el-form :model="form">
|
||||
<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>
|
||||
</template>
|
||||
|
@ -1,5 +1,5 @@
|
||||
<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>
|
||||
<style scoped></style>
|
||||
<script>
|
||||
|
@ -1,5 +1,5 @@
|
||||
<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>
|
||||
<style scoped></style>
|
||||
<script>
|
||||
|
@ -1,14 +1,14 @@
|
||||
<template>
|
||||
<el-table-column align="right" :label="$t('操作')">
|
||||
<el-table-column :label="$t('操作')" align="right">
|
||||
<template #default="scope">
|
||||
<el-button-group>
|
||||
<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)">
|
||||
<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>
|
||||
</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 }}
|
||||
</el-button>
|
||||
</template>
|
||||
|
@ -13,17 +13,17 @@
|
||||
<div class="msg-yzm">
|
||||
<el-input
|
||||
v-model="form[Array.isArray(codeField) ? codeField[1] : codeField]"
|
||||
:placeholder="$t('邮箱验证码')"
|
||||
clearable
|
||||
maxlength="4"
|
||||
oninput="value=value.replace(/\D/g,'')"
|
||||
:placeholder="$t('邮箱验证码')"
|
||||
prefix-icon="el-icon-message"></el-input>
|
||||
<el-button :disabled="sendDisabled" @click="getYzm"
|
||||
>获取验证码<span v-if="sendDisabled"> ({{ waitSecs }})</span></el-button
|
||||
>
|
||||
</div>
|
||||
</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>
|
||||
|
||||
<script>
|
||||
|
@ -24,7 +24,7 @@
|
||||
>
|
||||
</div>
|
||||
</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>
|
||||
|
||||
<script>
|
||||
|
@ -1,5 +1,5 @@
|
||||
<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-descriptions :column="1" border size="small">
|
||||
<el-descriptions-item v-for="(item, i) in data" :key="i" :label="i" label-class-name="w15">
|
||||
|
@ -1,8 +1,10 @@
|
||||
<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
|
||||
v-if="hasDate"
|
||||
v-model="form.dy.createdTime"
|
||||
:end-placeholder="$t('结束日期')"
|
||||
:range-separator="$t('至')"
|
||||
:shortcuts="[
|
||||
{
|
||||
text: '今天',
|
||||
@ -68,10 +70,8 @@
|
||||
},
|
||||
},
|
||||
]"
|
||||
:teleported="false"
|
||||
:end-placeholder="$t('结束日期')"
|
||||
:range-separator="$t('至')"
|
||||
:start-placeholder="$t('开始日期')"
|
||||
:teleported="false"
|
||||
type="daterange"
|
||||
value-format="YYYY-MM-DD"></el-date-picker>
|
||||
|
||||
@ -118,8 +118,8 @@
|
||||
</template>
|
||||
|
||||
<el-button-group>
|
||||
<el-button icon="el-icon-search" type="primary" @click="search">查询</el-button>
|
||||
<el-button icon="el-icon-refresh-left" @click="tool.refreshTab(vue)">重置</el-button>
|
||||
<el-button @click="search" icon="el-icon-search" type="primary">查询</el-button>
|
||||
<el-button @click="tool.refreshTab(vue)" icon="el-icon-refresh-left">重置</el-button>
|
||||
</el-button-group>
|
||||
</form>
|
||||
</template>
|
||||
|
@ -1,20 +1,20 @@
|
||||
<template>
|
||||
<sc-table-select
|
||||
ref="user"
|
||||
v-model="user"
|
||||
:apiObj="$API.sys_user.pagedQuery"
|
||||
:params="form"
|
||||
:props="{ label: 'userName', value: 'id' }"
|
||||
:table-width="600"
|
||||
clearable>
|
||||
clearable
|
||||
ref="user">
|
||||
<template #header>
|
||||
<el-form :model="form">
|
||||
<el-form-item>
|
||||
<el-input
|
||||
v-model="form.keywords"
|
||||
clearable
|
||||
:placeholder="$t('用户编号 / 用户名 / 手机号 / 邮箱 / 备注')"
|
||||
@input="onInput"></el-input>
|
||||
@input="onInput"
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</template>
|
@ -3,16 +3,14 @@
|
||||
<div :class="mode === 'pop' ? 'verifybox' : ''" :style="{ 'max-width': parseInt(imgSize.width) + 30 + 'px' }">
|
||||
<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>
|
||||
</span>
|
||||
</div>
|
||||
<div :style="{ padding: mode === 'pop' ? '1rem' : '0' }" class="verifybox-bottom">
|
||||
<!-- 验证码容器 -->
|
||||
<component
|
||||
:is="componentType"
|
||||
v-if="componentType"
|
||||
ref="instance"
|
||||
:arith="arith"
|
||||
:barSize="barSize"
|
||||
:blockSize="blockSize"
|
||||
@ -20,10 +18,12 @@
|
||||
:explain="explain"
|
||||
:figure="figure"
|
||||
:imgSize="imgSize"
|
||||
:is="componentType"
|
||||
:mode="mode"
|
||||
:tpl="tpl"
|
||||
:type="verifyType"
|
||||
:vSpace="vSpace"></component>
|
||||
:vSpace="vSpace"
|
||||
ref="instance"></component>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -3,7 +3,7 @@
|
||||
<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">
|
||||
<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>
|
||||
</div>
|
||||
<transition name="tips">
|
||||
@ -19,7 +19,7 @@
|
||||
'line-height': barSize.height,
|
||||
}"
|
||||
class="verify-bar-area">
|
||||
<span class="verify-msg" v-text="text"></span>
|
||||
<span v-text="text" class="verify-msg"></span>
|
||||
<div
|
||||
:style="{
|
||||
width: leftBarWidth !== undefined ? leftBarWidth : barSize.height,
|
||||
@ -28,7 +28,7 @@
|
||||
transaction: transitionWidth,
|
||||
}"
|
||||
class="verify-left-bar">
|
||||
<span class="verify-msg" v-text="finishText"></span>
|
||||
<span v-text="finishText" class="verify-msg"></span>
|
||||
<div
|
||||
:style="{
|
||||
width: barSize.height,
|
||||
@ -37,9 +37,9 @@
|
||||
left: moveBlockLeft,
|
||||
transition: transitionLeft,
|
||||
}"
|
||||
class="verify-move-block"
|
||||
@mousedown="start"
|
||||
@touchstart="start">
|
||||
@touchstart="start"
|
||||
class="verify-move-block">
|
||||
<i :class="['verify-icon iconfont', iconClass]" :style="{ color: iconColor }"></i>
|
||||
<div
|
||||
v-if="type === '2'"
|
||||
|
@ -10,7 +10,7 @@
|
||||
|
||||
<template>
|
||||
<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">
|
||||
<slot></slot>
|
||||
</ul>
|
||||
|
@ -9,9 +9,9 @@
|
||||
|
||||
<template>
|
||||
<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">
|
||||
<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 }}
|
||||
</span>
|
||||
<span class="sc-contextmenu__suffix">
|
||||
|
@ -8,9 +8,9 @@
|
||||
-->
|
||||
|
||||
<template>
|
||||
<el-input v-model="defaultValue" v-bind="$attrs">
|
||||
<el-input v-bind="$attrs" v-model="defaultValue">
|
||||
<template #append>
|
||||
<el-dropdown size="medium" @command="handleShortcuts">
|
||||
<el-dropdown @command="handleShortcuts" size="medium">
|
||||
<el-button icon="el-icon-arrow-down"></el-button>
|
||||
<template #dropdown>
|
||||
<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 L * ?">每月最后一天零点</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 }}
|
||||
</el-dropdown-item>
|
||||
<el-dropdown-item command="custom" divided icon="el-icon-plus">自定义</el-dropdown-item>
|
||||
@ -295,7 +295,7 @@
|
||||
|
||||
<template #footer>
|
||||
<el-button @click="dialogVisible = false">取 消</el-button>
|
||||
<el-button type="primary" @click="submit()">确 认</el-button>
|
||||
<el-button @click="submit()" type="primary">确 认</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
@ -11,11 +11,11 @@
|
||||
<template>
|
||||
<div class="sc-cropper">
|
||||
<div class="sc-cropper__img">
|
||||
<img ref="img" :src="src" />
|
||||
<img :src="src" ref="img" />
|
||||
</div>
|
||||
<div class="sc-cropper__preview">
|
||||
<h4>图像预览</h4>
|
||||
<div ref="preview" class="sc-cropper__preview__img"></div>
|
||||
<div class="sc-cropper__preview__img" ref="preview"></div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
@ -8,14 +8,14 @@
|
||||
-->
|
||||
|
||||
<template>
|
||||
<div ref="scDialog" class="sc-dialog">
|
||||
<el-dialog ref="dialog" v-model="dialogVisible" :fullscreen="isFullscreen" :show-close="false" v-bind="$attrs">
|
||||
<div class="sc-dialog" ref="scDialog">
|
||||
<el-dialog v-bind="$attrs" v-model="dialogVisible" :fullscreen="isFullscreen" :show-close="false" ref="dialog">
|
||||
<template #header>
|
||||
<slot name="header">
|
||||
<span class="el-dialog__title">{{ title }}</span>
|
||||
</slot>
|
||||
<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-bottom-left />
|
||||
</el-icon>
|
||||
@ -23,7 +23,7 @@
|
||||
<el-icon-full-screen />
|
||||
</el-icon>
|
||||
</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-close />
|
||||
</el-icon>
|
||||
@ -48,19 +48,17 @@ export default {
|
||||
showClose: { type: Boolean, default: true },
|
||||
showFullscreen: { type: Boolean, default: true },
|
||||
loading: { type: Boolean, default: false },
|
||||
fullScreen: { type: Boolean, default: false },
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
dialogVisible: false,
|
||||
isFullscreen: false,
|
||||
isFullscreen: this.fullScreen,
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
modelValue() {
|
||||
this.dialogVisible = this.modelValue
|
||||
if (this.dialogVisible) {
|
||||
this.isFullscreen = false
|
||||
}
|
||||
},
|
||||
},
|
||||
mounted() {
|
||||
|
@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<div ref="scEcharts" :style="{ height: height, width: width }"></div>
|
||||
<div :style="{ height: height, width: width }" ref="scEcharts"></div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
|
@ -1,5 +1,5 @@
|
||||
<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-tag class="move" disable-transitions style="cursor: move">
|
||||
<el-icon style="cursor: move">
|
||||
|
@ -9,9 +9,9 @@
|
||||
|
||||
<template>
|
||||
<slot :open="open">
|
||||
<el-button plain type="primary" @click="open">导出</el-button>
|
||||
<el-button @click="open" plain type="primary">导出</el-button>
|
||||
</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">
|
||||
<div v-loading="downLoading" :element-loading-text="$t('正在处理中...')">
|
||||
<div
|
||||
@ -35,14 +35,14 @@
|
||||
<el-button
|
||||
v-if="async"
|
||||
:loading="asyncLoading"
|
||||
@click="download"
|
||||
icon="el-icon-plus"
|
||||
size="large"
|
||||
style="width: 100%"
|
||||
type="primary"
|
||||
@click="download"
|
||||
>发起导出任务
|
||||
</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 v-if="columnData.length > 0" :label="$t('列设置')" lazy>
|
||||
<columnSet :column="columnData"></columnSet>
|
||||
|
@ -9,13 +9,12 @@
|
||||
|
||||
<template>
|
||||
<slot :open="open">
|
||||
<el-button plain type="primary" @click="open">导入</el-button>
|
||||
<el-button @click="open" plain type="primary">导入</el-button>
|
||||
</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" />
|
||||
<div v-loading="loading">
|
||||
<el-upload
|
||||
ref="uploader"
|
||||
:accept="accept"
|
||||
:before-upload="before"
|
||||
:data="data"
|
||||
@ -26,7 +25,8 @@
|
||||
:on-progress="progress"
|
||||
:on-success="success"
|
||||
:show-file-list="false"
|
||||
drag>
|
||||
drag
|
||||
ref="uploader">
|
||||
<slot name="uploader">
|
||||
<el-icon class="el-icon--upload">
|
||||
<el-icon-upload-filled />
|
||||
|
@ -12,14 +12,14 @@
|
||||
<div v-loading="menuLoading" class="sc-file-select__side">
|
||||
<div class="sc-file-select__side-menu">
|
||||
<el-tree
|
||||
ref="group"
|
||||
:current-node-key="menu.length > 0 ? menu[0][treeProps.key] : ''"
|
||||
:data="menu"
|
||||
:node-key="treeProps.key"
|
||||
:props="treeProps"
|
||||
@node-click="groupClick"
|
||||
class="menu"
|
||||
highlight-current
|
||||
@node-click="groupClick">
|
||||
ref="group">
|
||||
<template #default="{ node }">
|
||||
<span class="el-tree-node__label">
|
||||
<el-icon class="icon"><el-icon-folder /></el-icon>{{ node.label }}
|
||||
@ -55,16 +55,16 @@
|
||||
<div class="keyword">
|
||||
<el-input
|
||||
v-model="keyword"
|
||||
clearable
|
||||
:placeholder="$t('文件名搜索')"
|
||||
prefix-icon="el-icon-search"
|
||||
@clear="search"
|
||||
@keyup.enter="search"></el-input>
|
||||
@keyup.enter="search"
|
||||
clearable
|
||||
prefix-icon="el-icon-search"></el-input>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sc-file-select__list">
|
||||
<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 class="sc-file-select__item__file">
|
||||
<div class="sc-file-select__item__upload">
|
||||
@ -76,10 +76,10 @@
|
||||
</div>
|
||||
<div
|
||||
v-for="item in data"
|
||||
:key="item[fileProps.key]"
|
||||
:class="{ active: value.includes(item[fileProps.url]) }"
|
||||
class="sc-file-select__item"
|
||||
@click="select(item)">
|
||||
:key="item[fileProps.key]"
|
||||
@click="select(item)"
|
||||
class="sc-file-select__item">
|
||||
<div class="sc-file-select__item__file">
|
||||
<div v-if="multiple" class="sc-file-select__item__checkbox">
|
||||
<el-icon>
|
||||
@ -110,14 +110,14 @@
|
||||
v-model:currentPage="currentPage"
|
||||
:page-size="pageSize"
|
||||
:total="total"
|
||||
@current-change="reload"
|
||||
background
|
||||
layout="prev, pager, next"
|
||||
small
|
||||
@current-change="reload"></el-pagination>
|
||||
small></el-pagination>
|
||||
</div>
|
||||
<div class="sc-file-select__do">
|
||||
<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>
|
||||
|
@ -11,11 +11,11 @@
|
||||
<div class="sc-filterBar">
|
||||
<slot :filterLength="filterObjLength" :openFilter="openFilter">
|
||||
<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>
|
||||
</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-main style="padding: 0">
|
||||
<el-tabs class="root">
|
||||
@ -44,9 +44,9 @@
|
||||
v-model="item.field"
|
||||
:filter="filter"
|
||||
:options="fields"
|
||||
filterable
|
||||
:placeholder="$t('过滤字段')"
|
||||
@change="fieldChange(item)">
|
||||
@change="fieldChange(item)"
|
||||
filterable>
|
||||
</py-select>
|
||||
</td>
|
||||
<td v-if="showOperator">
|
||||
@ -62,8 +62,8 @@
|
||||
<el-input
|
||||
v-if="!item.field.type"
|
||||
v-model="item.value"
|
||||
disabled
|
||||
:placeholder="$t('请选择过滤字段')"></el-input>
|
||||
:placeholder="$t('请选择过滤字段')"
|
||||
disabled></el-input>
|
||||
<!-- 输入框 -->
|
||||
<el-input
|
||||
v-if="item.field.type === 'text'"
|
||||
@ -82,8 +82,8 @@
|
||||
remoteMethod(query, item)
|
||||
}
|
||||
"
|
||||
filterable
|
||||
@visible-change="visibleChange($event, item)">
|
||||
@visible-change="visibleChange($event, item)"
|
||||
filterable>
|
||||
<el-option
|
||||
v-for="field in item.field.extend.data"
|
||||
:key="field.value"
|
||||
@ -152,13 +152,13 @@
|
||||
no-data-text="$t('输入关键词后按回车确认')"></el-select>
|
||||
</td>
|
||||
<td>
|
||||
<el-icon class="del" @click="delFilter(index)">
|
||||
<el-icon @click="delFilter(index)" class="del">
|
||||
<el-icon-delete />
|
||||
</el-icon>
|
||||
</td>
|
||||
</tr>
|
||||
</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>
|
||||
</el-scrollbar>
|
||||
</el-tab-pane>
|
||||
@ -167,14 +167,14 @@
|
||||
<div class="tabs-label">常用</div>
|
||||
</template>
|
||||
<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-tab-pane>
|
||||
</el-tabs>
|
||||
</el-main>
|
||||
<el-footer>
|
||||
<el-button :disabled="filter.length <= 0" type="primary" @click="ok">立即过滤</el-button>
|
||||
<el-button :disabled="filter.length <= 0" plain type="primary" @click="saveMy">另存为常用</el-button>
|
||||
<el-button :disabled="filter.length <= 0" @click="ok" type="primary">立即过滤</el-button>
|
||||
<el-button :disabled="filter.length <= 0" @click="saveMy" plain type="primary">另存为常用</el-button>
|
||||
<el-button @click="clear">清空过滤</el-button>
|
||||
</el-footer>
|
||||
</el-container>
|
||||
|
@ -25,7 +25,7 @@
|
||||
<label>{{ item.title }}</label>
|
||||
<el-popconfirm :title="$t('确认删除此常用过滤吗?')" @confirm="closeMyfilter(item, index)">
|
||||
<template #reference>
|
||||
<el-icon class="del" @click.stop="() => {}">
|
||||
<el-icon @click.stop="() => {}" class="del">
|
||||
<el-icon-delete />
|
||||
</el-icon>
|
||||
</template>
|
||||
|
@ -8,11 +8,11 @@
|
||||
-->
|
||||
|
||||
<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
|
||||
v-for="field in optionsList"
|
||||
:key="field.value"
|
||||
:disabled="isDisabled(field.value)"
|
||||
:key="field.value"
|
||||
:label="field.label"
|
||||
:value="field"></el-option>
|
||||
</el-select>
|
||||
|
@ -12,12 +12,12 @@
|
||||
|
||||
<el-form
|
||||
v-else
|
||||
ref="form"
|
||||
v-loading="loading"
|
||||
:label-position="config.labelPosition"
|
||||
:label-width="config.labelWidth"
|
||||
:model="form"
|
||||
element-loading-text="Loading...">
|
||||
element-loading-text="Loading..."
|
||||
ref="form">
|
||||
<el-row :gutter="15">
|
||||
<template v-for="(item, index) in config.formItems" :key="index">
|
||||
<el-col v-if="!hideHandle(item)" :span="item.span || 24">
|
||||
@ -45,15 +45,15 @@
|
||||
<template v-if="item.name">
|
||||
<el-checkbox
|
||||
v-for="(_item, _index) in item.options.items"
|
||||
:key="_index"
|
||||
v-model="form[item.name][_item.name]"
|
||||
:key="_index"
|
||||
:label="_item.label"></el-checkbox>
|
||||
</template>
|
||||
<template v-else>
|
||||
<el-checkbox
|
||||
v-for="(_item, _index) in item.options.items"
|
||||
:key="_index"
|
||||
v-model="form[_item.name]"
|
||||
:key="_index"
|
||||
:label="_item.label"></el-checkbox>
|
||||
</template>
|
||||
</template>
|
||||
@ -148,7 +148,7 @@
|
||||
<el-col :span="24">
|
||||
<el-form-item>
|
||||
<slot>
|
||||
<el-button type="primary" @click="submit">提交</el-button>
|
||||
<el-button @click="submit" type="primary">提交</el-button>
|
||||
</slot>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
@ -8,23 +8,23 @@
|
||||
-->
|
||||
|
||||
<template>
|
||||
<div ref="scFormTable" class="sc-form-table">
|
||||
<el-table ref="table" :data="data" border stripe>
|
||||
<div class="sc-form-table" ref="scFormTable">
|
||||
<el-table :data="data" border ref="table" stripe>
|
||||
<el-table-column fixed="left" type="index" width="50">
|
||||
<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 #default="scope">
|
||||
<div :class="['sc-form-table-handle', { 'sc-form-table-handle-delete': !hideDelete }]">
|
||||
<span>{{ scope.$index + 1 }}</span>
|
||||
<el-button
|
||||
v-if="!hideDelete"
|
||||
@click="rowDel(scope.row, scope.$index)"
|
||||
circle
|
||||
icon="el-icon-delete"
|
||||
plain
|
||||
size="small"
|
||||
type="danger"
|
||||
@click="rowDel(scope.row, scope.$index)"></el-button>
|
||||
type="danger"></el-button>
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
@ -9,18 +9,18 @@
|
||||
|
||||
<template>
|
||||
<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>
|
||||
</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">
|
||||
<el-form :rules="{}">
|
||||
<el-form-item prop="searchText">
|
||||
<el-input
|
||||
v-model="searchText"
|
||||
:placeholder="$t('搜索')"
|
||||
class="sc-icon-select__search-input"
|
||||
clearable
|
||||
:placeholder="$t('搜索')"
|
||||
prefix-icon="el-icon-search"
|
||||
size="large" />
|
||||
</el-form-item>
|
||||
@ -34,7 +34,7 @@
|
||||
<div class="sc-icon-select__list">
|
||||
<el-scrollbar>
|
||||
<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">
|
||||
<span :data-icon="icon"></span>
|
||||
<el-icon>
|
||||
@ -48,7 +48,7 @@
|
||||
</el-tabs>
|
||||
</div>
|
||||
<template #footer>
|
||||
<el-button text @click="clear">清除</el-button>
|
||||
<el-button @click="clear" text>清除</el-button>
|
||||
<el-button @click="dialogVisible = false">取消</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
|
@ -14,7 +14,7 @@
|
||||
<el-icon-loading />
|
||||
</el-icon>
|
||||
</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]">
|
||||
<slot :data="item" name="option"></slot>
|
||||
</el-option>
|
||||
|
@ -18,8 +18,8 @@
|
||||
<ul>
|
||||
<li
|
||||
v-for="option in item.options"
|
||||
:key="option.value"
|
||||
:class="{ active: selected[item.key] && selected[item.key].includes(option.value) }"
|
||||
:key="option.value"
|
||||
@click="select(option, item)">
|
||||
<el-icon v-if="option.icon">
|
||||
<component :is="option.icon" />
|
||||
|
@ -8,7 +8,7 @@
|
||||
<span class="sortable_b">排序</span>
|
||||
<span class="fixed_b">固定</span>
|
||||
</div>
|
||||
<div ref="list" class="setting-column__list">
|
||||
<div class="setting-column__list" ref="list">
|
||||
<ul>
|
||||
<li v-for="item in usercolumn" :key="item.prop">
|
||||
<span class="move_b">
|
||||
@ -32,10 +32,10 @@
|
||||
</div>
|
||||
<div class="setting-column__bottom">
|
||||
<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>
|
||||
<el-empty v-else :image-size="80" :description="$t('暂无可配置的列')"></el-empty>
|
||||
<el-empty v-else :description="$t('暂无可配置的列')" :image-size="80"></el-empty>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
|
@ -7,24 +7,24 @@
|
||||
* @LastEditTime: 2023年3月2日10:43:35
|
||||
-->
|
||||
<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">
|
||||
<el-table
|
||||
:key="toggleIndex"
|
||||
ref="scTable"
|
||||
v-bind="$attrs"
|
||||
:border="config.border"
|
||||
:data="tableData"
|
||||
:default-expand-all="config.defaultExpandAll"
|
||||
:default-sort="defaultSort"
|
||||
:height="height === 'auto' ? null : '100%'"
|
||||
:key="toggleIndex"
|
||||
:row-key="rowKey"
|
||||
:size="config.size"
|
||||
:stripe="config.stripe"
|
||||
:summary-method="remoteSummary ? remoteSummaryMethod : summaryMethod"
|
||||
v-bind="$attrs"
|
||||
@sort-change="sortChange"
|
||||
@cell-click="cellClickMethod"
|
||||
@filter-change="filterChange"
|
||||
@cell-click="cellClickMethod">
|
||||
@sort-change="sortChange"
|
||||
ref="scTable">
|
||||
<slot></slot>
|
||||
<template v-for="(item, index) in userColumn" :key="index">
|
||||
<el-table-column
|
||||
@ -39,7 +39,7 @@
|
||||
:sortable="item.sortable"
|
||||
:width="item.width">
|
||||
<template #default="scope">
|
||||
<slot :name="item.prop" v-bind="scope">
|
||||
<slot v-bind="scope" :name="item.prop">
|
||||
{{ scope.row[item.prop] }}
|
||||
</slot>
|
||||
</template>
|
||||
@ -61,39 +61,39 @@
|
||||
:page-sizes="pageSizes"
|
||||
:small="true"
|
||||
:total="total"
|
||||
background
|
||||
@current-change="paginationChange"
|
||||
@update:page-size="pageSizeChange"></el-pagination>
|
||||
@update:page-size="pageSizeChange"
|
||||
background></el-pagination>
|
||||
</div>
|
||||
<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
|
||||
v-if="column"
|
||||
:hide-after="0"
|
||||
:width="500"
|
||||
placement="top"
|
||||
:title="$t('列设置')"
|
||||
trigger="click"
|
||||
:width="500"
|
||||
@after-leave="customColumnShow = false"
|
||||
@show="customColumnShow = true"
|
||||
@after-leave="customColumnShow = false">
|
||||
placement="top"
|
||||
trigger="click">
|
||||
<template #reference>
|
||||
<el-button circle icon="el-icon-set-up" style="margin-left: 1rem"></el-button>
|
||||
</template>
|
||||
<columnSetting
|
||||
v-if="customColumnShow"
|
||||
ref="columnSetting"
|
||||
:column="userColumn"
|
||||
@back="columnSettingBack"
|
||||
@save="columnSettingSave"
|
||||
@userChange="columnSettingChange"></columnSetting>
|
||||
@userChange="columnSettingChange"
|
||||
ref="columnSetting"></columnSetting>
|
||||
</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>
|
||||
<el-button circle icon="el-icon-setting" style="margin-left: 1rem"></el-button>
|
||||
</template>
|
||||
<el-form label-position="left" label-width="80px">
|
||||
<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="default">正常</el-radio-button>
|
||||
<el-radio-button label="small">小</el-radio-button>
|
||||
|
@ -9,7 +9,6 @@
|
||||
|
||||
<template>
|
||||
<el-select
|
||||
ref="select"
|
||||
v-model="defaultValue"
|
||||
:clearable="clearable"
|
||||
:collapse-tags="collapseTags"
|
||||
@ -22,20 +21,21 @@
|
||||
:size="size"
|
||||
@clear="clear"
|
||||
@remove-tag="removeTag"
|
||||
@visible-change="visibleChange">
|
||||
@visible-change="visibleChange"
|
||||
ref="select">
|
||||
<template #empty>
|
||||
<div v-loading="loading" :style="{ width: tableWidth + 'px' }" class="sc-table-select__table">
|
||||
<div class="sc-table-select__header">
|
||||
<slot :form="formData" :submit="formSubmit" name="header"></slot>
|
||||
</div>
|
||||
<el-table
|
||||
ref="table"
|
||||
:data="tableData"
|
||||
:height="245"
|
||||
:highlight-current-row="!multiple"
|
||||
@select="select"
|
||||
@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-else type="index" width="45">
|
||||
<template #default="scope"
|
||||
@ -49,10 +49,10 @@
|
||||
v-model:currentPage="currentPage"
|
||||
:page-size="pageSize"
|
||||
:total="total"
|
||||
@current-change="reload"
|
||||
background
|
||||
layout="prev, pager, next"
|
||||
small
|
||||
@current-change="reload"></el-pagination>
|
||||
small></el-pagination>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
@ -182,7 +182,7 @@ export default {
|
||||
item.currentLabel = item.value[this.defaultProps.label]
|
||||
})
|
||||
} else {
|
||||
this.$refs.select.selectedLabel = this.defaultValue[this.defaultProps.label]
|
||||
this.$refs.select.states.selectedLabel = this.defaultValue[this.defaultProps.label]
|
||||
}
|
||||
})
|
||||
},
|
||||
|
@ -13,14 +13,13 @@
|
||||
</template>
|
||||
</el-image>
|
||||
<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
|
||||
></span>
|
||||
</div>
|
||||
</div>
|
||||
<el-upload
|
||||
v-if="!file"
|
||||
ref="uploader"
|
||||
:accept="accept"
|
||||
:action="action"
|
||||
:auto-upload="cropper ? false : autoUpload"
|
||||
@ -35,7 +34,8 @@
|
||||
:on-exceed="handleExceed"
|
||||
:on-success="success"
|
||||
:show-file-list="showFileList"
|
||||
class="uploader">
|
||||
class="uploader"
|
||||
ref="uploader">
|
||||
<slot>
|
||||
<div class="el-upload--picture-card">
|
||||
<div class="file-empty">
|
||||
@ -48,11 +48,11 @@
|
||||
</slot>
|
||||
</el-upload>
|
||||
<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">
|
||||
<sc-cropper ref="cropper" :aspectRatio="aspectRatio" :compress="compress" :src="cropperFile.tempCropperFile"></sc-cropper>
|
||||
<el-dialog v-model="cropperDialogVisible" :title="$t('剪裁')" :width="580" @closed="cropperClosed" destroy-on-close draggable>
|
||||
<sc-cropper :aspectRatio="aspectRatio" :compress="compress" :src="cropperFile.tempCropperFile" ref="cropper"></sc-cropper>
|
||||
<template #footer>
|
||||
<el-button @click="cropperDialogVisible = false">取 消</el-button>
|
||||
<el-button type="primary" @click="cropperSave">确 定</el-button>
|
||||
<el-button @click="cropperSave" type="primary">确 定</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</div>
|
||||
|
@ -1,7 +1,6 @@
|
||||
<template>
|
||||
<div class="sc-upload-multiple">
|
||||
<el-upload
|
||||
ref="uploader"
|
||||
v-model:file-list="defaultFileList"
|
||||
:accept="accept"
|
||||
:action="action"
|
||||
@ -18,7 +17,8 @@
|
||||
:on-preview="handlePreview"
|
||||
:on-success="success"
|
||||
:show-file-list="showFileList"
|
||||
list-type="picture-card">
|
||||
list-type="picture-card"
|
||||
ref="uploader">
|
||||
<slot>
|
||||
<el-icon>
|
||||
<el-icon-plus />
|
||||
@ -43,7 +43,7 @@
|
||||
</template>
|
||||
</el-image>
|
||||
<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
|
||||
></span>
|
||||
</div>
|
||||
|
@ -8,7 +8,7 @@
|
||||
-->
|
||||
|
||||
<template>
|
||||
<div ref="scVideo" class="sc-video"></div>
|
||||
<div class="sc-video" ref="scVideo"></div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
|
@ -8,7 +8,7 @@
|
||||
-->
|
||||
|
||||
<template>
|
||||
<div ref="scWaterMark" class="sc-water-mark">
|
||||
<div class="sc-water-mark" ref="scWaterMark">
|
||||
<slot></slot>
|
||||
</div>
|
||||
</template>
|
||||
|
@ -16,7 +16,7 @@
|
||||
<div class="end-node-text">流程结束</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>
|
||||
</template>
|
||||
|
||||
|
@ -8,19 +8,19 @@
|
||||
<div class="add-node-popover-body">
|
||||
<ul>
|
||||
<li>
|
||||
<el-icon style="color: #ff943e" @click="addType(1)">
|
||||
<el-icon @click="addType(1)" style="color: #ff943e">
|
||||
<el-icon-user-filled />
|
||||
</el-icon>
|
||||
<p>审批节点</p>
|
||||
</li>
|
||||
<li>
|
||||
<el-icon style="color: #3296fa" @click="addType(2)">
|
||||
<el-icon @click="addType(2)" style="color: #3296fa">
|
||||
<el-icon-promotion />
|
||||
</el-icon>
|
||||
<p>抄送节点</p>
|
||||
</li>
|
||||
<li>
|
||||
<el-icon style="color: #15bc83" @click="addType(4)">
|
||||
<el-icon @click="addType(4)" style="color: #15bc83">
|
||||
<el-icon-share />
|
||||
</el-icon>
|
||||
<p>条件分支</p>
|
||||
|
@ -1,12 +1,12 @@
|
||||
<template>
|
||||
<div class="node-wrap">
|
||||
<div class="node-wrap-box" @click="show">
|
||||
<div @click="show" class="node-wrap-box">
|
||||
<div class="title" style="background: #ff943e">
|
||||
<el-icon class="icon">
|
||||
<el-icon-user-filled />
|
||||
</el-icon>
|
||||
<span>{{ nodeConfig.nodeName }}</span>
|
||||
<el-icon class="close" @click.stop="delNode()">
|
||||
<el-icon @click.stop="delNode()" class="close">
|
||||
<el-icon-close />
|
||||
</el-icon>
|
||||
</div>
|
||||
@ -16,7 +16,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<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>
|
||||
<div class="node-wrap-drawer__title">
|
||||
<label v-if="!isEditTitle" @click="editTitle"
|
||||
@ -27,11 +27,11 @@
|
||||
</label>
|
||||
<el-input
|
||||
v-if="isEditTitle"
|
||||
ref="nodeTitle"
|
||||
v-model="form.nodeName"
|
||||
clearable
|
||||
@blur="saveTitle"
|
||||
@keyup.enter="saveTitle"></el-input>
|
||||
@keyup.enter="saveTitle"
|
||||
clearable
|
||||
ref="nodeTitle"></el-input>
|
||||
</div>
|
||||
</template>
|
||||
<el-container>
|
||||
@ -39,19 +39,19 @@
|
||||
<el-form label-position="top">
|
||||
<el-form-item :label="$t('审批人员类型')">
|
||||
<el-select v-model="form.setType">
|
||||
<el-option :value="1" :label="$t('指定成员')"></el-option>
|
||||
<el-option :value="2" :label="$t('主管')"></el-option>
|
||||
<el-option :value="3" :label="$t('角色')"></el-option>
|
||||
<el-option :value="4" :label="$t('发起人自选')"></el-option>
|
||||
<el-option :value="5" :label="$t('发起人自己')"></el-option>
|
||||
<el-option :value="7" :label="$t('连续多级主管')"></el-option>
|
||||
<el-option :label="$t('指定成员')" :value="1"></el-option>
|
||||
<el-option :label="$t('主管')" :value="2"></el-option>
|
||||
<el-option :label="$t('角色')" :value="3"></el-option>
|
||||
<el-option :label="$t('发起人自选')" :value="4"></el-option>
|
||||
<el-option :label="$t('发起人自己')" :value="5"></el-option>
|
||||
<el-option :label="$t('连续多级主管')" :value="7"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<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">
|
||||
<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 }}
|
||||
</el-tag>
|
||||
</div>
|
||||
@ -64,9 +64,9 @@
|
||||
</el-form-item>
|
||||
|
||||
<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">
|
||||
<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 }}
|
||||
</el-tag>
|
||||
</div>
|
||||
@ -124,7 +124,7 @@
|
||||
</el-form>
|
||||
</el-main>
|
||||
<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-footer>
|
||||
</el-container>
|
||||
|
@ -2,12 +2,12 @@
|
||||
<div class="branch-wrap">
|
||||
<div class="branch-box-wrap">
|
||||
<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 class="condition-node">
|
||||
<div class="condition-node-box">
|
||||
<div class="auto-judge" @click="show(index)">
|
||||
<div v-if="index !== 0" class="sort-left" @click.stop="arrTransfer(index, -1)">
|
||||
<div @click="show(index)" class="auto-judge">
|
||||
<div v-if="index !== 0" @click.stop="arrTransfer(index, -1)" class="sort-left">
|
||||
<el-icon>
|
||||
<el-icon-arrow-left />
|
||||
</el-icon>
|
||||
@ -15,7 +15,7 @@
|
||||
<div class="title">
|
||||
<span class="node-title">{{ item.nodeName }}</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>
|
||||
</div>
|
||||
@ -23,7 +23,7 @@
|
||||
<span v-if="toText(nodeConfig, index)">{{ toText(nodeConfig, index) }}</span>
|
||||
<span v-else class="placeholder">请设置条件</span>
|
||||
</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-arrow-right />
|
||||
</el-icon>
|
||||
@ -41,7 +41,7 @@
|
||||
</div>
|
||||
<add-node v-model="nodeConfig.childNode"></add-node>
|
||||
</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>
|
||||
<div class="node-wrap-drawer__title">
|
||||
<label v-if="!isEditTitle" @click="editTitle"
|
||||
@ -52,11 +52,11 @@
|
||||
</label>
|
||||
<el-input
|
||||
v-if="isEditTitle"
|
||||
ref="nodeTitle"
|
||||
v-model="form.nodeName"
|
||||
clearable
|
||||
@blur="saveTitle"
|
||||
@keyup.enter="saveTitle"></el-input>
|
||||
@keyup.enter="saveTitle"
|
||||
clearable
|
||||
ref="nodeTitle"></el-input>
|
||||
</div>
|
||||
</template>
|
||||
<el-container>
|
||||
@ -102,18 +102,18 @@
|
||||
</el-table-column>
|
||||
<el-table-column :label="$t('移除')" prop="value" width="55">
|
||||
<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>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-form-item>
|
||||
<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>
|
||||
</el-form>
|
||||
</el-main>
|
||||
<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-footer>
|
||||
</el-container>
|
||||
|
@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<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">
|
||||
<el-icon class="icon">
|
||||
<el-icon-user-filled />
|
||||
@ -12,7 +12,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<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>
|
||||
<div class="node-wrap-drawer__title">
|
||||
<label v-if="!isEditTitle" @click="editTitle"
|
||||
@ -23,20 +23,20 @@
|
||||
</label>
|
||||
<el-input
|
||||
v-if="isEditTitle"
|
||||
ref="nodeTitle"
|
||||
v-model="form.nodeName"
|
||||
clearable
|
||||
@blur="saveTitle"
|
||||
@keyup.enter="saveTitle"></el-input>
|
||||
@keyup.enter="saveTitle"
|
||||
clearable
|
||||
ref="nodeTitle"></el-input>
|
||||
</div>
|
||||
</template>
|
||||
<el-container>
|
||||
<el-main style="padding: 0 20px 20px 20px">
|
||||
<el-form label-position="top">
|
||||
<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">
|
||||
<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 }}
|
||||
</el-tag>
|
||||
</div>
|
||||
@ -49,7 +49,7 @@
|
||||
</el-form>
|
||||
</el-main>
|
||||
<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-footer>
|
||||
</el-container>
|
||||
|
@ -1,12 +1,12 @@
|
||||
<template>
|
||||
<div class="node-wrap">
|
||||
<div class="node-wrap-box" @click="show">
|
||||
<div @click="show" class="node-wrap-box">
|
||||
<div class="title" style="background: #3296fa">
|
||||
<el-icon class="icon">
|
||||
<el-icon-promotion />
|
||||
</el-icon>
|
||||
<span>{{ nodeConfig.nodeName }}</span>
|
||||
<el-icon class="close" @click.stop="delNode()">
|
||||
<el-icon @click.stop="delNode()" class="close">
|
||||
<el-icon-close />
|
||||
</el-icon>
|
||||
</div>
|
||||
@ -16,7 +16,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<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>
|
||||
<div class="node-wrap-drawer__title">
|
||||
<label v-if="!isEditTitle" @click="editTitle"
|
||||
@ -27,20 +27,20 @@
|
||||
</label>
|
||||
<el-input
|
||||
v-if="isEditTitle"
|
||||
ref="nodeTitle"
|
||||
v-model="form.nodeName"
|
||||
clearable
|
||||
@blur="saveTitle"
|
||||
@keyup.enter="saveTitle"></el-input>
|
||||
@keyup.enter="saveTitle"
|
||||
clearable
|
||||
ref="nodeTitle"></el-input>
|
||||
</div>
|
||||
</template>
|
||||
<el-container>
|
||||
<el-main style="padding: 0 20px 20px 20px">
|
||||
<el-form label-position="top">
|
||||
<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">
|
||||
<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 }}
|
||||
</el-tag>
|
||||
</div>
|
||||
@ -51,7 +51,7 @@
|
||||
</el-form>
|
||||
</el-main>
|
||||
<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-footer>
|
||||
</el-container>
|
||||
|
@ -3,16 +3,16 @@
|
||||
v-model="dialogVisible"
|
||||
:title="titleMap[type - 1]"
|
||||
:width="type == 1 ? 680 : 460"
|
||||
@closed="$emit('closed')"
|
||||
append-to-body
|
||||
destroy-on-close
|
||||
@closed="$emit('closed')">
|
||||
destroy-on-close>
|
||||
<template v-if="type === 1">
|
||||
<div class="sc-user-select">
|
||||
<div class="sc-user-select__left">
|
||||
<div class="sc-user-select__search">
|
||||
<el-input v-model="keyword" :placeholder="$t('搜索成员')" prefix-icon="el-icon-search">
|
||||
<template #append>
|
||||
<el-button icon="el-icon-search" @click="search"></el-button>
|
||||
<el-button @click="search" icon="el-icon-search"></el-button>
|
||||
</template>
|
||||
</el-input>
|
||||
</div>
|
||||
@ -20,30 +20,30 @@
|
||||
<div v-loading="showGrouploading" class="sc-user-select__tree">
|
||||
<el-scrollbar>
|
||||
<el-tree
|
||||
ref="groupTree"
|
||||
:current-node-key="groupId"
|
||||
:data="group"
|
||||
:expand-on-click-node="false"
|
||||
:node-key="groupProps.key"
|
||||
:props="groupProps"
|
||||
@node-click="groupClick"
|
||||
class="menu"
|
||||
highlight-current
|
||||
@node-click="groupClick" />
|
||||
ref="groupTree" />
|
||||
</el-scrollbar>
|
||||
</div>
|
||||
<div v-loading="showUserloading" class="sc-user-select__user">
|
||||
<div class="sc-user-select__user__list">
|
||||
<el-scrollbar ref="userScrollbar">
|
||||
<el-tree
|
||||
ref="userTree"
|
||||
:data="user"
|
||||
:default-checked-keys="selectedIds"
|
||||
:node-key="userProps.key"
|
||||
:props="userProps"
|
||||
@check-change="userClick"
|
||||
check-on-click-node
|
||||
class="menu"
|
||||
show-checkbox
|
||||
@check-change="userClick"></el-tree>
|
||||
ref="userTree"
|
||||
show-checkbox></el-tree>
|
||||
</el-scrollbar>
|
||||
</div>
|
||||
<footer>
|
||||
@ -51,10 +51,10 @@
|
||||
v-model:currentPage="currentPage"
|
||||
:page-size="pageSize"
|
||||
:total="total"
|
||||
@current-change="paginationChange"
|
||||
background
|
||||
layout="prev,next"
|
||||
small
|
||||
@current-change="paginationChange"></el-pagination>
|
||||
small></el-pagination>
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
@ -74,7 +74,7 @@
|
||||
<label>{{ item.name }}</label>
|
||||
</span>
|
||||
<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>
|
||||
</li>
|
||||
</el-scrollbar>
|
||||
@ -90,17 +90,17 @@
|
||||
<div v-loading="showGrouploading" class="sc-user-select__tree">
|
||||
<el-scrollbar>
|
||||
<el-tree
|
||||
ref="groupTree"
|
||||
:data="role"
|
||||
:default-checked-keys="selectedIds"
|
||||
:expand-on-click-node="false"
|
||||
:node-key="roleProps.key"
|
||||
:props="roleProps"
|
||||
@check-change="roleClick"
|
||||
check-on-click-node
|
||||
check-strictly
|
||||
class="menu"
|
||||
show-checkbox
|
||||
@check-change="roleClick" />
|
||||
ref="groupTree"
|
||||
show-checkbox />
|
||||
</el-scrollbar>
|
||||
</div>
|
||||
</div>
|
||||
@ -119,7 +119,7 @@
|
||||
<label>{{ item.name }}</label>
|
||||
</span>
|
||||
<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>
|
||||
</li>
|
||||
</el-scrollbar>
|
||||
@ -130,7 +130,7 @@
|
||||
|
||||
<template #footer>
|
||||
<el-button @click="dialogVisible = false">取 消</el-button>
|
||||
<el-button type="primary" @click="save">确 认</el-button>
|
||||
<el-button @click="save" type="primary">确 认</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
File diff suppressed because one or more lines are too long
@ -6,7 +6,7 @@ export default {
|
||||
vue.loading = true
|
||||
vue.dialog.save = true
|
||||
await vue.$nextTick()
|
||||
vue.$refs.saveDialog.open('view', row)
|
||||
await vue.$refs.saveDialog.open('view', row)
|
||||
vue.loading = false
|
||||
},
|
||||
},
|
||||
@ -16,7 +16,7 @@ export default {
|
||||
vue.loading = true
|
||||
vue.dialog.save = true
|
||||
await vue.$nextTick()
|
||||
vue.$refs.saveDialog.open('edit', row)
|
||||
await vue.$refs.saveDialog.open('edit', row)
|
||||
vue.loading = false
|
||||
},
|
||||
},
|
||||
|
@ -7,7 +7,7 @@ import copy from '@/directives/copy'
|
||||
import errorHandler from '@/utils/errorHandler'
|
||||
import http from '@/utils/request'
|
||||
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 naButtonBatchDel from '@/components/naButtonBatchDel/index.vue'
|
||||
import naColAvatar from '@/components/naColAvatar'
|
||||
@ -95,7 +95,7 @@ export default {
|
||||
app.component('naButtonBatchDel', naButtonBatchDel)
|
||||
app.component('naFormEmail', naFormEmail)
|
||||
app.component('naColTime', naColTime)
|
||||
app.component('naUser', naUser)
|
||||
app.component('naUserSelect', naUserSelect)
|
||||
|
||||
//注册全局指令
|
||||
app.directive('auth', auth)
|
||||
|
@ -1,10 +1,10 @@
|
||||
<template>
|
||||
<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>
|
||||
<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">
|
||||
<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">
|
||||
<component :is="navMenu.meta.icon || 'el-icon-menu'" />
|
||||
</el-icon>
|
||||
|
@ -1,23 +1,23 @@
|
||||
<template>
|
||||
<div class="sc-search">
|
||||
<el-input
|
||||
ref="input"
|
||||
v-model="input"
|
||||
:trigger-on-focus="false"
|
||||
clearable
|
||||
:placeholder="$t('搜索')"
|
||||
:trigger-on-focus="false"
|
||||
@input="inputChange"
|
||||
clearable
|
||||
prefix-icon="el-icon-search"
|
||||
size="large"
|
||||
@input="inputChange" />
|
||||
ref="input"
|
||||
size="large" />
|
||||
<div v-if="history.length > 0" class="sc-search-history">
|
||||
<el-tag
|
||||
v-for="(item, index) in history"
|
||||
:key="item"
|
||||
@click="historyClick(item)"
|
||||
@close="historyClose(index)"
|
||||
closable
|
||||
effect="dark"
|
||||
type="info"
|
||||
@click="historyClick(item)"
|
||||
@close="historyClose(index)"
|
||||
>{{ item }}
|
||||
</el-tag>
|
||||
</div>
|
||||
|
@ -1,11 +1,11 @@
|
||||
<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-menu />
|
||||
</el-icon>
|
||||
</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-header>
|
||||
<div class="logo-bar">
|
||||
@ -16,11 +16,11 @@
|
||||
<el-scrollbar>
|
||||
<el-menu
|
||||
:default-active="$route.meta.active || $route.fullPath"
|
||||
@select="select"
|
||||
active-text-color="#409EFF"
|
||||
background-color="#212d3d"
|
||||
router
|
||||
text-color="#fff"
|
||||
@select="select">
|
||||
text-color="#fff">
|
||||
<NavMenu :navMenus="menu"></NavMenu>
|
||||
</el-menu>
|
||||
</el-scrollbar>
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user