yonge 1 неделя назад
Родитель
Сommit
2a607ebab8

+ 1 - 1
dist/assets/index-CpnGK94p.js → dist/assets/index-BDkG3wsQ.js

@@ -1 +1 @@
-import{_ as a}from"./404-R0y5dkvZ.js";import{a5 as o,en as t,ae as r,af as c,bM as _,bN as d,ak as s,bH as p}from"./index-C6lwuV45.js";const i=e=>(_("data-v-dda25179"),e=e(),d(),e),n={class:"errorPage"},m=i(()=>s("div",{class:"error"},[s("img",{src:a,class:"img",alt:""}),s("div",{class:"tit"},"页面找不到了~")],-1)),l=[m],f=o({__name:"errorPage",setup(e){return t(),(u,h)=>(r(),c("div",n,l))}}),I=p(f,[["__scopeId","data-v-dda25179"]]);export{I as default};
+import{_ as a}from"./404-R0y5dkvZ.js";import{a5 as o,en as t,ae as r,af as c,bM as _,bN as d,ak as s,bH as p}from"./index-QFgAaZjL.js";const i=e=>(_("data-v-dda25179"),e=e(),d(),e),n={class:"errorPage"},m=i(()=>s("div",{class:"error"},[s("img",{src:a,class:"img",alt:""}),s("div",{class:"tit"},"页面找不到了~")],-1)),l=[m],f=o({__name:"errorPage",setup(e){return t(),(u,h)=>(r(),c("div",n,l))}}),I=p(f,[["__scopeId","data-v-dda25179"]]);export{I as default};

+ 1 - 1
dist/assets/index-DjnDUGuu.js → dist/assets/index-BdNNvsaU.js

@@ -1 +1 @@
-import{u as s,af as r}from"./index-jRmHZ1bm.js";import{a5 as c,cB as n,R as p,ae as t,af as _,al as u,ag as i,bH as f}from"./index-C6lwuV45.js";const l={class:"pptScreen"},m=c({__name:"pptScreen",setup(d){const a=n(),e=p(!0),o=s();return a.setScreenMode("pptScreen"),o.initPPTData().then(()=>{e.value=!1}),(S,k)=>(t(),_("div",l,[e.value?i("",!0):(t(),u(r,{key:0}))]))}}),P=f(m,[["__scopeId","data-v-678905e9"]]);export{P as default};
+import{u as s,af as r}from"./index-Cx9qDXww.js";import{a5 as c,cB as n,R as p,ae as t,af as _,al as u,ag as i,bH as f}from"./index-QFgAaZjL.js";const l={class:"pptScreen"},m=c({__name:"pptScreen",setup(d){const a=n(),e=p(!0),o=s();return a.setScreenMode("pptScreen"),o.initPPTData().then(()=>{e.value=!1}),(S,k)=>(t(),_("div",l,[e.value?i("",!0):(t(),u(r,{key:0}))]))}}),P=f(m,[["__scopeId","data-v-678905e9"]]);export{P as default};

+ 1 - 1
dist/assets/index-BQ1C0pM2.js → dist/assets/index-BqkFL8da.js

@@ -1 +1 @@
-import{u as c,af as l}from"./index-jRmHZ1bm.js";import{w as p,bA as d,a5 as g,cB as m,R as t,ae as r,af as u,al as f,ag as w,bH as k}from"./index-C6lwuV45.js";import"./shapes-DqHTFtr6.js";const S=()=>{function o(a){if(window.parent===window)return;const{api:e,playState:n}=a.data||{};e==="headerTogge"?window.parent.postMessage({api:"headerTogge",playState:n},"*"):e==="changeTogge"?window.parent.postMessage({api:"changeTogge"},"*"):["clickTempo","clickViewFigner"].includes(e)&&window.parent.postMessage({api:e},"*")}p(()=>{window.addEventListener("message",o)}),d(()=>{window.removeEventListener("message",o)})},_=g({__name:"mobileScreen",setup(o){S();const a=m(),e=t(!0),n=t(!1),i=c();return a.setScreenMode("mobileScreen"),i.initPPTData().then(()=>{e.value=!1}),(v,s)=>(r(),u("div",{class:"mobileScreen",onClick:s[0]||(s[0]=b=>n.value=!1)},[e.value?w("",!0):(r(),f(l,{key:0}))]))}}),B=k(_,[["__scopeId","data-v-90b2692a"]]);export{B as default};
+import{u as c,af as l}from"./index-Cx9qDXww.js";import{w as p,bA as d,a5 as g,cB as m,R as t,ae as r,af as u,al as f,ag as w,bH as k}from"./index-QFgAaZjL.js";import"./shapes-BzYymi4X.js";const S=()=>{function o(a){if(window.parent===window)return;const{api:e,playState:n}=a.data||{};e==="headerTogge"?window.parent.postMessage({api:"headerTogge",playState:n},"*"):e==="changeTogge"?window.parent.postMessage({api:"changeTogge"},"*"):["clickTempo","clickViewFigner"].includes(e)&&window.parent.postMessage({api:e},"*")}p(()=>{window.addEventListener("message",o)}),d(()=>{window.removeEventListener("message",o)})},_=g({__name:"mobileScreen",setup(o){S();const a=m(),e=t(!0),n=t(!1),i=c();return a.setScreenMode("mobileScreen"),i.initPPTData().then(()=>{e.value=!1}),(v,s)=>(r(),u("div",{class:"mobileScreen",onClick:s[0]||(s[0]=b=>n.value=!1)},[e.value?w("",!0):(r(),f(l,{key:0}))]))}}),B=k(_,[["__scopeId","data-v-90b2692a"]]);export{B as default};

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
dist/assets/index-By-XxqOP.js


+ 1 - 1
dist/assets/index-CAhO-NsT.js → dist/assets/index-CFynIBxl.js

@@ -1 +1 @@
-import{_ as t}from"./404-R0y5dkvZ.js";import{E as c}from"./index-DyACVDKO.js";import{a5 as n,ae as i,af as r,ak as o,aq as _,am as d,P as l,aS as p,bM as m,bN as f,bH as u}from"./index-C6lwuV45.js";const s=a=>(m("data-v-340bbdaa"),a=a(),f(),a),h={class:"login"},b={class:"error"},g=s(()=>o("img",{src:t,class:"img",alt:""},null,-1)),k=s(()=>o("div",{class:"tit"},"登录已过期或服务器错误!",-1)),v=n({__name:"login",setup(a){function e(){window.close()}return(x,B)=>(i(),r("div",h,[o("div",b,[g,k,_(l(c),{class:"backBtn",type:"primary",plain:"",onClick:e},{default:d(()=>[p("关闭页面")]),_:1})])]))}}),S=u(v,[["__scopeId","data-v-340bbdaa"]]);export{S as default};
+import{_ as t}from"./404-R0y5dkvZ.js";import{E as c}from"./index-P7FImbe_.js";import{a5 as n,ae as i,af as r,ak as o,aq as _,am as d,P as l,aS as p,bM as m,bN as f,bH as u}from"./index-QFgAaZjL.js";const s=a=>(m("data-v-340bbdaa"),a=a(),f(),a),h={class:"login"},b={class:"error"},g=s(()=>o("img",{src:t,class:"img",alt:""},null,-1)),k=s(()=>o("div",{class:"tit"},"登录已过期或服务器错误!",-1)),v=n({__name:"login",setup(a){function e(){window.close()}return(x,B)=>(i(),r("div",h,[o("div",b,[g,k,_(l(c),{class:"backBtn",type:"primary",plain:"",onClick:e},{default:d(()=>[p("关闭页面")]),_:1})])]))}}),S=u(v,[["__scopeId","data-v-340bbdaa"]]);export{S as default};

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
dist/assets/index-CI6TnGmM.css


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
dist/assets/index-CjHnNBy7.css


+ 1 - 1
dist/assets/index-jRmHZ1bm.js → dist/assets/index-Cx9qDXww.js

@@ -1,4 +1,4 @@
-import{cF as dw,cG as hw,aG as vw,cH as pw,cI as gw,cJ as mw,cK as yw,ah as Yt,cL as Sw,cM as bw,cN as xw,cO as Cw,aM as ww,aF as Tw,cP as Iw,aB as c1,bg as _w,cQ as Aw,cR as Ew,cS as Pw,cT as Mw,cU as Rw,cV as Dw,cW as Lw,aE as kw,cX as Ow,s as Ae,bl as Bw,al as je,ag as ze,af as ve,ak as Z,cY as Nw,cZ as Fw,c_ as $w,c$ as zw,bk as Uw,cw as ul,aS as Cv,aq as Ye,d0 as Hw,d1 as Vw,a5 as $e,d2 as Gw,d3 as Ww,d4 as jw,d5 as Kw,d6 as Xw,d7 as Yw,d8 as Zw,d9 as Qw,da as Jw,db as qw,dc as eT,v as tT,dd as rT,de as nT,df as iT,aW as aT,dg as oT,dh as sT,di as lT,dj as uT,dk as cT,ay as sr,dl as fT,dm as dT,dn as hT,dp as vT,A as pT,dq as gT,dr as mT,bq as yT,ds as ST,dt as bT,du as xT,ap as CT,ac as f1,ai as dt,dv as wT,au as Ce,dw as TT,X as d1,y as IT,dx as _T,aP as AT,dy as ET,w as _r,dz as PT,dA as MT,H as RT,dB as DT,bA as hn,aD as LT,ae as ie,bN as ea,$ as wc,dC as kT,bM as ta,dD as OT,aC as BT,aO as NT,R as fe,dE as FT,br as rh,b3 as Lr,aj as Hs,b1 as lt,b2 as Ua,an as wv,dF as $T,dG as zT,dH as UT,dI as HT,dJ as VT,dK as GT,dL as WT,Q as jT,dM as KT,dN as XT,dO as YT,at as Mt,dP as ZT,aR as QT,aY as JT,ad as cl,aZ as qT,dQ as eI,dR as tI,dS as rI,P as le,a6 as nI,dT as iI,dU as aI,dV as oI,dW as sI,a7 as lI,dX as uI,dY as cI,dZ as fI,d_ as dI,d$ as hI,b4 as vI,aA as Tv,e0 as pI,e1 as gI,E as gr,x as mI,e2 as yI,e3 as SI,e4 as bI,am as _n,e5 as xI,az as hr,aU as nh,e6 as CI,as as jr,e7 as wI,e8 as Iv,cE as mr,by as ih,ct as ah,bI as TI,bH as Ve,bu as oh,bv as _v,bx as Wt,bB as Tc,bL as di,e9 as wu,bE as hi,ea as II,bJ as ra,bC as _I,bw as Bt,eb as AI,ec as ui,cu as EI,ed as PI,ee as MI,ef as RI,eg as DI,bK as Zp,eh as LI,bF as Qp,cB as Ic,cA as kI,ei as Hu,ej as Il}from"./index-C6lwuV45.js";/**
+import{cF as dw,cG as hw,aG as vw,cH as pw,cI as gw,cJ as mw,cK as yw,ah as Yt,cL as Sw,cM as bw,cN as xw,cO as Cw,aM as ww,aF as Tw,cP as Iw,aB as c1,bg as _w,cQ as Aw,cR as Ew,cS as Pw,cT as Mw,cU as Rw,cV as Dw,cW as Lw,aE as kw,cX as Ow,s as Ae,bl as Bw,al as je,ag as ze,af as ve,ak as Z,cY as Nw,cZ as Fw,c_ as $w,c$ as zw,bk as Uw,cw as ul,aS as Cv,aq as Ye,d0 as Hw,d1 as Vw,a5 as $e,d2 as Gw,d3 as Ww,d4 as jw,d5 as Kw,d6 as Xw,d7 as Yw,d8 as Zw,d9 as Qw,da as Jw,db as qw,dc as eT,v as tT,dd as rT,de as nT,df as iT,aW as aT,dg as oT,dh as sT,di as lT,dj as uT,dk as cT,ay as sr,dl as fT,dm as dT,dn as hT,dp as vT,A as pT,dq as gT,dr as mT,bq as yT,ds as ST,dt as bT,du as xT,ap as CT,ac as f1,ai as dt,dv as wT,au as Ce,dw as TT,X as d1,y as IT,dx as _T,aP as AT,dy as ET,w as _r,dz as PT,dA as MT,H as RT,dB as DT,bA as hn,aD as LT,ae as ie,bN as ea,$ as wc,dC as kT,bM as ta,dD as OT,aC as BT,aO as NT,R as fe,dE as FT,br as rh,b3 as Lr,aj as Hs,b1 as lt,b2 as Ua,an as wv,dF as $T,dG as zT,dH as UT,dI as HT,dJ as VT,dK as GT,dL as WT,Q as jT,dM as KT,dN as XT,dO as YT,at as Mt,dP as ZT,aR as QT,aY as JT,ad as cl,aZ as qT,dQ as eI,dR as tI,dS as rI,P as le,a6 as nI,dT as iI,dU as aI,dV as oI,dW as sI,a7 as lI,dX as uI,dY as cI,dZ as fI,d_ as dI,d$ as hI,b4 as vI,aA as Tv,e0 as pI,e1 as gI,E as gr,x as mI,e2 as yI,e3 as SI,e4 as bI,am as _n,e5 as xI,az as hr,aU as nh,e6 as CI,as as jr,e7 as wI,e8 as Iv,cE as mr,by as ih,ct as ah,bI as TI,bH as Ve,bu as oh,bv as _v,bx as Wt,bB as Tc,bL as di,e9 as wu,bE as hi,ea as II,bJ as ra,bC as _I,bw as Bt,eb as AI,ec as ui,cu as EI,ed as PI,ee as MI,ef as RI,eg as DI,bK as Zp,eh as LI,bF as Qp,cB as Ic,cA as kI,ei as Hu,ej as Il}from"./index-QFgAaZjL.js";/**
 * vue v3.4.34
 * (c) 2018-present Yuxi (Evan) You and Vue contributors
 * @license MIT

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
dist/assets/index-P7FImbe_.js


Разница между файлами не показана из-за своего большого размера
+ 1 - 1
dist/assets/index-QFgAaZjL.js


+ 1 - 1
dist/assets/shapes-DqHTFtr6.js → dist/assets/shapes-BzYymi4X.js

@@ -1,4 +1,4 @@
-import{cE as k,bB as $1}from"./index-C6lwuV45.js";import{ag as Z,ah as H1,ai as U,aj as n0,ak as c0,al as i0,am as j1,an as K1,ao as Y1,ap as R}from"./index-jRmHZ1bm.js";var z1={exports:{}};/*!
+import{cE as k,bB as $1}from"./index-QFgAaZjL.js";import{ag as Z,ah as H1,ai as U,aj as n0,ak as c0,al as i0,am as j1,an as K1,ao as Y1,ap as R}from"./index-Cx9qDXww.js";var z1={exports:{}};/*!
  * clipboard.js v2.0.11
  * https://clipboardjs.com/
  *

+ 1 - 1
dist/index.html

@@ -10,7 +10,7 @@
     <meta name="description" content="ppt编辑器" />
     <meta name="keywords" content="ppt,powerpoint,office powerpoint,在线ppt,幻灯片,演示文稿,ppt在线制作,Vue3,TypeScript" />
     <title>PPT</title>
-    <script type="module" crossorigin src="./assets/index-C6lwuV45.js"></script>
+    <script type="module" crossorigin src="./assets/index-QFgAaZjL.js"></script>
     <link rel="stylesheet" crossorigin href="./assets/index-AavUEaYy.css">
   </head>
   <body>

+ 0 - 14
src/utils/aiCoursewareToSlides.ts

@@ -141,20 +141,6 @@ function buildSlide(
         lineHeight: 1.35
       })
     )
-  } else if (page.teacherTips) {
-    elements.push(shapeElement({ left: 104, top: 724, width: 1090, height: 62, fill: hasCustomBackground ? "rgba(255, 255, 255, 0.78)" : "#FFFFFF", opacity: 0.94 }))
-    elements.push(
-      textElement({
-        left: 130,
-        top: 742,
-        width: 1030,
-        height: 34,
-        content: `提示:${escapeHtml(page.teacherTips)}`,
-        fontSize: 18,
-        color: "#52616B",
-        lineHeight: 1.35
-      })
-    )
   }
 
   elements.push(

+ 49 - 53
src/views/Editor/EditorHeader/AiCoursewareDialog.vue

@@ -12,7 +12,6 @@
           <div class="title">{{ pageTitle }}</div>
           <div class="sub">{{ pageMeta }}</div>
         </div>
-        <div v-if="outline" class="page-count">{{ outline.pages.length }}页</div>
       </div>
 
       <div v-if="taskInfo" class="progress-strip">
@@ -45,11 +44,9 @@
 
         <div v-if="selectedPage" class="page-editor">
           <div class="editor-head">
-            <div>
-              <div class="editor-page">第{{ selectedPage.pageNo }}页</div>
+            <div class="title-editor">
               <input v-model="selectedPage.title" class="page-title" :disabled="working" />
             </div>
-            <div class="page-type">{{ pageTypeLabel(selectedPage.type) }}</div>
           </div>
 
           <div class="field-grid">
@@ -74,7 +71,10 @@
           </div>
 
           <div class="keyword-row">
-            <span class="keyword-label">图片关键词</span>
+            <div class="keyword-info">
+              <div class="keyword-label">图片关键词</div>
+              <div class="keyword-hint">用于匹配课件图片,可手动补充或删减</div>
+            </div>
             <input
               :value="selectedPage.imageKeywords.join('、')"
               class="keyword-input"
@@ -83,7 +83,13 @@
               @input="event => updateImageKeywords(selectedPage!, event)"
             />
           </div>
-          <div v-if="selectedPage.teacherTips" class="teacher-tip">教师提示:{{ selectedPage.teacherTips }}</div>
+          <div class="remark-card">
+            <div class="remark-head">
+              <div class="remark-title">PPT备注</div>
+              <div class="remark-hint">仅老师授课时参考,不会显示在幻灯片画面中</div>
+            </div>
+            <textarea v-model="selectedPage.teacherTips" :disabled="working" class="remark-input"></textarea>
+          </div>
         </div>
       </div>
 
@@ -153,7 +159,7 @@ const currentProgressLabel = computed(() => {
 const pageTitle = computed(() => outline.value?.chapterName || outline.value?.title || "课件大纲")
 const pageMeta = computed(() => {
   if (!outline.value) return "根据当前教材、单元和章节生成15页音乐课件"
-  return [outline.value.gradeName, outline.value.unitName].filter(Boolean).join(" · ")
+  return [...[outline.value.gradeName, outline.value.unitName].filter(Boolean), `共${outline.value.pages.length}页`].join(" · ")
 })
 const selectedPage = computed(() => {
   const pages = outline.value?.pages || []
@@ -279,24 +285,6 @@ function formatPageNo(pageNo?: number) {
   return String(pageNo || 0).padStart(2, "0")
 }
 
-function pageTypeLabel(type?: string) {
-  const labels: Record<string, string> = {
-    cover: "封面",
-    intro: "导入",
-    goal: "目标",
-    background: "背景",
-    listen: "聆听",
-    content: "内容",
-    knowledge: "知识",
-    skill: "技能",
-    interaction: "互动",
-    activity: "活动",
-    extension: "拓展",
-    summary: "总结",
-    homework: "练习"
-  }
-  return labels[type || ""] || "页面"
-}
 </script>
 
 <style lang="scss" scoped>
@@ -322,11 +310,6 @@ function pageTypeLabel(type?: string) {
   color: #7b8794;
   font-size: 14px;
 }
-.page-count {
-  color: #52616b;
-  font-size: 14px;
-  font-weight: 600;
-}
 .progress-strip {
   margin-top: 12px;
   height: 42px;
@@ -435,25 +418,10 @@ function pageTypeLabel(type?: string) {
   padding: 16px;
 }
 .editor-head {
-  display: flex;
-  align-items: flex-start;
-  justify-content: space-between;
-  gap: 16px;
+  display: block;
 }
-.editor-page {
-  margin-bottom: 8px;
-  color: #7b8794;
-  font-size: 13px;
-}
-.page-type {
-  height: 28px;
-  padding: 0 12px;
-  line-height: 28px;
-  border-radius: 999px;
-  color: $themeColor;
-  background: rgba($color: $themeColor, $alpha: 0.08);
-  font-size: 13px;
-  flex-shrink: 0;
+.title-editor {
+  max-width: 460px;
 }
 .field-grid {
   margin-top: 12px;
@@ -479,7 +447,8 @@ function pageTypeLabel(type?: string) {
 .page-title,
 .page-bullets,
 .page-design,
-.keyword-input {
+.keyword-input,
+.remark-input {
   width: 100%;
   border: 1px solid #d9d9d9;
   border-radius: 6px;
@@ -505,25 +474,52 @@ function pageTypeLabel(type?: string) {
   align-items: center;
   gap: 10px;
 }
-.keyword-label {
-  width: 72px;
+.keyword-info {
+  width: 112px;
   flex-shrink: 0;
+}
+.keyword-label {
   color: #52616b;
   font-size: 13px;
   font-weight: 600;
 }
+.keyword-hint {
+  margin-top: 3px;
+  color: #9aa5b1;
+  font-size: 12px;
+  line-height: 1.3;
+}
 .keyword-input {
   height: 34px;
   padding: 0 10px;
 }
-.teacher-tip {
+.remark-card {
   margin-top: 12px;
   padding: 10px 12px;
   border-radius: 6px;
-  color: #52616b;
   background: #f7f9fc;
+}
+.remark-head {
+  display: flex;
+  align-items: baseline;
+  gap: 10px;
+  margin-bottom: 8px;
+}
+.remark-title {
+  color: #52616b;
   font-size: 13px;
+  font-weight: 600;
+}
+.remark-hint {
+  color: #9aa5b1;
+  font-size: 12px;
+}
+.remark-input {
+  height: 72px;
+  padding: 10px;
+  resize: vertical;
   line-height: 1.5;
+  background: #fff;
 }
 .empty {
   flex: 1;

Некоторые файлы не были показаны из-за большого количества измененных файлов