学习记录

develoop
wenyu441069198 4 months ago
parent d7b4e7a9c5
commit 9286f9491a
  1. 1
      generated/index.ts
  2. 10
      generated/models/BaseResponse_List_CourseLearningRecords.ts
  3. 7
      generated/models/BaseResponse_List_LearningRecords_.ts
  4. 9
      generated/models/CourseLearningRecords.ts
  5. 9
      generated/models/LearningRecords.ts
  6. 114
      generated/services/LearningRecordsControllerService.ts
  7. 6
      package.json
  8. 444
      pnpm-lock.yaml
  9. 1
      src/App.vue
  10. 3
      src/api/record.js
  11. BIN
      src/assets/images/test.mp4
  12. 1
      src/main.ts
  13. 20
      src/router/routers.ts
  14. 121
      src/views/MyCourseStudy/knowledgeLearningProcess.vue
  15. 29
      src/views/MyCourseStudy/learningProcess.vue
  16. 154
      src/views/MyCourseStudy/resourceLearning.vue

@ -12,6 +12,7 @@ export type { BaseResponse_boolean_ } from './models/BaseResponse_boolean_';
export type { BaseResponse_CoursesDTO_ } from './models/BaseResponse_CoursesDTO_';
export type { BaseResponse_List_CourseObjectivesTreeVO_ } from './models/BaseResponse_List_CourseObjectivesTreeVO_';
export type { BaseResponse_List_CourseResources_ } from './models/BaseResponse_List_CourseResources_';
export type {BaseResponse_List_CourseLearningRecords_} from './models/BaseResponse_List_CourseLearningRecords'
export type { BaseResponse_List_LearningRecords_ } from './models/BaseResponse_List_LearningRecords_';
export type { BaseResponse_List_ObjectivesType_ } from './models/BaseResponse_List_ObjectivesType_';
export type { BaseResponse_List_TeacherInfVO_ } from './models/BaseResponse_List_TeacherInfVO_';

@ -0,0 +1,10 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
/* eslint-disable */
import type { courseLearningRecords } from './CourseLearningRecords';
export type BaseResponse_List_CourseLearningRecords_ = {
code?: number;
data?: Array<courseLearningRecords>;
message?: string;
};

@ -9,3 +9,10 @@ export type BaseResponse_List_LearningRecords_ = {
message?: string;
};
import type { courseLearningRecords } from './LearningRecords';
export type BaseResponse_List_CourseLearningRecords_ = {
code?: number;
data?: Array<courseLearningRecords>;
message?: string;
};

@ -0,0 +1,9 @@
export type courseLearningRecords = {
time?: string;
chapterId?: string;
coursesId?: string;
id?: string;
userId?: string;
img?: string;
};

@ -20,3 +20,12 @@ export type LearningRecords = {
userId?: string;
};
export type courseLearningRecords = {
time?: string;
chapterId?: string;
coursesId?: string;
id?: string;
userId?: string;
img?: string;
};

@ -47,6 +47,21 @@ export class LearningRecordsControllerService {
},
});
}
public static deleteCourseRecords(
ids: Array<number>,
): CancelablePromise<BaseResponse_string_> {
return __request(OpenAPI, {
method: 'DELETE',
url: '/api/courselearingrecord/delete',
query: {
'ids': ids,
},
errors: {
401: `Unauthorized`,
403: `Forbidden`,
},
});
}
/**
* getAll
* @param userId userId
@ -75,6 +90,105 @@ export class LearningRecordsControllerService {
},
});
}
//查询课程学习记录
public static courseLearningRecords(
userId: string,
pagenum: number = 1,
pagesize: number = 10,
): CancelablePromise<BaseResponse_Page_> {
return __request(OpenAPI, {
method: 'GET',
url: '/api/courselearingrecord/page',
query: {
'pagenum': pagenum,
'pagesize': pagesize,
'userId': userId,
},
errors: {
401: `Unauthorized`,
403: `Forbidden`,
404: `Not Found`,
},
});
}
//查询知识点学习记录
public static knowlegdeLearningRecords(
userId: string,
courseId: string,
pagenum: number = 1,
pagesize: number = 10,
): CancelablePromise<BaseResponse_Page_> {
return __request(OpenAPI, {
method: 'GET',
url: '/api/knowledgelearning/page',
query: {
'pagenum': pagenum,
'pagesize': pagesize,
'userId': userId,
'courseId': courseId,
},
errors: {
401: `Unauthorized`,
403: `Forbidden`,
404: `Not Found`,
},
});
}
//查询资源学习记录
public static resourceLearningRecords(
userId: string,
knowledgeId: string,
courseId: string,
pagenum: number = 1,
pagesize: number = 10,
): CancelablePromise<BaseResponse_Page_> {
return __request(OpenAPI, {
method: 'GET',
url: '/api/resourcelearningrecords/page',
query: {
'pagenum': pagenum,
'pagesize': pagesize,
'userId': userId,
'courseId': courseId,
'knowledgeId': knowledgeId,
},
errors: {
401: `Unauthorized`,
403: `Forbidden`,
404: `Not Found`,
},
});
}
//播放
public static bf(
): CancelablePromise<BaseResponse_string_> {
return __request(OpenAPI, {
method: 'GET',
url: '/api/resourcelearningrecords/bf',
errors: {
401: `Unauthorized`,
403: `Forbidden`,
404: `Not Found`,
},
});
}
//文件上传
public static upload(
file : File
): CancelablePromise<BaseResponse_string_> {
return __request(OpenAPI, {
method: 'GET',
url: '/api/resourcelearningrecords/upload',
query:{
'file' : file
},
errors: {
401: `Unauthorized`,
403: `Forbidden`,
404: `Not Found`,
},
});
}
/**
* saveRecords
* @param learningRecords learningRecords

@ -28,6 +28,7 @@
"echarts": "^5.5.0",
"echarts-liquidfill": "^3.1.0",
"element-plus": "^2.6.0",
"element-ui": "^2.15.14",
"form-data": "^4.0.0",
"jquery": "^3.7.1",
"jwt-decode": "^4.0.0",
@ -38,7 +39,9 @@
"vue": "^3.4.27",
"vue-echarts": "^6.7.2",
"vue-quill": "^1.5.1",
"vue-router": "^4.3.0"
"vue-router": "^4.3.0",
"vue-video-player": "^6.0.0",
"vue3-video-play": "^1.3.2"
},
"devDependencies": {
"@babel/eslint-parser": "^7.23.10",
@ -52,6 +55,7 @@
"eslint-plugin-prettier": "^5.1.3",
"eslint-plugin-vue": "^9.22.0",
"mockjs": "^1.1.0",
"openapi-typescript-codegen": "^0.29.0",
"pinia-plugin-persistedstate": "^3.2.1",
"postcss": "^8.4.35",
"postcss-html": "^1.6.0",

@ -38,6 +38,9 @@ dependencies:
element-plus:
specifier: ^2.6.0
version: registry.npmmirror.com/element-plus@2.7.7(vue@3.4.34)
element-ui:
specifier: ^2.15.14
version: registry.npmmirror.com/element-ui@2.15.14(vue@3.4.34)
form-data:
specifier: ^4.0.0
version: registry.npmmirror.com/form-data@4.0.0
@ -71,6 +74,12 @@ dependencies:
vue-router:
specifier: ^4.3.0
version: registry.npmmirror.com/vue-router@4.4.0(vue@3.4.34)
vue-video-player:
specifier: ^6.0.0
version: registry.npmmirror.com/vue-video-player@6.0.0(@types/video.js@7.3.58)(video.js@7.21.6)(vue@3.4.34)
vue3-video-play:
specifier: ^1.3.2
version: registry.npmmirror.com/vue3-video-play@1.3.2(typescript@5.5.4)
devDependencies:
'@babel/eslint-parser':
@ -106,6 +115,9 @@ devDependencies:
mockjs:
specifier: ^1.1.0
version: registry.npmmirror.com/mockjs@1.1.0
openapi-typescript-codegen:
specifier: ^0.29.0
version: registry.npmmirror.com/openapi-typescript-codegen@0.29.0
pinia-plugin-persistedstate:
specifier: ^3.2.1
version: registry.npmmirror.com/pinia-plugin-persistedstate@3.2.1(pinia@2.1.7)
@ -195,6 +207,17 @@ packages:
'@jridgewell/trace-mapping': registry.npmmirror.com/@jridgewell/trace-mapping@0.3.25
dev: true
registry.npmmirror.com/@apidevtools/json-schema-ref-parser@11.6.4:
resolution: {integrity: sha512-9K6xOqeevacvweLGik6LnZCb1fBtCOSIWQs8d096XGeqoLKC33UVMGz9+77Gw44KvbH4pKcQPWo4ZpxkXYj05w==, tarball: https://registry.npmmirror.com/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-11.6.4.tgz}
name: '@apidevtools/json-schema-ref-parser'
version: 11.6.4
engines: {node: '>= 16'}
dependencies:
'@jsdevtools/ono': registry.npmmirror.com/@jsdevtools/ono@7.1.3
'@types/json-schema': registry.npmmirror.com/@types/json-schema@7.0.15
js-yaml: registry.npmmirror.com/js-yaml@4.1.0
dev: true
registry.npmmirror.com/@babel/code-frame@7.24.7:
resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==, tarball: https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.24.7.tgz}
name: '@babel/code-frame'
@ -1181,6 +1204,12 @@ packages:
'@jridgewell/sourcemap-codec': registry.npmmirror.com/@jridgewell/sourcemap-codec@1.5.0
dev: true
registry.npmmirror.com/@jsdevtools/ono@7.1.3:
resolution: {integrity: sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==, tarball: https://registry.npmmirror.com/@jsdevtools/ono/-/ono-7.1.3.tgz}
name: '@jsdevtools/ono'
version: 7.1.3
dev: true
registry.npmmirror.com/@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1:
resolution: {integrity: sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==, tarball: https://registry.npmmirror.com/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz}
name: '@nicolo-ribaudo/eslint-scope-5-internals'
@ -1417,6 +1446,12 @@ packages:
version: 1.0.5
dev: true
registry.npmmirror.com/@types/json-schema@7.0.15:
resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==, tarball: https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.15.tgz}
name: '@types/json-schema'
version: 7.0.15
dev: true
registry.npmmirror.com/@types/json5@0.0.29:
resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==, tarball: https://registry.npmmirror.com/@types/json5/-/json5-0.0.29.tgz}
name: '@types/json5'
@ -1453,6 +1488,12 @@ packages:
'@types/node': registry.npmmirror.com/@types/node@20.14.12
dev: true
registry.npmmirror.com/@types/video.js@7.3.58:
resolution: {integrity: sha512-1CQjuSrgbv1/dhmcfQ83eVyYbvGyqhTvb2Opxr0QCV+iJ4J6/J+XWQ3Om59WiwCd1MN3rDUHasx5XRrpUtewYQ==, tarball: https://registry.npmmirror.com/@types/video.js/-/video.js-7.3.58.tgz}
name: '@types/video.js'
version: 7.3.58
dev: false
registry.npmmirror.com/@types/web-bluetooth@0.0.16:
resolution: {integrity: sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==, tarball: https://registry.npmmirror.com/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz}
name: '@types/web-bluetooth'
@ -1619,6 +1660,61 @@ packages:
version: 1.2.0
dev: true
registry.npmmirror.com/@videojs-player/vue@1.0.0(@types/video.js@7.3.58)(video.js@7.21.6)(vue@3.4.34):
resolution: {integrity: sha512-WonTezRfKu3fYdQLt/ta+nuKH6gMZUv8l40Jke/j4Lae7IqeO/+lLAmBnh3ni88bwR+vkFXIlZ2Ci7VKInIYJg==, tarball: https://registry.npmmirror.com/@videojs-player/vue/-/vue-1.0.0.tgz}
id: registry.npmmirror.com/@videojs-player/vue/1.0.0
name: '@videojs-player/vue'
version: 1.0.0
peerDependencies:
'@types/video.js': 7.x
video.js: 7.x
vue: 3.x
dependencies:
'@types/video.js': registry.npmmirror.com/@types/video.js@7.3.58
video.js: registry.npmmirror.com/video.js@7.21.6
vue: registry.npmmirror.com/vue@3.4.34(typescript@5.5.4)
dev: false
registry.npmmirror.com/@videojs/http-streaming@2.16.3(video.js@7.21.6):
resolution: {integrity: sha512-91CJv5PnFBzNBvyEjt+9cPzTK/xoVixARj2g7ZAvItA+5bx8VKdk5RxCz/PP2kdzz9W+NiDUMPkdmTsosmy69Q==, tarball: https://registry.npmmirror.com/@videojs/http-streaming/-/http-streaming-2.16.3.tgz}
id: registry.npmmirror.com/@videojs/http-streaming/2.16.3
name: '@videojs/http-streaming'
version: 2.16.3
engines: {node: '>=8', npm: '>=5'}
peerDependencies:
video.js: ^6 || ^7
dependencies:
'@babel/runtime': registry.npmmirror.com/@babel/runtime@7.24.8
'@videojs/vhs-utils': registry.npmmirror.com/@videojs/vhs-utils@3.0.5
aes-decrypter: registry.npmmirror.com/aes-decrypter@3.1.3
global: registry.npmmirror.com/global@4.4.0
m3u8-parser: registry.npmmirror.com/m3u8-parser@4.8.0
mpd-parser: registry.npmmirror.com/mpd-parser@0.22.1
mux.js: registry.npmmirror.com/mux.js@6.0.1
video.js: registry.npmmirror.com/video.js@7.21.6
dev: false
registry.npmmirror.com/@videojs/vhs-utils@3.0.5:
resolution: {integrity: sha512-PKVgdo8/GReqdx512F+ombhS+Bzogiofy1LgAj4tN8PfdBx3HSS7V5WfJotKTqtOWGwVfSWsrYN/t09/DSryrw==, tarball: https://registry.npmmirror.com/@videojs/vhs-utils/-/vhs-utils-3.0.5.tgz}
name: '@videojs/vhs-utils'
version: 3.0.5
engines: {node: '>=8', npm: '>=5'}
dependencies:
'@babel/runtime': registry.npmmirror.com/@babel/runtime@7.24.8
global: registry.npmmirror.com/global@4.4.0
url-toolkit: registry.npmmirror.com/url-toolkit@2.2.5
dev: false
registry.npmmirror.com/@videojs/xhr@2.6.0:
resolution: {integrity: sha512-7J361GiN1tXpm+gd0xz2QWr3xNWBE+rytvo8J3KuggFaLg+U37gZQ2BuPLcnkfGffy2e+ozY70RHC8jt7zjA6Q==, tarball: https://registry.npmmirror.com/@videojs/xhr/-/xhr-2.6.0.tgz}
name: '@videojs/xhr'
version: 2.6.0
dependencies:
'@babel/runtime': registry.npmmirror.com/@babel/runtime@7.24.8
global: registry.npmmirror.com/global@4.4.0
is-function: registry.npmmirror.com/is-function@1.0.2
dev: false
registry.npmmirror.com/@vitejs/plugin-vue@5.1.0(vite@5.3.4)(vue@3.4.34):
resolution: {integrity: sha512-QMRxARyrdiwi1mj3AW4fLByoHTavreXq0itdEW696EihXglf1MB3D4C2gBvE0jMPH29ZjC3iK8aIaUMLf4EOGA==, tarball: https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-5.1.0.tgz}
id: registry.npmmirror.com/@vitejs/plugin-vue/5.1.0
@ -1849,6 +1945,13 @@ packages:
- vue
dev: false
registry.npmmirror.com/@xmldom/xmldom@0.8.10:
resolution: {integrity: sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==, tarball: https://registry.npmmirror.com/@xmldom/xmldom/-/xmldom-0.8.10.tgz}
name: '@xmldom/xmldom'
version: 0.8.10
engines: {node: '>=10.0.0'}
dev: false
registry.npmmirror.com/accessor-fn@1.5.1:
resolution: {integrity: sha512-zZpFYBqIL1Aqg+f2qmYHJ8+yIZF7/tP6PUGx2/QM0uGPSO5UegpinmkNwDohxWtOj586BpMPVRUjce2HI6xB3A==, tarball: https://registry.npmmirror.com/accessor-fn/-/accessor-fn-1.5.1.tgz}
name: accessor-fn
@ -1882,6 +1985,17 @@ packages:
engines: {node: '>= 10.0.0'}
dev: false
registry.npmmirror.com/aes-decrypter@3.1.3:
resolution: {integrity: sha512-VkG9g4BbhMBy+N5/XodDeV6F02chEk9IpgRTq/0bS80y4dzy79VH2Gtms02VXomf3HmyRe3yyJYkJ990ns+d6A==, tarball: https://registry.npmmirror.com/aes-decrypter/-/aes-decrypter-3.1.3.tgz}
name: aes-decrypter
version: 3.1.3
dependencies:
'@babel/runtime': registry.npmmirror.com/@babel/runtime@7.24.8
'@videojs/vhs-utils': registry.npmmirror.com/@videojs/vhs-utils@3.0.5
global: registry.npmmirror.com/global@4.4.0
pkcs7: registry.npmmirror.com/pkcs7@1.0.4
dev: false
registry.npmmirror.com/agentkeepalive@3.5.3:
resolution: {integrity: sha512-yqXL+k5rr8+ZRpOAntkaaRgWgE5o8ESAj5DyRmVTCSoZxXmqemb9Dd7T4i5UzwuERdLAJUy6XzR9zFVuf0kzkw==, tarball: https://registry.npmmirror.com/agentkeepalive/-/agentkeepalive-3.5.3.tgz}
name: agentkeepalive
@ -2153,6 +2267,14 @@ packages:
engines: {node: '>=8'}
dev: true
registry.npmmirror.com/async-validator@1.8.5:
resolution: {integrity: sha512-tXBM+1m056MAX0E8TL2iCjg8WvSyXu0Zc8LNtYqrVeyoL3+esHRZ4SieE9fKQyyU09uONjnMEjrNBMqT0mbvmA==, tarball: https://registry.npmmirror.com/async-validator/-/async-validator-1.8.5.tgz}
name: async-validator
version: 1.8.5
dependencies:
babel-runtime: registry.npmmirror.com/babel-runtime@6.26.0
dev: false
registry.npmmirror.com/async-validator@4.2.5:
resolution: {integrity: sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==, tarball: https://registry.npmmirror.com/async-validator/-/async-validator-4.2.5.tgz}
name: async-validator
@ -2194,6 +2316,21 @@ packages:
- debug
dev: false
registry.npmmirror.com/babel-helper-vue-jsx-merge-props@2.0.3:
resolution: {integrity: sha512-gsLiKK7Qrb7zYJNgiXKpXblxbV5ffSwR0f5whkPAaBAR4fhi6bwRZxX9wBlIc5M/v8CCkXUbXZL4N/nSE97cqg==, tarball: https://registry.npmmirror.com/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-2.0.3.tgz}
name: babel-helper-vue-jsx-merge-props
version: 2.0.3
dev: false
registry.npmmirror.com/babel-runtime@6.26.0:
resolution: {integrity: sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==, tarball: https://registry.npmmirror.com/babel-runtime/-/babel-runtime-6.26.0.tgz}
name: babel-runtime
version: 6.26.0
dependencies:
core-js: registry.npmmirror.com/core-js@2.6.12
regenerator-runtime: registry.npmmirror.com/regenerator-runtime@0.11.1
dev: false
registry.npmmirror.com/balanced-match@1.0.2:
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==, tarball: https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz}
name: balanced-match
@ -2365,6 +2502,13 @@ packages:
engines: {node: '>=6'}
dev: true
registry.npmmirror.com/camelcase@6.3.0:
resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==, tarball: https://registry.npmmirror.com/camelcase/-/camelcase-6.3.0.tgz}
name: camelcase
version: 6.3.0
engines: {node: '>=10'}
dev: true
registry.npmmirror.com/caniuse-lite@1.0.30001643:
resolution: {integrity: sha512-ERgWGNleEilSrHM6iUz/zJNSQTP8Mr21wDWpdgvRwcTXGAq6jMtOUPP4dqFPTdKqZ2wKTdtB+uucZ3MRpAUSmg==, tarball: https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001643.tgz}
name: caniuse-lite
@ -2585,6 +2729,14 @@ packages:
version: 2.0.1
dev: false
registry.npmmirror.com/core-js@2.6.12:
resolution: {integrity: sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==, tarball: https://registry.npmmirror.com/core-js/-/core-js-2.6.12.tgz}
name: core-js
version: 2.6.12
deprecated: core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.
requiresBuild: true
dev: false
registry.npmmirror.com/core-util-is@1.0.3:
resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==, tarball: https://registry.npmmirror.com/core-util-is/-/core-util-is-1.0.3.tgz}
name: core-util-is
@ -3241,6 +3393,13 @@ packages:
version: 0.1.4
dev: true
registry.npmmirror.com/deepmerge@1.5.2:
resolution: {integrity: sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==, tarball: https://registry.npmmirror.com/deepmerge/-/deepmerge-1.5.2.tgz}
name: deepmerge
version: 1.5.2
engines: {node: '>=0.10.0'}
dev: false
registry.npmmirror.com/default-user-agent@1.0.0:
resolution: {integrity: sha512-bDF7bg6OSNcSwFWPu4zYKpVkJZQYVrAANMYB8bc9Szem1D0yKdm4sa/rOCs2aC9+2GMqQ7KnwtZRvDhmLF0dXw==, tarball: https://registry.npmmirror.com/default-user-agent/-/default-user-agent-1.0.0.tgz}
name: default-user-agent
@ -3384,6 +3543,12 @@ packages:
entities: registry.npmmirror.com/entities@4.5.0
dev: true
registry.npmmirror.com/dom-walk@0.1.2:
resolution: {integrity: sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==, tarball: https://registry.npmmirror.com/dom-walk/-/dom-walk-0.1.2.tgz}
name: dom-walk
version: 0.1.2
dev: false
registry.npmmirror.com/domelementtype@1.3.1:
resolution: {integrity: sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==, tarball: https://registry.npmmirror.com/domelementtype/-/domelementtype-1.3.1.tgz}
name: domelementtype
@ -3534,6 +3699,23 @@ packages:
- '@vue/composition-api'
dev: false
registry.npmmirror.com/element-ui@2.15.14(vue@3.4.34):
resolution: {integrity: sha512-2v9fHL0ZGINotOlRIAJD5YuVB8V7WKxrE9Qy7dXhRipa035+kF7WuU/z+tEmLVPBcJ0zt8mOu1DKpWcVzBK8IA==, tarball: https://registry.npmmirror.com/element-ui/-/element-ui-2.15.14.tgz}
id: registry.npmmirror.com/element-ui/2.15.14
name: element-ui
version: 2.15.14
peerDependencies:
vue: ^2.5.17
dependencies:
async-validator: registry.npmmirror.com/async-validator@1.8.5
babel-helper-vue-jsx-merge-props: registry.npmmirror.com/babel-helper-vue-jsx-merge-props@2.0.3
deepmerge: registry.npmmirror.com/deepmerge@1.5.2
normalize-wheel: registry.npmmirror.com/normalize-wheel@1.0.1
resize-observer-polyfill: registry.npmmirror.com/resize-observer-polyfill@1.5.1
throttle-debounce: registry.npmmirror.com/throttle-debounce@1.1.0
vue: registry.npmmirror.com/vue@3.4.34(typescript@5.5.4)
dev: false
registry.npmmirror.com/emoji-regex@8.0.0:
resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==, tarball: https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz}
name: emoji-regex
@ -4437,6 +4619,17 @@ packages:
universalify: registry.npmmirror.com/universalify@2.0.1
dev: true
registry.npmmirror.com/fs-extra@11.2.0:
resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==, tarball: https://registry.npmmirror.com/fs-extra/-/fs-extra-11.2.0.tgz}
name: fs-extra
version: 11.2.0
engines: {node: '>=14.14'}
dependencies:
graceful-fs: registry.npmmirror.com/graceful-fs@4.2.11
jsonfile: registry.npmmirror.com/jsonfile@6.1.0
universalify: registry.npmmirror.com/universalify@2.0.1
dev: true
registry.npmmirror.com/fs.realpath@1.0.0:
resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==, tarball: https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz}
name: fs.realpath
@ -4570,6 +4763,15 @@ packages:
which: registry.npmmirror.com/which@1.3.1
dev: true
registry.npmmirror.com/global@4.4.0:
resolution: {integrity: sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==, tarball: https://registry.npmmirror.com/global/-/global-4.4.0.tgz}
name: global
version: 4.4.0
dependencies:
min-document: registry.npmmirror.com/min-document@2.19.0
process: registry.npmmirror.com/process@0.11.10
dev: false
registry.npmmirror.com/globals@11.12.0:
resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==, tarball: https://registry.npmmirror.com/globals/-/globals-11.12.0.tgz}
name: globals
@ -4635,6 +4837,21 @@ packages:
version: 1.4.0
dev: true
registry.npmmirror.com/handlebars@4.7.8:
resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==, tarball: https://registry.npmmirror.com/handlebars/-/handlebars-4.7.8.tgz}
name: handlebars
version: 4.7.8
engines: {node: '>=0.4.7'}
hasBin: true
dependencies:
minimist: registry.npmmirror.com/minimist@1.2.8
neo-async: registry.npmmirror.com/neo-async@2.6.2
source-map: registry.npmmirror.com/source-map@0.6.1
wordwrap: registry.npmmirror.com/wordwrap@1.0.0
optionalDependencies:
uglify-js: registry.npmmirror.com/uglify-js@3.19.1
dev: true
registry.npmmirror.com/has-ansi@2.0.0:
resolution: {integrity: sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==, tarball: https://registry.npmmirror.com/has-ansi/-/has-ansi-2.0.0.tgz}
name: has-ansi
@ -4752,6 +4969,12 @@ packages:
hasBin: true
dev: true
registry.npmmirror.com/hls.js@1.5.13:
resolution: {integrity: sha512-xRgKo84nsC7clEvSfIdgn/Tc0NOT+d7vdiL/wvkLO+0k0juc26NRBPPG1SfB8pd5bHXIjMW/F5VM8VYYkOYYdw==, tarball: https://registry.npmmirror.com/hls.js/-/hls.js-1.5.13.tgz}
name: hls.js
version: 1.5.13
dev: false
registry.npmmirror.com/html-tags@3.3.1:
resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==, tarball: https://registry.npmmirror.com/html-tags/-/html-tags-3.3.1.tgz}
name: html-tags
@ -4857,6 +5080,12 @@ packages:
engines: {node: '>=12'}
dev: false
registry.npmmirror.com/individual@2.0.0:
resolution: {integrity: sha512-pWt8hBCqJsUWI/HtcfWod7+N9SgAqyPEaF7JQjwzjn5vGrpg6aQ5qeAFQ7dx//UH4J1O+7xqew+gCeeFt6xN/g==, tarball: https://registry.npmmirror.com/individual/-/individual-2.0.0.tgz}
name: individual
version: 2.0.0
dev: false
registry.npmmirror.com/inflight@1.0.6:
resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==, tarball: https://registry.npmmirror.com/inflight/-/inflight-1.0.6.tgz}
name: inflight
@ -5067,6 +5296,12 @@ packages:
engines: {node: '>=8'}
dev: true
registry.npmmirror.com/is-function@1.0.2:
resolution: {integrity: sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==, tarball: https://registry.npmmirror.com/is-function/-/is-function-1.0.2.tgz}
name: is-function
version: 1.0.2
dev: false
registry.npmmirror.com/is-glob@4.0.3:
resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==, tarball: https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz}
name: is-glob
@ -5372,6 +5607,12 @@ packages:
lodash-es: registry.npmmirror.com/lodash-es@4.17.21
dev: false
registry.npmmirror.com/keycode@2.2.1:
resolution: {integrity: sha512-Rdgz9Hl9Iv4QKi8b0OlCRQEzp4AgVxyCtz5S/+VIHezDmrDhkp2N2TqBWOLz0/gbeREXOOiI9/4b8BY9uw2vFg==, tarball: https://registry.npmmirror.com/keycode/-/keycode-2.2.1.tgz}
name: keycode
version: 2.2.1
dev: false
registry.npmmirror.com/keyv@4.5.4:
resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==, tarball: https://registry.npmmirror.com/keyv/-/keyv-4.5.4.tgz}
name: keyv
@ -5531,6 +5772,16 @@ packages:
yallist: registry.npmmirror.com/yallist@3.1.1
dev: true
registry.npmmirror.com/m3u8-parser@4.8.0:
resolution: {integrity: sha512-UqA2a/Pw3liR6Df3gwxrqghCP17OpPlQj6RBPLYygf/ZSQ4MoSgvdvhvt35qV+3NaaA0FSZx93Ix+2brT1U7cA==, tarball: https://registry.npmmirror.com/m3u8-parser/-/m3u8-parser-4.8.0.tgz}
name: m3u8-parser
version: 4.8.0
dependencies:
'@babel/runtime': registry.npmmirror.com/@babel/runtime@7.24.8
'@videojs/vhs-utils': registry.npmmirror.com/@videojs/vhs-utils@3.0.5
global: registry.npmmirror.com/global@4.4.0
dev: false
registry.npmmirror.com/magic-string@0.30.10:
resolution: {integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==, tarball: https://registry.npmmirror.com/magic-string/-/magic-string-0.30.10.tgz}
name: magic-string
@ -5664,6 +5915,14 @@ packages:
hasBin: true
dev: false
registry.npmmirror.com/min-document@2.19.0:
resolution: {integrity: sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==, tarball: https://registry.npmmirror.com/min-document/-/min-document-2.19.0.tgz}
name: min-document
version: 2.19.0
dependencies:
dom-walk: registry.npmmirror.com/dom-walk@0.1.2
dev: false
registry.npmmirror.com/minimatch@3.1.2:
resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==, tarball: https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz}
name: minimatch
@ -5714,6 +5973,18 @@ packages:
commander: registry.npmmirror.com/commander@12.1.0
dev: true
registry.npmmirror.com/mpd-parser@0.22.1:
resolution: {integrity: sha512-fwBebvpyPUU8bOzvhX0VQZgSohncbgYwUyJJoTSNpmy7ccD2ryiCvM7oRkn/xQH5cv73/xU7rJSNCLjdGFor0Q==, tarball: https://registry.npmmirror.com/mpd-parser/-/mpd-parser-0.22.1.tgz}
name: mpd-parser
version: 0.22.1
hasBin: true
dependencies:
'@babel/runtime': registry.npmmirror.com/@babel/runtime@7.24.8
'@videojs/vhs-utils': registry.npmmirror.com/@videojs/vhs-utils@3.0.5
'@xmldom/xmldom': registry.npmmirror.com/@xmldom/xmldom@0.8.10
global: registry.npmmirror.com/global@4.4.0
dev: false
registry.npmmirror.com/ms@2.0.0:
resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==, tarball: https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz}
name: ms
@ -5735,6 +6006,17 @@ packages:
version: 0.3.1
dev: true
registry.npmmirror.com/mux.js@6.0.1:
resolution: {integrity: sha512-22CHb59rH8pWGcPGW5Og7JngJ9s+z4XuSlYvnxhLuc58cA1WqGDQPzuG8I+sPm1/p0CdgpzVTaKW408k5DNn8w==, tarball: https://registry.npmmirror.com/mux.js/-/mux.js-6.0.1.tgz}
name: mux.js
version: 6.0.1
engines: {node: '>=8', npm: '>=5'}
hasBin: true
dependencies:
'@babel/runtime': registry.npmmirror.com/@babel/runtime@7.24.8
global: registry.npmmirror.com/global@4.4.0
dev: false
registry.npmmirror.com/mz@2.7.0:
resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==, tarball: https://registry.npmmirror.com/mz/-/mz-2.7.0.tgz}
name: mz
@ -5855,6 +6137,12 @@ packages:
version: 1.2.0
dev: false
registry.npmmirror.com/normalize-wheel@1.0.1:
resolution: {integrity: sha512-1OnlAPZ3zgrk8B91HyRj+eVv+kS5u+Z0SCsak6Xil/kmgEia50ga7zfkumayonZrImffAxPU/5WcyGhzetHNPA==, tarball: https://registry.npmmirror.com/normalize-wheel/-/normalize-wheel-1.0.1.tgz}
name: normalize-wheel
version: 1.0.1
dev: false
registry.npmmirror.com/nprogress@0.2.0:
resolution: {integrity: sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==, tarball: https://registry.npmmirror.com/nprogress/-/nprogress-0.2.0.tgz}
name: nprogress
@ -5996,6 +6284,19 @@ packages:
dependencies:
wrappy: registry.npmmirror.com/wrappy@1.0.2
registry.npmmirror.com/openapi-typescript-codegen@0.29.0:
resolution: {integrity: sha512-/wC42PkD0LGjDTEULa/XiWQbv4E9NwLjwLjsaJ/62yOsoYhwvmBR31kPttn1DzQ2OlGe5stACcF/EIkZk43M6w==, tarball: https://registry.npmmirror.com/openapi-typescript-codegen/-/openapi-typescript-codegen-0.29.0.tgz}
name: openapi-typescript-codegen
version: 0.29.0
hasBin: true
dependencies:
'@apidevtools/json-schema-ref-parser': registry.npmmirror.com/@apidevtools/json-schema-ref-parser@11.6.4
camelcase: registry.npmmirror.com/camelcase@6.3.0
commander: registry.npmmirror.com/commander@12.1.0
fs-extra: registry.npmmirror.com/fs-extra@11.2.0
handlebars: registry.npmmirror.com/handlebars@4.7.8
dev: true
registry.npmmirror.com/optionator@0.9.4:
resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==, tarball: https://registry.npmmirror.com/optionator/-/optionator-0.9.4.tgz}
name: optionator
@ -6193,6 +6494,15 @@ packages:
vue: registry.npmmirror.com/vue@3.4.34(typescript@5.5.4)
vue-demi: registry.npmmirror.com/vue-demi@0.14.9(vue@3.4.34)
registry.npmmirror.com/pkcs7@1.0.4:
resolution: {integrity: sha512-afRERtHn54AlwaF2/+LFszyAANTCggGilmcmILUzEjvs3XgFZT+xE6+QWQcAGmu4xajy+Xtj7acLOPdx5/eXWQ==, tarball: https://registry.npmmirror.com/pkcs7/-/pkcs7-1.0.4.tgz}
name: pkcs7
version: 1.0.4
hasBin: true
dependencies:
'@babel/runtime': registry.npmmirror.com/@babel/runtime@7.24.8
dev: false
registry.npmmirror.com/platform@1.3.6:
resolution: {integrity: sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==, tarball: https://registry.npmmirror.com/platform/-/platform-1.3.6.tgz}
name: platform
@ -6417,6 +6727,13 @@ packages:
version: 2.0.1
dev: false
registry.npmmirror.com/process@0.11.10:
resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==, tarball: https://registry.npmmirror.com/process/-/process-0.11.10.tgz}
name: process
version: 0.11.10
engines: {node: '>= 0.6.0'}
dev: false
registry.npmmirror.com/proxy-from-env@1.1.0:
resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==, tarball: https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz}
name: proxy-from-env
@ -6552,6 +6869,12 @@ packages:
picomatch: registry.npmmirror.com/picomatch@2.3.1
dev: true
registry.npmmirror.com/regenerator-runtime@0.11.1:
resolution: {integrity: sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==, tarball: https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz}
name: regenerator-runtime
version: 0.11.1
dev: false
registry.npmmirror.com/regenerator-runtime@0.14.1:
resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==, tarball: https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz}
name: regenerator-runtime
@ -6613,6 +6936,12 @@ packages:
version: 0.3.0
dev: false
registry.npmmirror.com/resize-observer-polyfill@1.5.1:
resolution: {integrity: sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==, tarball: https://registry.npmmirror.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz}
name: resize-observer-polyfill
version: 1.5.1
dev: false
registry.npmmirror.com/resolve-from@4.0.0:
resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==, tarball: https://registry.npmmirror.com/resolve-from/-/resolve-from-4.0.0.tgz}
name: resolve-from
@ -6705,6 +7034,14 @@ packages:
queue-microtask: registry.npmmirror.com/queue-microtask@1.2.3
dev: true
registry.npmmirror.com/rust-result@1.0.0:
resolution: {integrity: sha512-6cJzSBU+J/RJCF063onnQf0cDUOHs9uZI1oroSGnHOph+CQTIJ5Pp2hK5kEQq1+7yE/EEWfulSNXAQ2jikPthA==, tarball: https://registry.npmmirror.com/rust-result/-/rust-result-1.0.0.tgz}
name: rust-result
version: 1.0.0
dependencies:
individual: registry.npmmirror.com/individual@2.0.0
dev: false
registry.npmmirror.com/rw@1.3.3:
resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==, tarball: https://registry.npmmirror.com/rw/-/rw-1.3.3.tgz}
name: rw
@ -6735,6 +7072,14 @@ packages:
version: 5.2.1
dev: true
registry.npmmirror.com/safe-json-parse@4.0.0:
resolution: {integrity: sha512-RjZPPHugjK0TOzFrLZ8inw44s9bKox99/0AZW9o/BEQVrJfhI+fIHMErnPyRa89/yRXUUr93q+tiN6zhoVV4wQ==, tarball: https://registry.npmmirror.com/safe-json-parse/-/safe-json-parse-4.0.0.tgz}
name: safe-json-parse
version: 4.0.0
dependencies:
rust-result: registry.npmmirror.com/rust-result@1.0.0
dev: false
registry.npmmirror.com/safe-regex-test@1.0.3:
resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==, tarball: https://registry.npmmirror.com/safe-regex-test/-/safe-regex-test-1.0.3.tgz}
name: safe-regex-test
@ -7571,6 +7916,20 @@ packages:
version: 0.163.0
dev: false
registry.npmmirror.com/throttle-debounce@1.1.0:
resolution: {integrity: sha512-XH8UiPCQcWNuk2LYePibW/4qL97+ZQ1AN3FNXwZRBNPPowo/NRU5fAlDCSNBJIYCKbioZfuYtMhG4quqoJhVzg==, tarball: https://registry.npmmirror.com/throttle-debounce/-/throttle-debounce-1.1.0.tgz}
name: throttle-debounce
version: 1.1.0
engines: {node: '>=4'}
dev: false
registry.npmmirror.com/throttle-debounce@3.0.1:
resolution: {integrity: sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg==, tarball: https://registry.npmmirror.com/throttle-debounce/-/throttle-debounce-3.0.1.tgz}
name: throttle-debounce
version: 3.0.1
engines: {node: '>=10'}
dev: false
registry.npmmirror.com/through@2.3.8:
resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==, tarball: https://registry.npmmirror.com/through/-/through-2.3.8.tgz}
name: through
@ -7770,6 +8129,16 @@ packages:
engines: {node: '>=14.17'}
hasBin: true
registry.npmmirror.com/uglify-js@3.19.1:
resolution: {integrity: sha512-y/2wiW+ceTYR2TSSptAhfnEtpLaQ4Ups5zrjB2d3kuVxHj16j/QJwPl5PvuGy9uARb39J0+iKxcRPvtpsx4A4A==, tarball: https://registry.npmmirror.com/uglify-js/-/uglify-js-3.19.1.tgz}
name: uglify-js
version: 3.19.1
engines: {node: '>=0.8.0'}
hasBin: true
requiresBuild: true
dev: true
optional: true
registry.npmmirror.com/unbox-primitive@1.0.2:
resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==, tarball: https://registry.npmmirror.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz}
name: unbox-primitive
@ -7867,6 +8236,12 @@ packages:
deprecated: Please see https://github.com/lydell/urix#deprecated
dev: true
registry.npmmirror.com/url-toolkit@2.2.5:
resolution: {integrity: sha512-mtN6xk+Nac+oyJ/PrI7tzfmomRVNFIWKUbG8jdYFt52hxbiReFAXIjYskvu64/dvuW71IcB7lV8l0HvZMac6Jg==, tarball: https://registry.npmmirror.com/url-toolkit/-/url-toolkit-2.2.5.tgz}
name: url-toolkit
version: 2.2.5
dev: false
registry.npmmirror.com/urllib@2.41.0:
resolution: {integrity: sha512-pNXdxEv52L67jahLT+/7QE+Fup1y2Gc6EdmrAhQ6OpQIC2rl14oWwv9hvk1GXOZqEnJNwRXHABuwgPOs1CtL7g==, tarball: https://registry.npmmirror.com/urllib/-/urllib-2.41.0.tgz}
name: urllib
@ -7935,6 +8310,40 @@ packages:
engines: {node: '>= 0.8'}
dev: true
registry.npmmirror.com/video.js@7.21.6:
resolution: {integrity: sha512-m41TbODrUCToVfK1aljVd296CwDQnCRewpIm5tTXMuV87YYSGw1H+VDOaV45HlpcWSsTWWLF++InDgGJfthfUw==, tarball: https://registry.npmmirror.com/video.js/-/video.js-7.21.6.tgz}
name: video.js
version: 7.21.6
dependencies:
'@babel/runtime': registry.npmmirror.com/@babel/runtime@7.24.8
'@videojs/http-streaming': registry.npmmirror.com/@videojs/http-streaming@2.16.3(video.js@7.21.6)
'@videojs/vhs-utils': registry.npmmirror.com/@videojs/vhs-utils@3.0.5
'@videojs/xhr': registry.npmmirror.com/@videojs/xhr@2.6.0
aes-decrypter: registry.npmmirror.com/aes-decrypter@3.1.3
global: registry.npmmirror.com/global@4.4.0
keycode: registry.npmmirror.com/keycode@2.2.1
m3u8-parser: registry.npmmirror.com/m3u8-parser@4.8.0
mpd-parser: registry.npmmirror.com/mpd-parser@0.22.1
mux.js: registry.npmmirror.com/mux.js@6.0.1
safe-json-parse: registry.npmmirror.com/safe-json-parse@4.0.0
videojs-font: registry.npmmirror.com/videojs-font@3.2.0
videojs-vtt.js: registry.npmmirror.com/videojs-vtt.js@0.15.5
dev: false
registry.npmmirror.com/videojs-font@3.2.0:
resolution: {integrity: sha512-g8vHMKK2/JGorSfqAZQUmYYNnXmfec4MLhwtEFS+mMs2IDY398GLysy6BH6K+aS1KMNu/xWZ8Sue/X/mdQPliA==, tarball: https://registry.npmmirror.com/videojs-font/-/videojs-font-3.2.0.tgz}
name: videojs-font
version: 3.2.0
dev: false
registry.npmmirror.com/videojs-vtt.js@0.15.5:
resolution: {integrity: sha512-yZbBxvA7QMYn15Lr/ZfhhLPrNpI/RmCSCqgIff57GC2gIrV5YfyzLfLyZMj0NnZSAz8syB4N0nHXpZg9MyrMOQ==, tarball: https://registry.npmmirror.com/videojs-vtt.js/-/videojs-vtt.js-0.15.5.tgz}
name: videojs-vtt.js
version: 0.15.5
dependencies:
global: registry.npmmirror.com/global@4.4.0
dev: false
registry.npmmirror.com/vite-plugin-mock@3.0.2(esbuild@0.23.0)(mockjs@1.1.0)(vite@5.3.4):
resolution: {integrity: sha512-bD//HvkTygGmk+LsIAdf0jGNlCv4iWv0kZlH9UEgWT6QYoUwfjQAE4SKxHRw2tfLgVhbPQVv/+X3YlNWvueGUA==, tarball: https://registry.npmmirror.com/vite-plugin-mock/-/vite-plugin-mock-3.0.2.tgz}
id: registry.npmmirror.com/vite-plugin-mock/3.0.2
@ -8145,6 +8554,35 @@ packages:
typescript: registry.npmmirror.com/typescript@5.5.4
dev: true
registry.npmmirror.com/vue-video-player@6.0.0(@types/video.js@7.3.58)(video.js@7.21.6)(vue@3.4.34):
resolution: {integrity: sha512-WP47OtefsjMEReRCIKIL3tRRgH/PyNm8ELjsbYgr/WWrYAj5Ih9Adzkzp+ylYOI/v57jJ4O7O4XkbXBCmsTqNw==, tarball: https://registry.npmmirror.com/vue-video-player/-/vue-video-player-6.0.0.tgz}
id: registry.npmmirror.com/vue-video-player/6.0.0
name: vue-video-player
version: 6.0.0
peerDependencies:
'@types/video.js': 7.x
video.js: 7.x
vue: 3.x
dependencies:
'@types/video.js': registry.npmmirror.com/@types/video.js@7.3.58
'@videojs-player/vue': registry.npmmirror.com/@videojs-player/vue@1.0.0(@types/video.js@7.3.58)(video.js@7.21.6)(vue@3.4.34)
video.js: registry.npmmirror.com/video.js@7.21.6
vue: registry.npmmirror.com/vue@3.4.34(typescript@5.5.4)
dev: false
registry.npmmirror.com/vue3-video-play@1.3.2(typescript@5.5.4):
resolution: {integrity: sha512-eEwCJ0NIkfVQgTj0I3Kf9b1E/04Qne8mQQiE8r77BocblHsZ2T6af3q8l8Zzs/OvjlpQAQvkN/ACVUOJC3RSXg==, tarball: https://registry.npmmirror.com/vue3-video-play/-/vue3-video-play-1.3.2.tgz}
id: registry.npmmirror.com/vue3-video-play/1.3.2
name: vue3-video-play
version: 1.3.2
dependencies:
hls.js: registry.npmmirror.com/hls.js@1.5.13
throttle-debounce: registry.npmmirror.com/throttle-debounce@3.0.1
vue: registry.npmmirror.com/vue@3.4.34(typescript@5.5.4)
transitivePeerDependencies:
- typescript
dev: false
registry.npmmirror.com/vue@3.4.34(typescript@5.5.4):
resolution: {integrity: sha512-VZze05HWlA3ItreQ/ka7Sx7PoD0/3St8FEiSlSTVgb6l4hL+RjtP2/8g5WQBzZgyf8WG2f+g1bXzC7zggLhAJA==, tarball: https://registry.npmmirror.com/vue/-/vue-3.4.34.tgz}
id: registry.npmmirror.com/vue/3.4.34
@ -8223,6 +8661,12 @@ packages:
engines: {node: '>=0.10.0'}
dev: true
registry.npmmirror.com/wordwrap@1.0.0:
resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==, tarball: https://registry.npmmirror.com/wordwrap/-/wordwrap-1.0.0.tgz}
name: wordwrap
version: 1.0.0
dev: true
registry.npmmirror.com/wrappy@1.0.2:
resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==, tarball: https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz}
name: wrappy

@ -3,6 +3,7 @@
</template>
<script lang="ts" setup>
// import { useRouter, useRoute } from 'vue-router'
// vue3 compositionAPI
// 1. router useRouter

@ -6,3 +6,6 @@ export const getRecordListService = (params) =>
export function DelRecordService(ids) {
return request.delete(`h//api/learningrecords/delete?ids=${ids}`)
}
//获取课程学习记录列表
export const getCourseLearningRecords = (params) =>
request.get('/api/courselearingrecord/page', { params })

Binary file not shown.

@ -24,6 +24,7 @@ const app = createApp(App)
import gloablComponent from '@/components/index'
import 'echarts'
import ECharts from 'vue-echarts'
// 导入jquery
// import $ from 'jquery'
app.use(gloablComponent)

@ -192,6 +192,26 @@ export const constantRoute: any = [
icon: 'StarFilled',
},
},
{
path: '/myCourseStudyManagement/learningProcess1',
component: () => import('@/views/MyCourseStudy/knowledgeLearningProcess.vue'),
name: 'LearningProcess1',
meta: {
title: '知识点学习记录',
hidden: false,
icon: 'StarFilled',
},
},
{
path: '/myCourseStudyManagement/learningProcess2',
component: () => import('@/views/MyCourseStudy/resourceLearning.vue'),
name: 'LearningProcess2',
meta: {
title: '资源学习记录',
hidden: false,
icon: 'StarFilled',
},
},
{
path: '/myCourseStudyManagement/courseCollections',
component: () => import('@/views/MyCourseStudy/courseCollections.vue'),

@ -0,0 +1,121 @@
<script setup>
import { ref } from 'vue'
import { onMounted } from 'vue'
import { useRouter,useRoute } from 'vue-router'
import useUserStore from '@/store/modules/user'
import { LearningRecordsControllerService } from '../../../generated/services/LearningRecordsControllerService'
const recordList = ref([])
const userStore = useUserStore()
onMounted(()=>{
userStore.getUserInfo()
})
const route = useRoute()
const router = useRouter()
const params = ref({
userId: userStore.data.id,
courseId: route.query.courseId,
pagenum: '1',
pagesize: '10',
})
// console.log("courseId:"+ route.query.courseId);
//this.$route.query.courseId
//
const getrecordList = async () => {
const res = await LearningRecordsControllerService.knowlegdeLearningRecords(
params.value.userId,
params.value.courseId,
params.value.pagenum,
params.value.pagesize,
)
console.log("记录列表:");
console.log(res)
recordList.value = res.data.records
}
//
const goToAnotherPage = (address,courseId,knowledgeId) => {
router.push({
path:address,
query:{
courseId: courseId,
knowledgeId: knowledgeId
}
})
}
//()
const goToAnotherPageback = () => {
router.push({
path:'/myCourseStudyManagement/learningProcess'
})
}
getrecordList()
</script>
<style lang="scss" scoped></style>
<template>
<!-- 头部 -->
<div class="header">
<el-button type="primary" plain>浏览记录</el-button>
<el-button
type="primary"
plain
@click="goToAnotherPageback"
style="float: right"
>
返回上级目录
</el-button>
</div>
<!-- 中间 -->
<div class="record-list">
<ul v-if="recordList.length > 0">
<li>
<div
style="
display: flex;
justify-content: space-between;
flex-grow: 1;
margin-top: 10px;
margin-bottom: 10px;
background-color: aqua;
"
>
<p>
知识点名称
</p>
<p>
学习时间
</p>
<p>
学习人数
</p>
</div>
</li>
<li v-for="record in recordList" :key="record.id" @click="goToAnotherPage('/myCourseStudyManagement/learningProcess2',record.coursesId,record.knowledgeId)">
<div
style="
display: flex;
justify-content: space-between;
flex-grow: 1;
margin-top: 10px;
margin-bottom: 10px;
"
>
<p>
{{ record.knowledgeName}}
</p>
<p>
{{ record.time}}
</p>
<p>
{{record.number}}
</p>
</div>
</li>
</ul>
<el-empty v-else description="暂时没有浏览记录" />
</div>
</template>

@ -26,18 +26,15 @@ const params = ref({
console.log(userStore.data.id);
//
const getrecordList = async () => {
//console.log(1111111)
loading.value = true
// const res = await getRecordListService(params.value)
const res = await LearningRecordsControllerService.getAllUsingGet3(
params.value.userId,
const res = await LearningRecordsControllerService.courseLearningRecords(
params.value.userId,
params.value.pagenum,
params.value.pagesize,
)
console.log(res)
recordList.value = res.data.records
console.log(res)
//
total.value = res.data.total
loading.value = false
@ -68,7 +65,7 @@ const onDeleteRecord = async (ids) => {
//await DelRecordService(ids)
console.log('hello')
await LearningRecordsControllerService.deleteRecordsUsingDelete3(ids)
await LearningRecordsControllerService.deleteCourseRecords(ids)
// console.log(ids)
ElMessage({ type: 'success', message: '删除成功' })
@ -111,7 +108,7 @@ const deleteSelected = async () => {
})
//
await LearningRecordsControllerService.deleteRecordsUsingDelete3(
await LearningRecordsControllerService.deleteCourseRecords(
selectedIds.value,
)
.then(() => {
@ -128,9 +125,13 @@ const deleteSelected = async () => {
}
//
const router = useRouter()
const goToAnotherPage = (address) => {
//console.log(address)
router.push(address)
const goToAnotherPage = (address,courseId) => {
router.push({
path:address,
query:{
courseId: courseId
}
})
}
//
</script>
@ -161,7 +162,7 @@ const goToAnotherPage = (address) => {
<!-- 中间 -->
<div class="record-list">
<ul v-if="recordList.length > 0">
<li v-for="record in recordList" :key="record.id" v-loading="loading">
<li v-for="record in recordList" :key="record.id" v-loading="loading" @click="goToAnotherPage('/myCourseStudyManagement/learningProcess1' , record.courseId)">
<input
style="display: flex"
type="checkbox"
@ -172,7 +173,7 @@ const goToAnotherPage = (address) => {
<img
class="img"
:src="record.content"
:src="record.img"
@click="goToAnotherPage(record.address)"
style="margin-bottom: 10px"
/>
@ -187,7 +188,7 @@ const goToAnotherPage = (address) => {
"
>
<p>
{{ record.coursesName }}
{{ record.courseName }}
</p>
<el-icon @click="onDeleteRecord(record.id)">
<Delete />
@ -202,7 +203,7 @@ const goToAnotherPage = (address) => {
"
>
<p>{{ record.time }}</p>
<p>{{ record.number }} 观看次数</p>
<p>学习人数:{{ record.number }}</p>
</div>
</li>
</ul>

@ -0,0 +1,154 @@
<script setup>
import { ref } from 'vue'
import { onMounted } from 'vue'
import { useRouter,useRoute } from 'vue-router'
import useUserStore from '@/store/modules/user'
import { LearningRecordsControllerService } from '../../../generated/services/LearningRecordsControllerService'
import component from 'element-plus/es/components/tree-select/src/tree-select-option.mjs'
const recordList = ref([])
const userStore = useUserStore()
onMounted(()=>{
userStore.getUserInfo()
})
const sp = "https://wenyu132.oss-cn-beijing.aliyuncs.com/wenyu/merge.mp4"
// const video = "D:\Users\Desktop\image\video\merge.mp4"
const route = useRoute()
const router = useRouter()
const params = ref({
userId: userStore.data.id,
knowledgeId: route.query.knowledgeId,
courseId: route.query.courseId,
pagenum: '1',
pagesize: '10',
})
//
const getrecordList = async () => {
const res = await LearningRecordsControllerService.resourceLearningRecords(
params.value.userId,
params.value.knowledgeId,
params.value.courseId,
params.value.pagenum,
params.value.pagesize,
)
// console.log("");
// console.log(res)
recordList.value = res.data.records
}
//()
const goToAnotherPage = () => {
router.push({
path:'/myCourseStudyManagement/learningProcess1',
query:{
courseId: route.query.courseId
}
})
}
getrecordList()
//
const upload = async(file) => {
console.log(file);
console.log(file.raw);
new FormData(file)
const res = await LearningRecordsControllerService.upload(
new FormData(file)
)
}
// const video = this.$refs.videoRef;
</script>
<style lang="scss" scoped></style>
<template>
<!-- 头部 -->
<div class="header">
<el-button type="primary" plain>浏览记录</el-button>
<el-button
type="primary"
plain
@click="goToAnotherPage"
style="float: right"
>
返回上级目录
</el-button>
</div>
<!-- 中间 -->
<div class="record-list">
<ul v-if="recordList.length > 0">
<li>
<div
style="
display: flex;
justify-content: space-between;
flex-grow: 1;
margin-top: 10px;
margin-bottom: 10px;
background-color: aqua;
"
>
<p>
资源名称
</p>
<p>
学习时间
</p>
<p>
学习人数
</p>
</div>
</li>
<li v-for="record in recordList" :key="record.id" >
<div
style="
display: flex;
justify-content: space-between;
flex-grow: 1;
margin-top: 10px;
margin-bottom: 10px;
"
>
<p>
{{ record.resourceName}}
</p>
<p>
{{ record.time}}
</p>
<p>
{{record.number}}
</p>
</div>
</li>
</ul>
<el-empty v-else description="暂时没有浏览记录" />
</div>
<hr>
<el-upload
class="avatar-uploader"
:show-file-list="false"
:auto-upload="false"
:before-upload="beforeAvatarUpload"
:on-change="upload"
>
<img v-if="imageUrl" :src="imageUrl" class="avatar" />
<el-icon v-else class="avatar-uploader-icon"><Plus /></el-icon>
</el-upload>
<!-- autoplay -->
<!-- <video ref="videoRef" controls width="600">
<source :src="sp" type="video/mp4" />
</video> -->
<!-- <div>
<video ref="videoRef" controls="true" :controlslist="nodownload" @contextmenu="handleContextMenu"></video>
</div> -->
</template>
Loading…
Cancel
Save