5 lines
19 KiB
JavaScript
5 lines
19 KiB
JavaScript
import{d as tt,o as st,L as at,a as o,c as i,b as m,B as nt,e as s,F as H,r as M,t as r,w as Ce,G as lt,u as ot,f as y,a4 as be,a5 as ee,a6 as it,a7 as rt,N as ut,n as ct,a8 as dt,a9 as ft,g as d,h as S,aa as vt,E as c,i as j,ab as pt,ac as gt,ad as ht,ae as yt,af as _t,U as Se,ag as kt,ah as mt,ai as wt,aj as Ct,ak as bt,a2 as St,al as It,_ as Tt,q as Pt,s as Ft}from"./pywebview-DNfEzGOK.js";/* empty css */import{e as Et}from"./brand-D4E3c93-.js";import{c as Rt}from"./categorized-timers-JPA-olTr.js";const At={class:"page-shell module-page"},Nt={class:"main-content"},xt={class:"left-panel"},Ut={class:"upload-zone"},Dt={class:"selected-files"},$t={key:0},Bt={class:"prompt-card"},Lt={class:"condition-actions"},Gt=["disabled"],Ht={key:0,class:"empty-conditions"},Mt={key:1,class:"condition-list"},jt={class:"condition-check"},qt=["value","onChange"],Vt=["title"],zt=["onClick"],Kt={class:"category-card"},Ot={class:"category-card-head"},Jt={class:"category-actions"},Qt={key:0,class:"empty-conditions"},Yt={key:1,class:"selected-category-list"},Wt={class:"run-row"},Xt=["disabled"],Zt=["disabled"],es={key:0,class:"parse-card"},ts={key:1,class:"queue-payload"},ss={class:"right-panel"},as={class:"task-list-wrap"},ns={class:"clean-result-summary"},ls={class:"summary-card"},os={class:"summary-card"},is={class:"summary-card"},rs={class:"summary-card"},us={class:"result-list-wrap preview-wrap"},cs={class:"result-list-header"},ds={key:0,class:"muted"},fs={key:0,class:"empty-tasks"},vs={class:"result-list-wrap"},ps={key:0,class:"empty-tasks"},gs={key:1,class:"task-list clean-result-list"},hs={class:"left"},ys={class:"id"},_s={class:"files"},ks={class:"files"},ms={class:"task-right"},ws={class:"status running"},Cs=["onClick"],bs={class:"result-list-wrap"},Ss={key:0,class:"empty-tasks"},Is={key:1,class:"task-list clean-result-list"},Ts={class:"left"},Ps={class:"id"},Fs={class:"files"},Es={key:0,class:"files"},Rs={key:1,class:"files result-hint"},As={key:2,class:"file-progress"},Ns={class:"file-progress-meta"},xs={class:"file-progress-track"},Us={class:"file-progress-count"},Ds={key:3,class:"files"},$s={class:"task-right"},Bs=["onClick"],Ls=["onClick"],Gs={key:0,class:"empty-tasks"},Hs={key:1,class:"empty-tasks"},Ms={class:"category-tree-node"},js={key:0,class:"category-description"},qs=3e3,Vs=tt({__name:"BrandSimilarAsinTab",setup(Ks){const q=d([]),I=d([]),w=d(null),V=d([]),T=d(null),P=d(""),F=d([]),_=d(null),z=d([]),re=d([]),E=d([]),R=d(!1),K=d(!1),A=d(null),O=d(!1),J=d(!1),Q=d(!1),C=d(""),p=d([]),f=d([]),g=d(null),te=d(!1);let N=null,ue=0,x=!1;const U=Rt("similar-asin"),D=d({pendingTaskCount:0,processedTaskCount:0,successTaskCount:0,failedTaskCount:0}),h=d([]),$=S(()=>w.value?.items||[]),Ie=S(()=>$.value),B=S(()=>w.value||T.value),ce=S(()=>h.value.filter(e=>e.taskId!=null&&p.value.includes(e.taskId))),de=S(()=>h.value.filter(e=>{const t=Z(e);return t!=="RUNNING"&&t!=="PENDING"}));function Te(){const e=_.value;return e==null?"":F.value.find(t=>t.id===e)?.conditionText?.trim()||""}function fe(){return Pe(P.value.trim()||Te())}function Y(){return St("similar-asin").trim()}const se=S(()=>{const e=new Set(E.value);return re.value.filter(t=>e.has(t.id))});function Pe(e){const t=se.value.map(l=>{const u=l.path||l.name,v=l.description?.trim();return v?`${u}(${v})`:u}).filter(Boolean);if(!t.length)return e;const n=["商品类目要求:",...t.map(l=>`- ${l}`)].join(`
|
||
`);return e?`${e}
|
||
|
||
${n}`:n}async function ve(){if(!K.value){K.value=!0;try{const e=await vt();z.value=e.tree||[],re.value=e.items||[]}catch(e){c.error(e instanceof Error?e.message:"加载商品类目失败")}finally{K.value=!1}}}async function Fe(){R.value=!0,z.value.length||await ve(),requestAnimationFrame(()=>{A.value?.setCheckedKeys?.(E.value)})}function pe(e,t){return!!e.children?.some(n=>t.has(n.id)||pe(n,t))}function Ee(){const e=A.value?.getCheckedNodes?.(!1,!1)||[],t=new Set(e.map(n=>n.id));E.value=e.filter(n=>!pe(n,t)).map(n=>n.id),R.value=!1}function Re(){A.value?.setCheckedKeys?.([])}function Ae(){E.value=[],A.value?.setCheckedKeys?.([])}function Ne(e){return e?e.length<=10?"***":`${e.slice(0,6)}***${e.slice(-4)}`:""}function xe(e){return{...e,data:e.data?{...e.data,api_key:Ne(String(e.data.api_key||""))}:e.data}}function Ue(){return typeof window<"u"&&window.localStorage.getItem("uid")||"0"}function ae(){return`similar-asin:tasks:${Ue()}`}function De(e){return{taskId:e.taskId,totalRows:e.totalRows,acceptedRows:e.acceptedRows,groupCount:e.groupCount,droppedRows:e.droppedRows}}function b(){if(typeof window>"u")return;const e=Array.from(new Set([...p.value,...f.value]));e.length?window.localStorage.setItem(ae(),JSON.stringify(e)):window.localStorage.removeItem(ae())}function $e(){if(!(typeof window>"u"))try{const e=window.localStorage.getItem(ae()),t=e?JSON.parse(e):[];p.value=Array.isArray(t)?t.filter(n=>typeof n=="number"&&n>0):[]}catch{p.value=[]}}async function ge(e){const t=j();if(!t?.upload_file_to_java)throw new Error("当前桌面端未提供文件上传能力");const n=[];for(const l of e){const u=typeof l=="string"?l:l.absolutePath,v=typeof l=="string"?void 0:l.relativePath,a=await t.upload_file_to_java(u,v);if(!a?.success||!a.data)throw new Error(a?.error||a?.message||`上传失败:${u}`);n.push(a.data)}return n}async function Be(){const e=j();if(!e?.select_brand_xlsx_files||!e.upload_file_to_java){c.warning("当前桌面端未提供文件选择或上传能力");return}const t=await e.select_brand_xlsx_files();if(!t?.length)return;const n=await ge(t);I.value=n,q.value=n.map(l=>l.relativePath||l.originalFilename||l.fileKey),w.value=null,V.value=[],T.value=null,C.value=""}async function Le(){const e=j();if(!e?.select_brand_folder||!e.upload_file_to_java){c.warning("当前桌面端未提供文件夹选择或上传能力");return}try{const t=await e.select_brand_folder();if(!t)return;const n=await Et(t);if(!n.success||!n.items?.length){c.warning(n.error||"该文件夹下没有可用的 xlsx 文件");return}const l=await ge(n.items);I.value=l,q.value=n.items.map(u=>u.relativePath||u.absolutePath),w.value=null,V.value=[],T.value=null,C.value="",c.success(`已选择文件夹内 ${n.items.length} 个 Excel 文件`)}catch(t){c.error(t instanceof Error?t.message:"选择失败")}}async function ne(){try{F.value=await pt();const e=new Set(F.value.map(t=>t.id));_.value!=null&&!e.has(_.value)&&(_.value=null)}catch(e){c.error(e instanceof Error?e.message:"加载筛选条件失败")}}async function Ge(){const e=P.value.trim();if(!e){c.warning("请输入筛选条件");return}Q.value=!0;try{const t=await gt(e);await ne(),t?.id&&(_.value=t.id),c.success("筛选条件已保存")}catch(t){c.error(t instanceof Error?t.message:"保存筛选条件失败")}finally{Q.value=!1}}function He(e){P.value=e.conditionText||""}async function Me(e){try{await ht(e),_.value===e&&(_.value=null),await ne(),c.success("筛选条件已删除")}catch(t){c.error(t instanceof Error?t.message:"删除筛选条件失败")}}async function je(){if(!I.value.length){c.warning("请先选择 Excel");return}const e=fe();if(!e){c.warning("请输入筛选条件,或在备选区选择一个筛选条件");return}if(!Y()){c.warning("请先在左上角设置中填写货源查询密钥");return}O.value=!0;try{const t=I.value.map(l=>({fileKey:l.fileKey,originalFilename:l.originalFilename,relativePath:l.relativePath})),n=await yt(t,e,Y());w.value=n,T.value=null,V.value=[],C.value="",c.success(`解析完成,共 ${n.acceptedRows} 条`)}catch(t){c.error(t instanceof Error?t.message:"解析失败")}finally{O.value=!1}}async function qe(){const e=j(),t=w.value,n=t?.taskId;if(!n){c.warning("请先解析文件");return}if(!e?.enqueue_json){c.error("当前环境未启用 pywebview enqueue_json");return}if(!Y()){c.warning("请先在左上角设置中填写货源查询密钥");return}J.value=!0;try{const l={type:"similar-asin-run",ts:Date.now(),data:{taskId:n,prompt:t.aiPrompt||fe(),api_key:Y(),sourceFileCount:t.sourceFileCount||0,totalRows:t.totalRows||0,acceptedRows:t.acceptedRows||0,groupCount:t.groupCount||0}};C.value=JSON.stringify(xe(l),null,2),await _t(n);const u=await e.enqueue_json(l);if(!u?.success){c.error(u?.error||"推送失败");return}T.value=De(t),ze(n),Ve(),await W(),await X({force:!0}),c.success("已推送到 Python 队列")}finally{J.value=!1}}function Ve(){w.value=null,V.value=[],C.value=""}function ze(e){p.value.includes(e)||(p.value=[...p.value,e],b()),L()}function le(e){p.value=p.value.filter(t=>t!==e),b()}function Ke(e){f.value.includes(e)||(f.value=[...f.value,e],b()),L()}function oe(e){f.value=f.value.filter(t=>t!==e),b()}function L(){x||g.value==null&&Oe(!0)}function he(){g.value!=null&&(U.clearTimer("task-poll",g.value),g.value=null)}function Oe(e=!1){if(x)return;if(g.value!=null){if(!e)return;U.clearTimer("task-poll",g.value),g.value=null}const t=async()=>{g.value=null,!x&&(!p.value.length&&!f.value.length||(await Je(),!x&&g.value==null&&(p.value.length||f.value.length)&&(g.value=U.setTimeout("task-poll",t,Se()))))};e?t():g.value=U.setTimeout("task-poll",t,Se())}async function Je(){if(te.value||!p.value.length&&!f.value.length){!p.value.length&&!f.value.length&&he();return}te.value=!0;try{let e=!1,t=!1;const n=Array.from(new Set([...p.value,...f.value]));if(n.length){const l=await It(n,{force:f.value.length>0});for(const u of l.items||[]){const v=u.task;if(!v?.id)continue;const a=u.items?.[0];if(a&&Qe(a),(v.status==="SUCCESS"||v.status==="FAILED")&&(le(v.id),e=!0,v.status==="SUCCESS"?Ke(v.id):oe(v.id)),a&&v.status==="SUCCESS"&&f.value.includes(v.id)){const k=(a.fileStatus||"").toUpperCase();(a.fileReady||k==="SUCCESS"||k==="FAILED")&&(oe(v.id),e=!0,t=!0)}}l.missingTaskIds?.length&&(l.missingTaskIds.forEach(u=>{le(u),oe(u)}),t=!0,e=!0)}e&&await W(),t&&await X(),Ye()}finally{te.value=!1}}function Qe(e){if(!e.taskId&&!e.resultId)return;const t=h.value.findIndex(n=>e.resultId!=null&&n.resultId===e.resultId||e.taskId!=null&&n.taskId===e.taskId);t>=0?h.value[t]={...h.value[t],...e}:h.value=[e,...h.value]}function Ye(){if(!f.value.length)return;const e=[];for(const t of f.value){const n=h.value.find(v=>v.taskId===t);if(!n){e.push(t);continue}const l=(n.taskStatus||"").toUpperCase(),u=(n.fileStatus||"").toUpperCase();l==="FAILED"||n.fileReady||u==="SUCCESS"||u==="FAILED"||l==="SUCCESS"&&e.push(t)}f.value=e,b(),f.value.length&&L()}function We(){const e=h.value.filter(t=>t.taskId!=null&&G(t)).map(t=>t.taskId);f.value=Array.from(new Set(e)),b(),f.value.length&&L()}async function W(){D.value=await kt()}async function X(e={}){const t=Date.now();if(!(!e.force&&h.value.length&&t-ue<qs))return N||(N=mt().then(n=>{h.value=n.items||[],ue=Date.now()}).finally(()=>{N=null}),N)}function ye(e){const t=Z(e);return t==="RUNNING"?"执行中":t==="PENDING"?"已解析待推送":G(e)?"结果生成中":ie(e)?"结果生成失败":t==="SUCCESS"||e.success?"已完成":t==="FAILED"?"失败":"等待中"}function Xe(e){const t=Z(e);return t==="RUNNING"||G(e)?"running":ie(e)||t==="FAILED"?"failed":t==="SUCCESS"||e.success?"success":"pending"}function G(e){const t=Z(e),n=(e.fileStatus||"").toUpperCase();return!(t!=="SUCCESS"||ke(e)||n==="FAILED"||n==="SUCCESS")}function Z(e){return(e.taskStatus||"").toUpperCase()}function ie(e){return(e.fileStatus||"").toUpperCase()==="FAILED"}function _e(e){if(ie(e))return e.fileError||"结果文件生成失败,请稍后重试或检查后端日志";if(!G(e))return"";const t=(e.fileStatus||"").toUpperCase();return t==="RUNNING"?"任务已完成,正在等待 Coze 回流并组装结果文件,下载按钮稍后出现":t==="PENDING"?"任务已完成,结果文件已入队,正在等待后端开始处理":"任务已完成,正在生成结果文件,下载按钮稍后出现"}function ke(e){return!!(e.resultId&&(e.fileReady||e.downloadUrl))}function me(e){const t=Number(e.fileProgressPercent||0);return Number.isFinite(t)?Math.max(0,Math.min(100,Math.round(t))):0}function Ze(e){return G(e)&&(e.fileProgressTotal||0)>0}async function et(e){if(!e.resultId)return;const t=j();if(!t?.save_file_from_url_new){c.error("当前客户端未提供下载能力");return}const n=e.downloadUrl||wt(e.resultId),l=e.resultFilename||`${e.sourceFilename||"similar-asin"}.xlsx`,u=await t.save_file_from_url_new(n,l);u.success?c.success(`已保存: ${u.path||l}`):u.error&&u.error!=="用户取消"&&c.error(u.error)}async function we(e){try{e.taskStatus==="RUNNING"&&e.taskId?(await Ct(e.taskId),le(e.taskId)):e.resultId&&await bt(e.resultId),await W(),await X({force:!0}),c.success("已删除")}catch(t){c.error(t instanceof Error?t.message:"删除失败")}}return st(async()=>{$e(),await Promise.all([ne().catch(()=>{}),ve().catch(()=>{}),W().catch(()=>{}),X().catch(()=>{})]),We(),(p.value.length||f.value.length)&&L()}),at(()=>{x=!0,he(),U.clearScope()}),(e,t)=>{const n=it,l=rt,u=dt,v=ft;return o(),i("div",At,[m(nt,{active:"similar-asin"}),s("div",Nt,[s("aside",xt,[t[8]||(t[8]=s("div",{class:"section-title"},"上传文件",-1)),s("div",Ut,[t[4]||(t[4]=s("div",{class:"hint"},"选择 Excel 后点击解析,后端会提取 id、ASIN、国家、价格,每一行都会独立送检。",-1)),s("div",{class:"btns"},[s("button",{type:"button",class:"opt-btn",onClick:Be},"选择 Excel"),s("button",{type:"button",class:"opt-btn",onClick:Le},"选择文件夹")]),s("div",Dt,[q.value.length?(o(!0),i(H,{key:1},M(q.value,a=>(o(),i("span",{key:a},r(a),1))),128)):(o(),i("span",$t,"暂未选择文件"))])]),s("div",Bt,[t[5]||(t[5]=s("div",{class:"section-title"},"筛选条件",-1)),Ce(s("textarea",{"onUpdate:modelValue":t[0]||(t[0]=a=>P.value=a),class:"prompt-input",rows:"4",placeholder:"请输入筛选条件"},null,512),[[lt,P.value]]),s("div",Lt,[s("button",{type:"button",class:"opt-btn",disabled:Q.value,onClick:Ge},r(Q.value?"保存中...":"保存"),9,Gt)]),t[6]||(t[6]=s("div",{class:"section-title condition-list-title"},"备选区",-1)),F.value.length?(o(),i("ul",Mt,[(o(!0),i(H,null,M(F.value,a=>(o(),i("li",{key:a.id,class:"condition-item"},[s("label",jt,[Ce(s("input",{"onUpdate:modelValue":t[1]||(t[1]=k=>_.value=k),type:"radio",name:"similar-asin-filter-condition",value:a.id,onChange:k=>He(a)},null,40,qt),[[ot,_.value]]),s("span",{title:a.conditionText},r(a.conditionText),9,Vt)]),s("button",{type:"button",class:"link-danger",onClick:k=>Me(a.id)},"删除",8,zt)]))),128))])):(o(),i("div",Ht,"暂无筛选条件,输入后保存即可加入备选区"))]),s("div",Kt,[s("div",Ot,[t[7]||(t[7]=s("div",{class:"section-title"},"商品类目",-1)),s("div",Jt,[s("button",{type:"button",class:"opt-btn",onClick:Fe},"选择类目"),E.value.length?(o(),i("button",{key:0,type:"button",class:"link-danger",onClick:Ae}," 清空 ")):y("",!0)])]),se.value.length?(o(),i("div",Yt,[(o(!0),i(H,null,M(se.value,a=>(o(),i("span",{key:a.id,class:"category-chip"},r(a.path||a.name),1))),128))])):(o(),i("div",Qt,"暂未选择商品类目"))]),s("div",Wt,[s("button",{type:"button",class:"btn-run",disabled:O.value||!I.value.length,onClick:je},r(O.value?"解析中...":"解析并创建任务"),9,Xt),s("button",{type:"button",class:"btn-run btn-queue",disabled:J.value||!$.value.length,onClick:qe},r(J.value?"推送中...":"推送到 Python 队列"),9,Zt)]),t[9]||(t[9]=s("p",{class:"loading-msg"},"Python 回传字段按 id、asin、国家、价格、标题、图片链接数组提交;后端接收分片后按 10 条一批送检,结果区展示真实 Coze 批次进度。",-1)),B.value?(o(),i("div",es,[s("div",null,"任务 ID:"+r(B.value.taskId),1),s("div",null,"总行数:"+r(B.value.totalRows)+",有效:"+r(B.value.acceptedRows)+",过滤:"+r(B.value.droppedRows),1)])):y("",!0),C.value?(o(),i("pre",ts,r(C.value),1)):y("",!0)]),s("section",ss,[t[18]||(t[18]=s("div",{class:"panel-header"},"货源查询",-1)),s("div",as,[s("div",ns,[s("div",ls,[t[10]||(t[10]=s("span",{class:"summary-label"},"运行中任务",-1)),s("strong",null,r(D.value.pendingTaskCount),1)]),s("div",os,[t[11]||(t[11]=s("span",{class:"summary-label"},"已结束任务",-1)),s("strong",null,r(D.value.processedTaskCount),1)]),s("div",is,[t[12]||(t[12]=s("span",{class:"summary-label"},"成功任务",-1)),s("strong",null,r(D.value.successTaskCount),1)]),s("div",rs,[t[13]||(t[13]=s("span",{class:"summary-label"},"失败任务",-1)),s("strong",null,r(D.value.failedTaskCount),1)])]),t[17]||(t[17]=s("div",{class:"subsection-title"},"匹配任务",-1)),s("div",us,[s("div",cs,[t[14]||(t[14]=s("span",null,"解析结果",-1)),$.value.length?(o(),i("span",ds,"共 "+r($.value.length)+" 条",1)):y("",!0)]),$.value.length?(o(),be(l,{key:1,data:Ie.value,height:"120",class:"result-table"},{default:ee(()=>[m(n,{prop:"displayId",label:"ID",width:"90"}),m(n,{prop:"asin",label:"ASIN",width:"130"}),m(n,{prop:"country",label:"国家",width:"100"}),m(n,{prop:"price",label:"价格",width:"90"}),m(n,{prop:"title",label:"标题","min-width":"160","show-overflow-tooltip":""}),m(n,{prop:"url",label:"URL","min-width":"160","show-overflow-tooltip":""})]),_:1},8,["data"])):(o(),i("div",fs,"暂无解析结果"))]),s("div",vs,[t[15]||(t[15]=s("div",{class:"result-list-header"},[s("span",null,"当前任务")],-1)),ce.value.length?(o(),i("ul",gs,[(o(!0),i(H,null,M(ce.value,a=>(o(),i("li",{key:`cur-${a.taskId}`,class:"task-item"},[s("div",hs,[s("span",ys,r(a.sourceFilename||"货源查询"),1),s("div",_s,"任务 ID:"+r(a.taskId),1),s("div",ks,"行数:"+r(a.rowCount??"-"),1)]),s("div",ms,[s("span",ws,r(ye(a)),1),s("button",{type:"button",class:"btn-delete",onClick:k=>we(a)},"删除",8,Cs)])]))),128))])):(o(),i("div",ps,"暂无当前任务"))]),s("div",bs,[t[16]||(t[16]=s("div",{class:"result-list-header"},[s("span",null,"历史记录")],-1)),de.value.length?(o(),i("ul",Is,[(o(!0),i(H,null,M(de.value,a=>(o(),i("li",{key:`his-${a.resultId}-${a.taskId}`,class:"task-item"},[s("div",Ts,[s("span",Ps,r(a.sourceFilename||"货源查询"),1),s("div",Fs,"任务 ID:"+r(a.taskId??"-"),1),a.resultFilename?(o(),i("div",Es,r(a.resultFilename||"下载结果"),1)):y("",!0),_e(a)?(o(),i("div",Rs,r(_e(a)),1)):y("",!0),Ze(a)?(o(),i("div",As,[s("div",Ns,[s("span",null,r(a.fileProgressMessage||"结果生成中"),1),s("span",null,r(me(a))+"%",1)]),s("div",xs,[s("div",{class:"file-progress-bar",style:ut({width:`${me(a)}%`})},null,4)]),s("div",Us,r(a.fileProgressCurrent||0)+"/"+r(a.fileProgressTotal||0),1)])):y("",!0),a.error?(o(),i("div",Ds,"错误:"+r(a.error),1)):y("",!0)]),s("div",$s,[s("span",{class:ct(["status",Xe(a)])},r(ye(a)),3),ke(a)?(o(),i("button",{key:0,type:"button",class:"download",onClick:k=>et(a)},"下载",8,Bs)):y("",!0),a.resultId?(o(),i("button",{key:1,type:"button",class:"btn-delete",onClick:k=>we(a)},"删除",8,Ls)):y("",!0)])]))),128))])):(o(),i("div",Ss,"暂无历史记录"))])])])]),m(v,{modelValue:R.value,"onUpdate:modelValue":t[3]||(t[3]=a=>R.value=a),title:"选择商品类目",width:"560px",class:"category-dialog"},{footer:ee(()=>[s("button",{type:"button",class:"opt-btn",onClick:t[2]||(t[2]=a=>R.value=!1)},"取消"),s("button",{type:"button",class:"btn-run category-confirm",onClick:Ee},"确定")]),default:ee(()=>[s("div",{class:"category-dialog-toolbar"},[t[19]||(t[19]=s("span",{class:"muted"},"可多选,确认后会追加到筛选条件 prompt 后面。",-1)),s("button",{type:"button",class:"link-danger",onClick:Re},"清空选择")]),K.value?(o(),i("div",Gs,"正在加载商品类目...")):z.value.length?(o(),be(u,{key:2,ref_key:"categoryTreeRef",ref:A,class:"category-tree",data:z.value,"node-key":"id","show-checkbox":"","default-expand-all":"",props:{label:"name",children:"children"}},{default:ee(({data:a})=>[s("span",Ms,[s("span",null,r(a.name),1),a.description?(o(),i("span",js,r(a.description),1)):y("",!0)])]),_:1},8,["data"])):(o(),i("div",Hs,"暂无商品类目"))]),_:1},8,["modelValue"])])}}}),zs=Tt(Vs,[["__scopeId","data-v-01e31916"]]);Pt(zs).use(Ft).mount("#app");
|