|
@@ -1,18 +1,100 @@
|
|
|
<template>
|
|
|
- <div class="chat bg-gray-900 comBg">
|
|
|
- <Header ref="Header" v-show="false" />
|
|
|
- <div class="flex flex-col items-center justify-center h-screen px-4">
|
|
|
- <!-- onClick={() => navigate('/')} -->
|
|
|
- <div
|
|
|
- class="text-white px-3 py-2 rounded-lg mb-4 absolute top-2 left-2"
|
|
|
- style="background-color: var(--bg-color1);"
|
|
|
- @click="goBack"
|
|
|
- >
|
|
|
- <!-- <i class="fas fa-chevron-left mr-2"></i> -->
|
|
|
- 返回
|
|
|
+ <div class="chat bg-white">
|
|
|
+ <div class="flex items-center justify-center h-screen">
|
|
|
+ <div class="leftInfo relative">
|
|
|
+ <div class="history">
|
|
|
+ <div class="historyBox flex historyActive">
|
|
|
+ <div class="photo">
|
|
|
+ <img class="object-cover" src="@/assets/images/1.png" alt="">
|
|
|
+ </div>
|
|
|
+ <div class="info flex-1 ml-2 flex flex-col justify-around">
|
|
|
+ <div class="text-sm font-semibold">角色名称</div>
|
|
|
+ <div class="text-sm text-gray-400">角色的聊天信息xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="chatInfo absolute top-0 left-0 w-full h-full z-30 bg-white" v-show="showInfo">
|
|
|
+ <div class="flex flex-col p-4">
|
|
|
+ <div class="flex justify-between items-center text-base mb-3">
|
|
|
+ <div>角色详情</div>
|
|
|
+ <i class="el-icon-close cursor-pointer" @click="showInfo = false"></i>
|
|
|
+ </div>
|
|
|
+ <div class="flex">
|
|
|
+ <span class="chatInfo_photo">
|
|
|
+ <img class="w-16 h-16 rounded-full overflow-hidden object-cover" :src="baseApi + info.picture">
|
|
|
+ </span>
|
|
|
+ <div class="w-0 flex-1 ml-2">
|
|
|
+ <div class="text-xl font-medium">{{ info.characterName }}</div>
|
|
|
+ <div class="mt-1 text-gray-500 text-sm">Rochat No.75680</div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="flex mt-4">
|
|
|
+ <div class="hot flex w-auto items-center px-2 py-1 text-sm mr-2 rounded-full">
|
|
|
+ <v-icon name="fire" scale="1"/>
|
|
|
+ <span class="ml-1">855.8k</span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="flex justify-around mt-4">
|
|
|
+ <div class=" rounded-full w-32 text-center py-2 text-sm cursor-pointer" style="border: solid 1px #000">分享</div>
|
|
|
+ <div class=" rounded-full w-32 text-center py-2 text-sm cursor-pointer" style="border: solid 1px #000" @click="showDetail = !showDetail">角色详情</div>
|
|
|
+ </div>
|
|
|
+ <transition name="el-zoom-in-top">
|
|
|
+ <div v-show="showDetail" >
|
|
|
+ <div class="mt-5 text-base pb-3 border-b border-gray-200">
|
|
|
+ <div>
|
|
|
+ <i class="el-icon-document"></i>
|
|
|
+ 描述
|
|
|
+ </div>
|
|
|
+ <div class="mt-3 text-sm max-h-48">
|
|
|
+ {{ info.prologue }}
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="flex justify-between items-center mt-5 text-base pb-3 border-b border-gray-200">
|
|
|
+ <div>
|
|
|
+ <i class="el-icon-user"></i>
|
|
|
+ 创作人
|
|
|
+ </div>
|
|
|
+ <div class="text-sm max-h-48">
|
|
|
+ {{ info.prologue }}
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="flex justify-between items-center mt-5 text-base pb-3 border-b border-gray-200">
|
|
|
+ <div>
|
|
|
+ <i class="el-icon-time"></i>
|
|
|
+ 创建时间
|
|
|
+ </div>
|
|
|
+ <div class="text-sm max-h-48">
|
|
|
+ 2024-06-20
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="mt-5 text-base">
|
|
|
+ <i class="el-icon-discount"></i>
|
|
|
+ 特征
|
|
|
+ </div>
|
|
|
+ <div class="tags mt-4 pb-3">
|
|
|
+ <span class="tag" v-for="(item, index) in info.labelArr" :key="index">
|
|
|
+ {{ item }}
|
|
|
+ </span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </transition>
|
|
|
+ <div class="mt-5 text-base pb-3">
|
|
|
+ <div>
|
|
|
+ <!-- <i class="el-icon-document"></i> -->
|
|
|
+ 查看场景
|
|
|
+ </div>
|
|
|
+ <div class="mt-3 text-sm max-h-48">
|
|
|
+ <el-empty description="暂无场景"></el-empty>
|
|
|
+ <div class="flex justify-center">
|
|
|
+ <el-button type="primary" round>创建场景</el-button>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
<div class="content">
|
|
|
- <div class="leftImg">
|
|
|
+ <!-- <div class="leftImg">
|
|
|
<img :src="baseApi + info.picture" alt="">
|
|
|
<div class="aiInfo">
|
|
|
<span class="photo">
|
|
@@ -28,12 +110,49 @@
|
|
|
<div class="infoContent">{{ info.prologue }}</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
- </div>
|
|
|
+ </div> -->
|
|
|
+
|
|
|
<div class="chat-box">
|
|
|
+ <div class="chatBoxTitle absolute top-0">
|
|
|
+ <div>
|
|
|
+ {{ info.characterName }}
|
|
|
+ </div>
|
|
|
+ <div class="flex w-60 justify-between">
|
|
|
+ <el-tooltip effect="dark" content="设定" placement="bottom">
|
|
|
+ <el-popover
|
|
|
+ placement="bottom"
|
|
|
+ width="400"
|
|
|
+ trigger="click">
|
|
|
+ <div class="p-2">
|
|
|
+ <div class="flex justify-between mb-4">
|
|
|
+ <span>语音自动播放</span>
|
|
|
+ <el-switch v-model="value1">
|
|
|
+ </el-switch>
|
|
|
+ </div>
|
|
|
+ <div class="flex justify-between">
|
|
|
+ <span>全屏幕</span>
|
|
|
+ <el-switch v-model="value1">
|
|
|
+ </el-switch>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <i slot="reference" class="fa-solid fa-sliders cursor-pointer text-xl"></i>
|
|
|
+ </el-popover>
|
|
|
+ </el-tooltip>
|
|
|
+ <el-tooltip effect="dark" content="角色详情" placement="bottom">
|
|
|
+ <i class="fa-solid fa-file-invoice cursor-pointer text-xl" @click="showInfo = true"></i>
|
|
|
+ </el-tooltip>
|
|
|
+ <el-tooltip effect="dark" content="开始新的对话" placement="bottom">
|
|
|
+ <i class="fa-solid fa-comment-medical cursor-pointer text-xl" @click="newStart"></i>
|
|
|
+ </el-tooltip>
|
|
|
+ <el-tooltip effect="dark" content="历史对话" placement="bottom">
|
|
|
+ <i class="fa-solid fa-clock-rotate-left cursor-pointer text-xl" @click="showInfo = false"></i>
|
|
|
+ </el-tooltip>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
<audio ref="audio" v-show="false" src="@/assets/file/我将在黎明出发.mp3" @ended="audioEnd" controls></audio>
|
|
|
<div class="messages" ref="messages">
|
|
|
<template v-for="(item, index) in returnMessage">
|
|
|
- <div v-if="item.role == 'assistant'" class="text-white mb-4 flex" :key="index">
|
|
|
+ <div v-if="item.role == 'assistant'" class="mb-4 flex" :key="index">
|
|
|
<!-- ai返回的信息 -->
|
|
|
<div class="pt-2 photo">
|
|
|
<img
|
|
@@ -41,13 +160,13 @@
|
|
|
class="rounded-full w-14 h-14 object-cover"
|
|
|
/>
|
|
|
</div>
|
|
|
- <div class="messageRight">
|
|
|
- <!-- <div class="yyPlay ml-4"></div> -->
|
|
|
- <div class="yyPlayBg mt-1 ml-6 w-16 p-1 cursor-pointer" @click="playAudio(item, index)">
|
|
|
- <img v-if="audioPlayIndex == index" class="yyPlay" src="@/assets/images/播放/yyPlay1.png" alt="" >
|
|
|
- <img v-else class="yyPlay" src="@/assets/images/播放/yyPlay.png" alt="" >
|
|
|
- </div>
|
|
|
- <div class="message mt-4 ml-4 p-3 rounded-r-md rounded-bl-md text-xs" >
|
|
|
+ <div class="messageRight">
|
|
|
+ <div class="message mt-4 ml-4 p-2 rounded-r-md rounded-bl-md text-xs" >
|
|
|
+ <div class="yyPlayBg mb-2 w-16 p-1 cursor-pointer" >
|
|
|
+ <img v-if="audioPlayIndex == index" class="yyPlay" src="@/assets/images/播放/yyPlay1.png" alt="" >
|
|
|
+ <img v-else class="yyPlay" src="@/assets/images/播放/yyPlay.png" alt="" @click="playAudio(item, index)">
|
|
|
+ <!-- <svg-icon class="icon" class-name="speech-icon" icon-class="speech" @click.stop="click" /> -->
|
|
|
+ </div>
|
|
|
<div v-show="!item.content" class="loadingMessage" >
|
|
|
<div v-loading="!item.content" element-loading-background="rgba(0, 0, 0, 0.0)"></div>
|
|
|
</div>
|
|
@@ -62,7 +181,7 @@
|
|
|
|
|
|
</div>
|
|
|
<!-- 用户发送的信息 -->
|
|
|
- <div v-if="item.role == 'user'" class="text-white mb-4 flex me" :key="index">
|
|
|
+ <div v-if="item.role == 'user'" class="mb-4 flex me" :key="index">
|
|
|
<div class="pt-2 photo">
|
|
|
<img
|
|
|
src="@/assets/images/default_avatar_user.png"
|
|
@@ -70,8 +189,8 @@
|
|
|
/>
|
|
|
</div>
|
|
|
<div class="messageRight">
|
|
|
- <div class="message mr-4 mt-4 p-3 rounded-l-md rounded-br-md text-xs">
|
|
|
- <p>{{ item.content }}</p>
|
|
|
+ <div class="messageUser mr-4 mt-4 p-2 rounded-l-md rounded-br-md text-xs">
|
|
|
+ {{ item.content }}
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
@@ -79,55 +198,108 @@
|
|
|
</template>
|
|
|
</div>
|
|
|
|
|
|
- <div class="absolute left-2 right-2 bottom-4 ">
|
|
|
- <!-- <div class="flex items-center text-gray-400 text-xs mb-4 ">
|
|
|
- <span>@Leon S Kennedy - Resident Evil</span>
|
|
|
- </div> -->
|
|
|
- <div class="flex">
|
|
|
- <el-button class="buttonBg1 mButton" @click="newStart" style="margin-right: 5px;" type="primary" round icon="el-icon-plus"></el-button>
|
|
|
- <input
|
|
|
+ <div class="inputBox absolute left-2 right-2 bottom-4 " @click="inputBoxClick">
|
|
|
+ <input
|
|
|
+ ref="input"
|
|
|
type="text"
|
|
|
placeholder="输入消息..."
|
|
|
- class="flex-1 py-2 px-4 rounded-l-lg text-sm text-white focus:outline-none"
|
|
|
- style="background: #ffffff0f; border: 1px solid #5b5b5e;"
|
|
|
+ class="w-full flex-1 py-2 px-4 rounded-l-lg text-sm focus:outline-none"
|
|
|
v-model="content"
|
|
|
@keydown="Enterkey"
|
|
|
/>
|
|
|
- <button @click="getStreamChatWithWeb" class="buttonBg1 text-white px-4 rounded-r-lg text-sm">
|
|
|
- 发送
|
|
|
+ <div class="flex pt-6 justify-between">
|
|
|
+ <div class="tools w-36 flex justify-between">
|
|
|
+ <i class="el-icon-setting text-2xl cursor-pointer" @click="showConfig = true"></i>
|
|
|
+ <i class="el-icon-picture-outline text-2xl cursor-pointer"></i>
|
|
|
+ <i class="el-icon-s-opportunity text-2xl cursor-pointer"></i>
|
|
|
+ </div>
|
|
|
+ <button @click="getStreamChatWithWeb" class="px-4 rounded-r-lg text-sm text-gray-400" :class="content && 'planeColor'">
|
|
|
+ <v-icon name="paper-plane" scale="1.5"/>
|
|
|
</button>
|
|
|
-
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
-
|
|
|
+ <el-dialog
|
|
|
+ title="配置"
|
|
|
+ :visible.sync="showConfig"
|
|
|
+ width="500px"
|
|
|
+ >
|
|
|
+ <p class="text-base">身分</p>
|
|
|
+ <p class="text-sm text-gray-400">选择你和角色聊天的身份</p>
|
|
|
+ <div class="flex items-start py-3 border-b border-gray-200">
|
|
|
+ <el-radio-group class="radio" v-model="configForm.radio1">
|
|
|
+ <el-radio-button label="上海"></el-radio-button>
|
|
|
+ </el-radio-group>
|
|
|
+ <el-button>
|
|
|
+ <i class="el-icon-sort" style="transform: rotate(90deg);"></i>
|
|
|
+ </el-button>
|
|
|
+ </div>
|
|
|
+ <p class="text-base mt-3">选择模型</p>
|
|
|
+ <p class="text-sm text-gray-400">每个模型可能有不同的效果,仅对当前对话有影响</p>
|
|
|
+ <div class="flex items-start py-3 border-b border-gray-200">
|
|
|
+ <el-radio-group class="radio" v-model="configForm.radio2">
|
|
|
+ <el-radio-button v-for="(item, index) in modelList" :key="index" :label="item.id">{{ item.model }}</el-radio-button>
|
|
|
+
|
|
|
+ </el-radio-group>
|
|
|
+ </div>
|
|
|
+ <p class="text-base mt-3">角色语言</p>
|
|
|
+ <p class="text-sm text-gray-400">请选择角色的回复语言</p>
|
|
|
+ <div class="flex items-start py-3">
|
|
|
+ <el-radio-group class="radio" v-model="configForm.radio3">
|
|
|
+ <el-radio-button label="自动"></el-radio-button>
|
|
|
+ <el-radio-button label="简体中文"></el-radio-button>
|
|
|
+ <el-radio-button label="繁體中文"></el-radio-button>
|
|
|
+ <el-radio-button label="English"></el-radio-button>
|
|
|
+ <el-radio-button label="Español"></el-radio-button>
|
|
|
+ </el-radio-group>
|
|
|
+ </div>
|
|
|
+ <span slot="footer" class="dialog-footer">
|
|
|
+ <el-button @click="showConfig = false">取 消</el-button>
|
|
|
+ <el-button type="primary" @click="showConfig = false">确 定</el-button>
|
|
|
+ </span>
|
|
|
+ </el-dialog>
|
|
|
</div>
|
|
|
- </div>
|
|
|
+</div>
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
import Header from "@/views/homeComponents/Header.vue"
|
|
|
-import { streamChatWithWebApi, getGuidanceApi } from "@/api/chat.js"
|
|
|
+import { streamChatWithWebApi, getGuidanceApi, getModelListApi } from "@/api/chat.js"
|
|
|
import { detailApi } from "@/api/detail.js"
|
|
|
import { Message, MessageBox, Notification, Loading } from 'element-ui'
|
|
|
+import 'vue-awesome/icons/paper-plane'
|
|
|
+import 'vue-awesome/icons/fire'
|
|
|
+
|
|
|
export default {
|
|
|
components: {
|
|
|
Header
|
|
|
},
|
|
|
data() {
|
|
|
return {
|
|
|
+ showDetail: false,
|
|
|
+ showConfig: false,
|
|
|
+ showInfo: false,
|
|
|
messageOptions: [],
|
|
|
info: {},
|
|
|
messageLoading: false,
|
|
|
returnMessage: [],
|
|
|
content: '',
|
|
|
- audioPlayIndex: null
|
|
|
+ audioPlayIndex: null,
|
|
|
+ configForm: {
|
|
|
+ radio1: null,
|
|
|
+ radio2: null,
|
|
|
+ radio3: null,
|
|
|
+ },
|
|
|
+ // 模型列表
|
|
|
+ modelList: []
|
|
|
}
|
|
|
},
|
|
|
mounted() {
|
|
|
console.log(this.$refs.Header, 'this.$refs.Header');
|
|
|
+ this.getModelList()
|
|
|
if (this.$route.query.characterId) {
|
|
|
+ this.showInfo = true
|
|
|
this.getDetail(this.$route.query.characterId)
|
|
|
}
|
|
|
},
|
|
@@ -143,10 +315,21 @@ export default {
|
|
|
}
|
|
|
},
|
|
|
methods: {
|
|
|
+ getModelList() {
|
|
|
+ getModelListApi().then(res => {
|
|
|
+ console.log(res, '模型列表');
|
|
|
+ this.modelList = res.data
|
|
|
+ })
|
|
|
+ },
|
|
|
+ inputBoxClick() {
|
|
|
+ console.log(this.$refs.input, 'this.$refs.input');
|
|
|
+ this.$refs.input.focus()
|
|
|
+ },
|
|
|
getDetail(id) {
|
|
|
detailApi(id).then(res => {
|
|
|
console.log(res, '角色详情');
|
|
|
this.info = res.data
|
|
|
+ this.configForm.radio2 = this.info.modelId
|
|
|
let HistoryMessage = JSON.parse(localStorage.getItem(`[userId:${123},aiId:${this.info.id}]`));
|
|
|
if (HistoryMessage) {
|
|
|
this.returnMessage = HistoryMessage
|
|
@@ -259,7 +442,8 @@ export default {
|
|
|
let params = {
|
|
|
historyMessage: HistoryMessage || [],
|
|
|
characterId: this.info.id,
|
|
|
- prompt: this.content
|
|
|
+ prompt: this.content,
|
|
|
+ modelId: this.configForm.radio2
|
|
|
}
|
|
|
// 新增一条ai信息
|
|
|
this.returnMessage.push({
|
|
@@ -394,120 +578,92 @@ export default {
|
|
|
.chat {
|
|
|
min-height: 100vh;
|
|
|
}
|
|
|
-.content {
|
|
|
- margin-top: 30px;
|
|
|
- background-size: 100% 100%;
|
|
|
- display: flex;
|
|
|
- height: 90vh;
|
|
|
- justify-content: center;
|
|
|
- width: 100vw;
|
|
|
-
|
|
|
- >.leftImg {
|
|
|
- border-radius: 16px 16px 16px 16px;
|
|
|
- height: 95%;
|
|
|
- position: relative;
|
|
|
- width: 380px;
|
|
|
-
|
|
|
- >img {
|
|
|
- border: 6px solid;
|
|
|
- border-image: linear-gradient(180deg, #b48733, #e8cf97, #b48733) 6 6;
|
|
|
- height: 99%;
|
|
|
- margin-right: 5px;
|
|
|
- object-fit: cover;
|
|
|
- }
|
|
|
- >.aiInfo {
|
|
|
- background-color: #ffffff1a;
|
|
|
- border-radius: 24px 24px 24px 24px;
|
|
|
- bottom: -70px;
|
|
|
- display: flex;
|
|
|
- height: 193px;
|
|
|
- justify-content: center;
|
|
|
- left: 50%;
|
|
|
- position: absolute;
|
|
|
- transform: translate(-50%, -50%);
|
|
|
- width: 100%;
|
|
|
+.leftInfo {
|
|
|
+ width: 375px;
|
|
|
+ height: 100%;
|
|
|
+ padding: 32px 24px;
|
|
|
|
|
|
- >.photo {
|
|
|
- width: 64px;
|
|
|
- height: 64px;
|
|
|
- font-size: 18px;
|
|
|
- position: absolute;
|
|
|
- top: -20px;
|
|
|
- box-sizing: border-box;
|
|
|
- margin: 0;
|
|
|
- padding: 0;
|
|
|
- color: #fff;
|
|
|
- line-height: 1.5714285714285714;
|
|
|
- list-style: none;
|
|
|
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';
|
|
|
- display: inline-flex;
|
|
|
- justify-content: center;
|
|
|
- align-items: center;
|
|
|
- overflow: hidden;
|
|
|
- white-space: nowrap;
|
|
|
- text-align: center;
|
|
|
- vertical-align: middle;
|
|
|
- background: rgba(0, 0, 0, 0.25);
|
|
|
- border: 1px solid transparent;
|
|
|
+ >.history {
|
|
|
+ width: 100%;
|
|
|
+ height: 100%;
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ >.historyBox {
|
|
|
+ padding: 8px;
|
|
|
+ border-radius: 15px;
|
|
|
+ border: solid 1px var(--color1);
|
|
|
+ >.photo {
|
|
|
+ >img {
|
|
|
border-radius: 50%;
|
|
|
}
|
|
|
- >.info {
|
|
|
- padding-top: 50px;
|
|
|
- width: 80%;
|
|
|
- >.name {
|
|
|
- color: #fff;
|
|
|
- font-size: 22px;
|
|
|
- font-style: normal;
|
|
|
- font-weight: 700;
|
|
|
- line-height: 31px;
|
|
|
- text-align: center;
|
|
|
- text-transform: none;
|
|
|
- }
|
|
|
- >.tags {
|
|
|
- padding-bottom: 8px;
|
|
|
- text-align: center;
|
|
|
- >.tag {
|
|
|
- margin-right: 4px;
|
|
|
- background: #ffffff1a;
|
|
|
- border-radius: 4px 4px 4px 4px;
|
|
|
- color: #fff;
|
|
|
- font-size: 12px;
|
|
|
- font-weight: 500;
|
|
|
- line-height: 17px;
|
|
|
- border-color: transparent;
|
|
|
- }
|
|
|
- }
|
|
|
- >.infoContent {
|
|
|
- color: #fff;
|
|
|
- font-size: 16px;
|
|
|
- font-style: normal;
|
|
|
- font-weight: 500;
|
|
|
- height: 80px;
|
|
|
- line-height: 22px;
|
|
|
- overflow-y: auto;
|
|
|
- text-align: center;
|
|
|
- text-transform: none;
|
|
|
- }
|
|
|
+ }
|
|
|
+ >.info {
|
|
|
+ width: calc(100% - 60px);
|
|
|
+ >div {
|
|
|
+ overflow: hidden; /* 确保超出容器的文本被裁剪 */
|
|
|
+ white-space: nowrap; /* 确保文本在一行内显示 */
|
|
|
+ text-overflow: ellipsis; /* 使用省略号表示文本超出 */
|
|
|
}
|
|
|
}
|
|
|
+ }
|
|
|
+ .historyBox:hover {
|
|
|
+ background: var(--color1);
|
|
|
+ }
|
|
|
+ >.historyActive {
|
|
|
+ background: var(--color1);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ >.chatInfo {
|
|
|
+ .chatInfo_photo {
|
|
|
+ >img {
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .hot {
|
|
|
+ color: #f03d3d;
|
|
|
+ background: #fff1f1;
|
|
|
+ }
|
|
|
+ .tags {
|
|
|
+ margin-top: 10px;
|
|
|
+ .tag {
|
|
|
+ display: inline-flex;
|
|
|
+ justify-content: center;
|
|
|
+ padding: 5px 10px;
|
|
|
+ border-radius: 4px;
|
|
|
+ border: solid 1px var(--color1);
|
|
|
+ margin-right: 5px;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
+}
|
|
|
+.content {
|
|
|
+ background-size: 100% 100%;
|
|
|
+ display: flex;
|
|
|
+ height: 100%;
|
|
|
+ justify-content: center;
|
|
|
+ width: calc(100% - 375px);
|
|
|
+ border-left: solid 1px var(--color1);
|
|
|
+
|
|
|
>.chat-box {
|
|
|
- margin-left: 5px;
|
|
|
position: relative;
|
|
|
- background-color: #ffffff1a;
|
|
|
- background-position: 50%;
|
|
|
- background-repeat: no-repeat;
|
|
|
+ background: linear-gradient(to bottom, rgba(0, 0, 0, 0.4) 0%, rgb(255, 255, 255) 20%, rgb(255, 255, 255) 75%, rgba(0, 0, 0, 0.4) 100%);
|
|
|
background-size: auto;
|
|
|
- border: 1px solid #635677 !important;
|
|
|
- border-radius: 20px;
|
|
|
+ // border: 1px solid #635677 !important;
|
|
|
box-sizing: border-box;
|
|
|
- color: #fff !important;
|
|
|
display: flex;
|
|
|
flex-direction: column;
|
|
|
- height: 95%;
|
|
|
- // margin: 0 auto;
|
|
|
- width: 1010px;
|
|
|
- padding: 25px;
|
|
|
+ height: 100%;
|
|
|
+ width: 100%;
|
|
|
+ padding: 55px 25px 25px 25px;
|
|
|
+ >.chatBoxTitle {
|
|
|
+ color: #fff;
|
|
|
+ margin-top: 15px;
|
|
|
+ width: calc(100% - 50px);
|
|
|
+ height: 30px;
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ align-items: center;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -520,17 +676,22 @@ export default {
|
|
|
}
|
|
|
.messageRight {
|
|
|
max-width: calc(100% - 72px);
|
|
|
- min-width: 400px;
|
|
|
+ // min-width: 400px;
|
|
|
}
|
|
|
.yyPlayBg {
|
|
|
- background: rgba(103, 103, 168, 1);
|
|
|
- border-radius: 999px;
|
|
|
- position: absolute;
|
|
|
+ // background: rgba(103, 103, 168, 1);
|
|
|
+ // border-radius: 999px;
|
|
|
+ // position: absolute;
|
|
|
+
|
|
|
+ .icon {
|
|
|
+ height: 24px;
|
|
|
+ width: 96px;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
.yyPlay {
|
|
|
- width: 12px;
|
|
|
- height: 12px;
|
|
|
+ width: 15px;
|
|
|
+ height: 15px;
|
|
|
// background: url('../../assets/images/播放/yyPlay.gif') no-repeat;
|
|
|
// background-size: 170% 170%;
|
|
|
// background-position: 50% 50%;
|
|
@@ -540,17 +701,21 @@ export default {
|
|
|
// background: #fff;
|
|
|
}
|
|
|
.message {
|
|
|
- background: #ffffff0f;
|
|
|
- border: 1px solid #5b5b5e;
|
|
|
-
|
|
|
+ // background: #ffffff0f;
|
|
|
+ // border: 1px solid #5b5b5e;
|
|
|
+ background: var(--bg-color3);
|
|
|
+ color: #fff;
|
|
|
+ font-size: 14px;
|
|
|
// flex: 1;
|
|
|
|
|
|
}
|
|
|
.messageUser {
|
|
|
- background: #ffffff0f;
|
|
|
- border: 1px solid #5b5b5e;
|
|
|
- max-width: calc(100% - 72px);
|
|
|
- min-width: 400px;
|
|
|
+ background: rgba(255, 255, 255, 0.9);
|
|
|
+ border: 1px solid var(--color1);
|
|
|
+ // max-width: calc(100% - 72px);
|
|
|
+ font-size: 14px;
|
|
|
+ width: auto;
|
|
|
+ // min-width: 400px;
|
|
|
}
|
|
|
.photo {
|
|
|
width: 56px;
|
|
@@ -562,17 +727,18 @@ export default {
|
|
|
position: relative;
|
|
|
// display: flex;
|
|
|
// justify-content: center;
|
|
|
- width: 100%;
|
|
|
- height: 100%;
|
|
|
+ width: 120px;
|
|
|
+ height: 64px;
|
|
|
}
|
|
|
.messageOptions {
|
|
|
// margin-top: 20px;
|
|
|
display: flex;
|
|
|
flex-wrap: wrap;
|
|
|
justify-content: space-around;
|
|
|
+ min-width: 400px;
|
|
|
.option {
|
|
|
background: #ade4ff32;
|
|
|
- border: 1px solid #5b5b5e;
|
|
|
+ // border: 1px solid #5b5b5e;
|
|
|
border-radius: 10px;
|
|
|
padding: 10px;
|
|
|
width: 40%;
|
|
@@ -581,6 +747,15 @@ export default {
|
|
|
cursor: pointer;
|
|
|
}
|
|
|
}
|
|
|
+.inputBox {
|
|
|
+ border: solid 1px var(--color1);
|
|
|
+ border-radius: 10px;
|
|
|
+ padding: 24px;
|
|
|
+ background: #fff;
|
|
|
+}
|
|
|
+.planeColor {
|
|
|
+ color: var(--bg-color1);
|
|
|
+}
|
|
|
</style>
|
|
|
<style scoped>
|
|
|
.loadingMessage >>> .el-loading-parent--relative {
|
|
@@ -595,4 +770,20 @@ export default {
|
|
|
.mButton {
|
|
|
border: solid 0px;
|
|
|
}
|
|
|
+ .radio >>> .el-radio-button {
|
|
|
+ margin-bottom: 5px;
|
|
|
+ margin-right: 10px;
|
|
|
+ /* border-left: solid 1px #DCDFE6; */
|
|
|
+ }
|
|
|
+ .radio >>> .el-radio-button__inner {
|
|
|
+ border-left: solid 1px #DCDFE6;
|
|
|
+ border-radius: 4px;
|
|
|
+ }
|
|
|
+ .radio >>> .el-radio-button__orig-radio:checked + .el-radio-button__inner {
|
|
|
+ border-left: solid 1px var(--bg-color1);
|
|
|
+ background-color: var(--bg-color1);
|
|
|
+ border-color: var(--bg-color1);
|
|
|
+ -webkit-box-shadow: -1px 0 0 0 var(--bg-color1);
|
|
|
+ box-shadow: -1px 0 0 0 var(--bg-color1);
|
|
|
+ }
|
|
|
</style>
|