Ver código fonte

feat: 对接语言和国籍列表

王晓东 5 dias atrás
pai
commit
3bb12b6517

+ 9 - 2
src/api/modules/anycallService.ts

@@ -79,7 +79,14 @@ export function updateAgentLLm(params: {
   return request(`/anycall/admin/updateAgentLLm`, {cloneId: params.cloneId, llmId: params.llmId})
 }
 
-
-export function getI18nList(){
+// 语言
+export function fetchI18nList(){
   return request<{name: string, value: string}[]>(`/anycall/admin/selectI18n`)
 }
+
+// 国籍
+export function fetchtNationalityList(){
+  return request<{name: string, value: string}[]>(`/anycall/admin/selectI18nISO`)
+}
+
+

+ 1 - 0
src/api/modules/model.ts

@@ -52,3 +52,4 @@ export async function updateGlobalPrompt(params: {
 
 }
 
+

+ 2 - 2
src/components/LangSelector.vue

@@ -1,5 +1,5 @@
 <script setup lang="ts">
-import { getI18nList } from '@/api/modules/anycallService'
+import { fetchI18nList } from '@/api/modules/anycallService'
 
 // 定义组件属性
 interface Props {
@@ -42,7 +42,7 @@ const options = ref<Array<{value: string, name: string}>>([])
 
 const fetchData = async () => {
   try {
-    const res = await getI18nList()
+    const res = await fetchI18nList()
     if (res.code === 0) {
       console.log(res.data,3333)
       options.value = res.data

+ 81 - 0
src/components/NationalitySelector.vue

@@ -0,0 +1,81 @@
+<script setup lang="ts">
+import { fetchtNationalityList } from '@/api/modules/anycallService'
+
+// 定义组件属性
+interface Props {
+  modelValue?: string
+  disabled?: boolean
+  placeholder?: string
+  style?: string | object
+  className?: string
+}
+
+// 定义组件事件
+interface Emits {
+  (e: 'update:modelValue', value: string | undefined): void
+}
+
+// 设置默认属性
+const props = withDefaults(defineProps<Props>(), {
+  disabled: false,
+  placeholder: '请选择',
+  style: 'width: 140px;',
+})
+
+// 定义事件触发器
+const emit = defineEmits<Emits>()
+
+// 创建本地响应式变量用于v-model绑定
+const localValue = ref(props.modelValue)
+
+// 监听props中的modelValue变化,同步到本地变量
+watch(
+  () => props.modelValue,
+  (newValue) => {
+    localValue.value = newValue
+  },
+  { immediate: true }
+)
+
+
+const options = ref<Array<{value: string, name: string}>>([])
+
+const fetchData = async () => {
+  try {
+    const res = await fetchtNationalityList()
+    if (res.code === 0) {
+      console.log(res.data,3333)
+      options.value = res.data
+      // // 将API返回的数据转换为select需要的格式
+      // options.value = res.data.content.map((item: any) => ({
+      //   value: item.id,
+      //   name: item.name
+      // }))
+    } else {
+      console.error('获取 I18n 失败:', res.msg)
+    }
+  } catch (error) {
+    console.error('获取 I18n 失败:', error)
+  }
+}
+
+onMounted(() => {
+  fetchData()
+})
+
+</script>
+
+<template>
+  <el-select
+    v-model="localValue"
+    :placeholder="placeholder"
+    :style="style"
+    :disabled="disabled"
+    :class="className"
+    clearable
+    filterable
+    @update:model-value="(value) => emit('update:modelValue', value)"
+  >
+    <el-option v-for="item in options" :key="item.value" :label="item.name" :value="item.value" />
+  </el-select>
+</template>

+ 1 - 1
src/views/model/global-prompt/index.vue

@@ -8,7 +8,7 @@ import LangSelector from '@/components/LangSelector.vue'
 
 const loading = ref(false)
 const input = ref<string>('')
-const lang = ref<string>('cn')
+const lang = ref<string>('en')
 
 
 

+ 4 - 3
src/views/model/model-list/index.vue

@@ -8,7 +8,7 @@ import { ElButton, ElDialog, ElEmpty, ElInput, ElMessage, ElOption, ElPagination
 // import SearchForm from './components/SearchForm.vue'
 
 import type { TModel } from '@/types/model'
-import { fetchModel } from '@/api/modules/model'
+import { fetchModel, fetchModelDetail } from '@/api/modules/model'
 import { formatDateGeneral } from '@/utils'
 
 const tableRef = ref()
@@ -59,9 +59,10 @@ function handleSizeChange(size: number) {
   fetchData()
 }
 
-function handleView (row: TModel) {
+async function handleView (row: TModel) {
   console.log(row, 'view')
-  ElMessage.info('查看功能待开发')
+  // const response = await fetchModelDetail({id: row.id})
+  // console.log(response,33344)
 }
 
 

+ 9 - 11
src/views/role-management/components/EditForm.vue

@@ -4,6 +4,7 @@ import type { FormInstance, FormRules } from 'element-plus'
 import FaImageUpload from '@/ui/components/FaImageUpload/index.vue'
 import VoiceSelector from '@/components/VoiceSelector.vue'
 import LangSelector from '@/components/LangSelector.vue'
+import NationalitySelector from '@/components/NationalitySelector.vue'
 import { saveRole } from '@/api/modules/anycallService'
 import type { TRole } from '@/api/modules/anycallService'
 // 定义表单数据类型
@@ -93,12 +94,12 @@ const formRules = ref<FormRules>({
   name: [
     { required: true, message: '请输入名称', trigger: 'blur' },
   ],
-  prompt: [
-    { required: true, message: '请输入 prompt', trigger: 'blur' },
-  ],
-  // description: [
-  //   { required: true, message: '请输入描述', trigger: 'blur' },
+  // prompt: [
+  //   { required: true, message: '请输入 prompt', trigger: 'blur' },
   // ],
+  description: [
+    { required: true, message: '请输入描述', trigger: 'blur' },
+  ],
   // language: [
   //   { required: true, message: '请输入语言', trigger: 'blur' },
   // ],
@@ -239,15 +240,12 @@ const handleRemoveAgent = ()=> {
           </ElSpace>
         </ElFormItem> -->
         <ElFormItem label="国籍" prop="nationality">
-          <LangSelector v-model="formData.nationality" placeholder="请选择国籍"></LangSelector>
+
+          <NationalitySelector v-model="formData.nationality" placeholder="请选择国籍"></NationalitySelector>
         </ElFormItem>
 
         <ElFormItem label="语言" prop="language">
-          <ElSelect v-model="formData.language" placeholder="请选择语言">
-            <ElOption label="英语" value="en" />
-            <ElOption label="中文" value="cn" />
-            <ElOption label="日文" value="ja" />
-          </ElSelect>
+          <LangSelector v-model="formData.language" placeholder="请选择语言"></LangSelector>
         </ElFormItem>
 
         <ElFormItem label="clonedVoice" prop="clonedVoice">