Files
crawler-plugin/app/assets/convert.js
2026-03-21 10:00:16 +08:00

2 lines
7.5 KiB
JavaScript

import{d as R,o as P,a as l,c as n,b as V,B as H,e as s,F as y,r as C,t as r,f as m,n as F,w as j,u as z,x as A,g as d,h as E,y as K,i as g,E as o,j as M,z as q,A as J,C as L,_ as O,q as G,s as Q}from"./pywebview-Rm5Hhqpf.js";const W={class:"page-shell module-page"},X={class:"main-content"},Y={class:"left-panel"},Z={class:"upload-zone"},ee={class:"selected-files clean-placeholder"},se={key:0,class:"more-line"},te={key:1},ae={class:"option-group"},le=["value"],ne={class:"template-item-content"},oe={class:"label"},re={key:0,class:"template-tag"},ie={key:1,class:"template-tag muted"},ce={class:"desc"},ue={class:"option-group"},de={class:"radio-item active"},ve={class:"desc"},pe={class:"run-row"},_e=["disabled"],fe={class:"loading-msg"},me={class:"right-panel"},he={class:"task-list-wrap"},ye={class:"clean-result-summary"},ge={class:"summary-card"},be={class:"summary-card"},we={class:"summary-card"},ke={class:"result-list-wrap"},Ce={key:0,class:"empty-tasks"},xe={key:1,class:"task-list clean-result-list"},Fe={class:"left"},Ee=["title"],Te={key:0,class:"files"},Ie={key:1,class:"files"},Be={class:"task-right"},$e=["onClick"],De=["onClick"],Se=R({__name:"BrandConvertTab",setup(Ne){const v=d([]),b=d([]),p=d(!1),h=d([]),_=d({total:0,successCount:0,failedCount:0,items:[]}),u=d([]),c=d(""),w=E(()=>v.value.slice(0,8)),T=E(()=>u.value.find(a=>a.id===c.value)||null);async function I(a){const e=g();if(!e?.upload_file_to_java)throw new Error("当前桌面端未提供文件上传桥接能力");const t=[];for(const i of a){const f=await e.upload_file_to_java(i);if(!f?.success||!f.data)throw new Error(f?.error||f?.message||`上传失败:${i}`);t.push(f.data)}return t}async function B(){const a=await K();u.value=a||[];const e=u.value.find(t=>t.isDefault);if(e){c.value=e.id;return}u.value.length&&!u.value.some(t=>t.id===c.value)&&(c.value=u.value[0].id)}async function x(a,e){v.value=a,b.value=await I(a),o.success(e)}async function $(){const a=g();if(!a?.select_brand_xlsx_files){o.warning("当前环境不支持文件选择,请在本机客户端中打开");return}try{const e=await a.select_brand_xlsx_files();if(!e?.length)return;await x(e,`已选择 ${e.length} 个待转换文件`)}catch(e){o.error(e instanceof Error?e.message:"选择失败")}}async function D(){const a=g();if(!a?.select_brand_folder){o.warning("当前环境不支持文件夹选择,请在本机客户端中打开");return}try{const e=await a.select_brand_folder();if(!e)return;const t=await M(e);if(t.success&&t.paths?.length){await x(t.paths,`已选择文件夹内 ${t.paths.length} 个 xlsx 文件`);return}o.warning(t.error||"该文件夹下没有 xlsx 文件")}catch(e){o.error(e instanceof Error?e.message:"选择失败")}}async function S(){if(!b.value.length){o.warning("请先选择待转换 Excel 文件或文件夹");return}if(!c.value){o.warning("请先选择模板");return}try{p.value=!0;const a=await q({files:b.value.map(e=>({fileKey:e.fileKey,originalFilename:e.originalFilename})),templateId:c.value});_.value=a,h.value=a.items||[],await k(),o.success("格式转换完成")}catch(a){o.error(a instanceof Error?a.message:"格式转换失败")}finally{p.value=!1}}async function k(){try{const a=await J();h.value=a.items||[],_.value={total:a.items?.length||0,successCount:a.items?.filter(e=>e.success).length||0,failedCount:a.items?.filter(e=>!e.success).length||0,items:a.items||[]}}catch{}}async function U(a){try{await L(a),await k(),o.success("已删除")}catch(e){o.error(e instanceof Error?e.message:"删除失败")}}async function N(a){const e=g();if(!a.downloadUrl){o.warning("当前结果没有下载地址");return}const t=a.outputFilename||`${new Date().toISOString().slice(0,10).replace(/-/g,"")}.txt`;if(e?.save_file_from_url){const i=await e.save_file_from_url(a.downloadUrl,t);i.success?o.success(`已保存:${i.path||t}`):i.error&&i.error!=="用户取消"&&o.error(i.error);return}window.open(a.downloadUrl,"_blank")}return P(()=>{B().catch(()=>{}),k().catch(()=>{})}),(a,e)=>(l(),n("div",W,[V(H,{active:"convert"}),s("div",X,[s("aside",Y,[e[5]||(e[5]=s("div",{class:"section-title"},"选择文件",-1)),s("div",Z,[e[1]||(e[1]=s("div",{class:"hint"},"选择需要转换的 Excel 文件或文件夹,将按所选模板生成 txt 文件。",-1)),s("div",{class:"btns"},[s("button",{type:"button",class:"opt-btn",onClick:$},"选择 Excel 文件"),s("button",{type:"button",class:"opt-btn",onClick:D},"选择文件夹")]),s("div",ee,[v.value.length?(l(),n(y,{key:0},[(l(!0),n(y,null,C(w.value,t=>(l(),n("span",{key:t},r(t),1))),128)),v.value.length>w.value.length?(l(),n("span",se," 还有 "+r(v.value.length-w.value.length)+" 个文件未展开显示 ",1)):m("",!0)],64)):(l(),n("span",te,"暂未选择待转换文件"))])]),e[6]||(e[6]=s("div",{class:"section-title"},"模板选择",-1)),s("div",ae,[(l(!0),n(y,null,C(u.value,t=>(l(),n("label",{key:t.id,class:F(["radio-item",{active:c.value===t.id}])},[j(s("input",{"onUpdate:modelValue":e[0]||(e[0]=i=>c.value=i),type:"radio",value:t.id,name:"convert-template"},null,8,le),[[z,c.value]]),s("div",ne,[s("div",null,[s("span",oe,[A(r(t.templateName)+" ",1),t.isDefault?(l(),n("span",re,"默认")):t.builtIn?(l(),n("span",ie,"内置")):m("",!0)]),s("div",ce,"输出文件:"+r(t.outputFilename),1)])])],2))),128))]),e[7]||(e[7]=s("div",{class:"section-title"},"转换说明",-1)),s("div",ue,[s("label",de,[e[3]||(e[3]=s("input",{type:"checkbox",checked:"",disabled:""},null,-1)),s("div",null,[e[2]||(e[2]=s("span",{class:"label"},"按当前模板输出",-1)),s("div",ve,"当前模板:"+r(T.value?.templateName||"未加载模板"),1)])]),e[4]||(e[4]=s("label",{class:"radio-item active"},[s("input",{type:"checkbox",checked:"",disabled:""}),s("div",null,[s("span",{class:"label"},"SKU 使用雪花ID-序号"),s("div",{class:"desc"},"例如 1773816146796-1")])],-1))]),s("div",pe,[s("button",{type:"button",class:"btn-run",disabled:p.value,onClick:S},r(p.value?"转换中...":"开始转换"),9,_e),s("span",fe,r(p.value?"正在生成并上传结果,请稍候…":"选择文件后即可执行格式转换,结果会显示在右侧供下载"),1)])]),s("section",me,[e[12]||(e[12]=s("div",{class:"panel-header"},"转换结果",-1)),s("div",he,[s("div",ye,[s("div",ge,[e[8]||(e[8]=s("span",{class:"summary-label"},"已处理文件",-1)),s("strong",null,r(_.value.total),1)]),s("div",be,[e[9]||(e[9]=s("span",{class:"summary-label"},"成功结果",-1)),s("strong",null,r(_.value.successCount),1)]),s("div",we,[e[10]||(e[10]=s("span",{class:"summary-label"},"失败文件",-1)),s("strong",null,r(_.value.failedCount),1)])]),s("div",ke,[e[11]||(e[11]=s("div",{class:"result-list-header"},[s("span",null,"生成的 txt 列表")],-1)),h.value.length===0?(l(),n("div",Ce," 暂无转换结果,完成格式转换后会在这里展示输出文件 ")):(l(),n("ul",xe,[(l(!0),n(y,null,C(h.value,t=>(l(),n("li",{key:`${t.resultId||t.outputFilename||t.sourceFilename}`,class:"task-item"},[s("div",Fe,[s("span",{class:"id",title:t.sourceFilename},r(t.sourceFilename||"-"),9,Ee),t.outputFilename?(l(),n("div",Te,"输出文件:"+r(t.outputFilename),1)):t.error?(l(),n("div",Ie,"错误信息:"+r(t.error),1)):m("",!0)]),s("div",Be,[s("span",{class:F(["status",t.success?"success":"failed"])},r(t.success?"已完成":"失败"),3),t.success&&t.downloadUrl?(l(),n("button",{key:0,type:"button",class:"download",onClick:i=>N(t)}," 下载文件 ",8,$e)):m("",!0),t.resultId?(l(),n("button",{key:1,type:"button",class:"btn-delete",onClick:i=>U(t.resultId)}," 删除 ",8,De)):m("",!0)])]))),128))]))])])])])]))}}),Ue=O(Se,[["__scopeId","data-v-c631a759"]]);G(Ue).use(Q).mount("#app");