初始化
This commit is contained in:
@@ -0,0 +1 @@
|
||||
.admin-menu[data-v-74e38916]{gap:5px;padding:12px 1px 8px}.admin-menu--collapsed[data-v-74e38916]{padding-inline:0}.mobile-menu-trigger[data-v-209f12ce]{margin-bottom:16px;background:#fff;border:1px solid var(--color-border);box-shadow:var(--shadow-sm)}
|
||||
@@ -0,0 +1 @@
|
||||
import{d as A,c as a,n as g,F as M,l as $,b as r,m as E,o as s,e as o,t as L,p as d,q as N,s as R,a as t,w as S,R as U,h as W,k as f,v as C,r as F,E as O,g as P}from"./index-CcdGGfCj.js";import{_ as h}from"./http-CGjljVXL.js";import{_ as V}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{l as x}from"./logo-DSdTLzUt.js";import{u as T}from"./auth-EXu5ynQ_.js";const q=["title","onClick"],D={key:0},j=A({__name:"AdminMenu",props:{activePath:{},collapsed:{type:Boolean}},emits:["navigate"],setup(c,{emit:m}){const p=m;return(b,v)=>(s(),a("nav",{class:g(["menu admin-menu",{"admin-menu--collapsed":c.collapsed}])},[(s(!0),a(M,null,$(r(E),e=>(s(),a("button",{key:e.path,class:g(["menu-item",{active:c.activePath===e.path}]),type:"button",title:c.collapsed?e.label:void 0,onClick:l=>p("navigate",e.path)},[o(h,{name:e.icon,size:20},null,8,["name"]),c.collapsed?d("",!0):(s(),a("span",D,L(e.label),1))],10,q))),128))],2))}}),z=V(j,[["__scopeId","data-v-74e38916"]]),G={key:0,class:"sidebar"},H=["title"],J={class:"brand-mark"},K=["src"],Q={key:0},X=["title","disabled"],Y={key:0},Z={class:"brand"},ee={class:"brand-mark"},te=["src"],ae=["disabled"],se={class:"shell-main"},ne={class:"page-content"},oe=A({__name:"AdminLayout",setup(c){const m=W(),p=P(),b=T(),v=f(window.innerWidth),e=f(!1),l=f(!1),i=C(()=>v.value<1200),_=C(()=>v.value<768),w=()=>{v.value=window.innerWidth,_.value||(e.value=!1)};N(()=>window.addEventListener("resize",w,{passive:!0})),R(()=>window.removeEventListener("resize",w));async function y(){if(!l.value){try{await O.confirm("退出后需要重新登录,确定退出管理后台吗?","退出登录",{type:"warning",confirmButtonText:"退出登录",cancelButtonText:"取消"})}catch(u){if(u==="cancel"||u==="close")return;throw u}l.value=!0;try{await b.logout(),await p.replace("/login")}finally{l.value=!1}}}function k(u){p.push(u),e.value=!1}return(u,n)=>{const I=F("el-drawer");return s(),a("div",{class:g(["admin-shell",{"is-collapsed":i.value&&!_.value}])},[_.value?d("",!0):(s(),a("aside",G,[t("div",{class:"brand",title:i.value?"剧游AI":void 0},[t("span",J,[t("img",{src:r(x),alt:""},null,8,K)]),i.value?d("",!0):(s(),a("strong",Q,"剧游AI"))],8,H),o(z,{"active-path":r(m).path,collapsed:i.value,onNavigate:k},null,8,["active-path","collapsed"]),t("button",{class:"menu-item logout",type:"button",title:i.value?"退出登录":void 0,disabled:l.value,onClick:y},[o(h,{name:"SwitchButton",size:20}),i.value?d("",!0):(s(),a("span",Y,"退出登录"))],8,X)])),o(I,{modelValue:e.value,"onUpdate:modelValue":n[0]||(n[0]=B=>e.value=B),direction:"ltr",size:"240px","with-header":!1,class:"mobile-drawer"},{default:S(()=>[t("div",Z,[t("span",ee,[t("img",{src:r(x),alt:""},null,8,te)]),n[2]||(n[2]=t("strong",null,"剧游AI",-1))]),o(z,{"active-path":r(m).path,onNavigate:k},null,8,["active-path"]),t("button",{class:"menu-item logout",type:"button",disabled:l.value,onClick:y},[o(h,{name:"SwitchButton",size:20}),n[3]||(n[3]=t("span",null,"退出登录",-1))],8,ae)]),_:1},8,["modelValue"]),t("div",se,[t("main",ne,[_.value?(s(),a("button",{key:0,class:"icon-button mobile-menu-trigger",type:"button",title:"打开菜单",onClick:n[1]||(n[1]=B=>e.value=!0)},[o(h,{name:"Menu",size:22})])):d("",!0),o(r(U))])])],2)}}}),de=V(oe,[["__scopeId","data-v-209f12ce"]]);export{de as default};
|
||||
@@ -0,0 +1 @@
|
||||
.admin-number-input[data-v-d9349eae]{width:100%}.admin-number-input[data-v-d9349eae] .el-input__wrapper{min-height:40px;padding:0 12px;border-radius:var(--radius-sm);box-shadow:0 0 0 1px var(--color-border) inset}.admin-number-input[data-v-d9349eae] .el-input__wrapper.is-focus{box-shadow:0 0 0 1px var(--color-primary) inset}.admin-number-input[data-v-d9349eae] .el-input__inner{font-variant-numeric:tabular-nums;text-align:left}.admin-number-input.is-readonly[data-v-d9349eae] .el-input__wrapper{background:var(--color-bg)}
|
||||
@@ -0,0 +1 @@
|
||||
import{d as g,k as m,B as x,o as N,y as B,n as F,r as I}from"./index-CcdGGfCj.js";import{_ as M}from"./_plugin-vue_export-helper-DlAUqK2U.js";const k=g({__name:"AdminNumberInput",props:{modelValue:{default:null},min:{},max:{},precision:{default:2},disabled:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1},placeholder:{default:""}},emits:["update:modelValue"],setup(t,{emit:p}){const l=t,u=p,n=m(r(l.modelValue)),i=m(!1);x(()=>l.modelValue,e=>{i.value||(n.value=r(e))});function r(e){if(e==null||e==="")return"";const a=Number(e);if(!Number.isFinite(a))return"";const o=10**l.precision;return String(Math.round(a*o)/o)}function f(e){const a=e.replace(/,/g,".").replace(/[^\d.-]/g,""),o=a.startsWith("-"),s=a.replace(/-/g,""),[d="",...h]=s.split("."),c=o?"-":"";if(l.precision===0)return c+d;const y=s.includes("."),V=h.join("").slice(0,l.precision);return c+d+(y?`.${V}`:"")}function v(e){if(n.value=f(e),n.value===""||n.value==="-"||n.value==="."||n.value==="-."){u("update:modelValue",null);return}const a=Number(n.value);Number.isFinite(a)&&u("update:modelValue",a)}function b(){if(i.value=!1,n.value===""||n.value==="-"||n.value==="."||n.value==="-."){n.value="",u("update:modelValue",null);return}let e=Number(n.value);if(!Number.isFinite(e)){n.value=r(l.modelValue);return}l.min!==void 0&&(e=Math.max(l.min,e)),l.max!==void 0&&(e=Math.min(l.max,e));const a=10**l.precision;e=Math.round(e*a)/a,n.value=String(e),u("update:modelValue",e)}return(e,a)=>{const o=I("el-input");return N(),B(o,{class:F(["admin-number-input",{"is-readonly":t.readonly}]),"model-value":n.value,type:"text",inputmode:t.precision===0?"numeric":"decimal",disabled:t.disabled,readonly:t.readonly,placeholder:t.placeholder,onFocus:a[0]||(a[0]=s=>i.value=!0),onInput:v,onBlur:b},null,8,["class","model-value","inputmode","disabled","readonly","placeholder"])}}}),C=M(k,[["__scopeId","data-v-d9349eae"]]);export{C as A};
|
||||
@@ -0,0 +1 @@
|
||||
.column-label[data-v-965ad148],.column-help[data-v-965ad148]{display:inline-flex;align-items:center}.column-label[data-v-965ad148]{gap:var(--space-xs)}.column-help[data-v-965ad148]{color:var(--color-text-secondary);cursor:help}
|
||||
@@ -0,0 +1 @@
|
||||
import{d as A,u as Q,q,c as _,e as o,a,C as E,w as l,x as K,F as M,l as U,p as v,y as C,k as y,j,r as i,z as P,o as p,i as d,t as r}from"./index-CcdGGfCj.js";import{h as Z,a as G,_ as D}from"./http-CGjljVXL.js";import{_ as H}from"./PageHeader.vue_vue_type_script_setup_true_lang-ClDoYPHj.js";import{_ as J}from"./_plugin-vue_export-helper-DlAUqK2U.js";const O={class:"page-stack management-page"},R={class:"panel filter-bar"},W={class:"panel table-panel"},X={class:"column-label"},Y={class:"column-help"},ee={class:"column-label"},te={class:"column-help"},ae={key:0,class:"mobile-card-list"},oe=A({__name:"AuditLogsView",setup(ne){const V=Q(),g=y(!1),m=y([]),f=y(0),s=j({keyword:"",page:1,page_size:15}),z={create:"新建",batch_create:"批量新建",update:"修改",batch_update:"批量修改",toggle:"状态变更",delete:"删除",batch_delete:"批量删除",reorder:"调整顺序",generate:"生成",save:"保存",save_draft:"保存草稿",grant_points:"增加积分",password_changed:"修改密码",password_change_failed:"修改密码失败"},I={users:"用户","redemption-codes":"兑换码",styles:"风格",prompts:"提示词",channels:"渠道",models:"模型","admin-auth":"管理员账号"};async function c(){g.value=!0;try{const{data:n}=await Z.get("/audit-logs",{params:s});m.value=n.data.items,f.value=n.data.total}catch(n){const e=G(n);V.error(e.message,e.copyText)}finally{g.value=!1}}function L(){s.keyword="",s.page=1,c()}function b(n){return z[n]||n||"未知操作"}function w(n){return I[n]||n||"未知资源"}function k(n){return n?new Date(String(n)).toLocaleString("zh-CN",{timeZone:"Asia/Shanghai",hour12:!1}):"--"}return q(c),(n,e)=>{const T=i("el-input"),h=i("el-button"),u=i("el-table-column"),N=i("el-tag"),x=i("el-tooltip"),S=i("el-table"),B=i("el-empty"),F=i("el-pagination"),$=P("loading");return p(),_("div",O,[o(H,{title:"审计日志"}),a("section",R,[o(T,{modelValue:s.keyword,"onUpdate:modelValue":e[0]||(e[0]=t=>s.keyword=t),modelModifiers:{trim:!0},clearable:"",placeholder:"管理员、操作、资源、原因、对象 ID 或追踪 ID",onKeyup:e[1]||(e[1]=E(t=>{s.page=1,c()},["enter"]))},null,8,["modelValue"]),o(h,{type:"primary",onClick:e[2]||(e[2]=t=>{s.page=1,c()})},{default:l(()=>[...e[4]||(e[4]=[d("查询",-1)])]),_:1}),o(h,{onClick:L},{default:l(()=>[...e[5]||(e[5]=[d("重置",-1)])]),_:1})]),K((p(),_("section",W,[o(S,{class:"desktop-table",data:m.value},{default:l(()=>[o(u,{prop:"admin_username",label:"管理员","min-width":"120","show-overflow-tooltip":""}),o(u,{label:"操作","min-width":"120"},{default:l(({row:t})=>[o(N,{effect:"plain"},{default:l(()=>[d(r(b(t.action)),1)]),_:2},1024)]),_:1}),o(u,{label:"资源","min-width":"120"},{default:l(({row:t})=>[d(r(w(t.resource_type)),1)]),_:1}),o(u,{prop:"resource_id","min-width":"180","show-overflow-tooltip":""},{header:l(()=>[a("span",X,[e[6]||(e[6]=d(" 对象 ID ",-1)),o(x,{content:"被操作数据的唯一标识;即使对象改名或删除,仍可用它准确定位记录。",placement:"top"},{default:l(()=>[a("span",Y,[o(D,{name:"QuestionFilled"})])]),_:1})])]),_:1}),o(u,{prop:"reason",label:"操作原因","min-width":"180","show-overflow-tooltip":""},{default:l(({row:t})=>[d(r(t.reason||"--"),1)]),_:1}),o(u,{prop:"trace_id","min-width":"180","show-overflow-tooltip":""},{header:l(()=>[a("span",ee,[e[7]||(e[7]=d(" 请求追踪 ID ",-1)),o(x,{content:"本次请求的唯一追踪编号,用于在服务器日志中查找并关联同一次请求。",placement:"top"},{default:l(()=>[a("span",te,[o(D,{name:"QuestionFilled"})])]),_:1})])]),_:1}),o(u,{label:"操作时间","min-width":"180"},{default:l(({row:t})=>[d(r(k(t.created_at)),1)]),_:1})]),_:1},8,["data"]),m.value.length?(p(),_("div",ae,[(p(!0),_(M,null,U(m.value,t=>(p(),_("article",{key:t.id,class:"data-card"},[a("dl",null,[e[8]||(e[8]=a("dt",null,"管理员",-1)),a("dd",null,r(t.admin_username),1),e[9]||(e[9]=a("dt",null,"操作",-1)),a("dd",null,r(b(t.action)),1),e[10]||(e[10]=a("dt",null,"资源",-1)),a("dd",null,r(w(t.resource_type)),1),e[11]||(e[11]=a("dt",null,"对象 ID",-1)),a("dd",null,r(t.resource_id||"--"),1),e[12]||(e[12]=a("dt",null,"操作原因",-1)),a("dd",null,r(t.reason||"--"),1),e[13]||(e[13]=a("dt",null,"请求追踪 ID",-1)),a("dd",null,r(t.trace_id||"--"),1),e[14]||(e[14]=a("dt",null,"操作时间",-1)),a("dd",null,r(k(t.created_at)),1)])]))),128))])):v("",!0),!g.value&&!m.value.length?(p(),C(B,{key:1,description:"暂无审计日志"})):v("",!0),f.value>s.page_size?(p(),C(F,{key:2,"current-page":s.page,"onUpdate:currentPage":e[3]||(e[3]=t=>s.page=t),background:"",layout:"total,prev,pager,next",total:f.value,"page-size":s.page_size,onCurrentChange:c},null,8,["current-page","total","page-size"])):v("",!0)])),[[$,g.value]])])}}}),de=J(oe,[["__scopeId","data-v-965ad148"]]);export{de as default};
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
.channel-editor[data-v-ace04131]{display:grid;gap:16px}.channel-section[data-v-ace04131]{padding:18px;border:1px solid var(--color-border-light);border-radius:var(--radius-md);background:var(--color-surface)}.channel-section__header[data-v-ace04131]{display:flex;align-items:flex-start;gap:12px;margin-bottom:18px}.channel-section__icon[data-v-ace04131]{width:34px;height:34px;flex:0 0 34px;display:grid;place-items:center;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-primary-soft);color:var(--color-primary)}.channel-section__header h3[data-v-ace04131]{color:var(--color-text);font-size:15px}.channel-section__header p[data-v-ace04131]{margin-top:3px;color:var(--color-text-secondary);font-size:12px;line-height:1.5}.channel-grid[data-v-ace04131]{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 18px}.channel-grid--three[data-v-ace04131]{grid-template-columns:repeat(3,minmax(0,1fr))}.channel-field--full[data-v-ace04131]{grid-column:1 / -1}.masked-key-row[data-v-ace04131]{width:100%;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px}.masked-key-row[data-v-ace04131] .el-input__inner{font-variant-numeric:tabular-nums}.masked-key-row>.el-button[data-v-ace04131]{min-height:40px}.api-key-helper-row[data-v-ace04131]{width:100%;display:flex;align-items:center;justify-content:space-between;gap:12px}.exchange-rate-row[data-v-ace04131]{display:grid;grid-template-columns:minmax(0,1fr) 32px minmax(0,1fr);align-items:center;gap:12px}.exchange-rate-row__equals[data-v-ace04131]{margin-top:2px;color:var(--color-text-secondary);font-size:18px;text-align:center}.exchange-rate-summary[data-v-ace04131]{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:11px 13px;border:1px solid var(--color-border-light);border-radius:var(--radius-sm);background:var(--color-bg);color:var(--color-text-secondary);font-size:12px}.exchange-rate-summary strong[data-v-ace04131]{color:var(--color-text);font-size:13px;font-variant-numeric:tabular-nums}@media (max-width: 767px){.channel-section[data-v-ace04131]{padding:14px}.channel-grid[data-v-ace04131],.channel-grid--three[data-v-ace04131]{grid-template-columns:1fr}.exchange-rate-row[data-v-ace04131]{grid-template-columns:1fr;gap:0}.exchange-rate-row__equals[data-v-ace04131]{margin:-4px 0 10px}.exchange-rate-summary[data-v-ace04131]{align-items:flex-start;flex-direction:column;gap:3px}.masked-key-row[data-v-ace04131]{grid-template-columns:1fr}}
|
||||
@@ -0,0 +1 @@
|
||||
import{d as h,u as v,c as x,a as t,b as p,e as o,w as r,f as k,r as n,g as A,h as T,o as U,i as N,j as R,k as S,D as q}from"./index-CcdGGfCj.js";import{_ as c,a as B}from"./http-CGjljVXL.js";import{l as C}from"./logo-DSdTLzUt.js";import{u as D}from"./auth-EXu5ynQ_.js";const E={class:"login-page"},L={class:"login-panel"},M={class:"login-brand"},I={class:"brand-mark"},j=["src"],G=h({__name:"LoginView",setup(z){const l=D(),f=v(),_=A(),g=T(),s=R({username:"",password:""}),m=S(),w={username:[{required:!0,message:"请输入管理员账号",trigger:"blur"}],password:[{required:!0,message:"请输入密码",trigger:"blur"}]};async function b(){var i;if(!l.loading&&await((i=m.value)==null?void 0:i.validate().catch(()=>!1)))try{await l.login(s.username,s.password),_.replace(String(g.query.redirect||q))}catch(e){const a=B(e);f.error(a.message,a.copyText)}}return(i,e)=>{const a=n("el-input"),d=n("el-form-item"),V=n("el-button"),y=n("el-form");return U(),x("main",E,[t("section",L,[t("div",M,[t("span",I,[t("img",{src:p(C),alt:""},null,8,j)]),e[2]||(e[2]=t("span",null,"剧游AI",-1))]),e[4]||(e[4]=t("div",{class:"login-heading"},[t("h1",{id:"login-title"},"管理后台登录")],-1)),o(y,{ref_key:"formRef",ref:m,model:s,rules:w,"label-position":"top",size:"large",onSubmit:k(b,["prevent"])},{default:r(()=>[o(d,{label:"管理员账号",prop:"username"},{default:r(()=>[o(a,{modelValue:s.username,"onUpdate:modelValue":e[0]||(e[0]=u=>s.username=u),modelModifiers:{trim:!0},autocomplete:"username",placeholder:"请输入管理员账号"},{prefix:r(()=>[o(c,{name:"User"})]),_:1},8,["modelValue"])]),_:1}),o(d,{label:"密码",prop:"password"},{default:r(()=>[o(a,{modelValue:s.password,"onUpdate:modelValue":e[1]||(e[1]=u=>s.password=u),type:"password",autocomplete:"current-password","show-password":"",placeholder:"请输入密码"},{prefix:r(()=>[o(c,{name:"Lock"})]),_:1},8,["modelValue"])]),_:1}),o(V,{class:"login-submit",type:"primary","native-type":"submit",loading:p(l).loading},{default:r(()=>[...e[3]||(e[3]=[N("登录",-1)])]),_:1},8,["loading"])]),_:1},8,["model"])])])}}});export{G as default};
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
.el-dialog.managed-scroll-dialog.model-dialog{height:auto}.el-dialog.managed-scroll-dialog.model-dialog .el-dialog__body{max-height:calc(100dvh - 180px);flex:0 1 auto}.model-identity-grid[data-v-d019cb68]{grid-template-columns:repeat(3,minmax(0,1fr))}.price-list[data-v-d019cb68]{display:flex;flex-direction:column;gap:4px;line-height:1.45}.model-price-section[data-v-d019cb68]{margin-top:2px;padding:18px;border:1px solid var(--color-border-light);border-radius:var(--radius-md);background:var(--color-surface)}.model-price-section__header[data-v-d019cb68]{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:16px}.model-price-section h3[data-v-d019cb68]{font-size:14px}.model-price-section__header p[data-v-d019cb68]{margin-top:4px;color:var(--color-text-secondary);font-size:12px;line-height:1.5}.model-price-rates[data-v-d019cb68]{flex:0 0 auto;display:grid;gap:4px;color:var(--color-text-secondary);font-size:12px;font-variant-numeric:tabular-nums;text-align:right}.model-price-grid[data-v-d019cb68]{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px}.model-price-card[data-v-d019cb68]{min-width:0;padding:14px;border:1px solid var(--color-border-light);border-radius:var(--radius-sm);background:var(--color-bg)}.model-price-card[data-v-d019cb68] .el-form-item{margin-bottom:12px}.price-conversion[data-v-d019cb68]{display:grid;gap:8px;margin:0}.price-conversion>div[data-v-d019cb68]{display:flex;align-items:center;justify-content:space-between;gap:10px}.price-conversion dt[data-v-d019cb68]{color:var(--color-text-secondary);font-size:12px}.price-conversion dd[data-v-d019cb68]{margin:0;color:var(--color-text);font-size:12px;font-variant-numeric:tabular-nums;text-align:right}.text-billing-settings[data-v-d019cb68]{display:grid;grid-template-columns:minmax(0,1fr) minmax(180px,.7fr);gap:16px;align-items:start}.field-hint[data-v-d019cb68]{margin-top:6px;color:var(--color-text-secondary);font-size:12px;line-height:1.5}@media (max-width: 767px){.model-identity-grid[data-v-d019cb68]{grid-template-columns:1fr}.model-price-section[data-v-d019cb68]{padding:14px}.model-price-section__header[data-v-d019cb68]{flex-direction:column;gap:10px}.model-price-rates[data-v-d019cb68]{text-align:left}.model-price-grid[data-v-d019cb68],.text-billing-settings[data-v-d019cb68]{grid-template-columns:1fr}}
|
||||
@@ -0,0 +1 @@
|
||||
import{d as s,c as o,a as e,t as n,A as r,o as c}from"./index-CcdGGfCj.js";const l={class:"page-header"},i={class:"page-actions"},_=s({__name:"PageHeader",props:{title:{},description:{}},setup(t){return(a,d)=>(c(),o("header",l,[e("div",null,[e("h2",null,n(t.title),1)]),e("div",i,[r(a.$slots,"default")])]))}});export{_};
|
||||
@@ -0,0 +1 @@
|
||||
.master-detail-heading[data-v-0b46c3ec]{align-items:center}.master-detail-panel[data-v-0b46c3ec]{display:grid;flex:none;height:max(760px,calc(100dvh - 118px));min-height:760px;grid-template-columns:300px minmax(0,1fr);overflow:hidden;border:1px solid var(--color-border-light);border-radius:var(--radius-lg);background:#fff;box-shadow:var(--shadow-sm)}.master-list[data-v-0b46c3ec]{display:flex;flex-direction:column;min-width:0;min-height:0;border-right:1px solid var(--color-border-light);background:#f8fafc}.master-list-toolbar[data-v-0b46c3ec]{padding:16px;border-bottom:1px solid var(--color-border-light)}.master-list-items[data-v-0b46c3ec]{flex:1;min-height:0;overflow:auto;padding:8px}.master-editor[data-v-0b46c3ec]{min-width:0;padding:26px 30px;background:#fff}.master-empty[data-v-0b46c3ec]{height:100%;display:grid;place-items:center;color:var(--color-text-secondary);font-size:14px}.master-detail-heading[data-v-0b46c3ec] .page-actions{align-items:center}@media (max-width: 800px){.master-detail-panel[data-v-0b46c3ec]{display:grid;flex:none;height:auto;grid-template-columns:1fr;min-height:0}.master-list[data-v-0b46c3ec]{max-height:280px;border-right:0;border-bottom:1px solid var(--color-border-light)}.master-editor[data-v-0b46c3ec]{padding:20px 16px}}.header-actions[data-v-2c741e31]{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:8px}.header-actions[data-v-2c741e31] .el-button{margin-left:0}.restore-input[data-v-2c741e31]{display:none}.master-item[data-v-2c741e31]{width:100%;padding:12px 13px;display:flex;flex-direction:column;gap:5px;border:1px solid transparent;border-radius:9px;background:transparent;color:var(--color-text);text-align:left;cursor:pointer;transition:background .16s,border-color .16s}.master-item[data-v-2c741e31]:hover{background:#eef4ff}.master-item.active[data-v-2c741e31]{border-color:#b8cff5;background:#eaf2ff}.master-item strong[data-v-2c741e31]{font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.master-item span[data-v-2c741e31]{color:var(--color-text-secondary);font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.create-prompt-button[data-v-2c741e31]{width:100%;margin:0 0 8px;justify-content:center}.editor-heading[data-v-2c741e31]{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding-bottom:18px;border-bottom:1px solid var(--color-border-light)}.editor-heading span[data-v-2c741e31]{color:var(--color-text-secondary);font-size:12px}.editor-heading h3[data-v-2c741e31]{margin-top:4px;font-size:20px}.editor-form[data-v-2c741e31]{display:flex;flex:1;min-height:0;flex-direction:column;padding-top:22px}.form-grid[data-v-2c741e31]{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px}.type-select[data-v-2c741e31]{width:100%}.prompt-content-field[data-v-2c741e31]{display:flex;flex:1;min-height:0;flex-direction:column}.prompt-content-field[data-v-2c741e31] .el-form-item__content{flex:1;min-height:0}.prompt-content-field[data-v-2c741e31] .el-textarea{height:100%}.prompt-content-field[data-v-2c741e31] .el-textarea__inner{height:100%;min-height:420px!important}.editor-actions[data-v-2c741e31]{display:flex;justify-content:flex-end;gap:8px;padding-top:18px;border-top:1px solid var(--color-border-light)}[data-v-2c741e31] .master-editor{display:flex;min-height:0;flex-direction:column}@media (max-width: 640px){.header-actions[data-v-2c741e31]{width:100%;justify-content:flex-start}.form-grid[data-v-2c741e31]{grid-template-columns:1fr}.prompt-content-field[data-v-2c741e31] .el-textarea__inner{min-height:360px!important}}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
.security-page[data-v-003dbbf8]{max-width:760px}.security-panel[data-v-003dbbf8]{padding:24px}.security-intro[data-v-003dbbf8]{display:flex;align-items:flex-start;gap:14px;padding-bottom:20px;border-bottom:1px solid var(--color-border-light)}.security-icon[data-v-003dbbf8]{width:42px;height:42px;flex:0 0 42px;display:grid;place-items:center;color:var(--color-primary);background:var(--color-primary-soft);border-radius:var(--radius-md)}.security-intro h3[data-v-003dbbf8]{font-size:16px}.security-intro p[data-v-003dbbf8]{margin-top:5px;color:var(--color-text-secondary);font-size:14px}.password-form[data-v-003dbbf8]{max-width:480px;margin-top:22px}.form-actions[data-v-003dbbf8]{display:flex;justify-content:flex-end;padding-top:4px}@media (max-width: 767px){.security-panel[data-v-003dbbf8]{padding:18px}.password-form[data-v-003dbbf8]{max-width:none}.form-actions .el-button[data-v-003dbbf8]{width:100%}}
|
||||
@@ -0,0 +1 @@
|
||||
import{d as v,u as V,c as b,e as o,a,w as l,r as d,o as h,i as x,k as m,j as k,g as C}from"./index-CcdGGfCj.js";import{h as S,c as q,a as B,_ as E}from"./http-CGjljVXL.js";import{_ as N}from"./PageHeader.vue_vue_type_script_setup_true_lang-ClDoYPHj.js";import{u as R}from"./auth-EXu5ynQ_.js";import{_ as T}from"./_plugin-vue_export-helper-DlAUqK2U.js";const U={class:"page-stack security-page"},A={class:"panel security-panel"},$={class:"security-intro"},j={class:"security-icon"},z={class:"form-actions"},I=v({__name:"SecurityView",setup(L){const w=C(),f=R(),c=V(),p=m(),u=m(!1),s=k({currentPassword:"",newPassword:"",confirmPassword:""}),_={currentPassword:[{required:!0,message:"请输入当前密码",trigger:"blur"}],newPassword:[{required:!0,message:"请输入新密码",trigger:"blur"},{min:8,max:20,message:"密码长度必须为 8~20 位",trigger:"blur"}],confirmPassword:[{required:!0,message:"请再次输入新密码",trigger:"blur"},{validator:(n,e,r)=>e===s.newPassword?r():r(new Error("两次输入的新密码不一致")),trigger:"blur"}]};async function g(){var n;if(await((n=p.value)==null?void 0:n.validate().catch(()=>!1))){u.value=!0;try{await S.put("/auth/password",{current_password:s.currentPassword,new_password:s.newPassword,confirm_password:s.confirmPassword}),q(),f.profile=null,c.success("密码已修改,请使用新密码重新登录"),await w.replace("/login")}catch(e){const r=B(e);c.error(r.message,r.copyText)}finally{u.value=!1}}}return(n,e)=>{const r=d("el-input"),i=d("el-form-item"),P=d("el-button"),y=d("el-form");return h(),b("div",U,[o(N,{title:"账号安全"}),a("section",A,[a("div",$,[a("span",j,[o(E,{name:"Lock",size:22})]),e[3]||(e[3]=a("div",null,[a("h3",null,"修改管理员密码"),a("p",null,"需验证当前密码。修改成功后将退出当前账号,请使用新密码重新登录。")],-1))]),o(y,{ref_key:"formRef",ref:p,model:s,rules:_,"label-position":"top",class:"password-form"},{default:l(()=>[o(i,{label:"当前密码",prop:"currentPassword"},{default:l(()=>[o(r,{modelValue:s.currentPassword,"onUpdate:modelValue":e[0]||(e[0]=t=>s.currentPassword=t),type:"password",autocomplete:"current-password","show-password":"",placeholder:"请输入当前密码"},null,8,["modelValue"])]),_:1}),o(i,{label:"新密码",prop:"newPassword"},{default:l(()=>[o(r,{modelValue:s.newPassword,"onUpdate:modelValue":e[1]||(e[1]=t=>s.newPassword=t),type:"password",autocomplete:"new-password","show-password":"",placeholder:"请输入 8~20 位新密码"},null,8,["modelValue"])]),_:1}),o(i,{label:"确认新密码",prop:"confirmPassword"},{default:l(()=>[o(r,{modelValue:s.confirmPassword,"onUpdate:modelValue":e[2]||(e[2]=t=>s.confirmPassword=t),type:"password",autocomplete:"new-password","show-password":"",placeholder:"请再次输入新密码"},null,8,["modelValue"])]),_:1}),a("div",z,[o(P,{type:"primary",loading:u.value,onClick:g},{default:l(()=>[...e[4]||(e[4]=[x("确认修改",-1)])]),_:1},8,["loading"])])]),_:1},8,["model"])])])}}}),K=T(I,[["__scopeId","data-v-003dbbf8"]]);export{K as default};
|
||||
@@ -0,0 +1 @@
|
||||
.style-grid-panel[data-v-3dcbb1fc]{flex:1;min-height:0;overflow:auto}.style-card-grid[data-v-3dcbb1fc]{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:16px}.style-card[data-v-3dcbb1fc]{min-width:0;overflow:hidden;background:#fff;border:1px solid var(--color-border);border-radius:var(--radius-lg);transition:border-color .18s,transform .18s}.style-card[data-v-3dcbb1fc]:hover{border-color:var(--color-primary);transform:translateY(-2px)}.style-card.is-dragging[data-v-3dcbb1fc]{opacity:.55}.style-card__visual[data-v-3dcbb1fc]{height:230px;position:relative;overflow:hidden;background:var(--color-bg)}.style-card__visual img[data-v-3dcbb1fc]{width:100%;height:100%;object-fit:cover}.style-card__drag[data-v-3dcbb1fc]{position:absolute;top:10px;left:10px;width:34px;height:34px;display:grid;place-items:center;color:#fff;background:#111827;border-radius:8px;cursor:grab}.style-card__actions[data-v-3dcbb1fc]{position:absolute;top:10px;right:10px;display:flex;gap:6px}.style-card>strong[data-v-3dcbb1fc]{padding:13px 14px;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.style-form[data-v-3dcbb1fc]{display:grid;grid-template-columns:180px minmax(0,1fr);gap:var(--space-lg);align-items:start}.style-form__preview-column[data-v-3dcbb1fc],.style-form__fields[data-v-3dcbb1fc]{min-width:0}.style-form__label[data-v-3dcbb1fc]{display:block;margin-bottom:var(--space-sm);color:var(--color-text);font-size:var(--font-size-sm);line-height:22px}.style-form__label[data-v-3dcbb1fc]:before{margin-right:var(--space-xs);color:var(--color-danger);content:"*"}.upload-preview-frame[data-v-3dcbb1fc]{width:100%;aspect-ratio:9 / 16;overflow:hidden;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg)}.upload-preview[data-v-3dcbb1fc]{display:block;width:100%;height:100%;object-fit:contain}.upload-preview-empty[data-v-3dcbb1fc]{display:flex;height:100%;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-sm);color:var(--color-text-secondary);font-size:var(--font-size-sm)}.upload-preview-empty[data-v-3dcbb1fc] .el-icon{font-size:28px}.style-form__fields[data-v-3dcbb1fc] .el-form-item:last-child{margin-bottom:0}.field-helper[data-v-3dcbb1fc]{width:100%;margin:var(--space-sm) 0 0;color:var(--color-text-secondary);font-size:var(--font-size-sm);line-height:1.6}@media (max-width: 600px){.style-card-grid[data-v-3dcbb1fc]{grid-template-columns:repeat(2,minmax(0,1fr))}.style-card__visual[data-v-3dcbb1fc]{height:190px}.style-form[data-v-3dcbb1fc]{grid-template-columns:1fr;gap:var(--space-md)}.upload-preview-frame[data-v-3dcbb1fc]{width:min(180px,100%);margin:0 auto}}
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
.desktop-user-table[data-v-7d96e9a9]{width:100%}.batch-preview[data-v-7d96e9a9]{margin-bottom:0}.batch-helper[data-v-7d96e9a9]{margin-bottom:18px}.limit-cell[data-v-7d96e9a9]{min-width:0;display:flex;align-items:center;gap:6px}.limit-cell>span[data-v-7d96e9a9]{min-width:58px;color:var(--color-text-secondary);font-variant-numeric:tabular-nums}.limit-cell .el-button[data-v-7d96e9a9]{margin:0}.limit-edit-button[data-v-7d96e9a9]{width:28px;height:28px;padding:0}.limit-input[data-v-7d96e9a9]{width:118px}.limit-input[data-v-7d96e9a9] input{font-variant-numeric:tabular-nums}.point-grant-summary[data-v-7d96e9a9]{margin-bottom:var(--space-md);padding:var(--space-sm) var(--space-md);display:flex;flex-direction:column;gap:var(--space-xs);color:var(--color-text);background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-sm)}.point-grant-summary span[data-v-7d96e9a9]{color:var(--color-text-secondary);font-size:var(--font-size-sm);font-variant-numeric:tabular-nums}@media (max-width: 767px){.limit-cell[data-v-7d96e9a9]{justify-content:flex-end}.limit-input[data-v-7d96e9a9]{width:min(128px,100%)}}
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
const s=(t,r)=>{const o=t.__vccOpts||t;for(const[c,e]of r)o[c]=e;return o};export{s as _};
|
||||
@@ -0,0 +1 @@
|
||||
import{G as s}from"./index-CcdGGfCj.js";import{h as e,c as l,s as n}from"./http-CGjljVXL.js";const h=s("auth",{state:()=>({profile:JSON.parse(localStorage.getItem("admin_profile")||"null"),loading:!1}),getters:{authenticated:()=>!!localStorage.getItem("admin_access_token")},actions:{async login(t,o){this.loading=!0;try{const{data:a}=await e.post("/auth/login",{username:t,password:o});n(a.data),this.profile=a.data.admin}finally{this.loading=!1}},async logout(){const t=localStorage.getItem("admin_refresh_token");try{await e.post("/auth/logout",{refresh_token:t})}finally{l(),this.profile=null}}}});export{h as u};
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
|
After Width: | Height: | Size: 97 KiB |
@@ -0,0 +1 @@
|
||||
const o="/admin/assets/logo-CztthSFi.png";export{o as l};
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 97 KiB |
@@ -0,0 +1,14 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<link rel="icon" type="image/png" href="/admin/assets/logo.png?v=1" />
|
||||
<title>剧游AI-后台管理</title>
|
||||
<script type="module" crossorigin src="/admin/assets/index-CcdGGfCj.js"></script>
|
||||
<link rel="stylesheet" crossorigin href="/admin/assets/index-eMcWLcp0.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="app"></div>
|
||||
</body>
|
||||
</html>
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,3 @@
|
||||
import{d as ae,B as re,y as le,o as c,c as u,p as $,a as d,q as U,aa as ie,O as se,s as M,f as C,e as ce,b as ue,t as b,G as de,N as me,F as X,v as q,k as y,A as W,I as A}from"./index-p1BAR2Hc.js";import{X as pe}from"./icons-CbZw_MCi.js";import{L as ve}from"./LoadingMedia-q1A6xJc7.js";import{_ as fe}from"./_plugin-vue_export-helper-DlAUqK2U.js";const ge=["contenteditable","data-placeholder"],ye=["src","alt"],he={key:0,class:"mention-flat-header"},we={key:1,class:"mention-header"},ke={class:"mention-categories"},be=["onMousedown"],Ne={class:"mention-list"},xe=["onMouseenter","onMousedown"],_e={key:1},Me={key:0},Ce=ae({__name:"AssetPromptEditor",props:{modelValue:{},assets:{},placeholder:{},expanded:{type:Boolean},readonly:{type:Boolean},variant:{},floatingPreview:{type:Boolean}},emits:["update:modelValue","blur"],setup(m,{emit:G}){const l=m,P=G,p=y(),h=y(!1),N=y(""),w=y("character"),R=y(0),x=y(0),v=y();let f=null,E=!1;const H={character:"角色",scene:"场景",prop:"道具",custom:"自定义"},S=[{key:"character",label:"角色"},{key:"voice",label:"音色"},{key:"scene",label:"场景"},{key:"prop",label:"道具"},{key:"custom",label:"自定义"}],Q=W(()=>l.variant==="media"?[{key:"character",label:"图片"},{key:"voice",label:"音频"},{key:"video",label:"视频"}]:l.variant==="redraw"?S.filter(e=>e.key==="character"||e.key==="scene"||e.key==="prop"):S),T=W(()=>{const e=N.value.trim().toLowerCase(),o=l.assets.filter(t=>(l.variant==="drama-storyboard"||(w.value==="voice"?!!t.audio_url:w.value==="video"?!!t.video_url:t.asset_type===w.value&&(l.variant!=="media"||!t.audio_url&&!t.video_url)))&&(!e||t.name.toLowerCase().includes(e)));return l.variant==="drama-storyboard"?o:o.slice(0,12)});function L(e){return l.variant==="drama-storyboard"&&e.id.startsWith("storyboard-image-")}function I(e){return L(e)?"storyboard-image":e.audio_url&&e.asset_type==="character"?"voice":e.asset_type}function D(e){return l.variant==="media"?e.video_url?"视频":e.audio_url?"音频":"图片":L(e)?"分镜图":l.variant==="drama-storyboard"&&e.asset_type==="character"&&e.audio_url?"人物 / 音色":I(e)==="voice"?"音色":H[e.asset_type]||"资产"}function O(e){const o=document.createElement("span");o.className=`mention-token mention-token--${I(e)}`,o.contentEditable="false",o.dataset.assetId=e.id,o.dataset.assetName=e.name;const t=!!e.image_url&&l.variant!=="media"&&l.variant!=="redraw",n=t?document.createElement("img"):document.createElement("b");t?(n.src=e.image_url,n.alt=e.name,o.dataset.previewUrl=e.image_url):n.textContent=D(e);const r=document.createElement("span");r.className="mention-name",r.textContent=e.name;const i=[n,r];if(!l.readonly){const a=document.createElement("button");a.type="button",a.className="mention-remove",a.dataset.removeMention="true",a.title=`移除资产 ${e.name}`,a.textContent="删除",i.push(a)}if(t&&!l.floatingPreview){const a=document.createElement("span");a.className="mention-preview",a.contentEditable="false";const s=document.createElement("img");s.src=e.image_url,s.alt=e.name,a.append(s),i.push(a)}return o.append(...i),o}function J(e){if(!l.floatingPreview||!(e.target instanceof Element))return;const o=e.target.closest(".mention-token[data-preview-url]"),t=p.value;if(!o||!t||!o.dataset.previewUrl)return;const n=o.getBoundingClientRect(),r=154,i=8,a=8,s=window.innerWidth-r-a,g=window.innerHeight-r-a,z=[{left:n.right+i,top:n.top},{left:n.left-r-i,top:n.top},{left:n.left,top:n.bottom+i},{left:n.left,top:n.top-r-i}].find(_=>_.left>=a&&_.left<=s&&_.top>=a&&_.top<=g)||{left:Math.min(Math.max(n.left,a),s),top:Math.min(Math.max(n.bottom+i,a),g)};v.value={url:o.dataset.previewUrl,alt:o.dataset.assetName||"",left:`${z.left}px`,top:`${z.top}px`}}function K(e){if(!(e.target instanceof Element))return;const o=e.target.closest(".mention-token[data-preview-url]");o&&e.relatedTarget instanceof Node&&o.contains(e.relatedTarget)||(v.value=void 0)}function k(){v.value=void 0}function F(){k();const e=p.value;if(!e||document.activeElement===e)return;E=!0,e.replaceChildren();const o=[...l.assets].filter(a=>a.name.trim()).sort((a,s)=>s.name.length-a.name.length),t=new Map(o.map(a=>[a.name,a])),n=o.map(a=>a.name.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")),r=n.length?new RegExp(`@(${n.join("|")})`,"g"):null;let i=0;if(r)for(const a of l.modelValue.matchAll(r)){const s=a.index||0;s>i&&e.append(document.createTextNode(l.modelValue.slice(i,s)));const g=t.get(a[1]);e.append(g?O(g):document.createTextNode(a[0])),i=s+a[0].length}i<l.modelValue.length&&e.append(document.createTextNode(l.modelValue.slice(i))),E=!1}function Y(){const e=p.value;if(!e)return"";const o=t=>{var i;if(t.nodeType===Node.TEXT_NODE)return t.textContent||"";const n=t;if((i=n.classList)!=null&&i.contains("mention-token"))return`@${n.dataset.assetName||""}`;if(n.tagName==="BR")return`
|
||||
`;const r=Array.from(t.childNodes).map(o).join("");return n.tagName==="DIV"?`${r}
|
||||
`:r};return Array.from(e.childNodes).map(o).join("").replace(/\n$/,"")}function B(){E||P("update:modelValue",Y())}function Z(){const e=p.value,o=window.getSelection();if(!e||!(o!=null&&o.rangeCount)||!e.contains(o.anchorNode)){h.value=!1;return}const t=o.getRangeAt(0).cloneRange(),n=t.cloneRange();n.selectNodeContents(e),n.setEnd(o.anchorNode,o.anchorOffset),f=t;const r=n.toString().match(/@([^@\s,。;:,.!?]*)$/);h.value=!!r,r&&(N.value=r[1]||"",R.value=r[0].length,x.value=0)}function ee(){k(),B(),Z()}async function te(){var e;h.value=!1,f=null,await A(),(e=p.value)==null||e.focus()}async function ne(e){const o=p.value,t=window.getSelection();if(!o||!(t!=null&&t.rangeCount)&&!f)return;const n=(f==null?void 0:f.cloneRange())||t.getRangeAt(0);let r=n.startContainer;r.nodeType!==Node.TEXT_NODE&&(r=document.createTextNode(""),n.insertNode(r),n.setStart(r,0));const i=r.textContent||"",a=n.startOffset,s=Math.max(0,a-R.value);r.textContent=i.slice(0,s)+i.slice(a),n.setStart(r,s),n.collapse(!0);const g=O(e),V=document.createTextNode(" ");n.insertNode(V),n.insertNode(g),n.setStartAfter(V),n.collapse(!0),t.removeAllRanges(),t.addRange(n),h.value=!1,f=null,B(),await A(),o.focus()}function oe(e){var r;const t=e.target.closest("[data-remove-mention]");if(!t)return;e.preventDefault(),e.stopPropagation(),k();const n=t.closest(".mention-token");n==null||n.remove(),B(),(r=p.value)==null||r.focus()}function j(){k(),window.setTimeout(()=>{var e;(e=document.activeElement)!=null&&e.closest(".mention-panel")||(h.value=!1,f=null)},120),P("blur")}return re(()=>[l.modelValue,l.assets],()=>A(F),{deep:!0}),le(F),(e,o)=>(c(),u("div",{class:$(["asset-prompt-editor",{expanded:m.expanded,readonly:m.readonly,media:m.variant==="media","drama-storyboard":m.variant==="drama-storyboard"}])},[d("div",{ref_key:"editor",ref:p,class:"prompt-content",contenteditable:m.readonly?"false":"true","data-placeholder":m.placeholder,onInput:ee,onMousedown:oe,onMouseover:J,onMouseout:K,onScroll:k,onBlur:j},null,40,ge),(c(),U(ie,{to:"body"},[v.value?(c(),u("span",{key:0,class:"mention-floating-preview",style:se({left:v.value.left,top:v.value.top})},[d("img",{src:v.value.url,alt:v.value.alt},null,8,ye)],4)):M("",!0)])),h.value?(c(),u("div",{key:0,class:"mention-panel",onMousedown:o[1]||(o[1]=C(()=>{},["stop"]))},[d("button",{class:"mention-close",type:"button",title:"关闭资产面板",onMousedown:C(te,["prevent","stop"])},[ce(ue(pe),{size:16})],32),m.variant==="drama-storyboard"?(c(),u("div",he,[o[2]||(o[2]=d("strong",null,"当前分镜可用资产",-1)),d("small",null,b(T.value.length)+" 项",1)])):(c(),u("div",we,[m.variant!=="media"?de((c(),u("input",{key:0,"onUpdate:modelValue":o[0]||(o[0]=t=>N.value=t),class:"mention-search",type:"search",placeholder:"搜索资产",onBlur:j},null,544)),[[me,N.value]]):M("",!0),d("div",ke,[(c(!0),u(X,null,q(Q.value,t=>(c(),u("button",{key:t.key,type:"button",class:$({active:w.value===t.key}),onMousedown:C(n=>{w.value=t.key,x.value=0},["prevent"])},b(t.label),43,be))),128))])])),d("div",Ne,[(c(!0),u(X,null,q(T.value,(t,n)=>(c(),u("button",{key:t.id,type:"button",class:$({active:n===x.value}),onMouseenter:r=>x.value=n,onMousedown:C(r=>ne(t),["prevent"])},[d("span",null,[t.image_url?(c(),U(ve,{key:0,type:"image",compact:"",src:t.image_url,alt:""},null,8,["src"])):(c(),u("i",_e,b(t.name.slice(0,1)),1))]),d("b",null,b(t.name),1),d("small",null,b(D(t)),1)],42,xe))),128)),T.value.length?M("",!0):(c(),u("div",Me,"没有匹配的资产"))])],32)):M("",!0)],2))}}),$e=fe(Ce,[["__scopeId","data-v-1a647370"]]);export{$e as A};
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
import{d as g,c as d,a as v,ad as f,s as S,o as a,q as r,w as _,v as u,F as i,A as h,r as p}from"./index-p1BAR2Hc.js";import{_ as y}from"./_plugin-vue_export-helper-DlAUqK2U.js";const w={class:"web-page creative-shell"},$={class:"creative-shell__content"},x={key:0,class:"creative-shell__heading"},F={class:"creative-shell__scroll"},I=g({__name:"CreativeShell",props:{pageTitle:{default:""}},setup(e){return(c,m)=>(a(),d("div",w,[v("main",$,[c.$slots.heading?(a(),d("header",x,[f(c.$slots,"heading",{},void 0,!0)])):S("",!0),v("div",F,[f(c.$slots,"default",{},void 0,!0)])])]))}}),E=y(I,[["__scopeId","data-v-5549e50b"]]),N=g({__name:"CreativeSelect",props:{modelValue:{},options:{},placeholder:{default:"请选择"},multiple:{type:Boolean,default:!1},filterable:{type:Boolean,default:!1},clearable:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},placement:{default:"bottom-start"}},emits:["update:modelValue"],setup(e,{emit:c}){const m=e,k=c,b=h(()=>{const s=new Map;for(const o of m.options){const t=o.group||"";s.has(t)||s.set(t,[]),s.get(t).push(o)}return[...s.entries()].map(([o,t])=>({label:o,options:t}))}),C=h(()=>b.value.some(s=>s.label));return(s,o)=>{const t=p("el-option"),B=p("el-option-group"),V=p("el-select");return a(),r(V,{class:"creative-select","model-value":e.modelValue,placeholder:e.placeholder,multiple:e.multiple,"collapse-tags":e.multiple,"collapse-tags-tooltip":e.multiple,filterable:e.filterable,clearable:e.clearable,disabled:e.disabled,placement:e.placement,teleported:!0,"popper-class":"creative-select-popper","onUpdate:modelValue":o[0]||(o[0]=l=>k("update:modelValue",l))},{default:_(()=>[C.value?(a(!0),d(i,{key:0},u(b.value,l=>(a(),r(B,{key:l.label,label:l.label},{default:_(()=>[(a(!0),d(i,null,u(l.options,n=>(a(),r(t,{key:n.value,label:n.label,value:n.value,disabled:n.disabled},null,8,["label","value","disabled"]))),128))]),_:2},1032,["label"]))),128)):(a(!0),d(i,{key:1},u(e.options,l=>(a(),r(t,{key:l.value,label:l.label,value:l.value,disabled:l.disabled},null,8,["label","value","disabled"]))),128))]),_:1},8,["model-value","placeholder","multiple","collapse-tags","collapse-tags-tooltip","filterable","clearable","disabled","placement"])}}}),L=y(N,[["__scopeId","data-v-c088bbce"]]);export{E as C,L as a};
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
.media-loading-state[data-v-3e5d6686]{position:absolute;top:0;right:0;bottom:0;left:0;z-index:3;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:9px;color:var(--web-media-loading-text);background:var(--web-media-state-mask);font-size:12px;pointer-events:none}.media-loading-state.failed[data-v-3e5d6686]{color:var(--web-media-error-text)}.media-loading-state.compact span[data-v-3e5d6686]{display:none}.media-loading-state.compact svg[data-v-3e5d6686]{width:19px;height:19px}.media-loading-spinner[data-v-3e5d6686]{animation:media-loading-spin-3e5d6686 .9s linear infinite}@keyframes media-loading-spin-3e5d6686{to{transform:rotate(360deg)}}.loading-media-element[data-v-33763ad1]{display:block;max-width:100%;max-height:100%}
|
||||
@@ -0,0 +1 @@
|
||||
import{d as k,j as y}from"./icons-CbZw_MCi.js";import{d as p,o as l,c as s,p as B,q as n,b as g,a as h,t as C,B as M,F as w,ac as L,s as z,k as b}from"./index-p1BAR2Hc.js";import{_ as v}from"./_plugin-vue_export-helper-DlAUqK2U.js";const E=p({__name:"MediaLoadingState",props:{failed:{type:Boolean,default:!1},compact:{type:Boolean,default:!1},label:{default:"媒体加载中"},errorLabel:{default:"媒体加载失败"}},setup(e){return(c,f)=>(l(),s("div",{class:B(["media-loading-state",{failed:e.failed,compact:e.compact}])},[e.failed?(l(),n(g(k),{key:0,size:24,"stroke-width":1.7})):(l(),n(g(y),{key:1,class:"media-loading-spinner",size:26,"stroke-width":1.8})),h("span",null,C(e.failed?e.errorLabel:e.label),1)],2))}}),S=v(E,[["__scopeId","data-v-3e5d6686"]]),$=["src"],x=["src"],A=p({inheritAttrs:!1,__name:"LoadingMedia",props:{type:{},src:{},compact:{type:Boolean,default:!1},loadingLabel:{default:"媒体加载中"},errorLabel:{default:"媒体加载失败"}},emits:["load","loadeddata","error"],setup(e,{emit:c}){const f=e,d=c,r=b(!0),o=b(!1);M(()=>f.src,()=>{r.value=!0,o.value=!1},{immediate:!0});function m(a,t){r.value=!1,o.value=!1,d(t==="load"?"load":"loadeddata",a)}function u(a){r.value=!1,o.value=!0,d("error",a)}return(a,t)=>(l(),s(w,null,[e.type==="image"?(l(),s("img",L({key:0,class:"loading-media-element"},a.$attrs,{src:e.src,onLoad:t[0]||(t[0]=i=>m(i,"load")),onError:u}),null,16,$)):(l(),s("video",L({key:1,class:"loading-media-element"},a.$attrs,{src:e.src,onLoadeddata:t[1]||(t[1]=i=>m(i,"loadeddata")),onError:u}),null,16,x)),r.value||o.value?(l(),n(S,{key:2,failed:o.value,compact:e.compact,label:e.loadingLabel,"error-label":e.errorLabel},null,8,["failed","compact","label","error-label"])):z("",!0)],64))}}),V=v(A,[["__scopeId","data-v-33763ad1"]]);export{V as L,S as M};
|
||||
@@ -0,0 +1 @@
|
||||
.login-view[data-v-baf7cb26]{min-height:100dvh;padding:var(--page-gutter);display:grid;place-items:center;background:var(--web-bg)}.login-card[data-v-baf7cb26]{width:min(420px,100%);padding:var(--space-2xl);background:var(--web-surface);border:1px solid var(--web-line);border-radius:var(--radius-lg)}.login-card__brand[data-v-baf7cb26]{margin-bottom:var(--space-xl);display:flex;align-items:center;gap:12px}.login-card__brand>span[data-v-baf7cb26]{width:var(--control-height-lg);height:var(--control-height-lg);display:grid;place-items:center;overflow:hidden;background:var(--web-raised);border:1px solid var(--web-line);border-radius:var(--radius-sm)}.login-card__brand img[data-v-baf7cb26]{width:34px;height:34px;object-fit:contain}.login-card__brand strong[data-v-baf7cb26]{font-size:18px;font-weight:650}.login-card[data-v-baf7cb26] .el-form-item__label{color:var(--web-muted)}.login-card[data-v-baf7cb26] .el-input__wrapper{min-height:var(--control-height-lg);background:var(--web-surface);border:1px solid var(--web-line-strong);border-radius:var(--radius-sm);box-shadow:none}.login-card[data-v-baf7cb26] .el-input__wrapper:hover{border-color:var(--web-line-emphasis)}.login-card[data-v-baf7cb26] .el-input__wrapper.is-focus{border-color:var(--web-primary);box-shadow:0 0 0 2px var(--web-dialog-focus-ring)}.login-card[data-v-baf7cb26] .el-input__inner{color:var(--web-text)}.login-card__submit[data-v-baf7cb26]{width:100%;min-height:var(--control-height-lg);margin-top:var(--space-sm);color:var(--web-text-strong);background:var(--web-primary);border-color:var(--web-primary);font-weight:650}.login-card__submit[data-v-baf7cb26]:hover{background:var(--web-primary-hover);border-color:var(--web-primary-hover)}@media (max-width: 767px){.login-view[data-v-baf7cb26]{padding:var(--page-gutter-mobile)}.login-card[data-v-baf7cb26]{padding:var(--space-xl)}}
|
||||
@@ -0,0 +1 @@
|
||||
import{d as v,u as y,c as x,a,b as l,e as o,w as t,f as k,r as n,g as R,h as S,o as j,i as q,l as B,j as C,k as N,m as T,n as U}from"./index-p1BAR2Hc.js";import{l as A}from"./logo-DX2NYOdf.js";import{u as E}from"./auth-BqcbSIN_.js";import{_ as I}from"./_plugin-vue_export-helper-DlAUqK2U.js";const L={class:"login-view web-page"},M={class:"login-card"},z={class:"login-card__brand"},W=["src"],D=v({__name:"LoginView",setup(F){const i=E(),d=y(),f=R(),g=S(),p=N(),s=T({account:"",password:""}),w={account:[{required:!0,message:"请输入账号",trigger:"blur"}],password:[{required:!0,message:"请输入密码",trigger:"blur"}]};async function b(){var u;if(!i.loading&&await((u=p.value)==null?void 0:u.validate().catch(()=>!1)))try{await i.login(s.account,s.password),d.success("登录成功");const e=String(f.query.redirect||"/drama-projects");await g.replace(e.startsWith("/")?e:"/drama-projects")}catch(e){const r=U(e);d.error(r.message,r.copyText,"登录失败")}}return(u,e)=>{const r=n("el-icon"),m=n("el-input"),_=n("el-form-item"),V=n("el-button"),h=n("el-form");return j(),x("main",L,[a("section",M,[a("header",z,[a("span",null,[a("img",{src:l(A),alt:""},null,8,W)]),e[2]||(e[2]=a("div",null,[a("strong",null,"剧游AI")],-1))]),o(h,{ref_key:"formRef",ref:p,model:s,rules:w,"label-position":"top",size:"large",onSubmit:k(b,["prevent"])},{default:t(()=>[o(_,{label:"账号",prop:"account"},{default:t(()=>[o(m,{modelValue:s.account,"onUpdate:modelValue":e[0]||(e[0]=c=>s.account=c),modelModifiers:{trim:!0},autocomplete:"username",placeholder:"请输入账号"},{prefix:t(()=>[o(r,null,{default:t(()=>[o(l(q))]),_:1})]),_:1},8,["modelValue"])]),_:1}),o(_,{label:"密码",prop:"password"},{default:t(()=>[o(m,{modelValue:s.password,"onUpdate:modelValue":e[1]||(e[1]=c=>s.password=c),type:"password",autocomplete:"current-password","show-password":"",placeholder:"请输入密码"},{prefix:t(()=>[o(r,null,{default:t(()=>[o(l(B))]),_:1})]),_:1},8,["modelValue"])]),_:1}),o(V,{class:"login-card__submit",type:"primary","native-type":"submit",loading:l(i).loading},{default:t(()=>[...e[3]||(e[3]=[C(" 登录 ",-1)])]),_:1},8,["loading"])]),_:1},8,["model"])])])}}}),O=I(D,[["__scopeId","data-v-baf7cb26"]]);export{O as default};
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
.form-grid[data-v-8308c0a8]{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-xs) var(--space-lg)}.project-dialog-form[data-v-8308c0a8] .el-form-item{margin-bottom:var(--space-lg)}.project-dialog-form[data-v-8308c0a8] .el-form-item__label{padding-bottom:var(--space-sm);color:var(--web-text-secondary);font-size:12px}.project-dialog-form[data-v-8308c0a8] .el-input__wrapper{min-height:var(--control-height-lg);background:var(--web-surface-soft);border:1px solid var(--web-line-strong);border-radius:var(--radius-sm);box-shadow:none}.project-dialog-form[data-v-8308c0a8] .el-input__wrapper:hover{border-color:var(--web-line-emphasis)}.project-dialog-form[data-v-8308c0a8] .el-input__wrapper.is-focus{border-color:var(--web-timeline-focus-line);box-shadow:0 0 0 2px var(--web-dialog-focus-ring)}.project-dialog-form[data-v-8308c0a8] .el-input__inner{color:var(--web-text)}.project-dialog-form[data-v-8308c0a8] .el-input__count{color:var(--web-dialog-description);background:transparent}.ratio-switch[data-v-8308c0a8]{width:100%;height:var(--control-height-lg);padding:3px;display:grid;grid-template-columns:1fr 1fr;gap:3px;background:var(--web-surface-soft);border:1px solid var(--web-line-strong);border-radius:var(--radius-sm)}.ratio-switch button[data-v-8308c0a8]{display:flex;align-items:center;justify-content:center;gap:7px;color:var(--web-dialog-option-muted);background:transparent;border:1px solid transparent;border-radius:6px;font-size:12px;line-height:1;cursor:pointer;transition:color .16s,background-color .16s,border-color .16s}.ratio-switch button[data-v-8308c0a8]:hover:not(.active){color:var(--web-text);background:var(--web-surface)}.ratio-switch button.active[data-v-8308c0a8]{color:var(--web-accent-dark);background:var(--web-hover);border-color:var(--web-line-emphasis)}.ratio-icon[data-v-8308c0a8]{width:14px;height:14px;display:grid;place-items:center;flex:0 0 14px}.ratio-label[data-v-8308c0a8]{width:28px;text-align:left;font-variant-numeric:tabular-nums}.ratio-switch i[data-v-8308c0a8]{display:block;box-sizing:border-box;border:1px solid currentColor;border-radius:1px;opacity:.85}.ratio-switch i.portrait[data-v-8308c0a8]{width:7px;height:12px}.ratio-switch i.landscape[data-v-8308c0a8]{width:13px;height:8px}.field-error[data-v-8308c0a8]{margin-top:5px;color:var(--web-accent-dark);font-size:12px;line-height:1.2}.field-invalid[data-v-8308c0a8] .el-input__wrapper,.field-invalid[data-v-8308c0a8] .creative-select .el-select__wrapper{border-color:var(--web-invalid-line)!important;box-shadow:0 0 0 1px var(--web-invalid-outline)!important}.field-invalid[data-v-8308c0a8] .el-input__wrapper:hover,.field-invalid[data-v-8308c0a8] .creative-select .el-select__wrapper:hover{border-color:var(--web-invalid-line-hover)!important}@media (max-width: 560px){.form-grid[data-v-8308c0a8]{grid-template-columns:1fr}}
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
import{q as n,X as u}from"./icons-CbZw_MCi.js";import{d as m,o as l,c as r,e as s,b as d,a as i,s as p}from"./index-p1BAR2Hc.js";import{_ as f}from"./_plugin-vue_export-helper-DlAUqK2U.js";const V={class:"project-search-field"},h=["value","placeholder"],_=m({__name:"ProjectSearchField",props:{modelValue:{},placeholder:{default:"搜索项目"}},emits:["update:modelValue"],setup(t,{emit:c}){const o=c;return(v,e)=>(l(),r("div",V,[s(d(n),{size:17}),i("input",{value:t.modelValue,type:"search",placeholder:t.placeholder,onInput:e[0]||(e[0]=a=>o("update:modelValue",a.target.value))},null,40,h),t.modelValue?(l(),r("button",{key:0,type:"button",title:"清空搜索",onClick:e[1]||(e[1]=a=>o("update:modelValue",""))},[s(d(u),{size:16})])):p("",!0)]))}}),x=f(_,[["__scopeId","data-v-0e2390f7"]]);export{x as P};
|
||||
@@ -0,0 +1 @@
|
||||
.project-search-field[data-v-0e2390f7]{width:min(380px,100%);height:var(--control-height-lg);padding:0 var(--space-xs) 0 var(--space-md);display:flex;align-items:center;gap:var(--space-sm);color:var(--web-text-tertiary);background:var(--web-surface);border:1px solid var(--web-line-strong);border-radius:var(--radius-sm);transition:color .18s,border-color .18s,box-shadow .18s}.project-search-field[data-v-0e2390f7]:focus-within{color:var(--web-accent-dark);border-color:var(--web-line-accent);box-shadow:0 0 0 2px var(--web-search-outline)}.project-search-field input[data-v-0e2390f7]{min-width:0;width:100%;color:var(--web-text);background:transparent;border:0;font-size:14px;outline:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}.project-search-field input[data-v-0e2390f7]::-webkit-search-cancel-button{display:none;-webkit-appearance:none;-moz-appearance:none;appearance:none}.project-search-field button[data-v-0e2390f7]{width:var(--control-height-sm);height:var(--control-height-sm);padding:0;display:grid;place-items:center;flex:0 0 var(--control-height-sm);color:var(--web-control-muted);background:transparent;border:0;border-radius:var(--radius-sm);cursor:pointer;transition:color .18s,background-color .18s}.project-search-field button[data-v-0e2390f7]:hover:not(:disabled){color:var(--web-accent-muted);background:var(--web-hover)}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
import{d as H,u as R,y as J,q as T,w as m,C as i,k as n,n as K,o as p,a as r,e as o,t as v,b as s,L as Q,j as S,G as W,c as w,F as X,v as Y,s as A,A as Z,r as B,H as ee,h as te,f as se,E as oe}from"./index-p1BAR2Hc.js";import{c as D,a as L,T as ae}from"./icons-CbZw_MCi.js";import{P as re}from"./ProjectSearchField-C68_CxpU.js";import{C as le}from"./CreativeSelect-CikGCVMP.js";import{M as ne}from"./ModelConfigDialog-BZPjXRWk.js";import{f as ie}from"./datetime-P3V4sQaP.js";import{u as ce}from"./useModelPrompts-BKmMdFPq.js";import{e as pe}from"./scriptAnalysisModel-D-P7Lk0D.js";import{_ as ue}from"./_plugin-vue_export-helper-DlAUqK2U.js";const de={class:"script-toolbar"},me={class:"creative-page-actions"},ve={class:"script-count"},fe={class:"script-grid"},_e=["onClick"],ye={class:"script-card__icon"},ge={class:"script-card__body"},we=["onClick"],Ce={key:0,class:"script-empty"},he=H({__name:"ScriptAnalysisView",setup(ke){const M=te(),f=R(),C=n([]),V=n({styles:[],models:[]}),h=n([]),_=n(!1),u=n(!1),y=n(!1),k=n(!1),c=n(""),P=Z(()=>{const t=c.value.trim().toLocaleLowerCase();return t?C.value.filter(e=>(e.name||"未命名剧本").toLocaleLowerCase().includes(t)):C.value}),{prompts:z,promptSelections:E,loadPrompts:U,selectPrompt:F,createPrompt:I,updatePrompt:N,deletePrompt:$}=ce();function g(t,e="加载失败"){const l=K(t);f.error(l.message,l.copyText,e)}async function x(){_.value=!0;try{const[t,e,l]=await Promise.all([i.scriptAnalyses(),i.options(),i.userModelConfigs("script_analysis")]);C.value=t,V.value=e,h.value=await pe(e,l),await U(["剧本分析"])}catch(t){g(t)}finally{_.value=!1}}async function j(t){var l;const e=(l=t.prompt_reverse)==null?void 0:l.model_id;if(!e)return f.warning("请选择文本模型");k.value=!0;try{await i.saveUserModelConfig("script_analysis","text",e),h.value=await i.userModelConfigs("script_analysis"),y.value=!1,f.success("模型配置已保存")}catch(d){g(d,"保存模型配置失败")}finally{k.value=!1}}async function b(){if(!u.value){u.value=!0;try{const t=await i.createScriptAnalysis();await M.push({name:"script-analysis-workbench",params:{scriptId:t.id}})}catch(t){g(t,"创建失败")}finally{u.value=!1}}}async function O(t){try{await oe.confirm(`确定删除“${t.name}”吗?`,"删除剧本",{type:"warning",confirmButtonText:"删除",cancelButtonText:"取消"}),await i.deleteScriptAnalysis(t.id),f.success("剧本已删除"),await x()}catch(e){e!=="cancel"&&e!=="close"&&g(e,"删除失败")}}return J(x),(t,e)=>{const l=B("el-icon"),d=B("el-button"),q=ee("loading");return p(),T(le,null,{default:m(()=>[r("section",de,[o(re,{modelValue:c.value,"onUpdate:modelValue":e[0]||(e[0]=a=>c.value=a),placeholder:"搜索剧本名称"},null,8,["modelValue"]),r("div",me,[r("span",ve,v(P.value.length)+" 个剧本",1),o(d,{onClick:e[1]||(e[1]=a=>y.value=!0)},{default:m(()=>[o(l,null,{default:m(()=>[o(s(Q))]),_:1}),e[3]||(e[3]=S("模型配置",-1))]),_:1}),o(d,{type:"primary",loading:u.value,onClick:b},{default:m(()=>[o(s(D),{size:16}),e[4]||(e[4]=S("新建剧本 ",-1))]),_:1},8,["loading"])])]),W((p(),w("section",fe,[(p(!0),w(X,null,Y(P.value,a=>(p(),w("article",{key:a.id,class:"script-card",onClick:G=>s(M).push({name:"script-analysis-workbench",params:{scriptId:a.id}})},[r("div",ye,[o(s(L),{size:22})]),r("div",ge,[r("strong",null,v(a.name||"未命名剧本"),1),r("time",null,v(s(ie)(a.updated_at)),1)]),r("button",{type:"button",class:"script-card__delete",title:"删除剧本",onClick:se(G=>O(a),["stop"])},[o(s(ae),{size:17})],8,we)],8,_e))),128)),!_.value&&!P.value.length?(p(),w("div",Ce,[o(s(L),{size:40,"stroke-width":"1.2"}),r("strong",null,v(c.value.trim()?"没有匹配的剧本":"还没有剧本"),1),r("p",null,v(c.value.trim()?"换一个关键词继续查找":"新建剧本后即可开始分析"),1),c.value.trim()?A("",!0):(p(),T(d,{key:0,type:"primary",loading:u.value,onClick:b},{default:m(()=>[o(s(D),{size:16}),e[5]||(e[5]=S("新建剧本 ",-1))]),_:1},8,["loading"]))])):A("",!0)])),[[q,_.value]]),o(ne,{modelValue:y.value,"onUpdate:modelValue":e[2]||(e[2]=a=>y.value=a),"analysis-only":"","project-type":"script_analysis",options:V.value,configs:h.value,saving:k.value,prompts:s(z),"prompt-selections":s(E),onSave:j,onPromptSelect:s(F),onPromptCreate:s(I),onPromptUpdate:s(N),onPromptDelete:s($)},null,8,["modelValue","options","configs","saving","prompts","prompt-selections","onPromptSelect","onPromptCreate","onPromptUpdate","onPromptDelete"])]),_:1})}}}),De=ue(he,[["__scopeId","data-v-fc2a2917"]]);export{De as default};
|
||||
@@ -0,0 +1 @@
|
||||
.script-toolbar[data-v-fc2a2917]{min-height:var(--control-height-lg);margin-bottom:var(--space-xl);display:flex;align-items:center;justify-content:space-between;gap:var(--space-xl)}.script-toolbar .creative-page-actions[data-v-fc2a2917]{display:flex;align-items:center;gap:var(--space-md)}.script-count[data-v-fc2a2917]{color:var(--web-project-count);font-size:var(--font-size-sm);font-weight:var(--font-weight-regular);white-space:nowrap}.script-grid[data-v-fc2a2917]{min-height:260px;display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));align-items:start;gap:var(--space-lg)}.script-card[data-v-fc2a2917]{min-width:0;padding:14px 16px;display:flex;align-items:center;gap:13px;position:relative;color:var(--creative-text);background:var(--creative-surface);border:1px solid var(--creative-line);border-radius:var(--radius-lg);cursor:pointer;transition:border-color .18s,background-color .18s}.script-card[data-v-fc2a2917]:hover{background:var(--web-hover);border-color:var(--creative-accent)}.script-card__icon[data-v-fc2a2917]{width:42px;height:42px;flex:0 0 42px;display:grid;place-items:center;color:var(--creative-accent);background:color-mix(in srgb,var(--creative-accent) 12%,transparent);border-radius:9px}.script-card__body[data-v-fc2a2917]{min-width:0;display:flex;flex:1;flex-direction:column;gap:6px}.script-card__body strong[data-v-fc2a2917]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:16px}.script-card__body time[data-v-fc2a2917]{color:var(--creative-muted);font-size:12px}.script-card__delete[data-v-fc2a2917]{width:32px;height:32px;display:grid;place-items:center;color:var(--creative-muted);background:transparent;border:0;border-radius:7px;cursor:pointer;opacity:1;pointer-events:auto;transition:color .18s,background-color .18s}.script-card__delete[data-v-fc2a2917]:hover{color:var(--web-danger);background:color-mix(in srgb,var(--web-danger) 12%,transparent)}.script-empty[data-v-fc2a2917]{min-height:260px;grid-column:1/-1;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:10px;color:var(--creative-muted);text-align:center}.script-empty strong[data-v-fc2a2917]{color:var(--creative-text);font-size:16px}.script-empty p[data-v-fc2a2917]{margin:0;font-size:12px}.script-empty[data-v-fc2a2917] .el-button{margin-top:var(--space-sm)}@media (max-width: 767px){.script-toolbar[data-v-fc2a2917]{align-items:stretch;flex-direction:column;gap:var(--space-md)}.script-toolbar[data-v-fc2a2917] .project-search-field,.script-toolbar .creative-page-actions[data-v-fc2a2917]{width:100%}.script-toolbar .creative-page-actions[data-v-fc2a2917]{justify-content:space-between}.script-toolbar[data-v-fc2a2917] .el-button{flex:1}.script-grid[data-v-fc2a2917]{grid-template-columns:1fr}}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
import{U as L,L as I,C as P,F as U,a as F,I as S,M as R}from"./icons-CbZw_MCi.js";import{d as E,c as i,p as y,a,b as s,q as g,t as k,e as p,k as $,E as M,o,h as W,s as h,F as O,v as T,x as j,y as D,P as N,z as q,w as G,R as H,g as J,A as C,r as K}from"./index-p1BAR2Hc.js";import{l as Q}from"./logo-DX2NYOdf.js";import{u as A}from"./auth-BqcbSIN_.js";import{_ as x}from"./_plugin-vue_export-helper-DlAUqK2U.js";const X={class:"web-user-entry__avatar"},Y=["src"],Z={class:"web-user-entry__copy"},ee=["disabled"],te=E({__name:"WebUserEntry",props:{active:{type:Boolean}},emits:["navigate"],setup(n,{emit:r}){const c=r,l=A(),d=W(),e=$(!1);async function t(){if(!e.value){try{await M.confirm("退出后需要重新登录,确定退出当前账号吗?","退出登录",{type:"warning",confirmButtonText:"退出登录",cancelButtonText:"取消"})}catch(u){if(u==="cancel"||u==="close")return;throw u}e.value=!0;try{await l.logout(),await d.replace("/login")}finally{e.value=!1}}}return(u,v)=>{var b,_,m,f;return o(),i("div",{class:y(["web-user-entry",{active:n.active}])},[a("button",{type:"button",class:"web-user-entry__profile",onClick:v[0]||(v[0]=w=>c("navigate"))},[a("span",X,[(b=s(l).profile)!=null&&b.avatar_url?(o(),i("img",{key:0,src:s(l).profile.avatar_url,alt:""},null,8,Y)):(o(),g(s(L),{key:1,size:19}))]),a("span",Z,[a("strong",null,k(((_=s(l).profile)==null?void 0:_.username)||((m=s(l).profile)==null?void 0:m.account)||"用户中心"),1),a("small",null,k(Number(((f=s(l).account)==null?void 0:f.point_balance)||0).toFixed(2))+" 积分",1)])]),a("button",{type:"button",class:"web-user-entry__logout",title:"退出登录",disabled:e.value,onClick:t},[p(s(I),{size:18})],8,ee)],2)}}}),ae=x(te,[["__scopeId","data-v-8716efd4"]]),se=["src"],oe={key:0},ne={class:"web-sidebar__nav"},le=["disabled","title","onClick"],ie={key:0},re={class:"web-sidebar__footer"},ce=E({__name:"WebSidebar",props:{activePath:{},collapsed:{type:Boolean}},emits:["navigate"],setup(n,{emit:r}){const c=r,l=[{path:"/drama-projects",label:"短剧创作",icon:P,disabled:!1},{path:"/redraw-projects",label:"剧本反推",icon:U,disabled:!1},{path:"/script-analysis",label:"剧本分析",icon:F,disabled:!1},{path:"/product-images",label:"图片生成",icon:S,disabled:!1}];return(d,e)=>(o(),i("div",{class:y(["web-sidebar",{"is-collapsed":n.collapsed}])},[a("button",{class:"web-sidebar__brand",type:"button",title:"短剧创作",onClick:e[0]||(e[0]=t=>c("navigate","/drama-projects"))},[a("span",null,[a("img",{src:s(Q),alt:""},null,8,se)]),n.collapsed?h("",!0):(o(),i("strong",oe,"剧游AI"))]),a("nav",ne,[(o(),i(O,null,T(l,t=>a("button",{key:t.path,type:"button",disabled:t.disabled,class:y({active:n.activePath.startsWith(t.path)}),title:n.collapsed?t.label:void 0,onClick:u=>c("navigate",t.path)},[(o(),g(j(t.icon),{size:20})),n.collapsed?h("",!0):(o(),i("span",ie,k(t.label),1))],10,le)),64))]),a("div",re,[n.collapsed?(o(),i("button",{key:0,type:"button",class:y(["web-sidebar__account",{active:n.activePath==="/account"}]),title:"用户中心",onClick:e[1]||(e[1]=t=>c("navigate","/account"))},[p(s(L),{size:20})],2)):(o(),g(ae,{key:1,active:n.activePath==="/account",onNavigate:e[2]||(e[2]=t=>c("navigate","/account"))},null,8,["active"]))])],2))}}),z=x(ce,[["__scopeId","data-v-c624bd8f"]]),ue={key:0,class:"web-layout__sidebar"},de={class:"web-layout__main"},ve={key:0,class:"web-layout__mobile-bar"},pe=E({__name:"WebLayout",setup(n){const r=J(),c=W(),l=A(),d=$(window.innerWidth),e=$(!1),t=C(()=>d.value<768),u=C(()=>d.value>=768&&d.value<1200),v=C(()=>r.meta.fullscreen===!0);function b(){d.value=window.innerWidth,t.value||(e.value=!1)}function _(f){e.value=!1,c.push(f)}function m(){l.loadAccount()}return D(()=>{window.addEventListener("resize",b,{passive:!0}),window.addEventListener(N,m),l.loadAccount()}),q(()=>{window.removeEventListener("resize",b),window.removeEventListener(N,m)}),(f,w)=>{const V=K("el-drawer");return o(),i("div",{class:y(["web-layout",{"is-collapsed":u.value,"is-fullscreen":v.value}])},[!t.value&&!v.value?(o(),i("aside",ue,[p(z,{"active-path":s(r).path,collapsed:u.value,onNavigate:_},null,8,["active-path","collapsed"])])):h("",!0),v.value?h("",!0):(o(),g(V,{key:1,modelValue:e.value,"onUpdate:modelValue":w[0]||(w[0]=B=>e.value=B),direction:"ltr",size:"min(280px, 88vw)","with-header":!1,class:"web-drawer"},{default:G(()=>[p(z,{"active-path":s(r).path,onNavigate:_},null,8,["active-path"])]),_:1},8,["modelValue"])),a("main",de,[t.value&&!v.value?(o(),i("header",ve,[a("button",{type:"button",class:"web-layout__menu",title:"打开菜单",onClick:w[1]||(w[1]=B=>e.value=!0)},[p(s(R),{size:21})]),a("strong",null,k(String(s(r).meta.title||"剧游AI")),1)])):h("",!0),p(s(H))])],2)}}}),ye=x(pe,[["__scopeId","data-v-09e56ee6"]]);export{ye as default};
|
||||
@@ -0,0 +1 @@
|
||||
const s=(t,r)=>{const o=t.__vccOpts||t;for(const[c,e]of r)o[c]=e;return o};export{s as _};
|
||||
@@ -0,0 +1 @@
|
||||
import{ae as i,ab as a,af as s,ag as n}from"./index-p1BAR2Hc.js";let e=null;const c=i("web-auth",{state:()=>({profile:JSON.parse(localStorage.getItem("web_profile")||"null"),account:null,authenticated:!!localStorage.getItem("web_access_token"),loading:!1}),actions:{async login(t,l){this.loading=!0;try{const{data:o}=await a.post("/auth/login",{account:t,password:l});n(o.data),this.profile=o.data.user,this.authenticated=!0,await this.loadAccount()}finally{this.loading=!1}},async loadAccount(){this.authenticated&&(e||(e=a.get("/account").then(({data:t})=>t.data).finally(()=>e=null)),this.account=await e)},updateCachedProfile(t){this.profile&&(this.profile={...this.profile,...t},localStorage.setItem("web_profile",JSON.stringify(this.profile)))},async logout(){const t=localStorage.getItem("web_refresh_token");try{await a.post("/auth/logout",{refresh_token:t})}finally{s(),this.profile=null,this.account=null,this.authenticated=!1}}}});export{c as u};
|
||||
@@ -0,0 +1 @@
|
||||
const e="Asia/Shanghai";function n(t){return t?new Date(t).toLocaleString("zh-CN",{timeZone:e,hour12:!1}):""}function a(t){return t?new Date(t).toLocaleDateString("zh-CN",{timeZone:e}):""}export{a,n as f};
|
||||
@@ -0,0 +1 @@
|
||||
import{C as i}from"./index-p1BAR2Hc.js";function n(o,t){const e=document.createElement("a");e.href=o,e.download=t,document.body.appendChild(e),e.click(),e.remove()}async function r(o,t){n(o,t)}async function d(o,t){const e=URL.createObjectURL(o);try{n(e,t)}finally{window.setTimeout(()=>URL.revokeObjectURL(e),1e3)}}async function s(o,t,e){if(!o)return r(t,e);const a=await i.media(o),c=URL.createObjectURL(a);try{n(c,e)}finally{window.setTimeout(()=>URL.revokeObjectURL(c),1e3)}}export{d as a,s as d};
|
||||
@@ -0,0 +1 @@
|
||||
import{d as o,a8 as e,$ as u,ah as f,Q as _,ai as n,aj as p,ak as h,al as k,am as m,S as g,an as C,Y as S,ao as d,a5 as r,ap as w,aq as y,ar as v,_ as F,as as T,U as L,l as U,at as x,au as M,av as O,aw as z,D as A,ax as P,ay as b,T as B,X as I,M as D,i as H,Z as G,az as V,aA as X,aB as j,aC as W,a3 as Z,aD as q,a0 as K,aE as E,aF as N}from"./index-p1BAR2Hc.js";function a(c,i){return o({name:c,inheritAttrs:!1,props:{size:{type:[Number,String],default:void 0},strokeWidth:{type:[Number,String],default:void 0}},setup(s,{attrs:l}){return()=>{const t=s.size===void 0?void 0:typeof s.size=="number"?`${s.size}px`:s.size;return e(i,{...l,style:[l.style,t?{width:t,height:t}:void 0]})}}})}const Y=a("ArrowLeft",_),J=a("BookOpen",n),aa=a("BookOpenText",n),ea=a("Camera",p),sa=a("ChevronDown",h),ta=a("CircleAlert",k),oa=a("CircleHelp",m),la=a("CircleX",g),na=a("Clapperboard",u),da=a("Copy",C),ra=a("Download",S),ca=a("FileInput",d),ia=a("FilePlus2",d),ua=a("FileSearch",r),fa=a("FileText",r),_a=a("FileUp",w),pa=a("Film",y),ha=a("FolderInput",v),ka=a("Image",F),ma=a("Key",T),ga=a("ListChecks",N),Ca=a("LoaderCircle",L),Sa=a("Lock",U),wa=a("LogOut",x),ya=a("Menu",M),va=a("MoreHorizontal",j),Fa=a("Pencil",O),Ta=a("Play",z),La=a("Plus",A),Ua=a("Save",P),xa=a("Search",b),Ma=a("Sparkles",B),Oa=a("Tags",Z),za=a("Target",q),Aa=a("Trash2",I),Pa=a("TriangleAlert",f),ba=a("Unlock",W),Ba=a("Upload",D),Ia=a("UserRound",H),Da=a("Users",K),Ha=a("Volume2",G),Ga=a("Wallet",V),R=o({name:"SpeakerGlyph",setup:()=>()=>e("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.8","stroke-linecap":"round","stroke-linejoin":"round"},[e("path",{d:"M4 9v6h4l5 4V5L8 9H4"}),e("path",{d:"M16 9.5a4 4 0 0 1 0 5"}),e("path",{d:"M18.5 7a7.5 7.5 0 0 1 0 10"})])}),$=o({name:"SpeakerOffGlyph",setup:()=>()=>e("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.8","stroke-linecap":"round","stroke-linejoin":"round"},[e("path",{d:"M4 9v6h4l5 4V5L8 9H4"}),e("path",{d:"m17 9 4 4"}),e("path",{d:"m21 9-4 4"})])}),Va=a("Speaker",R),Xa=a("SpeakerOff",$),ja=a("X",X),Wa=a("Zap",E);export{Y as A,J as B,na as C,ra as D,ga as E,pa as F,Ma as G,ea as H,ka as I,ma as K,wa as L,ya as M,Fa as P,Ua as S,Aa as T,Ia as U,Ha as V,Ga as W,ja as X,Wa as Z,ua as a,va as b,La as c,ta as d,_a as e,ia as f,fa as g,oa as h,sa as i,Ca as j,Ta as k,Sa as l,ba as m,da as n,Xa as o,Va as p,xa as q,ha as r,Ba as s,ca as t,Pa as u,la as v,aa as w,Oa as x,za as y,Da as z};
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
|
After Width: | Height: | Size: 97 KiB |
@@ -0,0 +1 @@
|
||||
const o="/assets/logo-CztthSFi.png";export{o as l};
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 97 KiB |
@@ -0,0 +1 @@
|
||||
function n(e){return e?`${e.split("#",1)[0]}#t=0.001`:""}async function i(e){const t=URL.createObjectURL(e);try{return await new Promise(a=>{const r=document.createElement("audio");r.preload="metadata",r.onloadedmetadata=()=>a(Number.isFinite(r.duration)?Math.round(r.duration*1e3):void 0),r.onerror=()=>a(void 0),r.src=t})}finally{URL.revokeObjectURL(t)}}function o(e){const t=Number(e||0)/1e3;return!Number.isFinite(t)||t<=0?"":`${t.toFixed(1).replace(/\.0$/,"")} 秒`}export{o as a,n as f,i as r};
|
||||
@@ -0,0 +1 @@
|
||||
import{C as r}from"./index-p1BAR2Hc.js";async function a(i,t){if(t.some(e=>e.model_type==="text"&&!!e.model_id))return t;const s=i.models.find(e=>e.model_type==="text");return s?(await r.saveUserModelConfig("script_analysis","text",s.id),r.userModelConfigs("script_analysis")):t}export{a as e};
|
||||
@@ -0,0 +1 @@
|
||||
.video-player[data-v-e46b8f8f]{position:relative;width:100%;height:100%;background:var(--web-surface-soft)}.video-player>video[data-v-e46b8f8f]{width:100%;height:100%;display:block;object-fit:contain}.video-player video[data-v-e46b8f8f]::-webkit-media-controls-picture-in-picture-button,.dialog-player video[data-v-e46b8f8f]::-webkit-media-controls-picture-in-picture-button{display:none!important}.video-controls[data-v-e46b8f8f]{position:absolute;left:0;right:0;bottom:0;height:38px;padding:0 10px;display:flex;align-items:center;gap:9px;background:var(--web-video-controls);color:var(--web-text)}.video-controls-transparent[data-v-e46b8f8f]{background:transparent;color:var(--web-text-secondary)}.video-controls-transparent .video-time[data-v-e46b8f8f],.video-controls-transparent .sound-button[data-v-e46b8f8f],.video-controls-transparent .el-icon[data-v-e46b8f8f],.video-controls-transparent .sound-button[data-v-e46b8f8f]:hover,.video-controls-transparent .el-icon[data-v-e46b8f8f]:hover{color:var(--web-text-secondary)}.video-controls input[data-v-e46b8f8f]{min-width:0;flex:1}.video-controls input[data-v-e46b8f8f]:disabled{opacity:.55;cursor:not-allowed}.video-time[data-v-e46b8f8f]{flex:0 0 auto;color:var(--web-text-secondary);font:10px Arial,sans-serif;white-space:nowrap}.video-controls .el-icon[data-v-e46b8f8f]{cursor:pointer}.sound-button[data-v-e46b8f8f],.dialog-controls button[data-v-e46b8f8f]{width:22px;height:22px;padding:0;display:grid;place-items:center;color:var(--web-media-control-text);border:0;background:none;cursor:pointer}.sound-button[data-v-e46b8f8f]:hover,.dialog-controls button[data-v-e46b8f8f]:hover{color:var(--web-media-control-text)}.dialog-player[data-v-e46b8f8f]{position:relative;width:100%;aspect-ratio:16/9;background:var(--web-video-bg)}.dialog-player.portrait[data-v-e46b8f8f]{width:min(100%,400px);margin:0 auto;aspect-ratio:9/16}.dialog-player>video[data-v-e46b8f8f]{width:100%;height:100%;display:block;object-fit:contain;background:var(--web-video-bg)}.dialog-controls[data-v-e46b8f8f]{position:absolute;left:0;right:0;bottom:0;height:42px;padding:0 10px;display:flex;align-items:center;gap:9px;background:var(--web-video-dialog-controls);color:var(--web-text)}.dialog-controls input[data-v-e46b8f8f]{min-width:0;flex:1}.dialog-controls span[data-v-e46b8f8f]{font:11px Arial,sans-serif;white-space:nowrap;color:var(--web-media-control-text)}.video-preview-dialog.el-dialog{background:var(--web-surface-soft);border:1px solid var(--web-line-strong)}.video-preview-dialog.el-dialog .el-dialog__header{border-bottom:1px solid var(--web-line-strong)}.video-preview-dialog.el-dialog .el-dialog__title,.video-preview-dialog.el-dialog .el-dialog__headerbtn .el-dialog__close{color:var(--web-text)}.video-preview-dialog.el-dialog .el-dialog__body{padding:14px;background:var(--web-surface-soft)}
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
import{u as w,E as h,C as s,k as l,n as E}from"./index-p1BAR2Hc.js";const T=["剧本反推","剧本分析","剧本解析","角色、场景、道具解析","角色生成","场景生成","道具生成","分镜图生成","首尾帧生成","视频生成"],g=["角色生成","场景生成","道具生成","视频生成"];function C(){const p=w(),a=l([]),r=l({});async function m(t=T){try{const e=await Promise.all(t.map(n=>s.promptPresets(n))),o=new Map,i={};e.forEach((n,y)=>{(n.prompts||[]).forEach(u=>o.set(u.id,u)),n.selected_id&&(i[t[y]]=n.selected_id)}),a.value=[...o.values()],r.value=i}catch(e){a.value=[],r.value={},c(e,"加载提示词失败")}}async function d(t){try{await s.selectPrompt(t.type,t.promptId),r.value={...r.value,[t.type]:t.promptId}}catch(e){c(e,"启用提示词失败")}}async function v(t){try{const e=await s.createCustomPrompt(t);a.value=[...a.value,e],await s.selectPrompt(t.type,e.id),r.value={...r.value,[t.type]:e.id}}catch(e){c(e,"保存自定义提示词失败")}}async function f(t){try{const e=await s.updateCustomPrompt(t.id,t);a.value=a.value.map(o=>o.id===e.id?e:o)}catch(e){c(e,"保存提示词失败")}}async function P(t){try{await h.confirm("删除后不可恢复,确定删除该提示词吗?","删除提示词",{type:"warning",confirmButtonText:"删除",cancelButtonText:"取消"}),await s.deleteCustomPrompt(t.id),a.value=a.value.filter(e=>e.id!==t.id),r.value[t.type]===t.id&&(r.value={...r.value,[t.type]:""})}catch(e){e!=="cancel"&&e!=="close"&&c(e,"删除提示词失败")}}function c(t,e){const o=E(t);p.error(o.message,o.copyText,e)}return{prompts:a,promptSelections:r,loadPrompts:m,selectPrompt:d,createPrompt:v,updatePrompt:f,deletePrompt:P}}export{g as p,C as u};
|
||||
@@ -0,0 +1,15 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<meta name="theme-color" content="#000000" />
|
||||
<link rel="icon" type="image/png" href="/assets/logo.png" />
|
||||
<title>剧游AI</title>
|
||||
<script type="module" crossorigin src="/assets/index-p1BAR2Hc.js"></script>
|
||||
<link rel="stylesheet" crossorigin href="/assets/index-CfAzcQBU.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="app"></div>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user