Эх сурвалжийг харах

!1776 调整租户站点信息为非必填,当填host时才校验必填;无站点配置取默认租户的
Merge pull request !1776 from Lzh666/N/A

zuohuaijun 10 сар өмнө
parent
commit
ced8f52a4f

+ 3 - 3
Admin.NET/Admin.NET.Core/Entity/SysTenant.cs

@@ -79,20 +79,20 @@ public partial class SysTenant : EntityBase
     /// <summary>
     /// <summary>
     /// 图标
     /// 图标
     /// </summary>
     /// </summary>
-    [SugarColumn(ColumnDescription = "图标", Length = 256), Required, MaxLength(256)]
+    [SugarColumn(ColumnDescription = "图标", Length = 256), MaxLength(256)]
     public virtual string? Logo { get; set; }
     public virtual string? Logo { get; set; }
 
 
     /// <summary>
     /// <summary>
     /// 标题
     /// 标题
     /// </summary>
     /// </summary>
     [SugarColumn(ColumnDescription = "标题", Length = 32), MaxLength(32)]
     [SugarColumn(ColumnDescription = "标题", Length = 32), MaxLength(32)]
-    public virtual string Title { get; set; }
+    public virtual string? Title { get; set; }
 
 
     /// <summary>
     /// <summary>
     /// 副标题
     /// 副标题
     /// </summary>
     /// </summary>
     [SugarColumn(ColumnDescription = "副标题", Length = 32), MaxLength(32)]
     [SugarColumn(ColumnDescription = "副标题", Length = 32), MaxLength(32)]
-    public virtual string ViceTitle { get; set; }
+    public virtual string? ViceTitle { get; set; }
 
 
     /// <summary>
     /// <summary>
     /// 副描述
     /// 副描述

+ 7 - 10
Admin.NET/Admin.NET.Core/Service/Tenant/Dto/TenantInput.cs

@@ -1,4 +1,4 @@
-// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
+// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
 //
 //
 // 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
 // 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
 //
 //
@@ -44,45 +44,42 @@ public class AddTenantInput : TenantOutput
     /// <summary>
     /// <summary>
     /// 系统主标题
     /// 系统主标题
     /// </summary>
     /// </summary>
-    [Required(ErrorMessage = "系统主标题不能为空")]
+    [CommonValidation("!string.IsNullOrWhiteSpace(Host) && string.IsNullOrWhiteSpace(Title)", "系统主标题不能为空")]
     public override string Title { get; set; }
     public override string Title { get; set; }
 
 
     /// <summary>
     /// <summary>
     /// 系统副标题
     /// 系统副标题
     /// </summary>
     /// </summary>
-    [Required(ErrorMessage = "系统副标题不能为空")]
+    [CommonValidation("!string.IsNullOrWhiteSpace(Host) && string.IsNullOrWhiteSpace(ViceTitle)", "系统副标题不能为空")]
     public override string ViceTitle { get; set; }
     public override string ViceTitle { get; set; }
 
 
     /// <summary>
     /// <summary>
     /// 系统描述
     /// 系统描述
     /// </summary>
     /// </summary>
-    [Required(ErrorMessage = "系统描述不能为空")]
+    [CommonValidation("!string.IsNullOrWhiteSpace(Host) && string.IsNullOrWhiteSpace(ViceDesc)", "系统描述不能为空")]
     public override string ViceDesc { get; set; }
     public override string ViceDesc { get; set; }
 
 
     /// <summary>
     /// <summary>
     /// 版权说明
     /// 版权说明
     /// </summary>
     /// </summary>
-    [Required(ErrorMessage = "版权说明不能为空")]
+    [CommonValidation("!string.IsNullOrWhiteSpace(Host) && string.IsNullOrWhiteSpace(Copyright)", "版权说明不能为空")]
     public override string Copyright { get; set; }
     public override string Copyright { get; set; }
 
 
     /// <summary>
     /// <summary>
     /// ICP备案号
     /// ICP备案号
     /// </summary>
     /// </summary>
-    [Required(ErrorMessage = "ICP备案号不能为空")]
     public override string Icp { get; set; }
     public override string Icp { get; set; }
 
 
     /// <summary>
     /// <summary>
     /// ICP地址
     /// ICP地址
     /// </summary>
     /// </summary>
-    [Required(ErrorMessage = "ICP地址不能为空")]
+    [CommonValidation("!string.IsNullOrWhiteSpace(Host) && !string.IsNullOrWhiteSpace(Icp) && string.IsNullOrWhiteSpace(IcpUrl)", "ICP地址不能为空")]
     public override string IcpUrl { get; set; }
     public override string IcpUrl { get; set; }
 
 
     /// <summary>
     /// <summary>
     /// Logo图片Base64码
     /// Logo图片Base64码
     /// </summary>
     /// </summary>
-    [CommonValidation(
-        "string.IsNullOrWhiteSpace(Logo) && string.IsNullOrWhiteSpace(LogoBase64)", "图标不能为空"
-    )]
+    [CommonValidation("!string.IsNullOrWhiteSpace(Host) && string.IsNullOrWhiteSpace(Logo) && string.IsNullOrWhiteSpace(LogoBase64)", "图标不能为空")]
     public virtual string LogoBase64 { get; set; }
     public virtual string LogoBase64 { get; set; }
 
 
     /// <summary>
     /// <summary>

+ 4 - 2
Admin.NET/Admin.NET.Core/Service/Tenant/SysTenantService.cs

@@ -66,8 +66,8 @@ public class SysTenantService : IDynamicApiController, ITransient
     public async Task<SqlSugarPagedList<TenantOutput>> Page(PageTenantInput input)
     public async Task<SqlSugarPagedList<TenantOutput>> Page(PageTenantInput input)
     {
     {
         return await _sysTenantRep.AsQueryable()
         return await _sysTenantRep.AsQueryable()
-            .LeftJoin<SysUser>((u, a) => u.UserId == a.Id)
-            .LeftJoin<SysOrg>((u, a, b) => u.OrgId == b.Id)
+            .LeftJoin<SysUser>((u, a) => u.UserId == a.Id).ClearFilter()
+            .LeftJoin<SysOrg>((u, a, b) => u.OrgId == b.Id).ClearFilter()
             .WhereIF(!string.IsNullOrWhiteSpace(input.Phone), (u, a) => a.Phone.Contains(input.Phone.Trim()))
             .WhereIF(!string.IsNullOrWhiteSpace(input.Phone), (u, a) => a.Phone.Contains(input.Phone.Trim()))
             .WhereIF(!string.IsNullOrWhiteSpace(input.Name), (u, a, b) => b.Name.Contains(input.Name.Trim()))
             .WhereIF(!string.IsNullOrWhiteSpace(input.Name), (u, a, b) => b.Name.Contains(input.Name.Trim()))
             .OrderBy(u => new { u.OrderNo, u.Id })
             .OrderBy(u => new { u.OrderNo, u.Id })
@@ -201,6 +201,8 @@ public class SysTenantService : IDynamicApiController, ITransient
     [NonAction]
     [NonAction]
     public void SetLogoUrl(SysTenant tenant, string logoBase64, string logoFileName)
     public void SetLogoUrl(SysTenant tenant, string logoBase64, string logoFileName)
     {
     {
+        if (string.IsNullOrEmpty(tenant?.Logo) && string.IsNullOrEmpty(tenant?.Logo)) return;
+
         // 旧图标文件相对路径
         // 旧图标文件相对路径
         var oldSysLogoRelativeFilePath = tenant.Logo ?? "";
         var oldSysLogoRelativeFilePath = tenant.Logo ?? "";
         var oldSysLogoAbsoluteFilePath = Path.Combine(App.WebHostEnvironment.WebRootPath, oldSysLogoRelativeFilePath.TrimStart('/'));
         var oldSysLogoAbsoluteFilePath = Path.Combine(App.WebHostEnvironment.WebRootPath, oldSysLogoRelativeFilePath.TrimStart('/'));

+ 52 - 38
Web/src/views/system/tenant/component/editTenant.vue

@@ -3,7 +3,8 @@
 		<el-dialog v-model="state.isShowDialog" draggable :close-on-click-modal="false" width="700px">
 		<el-dialog v-model="state.isShowDialog" draggable :close-on-click-modal="false" width="700px">
 			<template #header>
 			<template #header>
 				<div style="color: #fff">
 				<div style="color: #fff">
-					<el-icon size="16" style="margin-right: 3px; display: inline; vertical-align: middle"> <ele-Edit /> </el-icon>
+					<el-icon size="16" style="margin-right: 3px; display: inline; vertical-align: middle"> <ele-Edit />
+					</el-icon>
 					<span> {{ props.title }} </span>
 					<span> {{ props.title }} </span>
 				</div>
 				</div>
 			</template>
 			</template>
@@ -12,28 +13,34 @@
 					<el-tab-pane label="基本信息" style="height: 400px; overflow-y: auto; overflow-x: hidden">
 					<el-tab-pane label="基本信息" style="height: 400px; overflow-y: auto; overflow-x: hidden">
 						<el-row :gutter="35">
 						<el-row :gutter="35">
 							<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
 							<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
-								<el-form-item label="租户类型" :rules="[{ required: true, message: '租户类型不能为空', trigger: 'blur' }]">
-									<g-sys-dict v-model="state.ruleForm.tenantType" code="TenantTypeEnum" render-as="radio" :disabled="state.ruleForm.id != undefined" />
+								<el-form-item label="租户类型"
+									:rules="[{ required: true, message: '租户类型不能为空', trigger: 'blur' }]">
+									<g-sys-dict v-model="state.ruleForm.tenantType" code="TenantTypeEnum" render-as="radio"
+										:disabled="state.ruleForm.id != undefined" />
 								</el-form-item>
 								</el-form-item>
 							</el-col>
 							</el-col>
 							<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
 							<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
-								<el-form-item label="租户名称" prop="name" :rules="[{ required: true, message: '租户名称不能为空', trigger: 'blur' }]">
+								<el-form-item label="租户名称" prop="name"
+									:rules="[{ required: true, message: '租户名称不能为空', trigger: 'blur' }]">
 									<el-input v-model="state.ruleForm.name" placeholder="租户名称" clearable />
 									<el-input v-model="state.ruleForm.name" placeholder="租户名称" clearable />
 								</el-form-item>
 								</el-form-item>
 							</el-col>
 							</el-col>
 							<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
 							<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
-								<el-form-item label="租管账号" prop="adminAccount" :rules="[{ required: true, message: '租管账号不能为空', trigger: 'blur' }]">
+								<el-form-item label="租管账号" prop="adminAccount"
+									:rules="[{ required: true, message: '租管账号不能为空', trigger: 'blur' }]">
 									<el-input v-model="state.ruleForm.adminAccount" placeholder="租管账号" clearable />
 									<el-input v-model="state.ruleForm.adminAccount" placeholder="租管账号" clearable />
 								</el-form-item>
 								</el-form-item>
 							</el-col>
 							</el-col>
 							<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
 							<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
-								<el-form-item label="电话" prop="phone" :rules="[{ required: true, message: '电话号码不能为空', trigger: 'blur' }]">
+								<el-form-item label="电话" prop="phone"
+									:rules="[{ required: true, message: '电话号码不能为空', trigger: 'blur' }]">
 									<el-input v-model="state.ruleForm.phone" placeholder="电话" clearable />
 									<el-input v-model="state.ruleForm.phone" placeholder="电话" clearable />
 								</el-form-item>
 								</el-form-item>
 							</el-col>
 							</el-col>
 							<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
 							<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
 								<el-form-item label="数据库类型">
 								<el-form-item label="数据库类型">
-									<el-select v-model="state.ruleForm.dbType" placeholder="数据库类型" clearable class="w100" :disabled="state.ruleForm.tenantType == 0 && state.ruleForm.tenantType != undefined">
+									<el-select v-model="state.ruleForm.dbType" placeholder="数据库类型" clearable class="w100"
+										:disabled="state.ruleForm.tenantType == 0 && state.ruleForm.tenantType != undefined">
 										<el-option label="MySql" :value="0" />
 										<el-option label="MySql" :value="0" />
 										<el-option label="SqlServer" :value="1" />
 										<el-option label="SqlServer" :value="1" />
 										<el-option label="Sqlite" :value="2" />
 										<el-option label="Sqlite" :value="2" />
@@ -69,24 +76,17 @@
 							</el-col>
 							</el-col>
 							<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
 							<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
 								<el-form-item label="连接字符串">
 								<el-form-item label="连接字符串">
-									<el-input
-										v-model="state.ruleForm.connection"
-										placeholder="连接字符串"
-										clearable
+									<el-input v-model="state.ruleForm.connection" placeholder="连接字符串" clearable
 										type="textarea"
 										type="textarea"
-										:disabled="state.ruleForm.tenantType == 0 && state.ruleForm.tenantType != undefined"
-									/>
+										:disabled="state.ruleForm.tenantType == 0 && state.ruleForm.tenantType != undefined" />
 								</el-form-item>
 								</el-form-item>
 							</el-col>
 							</el-col>
 							<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
 							<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
 								<el-form-item label="从库连接串">
 								<el-form-item label="从库连接串">
-									<el-input
-										v-model="state.ruleForm.slaveConnections"
+									<el-input v-model="state.ruleForm.slaveConnections"
 										placeholder="格式:[{'HitRate':10, 'ConnectionString':'xxx'},{'HitRate':10, 'ConnectionString':'xxx'}]"
 										placeholder="格式:[{'HitRate':10, 'ConnectionString':'xxx'},{'HitRate':10, 'ConnectionString':'xxx'}]"
-										clearable
-										type="textarea"
-										:disabled="state.ruleForm.tenantType == 0 && state.ruleForm.tenantType != undefined"
-									/>
+										clearable type="textarea"
+										:disabled="state.ruleForm.tenantType == 0 && state.ruleForm.tenantType != undefined" />
 								</el-form-item>
 								</el-form-item>
 							</el-col>
 							</el-col>
 							<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
 							<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
@@ -101,54 +101,70 @@
 							</el-col>
 							</el-col>
 							<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
 							<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
 								<el-form-item label="备注">
 								<el-form-item label="备注">
-									<el-input v-model="state.ruleForm.remark" placeholder="请输入备注内容" clearable type="textarea" />
+									<el-input v-model="state.ruleForm.remark" placeholder="请输入备注内容" clearable
+										type="textarea" />
 								</el-form-item>
 								</el-form-item>
 							</el-col>
 							</el-col>
 						</el-row>
 						</el-row>
 					</el-tab-pane>
 					</el-tab-pane>
-					<el-tab-pane label="站点信息" style="height: 400px; overflow: auto; overflow-x: hidden">
+					<el-tab-pane label="站点信息" style="height: 400px; overflow: auto; overflow-x: hidden"
+						v-if="state.ruleForm.host?.trim()">
 						<el-row :gutter="35">
 						<el-row :gutter="35">
 							<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
 							<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
-								<el-form-item label="Logo" prop="logo" :rules="[{ required: true, message: '应用Logo不能为空', trigger: 'blur' }]">
-									<el-upload ref="uploadRef" class="avatar-uploader" :showFileList="false" :autoUpload="false" accept=".jpg,.png,.svg" action :limit="1" :onChange="handleUploadChange">
-										<img v-if="state.ruleForm.logo" :src="state.ruleForm.logo" class="avatar" style="max-width: 100px; max-height: 100px; object-fit: contain" />
+								<el-form-item label="Logo" prop="logo"
+									:rules="[{ required: true, message: '应用Logo不能为空', trigger: 'blur' }]">
+									<el-upload ref="uploadRef" class="avatar-uploader" :showFileList="false"
+										:autoUpload="false" accept=".jpg,.png,.svg" action :limit="1"
+										:onChange="handleUploadChange">
+										<img v-if="state.ruleForm.logo" :src="state.ruleForm.logo" class="avatar"
+											style="max-width: 100px; max-height: 100px; object-fit: contain" />
 										<SvgIcon v-else class="avatar-uploader-icon" name="ele-Plus" :size="28" />
 										<SvgIcon v-else class="avatar-uploader-icon" name="ele-Plus" :size="28" />
 									</el-upload>
 									</el-upload>
 								</el-form-item>
 								</el-form-item>
 							</el-col>
 							</el-col>
 							<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
 							<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
-								<el-form-item label="标题" prop="title" :rules="[{ required: true, message: '标题不能为空', trigger: 'blur' }]">
+								<el-form-item label="标题" prop="title"
+									:rules="[{ required: true, message: '标题不能为空', trigger: 'blur' }]">
 									<el-input v-model="state.ruleForm.title" placeholder="应用标题" maxlength="32" clearable />
 									<el-input v-model="state.ruleForm.title" placeholder="应用标题" maxlength="32" clearable />
 								</el-form-item>
 								</el-form-item>
 							</el-col>
 							</el-col>
 							<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
 							<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
-								<el-form-item label="副标题" prop="viceTitle" :rules="[{ required: true, message: '副标题不能为空', trigger: 'blur' }]">
-									<el-input v-model="state.ruleForm.viceTitle" placeholder="应用副标题" maxlength="32" clearable />
+								<el-form-item label="副标题" prop="viceTitle"
+									:rules="[{ required: true, message: '副标题不能为空', trigger: 'blur' }]">
+									<el-input v-model="state.ruleForm.viceTitle" placeholder="应用副标题" maxlength="32"
+										clearable />
 								</el-form-item>
 								</el-form-item>
 							</el-col>
 							</el-col>
 							<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
 							<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
-								<el-form-item label="副标题描述" prop="viceDesc" :rules="[{ required: true, message: '副标题描述不能为空', trigger: 'blur' }]">
-									<el-input v-model="state.ruleForm.viceDesc" placeholder="应用副标题描述" maxlength="64" clearable />
+								<el-form-item label="副标题描述" prop="viceDesc"
+									:rules="[{ required: true, message: '副标题描述不能为空', trigger: 'blur' }]">
+									<el-input v-model="state.ruleForm.viceDesc" placeholder="应用副标题描述" maxlength="64"
+										clearable />
 								</el-form-item>
 								</el-form-item>
 							</el-col>
 							</el-col>
 							<el-col :xs="24" :sm="12" :md="24" :lg="24" :xl="24" class="mb20">
 							<el-col :xs="24" :sm="12" :md="24" :lg="24" :xl="24" class="mb20">
-								<el-form-item label="版权信息" prop="copyright" :rules="[{ required: true, message: '版权信息不能为空', trigger: 'blur' }]">
-									<el-input v-model="state.ruleForm.copyright" placeholder="版权信息" maxlength="64" clearable />
+								<el-form-item label="版权信息" prop="copyright"
+									:rules="[{ required: true, message: '版权信息不能为空', trigger: 'blur' }]">
+									<el-input v-model="state.ruleForm.copyright" placeholder="版权信息" maxlength="64"
+										clearable />
 								</el-form-item>
 								</el-form-item>
 							</el-col>
 							</el-col>
 							<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
 							<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
-								<el-form-item label="备案号" prop="icp" :rules="[{ required: true, message: '备案号不能为空', trigger: 'blur' }]">
-									<el-input v-model="state.ruleForm.icp" placeholder="备案号" maxlength="32" clearable />
+								<el-form-item label="备案号" prop="icp">
+									<el-input v-model="state.ruleForm.icp" placeholder="例:省ICP备12345678号" maxlength="32" clearable />
 								</el-form-item>
 								</el-form-item>
 							</el-col>
 							</el-col>
 							<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
 							<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
-								<el-form-item label="ICP地址" prop="icpUrl" :rules="[{ required: true, message: 'ICP地址不能为空', trigger: 'blur' }]">
-									<el-input v-model="state.ruleForm.icpUrl" placeholder="ICP地址" maxlength="32" clearable />
+								<el-form-item label="ICP地址" prop="icpUrl"
+									:rules="[{ required: state.ruleForm.icp, message: 'ICP地址不能为空', trigger: 'blur' }]">
+									<el-input v-model="state.ruleForm.icpUrl" placeholder="例:https://beian.miit.gov.cn" maxlength="32"
+										clearable />
 								</el-form-item>
 								</el-form-item>
 							</el-col>
 							</el-col>
 							<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
 							<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
 								<el-form-item label="水印" prop="watermark">
 								<el-form-item label="水印" prop="watermark">
-									<el-input v-model="state.ruleForm.watermark" placeholder="如果此处留空,则水印功能将被禁用" maxlength="32" clearable />
+									<el-input v-model="state.ruleForm.watermark" placeholder="如果此处留空,则水印功能将被禁用"
+										maxlength="32" clearable />
 								</el-form-item>
 								</el-form-item>
 							</el-col>
 							</el-col>
 						</el-row>
 						</el-row>
@@ -201,8 +217,6 @@ const openDialog = async (row: any) => {
 	state.selectedTabName = '0';
 	state.selectedTabName = '0';
 	ruleFormRef.value?.resetFields();
 	ruleFormRef.value?.resetFields();
 	state.ruleForm = JSON.parse(JSON.stringify(row));
 	state.ruleForm = JSON.parse(JSON.stringify(row));
-	state.ruleForm.icp ??= '省ICP备12345678号';
-	state.ruleForm.icpUrl ??= 'https://beian.miit.gov.cn';
 	state.ruleForm.copyright ??= `Copyright \u00a9 ${new Date().getFullYear()}-present xxxxx All rights reserved.`;
 	state.ruleForm.copyright ??= `Copyright \u00a9 ${new Date().getFullYear()}-present xxxxx All rights reserved.`;
 	state.isShowDialog = true;
 	state.isShowDialog = true;
 	state.regWayData = await getAPI(SysUserRegWayApi).apiSysUserRegWayListPost({ tenantId: row.id }).then((res) => res.data.result ?? []);
 	state.regWayData = await getAPI(SysUserRegWayApi).apiSysUserRegWayListPost({ tenantId: row.id }).then((res) => res.data.result ?? []);

+ 1 - 1
Web/src/views/system/tenant/index.vue

@@ -228,7 +228,7 @@ const resetQuery = () => {
 // 打开新增页面
 // 打开新增页面
 const openAddTenant = () => {
 const openAddTenant = () => {
 	state.editTenantTitle = '添加租户';
 	state.editTenantTitle = '添加租户';
-	editTenantRef.value?.openDialog({ tenantType: 0, orderNo: 100 });
+	editTenantRef.value?.openDialog({ tenantType: 0, orderNo: 100, host: '' });
 };
 };
 
 
 // 打开编辑页面
 // 打开编辑页面