| | |
| | | :limit="limit" |
| | | :action="action" |
| | | @change="handleChange" |
| | | @before-remove="beforeRemove" |
| | | image-preview |
| | | /> |
| | | </template> |
| | |
| | | url: String, //回显的文件地址 |
| | | }); |
| | | |
| | | const emit = defineEmits(['update:fileList', 'success']); |
| | | const emit = defineEmits(['update:fileList', 'success', 'handleRemove']); |
| | | const urls = computed(() => props.url); |
| | | const fileList = ref([]); |
| | | |
| | |
| | | }); |
| | | |
| | | // console.log(urls.value, 8988); |
| | | const beforeRemove = (file) => { |
| | | emit('handleRemove'); |
| | | fileList.value = []; |
| | | }; |
| | | |
| | | const handleChange = (fileList) => { |
| | | emit('update:fileList', fileList); |
| | |
| | | <a-form-item field="name" label="API-Key"> |
| | | <a-input v-model="form.name" placeholder="API-Key" /> |
| | | </a-form-item> |
| | | <!-- <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> |
| | |
| | | :action="uploadAction" |
| | | :limit="1" |
| | | :url="form.urlS" |
| | | @handleRemove="deleteRemove" |
| | | @update:fileList="updateFileList" |
| | | @success="handleSuccess" |
| | | ></Upload> |
| | |
| | | message: '请输入api_base', |
| | | }, |
| | | ], |
| | | logo: [ |
| | | { |
| | | required: true, |
| | | message: '模型图片不能为空', |
| | | }, |
| | | ], |
| | | }; |
| | | |
| | | const uploadAction = '/api/v1/llm/upload'; // 替换为你的上传API |
| | |
| | | |
| | | const handleSuccess = (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) => { |
| | |
| | | <div class="arco-btn-group"> |
| | | <a-space class="btn-group"> |
| | | <!-- <editModel></editModel> --> |
| | | <a-button @click="handleDeleteModel(item, 1)"> |
| | | 删除 |
| | | </a-button> |
| | | <a-button |
| | | type="primary" |
| | | @click="handleEditModel(item, 1)" |
| | |
| | | key: { |
| | | tags: '添加key', |
| | | id: 1, |
| | | live: 1, |
| | | }, |
| | | }); |
| | | |
| | |
| | | }; |
| | | |
| | | //删除模型 |
| | | const handleDeleteModel = (val) => { |
| | | Modal.confirm({ |
| | | title: '警告', |
| | | content: '确认删除吗', |
| | | okText: '确定', |
| | | cancelText: '取消', |
| | | onOk: async () => { |
| | | const factory = tabKey.value; |
| | | const res = await deleteLlm({ |
| | | llm_factory: tabKey.value, |
| | | llm_name: val.name, |
| | | }); |
| | | const handleDeleteModel = (val, type) => { |
| | | if (type == 1) { |
| | | handleDelete(val); |
| | | } else { |
| | | Modal.confirm({ |
| | | title: '警告', |
| | | content: '确认删除吗', |
| | | okText: '确定', |
| | | cancelText: '取消', |
| | | onOk: async () => { |
| | | const factory = tabKey.value; |
| | | const res = await deleteLlm({ |
| | | llm_factory: tabKey.value, |
| | | llm_name: val.name, |
| | | }); |
| | | |
| | | if ((res as any).code == 0) { |
| | | queryModel(); |
| | | tabKey.value = factory; |
| | | } else { |
| | | } |
| | | }, |
| | | onCancel: () => {}, |
| | | }); |
| | | if ((res as any).code == 0) { |
| | | queryModel(); |
| | | tabKey.value = factory; |
| | | } else { |
| | | } |
| | | }, |
| | | onCancel: () => {}, |
| | | }); |
| | | } |
| | | }; |
| | | |
| | | //父级模型 |
| | |
| | | tabData.value = Object.assign({}, tabData.value, res.data); |
| | | }; |
| | | queryModel(); |
| | | //返回满足条件的对象 |
| | | const filterObject = (obj, threshold) => { |
| | | return Object.keys(obj) |
| | | .filter((key) => obj[key] > threshold) |
| | | .reduce((result, key) => { |
| | | result[key] = obj[key]; |
| | | return result; |
| | | }, {}); |
| | | }; |
| | | |
| | | const refreshParentMethod = () => { |
| | | queryModel(); |