feat: 去除所有接口中的 vo

This commit is contained in:
xingyu4j
2025-06-25 18:48:16 +08:00
parent 2855eb4e08
commit c59ebbecfd
51 changed files with 232 additions and 236 deletions

View File

@@ -44,7 +44,7 @@ const [Drawer, drawerApi] = useVbenDrawer({
const searchName = ref<string>(''); // 对话搜索
const activeConversationId = ref<null | number>(null); // 选中的对话,默认为 null
const hoverConversationId = ref<null | number>(null); // 悬浮上去的对话
const conversationList = ref([] as AiChatConversationApi.ChatConversationVO[]); // 对话列表
const conversationList = ref([] as AiChatConversationApi.ChatConversation[]); // 对话列表
const conversationMap = ref<any>({}); // 对话分组 (置顶、今天、三天前、一星期前、一个月前)
const loading = ref<boolean>(false); // 加载中
const loadingTime = ref<any>();
@@ -118,7 +118,7 @@ async function getChatConversationList() {
/** 按照 creteTime 创建时间,进行分组 */
async function getConversationGroupByCreateTime(
list: AiChatConversationApi.ChatConversationVO[],
list: AiChatConversationApi.ChatConversation[],
) {
// 排序、指定、时间分组(今天、一天前、三天前、七天前、30天前)
// noinspection NonAsciiCharacters
@@ -164,7 +164,7 @@ async function getConversationGroupByCreateTime(
async function createConversation() {
// 1. 新建对话
const conversationId = await createChatConversationMy(
{} as unknown as AiChatConversationApi.ChatConversationVO,
{} as unknown as AiChatConversationApi.ChatConversation,
);
// 2. 获取对话内容
await getChatConversationList();
@@ -176,7 +176,7 @@ async function createConversation() {
/** 修改对话的标题 */
async function updateConversationTitle(
conversation: AiChatConversationApi.ChatConversationVO,
conversation: AiChatConversationApi.ChatConversation,
) {
// 1. 二次确认
prompt({
@@ -188,7 +188,7 @@ async function updateConversationTitle(
await updateChatConversationMy({
id: conversation.id,
title: scope.value,
} as AiChatConversationApi.ChatConversationVO);
} as AiChatConversationApi.ChatConversation);
message.success('重命名成功');
// 3. 刷新列表
await getChatConversationList();
@@ -230,7 +230,7 @@ async function updateConversationTitle(
/** 删除聊天对话 */
async function deleteChatConversation(
conversation: AiChatConversationApi.ChatConversationVO,
conversation: AiChatConversationApi.ChatConversation,
) {
try {
// 删除的二次确认
@@ -261,7 +261,7 @@ async function handleClearConversation() {
/** 对话置顶 */
async function handleTop(
conversation: AiChatConversationApi.ChatConversationVO,
conversation: AiChatConversationApi.ChatConversation,
) {
// 更新对话置顶
conversation.pinned = !conversation.pinned;

View File

@@ -17,7 +17,7 @@ import { $t } from '#/locales';
import { useFormSchema } from '../../data';
const emit = defineEmits(['success']);
const formData = ref<AiChatConversationApi.ChatConversationVO>();
const formData = ref<AiChatConversationApi.ChatConversation>();
const [Form, formApi] = useVbenForm({
commonConfig: {
@@ -41,7 +41,7 @@ const [Modal, modalApi] = useVbenModal({
modalApi.lock();
// 提交表单
const data =
(await formApi.getValues()) as AiChatConversationApi.ChatConversationVO;
(await formApi.getValues()) as AiChatConversationApi.ChatConversation;
try {
await updateChatConversationMy(data);
@@ -59,7 +59,7 @@ const [Modal, modalApi] = useVbenModal({
return;
}
// 加载数据
const data = modalApi.getData<AiChatConversationApi.ChatConversationVO>();
const data = modalApi.getData<AiChatConversationApi.ChatConversation>();
if (!data || !data.id) {
return;
}

View File

@@ -21,11 +21,11 @@ import MessageKnowledge from './MessageKnowledge.vue';
// 定义 props
const props = defineProps({
conversation: {
type: Object as PropType<AiChatConversationApi.ChatConversationVO>,
type: Object as PropType<AiChatConversationApi.ChatConversation>,
required: true,
},
list: {
type: Array as PropType<AiChatMessageApi.ChatMessageVO[]>,
type: Array as PropType<AiChatMessageApi.ChatMessage[]>,
required: true,
},
});
@@ -95,12 +95,12 @@ async function onDelete(id: number) {
}
/** 刷新 */
async function onRefresh(message: AiChatMessageApi.ChatMessageVO) {
async function onRefresh(message: AiChatMessageApi.ChatMessage) {
emits('onRefresh', message);
}
/** 编辑 */
async function onEdit(message: AiChatMessageApi.ChatMessageVO) {
async function onEdit(message: AiChatMessageApi.ChatMessage) {
emits('onEdit', message);
}

View File

@@ -18,7 +18,7 @@ const props = defineProps({
required: true,
},
roleList: {
type: Array as PropType<AiModelChatRoleApi.ChatRoleVO[]>,
type: Array as PropType<AiModelChatRoleApi.ChatRole[]>,
required: true,
},
showMore: {

View File

@@ -36,12 +36,12 @@ const myRoleParams = reactive({
pageNo: 1,
pageSize: 50,
});
const myRoleList = ref<AiModelChatRoleApi.ChatRoleVO[]>([]); // my 分页大小
const myRoleList = ref<AiModelChatRoleApi.ChatRole[]>([]); // my 分页大小
const publicRoleParams = reactive({
pageNo: 1,
pageSize: 50,
});
const publicRoleList = ref<AiModelChatRoleApi.ChatRoleVO[]>([]); // public 分页大小
const publicRoleList = ref<AiModelChatRoleApi.ChatRole[]>([]); // public 分页大小
const activeCategory = ref<string>('全部'); // 选择中的分类
const categoryList = ref<string[]>([]); // 角色分类类别
@@ -55,7 +55,7 @@ async function handleTabsClick(tab: any) {
/** 获取 my role 我的角色 */
async function getMyRole(append?: boolean) {
const params: AiModelChatRoleApi.ChatRolePageReqVO = {
const params: AiModelChatRoleApi.ChatRolePageReq = {
...myRoleParams,
name: search.value,
publicStatus: false,
@@ -70,7 +70,7 @@ async function getMyRole(append?: boolean) {
/** 获取 public role 公共角色 */
async function getPublicRole(append?: boolean) {
const params: AiModelChatRoleApi.ChatRolePageReqVO = {
const params: AiModelChatRoleApi.ChatRolePageReq = {
...publicRoleParams,
category: activeCategory.value === '全部' ? '' : activeCategory.value,
name: search.value,
@@ -148,9 +148,9 @@ async function handlerCardPage(type: string) {
/** 选择 card 角色:新建聊天对话 */
async function handlerCardUse(role: any) {
// 1. 创建对话
const data: AiChatConversationApi.ChatConversationVO = {
const data: AiChatConversationApi.ChatConversation = {
roleId: role.id,
} as unknown as AiChatConversationApi.ChatConversationVO;
} as unknown as AiChatConversationApi.ChatConversation;
const conversationId = await createChatConversationMy(data);
// 2. 跳转页面

View File

@@ -34,14 +34,14 @@ const [FormModal, formModalApi] = useVbenModal({
// 聊天对话
const conversationListRef = ref();
const activeConversationId = ref<null | number>(null); // 选中的对话编号
const activeConversation = ref<AiChatConversationApi.ChatConversationVO | null>(
const activeConversation = ref<AiChatConversationApi.ChatConversation | null>(
null,
); // 选中的 Conversation
const conversationInProgress = ref(false); // 对话是否正在进行中。目前只有【发送】消息时,会更新为 true避免切换对话、删除对话等操作
// 消息列表
const messageRef = ref();
const activeMessageList = ref<AiChatMessageApi.ChatMessageVO[]>([]); // 选中对话的消息列表
const activeMessageList = ref<AiChatMessageApi.ChatMessage[]>([]); // 选中对话的消息列表
const activeMessageListLoading = ref<boolean>(false); // activeMessageList 是否正在加载中
const activeMessageListLoadingTimer = ref<any>(); // activeMessageListLoading Timer 定时器。如果加载速度很快,就不进入加载中
// 消息滚动
@@ -65,7 +65,7 @@ async function getConversation(id: null | number) {
if (!id) {
return;
}
const conversation: AiChatConversationApi.ChatConversationVO =
const conversation: AiChatConversationApi.ChatConversation =
await getChatConversationMy(id);
if (!conversation) {
return;
@@ -81,7 +81,7 @@ async function getConversation(id: null | number) {
* @return 是否切换成功
*/
async function handleConversationClick(
conversation: AiChatConversationApi.ChatConversationVO,
conversation: AiChatConversationApi.ChatConversation,
) {
// 对话进行中,不允许切换
if (conversationInProgress.value) {
@@ -103,7 +103,7 @@ async function handleConversationClick(
/** 删除某个对话*/
async function handlerConversationDelete(
delConversation: AiChatConversationApi.ChatConversationVO,
delConversation: AiChatConversationApi.ChatConversation,
) {
// 删除的对话如果是当前选中的,那么就重置
if (activeConversationId.value === delConversation.id) {
@@ -303,12 +303,12 @@ async function doSendMessage(content: string) {
await doSendMessageStream({
conversationId: activeConversationId.value,
content,
} as AiChatMessageApi.ChatMessageVO);
} as AiChatMessageApi.ChatMessage);
}
/** 真正执行【发送】消息操作 */
async function doSendMessageStream(
userMessage: AiChatMessageApi.ChatMessageVO,
userMessage: AiChatMessageApi.ChatMessage,
) {
// 创建 AbortController 实例,以便中止请求
conversationInAbortController.value = new AbortController();
@@ -326,14 +326,14 @@ async function doSendMessageStream(
type: 'user',
content: userMessage.content,
createTime: new Date(),
} as AiChatMessageApi.ChatMessageVO,
} as AiChatMessageApi.ChatMessage,
{
id: -2,
conversationId: activeConversationId.value,
type: 'assistant',
content: '思考中...',
createTime: new Date(),
} as AiChatMessageApi.ChatMessageVO,
} as AiChatMessageApi.ChatMessage,
);
// 1.2 滚动到最下面
await nextTick();
@@ -398,12 +398,12 @@ async function stopStream() {
}
/** 编辑 message设置为 prompt可以再次编辑 */
function handleMessageEdit(message: AiChatMessageApi.ChatMessageVO) {
function handleMessageEdit(message: AiChatMessageApi.ChatMessage) {
prompt.value = message.content;
}
/** 刷新 message基于指定消息再次发起对话 */
function handleMessageRefresh(message: AiChatMessageApi.ChatMessageVO) {
function handleMessageRefresh(message: AiChatMessageApi.ChatMessage) {
doSendMessage(message.content);
}

View File

@@ -29,7 +29,7 @@ function onRefresh() {
}
/** 删除 */
async function handleDelete(row: AiChatConversationApi.ChatConversationVO) {
async function handleDelete(row: AiChatConversationApi.ChatConversation) {
const hideLoading = message.loading({
content: $t('ui.actionMessage.deleting', [row.id]),
key: 'action_key_msg',
@@ -72,7 +72,7 @@ const [Grid, gridApi] = useVbenVxeGrid({
refresh: { code: 'query' },
search: true,
},
} as VxeTableGridOptions<AiChatConversationApi.ChatConversationVO>,
} as VxeTableGridOptions<AiChatConversationApi.ChatConversation>,
separator: false,
});
onMounted(async () => {

View File

@@ -26,7 +26,7 @@ function onRefresh() {
}
/** 删除 */
async function handleDelete(row: AiChatConversationApi.ChatConversationVO) {
async function handleDelete(row: AiChatConversationApi.ChatConversation) {
const hideLoading = message.loading({
content: $t('ui.actionMessage.deleting', [row.id]),
key: 'action_key_msg',
@@ -69,7 +69,7 @@ const [Grid, gridApi] = useVbenVxeGrid({
refresh: { code: 'query' },
search: true,
},
} as VxeTableGridOptions<AiChatConversationApi.ChatConversationVO>,
} as VxeTableGridOptions<AiChatConversationApi.ChatConversation>,
separator: false,
});
onMounted(async () => {

View File

@@ -16,7 +16,7 @@ import { AiImageStatusEnum } from '#/utils';
const props = defineProps({
detail: {
type: Object as PropType<AiImageApi.ImageVO>,
type: Object as PropType<AiImageApi.Image>,
default: () => ({}),
},
});
@@ -25,13 +25,13 @@ const emits = defineEmits(['onBtnClick', 'onMjBtnClick']);
const cardImageRef = ref<any>(); // 卡片 image ref
/** 处理点击事件 */
async function handleButtonClick(type: string, detail: AiImageApi.ImageVO) {
async function handleButtonClick(type: string, detail: AiImageApi.Image) {
emits('onBtnClick', type, detail);
}
/** 处理 Midjourney 按钮点击事件 */
async function handleMidjourneyBtnClick(
button: AiImageApi.ImageMidjourneyButtonsVO,
button: AiImageApi.ImageMidjourneyButtons,
) {
// 确认窗体
await confirm(`确认操作 "${button.label} ${button.emoji}" ?`);

View File

@@ -23,7 +23,7 @@ const props = defineProps({
required: true,
},
});
const detail = ref<AiImageApi.ImageVO>({} as AiImageApi.ImageVO);
const detail = ref<AiImageApi.Image>({} as AiImageApi.Image);
/** 获取图片详情 */
async function getImageDetail(id: number) {

View File

@@ -35,7 +35,7 @@ const queryParams = reactive({
pageSize: 10,
});
const pageTotal = ref<number>(0); // page size
const imageList = ref<AiImageApi.ImageVO[]>([]); // image 列表
const imageList = ref<AiImageApi.Image[]>([]); // image 列表
const imageListRef = ref<any>(); // ref
// 图片轮询相关的参数(正在生成中的)
const inProgressImageMap = ref<{}>({}); // 监听的 image 映射一般是生成中需要轮询key 为 image 编号value 为 image
@@ -85,7 +85,7 @@ async function refreshWatchImages() {
if (imageIds.length === 0) {
return;
}
const list = (await getImageListMyByIds(imageIds)) as AiImageApi.ImageVO[];
const list = (await getImageListMyByIds(imageIds)) as AiImageApi.Image[];
const newWatchImages: any = {};
list.forEach((image) => {
if (image.status === AiImageStatusEnum.IN_PROGRESS) {
@@ -106,7 +106,7 @@ async function refreshWatchImages() {
/** 图片的点击事件 */
async function handleImageButtonClick(
type: string,
imageDetail: AiImageApi.ImageVO,
imageDetail: AiImageApi.Image,
) {
// 详情
if (type === 'more') {
@@ -138,14 +138,14 @@ async function handleImageButtonClick(
/** 处理 Midjourney 按钮点击事件 */
async function handleImageMidjourneyButtonClick(
button: AiImageApi.ImageMidjourneyButtonsVO,
imageDetail: AiImageApi.ImageVO,
button: AiImageApi.ImageMidjourneyButtons,
imageDetail: AiImageApi.Image,
) {
// 1. 构建 params 参数
const data = {
id: imageDetail.id,
customId: button.customId,
} as AiImageApi.ImageMidjourneyActionVO;
} as AiImageApi.ImageMidjourneyAction;
// 2. 发送 action
await midjourneyAction(data);
// 3. 刷新列表

View File

@@ -17,8 +17,8 @@ import { AiPlatformEnum, ImageHotWords, OtherPlatformEnum } from '#/utils';
// 接收父组件传入的模型列表
const props = defineProps({
models: {
type: Array<AiModelModelApi.ModelVO>,
default: () => [] as AiModelModelApi.ModelVO[],
type: Array<AiModelModelApi.Model>,
default: () => [] as AiModelModelApi.Model[],
},
});
const emits = defineEmits(['onDrawStart', 'onDrawComplete']);
@@ -31,7 +31,7 @@ const prompt = ref<string>(''); // 提示词
const width = ref<number>(512); // 图片宽度
const height = ref<number>(512); // 图片高度
const otherPlatform = ref<string>(AiPlatformEnum.TONG_YI); // 平台
const platformModels = ref<AiModelModelApi.ModelVO[]>([]); // 模型列表
const platformModels = ref<AiModelModelApi.Model[]>([]); // 模型列表
const modelId = ref<number>(); // 选中的模型
/** 选择热词 */
@@ -64,7 +64,7 @@ async function handleGenerateImage() {
width: width.value, // 图片宽度
height: height.value, // 图片高度
options: {},
} as unknown as AiImageApi.ImageDrawReqVO;
} as unknown as AiImageApi.ImageDrawReq;
await drawImage(form);
} finally {
// 回调
@@ -75,7 +75,7 @@ async function handleGenerateImage() {
}
/** 填充值 */
async function settingValues(detail: AiImageApi.ImageVO) {
async function settingValues(detail: AiImageApi.Image) {
prompt.value = detail.prompt;
width.value = detail.width;
height.value = detail.height;
@@ -85,7 +85,7 @@ async function settingValues(detail: AiImageApi.ImageVO) {
async function handlerPlatformChange(platform: any) {
// 根据选择的平台筛选模型
platformModels.value = props.models.filter(
(item: AiModelModelApi.ModelVO) => item.platform === platform,
(item: AiModelModelApi.Model) => item.platform === platform,
);
modelId.value =
platformModels.value.length > 0 && platformModels.value[0]

View File

@@ -2,7 +2,7 @@
<script setup lang="ts">
import type { AiImageApi } from '#/api/ai/image';
import type { AiModelModelApi } from '#/api/ai/model/model';
import type { ImageModelVO, ImageSizeVO } from '#/utils';
import type { ImageModel, ImageSize } from '#/utils';
import { ref } from 'vue';
@@ -22,8 +22,8 @@ import {
// 接收父组件传入的模型列表
const props = defineProps({
models: {
type: Array<AiModelModelApi.ModelVO>,
default: () => [] as AiModelModelApi.ModelVO[],
type: Array<AiModelModelApi.Model>,
default: () => [] as AiModelModelApi.Model[],
},
});
const emits = defineEmits(['onDrawStart', 'onDrawComplete']);
@@ -50,7 +50,7 @@ async function handleHotWordClick(hotWord: string) {
}
/** 选择 model 模型 */
async function handleModelClick(model: ImageModelVO) {
async function handleModelClick(model: ImageModel) {
selectModel.value = model.key;
// 可以在这里添加模型特定的处理逻辑
// 例如,如果未来需要根据不同模型设置不同参数
@@ -76,12 +76,12 @@ async function handleModelClick(model: ImageModelVO) {
}
/** 选择 style 样式 */
async function handleStyleClick(imageStyle: ImageModelVO) {
async function handleStyleClick(imageStyle: ImageModel) {
style.value = imageStyle.key;
}
/** 选择 size 大小 */
async function handleSizeClick(imageSize: ImageSizeVO) {
async function handleSizeClick(imageSize: ImageSize) {
selectSize.value = imageSize.key;
}
@@ -107,7 +107,7 @@ async function handleGenerateImage() {
emits('onDrawStart', AiPlatformEnum.OPENAI);
const imageSize = Dall3SizeList.find(
(item) => item.key === selectSize.value,
) as ImageSizeVO;
) as ImageSize;
const form = {
platform: AiPlatformEnum.OPENAI,
prompt: prompt.value, // 提示词
@@ -118,7 +118,7 @@ async function handleGenerateImage() {
options: {
style: style.value, // 图像生成的风格
},
} as AiImageApi.ImageDrawReqVO;
} as AiImageApi.ImageDrawReq;
// 发送请求
await drawImage(form);
} finally {
@@ -130,13 +130,13 @@ async function handleGenerateImage() {
}
/** 填充值 */
async function settingValues(detail: AiImageApi.ImageVO) {
async function settingValues(detail: AiImageApi.Image) {
prompt.value = detail.prompt;
selectModel.value = detail.model;
style.value = detail.options?.style;
const imageSize = Dall3SizeList.find(
(item) => item.key === `${detail.width}x${detail.height}`,
) as ImageSizeVO;
) as ImageSize;
await handleSizeClick(imageSize);
}

View File

@@ -2,7 +2,7 @@
<script setup lang="ts">
import type { AiImageApi } from '#/api/ai/image';
import type { AiModelModelApi } from '#/api/ai/model/model';
import type { ImageModelVO, ImageSizeVO } from '#/utils';
import type { ImageModel, ImageSize } from '#/utils';
import { ref } from 'vue';
@@ -33,8 +33,8 @@ import {
// 接收父组件传入的模型列表
const props = defineProps({
models: {
type: Array<AiModelModelApi.ModelVO>,
default: () => [] as AiModelModelApi.ModelVO[],
type: Array<AiModelModelApi.Model>,
default: () => [] as AiModelModelApi.Model[],
},
});
const emits = defineEmits(['onDrawStart', 'onDrawComplete']);
@@ -64,12 +64,12 @@ async function handleHotWordClick(hotWord: string) {
}
/** 点击 size 尺寸 */
async function handleSizeClick(imageSize: ImageSizeVO) {
async function handleSizeClick(imageSize: ImageSize) {
selectSize.value = imageSize.key;
}
/** 点击 model 模型 */
async function handleModelClick(model: ImageModelVO) {
async function handleModelClick(model: ImageModel) {
selectModel.value = model.key;
versionList.value =
model.key === 'niji' ? NijiVersionList : MidjourneyVersions;
@@ -99,7 +99,7 @@ async function handleGenerateImage() {
// 发送请求
const imageSize = MidjourneySizeList.find(
(item) => selectSize.value === item.key,
) as ImageSizeVO;
) as ImageSize;
const req = {
prompt: prompt.value,
modelId: matchedModel.id,
@@ -107,7 +107,7 @@ async function handleGenerateImage() {
height: imageSize.height,
version: selectVersion.value,
referImageUrl: referImageUrl.value,
} as AiImageApi.ImageMidjourneyImagineReqVO;
} as AiImageApi.ImageMidjourneyImagineReq;
await midjourneyImagine(req);
} finally {
// 回调
@@ -118,18 +118,18 @@ async function handleGenerateImage() {
}
/** 填充值 */
async function settingValues(detail: AiImageApi.ImageVO) {
async function settingValues(detail: AiImageApi.Image) {
// 提示词
prompt.value = detail.prompt;
// image size
const imageSize = MidjourneySizeList.find(
(item) => item.key === `${detail.width}:${detail.height}`,
) as ImageSizeVO;
) as ImageSize;
selectSize.value = imageSize.key;
// 选中模型
const model = MidjourneyModels.find(
(item) => item.key === detail.options?.model,
) as ImageModelVO;
) as ImageModel;
await handleModelClick(model);
// 版本
selectVersion.value = versionList.value.find(

View File

@@ -28,8 +28,8 @@ import {
// 接收父组件传入的模型列表
const props = defineProps({
models: {
type: Array<AiModelModelApi.ModelVO>,
default: () => [] as AiModelModelApi.ModelVO[],
type: Array<AiModelModelApi.Model>,
default: () => [] as AiModelModelApi.Model[],
},
});
@@ -106,7 +106,7 @@ async function handleGenerateImage() {
clipGuidancePreset: clipGuidancePreset.value, // 文本提示相匹配的图像 CLIP
stylePreset: stylePreset.value, // 风格
},
} as unknown as AiImageApi.ImageDrawReqVO;
} as unknown as AiImageApi.ImageDrawReq;
await drawImage(form);
} finally {
// 回调
@@ -117,7 +117,7 @@ async function handleGenerateImage() {
}
/** 填充值 */
async function settingValues(detail: AiImageApi.ImageVO) {
async function settingValues(detail: AiImageApi.Image) {
prompt.value = detail.prompt;
width.value = detail.width;
height.value = detail.height;

View File

@@ -44,7 +44,7 @@ const platformOptions = [
},
];
const models = ref<AiModelModelApi.ModelVO[]>([]); // 模型列表
const models = ref<AiModelModelApi.Model[]>([]); // 模型列表
/** 绘画 start */
const handleDrawStart = async () => {};
@@ -55,7 +55,7 @@ const handleDrawComplete = async () => {
};
/** 重新生成:将画图详情填充到对应平台 */
const handleRegeneration = async (image: AiImageApi.ImageVO) => {
const handleRegeneration = async (image: AiImageApi.Image) => {
// 切换平台
selectPlatform.value = image.platform;
// 根据不同平台填充 image

View File

@@ -24,7 +24,7 @@ function onRefresh() {
}
/** 删除 */
async function handleDelete(row: AiImageApi.ImageVO) {
async function handleDelete(row: AiImageApi.Image) {
const hideLoading = message.loading({
content: $t('ui.actionMessage.deleting', [row.id]),
key: 'action_key_msg',
@@ -41,7 +41,7 @@ async function handleDelete(row: AiImageApi.ImageVO) {
}
}
/** 修改是否发布 */
const handleUpdatePublicStatusChange = async (row: AiImageApi.ImageVO) => {
const handleUpdatePublicStatusChange = async (row: AiImageApi.Image) => {
try {
// 修改状态的二次确认
const text = row.publicStatus ? '公开' : '私有';
@@ -82,7 +82,7 @@ const [Grid, gridApi] = useVbenVxeGrid({
refresh: { code: 'query' },
search: true,
},
} as VxeTableGridOptions<AiImageApi.ImageVO>,
} as VxeTableGridOptions<AiImageApi.Image>,
});
onMounted(async () => {
// 获得下拉数据

View File

@@ -11,7 +11,7 @@ import { Image, Input, Pagination } from 'ant-design-vue';
import { getImagePageMy } from '#/api/ai/image';
const loading = ref(true); // 列表的加载中
const list = ref<AiImageApi.ImageVO[]>([]); // 列表的数据
const list = ref<AiImageApi.Image[]>([]); // 列表的数据
const total = ref(0); // 列表的总页数
const queryParams = reactive({
pageNo: 1,

View File

@@ -49,7 +49,7 @@ function handleEdit(id: number) {
}
/** 删除 */
async function handleDelete(row: AiKnowledgeDocumentApi.KnowledgeDocumentVO) {
async function handleDelete(row: AiKnowledgeDocumentApi.KnowledgeDocument) {
const hideLoading = message.loading({
content: $t('ui.actionMessage.deleting', [row.name]),
key: 'action_key_msg',
@@ -74,7 +74,7 @@ const handleSegment = (id: number) => {
};
/** 修改是否发布 */
const handleStatusChange = async (
row: AiKnowledgeDocumentApi.KnowledgeDocumentVO,
row: AiKnowledgeDocumentApi.KnowledgeDocument,
) => {
try {
// 修改状态的二次确认
@@ -120,7 +120,7 @@ const [Grid, gridApi] = useVbenVxeGrid({
refresh: { code: 'query' },
search: true,
},
} as VxeTableGridOptions<AiKnowledgeDocumentApi.KnowledgeDocumentVO>,
} as VxeTableGridOptions<AiKnowledgeDocumentApi.KnowledgeDocument>,
});
/** 初始化 */
onMounted(() => {

View File

@@ -34,12 +34,12 @@ function handleCreate() {
}
/** 编辑 */
function handleEdit(row: AiKnowledgeKnowledgeApi.KnowledgeVO) {
function handleEdit(row: AiKnowledgeKnowledgeApi.Knowledge) {
formModalApi.setData(row).open();
}
/** 删除 */
async function handleDelete(row: AiKnowledgeKnowledgeApi.KnowledgeVO) {
async function handleDelete(row: AiKnowledgeKnowledgeApi.Knowledge) {
const hideLoading = message.loading({
content: $t('ui.actionMessage.deleting', [row.name]),
key: 'action_key_msg',
@@ -98,7 +98,7 @@ const [Grid, gridApi] = useVbenVxeGrid({
refresh: { code: 'query' },
search: true,
},
} as VxeTableGridOptions<AiKnowledgeKnowledgeApi.KnowledgeVO>,
} as VxeTableGridOptions<AiKnowledgeKnowledgeApi.Knowledge>,
});
</script>

View File

@@ -18,7 +18,7 @@ import { $t } from '#/locales';
import { useFormSchema } from '../data';
const emit = defineEmits(['success']);
const formData = ref<AiKnowledgeKnowledgeApi.KnowledgeVO>();
const formData = ref<AiKnowledgeKnowledgeApi.Knowledge>();
const getTitle = computed(() => {
return formData.value?.id
? $t('ui.actionTitle.edit', ['AI 知识库'])
@@ -47,7 +47,7 @@ const [Modal, modalApi] = useVbenModal({
modalApi.lock();
// 提交表单
const data =
(await formApi.getValues()) as AiKnowledgeKnowledgeApi.KnowledgeVO;
(await formApi.getValues()) as AiKnowledgeKnowledgeApi.Knowledge;
try {
await (formData.value?.id
? updateKnowledge(data)
@@ -66,7 +66,7 @@ const [Modal, modalApi] = useVbenModal({
return;
}
// 加载数据
const data = modalApi.getData<AiKnowledgeKnowledgeApi.KnowledgeVO>();
const data = modalApi.getData<AiKnowledgeKnowledgeApi.Knowledge>();
if (!data || !data.id) {
return;
}

View File

@@ -41,12 +41,12 @@ function handleCreate() {
}
/** 编辑 */
function handleEdit(row: AiKnowledgeKnowledgeApi.KnowledgeVO) {
function handleEdit(row: AiKnowledgeKnowledgeApi.Knowledge) {
formModalApi.setData(row).open();
}
/** 删除 */
async function handleDelete(row: AiKnowledgeKnowledgeApi.KnowledgeVO) {
async function handleDelete(row: AiKnowledgeKnowledgeApi.Knowledge) {
const hideLoading = message.loading({
content: $t('ui.actionMessage.deleting', [row.id]),
key: 'action_key_msg',
@@ -89,12 +89,12 @@ const [Grid, gridApi] = useVbenVxeGrid({
refresh: { code: 'query' },
search: true,
},
} as VxeTableGridOptions<AiKnowledgeKnowledgeApi.KnowledgeVO>,
} as VxeTableGridOptions<AiKnowledgeKnowledgeApi.Knowledge>,
});
/** 修改是否发布 */
async function handleStatusChange(
row: AiKnowledgeSegmentApi.KnowledgeSegmentVO,
row: AiKnowledgeSegmentApi.KnowledgeSegment,
) {
try {
// 修改状态的二次确认

View File

@@ -18,7 +18,7 @@ import { $t } from '#/locales';
import { useFormSchema } from '../data';
const emit = defineEmits(['success']);
const formData = ref<AiKnowledgeSegmentApi.KnowledgeSegmentVO>();
const formData = ref<AiKnowledgeSegmentApi.KnowledgeSegment>();
const getTitle = computed(() => {
return formData.value?.id
? $t('ui.actionTitle.edit', ['分段'])
@@ -47,7 +47,7 @@ const [Modal, modalApi] = useVbenModal({
modalApi.lock();
// 提交表单
const data =
(await formApi.getValues()) as AiKnowledgeSegmentApi.KnowledgeSegmentVO;
(await formApi.getValues()) as AiKnowledgeSegmentApi.KnowledgeSegment;
try {
await (formData.value?.id
? updateKnowledgeSegment(data)
@@ -66,7 +66,7 @@ const [Modal, modalApi] = useVbenModal({
return;
}
// 加载数据
const data = modalApi.getData<AiKnowledgeSegmentApi.KnowledgeSegmentVO>();
const data = modalApi.getData<AiKnowledgeSegmentApi.KnowledgeSegment>();
if (!data || !data.id) {
await formApi.setValues(data);
return;

View File

@@ -27,7 +27,7 @@ function directGenerate(existPrompt: string) {
isEnd.value = true;
}
/** 提交生成 */
function submit(data: AiMindmapApi.AiMindMapGenerateReqVO) {
function submit(data: AiMindmapApi.AiMindMapGenerateReq) {
isGenerating.value = true;
isStart.value = true;
isEnd.value = false;

View File

@@ -31,7 +31,7 @@ function onRefresh() {
}
/** 删除 */
async function handleDelete(row: AiMindmapApi.MindMapVO) {
async function handleDelete(row: AiMindmapApi.MindMap) {
const hideLoading = message.loading({
content: $t('ui.actionMessage.deleting', [row.id]),
key: 'action_key_msg',
@@ -73,9 +73,9 @@ const [Grid, gridApi] = useVbenVxeGrid({
refresh: { code: 'query' },
search: true,
},
} as VxeTableGridOptions<AiMindmapApi.MindMapVO>,
} as VxeTableGridOptions<AiMindmapApi.MindMap>,
});
async function openPreview(row: AiMindmapApi.MindMapVO) {
async function openPreview(row: AiMindmapApi.MindMap) {
previewVisible.value = false;
drawerApi.open();
await nextTick();

View File

@@ -29,12 +29,12 @@ function handleCreate() {
}
/** 编辑 */
function handleEdit(row: AiModelApiKeyApi.ApiKeyVO) {
function handleEdit(row: AiModelApiKeyApi.ApiKey) {
formModalApi.setData(row).open();
}
/** 删除 */
async function handleDelete(row: AiModelApiKeyApi.ApiKeyVO) {
async function handleDelete(row: AiModelApiKeyApi.ApiKey) {
const hideLoading = message.loading({
content: $t('ui.actionMessage.deleting', [row.name]),
key: 'action_key_msg',
@@ -77,7 +77,7 @@ const [Grid, gridApi] = useVbenVxeGrid({
refresh: { code: 'query' },
search: true,
},
} as VxeTableGridOptions<AiModelApiKeyApi.ApiKeyVO>,
} as VxeTableGridOptions<AiModelApiKeyApi.ApiKey>,
});
</script>

View File

@@ -14,7 +14,7 @@ import { $t } from '#/locales';
import { useFormSchema } from '../data';
const emit = defineEmits(['success']);
const formData = ref<AiModelApiKeyApi.ApiKeyVO>();
const formData = ref<AiModelApiKeyApi.ApiKey>();
const getTitle = computed(() => {
return formData.value?.id
? $t('ui.actionTitle.edit', ['API 密钥'])
@@ -42,7 +42,7 @@ const [Modal, modalApi] = useVbenModal({
}
modalApi.lock();
// 提交表单
const data = (await formApi.getValues()) as AiModelApiKeyApi.ApiKeyVO;
const data = (await formApi.getValues()) as AiModelApiKeyApi.ApiKey;
try {
await (formData.value?.id ? updateApiKey(data) : createApiKey(data));
// 关闭并提示
@@ -59,7 +59,7 @@ const [Modal, modalApi] = useVbenModal({
return;
}
// 加载数据
const data = modalApi.getData<AiModelApiKeyApi.ApiKeyVO>();
const data = modalApi.getData<AiModelApiKeyApi.ApiKey>();
if (!data || !data.id) {
return;
}

View File

@@ -29,12 +29,12 @@ function handleCreate() {
}
/** 编辑 */
function handleEdit(row: AiModelChatRoleApi.ChatRoleVO) {
function handleEdit(row: AiModelChatRoleApi.ChatRole) {
formModalApi.setData({ formType: 'update', ...row }).open();
}
/** 删除 */
async function handleDelete(row: AiModelChatRoleApi.ChatRoleVO) {
async function handleDelete(row: AiModelChatRoleApi.ChatRole) {
const hideLoading = message.loading({
content: $t('ui.actionMessage.deleting', [row.name]),
key: 'action_key_msg',
@@ -77,7 +77,7 @@ const [Grid, gridApi] = useVbenVxeGrid({
refresh: { code: 'query' },
search: true,
},
} as VxeTableGridOptions<AiModelChatRoleApi.ChatRoleVO>,
} as VxeTableGridOptions<AiModelChatRoleApi.ChatRole>,
});
</script>

View File

@@ -19,7 +19,7 @@ import { $t } from '#/locales';
import { useFormSchema } from '../data';
const emit = defineEmits(['success']);
const formData = ref<AiModelChatRoleApi.ChatRoleVO>();
const formData = ref<AiModelChatRoleApi.ChatRole>();
const getTitle = computed(() => {
return formData.value?.id
? $t('ui.actionTitle.edit', ['聊天角色'])
@@ -47,7 +47,7 @@ const [Modal, modalApi] = useVbenModal({
}
modalApi.lock();
// 提交表单
const data = (await formApi.getValues()) as AiModelChatRoleApi.ChatRoleVO;
const data = (await formApi.getValues()) as AiModelChatRoleApi.ChatRole;
try {
await (formData.value?.id ? updateChatRole(data) : createChatRole(data));
// 关闭并提示
@@ -64,7 +64,7 @@ const [Modal, modalApi] = useVbenModal({
return;
}
// 加载数据
const data = modalApi.getData<AiModelChatRoleApi.ChatRoleVO>();
const data = modalApi.getData<AiModelChatRoleApi.ChatRole>();
if (!data || !data.id) {
await formApi.setValues(data);
return;

View File

@@ -17,7 +17,7 @@ import { $t } from '#/locales';
import { useGridColumns, useGridFormSchema } from './data';
import Form from './modules/form.vue';
const apiKeyList = ref([] as AiModelApiKeyApi.ApiKeyVO[]);
const apiKeyList = ref([] as AiModelApiKeyApi.ApiKey[]);
const [FormModal, formModalApi] = useVbenModal({
connectedComponent: Form,
destroyOnClose: true,
@@ -34,12 +34,12 @@ function handleCreate() {
}
/** 编辑 */
function handleEdit(row: AiModelModelApi.ModelVO) {
function handleEdit(row: AiModelModelApi.Model) {
formModalApi.setData(row).open();
}
/** 删除 */
async function handleDelete(row: AiModelModelApi.ModelVO) {
async function handleDelete(row: AiModelModelApi.Model) {
const hideLoading = message.loading({
content: $t('ui.actionMessage.deleting', [row.name]),
key: 'action_key_msg',
@@ -82,7 +82,7 @@ const [Grid, gridApi] = useVbenVxeGrid({
refresh: { code: 'query' },
search: true,
},
} as VxeTableGridOptions<AiModelModelApi.ModelVO>,
} as VxeTableGridOptions<AiModelModelApi.Model>,
});
onMounted(async () => {
// 获得下拉数据

View File

@@ -15,7 +15,7 @@ import { $t } from '#/locales';
import { useFormSchema } from '../data';
const emit = defineEmits(['success']);
const formData = ref<AiModelModelApi.ModelVO>();
const formData = ref<AiModelModelApi.Model>();
const getTitle = computed(() => {
return formData.value?.id
? $t('ui.actionTitle.edit', ['模型配置'])
@@ -43,7 +43,7 @@ const [Modal, modalApi] = useVbenModal({
}
modalApi.lock();
// 提交表单
const data = (await formApi.getValues()) as AiModelModelApi.ModelVO;
const data = (await formApi.getValues()) as AiModelModelApi.Model;
try {
await (formData.value?.id ? updateModel(data) : createModel(data));
// 关闭并提示
@@ -60,7 +60,7 @@ const [Modal, modalApi] = useVbenModal({
return;
}
// 加载数据
const data = modalApi.getData<AiModelModelApi.ModelVO>();
const data = modalApi.getData<AiModelModelApi.Model>();
if (!data || !data.id) {
return;
}

View File

@@ -29,12 +29,12 @@ function handleCreate() {
}
/** 编辑 */
function handleEdit(row: AiModelToolApi.ToolVO) {
function handleEdit(row: AiModelToolApi.Tool) {
formModalApi.setData(row).open();
}
/** 删除 */
async function handleDelete(row: AiModelToolApi.ToolVO) {
async function handleDelete(row: AiModelToolApi.Tool) {
const hideLoading = message.loading({
content: $t('ui.actionMessage.deleting', [row.name]),
key: 'action_key_msg',
@@ -77,7 +77,7 @@ const [Grid, gridApi] = useVbenVxeGrid({
refresh: { code: 'query' },
search: true,
},
} as VxeTableGridOptions<AiModelToolApi.ToolVO>,
} as VxeTableGridOptions<AiModelToolApi.Tool>,
});
</script>

View File

@@ -14,7 +14,7 @@ import { $t } from '#/locales';
import { useFormSchema } from '../data';
const emit = defineEmits(['success']);
const formData = ref<AiModelToolApi.ToolVO>();
const formData = ref<AiModelToolApi.Tool>();
const getTitle = computed(() => {
return formData.value?.id
? $t('ui.actionTitle.edit', ['工具'])
@@ -42,7 +42,7 @@ const [Modal, modalApi] = useVbenModal({
}
modalApi.lock();
// 提交表单
const data = (await formApi.getValues()) as AiModelToolApi.ToolVO;
const data = (await formApi.getValues()) as AiModelToolApi.Tool;
try {
await (formData.value?.id ? updateTool(data) : createTool(data));
// 关闭并提示
@@ -59,7 +59,7 @@ const [Modal, modalApi] = useVbenModal({
return;
}
// 加载数据
const data = modalApi.getData<AiModelToolApi.ToolVO>();
const data = modalApi.getData<AiModelToolApi.Tool>();
if (!data || !data.id) {
return;
}

View File

@@ -24,7 +24,7 @@ function onRefresh() {
}
/** 删除 */
async function handleDelete(row: AiMusicApi.MusicVO) {
async function handleDelete(row: AiMusicApi.Music) {
const hideLoading = message.loading({
content: $t('ui.actionMessage.deleting', [row.id]),
key: 'action_key_msg',
@@ -41,7 +41,7 @@ async function handleDelete(row: AiMusicApi.MusicVO) {
}
}
/** 修改是否发布 */
const handleUpdatePublicStatusChange = async (row: AiMusicApi.MusicVO) => {
const handleUpdatePublicStatusChange = async (row: AiMusicApi.Music) => {
try {
// 修改状态的二次确认
const text = row.publicStatus ? '公开' : '私有';
@@ -82,7 +82,7 @@ const [Grid, gridApi] = useVbenVxeGrid({
refresh: { code: 'query' },
search: true,
},
} as VxeTableGridOptions<AiMusicApi.MusicVO>,
} as VxeTableGridOptions<AiMusicApi.Music>,
});
onMounted(async () => {
// 获得下拉数据

View File

@@ -17,7 +17,7 @@ import {
import Tag from './Tag.vue';
type TabType = AiWriteApi.WriteVO['type'];
type TabType = AiWriteApi.Write['type'];
defineProps<{
isWriting: boolean;
@@ -26,7 +26,7 @@ defineProps<{
const emit = defineEmits<{
(e: 'example', param: 'reply' | 'write'): void;
(e: 'reset'): void;
(e: 'submit', params: Partial<AiWriteApi.WriteVO>): void;
(e: 'submit', params: Partial<AiWriteApi.Write>): void;
}>();
function omit(obj: Record<string, any>, keysToOmit: string[]) {
@@ -74,7 +74,7 @@ const [DefineLabel, ReuseLabel] = createReusableTemplate<{
label: string;
}>();
const initData: AiWriteApi.WriteVO = {
const initData: AiWriteApi.Write = {
type: 1,
prompt: '',
originalContent: '',
@@ -84,10 +84,10 @@ const initData: AiWriteApi.WriteVO = {
format: 1,
};
const formData = ref<AiWriteApi.WriteVO>({ ...initData });
const formData = ref<AiWriteApi.Write>({ ...initData });
/** 用来记录切换之前所填写的数据,切换的时候给赋值回来 */
const recordFormData = {} as Record<AiWriteTypeEnum, AiWriteApi.WriteVO>;
const recordFormData = {} as Record<AiWriteTypeEnum, AiWriteApi.Write>;
/** 切换tab */
function switchTab(value: TabType) {
if (value !== selectedTab.value) {

View File

@@ -24,7 +24,7 @@ function stopStream() {
/** 执行写作 */
const rightRef = ref<InstanceType<typeof Right>>();
function submit(data: Partial<AiWriteApi.WriteVO>) {
function submit(data: Partial<AiWriteApi.Write>) {
abortController.value = new AbortController();
writeResult.value = '';
isWriting.value = true;

View File

@@ -23,7 +23,7 @@ function onRefresh() {
}
/** 删除 */
async function handleDelete(row: AiWriteApi.AiWritePageReqVO) {
async function handleDelete(row: AiWriteApi.AiWritePageReq) {
const hideLoading = message.loading({
content: $t('ui.actionMessage.deleting', [row.id]),
key: 'action_key_msg',
@@ -65,7 +65,7 @@ const [Grid, gridApi] = useVbenVxeGrid({
refresh: { code: 'query' },
search: true,
},
} as VxeTableGridOptions<AiWriteApi.AiWritePageReqVO>,
} as VxeTableGridOptions<AiWriteApi.AiWritePageReq>,
});
onMounted(async () => {
// 获得下拉数据