yt-chat-components 0.4.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -97,10 +97,18 @@
97
97
 
98
98
  /**![check-circle](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTUxMiA2NEMyNjQuNiA2NCA2NCAyNjQuNiA2NCA1MTJzMjAwLjYgNDQ4IDQ0OCA0NDggNDQ4LTIwMC42IDQ0OC00NDhTNzU5LjQgNjQgNTEyIDY0em0xOTMuNSAzMDEuN2wtMjEwLjYgMjkyYTMxLjggMzEuOCAwIDAxLTUxLjcgMEwzMTguNSA0ODQuOWMtMy44LTUuMyAwLTEyLjcgNi41LTEyLjdoNDYuOWMxMC4yIDAgMTkuOSA0LjkgMjUuOSAxMy4zbDcxLjIgOTguOCAxNTcuMi0yMThjNi04LjMgMTUuNi0xMy4zIDI1LjktMTMuM0g2OTljNi41IDAgMTAuMyA3LjQgNi41IDEyLjd6IiAvPjwvc3ZnPg==) */
99
99
 
100
+ /**![check](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTkxMiAxOTBoLTY5LjljLTkuOCAwLTE5LjEgNC41LTI1LjEgMTIuMkw0MDQuNyA3MjQuNSAyMDcgNDc0YTMyIDMyIDAgMDAtMjUuMS0xMi4ySDExMmMtNi43IDAtMTAuNCA3LjctNi4zIDEyLjlsMjczLjkgMzQ3YzEyLjggMTYuMiAzNy40IDE2LjIgNTAuMyAwbDQ4OC40LTYxOC45YzQuMS01LjEuNC0xMi44LTYuMy0xMi44eiIgLz48L3N2Zz4=) */
101
+
100
102
  /**![close-circle](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIGZpbGwtcnVsZT0iZXZlbm9kZCIgdmlld0JveD0iNjQgNjQgODk2IDg5NiIgZm9jdXNhYmxlPSJmYWxzZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNTEyIDY0YzI0Ny40IDAgNDQ4IDIwMC42IDQ0OCA0NDhTNzU5LjQgOTYwIDUxMiA5NjAgNjQgNzU5LjQgNjQgNTEyIDI2NC42IDY0IDUxMiA2NHptMTI3Ljk4IDI3NC44MmgtLjA0bC0uMDguMDZMNTEyIDQ2Ni43NSAzODQuMTQgMzM4Ljg4Yy0uMDQtLjA1LS4wNi0uMDYtLjA4LS4wNmEuMTIuMTIgMCAwMC0uMDcgMGMtLjAzIDAtLjA1LjAxLS4wOS4wNWwtNDUuMDIgNDUuMDJhLjIuMiAwIDAwLS4wNS4wOS4xMi4xMiAwIDAwMCAuMDd2LjAyYS4yNy4yNyAwIDAwLjA2LjA2TDQ2Ni43NSA1MTIgMzM4Ljg4IDYzOS44NmMtLjA1LjA0LS4wNi4wNi0uMDYuMDhhLjEyLjEyIDAgMDAwIC4wN2MwIC4wMy4wMS4wNS4wNS4wOWw0NS4wMiA0NS4wMmEuMi4yIDAgMDAuMDkuMDUuMTIuMTIgMCAwMC4wNyAwYy4wMiAwIC4wNC0uMDEuMDgtLjA1TDUxMiA1NTcuMjVsMTI3Ljg2IDEyNy44N2MuMDQuMDQuMDYuMDUuMDguMDVhLjEyLjEyIDAgMDAuMDcgMGMuMDMgMCAuMDUtLjAxLjA5LS4wNWw0NS4wMi00NS4wMmEuMi4yIDAgMDAuMDUtLjA5LjEyLjEyIDAgMDAwLS4wN3YtLjAyYS4yNy4yNyAwIDAwLS4wNS0uMDZMNTU3LjI1IDUxMmwxMjcuODctMTI3Ljg2Yy4wNC0uMDQuMDUtLjA2LjA1LS4wOGEuMTIuMTIgMCAwMDAtLjA3YzAtLjAzLS4wMS0uMDUtLjA1LS4wOWwtNDUuMDItNDUuMDJhLjIuMiAwIDAwLS4wOS0uMDUuMTIuMTIgMCAwMC0uMDcgMHoiIC8+PC9zdmc+) */
101
103
 
102
104
  /**![close](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIGZpbGwtcnVsZT0iZXZlbm9kZCIgdmlld0JveD0iNjQgNjQgODk2IDg5NiIgZm9jdXNhYmxlPSJmYWxzZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNzk5Ljg2IDE2Ni4zMWMuMDIgMCAuMDQuMDIuMDguMDZsNTcuNjkgNTcuN2MuMDQuMDMuMDUuMDUuMDYuMDhhLjEyLjEyIDAgMDEwIC4wNmMwIC4wMy0uMDIuMDUtLjA2LjA5TDU2OS45MyA1MTJsMjg3LjcgMjg3LjdjLjA0LjA0LjA1LjA2LjA2LjA5YS4xMi4xMiAwIDAxMCAuMDdjMCAuMDItLjAyLjA0LS4wNi4wOGwtNTcuNyA1Ny42OWMtLjAzLjA0LS4wNS4wNS0uMDcuMDZhLjEyLjEyIDAgMDEtLjA3IDBjLS4wMyAwLS4wNS0uMDItLjA5LS4wNkw1MTIgNTY5LjkzbC0yODcuNyAyODcuN2MtLjA0LjA0LS4wNi4wNS0uMDkuMDZhLjEyLjEyIDAgMDEtLjA3IDBjLS4wMiAwLS4wNC0uMDItLjA4LS4wNmwtNTcuNjktNTcuN2MtLjA0LS4wMy0uMDUtLjA1LS4wNi0uMDdhLjEyLjEyIDAgMDEwLS4wN2MwLS4wMy4wMi0uMDUuMDYtLjA5TDQ1NC4wNyA1MTJsLTI4Ny43LTI4Ny43Yy0uMDQtLjA0LS4wNS0uMDYtLjA2LS4wOWEuMTIuMTIgMCAwMTAtLjA3YzAtLjAyLjAyLS4wNC4wNi0uMDhsNTcuNy01Ny42OWMuMDMtLjA0LjA1LS4wNS4wNy0uMDZhLjEyLjEyIDAgMDEuMDcgMGMuMDMgMCAuMDUuMDIuMDkuMDZMNTEyIDQ1NC4wN2wyODcuNy0yODcuN2MuMDQtLjA0LjA2LS4wNS4wOS0uMDZhLjEyLjEyIDAgMDEuMDcgMHoiIC8+PC9zdmc+) */
103
105
 
106
+ /**![copy](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTgzMiA2NEgyOTZjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDhoNDk2djY4OGMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04Vjk2YzAtMTcuNy0xNC4zLTMyLTMyLTMyek03MDQgMTkySDE5MmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NTMwLjdjMCA4LjUgMy40IDE2LjYgOS40IDIyLjZsMTczLjMgMTczLjNjMi4yIDIuMiA0LjcgNCA3LjQgNS41djEuOWg0LjJjMy41IDEuMyA3LjIgMiAxMSAySDcwNGMxNy43IDAgMzItMTQuMyAzMi0zMlYyMjRjMC0xNy43LTE0LjMtMzItMzItMzJ6TTM1MCA4NTYuMkwyNjMuOSA3NzBIMzUwdjg2LjJ6TTY2NCA4ODhINDE0Vjc0NmMwLTIyLjEtMTcuOS00MC00MC00MEgyMzJWMjY0aDQzMnY2MjR6IiAvPjwvc3ZnPg==) */
107
+
108
+ /**![edit](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTI1Ny43IDc1MmMyIDAgNC0uMiA2LS41TDQzMS45IDcyMmMyLS40IDMuOS0xLjMgNS4zLTIuOGw0MjMuOS00MjMuOWE5Ljk2IDkuOTYgMCAwMDAtMTQuMUw2OTQuOSAxMTQuOWMtMS45LTEuOS00LjQtMi45LTcuMS0yLjlzLTUuMiAxLTcuMSAyLjlMMjU2LjggNTM4LjhjLTEuNSAxLjUtMi40IDMuMy0yLjggNS4zbC0yOS41IDE2OC4yYTMzLjUgMzMuNSAwIDAwOS40IDI5LjhjNi42IDYuNCAxNC45IDkuOSAyMy44IDkuOXptNjcuNC0xNzQuNEw2ODcuOCAyMTVsNzMuMyA3My4zLTM2Mi43IDM2Mi42LTg4LjkgMTUuNyAxNS42LTg5ek04ODAgODM2SDE0NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2MzZjMCA0LjQgMy42IDggOCA4aDc4NGM0LjQgMCA4LTMuNiA4LTh2LTM2YzAtMTcuNy0xNC4zLTMyLTMyLTMyeiIgLz48L3N2Zz4=) */
109
+
110
+ /**![enter](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTg2NCAxNzBoLTYwYy00LjQgMC04IDMuNi04IDh2NTE4SDMxMHYtNzNjMC02LjctNy44LTEwLjUtMTMtNi4zbC0xNDEuOSAxMTJhOCA4IDAgMDAwIDEyLjZsMTQxLjkgMTEyYzUuMyA0LjIgMTMgLjQgMTMtNi4zdi03NWg0OThjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTc4YzAtNC40LTMuNi04LTgtOHoiIC8+PC9zdmc+) */
111
+
104
112
  /**![exclamation-circle](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTUxMiA2NEMyNjQuNiA2NCA2NCAyNjQuNiA2NCA1MTJzMjAwLjYgNDQ4IDQ0OCA0NDggNDQ4LTIwMC42IDQ0OC00NDhTNzU5LjQgNjQgNTEyIDY0em0tMzIgMjMyYzAtNC40IDMuNi04IDgtOGg0OGM0LjQgMCA4IDMuNiA4IDh2MjcyYzAgNC40LTMuNiA4LTggOGgtNDhjLTQuNCAwLTgtMy42LTgtOFYyOTZ6bTMyIDQ0MGE0OC4wMSA0OC4wMSAwIDAxMC05NiA0OC4wMSA0OC4wMSAwIDAxMCA5NnoiIC8+PC9zdmc+) */
105
113
 
106
114
  /**![eye](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTk0Mi4yIDQ4Ni4yQzg0Ny40IDI4Ni41IDcwNC4xIDE4NiA1MTIgMTg2Yy0xOTIuMiAwLTMzNS40IDEwMC41LTQzMC4yIDMwMC4zYTYwLjMgNjAuMyAwIDAwMCA1MS41QzE3Ni42IDczNy41IDMxOS45IDgzOCA1MTIgODM4YzE5Mi4yIDAgMzM1LjQtMTAwLjUgNDMwLjItMzAwLjMgNy43LTE2LjIgNy43LTM1IDAtNTEuNXpNNTEyIDc2NmMtMTYxLjMgMC0yNzkuNC04MS44LTM2Mi43LTI1NEMyMzIuNiAzMzkuOCAzNTAuNyAyNTggNTEyIDI1OGMxNjEuMyAwIDI3OS40IDgxLjggMzYyLjcgMjU0Qzc5MS41IDY4NC4yIDY3My40IDc2NiA1MTIgNzY2em0tNC00MzBjLTk3LjIgMC0xNzYgNzguOC0xNzYgMTc2czc4LjggMTc2IDE3NiAxNzYgMTc2LTc4LjggMTc2LTE3Ni03OC44LTE3Ni0xNzYtMTc2em0wIDI4OGMtNjEuOSAwLTExMi01MC4xLTExMi0xMTJzNTAuMS0xMTIgMTEyLTExMiAxMTIgNTAuMSAxMTIgMTEyLTUwLjEgMTEyLTExMiAxMTJ6IiAvPjwvc3ZnPg==) */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "yt-chat-components",
3
- "version": "0.4.0",
3
+ "version": "0.6.0",
4
4
  "main": "build/static/js/bundle.min.js",
5
5
  "module": "build/static/js/bundle.min.js",
6
6
  "types": "build/static/js/index.d.ts",
@@ -48,7 +48,7 @@ export async function sendMessage(
48
48
  if (embed_app_extend) {
49
49
  data['embed_app_extend'] = embed_app_extend;
50
50
  }
51
- let headers: { [key: string]: string } = {'Content-Type': 'application/json'};
51
+ let headers: { [key: string]: string } = {'Content-Type': 'application/json', 'timeout': 600000};
52
52
  if (api_key) {
53
53
  headers['x-api-key'] = api_key;
54
54
  }
@@ -81,7 +81,7 @@ export async function sendMessage(
81
81
  async function fetchCustomStream(url, body, headers, handleMessageContent, signal) {
82
82
  const response = await fetch(url, {
83
83
  method: 'POST',
84
- headers: headers,
84
+ headers: {...headers, timeout: 600000},
85
85
  body: JSON.stringify(body),
86
86
  signal: signal,
87
87
  });
@@ -182,7 +182,7 @@ function extractAndParseJSON(buffer, handleMessageContent) {
182
182
  * @param operatorId
183
183
  */
184
184
  export async function getHistoryList(baseUrl: string, flowId: string, operatorId: string) {
185
- return axios.get(`${baseUrl}/api/v1/embed/chat_history_list/${flowId}/${operatorId}`);
185
+ return axios.get(`${baseUrl}/api/v1/embed/chat_history_list/${flowId}/${operatorId}`, {timeout: 600000});
186
186
  }
187
187
 
188
188
  /**
@@ -212,7 +212,8 @@ export async function getChatHistory(
212
212
  export async function fetchUploadFile(baseUrl: string, file: File, flowId: string, api_key: string) {
213
213
  const headers = {
214
214
  'Content-Type': 'multipart/form-data',
215
- 'x-api-key': api_key
215
+ 'x-api-key': api_key,
216
+ timeout:600000
216
217
  };
217
218
  const formData = new FormData();
218
219
  formData.append('file', file);
@@ -230,7 +231,8 @@ export async function fetchUploadFile(baseUrl: string, file: File, flowId: strin
230
231
  export async function getSceneInfo(baseUrl: string, sceneId: string, api_key: string) {
231
232
  const headers = {
232
233
  'Content-Type': 'multipart/form-data',
233
- 'x-api-key': api_key
234
+ 'x-api-key': api_key,
235
+ timeout:600000
234
236
  };
235
237
  return axios.get(`${baseUrl}/api/t1/scene/detail/${sceneId}`,{headers});
236
238
  }
@@ -22,7 +22,7 @@ import typeRPubPng from '../../../assets/aicenter/type-rpub.png';
22
22
  import soundWavePng from '../../../assets/aicenter/sound-wave.gif';
23
23
  import luyinPng from '../../../assets/aicenter/luyin.png';
24
24
  import { RightOutlined } from '@ant-design/icons';
25
- import { Image, message as messageTip, Tooltip } from 'antd';
25
+ import { Image, message as messageTip, Tooltip, Typography } from 'antd';
26
26
  import { isEmpty, isFunction } from 'lodash';
27
27
  import btn_answer from '../../../assets/aicenter/btn_answer.png';
28
28
 
@@ -591,7 +591,9 @@ export default function ChatWindow({
591
591
  fetchChatHistory();
592
592
 
593
593
  return () => {
594
- abortControllerRef.current.abort();
594
+ abortControllerRef.current.abort('disconnect');
595
+ // abortControllerRef是一次性的,中止之后要初始化,否则fetch请求会被中止导致请求无响应
596
+ abortControllerRef.current = new AbortController();
595
597
  };
596
598
  }, [sessionId]);
597
599
 
@@ -612,7 +614,13 @@ export default function ChatWindow({
612
614
  <div className="drop-down-list">
613
615
  {dropDownList.map(({ backgroundImg, title }) => (
614
616
  <div className="drop-down-item-card" key={title}>
615
- <div className="drop-down-item-title">“{title}”</div>
617
+ <Typography.Paragraph
618
+ className="drop-down-item-title"
619
+ ellipsis={{
620
+ rows: 2,
621
+ tooltip: `“${title}”`,
622
+ }}>{'“'+title+'”'}
623
+ </Typography.Paragraph>
616
624
  <div className="drop-down-item-bottom">
617
625
  <div
618
626
  className="drop-down-item-bottom-button"
@@ -495,8 +495,8 @@ video {
495
495
  }
496
496
  .drop-down-item-card {
497
497
  width: 32%;
498
- padding: 1.5rem 1.2rem 0.3rem;
499
- height:7rem;
498
+ padding: 1.2rem 1.2rem 0.3rem;
499
+ height:7.5rem;
500
500
  font-weight: 400;
501
501
  font-size: 14px;
502
502
  color: #FFFFFF;
@@ -516,9 +516,10 @@ video {
516
516
  font-weight: 400;
517
517
  font-size: 16px;
518
518
  color: #000000;
519
- line-height: 18px;
519
+ line-height: 20px;
520
520
  text-align: left;
521
521
  width: 100%;
522
+ margin-bottom:0 !important;
522
523
  }
523
524
  .drop-down-item-bottom{
524
525
  display:flex;
@@ -9,7 +9,7 @@ import { v4 as uuidv4 } from 'uuid';
9
9
  import historyListEmptyPng from '../../assets/aicenter/history-list-empty.png';
10
10
  import addPng from '../../assets/aicenter/add.png';
11
11
  import {isEmpty, isFunction} from "lodash";
12
- import { Button, message as messageTip, Progress } from 'antd'
12
+ import { Button, message as messageTip, Progress, Skeleton } from 'antd'
13
13
  import { CloseOutlined } from "@ant-design/icons";
14
14
  import moreAi from '../../assets/aicenter/moreAi.png';
15
15
  import moreBg from '../../assets/aicenter/moreBg.png';
@@ -324,13 +324,13 @@ export class ToolDialog extends React.Component {
324
324
  async componentDidMount() {
325
325
  if(isEmpty(this.props.sceneId)){
326
326
  // 兼容非场景打开的情况
327
- this.getHistoryList();
327
+ this.getHistoryList({},true);
328
328
  }else{
329
329
  const sceneData = await this.getSceneInfo();
330
330
  if(isEmpty(sceneData)) {
331
- this.getHistoryList();
331
+ this.getHistoryList({},true);
332
332
  } else {
333
- this.getHistoryList(sceneData);
333
+ this.getHistoryList(sceneData,true);
334
334
  }
335
335
  }
336
336
  }
@@ -345,18 +345,26 @@ export class ToolDialog extends React.Component {
345
345
  }
346
346
 
347
347
  // 获取历史对话列表
348
- getHistoryList = (sceneData) => {
349
- const realFlowId = sceneData?.flows[0].id || this.props.flowId;
350
- if(!isEmpty(sceneData)){
351
- const currentFlow = sceneData.flows[0];
352
- console.log("111111111",sceneData)
353
- const dropDownList = this.getDropDownList(currentFlow.welcome_words);
354
- this.setState({ currentFlow, dropDownList })
348
+ getHistoryList = (sceneData, isRefreshWords) => {
349
+ const { sceneId, flowId } = this.props;
350
+ if(isEmpty(sceneId)){
351
+ console.log("dropDownList",this.state.dropDownList)
352
+ // 单独组件情况
353
+ if(isRefreshWords){
354
+ this.setState({ dropDownList: defaultList })
355
+ }
356
+ this.getCurrentFlowHistory(flowId)
355
357
  }else{
356
- this.setState({ dropDownList:defaultList })
357
-
358
+ const currentScene = sceneData||this.state.sceneInfo;
359
+ const currentFlow = currentScene.flows[0];
360
+ const dropDownList = this.getDropDownList(currentFlow.welcome_words);
361
+ if(!isEmpty(sceneData)){
362
+ this.setState({ currentFlow, dropDownList })
363
+ }else if(isEmpty(this.state.sceneInfo)){
364
+ this.setState({ dropDownList:defaultList })
365
+ }
366
+ this.getCurrentFlowHistory(currentFlow.id)
358
367
  }
359
- this.getCurrentFlowHistory(realFlowId)
360
368
  };
361
369
 
362
370
  getSceneInfo = async ()=>{
@@ -466,7 +474,7 @@ export class ToolDialog extends React.Component {
466
474
  />
467
475
  </div>
468
476
  {
469
- isShowSideRight&&
477
+ isShowSideRight &&
470
478
  <div className={"p_toolRightToRight"}>
471
479
  <div className={"rightInnerContainer"}>
472
480
  <div>
@@ -474,42 +482,69 @@ export class ToolDialog extends React.Component {
474
482
  <img width={15} src={self_skills}/>
475
483
  <span style={{ color: "#333333" }}>专项技能</span>
476
484
  </h3>
477
- <div className={"rightSkillContainer"}>
478
- <div className={"rightSkillList"}>
479
- {flows.slice(0,12).map((item) => (
480
- <div className={"rightSkillItem"} key={item.id} onClick={()=>{
481
- // 右侧点击一个技能,更新sessionId,切换当前flow信息,重新查询历史记录
482
- this.setState({
483
- sessionId: uuidv4(),
484
- currentFlow: item,
485
- dropDownList: this.getDropDownList(item.welcome_words)
486
- });
487
- this.getCurrentFlowHistory(item.id);
488
- }}>
489
- <img
490
- src={item.icon}
491
- alt={item.name}/>
492
- <p>{item.name}</p>
485
+ {
486
+ isEmpty(flows) ?
487
+ <Skeleton
488
+ title={false}
489
+ active
490
+ paragraph={{ rows: 5, width: '100%' }}
491
+ />
492
+ :
493
+ <div className={"rightSkillContainer"}>
494
+ <div className={"rightSkillList"}>
495
+ {flows.slice(0, 12).map((item) => (
496
+ <div className={"rightSkillItem"} key={item.id} onClick={() => {
497
+ // 右侧点击一个技能,更新sessionId,切换当前flow信息,重新查询历史记录
498
+ this.setState({
499
+ sessionId: uuidv4(),
500
+ currentFlow: item,
501
+ dropDownList: this.getDropDownList(item.welcome_words)
502
+ });
503
+ this.getCurrentFlowHistory(item.id);
504
+ }}>
505
+ <img
506
+ src={item.icon}
507
+ alt={item.name}/>
508
+ <p>{item.name}</p>
509
+ </div>
510
+ ))}
493
511
  </div>
494
- ))}
495
- </div>
496
- </div>
512
+ </div>
513
+ }
497
514
  </div>
498
515
  <div>
499
516
  <h3 className={"rightKnowledgeTitle"}>
500
517
  <img width={15} src={self_knowledge}/>
501
518
  <span style={{ color: "#333333" }}>个人知识库</span>
502
519
  </h3>
503
- <div className={"rightKnowledgeContainer"}>
504
- <img src={moreBg}/>
505
- <div style={{position:'absolute', top:'40px',left:'16px'}}>
506
- <div>文件总数<span style={{padding:8,fontSize:'20px',fontWeight:700}}>{currentFlow.k_count||0}</span>个</div>
507
- <div style={{marginTop:10}}>文件总量<span style={{padding:8,fontSize:'20px',fontWeight:700}}>{formatFileSize(currentFlow.k_size).formattedSize}</span>{formatFileSize(currentFlow.k_size).unit}</div>
508
- </div>
509
- <div className={"rightMoreButton"}>
510
- <div className={"rightMoreTitle"} onClick={()=>messageTip.info("敬请期待")}>训练你的专属知识库</div>
511
- </div>
512
- </div>
520
+ {
521
+ isEmpty(currentFlow) ?
522
+ <Skeleton
523
+ title={false}
524
+ active
525
+ paragraph={{ rows: 5, width: '100%' }}
526
+ /> :
527
+ <div className={"rightKnowledgeContainer"}>
528
+ <img src={moreBg}/>
529
+ <div style={{ position: 'absolute', top: '40px', left: '16px' }}>
530
+ <div>文件总数<span style={{
531
+ padding: 8,
532
+ fontSize: '20px',
533
+ fontWeight: 700
534
+ }}>{currentFlow.k_count || 0}</span>个
535
+ </div>
536
+ <div style={{ marginTop: 10 }}>文件总量<span style={{
537
+ padding: 8,
538
+ fontSize: '20px',
539
+ fontWeight: 700
540
+ }}>{formatFileSize(currentFlow.k_size).formattedSize}</span>{formatFileSize(currentFlow.k_size).unit}
541
+ </div>
542
+ </div>
543
+ <div className={"rightMoreButton"}>
544
+ <div className={"rightMoreTitle"} onClick={() => messageTip.info("敬请期待")}>训练你的专属知识库</div>
545
+ </div>
546
+ </div>
547
+ }
513
548
  </div>
514
549
  </div>
515
550
  </div>