diff --git a/components.d.ts b/components.d.ts index f05428b..ca001de 100644 --- a/components.d.ts +++ b/components.d.ts @@ -18,6 +18,8 @@ declare module '@vue/runtime-core' { ElCheckbox: typeof import('element-plus/es')['ElCheckbox'] ElCheckboxGroup: typeof import('element-plus/es')['ElCheckboxGroup'] ElCol: typeof import('element-plus/es')['ElCol'] + ElCollapse: typeof import('element-plus/es')['ElCollapse'] + ElCollapseItem: typeof import('element-plus/es')['ElCollapseItem'] ElColorPicker: typeof import('element-plus/es')['ElColorPicker'] ElCountdown: typeof import('element-plus/es')['ElCountdown'] ElDatePicker: typeof import('element-plus/es')['ElDatePicker'] diff --git a/src/api/ppt.ts b/src/api/ppt.ts index c62e975..775f3fa 100644 --- a/src/api/ppt.ts +++ b/src/api/ppt.ts @@ -11,3 +11,51 @@ export const FindSparkPPTThemeListService = (Data) => { } }) } + +export const CreateSparkPPTOutlineService = (Data) => { + const params = new URLSearchParams(); + for (let key in Data) { + if(typeof Data[key] === 'object'){ + params.append(key, JSON.stringify(Data[key])) + continue + } + params.append(key, Data[key]) + } + return request.post('/tool/spark_create_outline', params,{ + headers: { + 'token': Data.token, //token + } + }) +} + +export const CreateSparkPPTService = (Data) => { + const params = new URLSearchParams(); + for (let key in Data) { + if(typeof Data[key] === 'object'){ + params.append(key, JSON.stringify(Data[key])) + continue + } + params.append(key, Data[key]) + } + return request.post('/tool/spark_create_ppt', params,{ + headers: { + 'token': Data.token, //token + } + }) +} + +export const GetSparkPPTStatusService = (Data) => { + const params = new URLSearchParams(); + for (let key in Data) { + if(typeof Data[key] === 'object'){ + params.append(key, JSON.stringify(Data[key])) + continue + } + params.append(key, Data[key]) + } + return request.post('/tool/spark_ppt_create_status', params,{ + headers: { + 'token': Data.token, //token + } + }) +} \ No newline at end of file diff --git a/src/types/ppt.ts b/src/types/ppt.ts new file mode 100644 index 0000000..3e9fc0a --- /dev/null +++ b/src/types/ppt.ts @@ -0,0 +1,81 @@ + + +// 创建大纲响应内容 +export interface SparkCreateOutlineResponse { + flag: boolean; + code: number; + desc: string; + count: number; + data: SparkCreateOutlineResponseData; +} + +// Data 定义响应中 data 字段的结构体 +export interface SparkCreateOutlineResponseData { + sid: string; + outline: SparkCreateOutlineResponseOutline; +} + +// Outline 定义大纲数据的结构体 +export interface SparkCreateOutlineResponseOutline { + title: string; + subTitle: string; + chapters: SparkCreateOutlineResponseChapter[]; +} + +// Chapter 定义章节数据的结构体 +export interface SparkCreateOutlineResponseChapter { + chapterTitle: string; + chapterContents: SparkCreateOutlineResponseChapterContent[]; +} + +// 由于原代码中未定义 SparkCreateOutlineResponseChapterContent,这里假设一个简单结构 +export interface SparkCreateOutlineResponseChapterContent { + chapterTitle: string; +} + + +// SparkCreatePPTResponse 定义对应 JSON 数据的外层结构体 +export interface SparkCreatePPTResponse { + flag: boolean; + code: number; + desc: string; + count: any; + data: SparkCreatePPTData; +} + +// SparkCreatePPTData 定义 JSON 中 data 字段对应的结构体 +export interface SparkCreatePPTData { + sid: string; + coverImgSrc: string; + title: string; + subTitle: string; + outline: any; +} + + +// SparkCreatePPTByOutlineResponse 定义对应 JSON 数据的外层结构体 +export interface SparkCreatePPTByOutlineResponse { + flag: boolean; + code: number; + desc: string; + count: any; + data: SparkCreatePPTByOutlineData; +} + +// SparkCreatePPTByOutlineData 定义 JSON 中 data 字段对应的结构体 +export interface SparkCreatePPTByOutlineData { + pptStatus: string; + aiImageStatus: string; + cardNoteStatus: string; + pptUrl: string; + errMsg: any; + totalPages: number; + donePages: number; +} + +export interface SparkCreateOutlineRequest { + function: string; // 功能 + query: string; // 查询内容 + fileUrl: string; // 文件url + fileName: string; // 文件名 +} \ No newline at end of file diff --git a/src/views/system/ai-ppt.vue b/src/views/system/ai-ppt.vue index bd227f4..e2719cb 100644 --- a/src/views/system/ai-ppt.vue +++ b/src/views/system/ai-ppt.vue @@ -1,15 +1,607 @@ + + + \ No newline at end of file +const CreateSparkPPT = async () => { + let req = { + token: localStorage.getItem('token'), + function: "spark-create-ppt", + outline: createOutlineResp.value.data.outline, + query: "生成PPT", + fileUrl: fileUrl + selectedFiles.value[0].file_store_name, + fileName: selectedFiles.value[0].UserFileName, + } + let result = await CreateSparkPPTService(req); + if (result['code'] === 0) { + baseInfo.value = result['base']; + createPPTResp.value = result['data']; + console.log("ppt:", result['data']); + } else { + ElMessage.error(result['data']); + } +} + +const getCreatedPPTStatus = async () => { + let req = { + token: localStorage.getItem('token'), + function: "spark-create-ppt", + session_id: sessionID.value, + } + let result = await GetSparkPPTStatusService(req); + if (result['code'] === 0) { + getPPTStatus.value = result['data']; + console.log("ppt_status:", result['data']); + } else { + ElMessage.error(result['data']); + } +} + +getSparkPPTThemeList(); + + + \ No newline at end of file