wujingjing
2024-07-18 46df470bbba226da5224d9adc1c47ecfadf11e1d
src/components/chat/Chat.vue
@@ -9,48 +9,49 @@
               :key="index"
            >
               <img
                  class="rounded-full size-12 mr-4"
                  class="rounded-full size-12 flex-0"
                  :class="{ 'mr-4': item.role === RoleEnum.assistant, 'ml-4': item.role === RoleEnum.user }"
                  :src="roleImageMap[item.role]"
                  alt=""
                  srcset=""
               />
               <div class="inline-flex flex-col" :class="{ 'w-full': item.role === RoleEnum.assistant }">
                  <div class="relative w-full" v-if="item.content?.values">
                     <div
                        class="text-sm rounded-[6px] p-4 leading-relaxed"
                        :style="{ backgroundColor: item.role === RoleEnum.user ? 'rgb(197 224 255)' : 'white' }"
                     >
                        <div v-if="item.content.errCode === ErrorCode.Message" class="text-red-500 w-full">{{ item.content.msg }}</div>
                        <component v-else :is="answerTypeMapCom[item.content.type]" :data="item.content.values" />
                     </div>
                     <div v-if="item.role === RoleEnum.assistant" class="absolute flex items-center right-0 mr-2 mt-2 space-x-2">
               <div class="flex-auto flex" :class="{'justify-end':item.role===RoleEnum.user}">
                  <div class="inline-flex flex-col" :class="{ 'w-full': item.role === RoleEnum.assistant }">
                     <div class="relative w-full" v-if="item.content?.values">
                        <div
                           class="flex items-center justify-center size-[15px]"
                           v-if="item.content?.type === AnswerType.Text || item.content?.type === AnswerType.Knowledge"
                           class="text-sm rounded-[6px] p-4 leading-relaxed"
                           :style="{ backgroundColor: item.role === RoleEnum.user ? 'rgb(197 224 255)' : 'white' }"
                        >
                           <i class="p-2 ywicon icon-copy cursor-pointer hover:text-[#0284ff] hover:!text-[18px]" @click="copyClick(item)" />
                           <div v-if="item.content.errCode === ErrorCode.Message" class="text-red-500 w-full">{{ item.content.msg }}</div>
                           <component v-else :is="answerTypeMapCom[item.content.type]" :data="item.content.values" />
                        </div>
                        <div class="flex items-center justify-center size-[15px]">
                           <i
                              :class="{ 'text-[#0284ff]': item.state === AnswerState.Like }"
                              class="p-2 ywicon icon-dianzan cursor-pointer hover:text-[#0284ff] font-medium hover:!text-[18px]"
                              @click="likeClick(item)"
                           />
                        </div>
                        <div class="flex items-center justify-center size-[15px]">
                           <i
                              :class="{ 'text-[#0284ff]': item.state === AnswerState.Unlike }"
                              class="p-2 ywicon icon-buzan cursor-pointer hover:text-[#0284ff] !text-[13px] hover:!text-[15px]"
                              @click="unLikeClick(item)"
                           />
                        <div v-if="item.role === RoleEnum.assistant" class="absolute flex items-center right-0 mr-2 mt-2 space-x-2">
                           <div
                              class="flex items-center justify-center size-[15px]"
                              v-if="item.content?.type === AnswerType.Text || item.content?.type === AnswerType.Knowledge"
                           >
                              <i class="p-2 ywicon icon-copy cursor-pointer hover:text-[#0284ff] hover:!text-[18px]" @click="copyClick(item)" />
                           </div>
                           <div class="flex items-center justify-center size-[15px]">
                              <i
                                 :class="{ 'text-[#0284ff]': item.state === AnswerState.Like }"
                                 class="p-2 ywicon icon-dianzan cursor-pointer hover:text-[#0284ff] font-medium hover:!text-[18px]"
                                 @click="likeClick(item)"
                              />
                           </div>
                           <div class="flex items-center justify-center size-[15px]">
                              <i
                                 :class="{ 'text-[#0284ff]': item.state === AnswerState.Unlike }"
                                 class="p-2 ywicon icon-buzan cursor-pointer hover:text-[#0284ff] !text-[13px] hover:!text-[15px]"
                                 @click="unLikeClick(item)"
                              />
                           </div>
                        </div>
                     </div>
                  </div>
                  <Loding v-else class="w-fit"  :process="process" />
                     <Loding v-else class="w-fit" :process="process" />
                  </div>
               </div>
            </div>
            <div v-if="showAskMore" class="ml-4 mt-5 text-sm">