UnisKB/ui/src/components/ai-dialog/index.vue

129 lines
3.9 KiB
Vue
Raw Normal View History

2023-11-17 03:36:16 +00:00
<template>
2023-11-20 10:56:31 +00:00
<div class="ai-dialog">
2023-11-21 02:56:25 +00:00
<el-scrollbar>
<div class="ai-dialog__content flex">
<AppAvatar class="avatar-gradient">
<img src="@/assets/icon_robot.svg" style="width: 54%" alt="" />
</AppAvatar>
<AppAvatar>
<img src="@/assets/user-icon.svg" style="width: 54%" alt="" />
</AppAvatar>
<div class="ml-8 w-full">
<el-card shadow="always" class="dialog-card">
<h4>您好我是 MaxKB 智能小助手</h4>
<div class="mt-4">
<el-text type="info">回答用户提出的 MaxKB 产品使用问题</el-text>
</div>
</el-card>
<el-card shadow="always" class="dialog-card mt-12">
<h4>您可以尝试输入以下问题</h4>
<div class="mt-8">
<el-row :gutter="20">
<el-col :span="12">
<el-button icon="EditPen" class="problem-button w-full">
DataEase支持哪些类型的数据源
</el-button>
</el-col>
<el-col :span="12">
<el-button icon="EditPen" class="problem-button w-full">
DataEase支持哪些类型的数据源
</el-button>
</el-col>
</el-row>
</div>
</el-card>
2023-11-20 10:56:31 +00:00
2023-11-21 02:56:25 +00:00
<el-card shadow="always" class="dialog-card mt-12"> XXXXXXXXX </el-card>
<el-card shadow="always" class="dialog-card mt-12"> XXXXXXXXX </el-card>
<el-card shadow="always" class="dialog-card mt-12"> XXXXXXXXX </el-card>
<el-card shadow="always" class="dialog-card mt-12"> XXXXXXXXX </el-card>
<el-card shadow="always" class="dialog-card mt-12"> XXXXXXXXX </el-card>
<el-card shadow="always" class="dialog-card mt-12"> XXXXXXXXX </el-card>
<el-card shadow="always" class="dialog-card mt-12"> XXXXXXXXX </el-card>
<el-card shadow="always" class="dialog-card mt-12"> XXXXXXXXX </el-card>
<el-card shadow="always" class="dialog-card mt-12"> XXXXXXXXX </el-card>
<el-card shadow="always" class="dialog-card mt-12"> XXXXXXXXX </el-card>
</div>
2023-11-20 10:56:31 +00:00
</div>
2023-11-21 02:56:25 +00:00
</el-scrollbar>
2023-11-20 10:56:31 +00:00
<div class="ai-dialog__textarea flex">
<el-input
v-model="inputValue"
type="textarea"
placeholder="请输入"
:autosize="{ minRows: 1, maxRows: 8 }"
/>
<div class="operate">
2023-11-21 02:56:25 +00:00
<el-button text class="sent-button" disabled>
2023-11-20 10:56:31 +00:00
<AppIcon iconName="app-send"></AppIcon>
</el-button>
</div>
2023-11-17 03:36:16 +00:00
</div>
</div>
</template>
<script setup lang="ts">
2023-11-20 10:56:31 +00:00
import { ref } from 'vue'
2023-11-17 03:36:16 +00:00
const props = defineProps({
data: {
type: Array<any>,
default: () => []
}
})
2023-11-20 10:56:31 +00:00
const inputValue = ref('')
2023-11-17 03:36:16 +00:00
</script>
2023-11-20 10:56:31 +00:00
<style lang="scss" scoped>
.ai-dialog {
2023-11-21 02:56:25 +00:00
// min-height: 400px;
// height: 100%;
height: calc(100% - 10px);
2023-11-20 10:56:31 +00:00
display: flex;
flex-direction: column;
2023-11-21 02:56:25 +00:00
box-sizing: border-box;
2023-11-20 10:56:31 +00:00
&__content {
flex: 1;
.problem-button {
border: none;
border-radius: 8px;
background: var(--app-layout-bg-color);
height: 46px;
justify-content: left;
&:hover {
background: var(--el-color-primary-light-9);
}
:deep(.el-icon) {
color: var(--el-color-primary);
}
}
}
.dialog-card {
border: none;
}
&__textarea {
box-shadow: 0px 6px 24px 0px rgba(31, 35, 41, 0.08);
background-color: #ffffff;
border-radius: 8px;
border: 1px solid #ffffff;
2023-11-21 02:56:25 +00:00
box-sizing: border-box;
2023-11-20 10:56:31 +00:00
&:has(.el-textarea__inner:focus) {
border: 1px solid var(--el-color-primary);
}
2023-11-21 02:56:25 +00:00
:deep(.el-textarea__inner) {
border-radius: 8px !important;
box-shadow: none;
resize: none;
padding: 12px 16px;
}
2023-11-20 10:56:31 +00:00
.operate {
padding: 10px 12px;
.sent-button {
.el-icon {
font-size: 24px;
}
}
}
}
}
</style>