From e295922209fb87c6dcd68ea1560fd16c3e6d808c Mon Sep 17 00:00:00 2001
From: dongyukun <1208714201@qq.com>
Date: 星期五, 27 六月 2025 09:36:51 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/feature/ai'

---
 src/views/ai/model/template/templateForm.vue |   86 ++++++++++++++++++++++++++++++++++++------
 1 files changed, 73 insertions(+), 13 deletions(-)

diff --git a/src/views/ai/model/template/templateForm.vue b/src/views/ai/model/template/templateForm.vue
index 5262d4c..da11743 100644
--- a/src/views/ai/model/template/templateForm.vue
+++ b/src/views/ai/model/template/templateForm.vue
@@ -11,12 +11,12 @@
       <el-row>
         <el-col :span="12">
           <el-form-item label="问题编号" prop="questionCode">
-            <el-input v-model="formData.questionCode" placeholder="请输入问题编号" />
+            <el-input v-model="formData.questionCode" placeholder="请输入问题编号"/>
           </el-form-item>
         </el-col>
         <el-col :span="12">
           <el-form-item label="问题名称" prop="questionName">
-            <el-input v-model="formData.questionName" placeholder="请输入问题名称" />
+            <el-input v-model="formData.questionName" placeholder="请输入问题名称"/>
           </el-form-item>
         </el-col>
       </el-row>
@@ -26,13 +26,51 @@
             <el-input v-model="formData.dataLength" placeholder="请输入输入个数"/>
           </el-form-item>
         </el-col>
+        <el-col :span="12">
+          <el-form-item label="模型名称" prop="modelId">
+            <el-select v-model="formData.modelId"
+                       clearable
+                       filterable
+                       :fit-input-width="false" placeholder="请选择模型">
+              <el-option
+                v-for="item in aiModelList"
+                :key="item.id"
+                :label="item.name"
+                :value="item.id"
+              />
+            </el-select>
+          </el-form-item>
+        </el-col>
       </el-row>
       <el-row>
         <el-col :span="12">
+          <el-form-item label="是否启用" prop="isEnable">
+            <el-select
+              v-model="formData.isEnable"
+              clearable
+              placeholder="请选择是否启用"
+            >
+              <el-option
+                v-for="dict in getIntDictOptions(DICT_TYPE.COM_IS_INT)"
+                :key="dict.value"
+                :label="dict.label"
+                :value="dict.value"
+              />
+            </el-select>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="备注" prop="remark">
+            <el-input v-model="formData.remark" placeholder="请输入备注"/>
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-row>
+        <el-col :span="20">
           <el-form-item label="问题内容" prop="questionContent">
             <el-input
               type="textarea"
-              :autosize="{ minRows: 2}"
+              :autosize="{ minRows: 2 , maxRows:6}"
               placeholder="请输入问题内容"
               v-model="formData.questionContent"/>
           </el-form-item>
@@ -105,14 +143,17 @@
 </template>
 
 <script lang="ts" setup>
-  import { DICT_TYPE, getStrDictOptions } from '@/utils/dict'
+  import {DICT_TYPE, getIntDictOptions} from '@/utils/dict'
   import * as AiQuestionTemplateApi from '@/api/ai/questiontemplate'
-  import { CommonStatusEnum } from '@/utils/constants'
-  import { ElMessage } from 'element-plus'
+  import {CommonStatusEnum} from '@/utils/constants'
+  import {ElMessage} from 'element-plus'
+  import * as AiModelApi from "@/api/ai/model/model";
+  import {AiModelTypeEnum} from "@/views/ai/utils/constants";
 
-  defineOptions({ name: 'AiTemplateForm' })
+  const aiModelList = ref([] as AiModelApi.ModelVO[])
+  defineOptions({name: 'AiTemplateForm'})
 
-  const { t } = useI18n()
+  const {t} = useI18n()
   const message = useMessage()
   const dialogVisible = ref(false)
   const dialogTitle = ref('')
@@ -120,10 +161,12 @@
   const formType = ref('')
   const formData = ref({
     id: undefined,
+    modelId: undefined,
     questionCode: undefined,
     questionName: undefined,
     dataLength: undefined,
     questionContent: undefined,
+    isEnable: 1,
     settingList: [{
       settingKey: '',
       settingName: '',
@@ -131,10 +174,11 @@
     }]
   })
   const formRules = reactive({
-    questionCode: [{ required: true, message: '问题编号不能为空', trigger: 'blur' }],
-    questionName: [{ required: true, message: '问题名称不能为空', trigger: 'blur' }],
-    dataLength: [{ required: true, message: '输入个数不能为空', trigger: 'blur' }],
-    questionContent: [{ required: true, message: '问题内容不能为空', trigger: 'blur' }]
+    modelId: [{required: true, message: '模型名称不能为空', trigger: 'blur'}],
+    questionCode: [{required: true, message: '问题编号不能为空', trigger: 'blur'}],
+    questionName: [{required: true, message: '问题名称不能为空', trigger: 'blur'}],
+    dataLength: [{required: true, message: '输入个数不能为空', trigger: 'blur'}],
+    questionContent: [{required: true, message: '问题内容不能为空', trigger: 'blur'}]
   })
   const formRef = ref()
 
@@ -159,16 +203,23 @@
     dialogTitle.value = t('action.' + type)
     formType.value = type
     resetForm()
+    // 加载调度模型列表
+    aiModelList.value = await AiModelApi.ModelApi.getModelSimpleList(AiModelTypeEnum.CHAT + "," + AiModelTypeEnum.LLM)
     if (id) {
       formLoading.value = true
       try {
         formData.value = await AiQuestionTemplateApi.QuestionTemplateApi.getQuestionTemplate(id)
+        aiModelList.value.forEach(item => {
+          if (item.id == formData.value.modelId) {
+            formData.value.modelId = item.name;
+          }
+        });
       } finally {
         formLoading.value = false
       }
     }
   }
-  defineExpose({ open })
+  defineExpose({open})
 
   const emit = defineEmits(['success'])
   const submitForm = async () => {
@@ -179,6 +230,13 @@
     formLoading.value = true
     try {
       const data = formData.value
+      if (data.settingList == [{
+        settingKey: '',
+        settingName: '',
+        settingValue: '',
+      }]) {
+        data.settingList = null
+      }
       if (formType.value === 'create') {
         await AiQuestionTemplateApi.QuestionTemplateApi.createQuestionTemplate(data)
         message.success(t('common.createSuccess'))
@@ -196,10 +254,12 @@
   const resetForm = () => {
     formData.value = {
       id: undefined,
+      modelId: undefined,
       questionCode: undefined,
       questionName: undefined,
       dataLength: undefined,
       questionContent: undefined,
+      isEnable: 1,
       settingList: [{
         settingKey: '',
         settingName: '',

--
Gitblit v1.9.3