From 7067723946f837d0468814c28fe4971b7c331d11 Mon Sep 17 00:00:00 2001
From: liudong <liudong>
Date: 星期六, 24 八月 2024 20:12:28 +0800
Subject: [PATCH] 知识库列表修改

---
 src/views/dmx/model/components/addPageModel.vue |  233 ++++++++++++++++++++++++++++------------------------------
 1 files changed, 113 insertions(+), 120 deletions(-)

diff --git a/src/views/dmx/model/components/addPageModel.vue b/src/views/dmx/model/components/addPageModel.vue
index e0b0771..9003dcb 100644
--- a/src/views/dmx/model/components/addPageModel.vue
+++ b/src/views/dmx/model/components/addPageModel.vue
@@ -17,54 +17,57 @@
       :style="{ width: '90%', margin: '0 auto' }"
       layout="vertical"
     >
-      <div v-if="isType !== 1">
-        <a-form-item field="model_type" label="妯″瀷绫诲瀷">
-          <a-select v-model="form.model_type" placeholder="璇烽�夋嫨">
-            <a-option value="chat">chat</a-option>
-            <a-option value="embedding">embedding</a-option>
-          </a-select>
-        </a-form-item>
-        <a-form-item field="llm_name" label="妯″瀷鍚嶇О">
-          <a-input v-model="form.llm_name" placeholder="璇疯緭鍏ユā鍨嬪悕绉�" />
-        </a-form-item>
-
-        <!-- <a-form-item field="volc_ak" label="鐏北 ACCESS_KEY">
-          <a-input v-model="form.volc_ak" placeholder="璇疯緭鍏ョ伀灞� ACCESS_KEY" />
-          <a-button
-            type="primary"
-            @click="handleClick"
-            style="margin-left: 10px"
-          >
-            <template #icon>
-              <icon-plus />
-            </template>
-          </a-button>
-        </a-form-item>
-        <a-form-item field="volc_sk" label="鐏北 SECRET_KEY">
-          <a-input v-model="form.volc_sk" placeholder="璇疯緭鍏ョ伀灞� SECRET_KEY" />
-        </a-form-item> -->
-        <a-form-item field="api_base" label="鍩虹URL">
-          <a-input v-model="form.api_base" placeholder="璇疯緭鍏ュ熀纭�URL" />
-        </a-form-item>
-
-        <a-form-item
+      <div>
+        <div v-for="(item, index) in form.formData.params" :key="index">
+          <div v-if="item.value_type === 'select'">
+            <a-form-item
+              :field="item.key"
+              :label="item.name"
+              :required="item.required"
+            >
+              <a-select v-model="form[item.key]" placeholder="璇烽�夋嫨">
+                <a-option
+                  v-for="(list, v) in item.options"
+                  :value="v"
+                  :label="v"
+                ></a-option>
+              </a-select>
+            </a-form-item>
+          </div>
+          <div v-else-if="item.value_type === 'input'">
+            <a-form-item
+              :field="item.key"
+              :label="item.name"
+              :required="item.required"
+            >
+              <a-input v-model="form[item.key]" placeholder="璇疯緭鍏�" />
+            </a-form-item>
+          </div>
+        </div>
+        <!-- <a-form-item
           field="raptor"
           label="鏄惁鏀寔 Vision"
           v-if="form.model_type === 'chat'"
         >
           <a-switch v-model="form.raptor" />
-        </a-form-item>
+        </a-form-item> -->
         <a-form-item field="logo" label="妯″瀷鍥剧墖">
-          <a-space direction="vertical" :style="{ width: '100%' }">
+          <a-space
+            direction="vertical"
+            v-model="form.logo"
+            :style="{ width: '100%' }"
+          >
             <Upload
               :action="uploadAction"
               :limit="1"
+              :url="form.urlS"
+              @handleRemove="deleteRemove"
               @update:fileList="updateFileList"
               @success="handleSuccess"
             ></Upload>
           </a-space>
         </a-form-item>
-        <a-form-item field="all_params" label="澧炲姞鍏跺畠鍙傛暟閰嶇疆">
+        <!-- <a-form-item field="all_params" label="澧炲姞鍏跺畠鍙傛暟閰嶇疆">
           <a-button
             type="primary"
             @click="handleAddClick"
@@ -74,7 +77,7 @@
               <icon-plus />
             </template>
           </a-button>
-        </a-form-item>
+        </a-form-item> -->
 
         <a-form-item v-for="(item, index) in form.addFomList" :key="index">
           <div class="addInput">
@@ -98,25 +101,6 @@
           </div>
         </a-form-item>
       </div>
-      <div v-else>
-        <a-form-item field="name" label="API-Key">
-          <a-input v-model="form.name" placeholder="API-Key" />
-        </a-form-item>
-        <a-form-item field="describe" label="Base-Url">
-          <a-input v-model="form.name" placeholder="Base-Url" />
-        </a-form-item>
-
-        <a-form-item field="section" label="妯″瀷鍥剧墖">
-          <a-space direction="vertical" :style="{ width: '100%' }">
-            <Upload
-              :action="uploadAction"
-              :limit="1"
-              @update:fileList="updateFileList"
-              @success="handleSuccess"
-            ></Upload>
-          </a-space>
-        </a-form-item>
-      </div>
 
       <a-form-item>
         <div style="width: 100%; text-align: right">
@@ -131,11 +115,14 @@
 </template>
 
 <script lang="ts" setup>
-  import { reactive, ref, computed, watch } from 'vue';
-  import { addLlm, getLlmDetail } from '@/api/model';
+  import { reactive, ref, computed, watch, watchEffect, onMounted } from 'vue';
+  import { addLlm, getLlmDetail, editLlm, getFactoryDetail } from '@/api/model';
   import { Modal, Message } from '@arco-design/web-vue';
   import message from '@arco-design/web-vue/es/message';
   import { resolveUnref } from '@vueuse/core';
+  import { userModelState } from '@/store';
+
+  const modelStore = userModelState();
 
   const addPageModelVisible = defineModel('show');
   const loading = ref(false);
@@ -161,107 +148,94 @@
   const isType = computed(() => props.type);
   const editList = computed(() => props.editList);
 
-  watch(
-    () => editList.value.name,
-    (newValue) => {
-      getDetail();
-    }
-  );
-
   const form = reactive({
     size: 'medium',
     name: '',
+    formData: { logo: '' },
     llm_factory: '',
-    model_type: '',
-    province: 'haidian',
-    options: [],
     llm_name: '',
     api_base: '',
     volc_ak: '',
     volc_sk: '',
     logo: '',
     radio: 'radio one',
+    urlS: '',
     slider: 5,
     score: 5,
     switch: false,
-    multiSelect: ['section one'],
-    treeSelect: '',
     raptor: false,
-    addFomList: [],
+    addFomList: <any[]>[],
   });
-  const form_ref = ref(null);
+
+  const form_ref = ref();
 
   const rules = {
-    model_type: [
+    logo: [
       {
         required: true,
-        message: '璇烽�夋嫨妯″瀷绫诲瀷',
-      },
-    ],
-    llm_name: [
-      {
-        required: true,
-        message: '鍚嶇О涓嶅厑璁镐负绌�',
-      },
-    ],
-    volc_sk: [
-      {
-        required: true,
-        message: '璇疯緭鍏olc_sk',
-      },
-    ],
-    volc_ak: [
-      {
-        required: true,
-        message: '璇疯緭鍏olc_ak',
-      },
-    ],
-    api_base: [
-      {
-        required: true,
-        message: '璇疯緭鍏pi_base',
+        message: '妯″瀷鍥剧墖涓嶈兘涓虹┖',
       },
     ],
   };
 
   const uploadAction = '/api/v1/llm/upload'; // 鏇挎崲涓轰綘鐨勪笂浼燗PI
   const fileList = ref([]);
-  const imageUrls = ref([]);
+  const imageUrls = ref<any[]>([]);
+  const uploadUrl = ref([]);
+  const httpUrl = modelStore.hrefUrl;
 
   const updateFileList = (newFileList) => {
     fileList.value = newFileList;
-    console.log(newFileList, 88);
   };
 
   const handleSuccess = (urls) => {
-    imageUrls.value = urls; // 鎷垮埌涓婁紶鐨勫浘鐗囧湴鍧�
+    uploadUrl.value = urls;
+    form.logo = urls[0];
+
+    const urlsArr = urls.map((url) => {
+      return httpUrl + url;
+    });
+    imageUrls.value = urlsArr; // 鎷垮埌涓婁紶鐨勫浘鐗囧湴鍧�
   };
+  const deleteRemove = () => {
+    form.logo = '';
+    uploadUrl.value = [];
+    imageUrls.value = [];
+  };
+
   const emit = defineEmits(['refresh-parent']);
   const handleSubmit = ({ values, errors }) => {
     const all_params = form.addFomList.map((item) => {
-      console.log(item, 8888);
       return item.name + ':' + item.value;
     });
+    console.log(form, 9999);
     form_ref.value
       ?.validate()
       .then(async (res) => {
         if (!res) {
-          const data = await addLlm({
-            llm_factory: editList.value.llm_factory,
-            llm_name: form.llm_name,
-            model_type: form.model_type,
-            volc_ak: form.volc_ak,
-            volc_sk: form.volc_sk,
-            api_base: form.api_base,
-            raptor: form.raptor,
-            all_params: all_params,
-            logo: imageUrls.value[0],
-          });
-          if ((data as any).retmsg == 'success') {
-            message.success('娣诲姞鎴愬姛');
-            emit('refresh-parent');
+          form.formData.logo = uploadUrl.value[0] || '';
+          form.llm_factory = editList.value.llm_factory;
+          delete form.formData;
+          if (props.title == '缂栬緫') {
+            const data = await editLlm(form);
+
+            if ((data as any).code == 200) {
+              message.success('娣诲姞鎴愬姛');
+              addPageModelVisible.value = false;
+              emit('refresh-parent', editList.value.llm_factory);
+            } else {
+              message.error('娣诲姞澶辫触');
+            }
           } else {
-            message.error('娣诲姞澶辫触');
+            const data = await addLlm(form);
+
+            if ((data as any).code == 200) {
+              message.success('娣诲姞鎴愬姛');
+              addPageModelVisible.value = false;
+              emit('refresh-parent', editList.value.llm_factory);
+            } else {
+              message.error('娣诲姞澶辫触');
+            }
           }
         }
       })
@@ -330,18 +304,37 @@
       editList.value.llm_factory,
       editList.value.name
     );
-    console.log(data.data, 8888);
+
     form.llm_name = data.data.llm_name;
     form.model_type = data.data.model_type;
     form.volc_ak = data.data.volc_ak;
     form.volc_sk = data.data.volc_sk;
     form.api_base = data.data.api_base;
     form.raptor = data.data.raptor;
-    form.addFomList = data.data.all_params.map((item) => {
-      return { name: item.split(':')[0], value: item.split(':')[1] };
-    });
-    imageUrls.value = data.data.logo;
+    form.urlS = data.data.logo;
+    if (JSON.parse(data.data.all_params).length > 0) {
+      form.addFomList = JSON.parse(data.data.all_params).map((item) => {
+        return { name: item.split(':')[0], value: item.split(':')[1] };
+      });
+    }
+
+    imageUrls.value.push(httpUrl + data.data.logo);
   };
+  const getFactory = async () => {
+    const { data } = await getFactoryDetail({
+      factory_name: editList.value.llm_factory,
+    });
+    form.formData = data;
+  };
+  onMounted(() => {
+    getFactory();
+  });
+
+  watchEffect(() => {
+    if (props.editList.name) {
+      getDetail();
+    }
+  });
 </script>
 <style scoped lang="less">
   .addInput {

--
Gitblit v1.8.0