render.ts 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import { marked } from 'marked'
  2. import * as echarts from 'echarts';
  3. import { ResultData } from '@/types/chatConversation';
  4. //渲染markdown
  5. export const renderMarkDown = (text:string)=>{
  6. let html = undefined;
  7. try{
  8. html = marked.parse(text);
  9. }catch(e){
  10. return text;
  11. }
  12. return html;
  13. }
  14. //渲染echarts图表
  15. export const renderEcharts = (optionJson:string)=>{
  16. let option = undefined;
  17. try{
  18. option = JSON.parse(optionJson);
  19. }catch(e){
  20. return optionJson;
  21. }
  22. if(option.option){
  23. //防止套了两层
  24. option = option.option;
  25. }
  26. let div = document.createElement('div');
  27. let echart = echarts.init(div);
  28. echart.dispose();
  29. echart.setOption(option);
  30. //获取html代码
  31. let html = div;
  32. return html;
  33. }
  34. //渲染
  35. export const render = (result:ResultData)=>{
  36. let html = result.conclusion;
  37. html += '<br>'
  38. if(result.status === 1){
  39. //表格
  40. let table = renderMarkDown(result.data);
  41. html += table;
  42. }else{
  43. let charts = renderEcharts(result.data);
  44. html += charts;
  45. }
  46. return html;
  47. }