From 3313467ddc324d3e19610142756423c8355dc82d Mon Sep 17 00:00:00 2001
From: zhangxiao <898441624@qq.com>
Date: 星期五, 30 八月 2024 15:13:58 +0800
Subject: [PATCH] fix: 更新聊天展示
---
src/views/dmx/model/components/addPageModel.vue | 228 ++++++++++++++++++++++----------------------------------
1 files changed, 89 insertions(+), 139 deletions(-)
diff --git a/src/views/dmx/model/components/addPageModel.vue b/src/views/dmx/model/components/addPageModel.vue
index 1b0b6a9..9003dcb 100644
--- a/src/views/dmx/model/components/addPageModel.vue
+++ b/src/views/dmx/model/components/addPageModel.vue
@@ -17,53 +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"
@@ -73,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">
@@ -97,26 +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"
- :url="form.urlS"
- @update:fileList="updateFileList"
- @success="handleSuccess"
- ></Upload>
- </a-space>
- </a-form-item>
- </div>
<a-form-item>
<div style="width: 100%; text-align: right">
@@ -132,10 +116,13 @@
<script lang="ts" setup>
import { reactive, ref, computed, watch, watchEffect, onMounted } from 'vue';
- import { addLlm, getLlmDetail, editLlm } from '@/api/model';
+ 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);
@@ -160,29 +147,12 @@
const isType = computed(() => props.type);
const editList = computed(() => props.editList);
- watchEffect(() => {
- if (props.editList) {
- console.log(props.editList, 9999);
- // form.name = props.editList.name;
- // form.llm_factory = props.editList.llm_factory;
- // form.model_type = props.editList.model_type;
- // form.province = props.editList.province;
- // form.options = props.editList.options;
- // form.llm_name = props.editList.llm_name;
- // form.api_base = props.editList.api_base;
- // form.volc_ak = props.editList.volc_ak;
- // form.volc_sk = props.editList.volc_sk;
- // form.logo = props.editList.logo;
- }
- });
const form = reactive({
size: 'medium',
name: '',
+ formData: { logo: '' },
llm_factory: '',
- model_type: '',
- province: 'haidian',
- options: [],
llm_name: '',
api_base: '',
volc_ak: '',
@@ -193,105 +163,76 @@
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) {
+ form.formData.logo = uploadUrl.value[0] || '';
+ form.llm_factory = editList.value.llm_factory;
+ delete form.formData;
if (props.title == '缂栬緫') {
- const data = await editLlm({
- 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],
- });
+ const data = await editLlm(form);
if ((data as any).code == 200) {
message.success('娣诲姞鎴愬姛');
addPageModelVisible.value = false;
- emit('refresh-parent');
+ emit('refresh-parent', editList.value.llm_factory);
} else {
message.error('娣诲姞澶辫触');
}
} else {
- 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],
- });
+ const data = await addLlm(form);
if ((data as any).code == 200) {
message.success('娣诲姞鎴愬姛');
addPageModelVisible.value = false;
- emit('refresh-parent');
+ emit('refresh-parent', editList.value.llm_factory);
} else {
message.error('娣诲姞澶辫触');
}
@@ -356,12 +297,6 @@
const onProgress = (currentFile) => {
file.value = currentFile;
};
- // onMounted(() => {
- // if (editList.value) {
- // getDetail();
- // form.urlS = editList.value.logo;
- // }
- // });
//鑾峰彇璇︽儏
const getDetail = async () => {
@@ -376,15 +311,30 @@
form.volc_sk = data.data.volc_sk;
form.api_base = data.data.api_base;
form.raptor = data.data.raptor;
- // form.urlS = 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 = data.data.logo;
+ 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