feat: 完善课程学习与技能树体验
完善课程资源、学习进度与技能树解锁体验,统一视频播放与引导相关交互。 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
No files matched your search
@@ -2,18 +2,31 @@
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
|
||||
<link
|
||||
rel="icon"
|
||||
type="image/svg+xml"
|
||||
href="/logo.png"
|
||||
/>
|
||||
<meta
|
||||
name="viewport"
|
||||
content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0"
|
||||
/>
|
||||
<meta name="referrer" content="no-referrer" />
|
||||
<script type="text/javascript" src="./videoajax/jquery-3.7.1.min.js"></script>
|
||||
<title>短视频达人</title>
|
||||
<meta
|
||||
name="referrer"
|
||||
content="no-referrer"
|
||||
/>
|
||||
<script
|
||||
type="text/javascript"
|
||||
src="./videoajax/jquery-3.7.1.min.js"
|
||||
></script>
|
||||
<title>短视频达人养成记</title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="app"></div>
|
||||
<script type="module" src="/src/main.ts"></script>
|
||||
<script
|
||||
type="module"
|
||||
src="/src/main.ts"
|
||||
></script>
|
||||
<script src="./videoajax/videoajax.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -44,6 +44,7 @@
|
||||
"tailwindcss": "^3.4.17",
|
||||
"typescript": "~5.8.3",
|
||||
"typescript-eslint": "^8.43.0",
|
||||
"vconsole": "^3.15.1",
|
||||
"vite": "^7.1.2",
|
||||
"vue-tsc": "^3.0.5"
|
||||
},
|
||||
|
||||
@@ -99,6 +99,9 @@ importers:
|
||||
typescript-eslint:
|
||||
specifier: ^8.43.0
|
||||
version: 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.8.3)
|
||||
vconsole:
|
||||
specifier: ^3.15.1
|
||||
version: 3.15.1
|
||||
vite:
|
||||
specifier: ^7.1.2
|
||||
version: 7.1.5(@types/node@24.3.3)(jiti@2.5.1)(less@4.4.1)(lightningcss@1.30.1)(yaml@2.8.1)
|
||||
@@ -230,6 +233,10 @@ packages:
|
||||
peerDependencies:
|
||||
'@babel/core': ^7.0.0-0
|
||||
|
||||
'@babel/runtime@7.29.2':
|
||||
resolution: {integrity: sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==}
|
||||
engines: {node: '>=6.9.0'}
|
||||
|
||||
'@babel/template@7.28.6':
|
||||
resolution: {integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==}
|
||||
engines: {node: '>=6.9.0'}
|
||||
@@ -1242,6 +1249,13 @@ packages:
|
||||
resolution: {integrity: sha512-7Vv6asjS4gMOuILabD3l739tsaxFQmC+a7pLZm02zyvs8p977bL3zEgq3yDk5rn9B0PbYgIv++jmHcuUab4RhA==}
|
||||
engines: {node: '>=18'}
|
||||
|
||||
copy-text-to-clipboard@3.2.2:
|
||||
resolution: {integrity: sha512-T6SqyLd1iLuqPA90J5N4cTalrtovCySh58iiZDGJ6FGznbclKh4UI+FGacQSgFzwKG77W7XT5gwbVEbd9cIH1A==}
|
||||
engines: {node: '>=12'}
|
||||
|
||||
core-js@3.49.0:
|
||||
resolution: {integrity: sha512-es1U2+YTtzpwkxVLwAFdSpaIMyQaq0PBgm3YD1W3Qpsn1NAmO3KSgZfu+oGSWVu6NvLHoHCV/aYcsE5wiB7ALg==}
|
||||
|
||||
core-util-is@1.0.3:
|
||||
resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==}
|
||||
|
||||
@@ -2087,6 +2101,9 @@ packages:
|
||||
muggle-string@0.4.1:
|
||||
resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==}
|
||||
|
||||
mutation-observer@1.0.3:
|
||||
resolution: {integrity: sha512-M/O/4rF2h776hV7qGMZUH3utZLO/jK7p8rnNgGkjKUw8zCGjRQPxB8z6+5l8+VjRUQ3dNYu4vjqXYLr+U8ZVNA==}
|
||||
|
||||
mz@2.7.0:
|
||||
resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==}
|
||||
|
||||
@@ -2639,6 +2656,9 @@ packages:
|
||||
engines: {node: '>=8'}
|
||||
hasBin: true
|
||||
|
||||
vconsole@3.15.1:
|
||||
resolution: {integrity: sha512-KH8XLdrq9T5YHJO/ixrjivHfmF2PC2CdVoK6RWZB4yftMykYIaXY1mxZYAic70vADM54kpMQF+dYmvl5NRNy1g==}
|
||||
|
||||
vite@7.1.5:
|
||||
resolution: {integrity: sha512-4cKBO9wR75r0BeIWWWId9XK9Lj6La5X846Zw9dFfzMRw38IlTk2iCcUt6hsyiDRcPidc55ZParFYDXi0nXOeLQ==}
|
||||
engines: {node: ^20.19.0 || >=22.12.0}
|
||||
@@ -2968,6 +2988,8 @@ snapshots:
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@babel/runtime@7.29.2': {}
|
||||
|
||||
'@babel/template@7.28.6':
|
||||
dependencies:
|
||||
'@babel/code-frame': 7.29.0
|
||||
@@ -3933,6 +3955,10 @@ snapshots:
|
||||
dependencies:
|
||||
is-what: 5.5.0
|
||||
|
||||
copy-text-to-clipboard@3.2.2: {}
|
||||
|
||||
core-js@3.49.0: {}
|
||||
|
||||
core-util-is@1.0.3: {}
|
||||
|
||||
cosmiconfig-typescript-loader@6.1.0(@types/node@24.3.3)(cosmiconfig@9.0.0(typescript@5.8.3))(typescript@5.8.3):
|
||||
@@ -4814,6 +4840,8 @@ snapshots:
|
||||
|
||||
muggle-string@0.4.1: {}
|
||||
|
||||
mutation-observer@1.0.3: {}
|
||||
|
||||
mz@2.7.0:
|
||||
dependencies:
|
||||
any-promise: 1.3.0
|
||||
@@ -5382,6 +5410,13 @@ snapshots:
|
||||
kleur: 4.1.5
|
||||
sade: 1.8.1
|
||||
|
||||
vconsole@3.15.1:
|
||||
dependencies:
|
||||
'@babel/runtime': 7.29.2
|
||||
copy-text-to-clipboard: 3.2.2
|
||||
core-js: 3.49.0
|
||||
mutation-observer: 1.0.3
|
||||
|
||||
vite@7.1.5(@types/node@24.3.3)(jiti@2.5.1)(less@4.4.1)(lightningcss@1.30.1)(yaml@2.8.1):
|
||||
dependencies:
|
||||
esbuild: 0.25.9
|
||||
|
||||
|
After Width: | Height: | Size: 4.8 KiB |
@@ -1 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="31.88" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 257"><defs><linearGradient id="IconifyId1813088fe1fbc01fb466" x1="-.828%" x2="57.636%" y1="7.652%" y2="78.411%"><stop offset="0%" stop-color="#41D1FF"></stop><stop offset="100%" stop-color="#BD34FE"></stop></linearGradient><linearGradient id="IconifyId1813088fe1fbc01fb467" x1="43.376%" x2="50.316%" y1="2.242%" y2="89.03%"><stop offset="0%" stop-color="#FFEA83"></stop><stop offset="8.333%" stop-color="#FFDD35"></stop><stop offset="100%" stop-color="#FFA800"></stop></linearGradient></defs><path fill="url(#IconifyId1813088fe1fbc01fb466)" d="M255.153 37.938L134.897 252.976c-2.483 4.44-8.862 4.466-11.382.048L.875 37.958c-2.746-4.814 1.371-10.646 6.827-9.67l120.385 21.517a6.537 6.537 0 0 0 2.322-.004l117.867-21.483c5.438-.991 9.574 4.796 6.877 9.62Z"></path><path fill="url(#IconifyId1813088fe1fbc01fb467)" d="M185.432.063L96.44 17.501a3.268 3.268 0 0 0-2.634 3.014l-5.474 92.456a3.268 3.268 0 0 0 3.997 3.378l24.777-5.718c2.318-.535 4.413 1.507 3.936 3.838l-7.361 36.047c-.495 2.426 1.782 4.5 4.151 3.78l15.304-4.649c2.372-.72 4.652 1.36 4.15 3.788l-11.698 56.621c-.732 3.542 3.979 5.473 5.943 2.437l1.313-2.028l72.516-144.72c1.215-2.423-.88-5.186-3.54-4.672l-25.505 4.922c-2.396.462-4.435-1.77-3.759-4.114l16.646-57.705c.677-2.35-1.37-4.583-3.769-4.113Z"></path></svg>
|
||||
|
Before Width: | Height: | Size: 1.5 KiB |
@@ -1,12 +1,20 @@
|
||||
<template>
|
||||
<div class="app-container" :style="containerStyle">
|
||||
<div class="app-content overflow-hidden" :style="scaleStyle">
|
||||
<div
|
||||
class="app-container"
|
||||
:style="containerStyle"
|
||||
>
|
||||
<div
|
||||
class="app-content overflow-hidden"
|
||||
:style="scaleStyle"
|
||||
>
|
||||
<router-view v-slot="{ Component }">
|
||||
<KeepAlive :include="['Action', 'Skill']">
|
||||
<component :is="Component" />
|
||||
</KeepAlive>
|
||||
</router-view>
|
||||
</div>
|
||||
|
||||
<div class="rotate-hint">请横屏观看,以获得最佳体验</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -17,9 +25,10 @@ import {
|
||||
useVlogStore,
|
||||
useFilmStore,
|
||||
useInterviewStore,
|
||||
useBasicElementsStore
|
||||
useBasicElementsStore,
|
||||
} from '@/stores'
|
||||
import { onMounted } from 'vue'
|
||||
import { syncAllCompletedYibanLessons } from '@/utils/yibanLessonProgress'
|
||||
|
||||
// 使用等比例缩放hook
|
||||
const { scaleStyle } = useScale()
|
||||
@@ -37,7 +46,7 @@ onMounted(async () => {
|
||||
if (courseId || uid) {
|
||||
userStore.setCourseInfo({
|
||||
courseId: courseId ?? null,
|
||||
uid: uid ?? null
|
||||
uid: uid ?? null,
|
||||
})
|
||||
}
|
||||
|
||||
@@ -45,8 +54,10 @@ onMounted(async () => {
|
||||
vlogStore.loadVlogStore(),
|
||||
filmStore.loadFilmStore(),
|
||||
interviewStore.loadInterviewStore(),
|
||||
basicElementsStore.loadBasicElementsStore()
|
||||
basicElementsStore.loadBasicElementsStore(),
|
||||
])
|
||||
|
||||
await syncAllCompletedYibanLessons()
|
||||
})
|
||||
|
||||
// 容器样式
|
||||
@@ -55,11 +66,39 @@ const containerStyle = {
|
||||
height: '100vh',
|
||||
overflow: 'hidden',
|
||||
position: 'relative' as const,
|
||||
background: '#000'
|
||||
background: '#000',
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
<style scoped>
|
||||
.rotate-hint {
|
||||
position: fixed;
|
||||
inset: 0;
|
||||
z-index: 200000;
|
||||
display: none;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
padding: 24px;
|
||||
color: #fff;
|
||||
font-size: 20px;
|
||||
line-height: 1.5;
|
||||
text-align: center;
|
||||
background: rgba(0, 0, 0, 0.55)
|
||||
radial-gradient(
|
||||
circle at center,
|
||||
rgba(255, 255, 255, 0.1),
|
||||
rgba(0, 0, 0, 0.6)
|
||||
);
|
||||
}
|
||||
|
||||
@media (hover: none) and (pointer: coarse) and (orientation: portrait) {
|
||||
.rotate-hint {
|
||||
display: flex;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
<!-- <style>
|
||||
#app {
|
||||
font-family:
|
||||
-apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell',
|
||||
@@ -67,4 +106,4 @@ const containerStyle = {
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
||||
</style>
|
||||
</style> -->
|
||||
|
Before Width: | Height: | Size: 175 KiB After Width: | Height: | Size: 176 KiB |
|
After Width: | Height: | Size: 60 KiB |
|
After Width: | Height: | Size: 823 B |
|
After Width: | Height: | Size: 53 KiB |
|
After Width: | Height: | Size: 75 KiB |
|
After Width: | Height: | Size: 628 KiB |
|
After Width: | Height: | Size: 2.5 KiB |
|
After Width: | Height: | Size: 5.5 KiB |
|
Before Width: | Height: | Size: 62 KiB |
|
After Width: | Height: | Size: 65 KiB |
|
After Width: | Height: | Size: 65 KiB |
|
After Width: | Height: | Size: 206 KiB |
|
After Width: | Height: | Size: 227 KiB |
|
After Width: | Height: | Size: 204 KiB |
|
After Width: | Height: | Size: 201 KiB |
|
After Width: | Height: | Size: 203 KiB |
|
After Width: | Height: | Size: 204 KiB |
|
After Width: | Height: | Size: 204 KiB |
|
After Width: | Height: | Size: 209 KiB |
|
After Width: | Height: | Size: 200 KiB |
|
After Width: | Height: | Size: 201 KiB |
|
After Width: | Height: | Size: 205 KiB |
|
After Width: | Height: | Size: 194 KiB |
|
After Width: | Height: | Size: 217 KiB |
|
After Width: | Height: | Size: 307 KiB |
|
After Width: | Height: | Size: 212 KiB |
|
After Width: | Height: | Size: 200 KiB |
|
After Width: | Height: | Size: 199 KiB |
|
After Width: | Height: | Size: 209 KiB |
|
After Width: | Height: | Size: 199 KiB |
|
After Width: | Height: | Size: 213 KiB |
|
After Width: | Height: | Size: 208 KiB |
|
After Width: | Height: | Size: 202 KiB |
|
After Width: | Height: | Size: 205 KiB |
|
After Width: | Height: | Size: 201 KiB |
|
After Width: | Height: | Size: 208 KiB |
|
After Width: | Height: | Size: 234 KiB |
|
After Width: | Height: | Size: 233 KiB |
|
After Width: | Height: | Size: 227 KiB |
|
After Width: | Height: | Size: 102 KiB |
|
After Width: | Height: | Size: 213 KiB |
|
After Width: | Height: | Size: 199 KiB |
|
After Width: | Height: | Size: 237 KiB |
|
After Width: | Height: | Size: 228 KiB |
|
After Width: | Height: | Size: 229 KiB |
|
After Width: | Height: | Size: 200 KiB |
|
After Width: | Height: | Size: 235 KiB |
|
After Width: | Height: | Size: 232 KiB |
|
After Width: | Height: | Size: 188 KiB |
|
After Width: | Height: | Size: 201 KiB |
|
After Width: | Height: | Size: 256 KiB |
|
After Width: | Height: | Size: 241 KiB |
|
After Width: | Height: | Size: 247 KiB |
|
After Width: | Height: | Size: 242 KiB |
|
After Width: | Height: | Size: 203 KiB |
|
After Width: | Height: | Size: 280 KiB |
|
After Width: | Height: | Size: 264 KiB |
|
After Width: | Height: | Size: 270 KiB |
|
After Width: | Height: | Size: 272 KiB |
|
After Width: | Height: | Size: 282 KiB |
|
After Width: | Height: | Size: 283 KiB |
|
After Width: | Height: | Size: 283 KiB |
|
After Width: | Height: | Size: 280 KiB |
|
After Width: | Height: | Size: 255 KiB |
|
After Width: | Height: | Size: 284 KiB |
|
After Width: | Height: | Size: 275 KiB |
|
After Width: | Height: | Size: 269 KiB |
|
After Width: | Height: | Size: 282 KiB |
|
After Width: | Height: | Size: 269 KiB |
|
After Width: | Height: | Size: 275 KiB |
|
After Width: | Height: | Size: 253 KiB |
|
After Width: | Height: | Size: 256 KiB |
|
After Width: | Height: | Size: 287 KiB |
|
After Width: | Height: | Size: 219 KiB |
|
After Width: | Height: | Size: 275 KiB |
|
After Width: | Height: | Size: 257 KiB |
|
After Width: | Height: | Size: 284 KiB |
|
Before Width: | Height: | Size: 399 KiB After Width: | Height: | Size: 774 KiB |
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 136 KiB After Width: | Height: | Size: 130 KiB |
|
After Width: | Height: | Size: 59 KiB |
|
After Width: | Height: | Size: 40 KiB |
|
After Width: | Height: | Size: 51 KiB |
|
After Width: | Height: | Size: 37 KiB |
|
After Width: | Height: | Size: 61 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 8.8 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 69 KiB |
|
After Width: | Height: | Size: 39 KiB |
|
Before Width: | Height: | Size: 1.7 MiB |