From 5efb195a3e0c956c4b254408a8868368135eb773 Mon Sep 17 00:00:00 2001 From: zhangxiao <898441624@qq.com> Date: 星期五, 16 八月 2024 14:11:52 +0800 Subject: [PATCH] fix: 模型修改 --- src/router/routes/modules/session.ts | 2 src/api/model.ts | 7 + src/views/dmx/model/index.vue | 118 ++++++++++++++--------- src/views/dmx/agent/components/editAgent.vue | 129 ++++++++++++++++--------- yarn.lock | 2 src/views/dmx/model/components/addTableName.vue | 9 + src/components/menu/index.vue | 7 + src/views/dmx/model/components/addPageModel.vue | 2 src/router/routes/modules/authority.ts | 1 9 files changed, 176 insertions(+), 101 deletions(-) diff --git a/src/api/model.ts b/src/api/model.ts index a5eca7f..813d6e6 100644 --- a/src/api/model.ts +++ b/src/api/model.ts @@ -83,3 +83,10 @@ params, }); } + +// 鑾峰彇妯″瀷鍒楄〃 +export function getFactories(params) { + return axios.get('/api/v1/llm/factories', { + params, + }); +} diff --git a/src/components/menu/index.vue b/src/components/menu/index.vue index 4485255..d7db1e6 100644 --- a/src/components/menu/index.vue +++ b/src/components/menu/index.vue @@ -31,6 +31,7 @@ const goto = (item: RouteRecordRaw) => { // Open external link + if (regexUrl.test(item.path)) { openWindow(item.path); selectedKey.value = [item.name as string]; @@ -84,7 +85,8 @@ }; listenerRouteChange((newRoute) => { const { requiresAuth, activeMenu, hideInMenu } = newRoute.meta; - if (requiresAuth && (!hideInMenu || activeMenu)) { + // if (requiresAuth && (!hideInMenu || activeMenu)) {//闄ゅ幓杩欎袱涓垽鏂悗锛屽彲浠ユ甯稿睍寮�鑿滃崟 + if (requiresAuth) { const menuOpenKeys = findMenuOpenKeys( (activeMenu || newRoute.name) as string ); @@ -96,6 +98,7 @@ activeMenu || menuOpenKeys[menuOpenKeys.length - 1], ]; } + console.log(selectedKey.value, 48877); }, true); const setCollapse = (val: boolean) => { if (appStore.device === 'desktop') @@ -139,6 +142,7 @@ }; // selected-keys={selectedKey.value} + console.log(selectedKey.value, 68877); return () => ( <a-menu mode={topMenu.value ? 'horizontal' : 'vertical'} @@ -147,6 +151,7 @@ show-collapse-button={appStore.device !== 'mobile'} auto-open={false} auto-open-selected={true} + selected-keys={selectedKey.value} level-indent={34} style="height: 100%;width:100%;" onCollapse={setCollapse} diff --git a/src/router/routes/modules/authority.ts b/src/router/routes/modules/authority.ts index d848aa2..a7c28e5 100644 --- a/src/router/routes/modules/authority.ts +++ b/src/router/routes/modules/authority.ts @@ -10,6 +10,7 @@ requiresAuth: true, icon: 'icon-lock', order: 5, + activeMenu:false, }, children: [ { diff --git a/src/router/routes/modules/session.ts b/src/router/routes/modules/session.ts index 3a43192..f22e482 100644 --- a/src/router/routes/modules/session.ts +++ b/src/router/routes/modules/session.ts @@ -19,7 +19,7 @@ requiresAuth: true, hideInMenu:true, roles: ['*'], - activeMenu:'session' + // activeMenu:'session' }, component:()=>import('@/views/sessionManager/index.vue'), } diff --git a/src/views/dmx/agent/components/editAgent.vue b/src/views/dmx/agent/components/editAgent.vue index f10b761..86ea2e4 100644 --- a/src/views/dmx/agent/components/editAgent.vue +++ b/src/views/dmx/agent/components/editAgent.vue @@ -19,48 +19,87 @@ title-align="start" fullscreen > - <div class="main-container"> - <div class="main-container-lf"> - <div style="padding: 10px;font-size: 16px;background: var(--color-neutral-3);">鏅鸿兘浣撻厤缃�</div> - <div style="display: flex;width: 100%;" :style="{height:height}"> - <div style="width: 50%;height: 100%"> - <div style="padding: 10px;font-size: 12px;color: #2a2a2b;">鏅鸿兘浣撶敾鍍�</div> - <div> - <a-textarea v-model="system" placeholder="" disabled style="height: 400px;" /> + <div class="main-container"> + <div class="main-container-lf"> + <div + style=" + padding: 10px; + font-size: 16px; + background: var(--color-neutral-3); + " + >鏅鸿兘浣撻厤缃�</div + > + <div style="display: flex; width: 100%" :style="{ height: height }"> + <div style="width: 50%; height: 100%"> + <div style="padding: 10px; font-size: 12px; color: #2a2a2b" + >鏅鸿兘浣撶敾鍍�</div + > + <div> + <a-textarea + v-model="system" + placeholder="" + disabled + style="height: 400px" + /> + </div> </div> - - </div> - <div style="width: 50%;border: 1px solid var(--color-neutral-3);background: var(--color-neutral-3)"> - <a-form ref="formRef" :rules="rules" :model="form" @submit="handleSubmit" layout="vertical" > - <a-collapse :default-active-key="['1']"> - <a-collapse-item header="鍩虹淇℃伅" key="0" v-if="typeAngint == 'edit'"> - <a-input v-model="form.name" placeholder="璇疯緭鍏ユ櫤鑳戒綋鍚嶇О" style="width:200px;margin-top: 10px" /> - </a-collapse-item> - <a-collapse-item header="AI妯″瀷閰嶇疆" key="1"> - <a-form-item field="llm_id" label="妯″瀷"> - <a-space direction="vertical" size="large"> - <a-select :size="'large'" field="llm_id" v-model="form.llm_id" :style="{width:'25rem'}" placeholder="璇烽�夋嫨 ..."> - <a-optgroup - :label="index" - v-for="(item, index) in modelList" - :key="index" + <div + style=" + width: 50%; + border: 1px solid var(--color-neutral-3); + background: var(--color-neutral-3); + " + > + <a-form + ref="formRef" + :rules="rules" + :model="form" + @submit="handleSubmit" + layout="vertical" + > + <a-collapse :default-active-key="['1']"> + <a-collapse-item + header="鍩虹淇℃伅" + key="0" + v-if="typeAngint == 'edit'" + > + <a-input + v-model="form.name" + placeholder="璇疯緭鍏ユ櫤鑳戒綋鍚嶇О" + style="width: 200px; margin-top: 10px" + /> + </a-collapse-item> + <a-collapse-item header="AI妯″瀷閰嶇疆" key="1"> + <a-form-item field="llm_id" label="妯″瀷"> + <a-space direction="vertical" size="large"> + <a-select + :size="'large'" + field="llm_id" + v-model="form.llm_id" + :style="{ width: '25rem' }" + placeholder="璇烽�夋嫨 ..." > - <a-option - v-for="obj in item" - :key="obj.fid" - :disabled="!obj.available" - :value="obj.llm_id" + <a-optgroup + :label="index" + v-for="(item, index) in modelList" + :key="index" > - {{ obj.llm_name }} - </a-option> - </a-optgroup> - </a-select> - </a-space> - </a-form-item> + <a-option + v-for="obj in item" + :key="obj.fid" + :disabled="!obj.available" + :value="obj.llm_id" + > + {{ obj.llm_name }} + </a-option> + </a-optgroup> + </a-select> + </a-space> + </a-form-item> </a-collapse-item> <a-collapse-item header="寮�鍦哄紩瀵�" :key="'2'" disabled> </a-collapse-item> - <a-collapse-item header="鐭ヨ瘑搴�" key="3"> + <a-collapse-item header="鐭ヨ瘑搴�" key="3"> <a-form-item field="kb_ids" label="鐭ヨ瘑搴�"> <a-select v-model="form.kb_ids" @@ -72,7 +111,7 @@ v-for="item in tabs" :key="item.id" :value="item.id" - >{{ item.name }}</a-option + >{{ item.name }}</a-option > </a-select> </a-form-item> @@ -119,8 +158,8 @@ import useLoading from '@/hooks/loading'; import { dialogSet } from '@/api/Agent'; import { Message } from '@arco-design/web-vue'; - import EventBus from "@/utils/EventBus"; - import sessionAction from "@/views/dmx/IntelligentAgent/components/sessionAction.vue"; + import EventBus from '@/utils/EventBus'; + import sessionAction from '@/views/dmx/IntelligentAgent/components/sessionAction.vue'; const { setLoading } = useLoading(true); const props = defineProps(['typeAngint', 'formData']); const visible = ref(false); @@ -193,7 +232,7 @@ const handleSubmit = async ({ values, errors }) => { // console.log('values:', values, '\nerrors:', errors) - if(!errors){ + if (!errors) { let title = '鍒涘缓鎴愬姛'; let formNew = { ...form }; if (props.typeAngint == 'edit') { @@ -224,9 +263,9 @@ visible.value = true; nextTick(() => { Object.assign(form, data); - console.log(form,'浼犲��'); + console.log(form, '浼犲��'); system.value = form.prompt_config.system; - if(tabs.value && tabs.value.length>0){ + if (tabs.value && tabs.value.length > 0) { form.kb_ids = [tabs.value[0].id]; } }); @@ -325,8 +364,8 @@ line-height: 40px; } } - :deep(.arco-textarea-wrapper.arco-textarea-disabled){ - background: var(--color-bg-2); - color: var(--color-text-1); + :deep(.arco-textarea-wrapper.arco-textarea-disabled) { + background: var(--color-bg-2); + color: var(--color-text-1); } </style> diff --git a/src/views/dmx/model/components/addPageModel.vue b/src/views/dmx/model/components/addPageModel.vue index eda4416..54f122d 100644 --- a/src/views/dmx/model/components/addPageModel.vue +++ b/src/views/dmx/model/components/addPageModel.vue @@ -28,7 +28,7 @@ <a-select v-model="form[item.key]" placeholder="璇烽�夋嫨"> <a-option v-for="(list, v) in item.options" - :value="list" + :value="v" :label="v" ></a-option> </a-select> diff --git a/src/views/dmx/model/components/addTableName.vue b/src/views/dmx/model/components/addTableName.vue index 7ae55bd..eb7dfe5 100644 --- a/src/views/dmx/model/components/addTableName.vue +++ b/src/views/dmx/model/components/addTableName.vue @@ -27,8 +27,8 @@ > <a-option v-for="(item, index) in modalList" - :value="index" - :label="index" + :value="item.name" + :label="item.name" :disabled="item.added" ></a-option> </a-select> @@ -43,6 +43,7 @@ <a-textarea v-model="form.tags" placeholder="璇疯緭鍏ユā鍨嬫弿杩�" + :max-length="50" allow-clear /> </a-form-item> @@ -85,7 +86,7 @@ computed, } from 'vue'; import { - modelmyLlms, + getFactories, addLlmFactory, getLlmDetail, editLlmFactory, @@ -233,7 +234,7 @@ }; const modalList = ref([]); const queryModel = async () => { - const res = await modelmyLlms(); + const res = await getFactories(); modalList.value = res.data; }; queryModel(); diff --git a/src/views/dmx/model/index.vue b/src/views/dmx/model/index.vue index 6c3bde1..ef1335c 100644 --- a/src/views/dmx/model/index.vue +++ b/src/views/dmx/model/index.vue @@ -30,11 +30,8 @@ <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 @@ -60,6 +57,11 @@ </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)"> 鍒犻櫎 @@ -74,46 +76,51 @@ </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> --> - <!-- <editModel></editModel> --> - </a-space> + <!-- <editModel></editModel> --> + </a-space> + </div> </div> </div> </div> @@ -245,7 +252,6 @@ }; //缂栬緫妯″瀷瀛愮被 const handleEditModel = (val, type) => { - console.log(val, 6766); if (type == 1) { tabShow.value = true; editList.value = val; @@ -263,6 +269,7 @@ //鍒犻櫎妯″瀷 const handleDeleteModel = (val, type) => { + const factory = tabKey.value; if (type == 1) { handleDelete(val); } else { @@ -272,7 +279,6 @@ okText: '纭畾', cancelText: '鍙栨秷', onOk: async () => { - const factory = tabKey.value; const res = await deleteLlm({ llm_factory: tabKey.value, llm_name: val.name, @@ -291,17 +297,15 @@ //鐖剁骇妯″瀷 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(); } }; @@ -340,6 +344,7 @@ 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(); }; @@ -477,6 +482,9 @@ font-weight: 400; } } + .content_top { + border-bottom: 1px solid #f0f0f0 !important; + } .card_content { .card_wrap_box_img { // min-height: 200px; @@ -488,12 +496,25 @@ 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; + } } } } @@ -510,6 +531,7 @@ transform: translateY(-4px); // box-shadow: 4px 4px 10px rgba(0, 0, 0, 0.1); } + :deep(.arco-card) { height: 100%; border-radius: 4px; diff --git a/yarn.lock b/yarn.lock index 2b1e84c..758b2fe 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5580,7 +5580,7 @@ moment@^2.30.1: version "2.30.1" - resolved "https://registry.npmmirror.com/moment/-/moment-2.30.1.tgz" + resolved "https://registry.npmmirror.com/moment/-/moment-2.30.1.tgz#f8c91c07b7a786e30c59926df530b4eac96974ae" integrity sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how== mozjpeg@^7.0.0: -- Gitblit v1.8.0