style: 💄 代码整理 (#88)

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

View File

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

View File

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

View File

@ -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; }

View File

@ -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}";
}

View File

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

View File

@ -26,7 +26,7 @@ public abstract record ImmutableEntity<T> : LiteImmutableEntity<T>, IFieldCreate
/// <inheritdoc cref="IFieldCreatedUser.CreatedUserName" />
[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)]

View File

@ -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)]

View File

@ -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>
/// 用户注册默认部门

View File

@ -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; }
}

View File

@ -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)

View File

@ -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; }
}

View File

@ -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; }
}

View File

@ -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; }
}

View File

@ -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; }
}

View File

@ -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 对象

View File

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

View File

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

View File

@ -14,7 +14,7 @@ public record CreateConfigReq : Sys_Config
/// <inheritdoc cref="Sys_Config.UserRegisterConfirm" />
[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)]

View File

@ -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)]

View File

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

View File

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

View File

@ -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);
}
}

View File

@ -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>

View File

@ -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>

View File

@ -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)]

View File

@ -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; }
}

View File

@ -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; }
}

View File

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

View File

@ -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; }
}

View File

@ -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; }
}

View File

@ -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>

View File

@ -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) {
// 加锁

View File

@ -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; }
}

View File

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

View File

@ -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
}

View File

@ -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" />

View File

@ -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"

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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'

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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">

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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'"

View File

@ -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>

View File

@ -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">

View File

@ -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>

View File

@ -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>

View File

@ -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() {

View File

@ -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>

View File

@ -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">

View File

@ -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>

View File

@ -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 />

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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" />

View File

@ -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>

View File

@ -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>

View File

@ -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]
}
})
},

View File

@ -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>

View File

@ -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>

View File

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

View File

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

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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

View File

@ -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
},
},

View File

@ -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)

View File

@ -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>

View File

@ -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>

View File

@ -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