2 lines
16 KiB
JavaScript
2 lines
16 KiB
JavaScript
import{d as W,z as ue,r as x,o as c,q as B,p as D,w as _,a as t,e as s,b as h,f as le,t as d,k as L,B as oe,c as p,s as z,j as F,v as H,F as G,m as X,u as ce,y as me,C as U,A as I,n as pe,D as Y,G as _e,H as fe,h as ve,g as ye,E as we}from"./index-p1BAR2Hc.js";import{b as ge,P as be,T as ne,c as Z,F as ee,d as te}from"./icons-CbZw_MCi.js";import{_ as J}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{P as he}from"./ProjectSearchField-C68_CxpU.js";import{C as Ve}from"./CreativeSelect-CikGCVMP.js";import{L as ae}from"./LoadingMedia-q1A6xJc7.js";import{P as ke}from"./ProjectDialog-kNoqvi7U.js";import{f as $e}from"./datetime-P3V4sQaP.js";import{f as Ce}from"./media-Do63jPLX.js";const Le=["title"],Pe=W({__name:"CardActionMenu",props:{label:{default:"更多操作"},editLabel:{default:"编辑"},deleteLabel:{default:"删除"}},emits:["edit","delete"],setup(P,{emit:N}){const b=N,k=L(),e=L(),r=L(!1),g={modifiers:[{name:"offset",options:{offset:[20,-1]}}]};function M(u){u==="edit"&&b("edit"),u==="delete"&&b("delete")}function E(){document.removeEventListener("pointerdown",l,!0),document.removeEventListener("focusin",y,!0),window.removeEventListener("blur",C)}function C(){var u,v;(u=k.value)==null||u.handleClose(),(v=e.value)==null||v.blur(),E()}function i(u){var v;return u instanceof Element&&(((v=e.value)==null?void 0:v.contains(u))||!!u.closest(".card-action-popper"))}function l(u){i(u.target)||C()}function y(u){i(u.target)||C()}function f(u){var v;if(r.value=u,E(),!u){(v=e.value)==null||v.blur();return}document.addEventListener("pointerdown",l,!0),document.addEventListener("focusin",y,!0),window.addEventListener("blur",C)}return ue(E),(u,v)=>{const w=x("el-dropdown-item"),V=x("el-dropdown-menu"),m=x("el-dropdown");return c(),B(m,{ref_key:"dropdown",ref:k,class:D(["card-action-menu",{"is-open":r.value}]),trigger:"click",placement:"bottom-end","show-arrow":!1,"popper-options":g,"popper-class":"card-action-popper",onCommand:M,onVisibleChange:f},{dropdown:_(()=>[s(V,null,{default:_(()=>[s(w,{command:"edit"},{default:_(()=>[s(h(be),{size:15}),t("span",null,d(P.editLabel),1)]),_:1}),s(w,{command:"delete",divided:"",class:"is-danger"},{default:_(()=>[s(h(ne),{size:15}),t("span",null,d(P.deleteLabel),1)]),_:1})]),_:1})]),default:_(()=>[t("button",{ref_key:"trigger",ref:e,class:"card-action-trigger",type:"button",title:P.label,onClick:v[0]||(v[0]=le(()=>{},["stop"]))},[s(h(ge),{size:19})],8,Le)]),_:1},8,["class"])}}}),ze=J(Pe,[["__scopeId","data-v-38b79ac8"]]),xe={class:"redraw-form-grid"},Me={key:0,class:"field-error"},Ee={key:0,class:"field-error"},je={key:0,class:"field-error"},Be={key:0,class:"field-error"},De={class:"cast-editor"},Ue=["disabled"],Te={key:0,class:"cast-empty"},Fe={key:0,class:"field-error"},Ne=["onClick"],Re=W({__name:"RedrawProjectDialog",props:{modelValue:{type:Boolean},project:{},saving:{type:Boolean}},emits:["update:modelValue","save"],setup(P,{emit:N}){const b=P,k=N,e=X({name:"",short_drama_type:"",play_count:"",audience_profile:"",producer:"",cast_members:[{name:"",follower_count:void 0}]}),r=X({name:"",short_drama_type:"",audience_profile:"",producer:"",cast_members:[]});oe(()=>[b.modelValue,b.project],()=>{var l;if(!b.modelValue)return;const i=b.project;e.name=(i==null?void 0:i.name)||"",e.short_drama_type=(i==null?void 0:i.short_drama_type)||"",e.play_count=(i==null?void 0:i.play_count)||"",e.audience_profile=(i==null?void 0:i.audience_profile)||"",e.producer=(i==null?void 0:i.producer)||"",e.cast_members=(l=i==null?void 0:i.cast_members)!=null&&l.length?i.cast_members.map(y=>({...y})):[{name:"",follower_count:void 0}],g()},{immediate:!0});function g(){r.name="",r.short_drama_type="",r.audience_profile="",r.producer="",r.cast_members=[]}function M(){e.cast_members.length>=50||e.cast_members.push({name:"",follower_count:void 0})}function E(i){e.cast_members.splice(i,1),r.cast_members.splice(i,1)}function C(){var l,y,f,u,v;g(),r.name=e.name.trim()?"":"请输入短剧名",r.cast_members=e.cast_members.map(w=>{var $;const V=!!w.name.trim(),m=!!(($=w.follower_count)!=null&&$.trim());return{name:!V&&m?"请输入主演姓名":"",follower_count:""}}),!(r.name||r.cast_members.some(w=>w.name||w.follower_count))&&k("save",{project_type:"video_redraw",name:e.name.trim(),style_id:((l=b.project)==null?void 0:l.style_id)||"",era_type:((y=b.project)==null?void 0:y.era_type)||"modern_city",custom_era:((f=b.project)==null?void 0:f.custom_era)||null,aspect_ratio:((u=b.project)==null?void 0:u.aspect_ratio)||"9:16",localization:((v=b.project)==null?void 0:v.localization)||"china",short_drama_type:e.short_drama_type.trim(),play_count:e.play_count.trim(),audience_profile:e.audience_profile.trim(),producer:e.producer.trim(),cast_members:e.cast_members.filter(w=>w.name.trim()).map(w=>{var V;return{name:w.name.trim(),follower_count:((V=w.follower_count)==null?void 0:V.trim())||void 0}})})}return(i,l)=>{const y=x("el-input"),f=x("el-form-item"),u=x("el-form"),v=x("el-button"),w=x("el-dialog");return c(),B(w,{"model-value":P.modelValue,title:P.project?"编辑反推项目":"创建反推项目",width:"min(680px, calc(100vw - 28px))","align-center":"",class:"web-dialog creative-dialog redraw-project-dialog",onClose:l[6]||(l[6]=V=>k("update:modelValue",!1))},{footer:_(()=>[s(v,{onClick:l[5]||(l[5]=V=>k("update:modelValue",!1))},{default:_(()=>[...l[10]||(l[10]=[F("取消",-1)])]),_:1}),s(v,{type:"primary",loading:P.saving,onClick:C},{default:_(()=>[F(d(P.project?"保存项目":"创建项目"),1)]),_:1},8,["loading"])]),default:_(()=>[s(u,{class:"redraw-project-form","label-position":"top"},{default:_(()=>{var V;return[t("div",xe,[s(f,{label:"短剧名",required:"",class:D({"field-invalid":r.name})},{default:_(()=>[s(y,{modelValue:e.name,"onUpdate:modelValue":l[0]||(l[0]=m=>e.name=m),modelModifiers:{trim:!0},maxlength:"100",placeholder:"请输入短剧名"},null,8,["modelValue"]),r.name?(c(),p("div",Me,d(r.name),1)):z("",!0)]),_:1},8,["class"]),s(f,{label:"短剧类型",class:D({"field-invalid":r.short_drama_type})},{default:_(()=>[s(y,{modelValue:e.short_drama_type,"onUpdate:modelValue":l[1]||(l[1]=m=>e.short_drama_type=m),modelModifiers:{trim:!0},maxlength:"100",placeholder:"例如:都市情感、悬疑"},null,8,["modelValue"]),r.short_drama_type?(c(),p("div",Ee,d(r.short_drama_type),1)):z("",!0)]),_:1},8,["class"]),s(f,{label:"播放量"},{default:_(()=>[s(y,{modelValue:e.play_count,"onUpdate:modelValue":l[2]||(l[2]=m=>e.play_count=m),modelModifiers:{trim:!0},maxlength:"100",placeholder:"请输入播放量"},null,8,["modelValue"])]),_:1}),s(f,{label:"出品方",class:D({"field-invalid":r.producer})},{default:_(()=>[s(y,{modelValue:e.producer,"onUpdate:modelValue":l[3]||(l[3]=m=>e.producer=m),modelModifiers:{trim:!0},maxlength:"200",placeholder:"请输入出品方"},null,8,["modelValue"]),r.producer?(c(),p("div",je,d(r.producer),1)):z("",!0)]),_:1},8,["class"])]),s(f,{label:"受众群体画像",class:D({"field-invalid":r.audience_profile})},{default:_(()=>[s(y,{modelValue:e.audience_profile,"onUpdate:modelValue":l[4]||(l[4]=m=>e.audience_profile=m),modelModifiers:{trim:!0},type:"textarea",rows:3,maxlength:"2000","show-word-limit":"",placeholder:"请输入年龄、性别、地域、兴趣偏好等受众特征"},null,8,["modelValue"]),r.audience_profile?(c(),p("div",Be,d(r.audience_profile),1)):z("",!0)]),_:1},8,["class"]),t("section",De,[t("header",null,[l[8]||(l[8]=t("div",null,[t("strong",null,"主演"),t("span",null,"填写主演姓名和粉丝量")],-1)),t("button",{type:"button",disabled:e.cast_members.length>=50,onClick:M},[s(h(Z),{size:16}),l[7]||(l[7]=F("增加主演 ",-1))],8,Ue)]),e.cast_members.length?z("",!0):(c(),p("div",Te,[t("span",null,d(((V=r.cast_members[0])==null?void 0:V.name)||"暂无主演"),1),t("button",{type:"button",onClick:M},[s(h(Z),{size:16}),l[9]||(l[9]=F("添加主演 ",-1))])])),(c(!0),p(G,null,H(e.cast_members,(m,$)=>{var A;return c(),p("div",{key:$,class:"cast-row"},[s(f,{label:`主演 ${$+1}`,class:D({"field-invalid":(A=r.cast_members[$])==null?void 0:A.name})},{default:_(()=>{var j;return[s(y,{modelValue:m.name,"onUpdate:modelValue":q=>m.name=q,modelModifiers:{trim:!0},maxlength:"100",placeholder:"主演姓名"},null,8,["modelValue","onUpdate:modelValue"]),(j=r.cast_members[$])!=null&&j.name?(c(),p("div",Fe,d(r.cast_members[$].name),1)):z("",!0)]}),_:2},1032,["label","class"]),s(f,{label:"粉丝量"},{default:_(()=>[s(y,{modelValue:m.follower_count,"onUpdate:modelValue":j=>m.follower_count=j,modelModifiers:{trim:!0},maxlength:"100",placeholder:"粉丝量"},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1024),t("button",{type:"button",class:"remove-cast",onClick:j=>E($)},[s(h(ne),{size:17})],8,Ne)])}),128))])]}),_:1})]),_:1},8,["model-value","title"])}}}),Se=J(Re,[["__scopeId","data-v-fb5da6af"]]),Ae={class:"project-list-toolbar"},qe={class:"project-list-actions creative-page-actions"},Ie={class:"project-grid"},Oe=["onClick"],He={key:2,class:"project-placeholder"},Ge={key:3,class:"redraw-type-badge"},We={key:4,class:"processing-badge"},Je={key:5,class:"processing-badge"},Ke={key:0,class:"project-copy"},Qe={class:"project-tags"},Xe={key:1,class:"project-copy redraw-project-copy"},Ye={class:"project-tooltip-content"},Ze={class:"project-tooltip-header"},et={key:0,class:"cast-tooltip-list"},tt={key:1},at={class:"project-meta"},lt={key:0,class:"project-state"},ot=W({__name:"RedrawProjectsView",setup(P){const N=ye(),b=ve(),k=ce(),e=I(()=>N.meta.projectType==="premium_drama"),r=I(()=>e.value?"短剧创作":"剧本反推"),g=I(()=>"项目"),M=L([]),E=L({styles:[],models:[]}),C=L(!1),i=L(!1),l=L(!1),y=L(""),f=L(null),u=L(""),v=I(()=>{const n=u.value.trim().toLocaleLowerCase();return n?M.value.filter(a=>a.name.toLocaleLowerCase().includes(n)):M.value}),w={modern_city:"现代都市",ancient_history:"古代历史",ancient_fantasy:"古代玄幻",ancient_xianxia:"古代仙侠",future_scifi:"未来科幻",other:"其他"};function V(n){var a;return n.era_type==="other"&&((a=n.custom_era)!=null&&a.trim())?n.custom_era.trim():w[n.era_type]||n.era_type}async function m(){C.value=!0;try{M.value=e.value?await U.dramaProjects():await U.projects()}catch(n){T(n,"加载失败")}finally{C.value=!1}}function $(){f.value=null,l.value=!0}async function A(n){try{f.value=await U.project(n.id),l.value=!0}catch(a){T(a,`加载${g.value}失败`)}}async function j(n){if(!n.name||e.value&&!n.style_id){k.warning("请填写项目名称并选择视觉风格");return}i.value=!0;try{if(f.value){await U.updateProject(f.value.id,{...n,project_type:e.value?"premium_drama":"video_redraw",localization:e.value?null:n.localization}),l.value=!1,f.value=null,k.success("项目已保存"),await m();return}const a=await U.createProject({...n,project_type:e.value?"premium_drama":"video_redraw",localization:e.value?null:n.localization});l.value=!1,k.success("项目已创建"),await K(a.id)}catch(a){T(a,f.value?"保存失败":"创建失败")}finally{i.value=!1}}function q(n){return(n==null?void 0:n.trim())||"未填写"}async function K(n){if(!y.value){if(e.value){await b.push({path:`/drama-projects/${n}`,query:{from:"drama-projects"}});return}y.value=n;try{await b.push({path:`/redraw-projects/${n}`,query:{from:"redraw-projects"}})}catch(a){T(a,"进入项目失败")}finally{y.value=""}}}async function se(n){try{await we.confirm(`确定删除${g.value}“${n.name}”吗?`,`删除${g.value}`,{type:"warning",confirmButtonText:"删除",cancelButtonText:"取消"}),await U.deleteProject(n.id),k.success(`${g.value}已删除`),await m()}catch(a){a!=="cancel"&&a!=="close"&&T(a,"删除失败")}}function T(n,a){const R=pe(n);k.error(R.message,R.copyText,a)}return me(async()=>{try{E.value=await U.options()}catch(n){T(n,"加载失败")}await m()}),oe(e,()=>{M.value=[],u.value="",m()}),(n,a)=>{const R=x("el-button"),re=x("el-tooltip"),ie=fe("loading");return c(),B(Ve,{"page-title":r.value},{default:_(()=>[t("section",Ae,[s(he,{modelValue:u.value,"onUpdate:modelValue":a[0]||(a[0]=o=>u.value=o),placeholder:`搜索${r.value}${g.value}`},null,8,["modelValue","placeholder"]),t("div",qe,[t("span",null,d(v.value.length)+" 个"+d(g.value),1),s(R,{type:"primary",icon:h(Y),onClick:$},{default:_(()=>[F("创建"+d(g.value),1)]),_:1},8,["icon"])])]),_e((c(),p("section",Ie,[(c(!0),p(G,null,H(v.value,o=>{var Q;return c(),p("article",{key:o.id,class:D(["project-card",{"redraw-project-card":!e.value}]),onClick:S=>K(o.id)},[t("span",{class:D(["project-cover",o.aspect_ratio==="9:16"?"portrait":"landscape"])},[e.value&&o.cover_video_url||!e.value&&o.cover_url&&((Q=o.cover_mime_type)!=null&&Q.startsWith("video/"))?(c(),B(ae,{key:0,type:"video",src:h(Ce)(e.value?o.cover_video_url:o.cover_url),muted:"",playsinline:"",preload:"metadata",disablepictureinpicture:"",disableremoteplayback:"",controlslist:"nodownload noplaybackrate noremoteplayback"},null,8,["src"])):o.cover_url?(c(),B(ae,{key:1,type:"image",src:o.cover_url,alt:`${o.name}封面`},null,8,["src","alt"])):(c(),p("span",He,[s(h(ee),{size:30,"stroke-width":"1.25"}),a[4]||(a[4]=t("small",null,"暂无封面",-1))])),e.value?z("",!0):(c(),p("span",Ge,d(o.short_drama_type||"未填写"),1)),y.value===o.id?(c(),p("span",We,"正在进入")):Number(o.processing_count)?(c(),p("span",Je,"处理中 "+d(o.processing_count),1)):z("",!0)],2),e.value?(c(),p("span",Ke,[t("strong",null,d(o.name),1),t("small",Qe,[t("span",null,d(o.style_name),1),t("span",null,d(V(o)),1),t("span",null,d(o.aspect_ratio),1)])])):(c(),p("span",Xe,[s(re,{placement:"right-start",effect:"light","popper-class":"redraw-project-tooltip"},{content:_(()=>{var S;return[t("div",Ye,[t("header",Ze,[s(h(te),{size:16}),a[5]||(a[5]=t("strong",null,"项目信息",-1))]),t("dl",null,[t("div",null,[a[6]||(a[6]=t("dt",null,"短剧名",-1)),t("dd",null,d(o.name),1)]),t("div",null,[a[7]||(a[7]=t("dt",null,"短剧类型",-1)),t("dd",null,d(o.short_drama_type||"未填写"),1)]),t("div",null,[a[8]||(a[8]=t("dt",null,"播放量",-1)),t("dd",null,d(q(o.play_count)),1)]),t("div",null,[a[9]||(a[9]=t("dt",null,"受众群体画像",-1)),t("dd",null,d(o.audience_profile||"未填写"),1)]),t("div",null,[a[10]||(a[10]=t("dt",null,"出品方",-1)),t("dd",null,d(o.producer||"未填写"),1)]),t("div",null,[a[11]||(a[11]=t("dt",null,"主演",-1)),(S=o.cast_members)!=null&&S.length?(c(),p("dd",et,[(c(!0),p(G,null,H(o.cast_members,(O,de)=>(c(),p("span",{key:`${O.name}-${de}`},d(O.name)+"("+d(q(O.follower_count))+" 粉丝) ",1))),128))])):(c(),p("dd",tt,"未填写"))])])])]}),default:_(()=>[t("span",{class:"project-info-trigger",onClick:a[1]||(a[1]=le(()=>{},["stop"]))},[s(h(te),{size:18})])]),_:2},1024),t("strong",null,d(o.name),1)])),t("span",at,[t("span",null,d(Number(o.episode_count))+" 集",1),t("time",null,d(h($e)(o.updated_at)),1)]),s(ze,{label:`${o.name} 更多操作`,onEdit:S=>A(o),onDelete:S=>se(o)},null,8,["label","onEdit","onDelete"])],10,Oe)}),128)),!C.value&&!v.value.length?(c(),p("div",lt,[s(h(ee),{size:38,"stroke-width":"1.2"}),t("strong",null,d(u.value.trim()?`没有匹配的${g.value}`:`还没有${r.value}${g.value}`),1),t("p",null,d(u.value.trim()?"换一个关键词继续查找。":`点击右上角按钮创建第一个${g.value}。`),1),u.value.trim()?z("",!0):(c(),B(R,{key:0,type:"primary",icon:h(Y),onClick:$},{default:_(()=>[F(" 创建"+d(g.value),1)]),_:1},8,["icon"]))])):z("",!0)])),[[ie,C.value]]),e.value?(c(),B(ke,{key:0,modelValue:l.value,"onUpdate:modelValue":a[2]||(a[2]=o=>l.value=o),options:E.value,project:f.value,saving:i.value,"project-type":e.value?"premium_drama":"video_redraw",onSave:j},null,8,["modelValue","options","project","saving","project-type"])):(c(),B(Se,{key:1,modelValue:l.value,"onUpdate:modelValue":a[3]||(a[3]=o=>l.value=o),project:f.value,saving:i.value,onSave:j},null,8,["modelValue","project","saving"]))]),_:1},8,["page-title"])}}}),_t=J(ot,[["__scopeId","data-v-547de0dc"]]);export{_t as default};
|