Files
geMoldInsight/static/assets/MoldInsightView-CVpP8ugh.js
T

1 line
11 KiB
JavaScript
Raw Normal View History

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