2026-06-01 13:40:53 +08:00
|
|
|
import{A as e,D as t,E as n,M as r,N as ee,O as i,P as a,S as o,_ as s,b as c,d as te,f as ne,h as l,i as re,j as u,k as ie,l as ae,m as d,n as f,o as p,r as m,s as oe,v as h,w as se,y as g}from"./index-B1sOGpZZ.js";import{a as _,i as v,r as y}from"./utils-COFIQvWo.js";var b={class:`page-container`},x={class:`upload-layout`},S={class:`upload-main-card`},C={key:0,class:`file-info`},w={class:`file-name`},T={class:`file-size`},E={key:1,class:`error-message`},D={key:2,class:`progress-bar`},O={class:`upload-side-card`},k={class:`material-panel compact-panel`},A={class:`form-group`},j={class:`advanced-params`},M={class:`advanced-params-body`},N={class:`advanced-param-grid`},P={class:`form-label`},F={class:`param-input-row`},I=[`onUpdate:modelValue`,`min`,`max`,`step`],L={class:`param-unit`},R={class:`param-meta-row`},z={class:`range-value`},B={class:`range-value`},V={class:`param-hint`},H=[`disabled`],U={key:1,class:`inline-note`},ce={key:0,class:`history-collapsible section`},W={class:`history-summary`},G={class:`table-container`},le={class:`data-table`},ue={class:`badge badge-info`},de={class:`action-buttons`},fe=[`onClick`],pe=[`onClick`,`title`],me={key:0,class:`history-detail-row`},he={colspan:`6`},ge={class:`history-dropdown`},_e={class:`data-table inner-table`},ve=[`onClick`],K=o({__name:`MoldInsightView`,setup(o){let K=ae(),q=oe(),J=e(null),Y=ie({selectedFile:null,selectedMaterial:`ABS`,moldParams:{draftAngle:2,shrinkageRate:.5,partingPrecision:.1,cavityMatch:95},uploading:!1,error:``,currentTask:null,task:null,polling:!1,dragOver:!1,progress:0,history:null,expandedFiles:{}}),X=async()=>{try{Y.history=await p(`/api/history`)}catch(e){console.error(`加载历史记录失败:`,e)}},Z=async e=>{if(Y.expandedFiles[e])Y.expandedFiles[e]=null;else try{let t=await p(`/api/history/${encodeURIComponent(e)}`);Y.expandedFiles[e]=t}catch(e){m(e,`加载文件历史`)}},Q=e=>{K.push(`/moldinsight/result/${e.task_id}`)},ye=e=>{let t=e.target.files?.[0];t&&$(t)},$=e=>{let t=e.name.toLowerCase();if(!t.endsWith(`.stp`)&&!t.endsWith(`.step`)){Y.error=`请选择 STP 或 STEP 格式文件`,Y.selectedFile=null;return}if(e.size>100*1024*1024){Y.error=`文件大小不能超过 100MB`,Y.selectedFile=null;return}Y.error=``,Y.selectedFile=e,f(`已选择文件: ${e.name}`,`success`)},be=e=>{e.preventDefault(),Y.dragOver=!1;let t=e.dataTransfer?.files;t&&t.length>0&&$(t[0])},xe=async()=>{if(!Y.selectedFile)return;if(!q.token){Y.error=`请先登录后再上传文件`,f(`请先登录`,`warning`),K.push(`/login`);return}if(q.token===`demo`){Y.error=`演示模式不支持文件上传,请使用完整账户登录`,f(`演示模式不支持上传`,`warning`);return}Y.uploading=!0,Y.error=``,Y.progress=0;let e=new FormData;e.append(`file`,Y.selectedFile),e.append(`material`,Y.selectedMaterial),e.append(`draft_angle`,String(Y.moldParams.draftAngle)),e.append(`shrinkage_rate`,String(Y.moldParams.shrinkageRate)),e.append(`parting_precision`,String(Y.moldParams.partingPrecision)),e.append(`cavity_match`,String(Y.moldParams.cavityMatch));try{let t=await fetch(`/api/upload`,{method:`POST`,headers:{Authorization:`Bearer ${q.token}`},body:e});if(t.status===401){re(),Y.error=`登录已过期,请重新登录`,f(`登录已过期,请重新登录`,`warning`),K.push(`/login`);return}if(!t.ok)throw Error(`上传失败: ${t.status}`);let n=await t.json();Y.currentTask={task_id:n.task_id,status:`processing`,filename:n.file_info?.filename},f(`文件上传成功,开始分析...`,`success`),Se(n.task_id)}catch(e){Y.error=m(e,`文件上传`)}finally{Y.uploading=!1}},Se=async e=>{console.log(`[Polling] 开始轮询任务:`,e),Y.polling=!0,Y.progress=10;let t=0,n=async()=>{try{t++,Y.progress=Math.min(90,10+t*.5);let r=await p(`/api/status/${e}`,{method:`POST`});if(Y.currentTask=r,Y.task=r,r.status===`completed`){Y.polling=!1,Y.progress=100,f(`分析完成`,`success`),X(),K.push(`/moldinsight/result/${e}`);return}if(r.status===`failed`){Y.polling=!1,Y.error=r.error||`分析失败`,f(`分析失败`,`error`);return}t<300&&setTimeout(n,2e3)}catch(e){Y.polling=!1,Y.error=m(e
|