PPT 全方位辅助系统——PPT辅导&PPT评价功能前后端连接

1.PPT辅导:

这个功能逻辑比较简单主要就是前端将input中输入的内容发送给后端,后端调用ai并返回ai的话,因此前后端连接前端代码如下:

import axios from 'axios';

export default {
  data() {
    return {
      userInput: '',
      messages: [],
      messageId: 0
    };
  },
  methods: {
    async sendMessage() {
      if (this.userInput.trim() === '') return;

      const userMessage = {
        id: this.messageId++,
        text: this.userInput,
        type: 'user'
      };
      this.messages.push(userMessage);

      try {
        const response = await axios.post('http://localhost:8080/teach/async', this.userInput, {
          headers: {
            'Content-Type': 'text/plain'
          }
        });

        const aiMessage = {
          id: this.messageId++,
          text: response.data,
          type: 'ai'
        };
        this.messages.push(aiMessage);
      } catch (error) {
        console.error('Error sending message:', error);
      }

      this.userInput = '';
    }
  }
};

2.PPT评价:

此功能跟PPT辅导比较类似,即上传PPT,前端分页提取PPT中的内容并将内容返回给后端,后端调用ai对上传的PPT进行评价并给出修改意见,返回给前端。

前端代码如下:

分页提取PPT:

readFile(file) {
      const reader = new FileReader();

      reader.onload = async (e) => {
        const arrayBuffer = e.target.result;

        try {
          let pptData = await parse(arrayBuffer);
          console.log(pptData);

          var allText = [];
          console.log(Array.isArray(pptData));
          //pptData=JSON.parse(pptData);
          for(let si in pptData){
            console.log(si);
          }
          pptData.slides.forEach((slide) => {
            console.log("yyy");
            console.log(slide.elements.content);
            if (slide.elements) {
              slide.elements.forEach(text => {
                console.log("msy");
                var processcontent=text.content.replace(/<(style|script|iframe)[^>]*?>[\s\S]+?<\/\1\s*>/gi,'').replace(/<[^>]+?>/g,'').replace(/\s+/g,' ').replace(/ /g,' ').replace(/>/g,' ');
                allText.push(processcontent);
              });
            }
          });

        // 分页处理
        const pageSize = 1000; // 每页字符数
        const pages = [];
        for (let i = 0; i < allText.length; i += pageSize) {
          pages.push(allText.slice(i).join(' '));
        }

        // 逐页发送到后端
        pages.forEach((pageContent, index) => {
          this.sendMessage(pageContent, `${file.name}-page-${index + 1}`);
        });
      }catch(err)  {
          console.error('PPT解析失败:', err);
        }
      };

      reader.onerror = (e) => {
        console.error("File reading error:", e);
      };

      reader.readAsArrayBuffer(file);
    },

前后端连接:

async sendMessage(content = this.userInput,fileName='') {
      if (content.trim() === '') return;

      const userMessage = {
        id: this.messageId++,
        text: content,
        type: 'user'
      };
      this.messages.push(userMessage);

      try {
        const response = await axios.post('http://localhost:8080/chat/async', {content,fileName}, {
          headers: {
            'Content-Type': 'application/json'
          }
        });

        const aiMessage = {
          id: this.messageId++,
          text: response.data,
          type: 'ai'
        };
        this.messages.push(aiMessage);
        console.log(aiMessage);
      } catch (error) {
        console.error('Error sending message:', error);
      }

      this.userInput = '';
    }

页面效果:

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值