<template>
|
<div class="playInput hl_input">
|
<div class="assembly flex">
|
<el-button title="插件菜单" class="label flex items-center cursor-pointer" link>
|
<img src="/static/images/wave/PlugIn.png" class="set-icon box-border" />
|
</el-button>
|
</div>
|
<div class="set-input">
|
<el-input
|
class="relative align-bottom set-inputAnswer"
|
type="textarea"
|
resize="none"
|
:autosize="{ minRows: 1, maxRows: 8 }"
|
v-elInputFocus
|
@keydown="enterInput"
|
v-model="inputValue"
|
placeholder="在这里输入您的问题开始和AI对话"
|
/>
|
</div>
|
<div class="h100 flex items-center">
|
<div class="upload_img space-y">
|
<div class="imgbox cursor-pointer flex items-center">
|
<el-button title="AI看图" class="cursor-pointer" link style="margin-left: unset">
|
<img src="/static/images/wave/LookImg.png" class="set-img-icon box-border" />
|
</el-button>
|
<el-button title="AI语音对话" class="cursor-pointer" link style="margin-left: unset" @click="audioChangeWord">
|
<img src="/static/images/wave/HeadImg.png" class="set-img-icon box-border" />
|
</el-button>
|
|
<el-button title="发送" :disabled="isTalking" class="cursor-pointer" link @click="emits('sendClick')">
|
<div class="send">
|
<img src="/static/images/wave/QueryImg.png" />
|
</div>
|
</el-button>
|
</div>
|
</div>
|
</div>
|
<VoicePage v-model:isShow="voicePageIsShow" v-show="voicePageIsShow" />
|
</div>
|
</template>
|
|
<script setup lang="ts">
|
import { ref } from 'vue';
|
import VoicePage from './voicePage/VoicePage.vue';
|
const emits = defineEmits(['sendClick']);
|
|
const props = defineProps(['isTalking']);
|
const voicePageIsShow = ref(false);
|
const inputValue = defineModel({
|
type: String,
|
});
|
|
const enterInput = (e) => {
|
if (props.isTalking) return;
|
if (!e.shiftKey && e.keyCode == 13) {
|
e.cancelBubble = true; //ie阻止冒泡行为
|
e.stopPropagation(); //Firefox阻止冒泡行为
|
e.preventDefault(); //取消事件的默认动作*换行
|
//以下处理发送消息代码
|
emits('sendClick');
|
}
|
};
|
const audioChangeWord = () => {
|
voicePageIsShow.value = true;
|
};
|
</script>
|
<style scoped lang="scss">
|
.set-waterTitle {
|
line-height: 24px;
|
font-weight: 500;
|
font-size: 18px;
|
color: #3b4066;
|
vertical-align: middle;
|
}
|
strong {
|
font-size: 26px;
|
font-weight: 700;
|
margin-right: 12px;
|
}
|
.layout-logo-medium-img {
|
width: 28px;
|
margin-right: 7px;
|
}
|
.pc-roleList {
|
margin: 40px 0 26px;
|
position: relative;
|
}
|
.modelItem {
|
height: 34px;
|
padding: 0 16px;
|
border-radius: 17px;
|
border: 1px solid #00000020;
|
background-color: #f2f4f8;
|
transition: background-color 0.1s, border-color 0.1s, color 0.1s;
|
color: #333;
|
.set-icon {
|
width: 20px;
|
height: 20px;
|
position: relative;
|
}
|
.set-icon-more {
|
width: 16px;
|
height: 16px;
|
position: relative;
|
}
|
span {
|
margin-left: 8px;
|
font-weight: 500;
|
font-size: 15px;
|
}
|
}
|
.modelItemActive {
|
background-color: #1c86ff;
|
border-color: #1c86ff;
|
color: #fff;
|
}
|
.playInput {
|
align-items: flex-start;
|
width: 760px;
|
position: relative;
|
padding: 4px 4px 4px 12px;
|
|
display: flex;
|
-webkit-box-align: end;
|
-ms-flex-align: end;
|
align-items: flex-end;
|
-webkit-box-sizing: border-box;
|
box-sizing: border-box;
|
border-radius: 22px;
|
border: 1px solid #00000030;
|
-webkit-box-shadow: 0 0 0 1px transparent, 0 3px 16px 0 #dee0f3;
|
box-shadow: 0 0 0 1px transparent, 0 3px 16px 0 #dee0f3;
|
-webkit-transition: border-color 0.1s ease-in-out, -webkit-box-shadow 0.1s ease-in-out;
|
transition: border-color 0.1s ease-in-out, -webkit-box-shadow 0.1s ease-in-out;
|
-o-transition: border-color 0.1s ease-in-out, box-shadow 0.1s ease-in-out;
|
transition: border-color 0.1s ease-in-out, box-shadow 0.1s ease-in-out;
|
transition: border-color 0.1s ease-in-out, box-shadow 0.1s ease-in-out, -webkit-box-shadow 0.1s ease-in-out;
|
background-color: #fff;
|
.assembly {
|
position: relative;
|
align-self: flex-end;
|
margin-right: 12px;
|
.label {
|
height: 38px;
|
}
|
}
|
.set-input {
|
position: relative;
|
vertical-align: bottom;
|
font-size: 14px;
|
display: inline-block;
|
width: 100%;
|
.set-inputAnswer {
|
padding: 3px 0;
|
line-height: 20px;
|
border: none;
|
background-color: transparent;
|
color: #333;
|
font-size: 15px;
|
:deep(.el-textarea__inner) {
|
// 去除线
|
box-shadow: none;
|
}
|
}
|
:deep(.el-input__wrapper) {
|
box-shadow: unset;
|
}
|
}
|
.upload_img {
|
.imgbox {
|
height: 38px;
|
.set-img-icon {
|
width: 38px;
|
height: 38px;
|
border-radius: 5px;
|
transition: background-color 0.1s ease-in-out;
|
}
|
.send {
|
width: 36px;
|
height: 36px;
|
border-radius: 50%;
|
background-color: #2c1e1d;
|
img {
|
margin: 4px 0 0 -2px;
|
}
|
}
|
}
|
}
|
}
|
</style>
|