mirror of
				https://github.com/bufanyun/hotgo.git
				synced 2025-11-04 16:23:43 +08:00 
			
		
		
		
	发布v2.17.8版本,更新内容请查看:https://github.com/bufanyun/hotgo/blob/v2.0/docs/guide-zh-CN/start-update-log.md
This commit is contained in:
		@@ -1,6 +1,6 @@
 | 
			
		||||
# HotGo-V2
 | 
			
		||||
<div align="center">
 | 
			
		||||
	<img width="140px" src="https://bufanyun.cn-bj.ufileos.com/hotgo/logo.sig.png">
 | 
			
		||||
	<img width="140px" src="https://gmycos.facms.cn/hotgo/logo.sig.png">
 | 
			
		||||
    <p>
 | 
			
		||||
        <h1>HotGo V2</h1>
 | 
			
		||||
    </p>
 | 
			
		||||
@@ -12,7 +12,7 @@
 | 
			
		||||
	        <img src="https://img.shields.io/badge/vue.js-vue3.4-green" alt="vue">
 | 
			
		||||
	    </a>
 | 
			
		||||
	    <a href="https://www.naiveui.com" target="_blank">
 | 
			
		||||
	        <img src="https://img.shields.io/badge/naiveui-%3E2.41.0-blue" alt="naiveui">
 | 
			
		||||
	        <img src="https://img.shields.io/badge/naiveui-%3E2.42.0-blue" alt="naiveui">
 | 
			
		||||
	    </a>
 | 
			
		||||
		<a href="https://www.tslang.cn/" target="_blank">
 | 
			
		||||
	        <img src="https://img.shields.io/badge/typescript-%3E4.0.0-blue" alt="typescript">
 | 
			
		||||
@@ -124,8 +124,8 @@
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
## 交流QQ群
 | 
			
		||||
交流群①:190966648  <a target="_blank" href="https://qm.qq.com/cgi-bin/qm/qr?k=mJafkvme3VNyiQlCFIFNRtY8Xlr7pj9U&jump_from=webapi&authKey=jL10vIESr+vO8wpxwyd6DlChzkrbHpzN9uhAsIHgAinL/Vvd+nvuRyilf2UqUlCy"><img border="0" src="https://bufanyun.cn-bj.ufileos.com/hotgo/group.png" alt="HotGo框架交流1群" title="HotGo框架交流1群"></a>
 | 
			
		||||
> <img src="https://bufanyun.cn-bj.ufileos.com/hotgo/hotgo1qun.png" width="400px"/>
 | 
			
		||||
交流群①:190966648  <a target="_blank" href="https://qm.qq.com/cgi-bin/qm/qr?k=mJafkvme3VNyiQlCFIFNRtY8Xlr7pj9U&jump_from=webapi&authKey=jL10vIESr+vO8wpxwyd6DlChzkrbHpzN9uhAsIHgAinL/Vvd+nvuRyilf2UqUlCy"><img border="0" src="https://gmycos.facms.cn/hotgo/group.png" alt="HotGo框架交流1群" title="HotGo框架交流1群"></a>
 | 
			
		||||
> <img src="https://gmycos.facms.cn/hotgo/hotgo1qun.png" width="400px"/>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
## 商用说明
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								docs/guide-zh-CN/images/issue/1.4.0.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								docs/guide-zh-CN/images/issue/1.4.0.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 163 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								docs/guide-zh-CN/images/issue/1.4.1.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								docs/guide-zh-CN/images/issue/1.4.1.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 283 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								docs/guide-zh-CN/images/issue/1.4.2.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								docs/guide-zh-CN/images/issue/1.4.2.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 255 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								docs/guide-zh-CN/images/issue/1.4.3.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								docs/guide-zh-CN/images/issue/1.4.3.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 294 KiB  | 
@@ -78,7 +78,7 @@ pnpm run build 或 npm run build
 | 
			
		||||
### Nginx配置
 | 
			
		||||
```
 | 
			
		||||
      # websocket
 | 
			
		||||
      location ^~ /socket  {
 | 
			
		||||
      location = /socket  {
 | 
			
		||||
  			proxy_pass http://127.0.0.1:8000/socket;
 | 
			
		||||
  			proxy_set_header X-Real-IP $remote_addr;
 | 
			
		||||
  			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 | 
			
		||||
@@ -98,7 +98,9 @@ pnpm run build 或 npm run build
 | 
			
		||||
          proxy_set_header  X-Real-IP $remote_addr;
 | 
			
		||||
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 | 
			
		||||
          proxy_set_header X-Forwarded-Proto $scheme;
 | 
			
		||||
          proxy_pass http://127.0.0.1:8000/; # 设置代理服务器的协议和地址
 | 
			
		||||
          proxy_pass http://127.0.0.1:8000/;
 | 
			
		||||
          proxy_redirect off;
 | 
			
		||||
          proxy_buffering off;
 | 
			
		||||
          proxy_http_version 1.1;
 | 
			
		||||
          proxy_set_header Upgrade $http_upgrade;
 | 
			
		||||
          proxy_set_header Connection upgrade;
 | 
			
		||||
 
 | 
			
		||||
@@ -22,7 +22,7 @@
 | 
			
		||||
 | 
			
		||||
#### 1、安装数据库出现 json 报错不支持
 | 
			
		||||
 | 
			
		||||
请安装 mysql5.7 及以上版本的数据库
 | 
			
		||||
请安装 mysql5.7 及以上版本的数据库。如果你使用的是mariadb请确认版本号,mariadb从 10.2 版本开始支持 json 数据类型。
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -50,7 +50,31 @@
 | 
			
		||||
 | 
			
		||||
系统运行目录下配置hack/config.yaml文件。如果是生产环境运行,并且不需要开发工具相关功能,可以将`manifest/config/config.yaml`配置文件中的`system.mode`值改为`product`,这样启动时不会加载开发工具相关功能
 | 
			
		||||
 | 
			
		||||
#### 4、非超管角色提示:你没有访问权限!
 | 
			
		||||

 | 
			
		||||
 | 
			
		||||
此问题因当前角色访问的页面包含未分配权限的接口所致,在多角色场景中较为常见,解决步骤如下:
 | 
			
		||||
 | 
			
		||||
1. 定位缺失权限的接口
 | 
			
		||||
- 用超管账号进入系统应用 -> 日志管理 -> 全局日志,搜索状态码为`62 无访问权限`的记录
 | 
			
		||||
- 示例:若请求接口为`/admin/hgexample/treeTable/list`,需处理的权限路径为`/hgexample/treeTable/list`(去除`/admin`前缀)
 | 
			
		||||
 | 
			
		||||

 | 
			
		||||
 | 
			
		||||
假如查到请求接口是:`/admin/hgexample/treeTable/list`,那需要分配的菜单权限就是:`/hgexample/treeTable/list`,要把`/admin`去掉
 | 
			
		||||
 | 
			
		||||
2. 配置菜单权限
 | 
			
		||||
- 进入权限管理 -> 菜单权限:
 | 
			
		||||
- 若目标菜单不存在,先新增菜单
 | 
			
		||||
- 若菜单已存在但未配置接口权限,就把步骤1中的权限路径添加到【分配权限】中(已配置则跳过)
 | 
			
		||||
  
 | 
			
		||||

 | 
			
		||||
 | 
			
		||||
3. 分配权限给角色
 | 
			
		||||
- 进入权限管理 -> 角色权限,找到对应角色并点击【菜单权限】
 | 
			
		||||
- 勾选步骤2中配置的菜单权限,保存即可
 | 
			
		||||
 | 
			
		||||

 | 
			
		||||
 | 
			
		||||
### 四、前端相关
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -11,6 +11,20 @@
 | 
			
		||||
 | 
			
		||||
> 如果升级(覆盖)代码后打开会出现 sql 报错, 请检查更新的数据库格式或自行调整
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
### v2.17.8
 | 
			
		||||
updated 2025.7.13
 | 
			
		||||
 | 
			
		||||
- 优化:表格排序处理器兼容关联表别名
 | 
			
		||||
- 优化:优化动态统计数字在0值时显示问题
 | 
			
		||||
- 优化:优化首页快捷菜单点击事件范围
 | 
			
		||||
- 优化:优化短信、邮件验证码相关验证类数据排序
 | 
			
		||||
- 优化:优化Nginx配置,支持流式请求和兼容部分版本无法匹配到websocket规则问题
 | 
			
		||||
- 优化:naive-ui版本升级到2.42.0
 | 
			
		||||
- 优化:vue3-json-viewer版本升级到2.4.1
 | 
			
		||||
- 修复:修复可选用户选项`Fields`生成错误问题
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
### v2.16.10
 | 
			
		||||
updated 2025.3.22
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -176,7 +176,7 @@ CREATE TABLE `hg_test_category` (
 | 
			
		||||
 | 
			
		||||
1.3 插入测试数据
 | 
			
		||||
```mysql
 | 
			
		||||
INSERT INTO `hg_test_table` (`id`, `category_id`, `title`, `description`, `content`, `image`, `attachfile`, `city_id`, `switch`, `sort`, `status`, `created_by`, `updated_by`, `created_at`, `updated_at`, `deleted_at`) VALUES (1, 1, '测试标题', '描述', '<h2><strong>不知道写点啥!</strong></h2><p><br></p><iframe class=\"ql-video\" frameborder=\"0\" allowfullscreen=\"true\" src=\"https://media.w3.org/2010/05/sintel/trailer.mp4\"></iframe><p><br></p><p><img src=\"http://bufanyun.cn-bj.ufileos.com/hotgo/attachment/2023-02-09/cqdq9iuv0phsg8patk.png\"></p>', 'https://bufanyun.cn-bj.ufileos.com/hotgo/logo.sig.png', 'http://bufanyun.cn-bj.ufileos.com/hotgo/attachment/2022-12-30/cpf1x44idoycrtajf2.xlsx', 110102, 1, 10, 1, 0, 1, '2022-12-15 19:30:14', '2023-02-23 13:55:32', NULL);
 | 
			
		||||
INSERT INTO `hg_test_table` (`id`, `category_id`, `title`, `description`, `content`, `image`, `attachfile`, `city_id`, `switch`, `sort`, `status`, `created_by`, `updated_by`, `created_at`, `updated_at`, `deleted_at`) VALUES (1, 1, '测试标题', '描述', '<h2><strong>不知道写点啥!</strong></h2><p><br></p><iframe class=\"ql-video\" frameborder=\"0\" allowfullscreen=\"true\" src=\"https://media.w3.org/2010/05/sintel/trailer.mp4\"></iframe><p><br></p><p><img src=\"https://gmycos.facms.cn/hotgo/attachment/2023-02-09/cqdq9iuv0phsg8patk.png\"></p>', 'https://gmycos.facms.cn/hotgo/logo.sig.png', 'https://gmycos.facms.cn/hotgo/attachment/2022-12-30/cpf1x44idoycrtajf2.xlsx', 110102, 1, 10, 1, 0, 1, '2022-12-15 19:30:14', '2023-02-23 13:55:32', NULL);
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -57,4 +57,5 @@ var HTTPHandlerTimeOptions = []*model.Option{
 | 
			
		||||
var HTTPApiCodeOptions = []*model.Option{
 | 
			
		||||
	dict.GenSuccessOption(gcode.CodeOK.Code(), fmt.Sprintf("%v %v", gcode.CodeOK.Code(), "成功")),
 | 
			
		||||
	dict.GenWarningOption(gcode.CodeNil.Code(), fmt.Sprintf("%v %v", gcode.CodeNil.Code(), "失败")),
 | 
			
		||||
	dict.GenWarningOption(gcode.CodeSecurityReason.Code(), fmt.Sprintf("%v %v", gcode.CodeSecurityReason.Code(), "无访问权限")),
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -7,5 +7,5 @@ package consts
 | 
			
		||||
 | 
			
		||||
// VersionApp HotGo版本
 | 
			
		||||
const (
 | 
			
		||||
	VersionApp = "2.16.10"
 | 
			
		||||
	VersionApp = "2.17.8"
 | 
			
		||||
)
 | 
			
		||||
 
 | 
			
		||||
@@ -46,9 +46,13 @@ func Sorter(in ISorter) func(m *gdb.Model) *gdb.Model {
 | 
			
		||||
 | 
			
		||||
				var sorter2 []*form.Sorter
 | 
			
		||||
				for k, sorter := range sorters {
 | 
			
		||||
					if gstr.HasPrefix(sorter.ColumnKey, as) {
 | 
			
		||||
					as2 := as
 | 
			
		||||
					if gstr.Contains(sorter.ColumnKey, `.`) {
 | 
			
		||||
						as2 += "."
 | 
			
		||||
					}
 | 
			
		||||
					if gstr.HasPrefix(sorter.ColumnKey, as2) {
 | 
			
		||||
						sorter2 = append(sorter2, &form.Sorter{
 | 
			
		||||
							ColumnKey: gstr.Replace(sorter.ColumnKey, as, ""),
 | 
			
		||||
							ColumnKey: gstr.Replace(sorter.ColumnKey, as2, ""),
 | 
			
		||||
							Order:     sorter.Order,
 | 
			
		||||
						})
 | 
			
		||||
						removeIndex = append(removeIndex, k)
 | 
			
		||||
 
 | 
			
		||||
@@ -757,7 +757,8 @@ func (s *sAdminMember) GetIdByCode(ctx context.Context, in *adminin.GetIdByCodeI
 | 
			
		||||
 | 
			
		||||
// Select 获取可选的用户选项
 | 
			
		||||
func (s *sAdminMember) Select(ctx context.Context, in *adminin.MemberSelectInp) (res []*adminin.MemberSelectModel, err error) {
 | 
			
		||||
	err = dao.AdminMember.Ctx(ctx).Fields(fmt.Printf("%s as value,%s as label,%s,%s", dao.AdminMember.Columns().Id, dao.AdminMember.Columns().RealName, dao.AdminMember.Columns().Username, dao.AdminMember.Columns().Avatar)).
 | 
			
		||||
	fields := fmt.Sprintf("%s as value,%s as label,%s,%s", dao.AdminMember.Columns().Id, dao.AdminMember.Columns().RealName, dao.AdminMember.Columns().Username, dao.AdminMember.Columns().Avatar)
 | 
			
		||||
	err = dao.AdminMember.Ctx(ctx).Fields(fields).
 | 
			
		||||
		Handler(handler.FilterAuthWithField("id")).
 | 
			
		||||
		Scan(&res)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
 
 | 
			
		||||
@@ -119,7 +119,11 @@ func (s *sSysEmsLog) List(ctx context.Context, in *sysin.EmsLogListInp) (list []
 | 
			
		||||
// Send 发送邮件
 | 
			
		||||
func (s *sSysEmsLog) Send(ctx context.Context, in *sysin.SendEmsInp) (err error) {
 | 
			
		||||
	var models *entity.SysEmsLog
 | 
			
		||||
	if err = dao.SysEmsLog.Ctx(ctx).Where("event", in.Event).Where("email", in.Email).Scan(&models); err != nil {
 | 
			
		||||
	if err = dao.SysEmsLog.Ctx(ctx).
 | 
			
		||||
		Where("event", in.Event).
 | 
			
		||||
		Where("email", in.Email).
 | 
			
		||||
		OrderDesc(dao.SysEmsLog.Columns().Id).
 | 
			
		||||
		Scan(&models); err != nil {
 | 
			
		||||
		err = gerror.Wrap(err, consts.ErrorORM)
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
@@ -239,7 +243,7 @@ func (s *sSysEmsLog) newView(ctx context.Context, in *sysin.SendEmsInp, config *
 | 
			
		||||
		basic = new(model.BasicConfig)
 | 
			
		||||
		basic.Name = simple.AppName(ctx)
 | 
			
		||||
		basic.Domain = "https://hotgo.facms.cn"
 | 
			
		||||
		basic.Logo = "http://bufanyun.cn-bj.ufileos.com/haoka/attachment/images/2023-02-04/cq9kf7s66jt7hkpvbh.png"
 | 
			
		||||
		basic.Logo = "https://gmycos.facms.cn/haoka/attachment/images/2023-02-04/cq9kf7s66jt7hkpvbh.png"
 | 
			
		||||
		basic.SystemOpen = true
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
@@ -380,7 +384,11 @@ func (s *sSysEmsLog) VerifyCode(ctx context.Context, in *sysin.VerifyEmsCodeInp)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	var models *entity.SysEmsLog
 | 
			
		||||
	if err = dao.SysEmsLog.Ctx(ctx).Where(dao.SysEmsLog.Columns().Event, in.Event).Where(dao.SysEmsLog.Columns().Email, in.Email).Order(dao.SysEmsLog.Columns().Id, false).Scan(&models); err != nil {
 | 
			
		||||
	if err = dao.SysEmsLog.Ctx(ctx).
 | 
			
		||||
		Where(dao.SysEmsLog.Columns().Event, in.Event).
 | 
			
		||||
		Where(dao.SysEmsLog.Columns().Email, in.Email).
 | 
			
		||||
		OrderDesc(dao.SysEmsLog.Columns().Id).
 | 
			
		||||
		Scan(&models); err != nil {
 | 
			
		||||
		err = gerror.Wrap(err, consts.ErrorORM)
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
@@ -103,7 +103,11 @@ func (s *sSysSmsLog) SendCode(ctx context.Context, in *sysin.SendCodeInp) (err e
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	var models *entity.SysSmsLog
 | 
			
		||||
	if err = dao.SysSmsLog.Ctx(ctx).Where(dao.SysSmsLog.Columns().Event, in.Event).Where(dao.SysSmsLog.Columns().Mobile, in.Mobile).Scan(&models); err != nil {
 | 
			
		||||
	if err = dao.SysSmsLog.Ctx(ctx).
 | 
			
		||||
		Where(dao.SysSmsLog.Columns().Event, in.Event).
 | 
			
		||||
		Where(dao.SysSmsLog.Columns().Mobile, in.Mobile).
 | 
			
		||||
		OrderDesc(dao.SysSmsLog.Columns().Id).
 | 
			
		||||
		Scan(&models); err != nil {
 | 
			
		||||
		err = gerror.Wrap(err, consts.ErrorORM)
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							@@ -1,7 +1,7 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "hotgo",
 | 
			
		||||
  "type": "module",
 | 
			
		||||
  "version": "2.16.10",
 | 
			
		||||
  "version": "2.17.8",
 | 
			
		||||
  "author": {
 | 
			
		||||
    "name": "MengShuai",
 | 
			
		||||
    "email": "133814250@qq.com",
 | 
			
		||||
@@ -44,7 +44,7 @@
 | 
			
		||||
    "lodash-es": "^4.17.21",
 | 
			
		||||
    "mint-filter": "^4.0.3",
 | 
			
		||||
    "mitt": "^3.0.1",
 | 
			
		||||
    "naive-ui": "^2.41.0",
 | 
			
		||||
    "naive-ui": "^2.42.0",
 | 
			
		||||
    "pinia": "^2.2.2",
 | 
			
		||||
    "pinyin-pro": "^3.24.2",
 | 
			
		||||
    "print-js": "^1.6.0",
 | 
			
		||||
@@ -59,7 +59,7 @@
 | 
			
		||||
    "vue-router": "^4.4.3",
 | 
			
		||||
    "vue-types": "^5.1.3",
 | 
			
		||||
    "vue-waterfall-plugin-next": "^2.6.0",
 | 
			
		||||
    "vue3-json-viewer": "^2.2.2",
 | 
			
		||||
    "vue3-json-viewer": "^2.4.1",
 | 
			
		||||
    "vuedraggable": "^4.1.0",
 | 
			
		||||
    "weixin-js-sdk": "^1.6.5"
 | 
			
		||||
  },
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,8 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <span :style="{ color }">
 | 
			
		||||
  <span :style="{ color }" v-if="endVal > 0">
 | 
			
		||||
    {{ value }}
 | 
			
		||||
  </span>
 | 
			
		||||
  <span :style="{ color }" v-else> 0 </span>
 | 
			
		||||
</template>
 | 
			
		||||
<script lang="ts">
 | 
			
		||||
  import { defineComponent, ref, computed, watchEffect, unref, onMounted, watch } from 'vue';
 | 
			
		||||
 
 | 
			
		||||
@@ -46,7 +46,7 @@
 | 
			
		||||
  import { ImportExcel } from '@/api/addons/hgexample/comp';
 | 
			
		||||
  import type { UploadFileParams } from '@/utils/http/axios/types';
 | 
			
		||||
  import { JsonViewer } from 'vue3-json-viewer';
 | 
			
		||||
  import 'vue3-json-viewer/dist/index.css';
 | 
			
		||||
  import 'vue3-json-viewer/dist/vue3-json-viewer.css';
 | 
			
		||||
 | 
			
		||||
  const message = useMessage();
 | 
			
		||||
  const response = ref<any>({});
 | 
			
		||||
 
 | 
			
		||||
@@ -199,14 +199,19 @@
 | 
			
		||||
    <div class="mt-4">
 | 
			
		||||
      <n-grid cols="1 s:2 m:3 l:8 xl:8 2xl:8" responsive="screen" :x-gap="16" :y-gap="8">
 | 
			
		||||
        <n-grid-item v-for="(item, index) in iconList" :key="index" @click="item.eventObject || {}">
 | 
			
		||||
          <NCard content-style="padding-top: 0;" size="small" :bordered="false">
 | 
			
		||||
          <NCard
 | 
			
		||||
            content-style="padding-top: 0;"
 | 
			
		||||
            size="small"
 | 
			
		||||
            :bordered="false"
 | 
			
		||||
            v-on="item.eventObject || {}"
 | 
			
		||||
          >
 | 
			
		||||
            <template #footer>
 | 
			
		||||
              <n-skeleton v-if="loading" size="medium" />
 | 
			
		||||
              <div class="cursor-pointer" v-else>
 | 
			
		||||
                <p class="flex justify-center">
 | 
			
		||||
                  <span>
 | 
			
		||||
                    <n-icon :size="item.size" class="flex-1" :color="item.color">
 | 
			
		||||
                      <component :is="item.icon" v-on="item.eventObject || {}" />
 | 
			
		||||
                      <component :is="item.icon" />
 | 
			
		||||
                    </n-icon>
 | 
			
		||||
                  </span>
 | 
			
		||||
                </p>
 | 
			
		||||
 
 | 
			
		||||
@@ -107,7 +107,7 @@
 | 
			
		||||
<script lang="ts" setup>
 | 
			
		||||
  import { onMounted, ref } from 'vue';
 | 
			
		||||
  import { JsonViewer } from 'vue3-json-viewer';
 | 
			
		||||
  import 'vue3-json-viewer/dist/index.css';
 | 
			
		||||
  import 'vue3-json-viewer/dist/vue3-json-viewer.css';
 | 
			
		||||
  import { useRouter } from 'vue-router';
 | 
			
		||||
  import { useMessage } from 'naive-ui';
 | 
			
		||||
  import { View } from '@/api/log/log';
 | 
			
		||||
 
 | 
			
		||||
@@ -136,7 +136,7 @@
 | 
			
		||||
<script lang="ts" setup>
 | 
			
		||||
  import { onMounted, ref } from 'vue';
 | 
			
		||||
  import { JsonViewer } from 'vue3-json-viewer';
 | 
			
		||||
  import 'vue3-json-viewer/dist/index.css';
 | 
			
		||||
  import 'vue3-json-viewer/dist/vue3-json-viewer.css';
 | 
			
		||||
  import { useRouter } from 'vue-router';
 | 
			
		||||
  import { useMessage } from 'naive-ui';
 | 
			
		||||
  import { View } from '@/api/log/log';
 | 
			
		||||
 
 | 
			
		||||
@@ -110,7 +110,7 @@
 | 
			
		||||
  import { ExportOutlined, DeleteOutlined } from '@vicons/antd';
 | 
			
		||||
  import { useRouter } from 'vue-router';
 | 
			
		||||
  import { JsonViewer } from 'vue3-json-viewer';
 | 
			
		||||
  import 'vue3-json-viewer/dist/index.css';
 | 
			
		||||
  import 'vue3-json-viewer/dist/vue3-json-viewer.css';
 | 
			
		||||
  import { adaTableScrollX } from '@/utils/hotgo';
 | 
			
		||||
  import { loadOptions } from './model';
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user