|
@@ -62,11 +62,6 @@
|
|
|
<el-table-column label="语速" align="center" prop="ttsSpeed" />
|
|
<el-table-column label="语速" align="center" prop="ttsSpeed" />
|
|
|
<el-table-column label="音调" align="center" prop="ttsPitch" />
|
|
<el-table-column label="音调" align="center" prop="ttsPitch" />
|
|
|
<el-table-column label="音量" align="center" prop="ttsVolume" />
|
|
<el-table-column label="音量" align="center" prop="ttsVolume" />
|
|
|
- <el-table-column label="回复语言" align="center" prop="language">
|
|
|
|
|
- <template #default="scope">
|
|
|
|
|
- <span>{{ getDictLabel(languageOptions, scope.row.language) }}</span>
|
|
|
|
|
- </template>
|
|
|
|
|
- </el-table-column>
|
|
|
|
|
<el-table-column label="状态" align="center" prop="status">
|
|
<el-table-column label="状态" align="center" prop="status">
|
|
|
<template #default="scope">
|
|
<template #default="scope">
|
|
|
<el-tag :type="scope.row.status === '0' ? 'success' : 'danger'">
|
|
<el-tag :type="scope.row.status === '0' ? 'success' : 'danger'">
|
|
@@ -105,6 +100,7 @@
|
|
|
<el-upload
|
|
<el-upload
|
|
|
class="avatar-uploader"
|
|
class="avatar-uploader"
|
|
|
:action="uploadAction"
|
|
:action="uploadAction"
|
|
|
|
|
+ :headers="uploadHeaders"
|
|
|
:show-file-list="false"
|
|
:show-file-list="false"
|
|
|
:on-success="handleAvatarSuccess"
|
|
:on-success="handleAvatarSuccess"
|
|
|
:before-upload="beforeAvatarUpload"
|
|
:before-upload="beforeAvatarUpload"
|
|
@@ -113,9 +109,6 @@
|
|
|
<el-icon v-else class="avatar-uploader-icon"><Plus /></el-icon>
|
|
<el-icon v-else class="avatar-uploader-icon"><Plus /></el-icon>
|
|
|
</el-upload>
|
|
</el-upload>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
- <el-form-item label="客服描述" prop="description">
|
|
|
|
|
- <el-input v-model="form.description" type="textarea" placeholder="请输入客服描述" />
|
|
|
|
|
- </el-form-item>
|
|
|
|
|
<el-form-item label="欢迎语" prop="greetingMessage">
|
|
<el-form-item label="欢迎语" prop="greetingMessage">
|
|
|
<el-input v-model="form.greetingMessage" type="textarea" placeholder="请输入欢迎语" />
|
|
<el-input v-model="form.greetingMessage" type="textarea" placeholder="请输入欢迎语" />
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
@@ -144,16 +137,6 @@
|
|
|
<el-radio :value="1">有背景音</el-radio>
|
|
<el-radio :value="1">有背景音</el-radio>
|
|
|
</el-radio-group>
|
|
</el-radio-group>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
- <el-form-item label="回复语言" prop="language">
|
|
|
|
|
- <el-select v-model="form.language" placeholder="请选择回复语言">
|
|
|
|
|
- <el-option
|
|
|
|
|
- v-for="item in languageOptions"
|
|
|
|
|
- :key="item.dictValue"
|
|
|
|
|
- :label="item.dictLabel"
|
|
|
|
|
- :value="item.dictValue"
|
|
|
|
|
- />
|
|
|
|
|
- </el-select>
|
|
|
|
|
- </el-form-item>
|
|
|
|
|
<el-form-item label="状态" prop="status">
|
|
<el-form-item label="状态" prop="status">
|
|
|
<el-radio-group v-model="form.status">
|
|
<el-radio-group v-model="form.status">
|
|
|
<el-radio value="0">正常</el-radio>
|
|
<el-radio value="0">正常</el-radio>
|
|
@@ -172,10 +155,11 @@
|
|
|
</template>
|
|
</template>
|
|
|
|
|
|
|
|
<script setup name="Agent" lang="ts">
|
|
<script setup name="Agent" lang="ts">
|
|
|
-import { listAgent, getAgent, delAgent, addAgent, updateAgent, getTtsVcnDict, getLanguageDict } from '@/api/talk/agent';
|
|
|
|
|
|
|
+import { listAgent, getAgent, delAgent, addAgent, updateAgent, getTtsVcnDict } from '@/api/talk/agent';
|
|
|
import { AgentVO, AgentQuery, AgentForm } from '@/api/talk/agent/types';
|
|
import { AgentVO, AgentQuery, AgentForm } from '@/api/talk/agent/types';
|
|
|
import { Plus } from '@element-plus/icons-vue';
|
|
import { Plus } from '@element-plus/icons-vue';
|
|
|
import type { UploadProps } from 'element-plus';
|
|
import type { UploadProps } from 'element-plus';
|
|
|
|
|
+import { getToken } from '@/utils/auth';
|
|
|
|
|
|
|
|
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
|
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
|
|
|
|
|
|
@@ -188,8 +172,8 @@ const single = ref(true);
|
|
|
const multiple = ref(true);
|
|
const multiple = ref(true);
|
|
|
const total = ref(0);
|
|
const total = ref(0);
|
|
|
const ttsVcnOptions = ref<any[]>([]);
|
|
const ttsVcnOptions = ref<any[]>([]);
|
|
|
-const languageOptions = ref<any[]>([]);
|
|
|
|
|
-const uploadAction = ref(import.meta.env.VITE_APP_BASE_API + '/talk/admin/agent/upload/avatar');
|
|
|
|
|
|
|
+const uploadAction = ref(import.meta.env.VITE_APP_BASE_API + '/talk/admin/agent/avatar');
|
|
|
|
|
+const uploadHeaders = ref({ Authorization: 'Bearer ' + getToken() });
|
|
|
|
|
|
|
|
const queryFormRef = ref<ElFormInstance>();
|
|
const queryFormRef = ref<ElFormInstance>();
|
|
|
const agentFormRef = ref<ElFormInstance>();
|
|
const agentFormRef = ref<ElFormInstance>();
|
|
@@ -204,15 +188,13 @@ const initFormData: AgentForm = {
|
|
|
name: undefined,
|
|
name: undefined,
|
|
|
gender: '0',
|
|
gender: '0',
|
|
|
avatarUrl: undefined,
|
|
avatarUrl: undefined,
|
|
|
- description: undefined,
|
|
|
|
|
greetingMessage: undefined,
|
|
greetingMessage: undefined,
|
|
|
status: '0',
|
|
status: '0',
|
|
|
ttsVcn: 'x4_yezi',
|
|
ttsVcn: 'x4_yezi',
|
|
|
ttsSpeed: 50,
|
|
ttsSpeed: 50,
|
|
|
ttsPitch: 50,
|
|
ttsPitch: 50,
|
|
|
ttsVolume: 50,
|
|
ttsVolume: 50,
|
|
|
- ttsBgs: 0,
|
|
|
|
|
- language: 'zh'
|
|
|
|
|
|
|
+ ttsBgs: 0
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
const data = reactive<PageData<AgentForm, AgentQuery>>({
|
|
const data = reactive<PageData<AgentForm, AgentQuery>>({
|
|
@@ -222,8 +204,7 @@ const data = reactive<PageData<AgentForm, AgentQuery>>({
|
|
|
pageSize: 10,
|
|
pageSize: 10,
|
|
|
name: undefined,
|
|
name: undefined,
|
|
|
gender: undefined,
|
|
gender: undefined,
|
|
|
- status: undefined,
|
|
|
|
|
- language: undefined
|
|
|
|
|
|
|
+ status: undefined
|
|
|
},
|
|
},
|
|
|
rules: {
|
|
rules: {
|
|
|
name: [
|
|
name: [
|
|
@@ -241,10 +222,7 @@ const { queryParams, form, rules } = toRefs(data);
|
|
|
const fetchDictData = async () => {
|
|
const fetchDictData = async () => {
|
|
|
try {
|
|
try {
|
|
|
const ttsVcnRes = await getTtsVcnDict();
|
|
const ttsVcnRes = await getTtsVcnDict();
|
|
|
- ttsVcnOptions.value = ttsVcnRes.data;
|
|
|
|
|
-
|
|
|
|
|
- const languageRes = await getLanguageDict();
|
|
|
|
|
- languageOptions.value = languageRes.data;
|
|
|
|
|
|
|
+ ttsVcnOptions.value = ttsVcnRes.data || [];
|
|
|
} catch (error) {
|
|
} catch (error) {
|
|
|
console.error('获取字典数据失败:', error);
|
|
console.error('获取字典数据失败:', error);
|
|
|
}
|
|
}
|
|
@@ -262,8 +240,8 @@ const getList = async () => {
|
|
|
/** 头像上传成功回调 */
|
|
/** 头像上传成功回调 */
|
|
|
const handleAvatarSuccess: UploadProps['onSuccess'] = (response) => {
|
|
const handleAvatarSuccess: UploadProps['onSuccess'] = (response) => {
|
|
|
console.log('上传成功,response:', response);
|
|
console.log('上传成功,response:', response);
|
|
|
- console.log('response.data:', response.data);
|
|
|
|
|
- form.value.avatarUrl = response.data;
|
|
|
|
|
|
|
+ console.log('response.msg:', response.msg);
|
|
|
|
|
+ form.value.avatarUrl = response.msg;
|
|
|
console.log('设置后 form.avatarUrl:', form.value.avatarUrl);
|
|
console.log('设置后 form.avatarUrl:', form.value.avatarUrl);
|
|
|
}
|
|
}
|
|
|
|
|
|