diff --git a/urbanLifelineServ/.bin/database/postgres/sql/createTableAI.sql b/urbanLifelineServ/.bin/database/postgres/sql/createTableAI.sql index 376e2842..3752bd0b 100644 --- a/urbanLifelineServ/.bin/database/postgres/sql/createTableAI.sql +++ b/urbanLifelineServ/.bin/database/postgres/sql/createTableAI.sql @@ -169,3 +169,20 @@ COMMENT ON COLUMN ai.tb_knowledge_file.update_time IS '更新时间'; COMMENT ON COLUMN ai.tb_knowledge_file.delete_time IS '删除时间'; COMMENT ON COLUMN ai.tb_knowledge_file.deleted IS '是否删除'; +DROP TABLE IF EXISTS ai.tb_knowledge_file_log CASCADE; +CREATE TABLE ai.tb_knowledge_file_log( + optsn VARCHAR(50) NOT NULL, -- 流水号 + log_id VARCHAR(50) NOT NULL, -- 日志ID + knowledge_id VARCHAR(50) NOT NULL, -- 知识库ID + file_root_id VARCHAR(50) NOT NULL, -- 文件根ID + file_id VARCHAR(50) NOT NULL, -- 文件ID + file_name VARCHAR(100) NOT NULL, -- 文件名 + service VARCHAR(50) NOT NULL, -- 所属服务 workcase、bidding + version INTEGER NOT NULL DEFAULT 1, -- 文件版本 + action VARCHAR(50) NOT NULL, -- 操作类型 upload、update、delete + creator VARCHAR(50) NOT NULL, -- 创建者(用户ID) + creator_name VARCHAR(100) NOT NULL, -- 创建者姓名 + create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间 + PRIMARY KEY (optsn), + UNIQUE (knowledge_id, file_id) +); diff --git a/urbanLifelineServ/ai/src/main/java/org/xyzh/ai/controller/KnowledgeController.java b/urbanLifelineServ/ai/src/main/java/org/xyzh/ai/controller/KnowledgeController.java index 56b03532..509a4a36 100644 --- a/urbanLifelineServ/ai/src/main/java/org/xyzh/ai/controller/KnowledgeController.java +++ b/urbanLifelineServ/ai/src/main/java/org/xyzh/ai/controller/KnowledgeController.java @@ -7,7 +7,6 @@ import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotNull; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import jakarta.annotation.Resource; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; @@ -16,9 +15,11 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import org.xyzh.api.ai.service.DifyProxyService; +import org.xyzh.api.ai.service.KnowledgeFileLogService; import org.xyzh.api.ai.service.KnowledgeService; import org.xyzh.api.ai.dto.TbKnowledge; import org.xyzh.api.ai.dto.TbKnowledgeFile; +import org.xyzh.api.ai.dto.TbKnowledgeFileLog; import org.xyzh.api.ai.vo.KnowledgeFileVO; import org.xyzh.common.core.domain.ResultDomain; import org.xyzh.common.core.page.PageRequest; @@ -46,6 +47,9 @@ public class KnowledgeController { @Autowired private KnowledgeService knowledgeService; + @Autowired + private KnowledgeFileLogService knowledgeFileLogService; + @Autowired private DifyProxyService difyProxyService; @@ -347,4 +351,29 @@ public class KnowledgeController { logger.info("更新文档状态: datasetId={}, action={}", datasetId, action); return difyProxyService.updateDocumentStatus(datasetId, action, requestBody); } + + // ================================ 知识库文件操作日志 ======================= + /** + * @description 查询知识库操作日志列表 + * @param fileLog + * @author yslg + * @since 2025-12-18 + */ + @PreAuthorize("hasAuthority('ai:knowledge:file:view')") + @PostMapping("/datasets/log/list") + public ResultDomain getKnowledgeFileLogList(@RequestBody TbKnowledgeFileLog fileLog){ + return knowledgeFileLogService.getKnowledgeFileLogList(fileLog); + } + + /** + * @description 查询知识库操作日志分页 + * @param pageRequest + * @author yslg + * @since 2025-12-18 + */ + @PreAuthorize("hasAuthority('ai:knowledge:file:view')") + @PostMapping("/datasets/log/page") + public ResultDomain getKnowledgeFileLogPage(@RequestBody PageRequest pageRequest){ + return knowledgeFileLogService.getKnowledgeFileLogPage(pageRequest); + } } diff --git a/urbanLifelineServ/ai/src/main/java/org/xyzh/ai/mapper/TbKnowledgeFileLogMapper.java b/urbanLifelineServ/ai/src/main/java/org/xyzh/ai/mapper/TbKnowledgeFileLogMapper.java new file mode 100644 index 00000000..e290c570 --- /dev/null +++ b/urbanLifelineServ/ai/src/main/java/org/xyzh/ai/mapper/TbKnowledgeFileLogMapper.java @@ -0,0 +1,31 @@ +package org.xyzh.ai.mapper; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.xyzh.api.ai.dto.TbKnowledgeFile; +import org.xyzh.api.ai.dto.TbKnowledgeFileLog; +import org.xyzh.api.ai.vo.KnowledgeFileVO; +import org.xyzh.common.core.page.PageParam; + +import java.util.List; + +/** + * @description 知识库文件数据访问层 + * @filename KnowledgeFileMapper.java + * @author yslg + * @copyright xyzh + * @since 2025-12-17 + */ +@Mapper +public interface TbKnowledgeFileLogMapper { + + int addKnowledgeFileLog(TbKnowledgeFileLog tbKnowledgeFileLog); + + List getKnowledgeFileLogList(@Param("filter") TbKnowledgeFileLog filter); + + List getKnowledgeFileLogPage(@Param("pageParam") PageParam pageParam,@Param("filter") TbKnowledgeFileLog filter); + + + int countKnowledgeFileLog(@Param("filter") TbKnowledgeFileLog filter); + +} diff --git a/urbanLifelineServ/ai/src/main/java/org/xyzh/ai/service/impl/KnowledgeFileLogServiceImpl.java b/urbanLifelineServ/ai/src/main/java/org/xyzh/ai/service/impl/KnowledgeFileLogServiceImpl.java new file mode 100644 index 00000000..bd765cba --- /dev/null +++ b/urbanLifelineServ/ai/src/main/java/org/xyzh/ai/service/impl/KnowledgeFileLogServiceImpl.java @@ -0,0 +1,88 @@ +package org.xyzh.ai.service.impl; + +import java.util.Arrays; +import java.util.List; + +import org.apache.dubbo.config.annotation.DubboService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.xyzh.ai.mapper.TbKnowledgeFileLogMapper; +import org.xyzh.api.ai.dto.TbKnowledgeFileLog; +import org.xyzh.api.ai.service.KnowledgeFileLogService; +import org.xyzh.common.core.domain.ResultDomain; +import org.xyzh.common.core.page.PageDomain; +import org.xyzh.common.core.page.PageParam; +import org.xyzh.common.core.page.PageRequest; +import org.xyzh.common.utils.NonUtils; +import org.xyzh.common.utils.id.IdUtil; +import org.xyzh.common.utils.validation.ValidationResult; +import org.xyzh.common.utils.validation.ValidationUtils; + +@DubboService(version="1.0.0", group="ai", timeout=3000, retries=0) +public class KnowledgeFileLogServiceImpl implements KnowledgeFileLogService{ + + private static final Logger logger = LoggerFactory.getLogger(KnowledgeServiceImpl.class); + + @Autowired + private TbKnowledgeFileLogMapper knowledgeFileLogMapper; + + /** + * @description 新增知识库文件操作日志 + * @param knowledgeFileLog + * @return 日志 + * @author yslg + * @since 2025-12-31 + */ + @Override + public ResultDomain addKnowledgeFileLog(TbKnowledgeFileLog knowledgeFileLog){ + knowledgeFileLog.setOptsn(IdUtil.getOptsn()); + knowledgeFileLog.setLogId(IdUtil.generateID()); + ValidationResult rt = ValidationUtils.validate(knowledgeFileLog, Arrays.asList( + + )); + if(!rt.isValid()){ + return ResultDomain.failure("日志参数校验失败"); + } + int result = knowledgeFileLogMapper.addKnowledgeFileLog(knowledgeFileLog); + if(result >0){ + return ResultDomain.success("添加知识库文件日志成功", knowledgeFileLog); + }else { + return ResultDomain.failure("添加知识库文件日志失败"); + } + } + + /** + * @description 查询知识库日志操作列表 + * @param filter + * @return 日志列表 + * @author yslg + * @since 2025-12-31 + */ + @Override + public ResultDomain getKnowledgeFileLogList(TbKnowledgeFileLog filter){ + List logs = knowledgeFileLogMapper.getKnowledgeFileLogList(filter); + return ResultDomain.success("查询知识库日志成功",logs); + } + + /** + * @description 查询知识库日志操作分页 + * @param pageRequest + * @return 日志分页数据 + * @author yslg + * @since 2025-12-31 + */ + @Override + public ResultDomain getKnowledgeFileLogPage(PageRequest pageRequest){ + List logs = knowledgeFileLogMapper.getKnowledgeFileLogPage(pageRequest.getPageParam(), pageRequest.getFilter()); + int total = knowledgeFileLogMapper.countKnowledgeFileLog(pageRequest.getFilter()); + PageDomain pageDomain = new PageDomain<>(); + pageDomain.setDataList(logs); + PageParam pageParam = pageRequest.getPageParam(); + pageParam.setTotal(total); + pageDomain.setPageParam(pageParam); + return ResultDomain.success("查询知识库日志成功", pageDomain); + } + + +} diff --git a/urbanLifelineServ/ai/src/main/java/org/xyzh/ai/service/impl/KnowledgeServiceImpl.java b/urbanLifelineServ/ai/src/main/java/org/xyzh/ai/service/impl/KnowledgeServiceImpl.java index d9daa98a..68a3029e 100644 --- a/urbanLifelineServ/ai/src/main/java/org/xyzh/ai/service/impl/KnowledgeServiceImpl.java +++ b/urbanLifelineServ/ai/src/main/java/org/xyzh/ai/service/impl/KnowledgeServiceImpl.java @@ -16,7 +16,10 @@ import org.xyzh.ai.mapper.TbKnowledgeFileMapper; import org.xyzh.ai.mapper.TbKnowledgeMapper; import org.xyzh.api.ai.dto.TbKnowledge; import org.xyzh.api.ai.dto.TbKnowledgeFile; +import org.xyzh.api.ai.dto.TbKnowledgeFileLog; +import org.xyzh.api.ai.constance.KnowledgeFileLogAction; import org.xyzh.api.ai.service.AIFileUploadService; +import org.xyzh.api.ai.service.KnowledgeFileLogService; import org.xyzh.api.ai.service.KnowledgeService; import org.xyzh.api.ai.vo.KnowledgeFileVO; import org.xyzh.api.file.dto.TbSysFileDTO; @@ -58,6 +61,9 @@ public class KnowledgeServiceImpl implements KnowledgeService { @DubboReference(version = "1.0.0", group = "file", timeout = 30000, retries = 0) private FileService fileService; + @Autowired + private KnowledgeFileLogService knowledgeFileLogService; + @Autowired private AIFileUploadService aiFileUploadService; @@ -537,6 +543,18 @@ public class KnowledgeServiceImpl implements KnowledgeService { int rows = knowledgeFileMapper.insertKnowledgeFile(knowledgeFile); if (rows > 0) { logger.info("保存知识库文件记录成功: knowledgeId={}, fileId={}, difyFileId={}", knowledgeId, fileId, difyFileId); + // 记录日志 + TbKnowledgeFileLog log = new TbKnowledgeFileLog(); + log.setKnowledgeId(knowledgeId); + log.setFileRootId(fileId); + log.setFileId(fileId); + log.setFileName(file.getOriginalFilename()); + log.setVersion(1); + log.setAction(KnowledgeFileLogAction.UPLOAD.getAction()); + log.setService("workcase"); + log.setCreator(LoginUtil.getCurrentUserId()); + log.setCreatorName(LoginUtil.getCurrentUserName()); + knowledgeFileLogService.addKnowledgeFileLog(log); return ResultDomain.success("上传成功", knowledgeFile); } @@ -683,6 +701,18 @@ public class KnowledgeServiceImpl implements KnowledgeService { int rows = knowledgeFileMapper.insertKnowledgeFile(newKnowledgeFile); if (rows > 0) { logger.info("保存新版本记录成功: knowledgeId={}, fileRootId={}, newVersion={}", knowledgeId, fileRootId, newVersion); + // 记录日志 + TbKnowledgeFileLog log = new TbKnowledgeFileLog(); + log.setKnowledgeId(knowledgeId); + log.setFileRootId(fileRootId); + log.setFileId(newFileId); + log.setFileName(file.getOriginalFilename()); + log.setVersion(newVersion); + log.setAction(KnowledgeFileLogAction.UPDATE.getAction()); + log.setService("workcase"); + log.setCreator(LoginUtil.getCurrentUserId()); + log.setCreatorName(LoginUtil.getCurrentUserName()); + knowledgeFileLogService.addKnowledgeFileLog(log); return ResultDomain.success("更新成功", newKnowledgeFile); } @@ -735,6 +765,15 @@ public class KnowledgeServiceImpl implements KnowledgeService { for (TbKnowledgeFile file : versions) { fileService.deleteFile(file.getFileId()); } + // 记录日志 + TbKnowledgeFileLog log = new TbKnowledgeFileLog(); + log.setKnowledgeId(knowledge.getKnowledgeId()); + log.setFileRootId(fileRootId); + log.setAction(KnowledgeFileLogAction.DELETE.getAction()); + log.setService("workcase"); + log.setCreator(LoginUtil.getCurrentUserId()); + log.setCreatorName(LoginUtil.getCurrentUserName()); + knowledgeFileLogService.addKnowledgeFileLog(log); return ResultDomain.success("删除成功", true); } diff --git a/urbanLifelineServ/ai/src/main/resources/log4j2.xml b/urbanLifelineServ/ai/src/main/resources/log4j2.xml index 6370e274..d99f9f0c 100644 --- a/urbanLifelineServ/ai/src/main/resources/log4j2.xml +++ b/urbanLifelineServ/ai/src/main/resources/log4j2.xml @@ -47,7 +47,7 @@ - + diff --git a/urbanLifelineServ/ai/src/main/resources/mapper/TbKnowledgeFileLogMapper.xml b/urbanLifelineServ/ai/src/main/resources/mapper/TbKnowledgeFileLogMapper.xml new file mode 100644 index 00000000..d63322d6 --- /dev/null +++ b/urbanLifelineServ/ai/src/main/resources/mapper/TbKnowledgeFileLogMapper.xml @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + optsn, log_id, knowledge_id, file_root_id, file_id, file_name, version, + action, creator, creator_name, create_time + + + + INSERT INTO ai.tb_knowledge_file_log ( + optsn, log_id, knowledge_id, file_root_id, file_id, file_name, version, + action, service, creator, creator_name, create_time + ) VALUES ( + #{optsn}, #{logId}, #{knowledgeId}, #{fileRootId}, #{fileId}, #{fileName}, #{version}, + #{action}, #{service}, #{creator}, #{creatorName}, NOW() + ) + + + + + + + + diff --git a/urbanLifelineServ/apis/api-ai/src/main/java/org/xyzh/api/ai/constance/KnowledgeFileLogAction.java b/urbanLifelineServ/apis/api-ai/src/main/java/org/xyzh/api/ai/constance/KnowledgeFileLogAction.java new file mode 100644 index 00000000..8c49c21b --- /dev/null +++ b/urbanLifelineServ/apis/api-ai/src/main/java/org/xyzh/api/ai/constance/KnowledgeFileLogAction.java @@ -0,0 +1,28 @@ +package org.xyzh.api.ai.constance; + + +public enum KnowledgeFileLogAction { + UPLOAD("upload", "上传文件"), + DELETE("delete", "删除文件"), + DOWNLOAD("download", "下载文件"), + UPDATE("update", "更新文件"), + SEGMENT_CREATE("segment_create", "创建分段"), + SEGMENT_UPDATE("segment_update", "更新分段"), + SEGMENT_DELETE("segment_delete", "更新分段"); + + private String action; + private String description; + private KnowledgeFileLogAction(String action, String description) { + this.action = action; + this.description = description; + } + + public String getAction() { + return action; + } + + public String getDescription(){ + return description; + } + +} diff --git a/urbanLifelineServ/apis/api-ai/src/main/java/org/xyzh/api/ai/dto/TbKnowledgeFileLog.java b/urbanLifelineServ/apis/api-ai/src/main/java/org/xyzh/api/ai/dto/TbKnowledgeFileLog.java new file mode 100644 index 00000000..1ca97c0c --- /dev/null +++ b/urbanLifelineServ/apis/api-ai/src/main/java/org/xyzh/api/ai/dto/TbKnowledgeFileLog.java @@ -0,0 +1,38 @@ +package org.xyzh.api.ai.dto; + +import org.xyzh.common.dto.BaseDTO; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +@Schema(description = "知识库文件日志") +public class TbKnowledgeFileLog extends BaseDTO { + private static final long serialVersionUID = 1L; + + @Schema(description = "日志Id") + private String logId; + + @Schema(description = "知识库Id") + private String knowledgeId; + + @Schema(description = "文件根Id") + private String fileRootId; + + @Schema(description = "文件Id") + private String fileId; + + @Schema(description = "文件名称") + private String fileName; + + @Schema(description = "服务名称") + private String service; + + @Schema(description = "文件版本") + private Integer version; + + @Schema(description = "操作") + private String action; + + @Schema(description = "操作人用户名") + private String creatorName; +} diff --git a/urbanLifelineServ/apis/api-ai/src/main/java/org/xyzh/api/ai/service/KnowledgeFileLogService.java b/urbanLifelineServ/apis/api-ai/src/main/java/org/xyzh/api/ai/service/KnowledgeFileLogService.java new file mode 100644 index 00000000..13eaff1f --- /dev/null +++ b/urbanLifelineServ/apis/api-ai/src/main/java/org/xyzh/api/ai/service/KnowledgeFileLogService.java @@ -0,0 +1,43 @@ +package org.xyzh.api.ai.service; + +import org.xyzh.api.ai.dto.TbKnowledgeFileLog; +import org.xyzh.common.core.domain.ResultDomain; +import org.xyzh.common.core.page.PageRequest; + +/** + * @description 知识库文件操作日志 + * @filename KnowledgeFileLogService.java + * @author yslg + * @copyright yslg + * @since 2025-12-31 + */ +public interface KnowledgeFileLogService { + + /** + * @description 新增知识库文件操作日志 + * @param knowledgeFileLog + * @return 日志 + * @author yslg + * @since 2025-12-31 + */ + ResultDomain addKnowledgeFileLog(TbKnowledgeFileLog knowledgeFileLog); + + /** + * @description 查询知识库日志操作列表 + * @param filter + * @return 日志列表 + * @author yslg + * @since 2025-12-31 + */ + ResultDomain getKnowledgeFileLogList(TbKnowledgeFileLog filter); + + /** + * @description 查询知识库日志操作分页 + * @param pageRequest + * @return 日志分页数据 + * @author yslg + * @since 2025-12-31 + */ + ResultDomain getKnowledgeFileLogPage(PageRequest pageRequest); + +} diff --git a/urbanLifelineServ/workcase/src/main/resources/mapper/TbChatMessageMapper.xml b/urbanLifelineServ/workcase/src/main/resources/mapper/TbChatMessageMapper.xml index 108c4866..065bc8a6 100644 --- a/urbanLifelineServ/workcase/src/main/resources/mapper/TbChatMessageMapper.xml +++ b/urbanLifelineServ/workcase/src/main/resources/mapper/TbChatMessageMapper.xml @@ -54,7 +54,7 @@ INSERT INTO workcase.tb_chat_room_message ( - optsn, message_id, room_id, sender_id, sender_type, sender_name, content, creator + optsn, message_id, room_id, sender_id, sender_type, sender_name, content, creator,send_time , message_type , files , content_extra @@ -62,10 +62,9 @@ , is_ai_message , ai_message_id , status - , send_time , create_time ) VALUES ( - #{optsn}, #{messageId}, #{roomId}, #{senderId}, #{senderType}, #{senderName}, #{content}, #{creator} + #{optsn}, #{messageId}, #{roomId}, #{senderId}, #{senderType}, #{senderName}, #{content}, #{creator},#{sendTime} , #{messageType} , #{files, typeHandler=org.xyzh.common.jdbc.handler.StringArrayTypeHandler} , #{contentExtra, typeHandler=org.xyzh.common.jdbc.handler.FastJson2TypeHandler}::jsonb @@ -73,7 +72,6 @@ , #{isAiMessage} , #{aiMessageId} , #{status} - , send_time , #{createTime} ) diff --git a/urbanLifelineWeb/packages/shared/src/api/ai/aiKnowledge.ts b/urbanLifelineWeb/packages/shared/src/api/ai/aiKnowledge.ts index 583ac287..791e10c4 100644 --- a/urbanLifelineWeb/packages/shared/src/api/ai/aiKnowledge.ts +++ b/urbanLifelineWeb/packages/shared/src/api/ai/aiKnowledge.ts @@ -1,6 +1,6 @@ import { api } from '@/api/index' import type { ResultDomain, PageRequest } from '@/types' -import type { TbKnowledge, TbKnowledgeFile, KnowledgeFileVO, SegmentRequestBody, DocumentStatusRequestBody } from '@/types/ai' +import type { TbKnowledge, TbKnowledgeFile, KnowledgeFileVO, SegmentRequestBody, DocumentStatusRequestBody, TbKnowledgeFileLog } from '@/types/ai' /** * @description AI知识库相关接口 @@ -263,5 +263,25 @@ export const aiKnowledgeAPI = { requestBody ) return response.data + }, + + // ====================== 日志管理 ====================== + + /** + * 查询知识库操作日志列表 + * @param fileLog 查询条件 + */ + async getFileLogList(fileLog: TbKnowledgeFileLog): Promise> { + const response = await api.post(`${this.baseUrl}/datasets/log/list`, fileLog) + return response.data + }, + + /** + * 分页查询知识库操作日志 + * @param pageRequest 分页请求 + */ + async getFileLogPage(pageRequest: PageRequest): Promise> { + const response = await api.post(`${this.baseUrl}/datasets/log/page`, pageRequest) + return response.data } } \ No newline at end of file diff --git a/urbanLifelineWeb/packages/shared/src/types/ai/aiKnowledge.ts b/urbanLifelineWeb/packages/shared/src/types/ai/aiKnowledge.ts index 958c1350..09a53104 100644 --- a/urbanLifelineWeb/packages/shared/src/types/ai/aiKnowledge.ts +++ b/urbanLifelineWeb/packages/shared/src/types/ai/aiKnowledge.ts @@ -105,4 +105,28 @@ export interface SegmentRequestBody { */ export interface DocumentStatusRequestBody { [key: string]: any +} + +/** + * 知识库文件操作日志 + */ +export interface TbKnowledgeFileLog extends BaseDTO { + /** 日志ID */ + logId?: string + /** 知识库ID */ + knowledgeId?: string + /** 文件根ID */ + fileRootId?: string + /** 文件ID */ + fileId?: string + /** 文件名称 */ + fileName?: string + /** 服务名称 */ + service?: string + /** 文件版本 */ + version?: number + /** 操作类型 upload/download/delete/update */ + action?: string + /** 操作人用户名 */ + creatorName?: string } \ No newline at end of file diff --git a/urbanLifelineWeb/packages/workcase/src/types/shared.d.ts b/urbanLifelineWeb/packages/workcase/src/types/shared.d.ts index 1a4cacee..0e142e0b 100644 --- a/urbanLifelineWeb/packages/workcase/src/types/shared.d.ts +++ b/urbanLifelineWeb/packages/workcase/src/types/shared.d.ts @@ -139,7 +139,8 @@ declare module 'shared/types' { ChatMessageListParam, SSEMessageData, SSECallbacks, - SSETask + SSETask, + TbKnowledgeFileLog } from '../../../shared/src/types/ai' // 重新导出 menu diff --git a/urbanLifelineWeb/packages/workcase/src/views/admin/log/knowledgeLog/KnowledgeLogView.vue b/urbanLifelineWeb/packages/workcase/src/views/admin/log/knowledgeLog/KnowledgeLogView.vue index 54ca8c4d..78fccd1f 100644 --- a/urbanLifelineWeb/packages/workcase/src/views/admin/log/knowledgeLog/KnowledgeLogView.vue +++ b/urbanLifelineWeb/packages/workcase/src/views/admin/log/knowledgeLog/KnowledgeLogView.vue @@ -11,49 +11,72 @@
- +
- + - - - + + - +
- - - + + + - - + + - + - - - - + + + + + @@ -61,7 +84,15 @@
- +
@@ -76,19 +107,22 @@ {{ selectedLog.fileName }} - {{ selectedLog.operationName }} + {{ getOperationName(selectedLog.action) }} - - {{ selectedLog.kbType === 'external' ? '外部知识库' : '内部知识库' }} + + v{{ selectedLog.version || 1 }} - {{ selectedLog.operator }} + {{ selectedLog.creatorName }} - {{ selectedLog.operationTime }} + {{ formatTime(selectedLog.createTime) }} - - {{ selectedLog.fileSize }} + + {{ selectedLog.knowledgeId }} + + + {{ selectedLog.fileId }} @@ -96,63 +130,140 @@ \ No newline at end of file +