| | |
| | | <a-scrollbar |
| | | style="height: calc(100vh - 320px); overflow: auto" |
| | | > |
| | | <div |
| | | style="display: flex; flex-wrap: wrap" |
| | | class="card_content" |
| | | > |
| | | <div class="card-wrap"> |
| | | <div class="card_content"> |
| | | <div class="card-wrap content_top"> |
| | | <div class="card_wrap_box"> |
| | | <div class="card_wrap_box_img"> |
| | | <img |
| | |
| | | </a-card> |
| | | <div class="arco-btn-group"> |
| | | <a-space class="btn-group"> |
| | | <div class="create_time"> |
| | | 创建时间: |
| | | <span> {{ item.create_date }} </span> |
| | | </div> |
| | | |
| | | <!-- <editModel></editModel> --> |
| | | <a-button @click="handleDeleteModel(item, 1)"> |
| | | 删除 |
| | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div |
| | | class="card-wrap" |
| | | v-for="(list, index) of item.llm" |
| | | :key="index" |
| | | > |
| | | <div class="card_wrap_box"> |
| | | <div class="card_wrap_box_img"> |
| | | <img |
| | | :style="{ |
| | | width: '100%', |
| | | }" |
| | | alt="暂无图片" |
| | | :src="list.logo ? httpUrl + list.logo : pdfImg" |
| | | /> |
| | | <!-- src="https://p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/a20012a2d4d5b9db43dfc6a01fe508c0.png~tplv-uwbnlip3yd-webp.webp" --> |
| | | </div> |
| | | <a-card :bordered="false" hoverable> |
| | | <div class="arco-card-body-content"> |
| | | <div class="arco-card-body-content-title"> |
| | | {{ list.name }} |
| | | </div> |
| | | <div class="arco-card-body-content-dec">{{ |
| | | list.type |
| | | }}</div> |
| | | <div class="subset_list"> |
| | | <div |
| | | class="card-wrap" |
| | | v-for="(list, index) of item.llm" |
| | | :key="index" |
| | | > |
| | | <div class="card_wrap_box"> |
| | | <div class="card_wrap_box_img"> |
| | | <img |
| | | :style="{ |
| | | width: '100%', |
| | | }" |
| | | alt="暂无图片" |
| | | :src="list.logo ? httpUrl + list.logo : pdfImg" |
| | | /> |
| | | </div> |
| | | </a-card> |
| | | <div class="arco-btn-group"> |
| | | <a-space class="btn-group"> |
| | | <a-button @click="handleDeleteModel(list)"> |
| | | 删除 |
| | | </a-button> |
| | | <a-button |
| | | <a-card :bordered="false" hoverable> |
| | | <div class="arco-card-body-content"> |
| | | <div class="arco-card-body-content-title"> |
| | | {{ list.name }} |
| | | </div> |
| | | <div class="arco-card-body-content-dec">{{ |
| | | list.type |
| | | }}</div> |
| | | </div> |
| | | </a-card> |
| | | <div class="arco-btn-group"> |
| | | <a-space class="btn-group"> |
| | | <div class="create_time_list"> |
| | | 创建时间: |
| | | <span> {{ list.create_date }} </span> |
| | | </div> |
| | | <a-button @click="handleDeleteModel(list)"> |
| | | 删除 |
| | | </a-button> |
| | | <!-- <a-button |
| | | type="primary" |
| | | @click="handleEditModel(list)" |
| | | > |
| | | 编辑 |
| | | </a-button> |
| | | </a-button> --> |
| | | |
| | | <!-- <editModel></editModel> --> |
| | | </a-space> |
| | | <!-- <editModel></editModel> --> |
| | | </a-space> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | /> |
| | | </div> --> |
| | | <div> |
| | | <a-button type="primary" @click="handleAddModel"> |
| | | <a-button |
| | | type="primary" |
| | | @click="handleAddModel" |
| | | :disabled="addBtn" |
| | | > |
| | | <template #icon> |
| | | <icon-plus /> |
| | | </template> |
| | |
| | | modelmyLlms, |
| | | deleteLlm, |
| | | deleteLlmFactory, |
| | | getFactoryDetail, |
| | | } from '@/api/model'; |
| | | import { Modal, Message } from '@arco-design/web-vue'; |
| | | import { userModelState } from '@/store'; |
| | |
| | | |
| | | const modelStore = userModelState(); |
| | | let count = 5; |
| | | const addBtn = ref(false); |
| | | const activeKey = ref(1); |
| | | const data = ref([ |
| | | { |
| | |
| | | |
| | | const modalList = ref({}); |
| | | const tabKey = ref('key'); |
| | | const changeTabs = (val) => { |
| | | const changeTabs = async (val) => { |
| | | tabKey.value = val; |
| | | await getFactory(); |
| | | }; |
| | | |
| | | const httpUrl = modelStore.hrefUrl; |
| | |
| | | }; |
| | | //编辑模型子类 |
| | | const handleEditModel = (val, type) => { |
| | | console.log(val, 6766); |
| | | if (type == 1) { |
| | | tabShow.value = true; |
| | | editList.value = val; |
| | |
| | | |
| | | //删除模型 |
| | | const handleDeleteModel = (val, type) => { |
| | | const factory = tabKey.value; |
| | | if (type == 1) { |
| | | handleDelete(val); |
| | | } else { |
| | |
| | | okText: '确定', |
| | | cancelText: '取消', |
| | | onOk: async () => { |
| | | const factory = tabKey.value; |
| | | const res = await deleteLlm({ |
| | | llm_factory: tabKey.value, |
| | | llm_name: val.name, |
| | |
| | | |
| | | //父级模型 |
| | | const handleDelete = async (key: any) => { |
| | | console.log(tabData.value[key]); |
| | | if (tabData.value[key].llm.length > 0) { |
| | | if (tabData.value[key] && tabData.value[key].llm.length > 0) { |
| | | Message.error('请先删除子模型'); |
| | | return; |
| | | } |
| | | if (key !== 'key') { |
| | | const res = await deleteLlmFactory(key); |
| | | if ((res as any).code == 200) { |
| | | Reflect.deleteProperty(tabData.value, key); |
| | | queryModel(); |
| | | } |
| | | |
| | | const res = await deleteLlmFactory(tabKey.value); |
| | | if ((res as any).code == 200) { |
| | | // Reflect.deleteProperty(tabData.value, tabKey.value); |
| | | queryModel(); |
| | | } |
| | | }; |
| | | |
| | |
| | | modalList.value = res.data; |
| | | loading.value = true; |
| | | tabData.value = Object.assign({}, tabData.value, res.data); |
| | | tabData.value = filterObject(tabData.value, 1); |
| | | |
| | | tabKey.value = Object.keys(tabData.value)[0]; |
| | | await getFactory(); |
| | | }; |
| | | queryModel(); |
| | | //返回满足条件的对象 |
| | | const filterObject = (obj, threshold) => { |
| | | return Object.keys(obj) |
| | | .filter((key) => obj[key] > threshold) |
| | | .filter((key) => obj[key].added == 1) |
| | | .reduce((result, key) => { |
| | | result[key] = obj[key]; |
| | | return result; |
| | |
| | | const refreshParentMethod = () => { |
| | | queryModel(); |
| | | // 这里执行需要的操作 |
| | | }; |
| | | |
| | | const getFactory = async () => { |
| | | const { data } = await getFactoryDetail({ |
| | | factory_name: tabKey.value, |
| | | }); |
| | | |
| | | if (data.set_type == 2) { |
| | | addBtn.value = true; |
| | | } else { |
| | | addBtn.value = false; |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | |
| | | font-weight: 400; |
| | | } |
| | | } |
| | | .content_top { |
| | | border-bottom: 1px solid #f0f0f0 !important; |
| | | } |
| | | .card_content { |
| | | .card_wrap_box_img { |
| | | // min-height: 200px; |
| | |
| | | object-fit: cover; /* 不会变形,但可能裁剪图片 */ |
| | | } |
| | | } |
| | | .subset_list { |
| | | display: flex; |
| | | flex-direction: row; |
| | | flex-wrap: wrap; |
| | | } |
| | | .card_wrap_box { |
| | | // position: relative; |
| | | .arco-btn-group { |
| | | position: absolute; |
| | | right: 10px; |
| | | top: 87%; |
| | | .create_time { |
| | | text-align: left; |
| | | width: 155px; |
| | | } |
| | | .create_time_list { |
| | | text-align: left; |
| | | width: 223px; |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | transform: translateY(-4px); |
| | | // box-shadow: 4px 4px 10px rgba(0, 0, 0, 0.1); |
| | | } |
| | | |
| | | :deep(.arco-card) { |
| | | height: 100%; |
| | | border-radius: 4px; |