PageSourceSearch

https://exportyai.com/build/assets/Index-FsLLiWaZ.js

js exportyai.com collected 2026-09-24 14:42:57 UTC 10,960 bytes, 1 lines download raw bytes

1import{d as M,k as x,x as O,a as n,o as d,b as a,u as l,g as Q,w as o,e as t,n as h,t as b,F as $,r as R,S as W,j as q,P as G,L as H,f as i,N as f,Q as _,O as J}from"./app-D6Z0QfqM.js";import{_ as X}from"./AppLayout.vue_vue_type_script_setup_true_lang-DZH8kkxg.js";import{g as z,_ as j,a as S,b as I,c as F,d as N,e as P,f as T}from"./AlertDialogTitle.vue_vue_type_script_setup_true_lang-CELDHhxN.js";import"./Primitive-BocIYmOS.js";import"./useForwardExpose-CJ58Ne1s.js";import"./useForwardPropsEmits-IQJC-XB-.js";import"./TooltipTrigger.vue_vue_type_script_setup_true_lang-BeeXy6SD.js";import"./SwitchLang.vue_vue_type_script_setup_true_lang-CpzNRh6X.js";import"./AppLogoIcon.vue_vue_type_script_setup_true_lang-_OmQKkcg.js";import"./useDirection-1rjEeOj7.js";import"./RovingFocusGroup-BVPIo6LO.js";import"./useArrowNavigation-B5rxJs06.js";const Y={class:"p-6 max-w-7xl mx-auto space-y-6"},ee={class:"bg-white dark:bg-gray-800 rounded-3xl p-6 border border-slate-200/80 dark:border-gray-700 shadow-sm flex flex-wrap items-center justify-between gap-4"},te={class:"space-y-1"},se={class:"text-2xl font-extrabold text-slate-900 dark:text-gray-100 flex items-center gap-3"},le={class:"px-3 py-0.5 rounded-full text-xs font-extrabold bg-blue-100 text-blue-700 dark:bg-blue-900/40 dark:text-blue-300"},ae={class:"flex items-center gap-3"},oe={key:0,class:"bg-white dark:bg-gray-800 rounded-3xl p-12 border border-slate-200/80 dark:border-gray-700 text-center space-y-4"},re={key:1,class:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6"},ne={class:"space-y-3"},de={class:"flex items-start justify-between gap-2"},ie={class:"text-base font-extrabold text-slate-900 dark:text-gray-100 group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors line-clamp-1"},ue={key:0,class:"px-2.5 py-0.5 rounded-full text-[11px] font-bold bg-emerald-100 text-emerald-800 dark:bg-emerald-950/50 dark:text-emerald-300 shrink-0 flex items-center gap-1"},pe={key:1,class:"px-2.5 py-0.5 rounded-full text-[11px] font-semibold bg-slate-100 text-slate-500 dark:bg-gray-700 dark:text-slate-400 shrink-0"},xe={class:"space-y-1 text-xs text-slate-500 dark:text-slate-400 font-mono"},be={class:"pt-4 border-t border-slate-100 dark:border-gray-700 flex items-center justify-between gap-2"},fe={class:"flex items-center gap-1.5"},me=["href"],ge=["onClick"],ve=["onClick"],ce={key:0,class:"fixed inset-0 z-50 flex items-center justify-center bg-slate-900/60 backdrop-blur-sm p-4"},ke={class:"bg-white dark:bg-gray-800 rounded-3xl p-6 border border-slate-200 dark:border-gray-700 shadow-2xl max-w-md w-full space-y-5"},ye={class:"space-y-2"},_e={class:"flex items-center justify-end gap-3 pt-2"},he=["disabled"],Ve=M({__name:"Index",props:{projects:{}},setup(we){const V=[{title:"管理后台",href:route("admin.dashboard")},{title:"商店宣传图设计方案",href:route("admin.promos.index")}],m=x(!1),p=O({name:""}),w=()=>{p.name&&p.post(route("admin.promos.store"),{onSuccess:()=>{m.value=!1,p.reset(),f.success("✨ 方案新建成功!正在进入编辑模式...")}})},g=x(!1),v=x(null),B=r=>{v.value=r,g.value=!0},E=()=>{v.value&&_.delete(route("admin.promos.destroy",v.value.id),{onSuccess:()=>{g.value=!1,v.value=null,f.success("🗑️ 方案已安全删除!")}})},c=x(!1),k=x(null),U=r=>{k.value=r,c.value=!0},A=()=>{k.value&&_.delete(route("admin.promos.delete-zip",k.value.id),{onSuccess:()=>{c.value=!1,k.value=null,f.success("🗑️ Zip 压缩包已安全删除!")}})},Z=x(null),K=()=>{var r;(r=Z.value)==null||r.click()},L=async r=>{var C,D;const e=r.target;if(!e.files||!e.files[0])return;const s=e.files[0],y=new FormData;y.append("zip_file",s);try{f.info("⏳ 正在解析并导入 Zip 方案包...");const u=await J.post(route("admin.promos.import-zip"),y,{headers:{"Content-Type":"multipart/form-data"}});u.data.success&&(f.success(u.data.message||"🎉 方案 ZIP 成功导入!"),u.data.redirect_url?_.visit(u.data.redirect_url):_.reload())}catch(u){f.error("导入 Zip 失败: "+(((D=(C=u.response)==null?void 0:C.data)==null?void 0:D.message)||u.message||u))}finally{e.value=""}};return(r,e)=>(d(),n($,null,[a(l(Q),{title:"商店宣传图设计方案 - ExportyAI Admin"}),a(X,{breadcrumbs:V},{default:o(()=>[t("div",Y,[t("input",{type:"file",ref_key:"importZipInputRef",ref:Z,accept:".zip",class:"hidden",onChange:L},null,544),t("div",ee,[t("div",te,[t("h1",se,[e[8]||(e[8]=t("span",null,"🎨 商店宣传图设计方案",-1)),t("span",le," 共 "+b(r.projects.length)+" 个方案 ",1)]),e[9]||(e[9]=t("p",{class:"text-xs text-slate-500 dark:text-slate-400"}," 统一管理 Chrome Web Store & Edge 插件商店的多语言画幅底图、套图排ç‰
1ˆä¸Žå¯¼å‡ºçš„ Zip 压缩包。 ",-1))]),t("div",ae,[t("button",{onClick:K,class:"px-4 py-2.5 rounded-2xl bg-purple-600 hover:bg-purple-700 text-white font-bold text-xs shadow-md transition-all flex items-center gap-2 hover:scale-[1.02] active:scale-95",title:"从 Zip 压缩包导入并创建/恢复全套设计方案"},e[10]||(e[10]=[t("span",{class:"text-sm"},"📥",-1),t("span",null,"导入 Zip 方案",-1)])),t("button",{onClick:e[0]||(e[0]=s=>m.value=!0),class:"px-5 py-2.5 rounded-2xl bg-blue-600 hover:bg-blue-700 text-white font-bold text-xs shadow-md transition-all flex items-center gap-2 hover:scale-[1.02] active:scale-95"},e[11]||(e[11]=[t("span",{class:"text-sm"},"➕",-1),t("span",null,"新建设计方案",-1)]))])]),r.projects.length===0?(d(),n("div",oe,[e[12]||(e[12]=t("div",{class:"w-16 h-16 mx-auto rounded-3xl bg-blue-50 dark:bg-blue-950/40 text-blue-500 flex items-center justify-center text-2xl font-bold"}," 🎨 ",-1)),e[13]||(e[13]=t("div",{class:"space-y-1 max-w-md mx-auto"},[t("h3",{class:"text-base font-bold text-slate-800 dark:text-slate-200"},"尚无宣传图设计方案"),t("p",{class:"text-xs text-slate-500 dark:text-slate-400"}," 点击上方“新建设计方案”按钮,开始为 Chrome Store 制作 9 语言像素级宣传图。 ")],-1)),t("button",{onClick:e[1]||(e[1]=s=>m.value=!0),class:"px-5 py-2 rounded-xl bg-blue-600 hover:bg-blue-700 text-white text-xs font-bold shadow-md"}," ➕ 创建第一个方案 ")])):(d(),n("div",re,[(d(!0),n($,null,R(r.projects,s=>(d(),n("div",{key:s.id,class:"bg-white dark:bg-gray-800 rounded-3xl p-6 border border-slate-200/80 dark:border-gray-700 shadow-sm hover:shadow-md transition-all flex flex-col justify-between space-y-5 group"},[t("div",ne,[t("div",de,[t("h3",ie,b(s.name),1),s.zip_path?(d(),n("span",ue,e[14]||(e[14]=[t("span",null,"📦",-1),t("span",null,"Zip 已就绪",-1)]))):(d(),n("span",pe," 暂无 Zi
1p "))]),t("div",xe,[t("p",null,"更新时间: "+b(s.updated_at),1),t("p",null,"关联截图: "+b(Object.keys(s.screenshots||{}).length)+" 张文件已配置",1)])]),t("div",be,[a(l(W),{href:r.route("admin.promos.edit",s.id),class:"px-3.5 py-1.5 rounded-xl bg-blue-50 text-blue-700 dark:bg-blue-950/50 dark:text-blue-300 hover:bg-blue-100 text-xs font-bold transition-all flex items-center gap-1"},{default:o(()=>e[15]||(e[15]=[t("span",null,"✏️",-1),t("span",null,"编辑方案",-1)])),_:2,__:[15]},1032,["href"]),t("div",fe,[s.zip_path?(d(),n("a",{key:0,href:r.route("admin.promos.download-zip",s.id),class:"px-2.5 py-1.5 rounded-xl bg-amber-50 text-amber-700 dark:bg-amber-950/50 dark:text-amber-300 hover:bg-amber-100 text-xs font-bold transition-all flex items-center gap-1",title:"下载服务器上的 9 语言 Zip 包"},e[16]||(e[16]=[t("span",null,"📥",-1),t("span",null,"下载 Zip",-1)]),8,me)):h("",!0),s.zip_path?(d(),n("button",{key:1,onClick:y=>U(s),class:"px-2.5 py-1.5 rounded-xl bg-rose-50 text-rose-600 hover:bg-rose-100 dark:bg-rose-950/50 dark:text-rose-400 text-xs font-bold transition-all flex items-center gap-1",title:"从服务器彻底删除 Zip 压缩包"},e[17]||(e[17]=[t("span",null,"🗑️ Zip",-1)]),8,ge)):h("",!0),t("button",{onClick:y=>B(s),class:"px-2.5 py-1.5 rounded-xl bg-slate-100 hover:bg-rose-100 text-slate-500 hover:text-rose-600 dar
1k:bg-gray-700 dark:hover:bg-rose-950/50 dark:hover:text-rose-400 text-xs font-bold transition-all",title:"彻底删除此方案"}," 🗑️ 方案 ",8,ve)])])]))),128))]))]),m.value?(d(),n("div",ce,[t("div",ke,[e[19]||(e[19]=t("h3",{class:"text-base font-bold text-slate-900 dark:text-gray-100 flex items-center gap-2"},[t("span",null,"✨ 新建设计方案")],-1)),t("div",ye,[e[18]||(e[18]=t("label",{class:"text-xs font-bold text-slate-700 dark:text-slate-300"},"方案名称 (如: 2026 夏季商店宣传发版图)",-1)),q(t("input",{"onUpdate:modelValue":e[2]||(e[2]=s=>l(p).name=s),type:"text",placeholder:"输入方案名称...",class:"w-full h-10 rounded-xl border border-slate-200 dark:border-gray-700 bg-slate-50 dark:bg-gray-900 px-3 text-xs font-medium focus:ring-2 focus:ring-blue-500",onKeyup:G(w,["enter"])},null,544),[[H,l(p).name]])]),t("div",_e,[t("button",{onClick:e[3]||(e[3]=s=>m.value=!1),class:"px-4 py-2 rounded-xl text-xs font-bold text-slate-600 dark:text-slate-300 hover:bg-slate-100 dark:hover:bg-gray-700"}," 取消 "),t("button",{onClick:w,disabled:l(p).processing||!l(p).name,class:"px-4 py-2 rounded-xl bg-blue-600 hover:bg-blue-700 text-white text-xs font-bold shadow-md"}," 立即创建 ",8,he)])])])):h("",!0),a(l(z),{open:g.value,"onUpdate:open":e[5]||(e[5]=s=>g.value=s)},{default:o(()=>[a(l(j),null,{default:o(()=>[a(l(S),null,{default:o(()=>[a(l(I),null,{default:o(()=>e[20]||(e[20]=[i("确认删除设计方案?")])),_:1,__:[20]}),a(l(F),null,{default:o(()=>{var s;return[e[21]||(e[21]=i(" 确定要彻底删除设计方案「")),t("strong",null,b((s=v.value)==null?void 0:s.name),1),e[22]||(e[22]=i("」吗?相关绑定的宣传截图与已导出的 Zip 压缩包将一并清理,此操作不可撤销。 "))]}),_:1,__:[21,22]})]),_:1}),a(l(N),null,{default:o(()=>[a(l(P),{onClick:e[4]||(e[4]=s=>g.value=!1)},{default:o(()=>e[23]||(e[23]=[i("取消")])),_:1,__:[23]}),a(l(T),{onClick:E,class:"bg-red-600 hover:bg-red-700 text-white font-semibold rounded-xl"},{default:o(()=>e[24]||(e[24]=[i(" 确认删除方案 ")])),_:1,__:[24]})]),_:1})]),_:1})]),_:1},8,["open"]),a(l(z),{open:c.value,"onUpdate:open":e[7]||(e[7]=s=>c.value=s)},{default:o(()=>[a(l(j),null,{default:o(()=>[a(l(S),null,{default:o(()=>[a(l(I),null,{default:o(()=>e[25]||(e[25]=[i("确认删除 Zip 压缩包?")])),_:1,__:[25]}),a(l(F),null,{default:o(()=>{var s;return[e[26]||(e[26]=i(" 确定要从服务器彻底删除方案「")),t("strong",null,b((s=k.value)==null?void 0:s.name),1),e[27]||(e[27]=i("」已导出的 Zip 压缩包吗?方案配置与截图数据将不受影响。 "))]}),_:1,__:[26,27]})]),_:1}),a(l(N),null,{default:o(()=>[a(l(P),{onClick:e[6]||(e[6]=s=>c.value=!1)},{default:o(()=>e[28]||(e[28]=[i("取消")])),_:1,__:[28]}),a(l(T),{onClick:A,class:"bg-rose-600 hover:bg-rose-700 text-white font-semibold rounded-xl"},{default:o(()=>e[29]||(e[29]=[i(" 确认删除 Zip ")])),_:1,__:[29]})]),_:1})]),_:1})]),_:1},8,["open"])]),_:1})],64))}});export{Ve as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.