2026-07-25 18:00:55 +08:00
|
|
|
import{E as U}from"./index-DX856o1n.js";import{E as j}from"./el-tag-EWyo0LW4.js";import{a as W,E as Y}from"./el-table-QP_Oajod.js";import{v as H}from"./directive-Hg9QyZNN.js";import{d as Q,D as X,G as Z,c as P,e as k,w as i,y as C,o as b,s as n,q as r,x as s,aa as d,f as c,aN as ee,aO as A,aP as te,g as ae,K as le,z as ie,v as ne,A as N}from"./index-Bh7OCVQ6.js";import{E as oe}from"./index-B3opIvVE.js";import"./el-scrollbar-CaowckgH.js";import"./el-popper-DXUOirs5.js";import"./el-tooltip-l0sNRNKZ.js";import"./el-checkbox-DW4KRHKX.js";import{D as R}from"./DataTablePage-Bf-cvvhO.js";import{g as se,a as re,b as de,c as ue,d as me,e as pe,f as fe}from"./model-DbA5b-zT.js";import{s as ce,a as _e,m as ge,b as be}from"./status-Dl1fykxa.js";import{_ as ye}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./_baseClone-DA_-m_Rr.js";import"./index-kerXeogY.js";import"./_baseIteratee-CE851Oh7.js";import"./castArray-D7TxxtMv.js";import"./debounce-DfTkVg-e.js";import"./toNumber-C-377O8t.js";import"./index-CbMDc3mX.js";import"./raf-Ds9zb_jQ.js";import"./validator-DBeDZ8zk.js";import"./index-DeiofXZw.js";import"./clamp-C0ioKl68.js";import"./index-BglXcY1N.js";import"./scroll-D7E-_vui.js";import"./index-BApxCz6W.js";import"./index-DZNyKCz8.js";import"./omit-Ba69VK-X.js";import"./el-card-V1WOK_5K.js";import"./el-pagination-CS_dddPi.js";import"./el-select-ChgtowfW.js";import"./vnode-DteOvKRf.js";import"./index-D8uNZmS-.js";const ve={class:"model-manage-page"},he={class:"capsule-tabs"},we={class:"capsule-tabs"},ke={class:"runtime-panel"},Ce={class:"panel-title"},Me={class:"action-buttons"},xe=Q({__name:"ModelManageView",setup(Ee){const M=ne(),m=C("config"),_=C(!1),v=C([]),h=C([]),x=ie({});function Te(t){return t}function ze(t){return t}function E(t){return String(t.id||t.name)}function g(t){const e=E(t);return x[e]||(x[e]={artifacts:[],lineage:{parents:[],children:[]},exportJobs:[],loading:!1,loaded:!1}),x[e]}function T(t){return t?new Date(t).toLocaleString("zh-CN"):"-"}function S(t){const e=Number(t||0);return e<=0?"-":e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:e<1024*1024*1024?`${(e/1024/1024).toFixed(1)} MB`:`${(e/1024/1024/1024).toFixed(2)} GB`}function J(t){return{fine_tuned_from:"由基座模型微调生成",merged_from_adapter:"由 Adapter 合并导出"}[t||""]||t||"-"}function O(t){return{adapter:"Adapter 权重",merged_model:"合并模型",quantized_model:"量化模型"}[t||""]||t||"-"}async function w(){_.value=!0;try{v.value=await se()||[]}finally{_.value=!1}}async function z(){_.value=!0;try{const t=await re();h.value=(t==null?void 0:t.models)||[]}finally{_.value=!1}}function D(){m.value==="config"?w():z()}async function L(t,e=!1){const l=g(t);if(!(l.loading||l.loaded&&!e)){l.loading=!0;try{const p=t.id||t.name,[f,u,$]=await Promise.all([de(p),ue(p),me(p)]);l.artifacts=f||[],l.lineage={parents:(u==null?void 0:u.parents)||[],children:(u==null?void 0:u.children)||[]},l.exportJobs=$||[],l.loaded=!0}finally{l.loading=!1}}}function V(t,e){e.some(l=>E(l)===E(t))&&L(t)}async function B(t){await pe(t.id),v.value=v.value.filter(e=>e.id!==t.id),await w(),N.success("删除成功")}async function q(t){await oe.confirm(`确定要删除模型“${t.name}”的权重文件吗?合并模型不受影响。`,"确认删除",{type:"warning"}),await fe(t.id||t.name,"lora"),h.value=h.value.filter(e=>e.name!==t.name&&e.id!==t.id),await z(),N.success("权重已删除")}function F(t){var e,l;M.push({path:"/model-manage/merge",query:{model:t.name,method:((l=(e=t.train_methods)==null?void 0:e[0])==null?void 0:l.name)||"lora"}})}function I(t){M.push(`/model-manage/${t.id}/edit`)}function K(){m.value==="config"&&M.push("/model-manage/create")}function G(){m.value==="config"?w():z()}return X(m,D),Z(D),(t,e)=>{const l=Y,p=j,f=U,u=W,$=H;return b(),P("div",ve,[m.value==="config"?(b(),k(R,{key:0,title:"模型",data:v.value,loading:_.value,searchable:"","search-fields":["name","description"],"create-text":"添加模型","delete-fn":B,"row-key":"id",onCreate:K,onRefresh:w},{title:i(()=>[r("div",he,[r("button",{class:"capsule-tab-item active",onC
|