yinbangzhong
2024-09-04 af08dae54f74aa9a94f82f298410165fa9b7b614
src/views/sessionManager/index.vue
@@ -224,10 +224,19 @@
                      style="border: none"
                    >
                    </a-textarea>
                    <!-- <div v-html="chartText(sessionDetail.content)">
                    </div> -->
                  </a-card>
                  <!-- <div class="prompt">
                    <ul>
                      <li class="prompt-item" @click="copyText('43234')">
                        <span>
                          344343klsdjkjksdjkjksdjk就开始大家看数据库登记卡受打击凯撒登记卡受打击凯撒登记卡受打击凯撒的43</span
                        >
                        <span style="margin-left: 20px">
                          <icon-right />
                        </span>
                      </li>
                    </ul>
                  </div> -->
                </template>
                <!-- <div>{{ sessionDetail.role === 'assistant' }}</div> -->
                <template #actions>
@@ -282,18 +291,20 @@
                  />
                </template>
                <template #content>
                  <a-textarea
                    readonly
                    auto-size
                    v-model="displayedText"
                    :class="{ chatItemAnswer: theme === 'light' }"
                    :style="{
                      backgroundColor:
                        theme === 'light' ? '#ffffff' : '#000000',
                    }"
                    style="border: none"
                  >
                  </a-textarea>
                  <a-spin :loading="chartLoading" dot style="width: 100%">
                    <a-textarea
                      readonly
                      auto-size
                      v-model="displayedText"
                      :class="{ chatItemAnswer: theme === 'light' }"
                      :style="{
                        backgroundColor:
                          theme === 'light' ? '#ffffff' : '#000000',
                      }"
                      style="border: none"
                    >
                    </a-textarea>
                  </a-spin>
                </template>
                <template #actions>
@@ -364,12 +375,20 @@
                  display: flex;
                  justify-content: space-between;
                "
                class="uploadFileDis"
              >
                <updataFile
                  ref="fileInput"
                  :sessionId="activeSessionId"
                  @selectFileCallback="selectFileCallback"
                ></updataFile>
                <!-- <uploadFile
                  ref="fileInput"
                  :handleRemove="handleRemove"
                  :typeXLse="false"
                  @selectFileCallback="selectFileCallback"
                ></uploadFile> -->
                <a-button
                  :disabled="chatDis"
                  @click="sentClick"
@@ -457,6 +476,11 @@
          ></smartAi>
        </div>
      </a-col>
      <a-col :span="23" v-show="agentType == '5'">
        <div class="center">
          <seniorAgentSession :modalObj="agentObj"></seniorAgentSession>
        </div>
      </a-col>
    </a-row>
    <a-modal title=" " v-model:visible="fileVisible" :footer="false" fullscreen>
      <!--      <docx  previewSrc="http://192.168.20.116:1080/v1/document/get/405c3efa4d8c11ef97560242ac120006"></docx>-->
@@ -510,9 +534,11 @@
  import chatMenu from '@/views/sessionManager/components/chatMenu.vue';
  import AddSession from '@/views/sessionManager/components/addSession.vue';
  import agentSession from '@/views/sessionManager/components/agentSession.vue';
  import seniorAgentSession from '@/views/sessionManager/components/seniorAgentSession.vue';
  import historySession from '@/views/sessionManager/components/historySession.vue';
  import smartAi from '@/views/sessionManager/components/smartAi.vue';
  import updataFile from '@/views/sessionManager/components/updataFile.vue';
  import EventBus from '@/utils/EventBus';
  import {
    addSessionApi,
@@ -521,6 +547,9 @@
    getSessionDetailsApi,
    sessionListApi,
    uploadWithoutKb,
    uploadAndParse,
    chatInfos,
    chatRm,
  } from '@/api/session';
  import { getAuthorization } from '@/utils/auth';
  import { queryCanvasList } from '@/api/Agent';
@@ -537,6 +566,7 @@
  import excel from '@/views/dmx/knowledgeLib/components/excel.vue';
  import txtPdf from '@/views/dmx/knowledgeLib/components/txtPdf.vue';
  import { is } from 'immutable';
  import uploadFile from './components/uploadFile.vue';
  // const url = ref('../../assets/session/PDF.png');
@@ -551,6 +581,7 @@
  const modalObj = reactive({ add: false });
  const dialogId = ref('');
  const chatDis = ref(false);
  const chartLoading = ref(false);
  const loading = ref(false);
  const agentType = ref('1');
  const agentTitle = ref('未命名会话');
@@ -577,7 +608,7 @@
  const uploadRef = ref();
  const files = ref([]);
  const file = ref('');
  const fileInput = ref(null);
  const fileInput = ref();
  const chatDataMeg = reactive({});
  const visible = ref(false);
  const fileVisible = ref(false);
@@ -742,9 +773,76 @@
    // formRef.value.resetFields();
  };
  const selectFileCallback = (data) => {
    console.log(data, 'selectFileCallback');
  const selectFileCallback = (data,conversation_id) => {
    uploaditemList.value = [...uploaditemList.value, ...data];
    activeSessionId.value = conversation_id;
  };
  //上传
  // const selectFileCallback = async (resData, file) => {
  //   console.log(111);
  //   try {
  //     const formData = new FormData();
  //     uploaditemList.value = resData;
  //     uploaditemList.value.map((item) => {
  //       if (item.name == file[0].file.name) {
  //         item.onFileSelectedLoading = true;
  //         item.textName = '上传中';
  //       }
  //       return item;
  //     });
  //     debugger;
  //     if (!activeSessionId.value) {
  //       await createSession(resData);
  //     }
  //     // onFileSelectedLoading.value = true;
  //     // textName.value = '上传中';
  //     formData.append('files', file[0].file);
  //     formData.append('conversation_id', activeSessionId.value);
  //     console.log(formData, 'formData');
  //     const { data, code } = await uploadAndParse(formData);
  //     if (code === 200) {
  //       uploaditemList.value.map((item: any) => {
  //         item.onFileSelectedLoading = false;
  //         item.textName = '上传成功';
  //         return item;
  //       });
  //       getInfo(data);
  //       // onFileSelectedLoading.value = false;
  //       // textName.value = '上传成功';
  //     }
  //   } catch (err) {
  //     uploaditemList.value.map((item: any) => {
  //       item.onFileSelectedLoading = false;
  //       item.textName = '上传失败';
  //       return item;
  //     });
  //     // onFileSelectedLoading.value = false;
  //     // textName.value = '上传失败';
  //     Message.error('上传失败');
  //   }
  // };
  //上传成功解析getinfo
  const getInfo = async (id) => {
    const { code, data } = await chatInfos({
      doc_ids: activeSessionId.value,
    });
    if (code === 200) {
      uploaditemList.value = data;
    }
  };
  //删除上传文档
  const deleteUpload = async (id) => {
    const { code, data } = await chatRm({
      doc_id: id,
    });
    if (code === 200) {
      getInfo();
    }
  };
  let onFileSelectedLoading = ref(false);
@@ -752,6 +850,7 @@
  const deleteFile = (item) => {
    console.log(uploaditemList.value);
    uploaditemList.value.splice(item.index, 1);
    // EventBus.emit('queryAgent', item);
  };
  const { toClipboard } = useClipboard();
@@ -821,7 +920,7 @@
    console.log(name, '新建会话名称');
    const res = await addSessionApi({
      dialog_id: id,
      dialog_id: '',
      conversation_desc: name,
    });
    // console.log(res, "res");
@@ -902,6 +1001,7 @@
  const startChat = async (valMsg) => {
    chatDis.value = true;
    loading.value = true;
    chartLoading.value = true;
    toStop = false;
    sessionDetailList.value.push({
      content: valMsg,
@@ -945,6 +1045,7 @@
          if (typeof d !== 'boolean') {
            // console.info("data:", d);
            streamStr.value = d.content;
            chartLoading.value = false;
            startDisplayStr();
          }
        } catch (e) {
@@ -953,6 +1054,7 @@
        if (done) {
          console.info('done');
          displayedText.value = '';
          chartLoading.value = false;
          if (isStopChat.value) {
            setChatDataMeg(chatDataMeg);
          } else {
@@ -1095,9 +1197,10 @@
    activeSessionId.value = '';
  });
  onMounted(() => {
    document.getElementsByTagName;
    let container = document.getElementById('container');
    container.addEventListener('click', () => {
      fileInput.value.cancel();
      // fileInput.value.cancel();
    });
    EventBus.on('newChat', () => {
      agentType.value = '1';
@@ -1200,6 +1303,33 @@
            font-size: 12px;
            padding-left: 10px;
          }
        }
      }
    }
    // .uploadFileDis {
    //   :deep(.arco-upload-list-type-text) {
    //     display: none;
    //   }
    // }
    .prompt {
      ul {
        margin: 0;
        padding: 0;
        display: flex;
      }
      ul > li {
        list-style-type: none;
      }
      .prompt-item {
        display: flex;
        justify-content: space-between;
        background-color: #fff;
        cursor: pointer;
        border-radius: 8px;
        padding: 10px;
        border: #e5e5e5;
        &:hover {
          background-color: #eee;
        }
      }
    }
@@ -1336,6 +1466,11 @@
        }
      }
    }
    .uploadFileDis {
      :deep(.arco-upload-list-type-text) {
        display: none;
      }
    }
    .chat-item {
      padding: 10px 0;
@@ -1345,6 +1480,19 @@
        font-size: 14px;
        color: #333;
        margin-top: 4px;
      }
      :deep(.arco-card-body) {
        padding: 0;
        border-radius: 10px;
      }
      :deep(.arco-textarea) {
        padding-top: 10px !important;
      }
      :deep(.arco-comment-inner-content) {
        border-radius: 10px;
      }
      :deep(.arco-card-bordered) {
        border-radius: 10px;
      }
      .icon-user-jpg {
@@ -1364,6 +1512,9 @@
          margin-left: 10px;
        }
      }
      :deep(.arco-spin-loading .arco-spin-mask-icon) {
        left: 10%;
      }
    }
    .right {