zhangxiao
2024-08-15 89781e8f9bc49ccbf9c3ede426f9237dfa2faa0c
src/views/dmx/model/components/addPageModel.vue
@@ -17,11 +17,17 @@
      :style="{ width: '90%', margin: '0 auto' }"
      layout="vertical"
    >
      <div v-if="isType !== 1">
      <div>
        <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-option
              v-for="item of form.options"
              :value="item.value"
              :label="item.label"
            ></a-option>
            <!-- <a-option value="embedding">embedding</a-option>
            <a-option value="rerank">rerank</a-option>
            <a-option value="image2text">image2text</a-option> -->
          </a-select>
        </a-form-item>
        <a-form-item field="llm_name" label="模型名称">
@@ -46,19 +52,30 @@
        <a-form-item field="api_base" label="基础URL">
          <a-input v-model="form.api_base" placeholder="请输入基础URL" />
        </a-form-item>
        <!-- <a-form-item
        <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="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>
@@ -98,7 +115,7 @@
          </div>
        </a-form-item>
      </div>
      <div v-else>
      <!-- <div v-else>
        <a-form-item field="name" label="API-Key">
          <a-input v-model="form.name" placeholder="API-Key" />
        </a-form-item>
@@ -112,12 +129,13 @@
              :action="uploadAction"
              :limit="1"
              :url="form.urlS"
              @handleRemove="deleteRemove"
              @update:fileList="updateFileList"
              @success="handleSuccess"
            ></Upload>
          </a-space>
        </a-form-item>
      </div>
      </div> -->
      <a-form-item>
        <div style="width: 100%; text-align: right">
@@ -137,6 +155,9 @@
  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);
@@ -168,7 +189,12 @@
    llm_factory: '',
    model_type: '',
    province: 'haidian',
    options: [],
    options: [
      { label: 'chat', value: 'chat' },
      { label: 'embedding', value: 'embedding' },
      { label: 'rerank', value: 'rerank' },
      { label: 'image2text', value: 'image2text' },
    ],
    llm_name: '',
    api_base: '',
    volc_ak: '',
@@ -182,9 +208,9 @@
    multiSelect: ['section one'],
    treeSelect: '',
    raptor: false,
    addFomList: [],
    addFomList: <any[]>[],
  });
  const form_ref = ref(null);
  const form_ref = ref();
  const rules = {
    model_type: [
@@ -217,24 +243,42 @@
        message: '请输入api_base',
      },
    ],
    logo: [
      {
        required: true,
        message: '模型图片不能为空',
      },
    ],
  };
  const uploadAction = '/api/v1/llm/upload'; // 替换为你的上传API
  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;
    });
    form_ref.value
@@ -242,6 +286,7 @@
      .then(async (res) => {
        if (!res) {
          if (props.title == '编辑') {
            console.log(imageUrls.value, 999);
            const data = await editLlm({
              llm_factory: editList.value.llm_factory,
              llm_name: form.llm_name,
@@ -250,7 +295,7 @@
              volc_sk: form.volc_sk,
              api_base: form.api_base,
              all_params: all_params,
              logo: imageUrls.value[0],
              logo: uploadUrl.value[0] || '',
            });
            if ((data as any).code == 200) {
@@ -269,7 +314,7 @@
              volc_sk: form.volc_sk,
              api_base: form.api_base,
              all_params: all_params,
              logo: imageUrls.value[0],
              logo: uploadUrl.value[0] || '',
            });
            if ((data as any).code == 200) {
@@ -361,7 +406,7 @@
      });
    }
    imageUrls.value = data.data.logo;
    imageUrls.value.push(httpUrl + data.data.logo);
  };
  watchEffect(() => {