😎1、修复X-Frame-Options页面劫持策略 2、代码优化

This commit is contained in:
zuohuaijun 2025-01-19 14:25:38 +08:00
parent 2b917963b9
commit 4fb5961353
8 changed files with 70 additions and 67 deletions

View File

@ -7,9 +7,9 @@
namespace Admin.NET.Core.Service; namespace Admin.NET.Core.Service;
/// <summary> /// <summary>
/// 系统参数配置服务 🧩 /// 系统配置参数服务 🧩
/// </summary> /// </summary>
[ApiDescriptionSettings(Order = 440, Description = "参数配置")] [ApiDescriptionSettings(Order = 440, Description = "配置参数")]
public class SysConfigService : IDynamicApiController, ITransient public class SysConfigService : IDynamicApiController, ITransient
{ {
private readonly UserManager _userManager; private readonly UserManager _userManager;
@ -30,11 +30,11 @@ public class SysConfigService : IDynamicApiController, ITransient
} }
/// <summary> /// <summary>
/// 获取参数配置分页列表 🔖 /// 获取配置参数分页列表 🔖
/// </summary> /// </summary>
/// <param name="input"></param> /// <param name="input"></param>
/// <returns></returns> /// <returns></returns>
[DisplayName("获取参数配置分页列表")] [DisplayName("获取配置参数分页列表")]
public async Task<SqlSugarPagedList<ConfigOutput>> Page(PageConfigInput input) public async Task<SqlSugarPagedList<ConfigOutput>> Page(PageConfigInput input)
{ {
var query = await GetConfigQueryable(); var query = await GetConfigQueryable();
@ -48,10 +48,10 @@ public class SysConfigService : IDynamicApiController, ITransient
} }
/// <summary> /// <summary>
/// 获取参数配置列表 🔖 /// 获取配置参数列表 🔖
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
[DisplayName("获取参数配置列表")] [DisplayName("获取配置参数列表")]
public async Task<List<ConfigOutput>> List(PageConfigInput input) public async Task<List<ConfigOutput>> List(PageConfigInput input)
{ {
var query = await GetConfigQueryable(); var query = await GetConfigQueryable();
@ -60,12 +60,12 @@ public class SysConfigService : IDynamicApiController, ITransient
} }
/// <summary> /// <summary>
/// 增加参数配置 🔖 /// 增加配置参数 🔖
/// </summary> /// </summary>
/// <param name="input"></param> /// <param name="input"></param>
/// <returns></returns> /// <returns></returns>
[ApiDescriptionSettings(Name = "Add"), HttpPost] [ApiDescriptionSettings(Name = "Add"), HttpPost]
[DisplayName("增加参数配置")] [DisplayName("增加配置参数")]
public async Task AddConfig(AddConfigInput input) public async Task AddConfig(AddConfigInput input)
{ {
if (input.SysFlag == YesNoEnum.Y && !_userManager.SuperAdmin) throw Oops.Oh(ErrorCodeEnum.D9002); if (input.SysFlag == YesNoEnum.Y && !_userManager.SuperAdmin) throw Oops.Oh(ErrorCodeEnum.D9002);
@ -75,12 +75,12 @@ public class SysConfigService : IDynamicApiController, ITransient
} }
/// <summary> /// <summary>
/// 更新参数配置 🔖 /// 更新配置参数 🔖
/// </summary> /// </summary>
/// <param name="input"></param> /// <param name="input"></param>
/// <returns></returns> /// <returns></returns>
[ApiDescriptionSettings(Name = "Update"), HttpPost] [ApiDescriptionSettings(Name = "Update"), HttpPost]
[DisplayName("更新参数配置")] [DisplayName("更新配置参数")]
[UnitOfWork] [UnitOfWork]
public async Task UpdateConfig(UpdateConfigInput input) public async Task UpdateConfig(UpdateConfigInput input)
{ {
@ -148,12 +148,12 @@ public class SysConfigService : IDynamicApiController, ITransient
} }
/// <summary> /// <summary>
/// 删除参数配置 🔖 /// 删除配置参数 🔖
/// </summary> /// </summary>
/// <param name="input"></param> /// <param name="input"></param>
/// <returns></returns> /// <returns></returns>
[ApiDescriptionSettings(Name = "Delete"), HttpPost] [ApiDescriptionSettings(Name = "Delete"), HttpPost]
[DisplayName("删除参数配置")] [DisplayName("删除配置参数")]
public async Task DeleteConfig(DeleteConfigInput input) public async Task DeleteConfig(DeleteConfigInput input)
{ {
var config = await _sysConfigRep.GetByIdAsync(input.Id); var config = await _sysConfigRep.GetByIdAsync(input.Id);
@ -167,12 +167,12 @@ public class SysConfigService : IDynamicApiController, ITransient
} }
/// <summary> /// <summary>
/// 批量删除参数配置 🔖 /// 批量删除配置参数 🔖
/// </summary> /// </summary>
/// <param name="ids"></param> /// <param name="ids"></param>
/// <returns></returns> /// <returns></returns>
[ApiDescriptionSettings(Name = "BatchDelete"), HttpPost] [ApiDescriptionSettings(Name = "BatchDelete"), HttpPost]
[DisplayName("批量删除参数配置")] [DisplayName("批量删除配置参数")]
public async Task BatchDeleteConfig(List<long> ids) public async Task BatchDeleteConfig(List<long> ids)
{ {
foreach (var id in ids) foreach (var id in ids)
@ -189,18 +189,18 @@ public class SysConfigService : IDynamicApiController, ITransient
} }
/// <summary> /// <summary>
/// 获取参数配置详情 🔖 /// 获取配置参数详情 🔖
/// </summary> /// </summary>
/// <param name="input"></param> /// <param name="input"></param>
/// <returns></returns> /// <returns></returns>
[DisplayName("获取参数配置详情")] [DisplayName("获取配置参数详情")]
public async Task<SysConfig> GetDetail([FromQuery] ConfigInput input) public async Task<SysConfig> GetDetail([FromQuery] ConfigInput input)
{ {
return await _sysConfigRep.GetByIdAsync(input.Id); return await _sysConfigRep.GetByIdAsync(input.Id);
} }
/// <summary> /// <summary>
/// 根据Code获取参数配置 /// 根据Code获取配置参数
/// </summary> /// </summary>
/// <param name="code"></param> /// <param name="code"></param>
/// <returns></returns> /// <returns></returns>
@ -212,18 +212,18 @@ public class SysConfigService : IDynamicApiController, ITransient
} }
/// <summary> /// <summary>
/// 根据Code获取参数配置值 🔖 /// 根据Code获取配置参数值 🔖
/// </summary> /// </summary>
/// <param name="code"></param> /// <param name="code"></param>
/// <returns></returns> /// <returns></returns>
[DisplayName("根据Code获取参数配置值")] [DisplayName("根据Code获取配置参数值")]
public async Task<string> GetConfigValueByCode(string code) public async Task<string> GetConfigValueByCode(string code)
{ {
return await GetConfigValueByCode<string>(code); return await GetConfigValueByCode<string>(code);
} }
/// <summary> /// <summary>
/// 获取参数配置 /// 获取配置参数值
/// </summary> /// </summary>
/// <param name="code"></param> /// <param name="code"></param>
/// <returns></returns> /// <returns></returns>
@ -245,7 +245,7 @@ public class SysConfigService : IDynamicApiController, ITransient
} }
/// <summary> /// <summary>
/// 更新参数配置 /// 更新配置参数值
/// </summary> /// </summary>
/// <param name="code"></param> /// <param name="code"></param>
/// <param name="value"></param> /// <param name="value"></param>
@ -301,12 +301,12 @@ public class SysConfigService : IDynamicApiController, ITransient
} }
/// <summary> /// <summary>
/// 批量更新参数配置值 🔖 /// 批量更新配置参数值 🔖
/// </summary> /// </summary>
/// <param name="input"></param> /// <param name="input"></param>
/// <returns></returns> /// <returns></returns>
[ApiDescriptionSettings(Name = "BatchUpdate"), HttpPost] [ApiDescriptionSettings(Name = "BatchUpdate"), HttpPost]
[DisplayName("批量更新参数配置值")] [DisplayName("批量更新配置参数值")]
public async Task BatchUpdateConfig(List<BatchConfigInput> input) public async Task BatchUpdateConfig(List<BatchConfigInput> input)
{ {
foreach (var config in input) foreach (var config in input)
@ -321,7 +321,7 @@ public class SysConfigService : IDynamicApiController, ITransient
} }
/// <summary> /// <summary>
/// 获取参数配置查询器 /// 获取配置参数查询器
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
[NonAction] [NonAction]

View File

@ -273,7 +273,10 @@ public class Startup : AppStartup
// 防止浏览器 MIME 类型嗅探,确保内容按照声明的类型处理 // 防止浏览器 MIME 类型嗅探,确保内容按照声明的类型处理
context.Response.Headers.Append("X-Content-Type-Options", "nosniff"); context.Response.Headers.Append("X-Content-Type-Options", "nosniff");
// 防止点击劫持,确保页面内容不被其他页面覆盖 // 防止点击劫持,确保页面内容不被其他页面覆盖
context.Response.Headers.Append("X-Frame-Options", "DENY"); // DENY表示该页面不允许在 frame 中展示,即便是在相同域名的页面中嵌套也不允许
// SAMEORIGIN表示该页面可以在相同域名页面的 frame 中展示
// ALLOW-FROM uri表示该页面可以在指定来源的 frame 中展示
context.Response.Headers.Append("X-Frame-Options", "ALLOW-FROM " + App.GetConfig<string>("Urls", true));
// 启用 XSS 保护,防止跨站脚本注入 // 启用 XSS 保护,防止跨站脚本注入
context.Response.Headers.Append("X-XSS-Protection", "1; mode=block"); context.Response.Headers.Append("X-XSS-Protection", "1; mode=block");
// 控制在请求中发送的来源信息,减少潜在的隐私泄露 // 控制在请求中发送的来源信息,减少潜在的隐私泄露

View File

@ -36,7 +36,7 @@ export const SysConfigApiAxiosParamCreator = function (configuration?: Configura
return { return {
/** /**
* *
* @summary 🔖 * @summary 🔖
* @param {AddConfigInput} [body] * @param {AddConfigInput} [body]
* @param {*} [options] Override http request option. * @param {*} [options] Override http request option.
* @throws {RequiredError} * @throws {RequiredError}
@ -84,7 +84,7 @@ export const SysConfigApiAxiosParamCreator = function (configuration?: Configura
}, },
/** /**
* *
* @summary 🔖 * @summary 🔖
* @param {Array<number>} [body] * @param {Array<number>} [body]
* @param {*} [options] Override http request option. * @param {*} [options] Override http request option.
* @throws {RequiredError} * @throws {RequiredError}
@ -132,7 +132,7 @@ export const SysConfigApiAxiosParamCreator = function (configuration?: Configura
}, },
/** /**
* *
* @summary 🔖 * @summary 🔖
* @param {Array<BatchConfigInput>} [body] * @param {Array<BatchConfigInput>} [body]
* @param {*} [options] Override http request option. * @param {*} [options] Override http request option.
* @throws {RequiredError} * @throws {RequiredError}
@ -180,7 +180,7 @@ export const SysConfigApiAxiosParamCreator = function (configuration?: Configura
}, },
/** /**
* *
* @summary Code获取参数配置🔖 * @summary Code获取配置参数值 🔖
* @param {string} code * @param {string} code
* @param {*} [options] Override http request option. * @param {*} [options] Override http request option.
* @throws {RequiredError} * @throws {RequiredError}
@ -229,7 +229,7 @@ export const SysConfigApiAxiosParamCreator = function (configuration?: Configura
}, },
/** /**
* *
* @summary 🔖 * @summary 🔖
* @param {DeleteConfigInput} [body] * @param {DeleteConfigInput} [body]
* @param {*} [options] Override http request option. * @param {*} [options] Override http request option.
* @throws {RequiredError} * @throws {RequiredError}
@ -277,7 +277,7 @@ export const SysConfigApiAxiosParamCreator = function (configuration?: Configura
}, },
/** /**
* *
* @summary 🔖 * @summary 🔖
* @param {number} id Id * @param {number} id Id
* @param {*} [options] Override http request option. * @param {*} [options] Override http request option.
* @throws {RequiredError} * @throws {RequiredError}
@ -372,7 +372,7 @@ export const SysConfigApiAxiosParamCreator = function (configuration?: Configura
}, },
/** /**
* *
* @summary 🔖 * @summary 🔖
* @param {PageConfigInput} [body] * @param {PageConfigInput} [body]
* @param {*} [options] Override http request option. * @param {*} [options] Override http request option.
* @throws {RequiredError} * @throws {RequiredError}
@ -420,7 +420,7 @@ export const SysConfigApiAxiosParamCreator = function (configuration?: Configura
}, },
/** /**
* *
* @summary 🔖 * @summary 🔖
* @param {PageConfigInput} [body] * @param {PageConfigInput} [body]
* @param {*} [options] Override http request option. * @param {*} [options] Override http request option.
* @throws {RequiredError} * @throws {RequiredError}
@ -516,7 +516,7 @@ export const SysConfigApiAxiosParamCreator = function (configuration?: Configura
}, },
/** /**
* *
* @summary 🔖 * @summary 🔖
* @param {UpdateConfigInput} [body] * @param {UpdateConfigInput} [body]
* @param {*} [options] Override http request option. * @param {*} [options] Override http request option.
* @throws {RequiredError} * @throws {RequiredError}
@ -573,7 +573,7 @@ export const SysConfigApiFp = function(configuration?: Configuration) {
return { return {
/** /**
* *
* @summary 🔖 * @summary 🔖
* @param {AddConfigInput} [body] * @param {AddConfigInput} [body]
* @param {*} [options] Override http request option. * @param {*} [options] Override http request option.
* @throws {RequiredError} * @throws {RequiredError}
@ -587,7 +587,7 @@ export const SysConfigApiFp = function(configuration?: Configuration) {
}, },
/** /**
* *
* @summary 🔖 * @summary 🔖
* @param {Array<number>} [body] * @param {Array<number>} [body]
* @param {*} [options] Override http request option. * @param {*} [options] Override http request option.
* @throws {RequiredError} * @throws {RequiredError}
@ -601,7 +601,7 @@ export const SysConfigApiFp = function(configuration?: Configuration) {
}, },
/** /**
* *
* @summary 🔖 * @summary 🔖
* @param {Array<BatchConfigInput>} [body] * @param {Array<BatchConfigInput>} [body]
* @param {*} [options] Override http request option. * @param {*} [options] Override http request option.
* @throws {RequiredError} * @throws {RequiredError}
@ -615,7 +615,7 @@ export const SysConfigApiFp = function(configuration?: Configuration) {
}, },
/** /**
* *
* @summary Code获取参数配置🔖 * @summary Code获取配置参数值 🔖
* @param {string} code * @param {string} code
* @param {*} [options] Override http request option. * @param {*} [options] Override http request option.
* @throws {RequiredError} * @throws {RequiredError}
@ -629,7 +629,7 @@ export const SysConfigApiFp = function(configuration?: Configuration) {
}, },
/** /**
* *
* @summary 🔖 * @summary 🔖
* @param {DeleteConfigInput} [body] * @param {DeleteConfigInput} [body]
* @param {*} [options] Override http request option. * @param {*} [options] Override http request option.
* @throws {RequiredError} * @throws {RequiredError}
@ -643,7 +643,7 @@ export const SysConfigApiFp = function(configuration?: Configuration) {
}, },
/** /**
* *
* @summary 🔖 * @summary 🔖
* @param {number} id Id * @param {number} id Id
* @param {*} [options] Override http request option. * @param {*} [options] Override http request option.
* @throws {RequiredError} * @throws {RequiredError}
@ -670,7 +670,7 @@ export const SysConfigApiFp = function(configuration?: Configuration) {
}, },
/** /**
* *
* @summary 🔖 * @summary 🔖
* @param {PageConfigInput} [body] * @param {PageConfigInput} [body]
* @param {*} [options] Override http request option. * @param {*} [options] Override http request option.
* @throws {RequiredError} * @throws {RequiredError}
@ -684,7 +684,7 @@ export const SysConfigApiFp = function(configuration?: Configuration) {
}, },
/** /**
* *
* @summary 🔖 * @summary 🔖
* @param {PageConfigInput} [body] * @param {PageConfigInput} [body]
* @param {*} [options] Override http request option. * @param {*} [options] Override http request option.
* @throws {RequiredError} * @throws {RequiredError}
@ -712,7 +712,7 @@ export const SysConfigApiFp = function(configuration?: Configuration) {
}, },
/** /**
* *
* @summary 🔖 * @summary 🔖
* @param {UpdateConfigInput} [body] * @param {UpdateConfigInput} [body]
* @param {*} [options] Override http request option. * @param {*} [options] Override http request option.
* @throws {RequiredError} * @throws {RequiredError}
@ -735,7 +735,7 @@ export const SysConfigApiFactory = function (configuration?: Configuration, base
return { return {
/** /**
* *
* @summary 🔖 * @summary 🔖
* @param {AddConfigInput} [body] * @param {AddConfigInput} [body]
* @param {*} [options] Override http request option. * @param {*} [options] Override http request option.
* @throws {RequiredError} * @throws {RequiredError}
@ -745,7 +745,7 @@ export const SysConfigApiFactory = function (configuration?: Configuration, base
}, },
/** /**
* *
* @summary 🔖 * @summary 🔖
* @param {Array<number>} [body] * @param {Array<number>} [body]
* @param {*} [options] Override http request option. * @param {*} [options] Override http request option.
* @throws {RequiredError} * @throws {RequiredError}
@ -755,7 +755,7 @@ export const SysConfigApiFactory = function (configuration?: Configuration, base
}, },
/** /**
* *
* @summary 🔖 * @summary 🔖
* @param {Array<BatchConfigInput>} [body] * @param {Array<BatchConfigInput>} [body]
* @param {*} [options] Override http request option. * @param {*} [options] Override http request option.
* @throws {RequiredError} * @throws {RequiredError}
@ -765,7 +765,7 @@ export const SysConfigApiFactory = function (configuration?: Configuration, base
}, },
/** /**
* *
* @summary Code获取参数配置🔖 * @summary Code获取配置参数值 🔖
* @param {string} code * @param {string} code
* @param {*} [options] Override http request option. * @param {*} [options] Override http request option.
* @throws {RequiredError} * @throws {RequiredError}
@ -775,7 +775,7 @@ export const SysConfigApiFactory = function (configuration?: Configuration, base
}, },
/** /**
* *
* @summary 🔖 * @summary 🔖
* @param {DeleteConfigInput} [body] * @param {DeleteConfigInput} [body]
* @param {*} [options] Override http request option. * @param {*} [options] Override http request option.
* @throws {RequiredError} * @throws {RequiredError}
@ -785,7 +785,7 @@ export const SysConfigApiFactory = function (configuration?: Configuration, base
}, },
/** /**
* *
* @summary 🔖 * @summary 🔖
* @param {number} id Id * @param {number} id Id
* @param {*} [options] Override http request option. * @param {*} [options] Override http request option.
* @throws {RequiredError} * @throws {RequiredError}
@ -804,7 +804,7 @@ export const SysConfigApiFactory = function (configuration?: Configuration, base
}, },
/** /**
* *
* @summary 🔖 * @summary 🔖
* @param {PageConfigInput} [body] * @param {PageConfigInput} [body]
* @param {*} [options] Override http request option. * @param {*} [options] Override http request option.
* @throws {RequiredError} * @throws {RequiredError}
@ -814,7 +814,7 @@ export const SysConfigApiFactory = function (configuration?: Configuration, base
}, },
/** /**
* *
* @summary 🔖 * @summary 🔖
* @param {PageConfigInput} [body] * @param {PageConfigInput} [body]
* @param {*} [options] Override http request option. * @param {*} [options] Override http request option.
* @throws {RequiredError} * @throws {RequiredError}
@ -834,7 +834,7 @@ export const SysConfigApiFactory = function (configuration?: Configuration, base
}, },
/** /**
* *
* @summary 🔖 * @summary 🔖
* @param {UpdateConfigInput} [body] * @param {UpdateConfigInput} [body]
* @param {*} [options] Override http request option. * @param {*} [options] Override http request option.
* @throws {RequiredError} * @throws {RequiredError}
@ -854,7 +854,7 @@ export const SysConfigApiFactory = function (configuration?: Configuration, base
export class SysConfigApi extends BaseAPI { export class SysConfigApi extends BaseAPI {
/** /**
* *
* @summary 🔖 * @summary 🔖
* @param {AddConfigInput} [body] * @param {AddConfigInput} [body]
* @param {*} [options] Override http request option. * @param {*} [options] Override http request option.
* @throws {RequiredError} * @throws {RequiredError}
@ -865,7 +865,7 @@ export class SysConfigApi extends BaseAPI {
} }
/** /**
* *
* @summary 🔖 * @summary 🔖
* @param {Array<number>} [body] * @param {Array<number>} [body]
* @param {*} [options] Override http request option. * @param {*} [options] Override http request option.
* @throws {RequiredError} * @throws {RequiredError}
@ -876,7 +876,7 @@ export class SysConfigApi extends BaseAPI {
} }
/** /**
* *
* @summary 🔖 * @summary 🔖
* @param {Array<BatchConfigInput>} [body] * @param {Array<BatchConfigInput>} [body]
* @param {*} [options] Override http request option. * @param {*} [options] Override http request option.
* @throws {RequiredError} * @throws {RequiredError}
@ -887,7 +887,7 @@ export class SysConfigApi extends BaseAPI {
} }
/** /**
* *
* @summary Code获取参数配置🔖 * @summary Code获取配置参数值 🔖
* @param {string} code * @param {string} code
* @param {*} [options] Override http request option. * @param {*} [options] Override http request option.
* @throws {RequiredError} * @throws {RequiredError}
@ -898,7 +898,7 @@ export class SysConfigApi extends BaseAPI {
} }
/** /**
* *
* @summary 🔖 * @summary 🔖
* @param {DeleteConfigInput} [body] * @param {DeleteConfigInput} [body]
* @param {*} [options] Override http request option. * @param {*} [options] Override http request option.
* @throws {RequiredError} * @throws {RequiredError}
@ -909,7 +909,7 @@ export class SysConfigApi extends BaseAPI {
} }
/** /**
* *
* @summary 🔖 * @summary 🔖
* @param {number} id Id * @param {number} id Id
* @param {*} [options] Override http request option. * @param {*} [options] Override http request option.
* @throws {RequiredError} * @throws {RequiredError}
@ -930,7 +930,7 @@ export class SysConfigApi extends BaseAPI {
} }
/** /**
* *
* @summary 🔖 * @summary 🔖
* @param {PageConfigInput} [body] * @param {PageConfigInput} [body]
* @param {*} [options] Override http request option. * @param {*} [options] Override http request option.
* @throws {RequiredError} * @throws {RequiredError}
@ -941,7 +941,7 @@ export class SysConfigApi extends BaseAPI {
} }
/** /**
* *
* @summary 🔖 * @summary 🔖
* @param {PageConfigInput} [body] * @param {PageConfigInput} [body]
* @param {*} [options] Override http request option. * @param {*} [options] Override http request option.
* @throws {RequiredError} * @throws {RequiredError}
@ -963,7 +963,7 @@ export class SysConfigApi extends BaseAPI {
} }
/** /**
* *
* @summary 🔖 * @summary 🔖
* @param {UpdateConfigInput} [body] * @param {UpdateConfigInput} [body]
* @param {*} [options] Override http request option. * @param {*} [options] Override http request option.
* @throws {RequiredError} * @throws {RequiredError}

View File

@ -102,7 +102,7 @@ export interface AddConfigInput {
code?: string | null; code?: string | null;
/** /**
* *
* *
* @type {string} * @type {string}
* @memberof AddConfigInput * @memberof AddConfigInput

View File

@ -102,7 +102,7 @@ export interface ConfigOutput {
code?: string | null; code?: string | null;
/** /**
* *
* *
* @type {string} * @type {string}
* @memberof ConfigOutput * @memberof ConfigOutput

View File

@ -14,7 +14,7 @@
import { YesNoEnum } from './yes-no-enum'; import { YesNoEnum } from './yes-no-enum';
/** /**
* *
* *
* @export * @export
* @interface SysConfig * @interface SysConfig
@ -102,7 +102,7 @@ export interface SysConfig {
code?: string | null; code?: string | null;
/** /**
* *
* *
* @type {string} * @type {string}
* @memberof SysConfig * @memberof SysConfig

View File

@ -102,7 +102,7 @@ export interface UpdateConfigInput {
code?: string | null; code?: string | null;
/** /**
* *
* *
* @type {string} * @type {string}
* @memberof UpdateConfigInput * @memberof UpdateConfigInput

View File

@ -9,7 +9,7 @@
<el-card class="vh80" shadow="hover" header="" v-loading="state.loading"> <el-card class="vh80" shadow="hover" header="" v-loading="state.loading">
<el-row :gutter="35"> <el-row :gutter="35">
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb10"> <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb10">
<el-select v-model="state.swaggerUrl" placeholder="接口分组"> <el-select v-model="state.swaggerUrl" placeholder="接口分组" @change="queryTreeNode()">
<el-option v-for="(item, index) in state.apiGroupList" :key="index" :label="item.name" :value="item.url" /> <el-option v-for="(item, index) in state.apiGroupList" :key="index" :label="item.name" :value="item.url" />
</el-select> </el-select>
</el-col> </el-col>