ai-manus/chat-client/src/views/permission/prologueManage/index.vue

148 lines
4.7 KiB
Vue
Raw Normal View History

2025-07-23 17:41:28 +08:00
<template>
<el-card>
<el-form :model="form" label-width="120px">
<el-form-item>
<el-button type="primary" @click="load">查询</el-button>
<el-button type="success" @click="save">保存</el-button>
</el-form-item>
<el-form-item :label="聊天类型">
<el-select v-model="form.chatType" placeholder="选择聊天类型">
<el-option label="故障诊断" value="1" />
<el-option label="智能问答" value="2" />
<el-option label="图表报告" value="3" />
<el-option label="应急助手问答" value="4" />
<el-option label="诊断代码查询" value="5" />
</el-select>
</el-form-item>
<el-form-item label="开场白内容">
<el-input type="textarea" v-model="form.content" rows="8"></el-input>
</el-form-item>
<!-- 新增推荐问题 -->
<el-form-item>
<el-button type="primary" @click="addRecommend">新增推荐问题</el-button>
</el-form-item>
<!-- 推荐问题列表 -->
<el-table :data="recommendations" style="width: 100%" border>
<el-table-column label="推荐问题" prop="questionContent" />
<el-table-column label="操作" width="180">
<template v-slot="scope">
<el-button size="mini" @click="editRecommend(scope.row)">编辑</el-button>
<el-button size="mini" type="danger" @click="deleteRecommend(scope.row)">删除</el-button>
</template>
</el-table-column>
</el-table>
</el-form>
</el-card>
</template>
<script setup lang="ts">
import { ref, watch, onMounted } from 'vue'
import { ElMessage, ElMessageBox } from 'element-plus'
import { getRemark, saveRemark, getRecommendations, editRecommendation, deleteRecommendation } from '@/api/prologue'
import { useI18n } from 'vue-i18n'
const { t, locale } = useI18n()
defineOptions({
name: 'prologueManage',
})
const form = ref({
chatType: '1', // 默认选中 '故障诊断'
content: '',
})
const recommendations = ref([]) // 推荐问题列表
const currentRecommendation = ref({ questionContent: '' }) // 当前正在编辑的推荐问题
// 查询开场白内容
const load = async () => {
try {
const res = await getRemark(form.value.chatType) // 根据 chatType 获取开场白
if (res.data) {
form.value.content = res.data.content
ElMessage.success('加载成功')
await loadRecommendations() // 获取推荐问题列表
} else {
form.value.content = ''
ElMessage.error('未找到开场白内容')
}
} catch (error) {
ElMessage.error('加载失败,请稍后重试')
}
}
// 查询推荐问题列表
const loadRecommendations = async () => {
try {
const res = await getRecommendations(form.value.chatType) // 使用 chatType 获取推荐问题
if (res.data) {
console.log('recommend questions return data:', res.data)
recommendations.value = res.data // 确保 res.data 是推荐问题列表
}
} catch (error) {
ElMessage.error('加载推荐问题失败')
}
}
// 监听 chatType 的变化,动态请求并更新 content 和推荐问题内容
watch(
() => form.value.chatType,
() => {
load()
}
)
// 保存修改后的内容
const save = () => {
ElMessageBox.confirm('是否确认保存修改?', '提示', {
confirmButtonText: '确认',
cancelButtonText: '取消',
type: 'warning',
}).then(async () => {
try {
await saveRemark(form.value)
ElMessage.success('保存成功')
} catch (error) {
ElMessage.error('保存失败,请稍后重试')
}
})
}
// 新增推荐问题
const addRecommend = () => {
// currentRecommendation.value = { questionContent: '' } // 清空编辑框
// dialogVisible.value = true // 显示编辑对话框
}
// 编辑推荐问题
const editRecommend = (row: any) => {
// currentRecommendation.value = { ...row } // 填充编辑框
// dialogVisible.value = true // 显示编辑对话框
}
// 删除推荐问题
const deleteRecommend = (row: any) => {
ElMessageBox.confirm('确定要删除该推荐问题吗?', '删除确认', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
}).then(async () => {
try {
await deleteRecommendation(row.id) // 根据 id 删除推荐问题
console.log('待删除的row.id',row.id)
ElMessage.success('删除成功')
await loadRecommendations() // 重新加载推荐问题列表
} catch (error) {
ElMessage.error('删除失败')
}
})
}
// 在组件加载时获取初始的开场白内容
onMounted(load)
</script>