ソースを参照

Merge branch 'lhd'

natasha 2 ヶ月 前
コミット
add2c03e77

+ 65 - 0
src/icons/svg/animated.svg

@@ -0,0 +1,65 @@
+<svg width="240" height="220" viewBox="0 0 24 22" fill="none" xmlns="http://www.w3.org/2000/svg">
+  <g clip-path="url(#clip0_1_26)" id="Group 1">
+    <!-- Speaker body - static -->
+    <path 
+      d="M11.8301 2.10059C11.9902 1.95276 12.25 2.06624 12.25 2.28418V19.8438C12.25 20.0564 12.0014 20.1721 11.8389 20.0352L7.26367 16.1641C6.94776 15.8969 6.54756 15.75 6.13379 15.75H1C0.861929 15.75 0.75 15.6381 0.75 15.5V7C0.75 6.86193 0.861929 6.75 1 6.75H6.10938C6.5491 6.74991 6.97274 6.58435 7.2959 6.28613L11.8301 2.10059Z" 
+      id="Rectangle 5" 
+      stroke="currentColor" 
+      stroke-width="1.5" 
+    />
+    
+    <!-- Outer wave - animated -->
+    <g id="Ellipse 2">
+      <mask fill="white" id="path-2-inside-1_1_26">
+        <path d="M17.2764 5.45814C18.1091 6.10068 18.7863 6.92261 19.2577 7.86285C19.729 8.80309 19.9825 9.83746 19.9991 10.8891C20.0158 11.9407 19.7953 12.9826 19.3539 13.9373C18.9126 14.892 18.2618 15.735 17.4498 16.4036L16.3678 15.0896C16.9822 14.5836 17.4748 13.9456 17.8088 13.223C18.1428 12.5005 18.3097 11.712 18.2971 10.9161C18.2845 10.1202 18.0927 9.33732 17.736 8.62572C17.3792 7.91413 16.8667 7.29207 16.2365 6.80577L17.2764 5.45814Z" />
+      </mask>
+      <path 
+        d="M17.2764 5.45814C18.1091 6.10068 18.7863 6.92261 19.2577 7.86285C19.729 8.80309 19.9825 9.83746 19.9991 10.8891C20.0158 11.9407 19.7953 12.9826 19.3539 13.9373C18.9126 14.892 18.2618 15.735 17.4498 16.4036L16.3678 15.0896C16.9822 14.5836 17.4748 13.9456 17.8088 13.223C18.1428 12.5005 18.3097 11.712 18.2971 10.9161C18.2845 10.1202 18.0927 9.33732 17.736 8.62572C17.3792 7.91413 16.8667 7.29207 16.2365 6.80577L17.2764 5.45814Z" 
+        mask="url(#path-2-inside-1_1_26)" 
+        stroke="currentColor" 
+        stroke-width="3"
+        transform-origin="12 11"
+      >
+        <animate attributeName="opacity" values="0;1;0" dur="1.5s" repeatCount="indefinite" />
+        <animateTransform 
+          attributeName="transform" 
+          type="scale" 
+          values="0.8;1;1.1" 
+          dur="1.5s" 
+          repeatCount="indefinite"
+          additive="sum"
+        />
+      </path>
+    </g>
+    
+    <!-- Inner wave - animated with delay -->
+    <g id="Ellipse 1">
+      <mask fill="white" id="path-3-inside-2_1_26">
+        <path d="M19.5619 2.17153C20.9054 3.1701 22.0032 4.46212 22.7719 5.94918C23.5405 7.43624 23.9596 9.07911 23.9972 10.7526C24.0349 12.4262 23.6901 14.0862 22.9891 15.6063C22.2881 17.1265 21.2494 18.4665 19.9522 19.5245L18.8597 18.185C19.9531 17.2932 20.8286 16.1637 21.4194 14.8825C22.0102 13.6013 22.3009 12.2021 22.2691 10.7915C22.2374 9.38095 21.8842 7.99624 21.2363 6.74286C20.5885 5.48948 19.6631 4.40048 18.5307 3.55882L19.5619 2.17153Z" />
+      </mask>
+      <path 
+        d="M19.5619 2.17153C20.9054 3.1701 22.0032 4.46212 22.7719 5.94918C23.5405 7.43624 23.9596 9.07911 23.9972 10.7526C24.0349 12.4262 23.6901 14.0862 22.9891 15.6063C22.2881 17.1265 21.2494 18.4665 19.9522 19.5245L18.8597 18.185C19.9531 17.2932 20.8286 16.1637 21.4194 14.8825C22.0102 13.6013 22.3009 12.2021 22.2691 10.7915C22.2374 9.38095 21.8842 7.99624 21.2363 6.74286C20.5885 5.48948 19.6631 4.40048 18.5307 3.55882L19.5619 2.17153Z" 
+        mask="url(#path-3-inside-2_1_26)" 
+        stroke="currentColor" 
+        stroke-width="3"
+        transform-origin="12 11"
+      >
+        <animate attributeName="opacity" values="0;1;0" dur="1.5s" begin="0.3s" repeatCount="indefinite" />
+        <animateTransform 
+          attributeName="transform" 
+          type="scale" 
+          values="0.8;1;1.1" 
+          dur="1.5s" 
+          begin="0.3s"
+          repeatCount="indefinite"
+          additive="sum"
+        />
+      </path>
+    </g>
+  </g>
+  <defs>
+    <clipPath id="clip0_1_26">
+      <rect fill="white" height="22" width="24" />
+    </clipPath>
+  </defs>
+</svg>

+ 3 - 0
src/icons/svg/compare.svg

@@ -0,0 +1,3 @@
+<svg width="18" height="16" viewBox="0 0 18 16" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M11.4 1.6H15.4C16.2837 1.6 17 2.31634 17 3.2V5.6M6.6 1.6H2.6C1.71634 1.6 1 2.31634 1 3.2V12.8C1 13.6837 1.71634 14.4 2.6 14.4H6.6M11.4 14.4H15.4C16.2837 14.4 17 13.6837 17 12.8V10.4M9 0V16M17 6.4V9.6" stroke="currentColor"/>
+</svg>

+ 4 - 0
src/icons/svg/delete-btn.svg

@@ -0,0 +1,4 @@
+<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
+<circle cx="8" cy="8" r="7.5" stroke="currentColor"/>
+<path d="M10 5.6H12V6.4H11.2V11.6C11.2 11.8209 11.0209 12 10.8 12H5.2C4.97909 12 4.8 11.8209 4.8 11.6V6.4H4V5.6H6V4.4C6 4.17909 6.17909 4 6.4 4H9.6C9.82092 4 10 4.17909 10 4.4V5.6ZM10.4 6.4H5.6V11.2H10.4V6.4ZM6.8 7.6H7.6V10H6.8V7.6ZM8.4 7.6H9.2V10H8.4V7.6ZM6.8 4.8V5.6H9.2V4.8H6.8Z" fill="currentColor"/>
+</svg>

+ 5 - 0
src/icons/svg/en-btn.svg

@@ -0,0 +1,5 @@
+<svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
+<rect x="0.5" y="0.5" width="17" height="17" rx="1.5" fill=""/>
+<rect x="0.5" y="0.5" width="17" height="17" rx="1.5" stroke="currentColor"/>
+<path d="M2.55682 13.5V4.77273H7.82386V5.71023H3.61364V8.65909H7.55114V9.59659H3.61364V12.5625H7.89205V13.5H2.55682ZM10.598 9.5625V13.5H9.59233V6.95455H10.5639V7.97727H10.6491C10.8026 7.64489 11.0355 7.37784 11.348 7.17614C11.6605 6.97159 12.0639 6.86932 12.5582 6.86932C13.0014 6.86932 13.3892 6.96023 13.7216 7.14205C14.054 7.32102 14.3125 7.59375 14.4972 7.96023C14.6818 8.32386 14.7741 8.78409 14.7741 9.34091V13.5H13.7685V9.40909C13.7685 8.89489 13.6349 8.49432 13.3679 8.20739C13.1009 7.91761 12.7344 7.77273 12.2685 7.77273C11.9474 7.77273 11.6605 7.84233 11.4077 7.98153C11.1577 8.12074 10.9602 8.32386 10.8153 8.59091C10.6705 8.85795 10.598 9.18182 10.598 9.5625Z" fill="currentColor"/>
+</svg>

+ 7 - 0
src/icons/svg/jianpan.svg

@@ -0,0 +1,7 @@
+<svg width="24" height="18" viewBox="0 0 24 18" fill="none" xmlns="http://www.w3.org/2000/svg">
+<rect x="1" y="1" width="22" height="16" stroke="currentColor" stroke-width="2" stroke-linejoin="round"/>
+<line x1="5" y1="7" x2="5.93333" y2="7" stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
+<line x1="8.66675" y1="7" x2="9.60008" y2="7" stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
+<line x1="12.3333" y1="7" x2="19.1333" y2="7" stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
+<line x1="5" y1="11.6667" x2="19.1333" y2="11.6667" stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
+</svg>

+ 11 - 0
src/icons/svg/luyin-ing.svg

@@ -0,0 +1,11 @@
+<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g clip-path="url(#clip0_896_783)">
+<circle cx="8" cy="8" r="8" fill="currentColor"/>
+<rect x="4.57153" y="4.57141" width="6.85714" height="6.85714" rx="1" fill="white"/>
+</g>
+<defs>
+<clipPath id="clip0_896_783">
+<rect width="16" height="16" fill="white"/>
+</clipPath>
+</defs>
+</svg>

+ 4 - 0
src/icons/svg/luyin.svg

@@ -0,0 +1,4 @@
+<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M8 1.6C4.46538 1.6 1.6 4.46538 1.6 8C1.6 11.5346 4.46538 14.4 8 14.4C11.5346 14.4 14.4 11.5346 14.4 8C14.4 4.46538 11.5346 1.6 8 1.6ZM0 8C0 3.58172 3.58172 0 8 0C12.4183 0 16 3.58172 16 8C16 12.4183 12.4183 16 8 16C3.58172 16 0 12.4183 0 8Z" fill="currentColor"/>
+<path d="M12 8C12 10.2091 10.2091 12 8 12C5.79086 12 4 10.2091 4 8C4 5.79086 5.79086 4 8 4C10.2091 4 12 5.79086 12 8Z" fill="currentColor"/>
+</svg>

+ 5 - 0
src/icons/svg/pin-btn.svg

@@ -0,0 +1,5 @@
+<svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
+<rect x="0.5" y="0.5" width="17" height="17" rx="1.5" fill=""/>
+<rect x="0.5" y="0.5" width="17" height="17" rx="1.5" stroke="currentColor"/>
+<path d="M3.336 9.792C3.784 9.672 4.328 9.512 4.968 9.312C5.608 9.112 6.256 8.908 6.912 8.7L7.032 9.516C6.432 9.724 5.828 9.928 5.22 10.128C4.612 10.328 4.06 10.512 3.564 10.68L3.336 9.792ZM3.492 5.844H7.044V6.684H3.492V5.844ZM4.968 3.432H5.844V13.308C5.844 13.564 5.812 13.76 5.748 13.896C5.692 14.04 5.588 14.152 5.436 14.232C5.284 14.304 5.088 14.352 4.848 14.376C4.608 14.4 4.3 14.412 3.924 14.412C3.908 14.292 3.872 14.144 3.816 13.968C3.768 13.8 3.716 13.652 3.66 13.524C3.916 13.532 4.144 13.536 4.344 13.536C4.552 13.536 4.692 13.536 4.764 13.536C4.836 13.536 4.888 13.52 4.92 13.488C4.952 13.456 4.968 13.396 4.968 13.308V3.432ZM7.716 5.952H14.136V6.816H7.716V5.952ZM7.32 9.228H14.412V10.092H7.32V9.228ZM11.784 6.204H12.66V14.412H11.784V6.204ZM8.436 3.828L9.204 3.516C9.356 3.724 9.5 3.952 9.636 4.2C9.78 4.448 9.912 4.692 10.032 4.932C10.152 5.164 10.248 5.368 10.32 5.544L9.492 5.928C9.436 5.744 9.352 5.532 9.24 5.292C9.128 5.044 9 4.792 8.856 4.536C8.72 4.28 8.58 4.044 8.436 3.828ZM12.708 3.444L13.656 3.768C13.512 4.064 13.36 4.372 13.2 4.692C13.04 5.012 12.88 5.32 12.72 5.616C12.568 5.904 12.42 6.16 12.276 6.384L11.556 6.084C11.692 5.852 11.832 5.584 11.976 5.28C12.12 4.968 12.256 4.652 12.384 4.332C12.52 4.004 12.628 3.708 12.708 3.444ZM9.168 6.216H10.044V9.108C10.044 9.54 10.016 9.996 9.96 10.476C9.912 10.956 9.804 11.436 9.636 11.916C9.476 12.396 9.236 12.86 8.916 13.308C8.596 13.748 8.172 14.148 7.644 14.508C7.604 14.444 7.548 14.372 7.476 14.292C7.404 14.212 7.328 14.132 7.248 14.052C7.176 13.972 7.104 13.912 7.032 13.872C7.536 13.56 7.932 13.208 8.22 12.816C8.508 12.416 8.716 12 8.844 11.568C8.98 11.136 9.068 10.712 9.108 10.296C9.148 9.872 9.168 9.476 9.168 9.108V6.216Z" fill="currentColor"/>
+</svg>

+ 3 - 0
src/icons/svg/play-btn.svg

@@ -0,0 +1,3 @@
+<svg width="15" height="12" viewBox="0 0 15 12" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M3.73521 4.29662L6 2.44359V8.81628L3.73521 6.96328H1.33333V4.29662H3.73521ZM0.666667 8.29662H3.25926L6.78893 11.1845C6.84847 11.2332 6.92307 11.2598 7 11.2598C7.18407 11.2598 7.33333 11.1106 7.33333 10.9265V0.333343C7.33333 0.256396 7.30673 0.181816 7.258 0.122263C7.1414 -0.0202174 6.9314 -0.0412173 6.78893 0.075356L3.25926 2.96326H0.666667C0.29848 2.96326 0 3.26174 0 3.62993V7.62995C0 7.99815 0.29848 8.29662 0.666667 8.29662ZM14.6667 5.62988C14.6667 7.82455 13.7026 9.79408 12.1748 11.138L11.2297 10.1928C12.5172 9.09235 13.3333 7.45642 13.3333 5.62988C13.3333 3.80332 12.5172 2.16741 11.2297 1.06693L12.1748 0.121743C13.7026 1.46567 14.6667 3.43518 14.6667 5.62988ZM11.3333 5.62988C11.3333 4.35542 10.7373 3.2202 9.80887 2.4877L8.85613 3.44044C9.54753 3.92225 10 4.72322 10 5.62988C10 6.53655 9.54753 7.33748 8.85613 7.81928L9.80887 8.77202C10.7373 8.03955 11.3333 6.90428 11.3333 5.62988Z" fill="currentColor"/>
+</svg>

+ 6 - 0
src/icons/svg/repeat-1.svg

@@ -0,0 +1,6 @@
+<svg width="10" height="11" viewBox="0 0 10 11" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M9.044 1.082H9.578V5H8.87V1.928C8.764 1.976 8.66 2.013 8.558 2.039C8.456 2.065 8.354 2.078 8.252 2.078V1.4C8.388 1.386 8.52 1.355 8.648 1.307C8.776 1.257 8.908 1.182 9.044 1.082Z" fill="currentColor"/>
+<path d="M1 4.23397C1 3.55247 1.55247 3 2.23397 3H6.09091M9 6.70192C9 7.38343 8.44705 7.93518 7.76559 7.94295C6.30523 7.95961 5.25694 8 3.90909 8" stroke="currentColor" stroke-linecap="round"/>
+<path d="M6.71653 2.67267C6.87924 2.86056 6.87924 3.13944 6.71653 3.32733L5.62797 4.58429C5.3249 4.93424 4.75 4.71991 4.75 4.25696L4.75 1.74304C4.75 1.28009 5.3249 1.06576 5.62796 1.41571L6.71653 2.67267Z" fill="currentColor"/>
+<path d="M2.28347 7.67267C2.12076 7.86056 2.12076 8.13944 2.28347 8.32733L3.37203 9.58429C3.6751 9.93424 4.25 9.71991 4.25 9.25696L4.25 6.74304C4.25 6.28009 3.6751 6.06576 3.37204 6.41571L2.28347 7.67267Z" fill="currentColor"/>
+</svg>

+ 5 - 0
src/icons/svg/repeat-btn.svg

@@ -0,0 +1,5 @@
+<svg width="16" height="15" viewBox="0 0 16 15" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M1 5.75C1 4.7835 1.7835 4 2.75 4H11.8182M15 9.25C15 10.2165 14.2165 11 13.25 11C9.99258 11 6.70039 11 4.18182 11" stroke="currentColor" stroke-linecap="round"/>
+<path d="M13.3587 3.60968C13.6087 3.80984 13.6087 4.19016 13.3587 4.39032L10.3318 6.81363C10.0044 7.07571 9.51927 6.84265 9.51927 6.42331L9.51927 1.57669C9.51927 1.15735 10.0044 0.924294 10.3318 1.18637L13.3587 3.60968Z" fill="currentColor"/>
+<path d="M2.48754 10.6097C2.23753 10.8098 2.23753 11.1902 2.48754 11.3903L5.51444 13.8136C5.84179 14.0757 6.32692 13.8426 6.32692 13.4233L6.32692 8.57669C6.32692 8.15735 5.84179 7.92429 5.51443 8.18637L2.48754 10.6097Z" fill="currentColor"/>
+</svg>

+ 4 - 0
src/views/book/courseware/preview/common/SoundRecord.vue

@@ -90,6 +90,10 @@ export default {
       type: Number,
       default: 0,
     },
+    attrib: {
+      type: Object,
+      default: () => {},
+    },
   },
   data() {
     return {

+ 140 - 20
src/views/book/courseware/preview/components/new_word/NewWordPreview.vue

@@ -4,8 +4,14 @@
     <SerialNumberPosition v-if="isEnable(data.property.sn_display_mode)" :property="data.property" />
 
     <div v-if="data" class="main">
-      <div class="NPC-zhedie">
-        <div class="topTitle" :style="{ backgroundColor: bookInfo.theme_color }">
+      <div class="NPC-zhedie" :style="{ width: width }">
+        <div
+          class="topTitle"
+          :style="{
+            backgroundColor:
+              data.unified_attrib && data.unified_attrib.topic_color ? data.unified_attrib.topic_color : '',
+          }"
+        >
           <div class="NPC-top-left">
             <span class="NPC-topTitle-text" v-html="data.title_con"></span>
             <span class="NPC-topTitle-text" v-if="showLang">
@@ -33,6 +39,7 @@
                   :ed="ed"
                   type="audioLine"
                   @handleListenRead="handleListenRead"
+                  :attrib="data.unified_attrib"
                 />
               </div>
               <ul
@@ -58,16 +65,60 @@
                     ]"
                   >
                     <template v-if="sItem.bg || sItem.ed">
-                      <a
+                      <!-- <a
                         :class="['play-btn', curTime >= sItem.bg && curTime < sItem.ed && stopAudioS ? 'active' : '']"
                         @click="handleChangeTime(sItem.bg, sItem.ed)"
-                      ></a>
+                      ></a> -->
+                      <SvgIcon
+                        v-if="curTime >= sItem.bg && curTime < sItem.ed && stopAudioS"
+                        @click="handleChangeTime(sItem.bg, sItem.ed)"
+                        icon-class="animated"
+                        :style="{
+                          color:
+                            data.unified_attrib && data.unified_attrib.topic_color
+                              ? data.unified_attrib.topic_color
+                              : '',
+                        }"
+                      />
+                      <SvgIcon
+                        v-else
+                        @click="handleChangeTime(sItem.bg, sItem.ed)"
+                        icon-class="play-btn"
+                        :style="{
+                          color:
+                            data.unified_attrib && data.unified_attrib.topic_color
+                              ? data.unified_attrib.topic_color
+                              : '',
+                        }"
+                      />
                     </template>
                     <template v-else-if="sItem.mp3_list">
                       <span
                         :class="['play-btn', playClass && mp3_index === sItem.sIndex ? 'active' : '']"
                         @click="palyAudio(sItem.mp3_list_url, sItem.sIndex)"
-                      ></span>
+                      >
+                        <SvgIcon
+                          v-if="playClass && mp3_index === sItem.sIndex"
+                          icon-class="animated"
+                          :style="{
+                            color:
+                              data.unified_attrib && data.unified_attrib.topic_color
+                                ? data.unified_attrib.topic_color
+                                : '',
+                          }"
+                        />
+                        <SvgIcon
+                          v-else
+                          icon-class="play-btn"
+                          :style="{
+                            color:
+                              data.unified_attrib && data.unified_attrib.topic_color
+                                ? data.unified_attrib.topic_color
+                                : '',
+                          }"
+                        />
+                      </span>
+
                       <audio :id="'word' + indexStr + sItem.sIndex" :src="sItem.mp3_list_url"></audio>
                     </template>
 
@@ -76,7 +127,16 @@
                     </template>
                     <div class="tabNum-box">
                       <template v-if="sItem.mIndex == 0">
-                        <b class="tabNum" :style="{ backgroundColor: bookInfo.theme_color }">{{ index + 1 }}</b>
+                        <b
+                          class="tabNum"
+                          :style="{
+                            backgroundColor:
+                              data.unified_attrib && data.unified_attrib.topic_color
+                                ? data.unified_attrib.topic_color
+                                : '',
+                          }"
+                          >{{ index + 1 }}</b
+                        >
                       </template>
                       <div v-else style="width: 16px; height: 16px; margin-left: 8px"></div>
                     </div>
@@ -230,6 +290,7 @@
                           class="luyin-box-wordphrase"
                           :style="{ marginLeft: '8px' }"
                           @handleWav="handleWav"
+                          :attrib="data.unified_attrib"
                         />
                       </span>
                       <span v-if="isEnable(data.property.is_has_infor)">
@@ -285,7 +346,8 @@
                     class="left left-preview"
                     :class="[item.file_list[0] ? '' : 'left-big']"
                     :style="{
-                      borderColor: '#f44444',
+                      borderColor:
+                        data.unified_attrib && data.unified_attrib.topic_color ? data.unified_attrib.topic_color : '',
                       padding:
                         item.new_word && (item.header_con || item.label)
                           ? ''
@@ -296,7 +358,15 @@
                   >
                     <div class="header-info-preview">
                       <h5 :style="{ textAlign: 'left' }">{{ item.header_con }}</h5>
-                      <label :style="{ background: '#f44444' }">{{ item.label }}</label>
+                      <label
+                        :style="{
+                          background:
+                            data.unified_attrib && data.unified_attrib.topic_color
+                              ? data.unified_attrib.topic_color
+                              : '',
+                        }"
+                        >{{ item.label }}</label
+                      >
                     </div>
                     <div v-if="item.file_list[0]" class="item-image">
                       <el-image
@@ -324,13 +394,22 @@
                     v-else
                     class="right right-preview left-preview right-preview-rota"
                     :style="{
-                      borderColor: '#f44444',
+                      borderColor:
+                        data.unified_attrib && data.unified_attrib.topic_color ? data.unified_attrib.topic_color : '',
                       paddingTop: item.collocation || item.liju_list || item.definition_list ? '' : '50px',
                     }"
                   >
                     <div class="header-info-preview">
                       <h5 :style="{ textAlign: 'left' }">{{ item.header_con }}</h5>
-                      <label :style="{ background: '#f44444' }">{{ item.label }}</label>
+                      <label
+                        :style="{
+                          background:
+                            data.unified_attrib && data.unified_attrib.topic_color
+                              ? data.unified_attrib.topic_color
+                              : '',
+                        }"
+                        >{{ item.label }}</label
+                      >
                     </div>
                     <div
                       :style="{
@@ -341,24 +420,50 @@
                       }"
                     >
                       <div v-if="item.hz_info.length > 0" style="width: max-content">
-                        <AudioPlay v-if="item.mp3_list" :style="{ background: '#f44444' }" :file-id="item.mp3_list" />
+                        <AudioPlay
+                          v-if="item.mp3_list"
+                          :style="{
+                            background:
+                              data.unified_attrib && data.unified_attrib.topic_color
+                                ? data.unified_attrib.topic_color
+                                : '',
+                          }"
+                          :file-id="item.mp3_list"
+                        />
                         <p
                           v-if="item.pinyin && item.pinyin.split(' ').length === 1"
-                          :style="{ color: '#f44444' }"
+                          :style="{
+                            color:
+                              data.unified_attrib && data.unified_attrib.topic_color
+                                ? data.unified_attrib.topic_color
+                                : '',
+                          }"
                           class="pinyin-box"
                         >
                           {{ item.pinyin }}
                         </p>
                         <div class="hz-box">
                           <div v-for="(itemh, indexh) in item.hz_info" :key="indexh" class="hz-item">
-                            <p v-if="item.pinyin && item.pinyin.split(' ').length > 1" :style="{ color: '#f44444' }">
+                            <p
+                              v-if="item.pinyin && item.pinyin.split(' ').length > 1"
+                              :style="{
+                                color:
+                                  data.unified_attrib && data.unified_attrib.topic_color
+                                    ? data.unified_attrib.topic_color
+                                    : '',
+                              }"
+                            >
                               {{ item.pinyin.split(' ')[indexh] ? item.pinyin.split(' ')[indexh] : '' }}
                             </p>
                             <Strockplay
                               class-name="adult-strockplay"
                               :Book_text="itemh.con"
                               :play-storkes="true"
-                              :stroke-play-color="'#f44444'"
+                              :stroke-play-color="
+                                data.unified_attrib && data.unified_attrib.topic_color
+                                  ? data.unified_attrib.topic_color
+                                  : '#f44444'
+                              "
                               :stroke-color="'#000000'"
                               :paly-width="'18px'"
                               :BoxbgType="'0'"
@@ -366,7 +471,12 @@
                               :target-div="'writeTops-item-' + indexh + '-' + itemh.con + '-' + index + '-' + indexs"
                               :class="[indexh !== 0 ? 'writeTop-item-noLeft' : '']"
                               class="writeTop-item"
-                              :style="{ borderColor: '#f44444' }"
+                              :style="{
+                                borderColor:
+                                  data.unified_attrib && data.unified_attrib.topic_color
+                                    ? data.unified_attrib.topic_color
+                                    : '#f44444',
+                              }"
                             />
                           </div>
                         </div>
@@ -500,6 +610,7 @@ export default {
       rowWidth: 0,
       multilingualTextList: {}, // 多语言对应的切割后的翻译
       titleTrans: {},
+      width: 0,
     };
   },
   watch: {
@@ -728,6 +839,13 @@ export default {
       item.isFlipped = !item.isFlipped;
     },
   },
+  mounted() {
+    this.width =
+      document.querySelector('.preview-main').offsetWidth -
+      73 -
+      (this.data.property.sn_display_mode === 'true' ? 15 : 0) +
+      'px';
+  },
 };
 </script>
 
@@ -738,7 +856,7 @@ export default {
   @include preview-base;
 
   .NPC-zhedie {
-    width: 1000px;
+    // width: 1000px;
 
     // width: 780px;
     // margin-bottom: 24px;
@@ -855,12 +973,13 @@ export default {
     width: 16px;
     height: 16px;
     margin-top: 4px;
-    background: url('@/assets/fill/voice-pause-red.png') no-repeat left top;
-    background-size: 100% 100%;
+
+    // background: url('@/assets/fill/voice-pause-red.png') no-repeat left top;
+    // background-size: 100% 100%;
 
     &.active {
-      background: url('@/assets/fill/voice-play-red.png') no-repeat left top;
-      background-size: 100% 100%;
+      // background: url('@/assets/fill/voice-play-red.png') no-repeat left top;
+      // background-size: 100% 100%;
     }
   }
 
@@ -1583,6 +1702,7 @@ export default {
 
   .el-slider {
     position: relative;
+    flex: 1;
 
     // top: -3px;
   }

+ 25 - 3
src/views/book/courseware/preview/components/notes/NotesPreview.vue

@@ -5,7 +5,13 @@
 
     <div class="main">
       <div class="NPC-zhedie">
-        <div class="topTitle">
+        <div
+          class="topTitle"
+          :style="{
+            backgroundColor:
+              data.unified_attrib && data.unified_attrib.topic_color ? data.unified_attrib.topic_color : '',
+          }"
+        >
           <div class="NPC-top-left">
             <span class="NPC-topTitle-text" v-html="data.title_con"></span>
             <span class="NPC-topTitle-text" v-if="showLang">
@@ -22,7 +28,14 @@
           <div v-show="wordShow" class="NPC-notes-list">
             <div v-for="(item, index) in data.option" :key="'NPC-notes' + index" class="NPC-notes">
               <div class="NPC-notes-con">
-                <span class="NPC-notes-con-number" v-html="item.number"></span>
+                <span
+                  class="NPC-notes-con-number"
+                  v-html="item.number"
+                  :style="{
+                    color:
+                      data.unified_attrib && data.unified_attrib.topic_color ? data.unified_attrib.topic_color : '',
+                  }"
+                ></span>
                 <div class="NPC-notes-con-box">
                   <template v-if="isEnable(data.property.view_pinyin)">
                     <p class="pinyin-text">
@@ -33,7 +46,16 @@
                           v-html="item.pinyin"
                           class="pinyin pinyin-front"
                         ></span
-                        ><span class="NPC-notes-con-text" v-html="item.con"></span
+                        ><span
+                          class="NPC-notes-con-text"
+                          v-html="item.con"
+                          :style="{
+                            color:
+                              data.unified_attrib && data.unified_attrib.topic_color
+                                ? data.unified_attrib.topic_color
+                                : '',
+                          }"
+                        ></span
                         ><span
                           v-if="data.property.pinyin_position === 'back'"
                           v-html="item.pinyin"

+ 2 - 2
src/views/book/courseware/preview/components/voice_matrix/components/AudioLine.vue

@@ -446,7 +446,7 @@ export default {
     top: 12px;
     width: 8px;
     height: 8px;
-    background: #165dff;
+    background: #1d2129;
     border: none;
   }
 
@@ -464,7 +464,7 @@ export default {
 
   .el-slider__bar {
     height: 2px;
-    background: #165dff;
+    background: #1d2129;
   }
 }
 </style>