xy 5 months ago
commit e33012cb37
  1. 2
      .env.development
  2. 4
      .env_1.development
  3. 3
      .env_1.production
  4. 4
      .env_1.test
  5. 121
      .eslintrc.cjs
  6. 65
      .eslintrc_1.cjs
  7. 9
      .prettierrc_1.json
  8. 53
      .stylelintrc_1.cjs
  9. 18
      README_1.md
  10. 1
      Teaching_integration_platform_admin_template
  11. 2
      _1.eslintignore
  12. 24
      _1.gitignore
  13. 4
      _1.stylelintignore
  14. 25
      generated/core/ApiError.ts
  15. 17
      generated/core/ApiRequestOptions.ts
  16. 11
      generated/core/ApiResult.ts
  17. 131
      generated/core/CancelablePromise.ts
  18. 32
      generated/core/OpenAPI.ts
  19. 323
      generated/core/request.ts
  20. 42
      generated/index.ts
  21. 11
      generated/models/BaseResponse_CoursesDTO_.ts
  22. 10
      generated/models/BaseResponse_List_string_.ts
  23. 11
      generated/models/BaseResponse_PageDTO_CoursesVO_.ts
  24. 11
      generated/models/BaseResponse_Page_CourseFavourDetailVO_.ts
  25. 10
      generated/models/BaseResponse_boolean_.ts
  26. 10
      generated/models/BaseResponse_long_.ts
  27. 10
      generated/models/BaseResponse_string_.ts
  28. 9
      generated/models/CourseFavourAddRequest.ts
  29. 8
      generated/models/CourseFavourAllRequest.ts
  30. 22
      generated/models/CourseFavourDetailVO.ts
  31. 8
      generated/models/CourseFavourListRequest.ts
  32. 12
      generated/models/CourseFavourQueryRequest.ts
  33. 30
      generated/models/CourseObjectivesDTO.ts
  34. 9
      generated/models/CourseThumbAddRequest.ts
  35. 8
      generated/models/CourseThumbAllRequest.ts
  36. 70
      generated/models/CoursesDTO.ts
  37. 34
      generated/models/CoursesVO.ts
  38. 10
      generated/models/KnowFavourAddRequest.ts
  39. 10
      generated/models/KnowThumbAddRequest.ts
  40. 9
      generated/models/OrderItem.ts
  41. 23
      generated/models/PageDTO_CoursesVO_.ts
  42. 19
      generated/models/Page_CourseFavourDetailVO_.ts
  43. 10
      generated/models/ResourceFavourAddRequest.ts
  44. 10
      generated/models/ResourceThumbAddRequest.ts
  45. 60
      generated/services/CommonControllerService.ts
  46. 122
      generated/services/SeCourseFavourControllerService.ts
  47. 76
      generated/services/SeCourseThumbControllerService.ts
  48. 32
      generated/services/SeKnowFavourControllerService.ts
  49. 32
      generated/services/SeKnowThumbControllerService.ts
  50. 32
      generated/services/SeResourceFavourControllerService.ts
  51. 32
      generated/services/SeResourceThumbControllerService.ts
  52. 204
      generated/services/Service.ts
  53. 15
      index_1.html
  54. 15
      mock/user.ts
  55. 69
      mock/user_1.ts
  56. 7
      package.json
  57. 1980
      pnpm-lock.yaml
  58. BIN
      public/0.jpg
  59. BIN
      public/1.jpg
  60. BIN
      public/2.jpg
  61. 1744
      public/nodeList.json
  62. BIN
      public/wl.png
  63. 24
      src/api/courseChaptersApi.ts
  64. 10
      src/api/record.js
  65. 28
      src/api/user/crouse.js
  66. 10
      src/api/user/record.js
  67. 1
      src/assets/icons/PPT文件.svg
  68. 1
      src/assets/icons/pdf.svg
  69. 1
      src/assets/icons/ppt 内容图标.svg
  70. BIN
      src/assets/icons/ppt.png
  71. 1
      src/assets/icons/ppt.svg
  72. BIN
      src/assets/icons/文本.png
  73. 1
      src/assets/icons/文本.svg
  74. BIN
      src/assets/icons/文本1.png
  75. 1
      src/assets/icons/更多.svg
  76. 1
      src/assets/icons/案例.svg
  77. 1
      src/assets/icons/测试.svg
  78. 1
      src/assets/icons/知识点.svg
  79. 1
      src/assets/icons/简介.svg
  80. BIN
      src/assets/icons/视频.png
  81. 1
      src/assets/icons/视频.svg
  82. 1
      src/assets/icons/课程简介.svg
  83. BIN
      src/assets/icons/软件1.png
  84. BIN
      src/assets/icons/音乐.png
  85. BIN
      src/assets/icons/音频.png
  86. 1
      src/assets/icons/音频.svg
  87. BIN
      src/assets/images/0.jpg
  88. BIN
      src/assets/images/1.jpg
  89. BIN
      src/assets/images/1.mp3
  90. BIN
      src/assets/images/1.png
  91. BIN
      src/assets/images/3.png
  92. BIN
      src/assets/images/bj.png
  93. BIN
      src/assets/images/bj1.png
  94. BIN
      src/assets/images/bj2.png
  95. BIN
      src/assets/images/ck.png
  96. BIN
      src/assets/images/dx.png
  97. BIN
      src/assets/images/gd (3).png
  98. BIN
      src/assets/images/kc.jpg
  99. BIN
      src/assets/images/kc1.png
  100. BIN
      src/assets/images/kc2.png
  101. Some files were not shown because too many files have changed in this diff Show More

@ -1,4 +1,4 @@
# 变量必须以 VITE_ 为前缀才能暴露给外部读取
NODE_ENV = 'development'
VITE_APP_TITLE = '无糖运营平台'
VITE_APP_BASE_API = '/api'
VITE_APP_BASE_API = 'http://127.0.0.1:8080'

@ -0,0 +1,4 @@
# 变量必须以 VITE_ 为前缀才能暴露给外部读取
NODE_ENV = 'development'
VITE_APP_TITLE = '无糖运营平台'
VITE_APP_BASE_API = '/api'

@ -0,0 +1,3 @@
NODE_ENV = 'production'
VITE_APP_TITLE = '无糖运营平台'
VITE_APP_BASE_API = '/prod-api'

@ -0,0 +1,4 @@
# 变量必须以 VITE_ 为前缀才能暴露给外部读取
NODE_ENV = 'test'
VITE_APP_TITLE = '无糖运营平台'
VITE_APP_BASE_API = '/test-api'

@ -1,63 +1,66 @@
// @see https://eslint.bootcss.com/docs/rules/
module.exports = {
env: {
browser: true,
es2021: true,
node: true,
jest: true,
env: {
browser: true,
es2021: true,
node: true,
jest: true,
jquery: true,
},
globals: {
VANTA: 'readonly', //VANTA 已经cdn引入 这里拒绝eslint报错 全局声明一下
ElMessage: 'readonly',
ElMessageBox: 'readonly',
ElLoading: 'readonly',
},
/* 指定如何解析语法 */
parser: 'vue-eslint-parser',
/** 优先级低于 parse 的语法解析配置 */
parserOptions: {
ecmaVersion: 'latest',
sourceType: 'module',
parser: '@typescript-eslint/parser',
jsxPragma: 'React',
ecmaFeatures: {
jsx: true,
},
"globals": {
"VANTA": "readonly" //VANTA 已经cdn引入 这里拒绝eslint报错 全局声明一下
},
/* 指定如何解析语法 */
parser: 'vue-eslint-parser',
/** 优先级低于 parse 的语法解析配置 */
parserOptions: {
ecmaVersion: 'latest',
sourceType: 'module',
parser: '@typescript-eslint/parser',
jsxPragma: 'React',
ecmaFeatures: {
jsx: true,
},
},
/* 继承已有的规则 */
extends: [
'eslint:recommended',
'plugin:vue/vue3-essential',
'plugin:@typescript-eslint/recommended',
'plugin:prettier/recommended',
],
plugins: ['vue', '@typescript-eslint'],
/*
* "off" 或 0 ==> 关闭规则
* "warn" 或 1 ==> 打开的规则作为警告(不影响代码执行)
* "error" 或 2 ==> 规则作为一个错误(代码不能执行,界面报错)
*/
rules: {
// eslint(https://eslint.bootcss.com/docs/rules/)
'no-var': 'error', // 要求使用 let 或 const 而不是 var
'no-multiple-empty-lines': ['warn', { max: 1 }], // 不允许多个空行
'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off',
'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',
'no-unexpected-multiline': 'error', // 禁止空余的多行
'no-useless-escape': 'off', // 禁止不必要的转义字符
// typeScript (https://typescript-eslint.io/rules)
'@typescript-eslint/no-unused-vars': 'error', // 禁止定义未使用的变量
'@typescript-eslint/prefer-ts-expect-error': 'off', // 禁止使用 @ts-ignore
"@typescript-eslint/ban-ts-ignore": "off",
'@typescript-eslint/no-explicit-any': 'off', // 禁止使用 any 类型
'@typescript-eslint/no-non-null-assertion': 'off',
'@typescript-eslint/no-namespace': 'off', // 禁止使用自定义 TypeScript 模块和命名空间。
'@typescript-eslint/semi': 'off',
// eslint-plugin-vue (https://eslint.vuejs.org/rules/)
'vue/multi-word-component-names': 'off', // 要求组件名称始终为 “-” 链接的单词
'vue/script-setup-uses-vars': 'error', // 防止<script setup>使用的变量<template>被标记为未使用
'vue/no-mutating-props': 'off', // 不允许组件 prop的改变
'vue/attribute-hyphenation': 'off', // 对模板中的自定义组件强制执行属性命名样式
},
}
},
/* 继承已有的规则 */
extends: [
'eslint:recommended',
'plugin:vue/vue3-essential',
'plugin:@typescript-eslint/recommended',
'plugin:prettier/recommended',
],
plugins: ['vue', '@typescript-eslint'],
/*
* "off" 或 0 ==> 关闭规则
* "warn" 或 1 ==> 打开的规则作为警告(不影响代码执行)
* "error" 或 2 ==> 规则作为一个错误(代码不能执行,界面报错)
*/
rules: {
// eslint(https://eslint.bootcss.com/docs/rules/)
'no-var': 'error', // 要求使用 let 或 const 而不是 var
'no-multiple-empty-lines': ['warn', { max: 1 }], // 不允许多个空行
'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off',
'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',
'no-unexpected-multiline': 'error', // 禁止空余的多行
'no-useless-escape': 'off', // 禁止不必要的转义字符
// typeScript (https://typescript-eslint.io/rules)
'@typescript-eslint/no-unused-vars': 'error', // 禁止定义未使用的变量
'@typescript-eslint/prefer-ts-expect-error': 'off', // 禁止使用 @ts-ignore
'@typescript-eslint/ban-ts-ignore': 'off',
'@typescript-eslint/no-explicit-any': 'off', // 禁止使用 any 类型
'@typescript-eslint/no-non-null-assertion': 'off',
'@typescript-eslint/no-namespace': 'off', // 禁止使用自定义 TypeScript 模块和命名空间。
'@typescript-eslint/semi': 'off',
// eslint-plugin-vue (https://eslint.vuejs.org/rules/)
'vue/multi-word-component-names': 'off', // 要求组件名称始终为 “-” 链接的单词
'vue/script-setup-uses-vars': 'error', // 防止<script setup>使用的变量<template>被标记为未使用
'vue/no-mutating-props': 'off', // 不允许组件 prop的改变
'vue/attribute-hyphenation': 'off', // 对模板中的自定义组件强制执行属性命名样式
},
}

@ -0,0 +1,65 @@
// @see https://eslint.bootcss.com/docs/rules/
module.exports = {
env: {
browser: true,
es2021: true,
node: true,
jest: true,
},
globals: {
VANTA: 'readonly', //VANTA 已经cdn引入 这里拒绝eslint报错 全局声明一下
ElMessage: 'readonly',
ElMessageBox: 'readonly',
ElLoading: 'readonly',
},
/* 指定如何解析语法 */
parser: 'vue-eslint-parser',
/** 优先级低于 parse 的语法解析配置 */
parserOptions: {
ecmaVersion: 'latest',
sourceType: 'module',
parser: '@typescript-eslint/parser',
jsxPragma: 'React',
ecmaFeatures: {
jsx: true,
},
},
/* 继承已有的规则 */
extends: [
'eslint:recommended',
'plugin:vue/vue3-essential',
'plugin:@typescript-eslint/recommended',
'plugin:prettier/recommended',
],
plugins: ['vue', '@typescript-eslint'],
/*
* "off" 或 0 ==> 关闭规则
* "warn" 或 1 ==> 打开的规则作为警告(不影响代码执行)
* "error" 或 2 ==> 规则作为一个错误(代码不能执行,界面报错)
*/
rules: {
// eslint(https://eslint.bootcss.com/docs/rules/)
'no-var': 'error', // 要求使用 let 或 const 而不是 var
'no-multiple-empty-lines': ['warn', { max: 1 }], // 不允许多个空行
'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off',
'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',
'no-unexpected-multiline': 'error', // 禁止空余的多行
'no-useless-escape': 'off', // 禁止不必要的转义字符
// typeScript (https://typescript-eslint.io/rules)
'@typescript-eslint/no-unused-vars': 'error', // 禁止定义未使用的变量
'@typescript-eslint/prefer-ts-expect-error': 'off', // 禁止使用 @ts-ignore
'@typescript-eslint/ban-ts-ignore': 'off',
'@typescript-eslint/no-explicit-any': 'off', // 禁止使用 any 类型
'@typescript-eslint/no-non-null-assertion': 'off',
'@typescript-eslint/no-namespace': 'off', // 禁止使用自定义 TypeScript 模块和命名空间。
'@typescript-eslint/semi': 'off',
// eslint-plugin-vue (https://eslint.vuejs.org/rules/)
'vue/multi-word-component-names': 'off', // 要求组件名称始终为 “-” 链接的单词
'vue/script-setup-uses-vars': 'error', // 防止<script setup>使用的变量<template>被标记为未使用
'vue/no-mutating-props': 'off', // 不允许组件 prop的改变
'vue/attribute-hyphenation': 'off', // 对模板中的自定义组件强制执行属性命名样式
},
}

@ -0,0 +1,9 @@
{
"singleQuote": true,
"semi": false,
"bracketSpacing": true,
"htmlWhitespaceSensitivity": "ignore",
"endOfLine": "auto",
"trailingComma": "all",
"tabWidth": 2
}

@ -0,0 +1,53 @@
// @see https://stylelint.bootcss.com/
module.exports = {
extends: [
'stylelint-config-standard', // 配置stylelint拓展插件
'stylelint-config-standard-vue', // 配置 vue 中 template 样式格式化
'stylelint-config-standard-scss', // 配置stylelint scss插件
'stylelint-config-recommended-vue/scss', // 配置 vue 中 scss 样式格式化
'stylelint-config-recess-order', // 配置stylelint css属性书写顺序插件,
'stylelint-config-prettier', // 配置stylelint和prettier兼容
],
overrides: [
{
files: ['**/*.(scss|css|vue|html)'],
customSyntax: 'postcss-scss',
},
{
files: ['**/*.(html|vue)'],
customSyntax: 'postcss-html',
},
],
ignoreFiles: [
'**/*.js',
'**/*.jsx',
'**/*.tsx',
'**/*.ts',
'**/*.json',
'**/*.md',
'**/*.yaml',
],
/**
* null => 关闭该规则
* always => 必须
*/
rules: {
'value-keyword-case': null, // 在 css 中使用 v-bind,不报错
'no-descending-specificity': null, // 禁止在具有较高优先级的选择器后出现被其覆盖的较低优先级的选择器
'function-url-quotes': 'always', // 要求或禁止 URL 的引号 "always(必须加上引号)"|"never(没有引号)"
'no-empty-source': null, // 关闭禁止空源码
'selector-class-pattern': null, // 关闭强制选择器类名的格式
'property-no-unknown': null, // 禁止未知的属性(true 为不允许)
'block-opening-brace-space-before': 'always', //大括号之前必须有一个空格或不能有空白符
'value-no-vendor-prefix': null, // 关闭 属性值前缀 --webkit-box
'property-no-vendor-prefix': null, // 关闭 属性前缀 -webkit-mask
'selector-pseudo-class-no-unknown': [
// 不允许未知的选择器
true,
{
ignorePseudoClasses: ['global', 'v-deep', 'deep'], // 忽略属性,修改element默认样式的时候能使用到
},
],
},
}

@ -0,0 +1,18 @@
# Vue 3 + TypeScript + Vite
This template should help get you started developing with Vue 3 and TypeScript in Vite. The template uses Vue 3 `<script setup>` SFCs, check out the [script setup docs](https://v3.vuejs.org/api/sfc-script-setup.html#sfc-script-setup) to learn more.
## Recommended IDE Setup
- [VS Code](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur) + [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin).
## Type Support For `.vue` Imports in TS
TypeScript cannot handle type information for `.vue` imports by default, so we replace the `tsc` CLI with `vue-tsc` for type checking. In editors, we need [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin) to make the TypeScript language service aware of `.vue` types.
If the standalone TypeScript plugin doesn't feel fast enough to you, Volar has also implemented a [Take Over Mode](https://github.com/johnsoncodehk/volar/discussions/471#discussioncomment-1361669) that is more performant. You can enable it by the following steps:
1. Disable the built-in TypeScript Extension
1. Run `Extensions: Show Built-in Extensions` from VSCode's command palette
2. Find `TypeScript and JavaScript Language Features`, right click and select `Disable (Workspace)`
2. Reload the VSCode window by running `Developer: Reload Window` from the command palette.

@ -0,0 +1 @@
Subproject commit be31783972a0cdd8d1abfe03df8ef24a73854b0c

@ -0,0 +1,2 @@
dist
node_modules

24
_1.gitignore vendored

@ -0,0 +1,24 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*
node_modules
dist
dist-ssr
*.local
# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?

@ -0,0 +1,4 @@
/node_modules/*
/dist/*
/html/*
/public/*

@ -0,0 +1,25 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
/* eslint-disable */
import type { ApiRequestOptions } from './ApiRequestOptions';
import type { ApiResult } from './ApiResult';
export class ApiError extends Error {
public readonly url: string;
public readonly status: number;
public readonly statusText: string;
public readonly body: any;
public readonly request: ApiRequestOptions;
constructor(request: ApiRequestOptions, response: ApiResult, message: string) {
super(message);
this.name = 'ApiError';
this.url = response.url;
this.status = response.status;
this.statusText = response.statusText;
this.body = response.body;
this.request = request;
}
}

@ -0,0 +1,17 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
/* eslint-disable */
export type ApiRequestOptions = {
readonly method: 'GET' | 'PUT' | 'POST' | 'DELETE' | 'OPTIONS' | 'HEAD' | 'PATCH';
readonly url: string;
readonly path?: Record<string, any>;
readonly cookies?: Record<string, any>;
readonly headers?: Record<string, any>;
readonly query?: Record<string, any>;
readonly formData?: Record<string, any>;
readonly body?: any;
readonly mediaType?: string;
readonly responseHeader?: string;
readonly errors?: Record<number, string>;
};

@ -0,0 +1,11 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
/* eslint-disable */
export type ApiResult = {
readonly url: string;
readonly ok: boolean;
readonly status: number;
readonly statusText: string;
readonly body: any;
};

@ -0,0 +1,131 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
/* eslint-disable */
export class CancelError extends Error {
constructor(message: string) {
super(message);
this.name = 'CancelError';
}
public get isCancelled(): boolean {
return true;
}
}
export interface OnCancel {
readonly isResolved: boolean;
readonly isRejected: boolean;
readonly isCancelled: boolean;
(cancelHandler: () => void): void;
}
export class CancelablePromise<T> implements Promise<T> {
#isResolved: boolean;
#isRejected: boolean;
#isCancelled: boolean;
readonly #cancelHandlers: (() => void)[];
readonly #promise: Promise<T>;
#resolve?: (value: T | PromiseLike<T>) => void;
#reject?: (reason?: any) => void;
constructor(
executor: (
resolve: (value: T | PromiseLike<T>) => void,
reject: (reason?: any) => void,
onCancel: OnCancel
) => void
) {
this.#isResolved = false;
this.#isRejected = false;
this.#isCancelled = false;
this.#cancelHandlers = [];
this.#promise = new Promise<T>((resolve, reject) => {
this.#resolve = resolve;
this.#reject = reject;
const onResolve = (value: T | PromiseLike<T>): void => {
if (this.#isResolved || this.#isRejected || this.#isCancelled) {
return;
}
this.#isResolved = true;
if (this.#resolve) this.#resolve(value);
};
const onReject = (reason?: any): void => {
if (this.#isResolved || this.#isRejected || this.#isCancelled) {
return;
}
this.#isRejected = true;
if (this.#reject) this.#reject(reason);
};
const onCancel = (cancelHandler: () => void): void => {
if (this.#isResolved || this.#isRejected || this.#isCancelled) {
return;
}
this.#cancelHandlers.push(cancelHandler);
};
Object.defineProperty(onCancel, 'isResolved', {
get: (): boolean => this.#isResolved,
});
Object.defineProperty(onCancel, 'isRejected', {
get: (): boolean => this.#isRejected,
});
Object.defineProperty(onCancel, 'isCancelled', {
get: (): boolean => this.#isCancelled,
});
return executor(onResolve, onReject, onCancel as OnCancel);
});
}
get [Symbol.toStringTag]() {
return "Cancellable Promise";
}
public then<TResult1 = T, TResult2 = never>(
onFulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | null,
onRejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null
): Promise<TResult1 | TResult2> {
return this.#promise.then(onFulfilled, onRejected);
}
public catch<TResult = never>(
onRejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null
): Promise<T | TResult> {
return this.#promise.catch(onRejected);
}
public finally(onFinally?: (() => void) | null): Promise<T> {
return this.#promise.finally(onFinally);
}
public cancel(): void {
if (this.#isResolved || this.#isRejected || this.#isCancelled) {
return;
}
this.#isCancelled = true;
if (this.#cancelHandlers.length) {
try {
for (const cancelHandler of this.#cancelHandlers) {
cancelHandler();
}
} catch (error) {
console.warn('Cancellation threw an error', error);
return;
}
}
this.#cancelHandlers.length = 0;
if (this.#reject) this.#reject(new CancelError('Request aborted'));
}
public get isCancelled(): boolean {
return this.#isCancelled;
}
}

@ -0,0 +1,32 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
/* eslint-disable */
import type { ApiRequestOptions } from './ApiRequestOptions';
type Resolver<T> = (options: ApiRequestOptions) => Promise<T>;
type Headers = Record<string, string>;
export type OpenAPIConfig = {
BASE: string;
VERSION: string;
WITH_CREDENTIALS: boolean;
CREDENTIALS: 'include' | 'omit' | 'same-origin';
TOKEN?: string | Resolver<string> | undefined;
USERNAME?: string | Resolver<string> | undefined;
PASSWORD?: string | Resolver<string> | undefined;
HEADERS?: Headers | Resolver<Headers> | undefined;
ENCODE_PATH?: ((path: string) => string) | undefined;
};
export const OpenAPI: OpenAPIConfig = {
BASE: 'http://localhost:8080',
VERSION: '1.0',
WITH_CREDENTIALS: false,
CREDENTIALS: 'include',
TOKEN: undefined,
USERNAME: undefined,
PASSWORD: undefined,
HEADERS: undefined,
ENCODE_PATH: undefined,
};

@ -0,0 +1,323 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
/* eslint-disable */
import axios from 'axios';
import type { AxiosError, AxiosRequestConfig, AxiosResponse, AxiosInstance } from 'axios';
import FormData from 'form-data';
import { ApiError } from './ApiError';
import type { ApiRequestOptions } from './ApiRequestOptions';
import type { ApiResult } from './ApiResult';
import { CancelablePromise } from './CancelablePromise';
import type { OnCancel } from './CancelablePromise';
import type { OpenAPIConfig } from './OpenAPI';
export const isDefined = <T>(value: T | null | undefined): value is Exclude<T, null | undefined> => {
return value !== undefined && value !== null;
};
export const isString = (value: any): value is string => {
return typeof value === 'string';
};
export const isStringWithValue = (value: any): value is string => {
return isString(value) && value !== '';
};
export const isBlob = (value: any): value is Blob => {
return (
typeof value === 'object' &&
typeof value.type === 'string' &&
typeof value.stream === 'function' &&
typeof value.arrayBuffer === 'function' &&
typeof value.constructor === 'function' &&
typeof value.constructor.name === 'string' &&
/^(Blob|File)$/.test(value.constructor.name) &&
/^(Blob|File)$/.test(value[Symbol.toStringTag])
);
};
export const isFormData = (value: any): value is FormData => {
return value instanceof FormData;
};
export const isSuccess = (status: number): boolean => {
return status >= 200 && status < 300;
};
export const base64 = (str: string): string => {
try {
return btoa(str);
} catch (err) {
// @ts-ignore
return Buffer.from(str).toString('base64');
}
};
export const getQueryString = (params: Record<string, any>): string => {
const qs: string[] = [];
const append = (key: string, value: any) => {
qs.push(`${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`);
};
const process = (key: string, value: any) => {
if (isDefined(value)) {
if (Array.isArray(value)) {
value.forEach(v => {
process(key, v);
});
} else if (typeof value === 'object') {
Object.entries(value).forEach(([k, v]) => {
process(`${key}[${k}]`, v);
});
} else {
append(key, value);
}
}
};
Object.entries(params).forEach(([key, value]) => {
process(key, value);
});
if (qs.length > 0) {
return `?${qs.join('&')}`;
}
return '';
};
const getUrl = (config: OpenAPIConfig, options: ApiRequestOptions): string => {
const encoder = config.ENCODE_PATH || encodeURI;
const path = options.url
.replace('{api-version}', config.VERSION)
.replace(/{(.*?)}/g, (substring: string, group: string) => {
if (options.path?.hasOwnProperty(group)) {
return encoder(String(options.path[group]));
}
return substring;
});
const url = `${config.BASE}${path}`;
if (options.query) {
return `${url}${getQueryString(options.query)}`;
}
return url;
};
export const getFormData = (options: ApiRequestOptions): FormData | undefined => {
if (options.formData) {
const formData = new FormData();
const process = (key: string, value: any) => {
if (isString(value) || isBlob(value)) {
formData.append(key, value);
} else {
formData.append(key, JSON.stringify(value));
}
};
Object.entries(options.formData)
.filter(([_, value]) => isDefined(value))
.forEach(([key, value]) => {
if (Array.isArray(value)) {
value.forEach(v => process(key, v));
} else {
process(key, value);
}
});
return formData;
}
return undefined;
};
type Resolver<T> = (options: ApiRequestOptions) => Promise<T>;
export const resolve = async <T>(options: ApiRequestOptions, resolver?: T | Resolver<T>): Promise<T | undefined> => {
if (typeof resolver === 'function') {
return (resolver as Resolver<T>)(options);
}
return resolver;
};
export const getHeaders = async (config: OpenAPIConfig, options: ApiRequestOptions, formData?: FormData): Promise<Record<string, string>> => {
const [token, username, password, additionalHeaders] = await Promise.all([
resolve(options, config.TOKEN),
resolve(options, config.USERNAME),
resolve(options, config.PASSWORD),
resolve(options, config.HEADERS),
]);
const formHeaders = typeof formData?.getHeaders === 'function' && formData?.getHeaders() || {}
const headers = Object.entries({
Accept: 'application/json',
...additionalHeaders,
...options.headers,
...formHeaders,
})
.filter(([_, value]) => isDefined(value))
.reduce((headers, [key, value]) => ({
...headers,
[key]: String(value),
}), {} as Record<string, string>);
if (isStringWithValue(token)) {
headers['Authorization'] = `Bearer ${token}`;
}
if (isStringWithValue(username) && isStringWithValue(password)) {
const credentials = base64(`${username}:${password}`);
headers['Authorization'] = `Basic ${credentials}`;
}
if (options.body !== undefined) {
if (options.mediaType) {
headers['Content-Type'] = options.mediaType;
} else if (isBlob(options.body)) {
headers['Content-Type'] = options.body.type || 'application/octet-stream';
} else if (isString(options.body)) {
headers['Content-Type'] = 'text/plain';
} else if (!isFormData(options.body)) {
headers['Content-Type'] = 'application/json';
}
}
return headers;
};
export const getRequestBody = (options: ApiRequestOptions): any => {
if (options.body) {
return options.body;
}
return undefined;
};
export const sendRequest = async <T>(
config: OpenAPIConfig,
options: ApiRequestOptions,
url: string,
body: any,
formData: FormData | undefined,
headers: Record<string, string>,
onCancel: OnCancel,
axiosClient: AxiosInstance
): Promise<AxiosResponse<T>> => {
const source = axios.CancelToken.source();
const requestConfig: AxiosRequestConfig = {
url,
headers,
data: body ?? formData,
method: options.method,
withCredentials: config.WITH_CREDENTIALS,
withXSRFToken: config.CREDENTIALS === 'include' ? config.WITH_CREDENTIALS : false,
cancelToken: source.token,
};
onCancel(() => source.cancel('The user aborted a request.'));
try {
return await axiosClient.request(requestConfig);
} catch (error) {
const axiosError = error as AxiosError<T>;
if (axiosError.response) {
return axiosError.response;
}
throw error;
}
};
export const getResponseHeader = (response: AxiosResponse<any>, responseHeader?: string): string | undefined => {
if (responseHeader) {
const content = response.headers[responseHeader];
if (isString(content)) {
return content;
}
}
return undefined;
};
export const getResponseBody = (response: AxiosResponse<any>): any => {
if (response.status !== 204) {
return response.data;
}
return undefined;
};
export const catchErrorCodes = (options: ApiRequestOptions, result: ApiResult): void => {
const errors: Record<number, string> = {
400: 'Bad Request',
401: 'Unauthorized',
403: 'Forbidden',
404: 'Not Found',
500: 'Internal Server Error',
502: 'Bad Gateway',
503: 'Service Unavailable',
...options.errors,
}
const error = errors[result.status];
if (error) {
throw new ApiError(options, result, error);
}
if (!result.ok) {
const errorStatus = result.status ?? 'unknown';
const errorStatusText = result.statusText ?? 'unknown';
const errorBody = (() => {
try {
return JSON.stringify(result.body, null, 2);
} catch (e) {
return undefined;
}
})();
throw new ApiError(options, result,
`Generic Error: status: ${errorStatus}; status text: ${errorStatusText}; body: ${errorBody}`
);
}
};
/**
* Request method
* @param config The OpenAPI configuration object
* @param options The request options from the service
* @param axiosClient The axios client instance to use
* @returns CancelablePromise<T>
* @throws ApiError
*/
export const request = <T>(config: OpenAPIConfig, options: ApiRequestOptions, axiosClient: AxiosInstance = axios): CancelablePromise<T> => {
return new CancelablePromise(async (resolve, reject, onCancel) => {
try {
const url = getUrl(config, options);
const formData = getFormData(options);
const body = getRequestBody(options);
const headers = await getHeaders(config, options, formData);
if (!onCancel.isCancelled) {
const response = await sendRequest<T>(config, options, url, body, formData, headers, onCancel, axiosClient);
const responseBody = getResponseBody(response);
const responseHeader = getResponseHeader(response, options.responseHeader);
const result: ApiResult = {
url,
ok: isSuccess(response.status),
status: response.status,
statusText: response.statusText,
body: responseHeader ?? responseBody,
};
catchErrorCodes(options, result);
resolve(result.body);
}
} catch (error) {
reject(error);
}
});
};

@ -0,0 +1,42 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
/* eslint-disable */
export { ApiError } from './core/ApiError';
export { CancelablePromise, CancelError } from './core/CancelablePromise';
export { OpenAPI } from './core/OpenAPI';
export type { OpenAPIConfig } from './core/OpenAPI';
export type { BaseResponse_boolean_ } from './models/BaseResponse_boolean_';
export type { BaseResponse_CoursesDTO_ } from './models/BaseResponse_CoursesDTO_';
export type { BaseResponse_List_string_ } from './models/BaseResponse_List_string_';
export type { BaseResponse_long_ } from './models/BaseResponse_long_';
export type { BaseResponse_Page_CourseFavourDetailVO_ } from './models/BaseResponse_Page_CourseFavourDetailVO_';
export type { BaseResponse_PageDTO_CoursesVO_ } from './models/BaseResponse_PageDTO_CoursesVO_';
export type { BaseResponse_string_ } from './models/BaseResponse_string_';
export type { CourseFavourAddRequest } from './models/CourseFavourAddRequest';
export type { CourseFavourAllRequest } from './models/CourseFavourAllRequest';
export type { CourseFavourDetailVO } from './models/CourseFavourDetailVO';
export type { CourseFavourListRequest } from './models/CourseFavourListRequest';
export type { CourseFavourQueryRequest } from './models/CourseFavourQueryRequest';
export type { CourseObjectivesDTO } from './models/CourseObjectivesDTO';
export type { CoursesDTO } from './models/CoursesDTO';
export type { CoursesVO } from './models/CoursesVO';
export type { CourseThumbAddRequest } from './models/CourseThumbAddRequest';
export type { CourseThumbAllRequest } from './models/CourseThumbAllRequest';
export type { KnowFavourAddRequest } from './models/KnowFavourAddRequest';
export type { KnowThumbAddRequest } from './models/KnowThumbAddRequest';
export type { OrderItem } from './models/OrderItem';
export type { Page_CourseFavourDetailVO_ } from './models/Page_CourseFavourDetailVO_';
export type { PageDTO_CoursesVO_ } from './models/PageDTO_CoursesVO_';
export type { ResourceFavourAddRequest } from './models/ResourceFavourAddRequest';
export type { ResourceThumbAddRequest } from './models/ResourceThumbAddRequest';
export { Service } from './services/Service';
export { CommonControllerService } from './services/CommonControllerService';
export { SeCourseFavourControllerService } from './services/SeCourseFavourControllerService';
export { SeCourseThumbControllerService } from './services/SeCourseThumbControllerService';
export { SeKnowFavourControllerService } from './services/SeKnowFavourControllerService';
export { SeKnowThumbControllerService } from './services/SeKnowThumbControllerService';
export { SeResourceFavourControllerService } from './services/SeResourceFavourControllerService';
export { SeResourceThumbControllerService } from './services/SeResourceThumbControllerService';

@ -0,0 +1,11 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
/* eslint-disable */
import type { CoursesDTO } from './CoursesDTO';
export type BaseResponse_CoursesDTO_ = {
code?: number;
data?: CoursesDTO;
message?: string;
};

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

@ -0,0 +1,11 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
/* eslint-disable */
import type { PageDTO_CoursesVO_ } from './PageDTO_CoursesVO_';
export type BaseResponse_PageDTO_CoursesVO_ = {
code?: number;
data?: PageDTO_CoursesVO_;
message?: string;
};

@ -0,0 +1,11 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
/* eslint-disable */
import type { Page_CourseFavourDetailVO_ } from './Page_CourseFavourDetailVO_';
export type BaseResponse_Page_CourseFavourDetailVO_ = {
code?: number;
data?: Page_CourseFavourDetailVO_;
message?: string;
};

@ -0,0 +1,10 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
/* eslint-disable */
export type BaseResponse_boolean_ = {
code?: number;
data?: boolean;
message?: string;
};

@ -0,0 +1,10 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
/* eslint-disable */
export type BaseResponse_long_ = {
code?: number;
data?: number;
message?: string;
};

@ -0,0 +1,10 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
/* eslint-disable */
export type BaseResponse_string_ = {
code?: number;
data?: string;
message?: string;
};

@ -0,0 +1,9 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
/* eslint-disable */
export type CourseFavourAddRequest = {
courseId?: string;
userId?: string;
};

@ -0,0 +1,8 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
/* eslint-disable */
export type CourseFavourAllRequest = {
courseId?: string;
};

@ -0,0 +1,22 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
/* eslint-disable */
export type CourseFavourDetailVO = {
/**
*
*/
classhours: number;
/**
*
*/
credit: number;
id?: string;
img?: string;
name?: string;
/**
* id
*/
teacher?: string;
};

@ -0,0 +1,8 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
/* eslint-disable */
export type CourseFavourListRequest = {
userId?: string;
};

@ -0,0 +1,12 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
/* eslint-disable */
export type CourseFavourQueryRequest = {
current?: number;
pageSize?: number;
sortField?: string;
sortOrder?: string;
userId?: string;
};

@ -0,0 +1,30 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
/* eslint-disable */
/**
*
*/
export type CourseObjectivesDTO = {
/**
*
*/
content: string;
/**
* id
*/
id?: string;
/**
*
*/
name: string;
/**
* pid
*/
pid: string;
/**
* 1 234
*/
type: string;
};

@ -0,0 +1,9 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
/* eslint-disable */
export type CourseThumbAddRequest = {
courseId?: string;
userId?: string;
};

@ -0,0 +1,8 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
/* eslint-disable */
export type CourseThumbAllRequest = {
courseId?: string;
};

@ -0,0 +1,70 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
/* eslint-disable */
/**
*
*/
export type CoursesDTO = {
/**
*
*/
assessmenttype: string;
/**
*
*/
assessmentway: string;
/**
*
*/
category: string;
/**
*
*/
classhours: number;
/**
*
*/
code: string;
/**
*
*/
createTime?: string;
/**
*
*/
credit: number;
/**
*
*/
description?: string;
/**
* id
*/
id?: string;
/**
*
*/
img?: string;
/**
*
*/
name: string;
/**
*
*/
nature: string;
/**
*
*/
teacher?: string;
/**
*
*/
teachermethod?: string;
/**
*
*/
teacherway?: string;
};

@ -0,0 +1,34 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
/* eslint-disable */
/**
* VO实体
*/
export type CoursesVO = {
/**
*
*/
classhours: number;
/**
*
*/
credit: number;
/**
* id
*/
id?: string;
/**
*
*/
img?: string;
/**
*
*/
name: string;
/**
* id
*/
teacher?: string;
};

@ -0,0 +1,10 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
/* eslint-disable */
export type KnowFavourAddRequest = {
courseId?: string;
knowId?: string;
userId?: string;
};

@ -0,0 +1,10 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
/* eslint-disable */
export type KnowThumbAddRequest = {
courseId?: string;
knowId?: string;
userId?: string;
};

@ -0,0 +1,9 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
/* eslint-disable */
export type OrderItem = {
asc?: boolean;
column?: string;
};

@ -0,0 +1,23 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
/* eslint-disable */
import type { CoursesVO } from './CoursesVO';
/**
*
*/
export type PageDTO_CoursesVO_ = {
/**
*
*/
list?: Array<CoursesVO>;
/**
*
*/
pages?: number;
/**
*
*/
total?: number;
};

@ -0,0 +1,19 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
/* eslint-disable */
import type { CourseFavourDetailVO } from './CourseFavourDetailVO';
import type { OrderItem } from './OrderItem';
export type Page_CourseFavourDetailVO_ = {
countId?: string;
current?: number;
maxLimit?: number;
optimizeCountSql?: boolean;
orders?: Array<OrderItem>;
pages?: number;
records?: Array<CourseFavourDetailVO>;
searchCount?: boolean;
size?: number;
total?: number;
};

@ -0,0 +1,10 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
/* eslint-disable */
export type ResourceFavourAddRequest = {
courseId?: string;
resourceId?: string;
userId?: string;
};

@ -0,0 +1,10 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
/* eslint-disable */
export type ResourceThumbAddRequest = {
courseId?: string;
resourceId?: string;
userId?: string;
};

@ -0,0 +1,60 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
/* eslint-disable */
import type { BaseResponse_string_ } from '../models/BaseResponse_string_';
import type { CancelablePromise } from '../core/CancelablePromise';
import { OpenAPI } from '../core/OpenAPI';
import { request as __request } from '../core/request';
export class CommonControllerService {
/**
* download
* @param courseId courseId
* @returns any OK
* @throws ApiError
*/
public static downloadUsingGet(
courseId: string,
): CancelablePromise<any> {
return __request(OpenAPI, {
method: 'GET',
url: '/download',
query: {
'courseId': courseId,
},
errors: {
401: `Unauthorized`,
403: `Forbidden`,
404: `Not Found`,
},
});
}
/**
* upload
* @param courseId courseId
* @param file file
* @returns BaseResponse_string_ OK
* @returns any Created
* @throws ApiError
*/
public static uploadUsingPost(
courseId: string,
file?: Blob,
): CancelablePromise<BaseResponse_string_ | any> {
return __request(OpenAPI, {
method: 'POST',
url: '/upload',
query: {
'courseId': courseId,
},
formData: {
'file': file,
},
errors: {
401: `Unauthorized`,
403: `Forbidden`,
404: `Not Found`,
},
});
}
}

@ -0,0 +1,122 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
/* eslint-disable */
import type { BaseResponse_boolean_ } from '../models/BaseResponse_boolean_';
import type { BaseResponse_List_string_ } from '../models/BaseResponse_List_string_';
import type { BaseResponse_long_ } from '../models/BaseResponse_long_';
import type { BaseResponse_Page_CourseFavourDetailVO_ } from '../models/BaseResponse_Page_CourseFavourDetailVO_';
import type { CourseFavourAddRequest } from '../models/CourseFavourAddRequest';
import type { CourseFavourAllRequest } from '../models/CourseFavourAllRequest';
import type { CourseFavourListRequest } from '../models/CourseFavourListRequest';
import type { CourseFavourQueryRequest } from '../models/CourseFavourQueryRequest';
import type { CancelablePromise } from '../core/CancelablePromise';
import { OpenAPI } from '../core/OpenAPI';
import { request as __request } from '../core/request';
export class SeCourseFavourControllerService {
/**
* doFavour
* @param courseFavourAddRequest courseFavourAddRequest
* @returns BaseResponse_boolean_ OK
* @returns any Created
* @throws ApiError
*/
public static doFavourUsingPost(
courseFavourAddRequest: CourseFavourAddRequest,
): CancelablePromise<BaseResponse_boolean_ | any> {
return __request(OpenAPI, {
method: 'POST',
url: '/course_favour/add',
body: courseFavourAddRequest,
errors: {
401: `Unauthorized`,
403: `Forbidden`,
404: `Not Found`,
},
});
}
/**
* favourCount
* @param courseFavourAddRequest courseFavourAddRequest
* @returns BaseResponse_long_ OK
* @returns any Created
* @throws ApiError
*/
public static favourCountUsingPost(
courseFavourAddRequest: CourseFavourAddRequest,
): CancelablePromise<BaseResponse_long_ | any> {
return __request(OpenAPI, {
method: 'POST',
url: '/course_favour/count',
body: courseFavourAddRequest,
errors: {
401: `Unauthorized`,
403: `Forbidden`,
404: `Not Found`,
},
});
}
/**
* courseCount
* @param courseFavourAllRequest courseFavourAllRequest
* @returns BaseResponse_long_ OK
* @returns any Created
* @throws ApiError
*/
public static courseCountUsingPost(
courseFavourAllRequest: CourseFavourAllRequest,
): CancelablePromise<BaseResponse_long_ | any> {
return __request(OpenAPI, {
method: 'POST',
url: '/course_favour/countAll',
body: courseFavourAllRequest,
errors: {
401: `Unauthorized`,
403: `Forbidden`,
404: `Not Found`,
},
});
}
/**
* courseList
* @param courseFavourListRequest courseFavourListRequest
* @returns BaseResponse_List_string_ OK
* @returns any Created
* @throws ApiError
*/
public static courseListUsingPost(
courseFavourListRequest: CourseFavourListRequest,
): CancelablePromise<BaseResponse_List_string_ | any> {
return __request(OpenAPI, {
method: 'POST',
url: '/course_favour/countList',
body: courseFavourListRequest,
errors: {
401: `Unauthorized`,
403: `Forbidden`,
404: `Not Found`,
},
});
}
/**
* listPostByPage
* @param courseFavourQueryRequest courseFavourQueryRequest
* @returns BaseResponse_Page_CourseFavourDetailVO_ OK
* @returns any Created
* @throws ApiError
*/
public static listPostByPageUsingPost(
courseFavourQueryRequest: CourseFavourQueryRequest,
): CancelablePromise<BaseResponse_Page_CourseFavourDetailVO_ | any> {
return __request(OpenAPI, {
method: 'POST',
url: '/course_favour/list/page',
body: courseFavourQueryRequest,
errors: {
401: `Unauthorized`,
403: `Forbidden`,
404: `Not Found`,
},
});
}
}

@ -0,0 +1,76 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
/* eslint-disable */
import type { BaseResponse_boolean_ } from '../models/BaseResponse_boolean_';
import type { BaseResponse_long_ } from '../models/BaseResponse_long_';
import type { CourseThumbAddRequest } from '../models/CourseThumbAddRequest';
import type { CourseThumbAllRequest } from '../models/CourseThumbAllRequest';
import type { CancelablePromise } from '../core/CancelablePromise';
import { OpenAPI } from '../core/OpenAPI';
import { request as __request } from '../core/request';
export class SeCourseThumbControllerService {
/**
* doThumb
* @param courseThumbAddRequest courseThumbAddRequest
* @returns BaseResponse_boolean_ OK
* @returns any Created
* @throws ApiError
*/
public static doThumbUsingPost(
courseThumbAddRequest: CourseThumbAddRequest,
): CancelablePromise<BaseResponse_boolean_ | any> {
return __request(OpenAPI, {
method: 'POST',
url: '/course_thumb/',
body: courseThumbAddRequest,
errors: {
401: `Unauthorized`,
403: `Forbidden`,
404: `Not Found`,
},
});
}
/**
* thumbCount
* @param courseThumbAddRequest courseThumbAddRequest
* @returns BaseResponse_long_ OK
* @returns any Created
* @throws ApiError
*/
public static thumbCountUsingPost(
courseThumbAddRequest: CourseThumbAddRequest,
): CancelablePromise<BaseResponse_long_ | any> {
return __request(OpenAPI, {
method: 'POST',
url: '/course_thumb/count',
body: courseThumbAddRequest,
errors: {
401: `Unauthorized`,
403: `Forbidden`,
404: `Not Found`,
},
});
}
/**
* courseCount
* @param courseThumbAllRequest courseThumbAllRequest
* @returns BaseResponse_long_ OK
* @returns any Created
* @throws ApiError
*/
public static courseCountUsingPost1(
courseThumbAllRequest: CourseThumbAllRequest,
): CancelablePromise<BaseResponse_long_ | any> {
return __request(OpenAPI, {
method: 'POST',
url: '/course_thumb/countAll',
body: courseThumbAllRequest,
errors: {
401: `Unauthorized`,
403: `Forbidden`,
404: `Not Found`,
},
});
}
}

@ -0,0 +1,32 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
/* eslint-disable */
import type { BaseResponse_boolean_ } from '../models/BaseResponse_boolean_';
import type { KnowFavourAddRequest } from '../models/KnowFavourAddRequest';
import type { CancelablePromise } from '../core/CancelablePromise';
import { OpenAPI } from '../core/OpenAPI';
import { request as __request } from '../core/request';
export class SeKnowFavourControllerService {
/**
* doFavour
* @param knowFavourAddRequest knowFavourAddRequest
* @returns BaseResponse_boolean_ OK
* @returns any Created
* @throws ApiError
*/
public static doFavourUsingPost1(
knowFavourAddRequest: KnowFavourAddRequest,
): CancelablePromise<BaseResponse_boolean_ | any> {
return __request(OpenAPI, {
method: 'POST',
url: '/know_favour/add',
body: knowFavourAddRequest,
errors: {
401: `Unauthorized`,
403: `Forbidden`,
404: `Not Found`,
},
});
}
}

@ -0,0 +1,32 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
/* eslint-disable */
import type { BaseResponse_boolean_ } from '../models/BaseResponse_boolean_';
import type { KnowThumbAddRequest } from '../models/KnowThumbAddRequest';
import type { CancelablePromise } from '../core/CancelablePromise';
import { OpenAPI } from '../core/OpenAPI';
import { request as __request } from '../core/request';
export class SeKnowThumbControllerService {
/**
* doThumb
* @param knowThumbAddRequest knowThumbAddRequest
* @returns BaseResponse_boolean_ OK
* @returns any Created
* @throws ApiError
*/
public static doThumbUsingPost1(
knowThumbAddRequest: KnowThumbAddRequest,
): CancelablePromise<BaseResponse_boolean_ | any> {
return __request(OpenAPI, {
method: 'POST',
url: '/know_thumb/add',
body: knowThumbAddRequest,
errors: {
401: `Unauthorized`,
403: `Forbidden`,
404: `Not Found`,
},
});
}
}

@ -0,0 +1,32 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
/* eslint-disable */
import type { BaseResponse_boolean_ } from '../models/BaseResponse_boolean_';
import type { ResourceFavourAddRequest } from '../models/ResourceFavourAddRequest';
import type { CancelablePromise } from '../core/CancelablePromise';
import { OpenAPI } from '../core/OpenAPI';
import { request as __request } from '../core/request';
export class SeResourceFavourControllerService {
/**
* doFavour
* @param resourceFavourAddRequest resourceFavourAddRequest
* @returns BaseResponse_boolean_ OK
* @returns any Created
* @throws ApiError
*/
public static doFavourUsingPost2(
resourceFavourAddRequest: ResourceFavourAddRequest,
): CancelablePromise<BaseResponse_boolean_ | any> {
return __request(OpenAPI, {
method: 'POST',
url: '/resource_favour/add',
body: resourceFavourAddRequest,
errors: {
401: `Unauthorized`,
403: `Forbidden`,
404: `Not Found`,
},
});
}
}

@ -0,0 +1,32 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
/* eslint-disable */
import type { BaseResponse_boolean_ } from '../models/BaseResponse_boolean_';
import type { ResourceThumbAddRequest } from '../models/ResourceThumbAddRequest';
import type { CancelablePromise } from '../core/CancelablePromise';
import { OpenAPI } from '../core/OpenAPI';
import { request as __request } from '../core/request';
export class SeResourceThumbControllerService {
/**
* doThumb
* @param resourceThumbAddRequest resourceThumbAddRequest
* @returns BaseResponse_boolean_ OK
* @returns any Created
* @throws ApiError
*/
public static doThumbUsingPost2(
resourceThumbAddRequest: ResourceThumbAddRequest,
): CancelablePromise<BaseResponse_boolean_ | any> {
return __request(OpenAPI, {
method: 'POST',
url: '/resource_thumb/add',
body: resourceThumbAddRequest,
errors: {
401: `Unauthorized`,
403: `Forbidden`,
404: `Not Found`,
},
});
}
}

@ -0,0 +1,204 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
/* eslint-disable */
import type { BaseResponse_CoursesDTO_ } from '../models/BaseResponse_CoursesDTO_';
import type { BaseResponse_PageDTO_CoursesVO_ } from '../models/BaseResponse_PageDTO_CoursesVO_';
import type { BaseResponse_string_ } from '../models/BaseResponse_string_';
import type { CourseObjectivesDTO } from '../models/CourseObjectivesDTO';
import type { CoursesDTO } from '../models/CoursesDTO';
import type { CancelablePromise } from '../core/CancelablePromise';
import { OpenAPI } from '../core/OpenAPI';
import { request as __request } from '../core/request';
export class Service {
/**
*
* @param courseObjectivesDto courseObjectivesDTO
* @returns BaseResponse_string_ OK
* @returns any Created
* @throws ApiError
*/
public static updateCourseObjectivesUsingPut(
courseObjectivesDto: CourseObjectivesDTO,
): CancelablePromise<BaseResponse_string_ | any> {
return __request(OpenAPI, {
method: 'PUT',
url: '/course_objectives',
body: courseObjectivesDto,
errors: {
401: `Unauthorized`,
403: `Forbidden`,
404: `Not Found`,
},
});
}
/**
* -
* @param courseObjectivesDto courseObjectivesDTO
* @returns BaseResponse_string_ OK
* @returns any Created
* @throws ApiError
*/
public static saveCourseObjectivesUsingPost(
courseObjectivesDto: CourseObjectivesDTO,
): CancelablePromise<BaseResponse_string_ | any> {
return __request(OpenAPI, {
method: 'POST',
url: '/course_objectives/addobjectives',
body: courseObjectivesDto,
errors: {
401: `Unauthorized`,
403: `Forbidden`,
404: `Not Found`,
},
});
}
/**
* -
* @param id id
* @returns BaseResponse_string_ OK
* @throws ApiError
*/
public static deleteCourseObjectivesByIdsUsingDelete(
id: string,
): CancelablePromise<BaseResponse_string_> {
return __request(OpenAPI, {
method: 'DELETE',
url: '/course_objectives/{id}',
path: {
'id': id,
},
errors: {
401: `Unauthorized`,
403: `Forbidden`,
},
});
}
/**
* id修改课程
* @param coursesDto coursesDTO
* @returns BaseResponse_string_ OK
* @returns any Created
* @throws ApiError
*/
public static editCourseUsingPut(
coursesDto: CoursesDTO,
): CancelablePromise<BaseResponse_string_ | any> {
return __request(OpenAPI, {
method: 'PUT',
url: '/coursesteacher',
body: coursesDto,
errors: {
401: `Unauthorized`,
403: `Forbidden`,
404: `Not Found`,
},
});
}
/**
* --
* @param coursesDto coursesDTO
* @param teacherId teacherId
* @returns BaseResponse_string_ OK
* @returns any Created
* @throws ApiError
*/
public static saveCourseUsingPost(
coursesDto: CoursesDTO,
teacherId: string,
): CancelablePromise<BaseResponse_string_ | any> {
return __request(OpenAPI, {
method: 'POST',
url: '/coursesteacher/addcourse',
query: {
'teacherId': teacherId,
},
body: coursesDto,
errors: {
401: `Unauthorized`,
403: `Forbidden`,
404: `Not Found`,
},
});
}
/**
*
* @param teacherId teacherId
* @param isAsc
* @param name
* @param pageNo
* @param pageSize
* @param sortBy
* @returns BaseResponse_PageDTO_CoursesVO_ OK
* @throws ApiError
*/
public static getCoursesUsingGet(
teacherId: string,
isAsc?: boolean,
name?: string,
pageNo?: number,
pageSize?: number,
sortBy?: string,
): CancelablePromise<BaseResponse_PageDTO_CoursesVO_> {
return __request(OpenAPI, {
method: 'GET',
url: '/coursesteacher/page',
query: {
'isAsc': isAsc,
'name': name,
'pageNo': pageNo,
'pageSize': pageSize,
'sortBy': sortBy,
'teacherId': teacherId,
},
errors: {
401: `Unauthorized`,
403: `Forbidden`,
404: `Not Found`,
},
});
}
/**
* ids批量删除课程
* @param ids ids
* @returns BaseResponse_string_ OK
* @throws ApiError
*/
public static deleteCoursesUsingDelete(
ids: string,
): CancelablePromise<BaseResponse_string_> {
return __request(OpenAPI, {
method: 'DELETE',
url: '/coursesteacher/{ids}',
path: {
'ids': ids,
},
errors: {
401: `Unauthorized`,
403: `Forbidden`,
},
});
}
/**
* id查询课程
* @param id id
* @returns BaseResponse_CoursesDTO_ OK
* @throws ApiError
*/
public static getByIdCourseUsingGet(
id: string,
): CancelablePromise<BaseResponse_CoursesDTO_> {
return __request(OpenAPI, {
method: 'GET',
url: '/coursesteacher/{id}',
path: {
'id': id,
},
errors: {
401: `Unauthorized`,
403: `Forbidden`,
404: `Not Found`,
},
});
}
}

@ -0,0 +1,15 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>教学一体化后师生后台</title>
</head>
<body>
<div id="app"></div>
<script type="module" src="/src/main.ts"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r134/three.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/vanta@latest/dist/vanta.globe.min.js"></script>
</body>
</html>

@ -22,7 +22,20 @@ function createUserList() {
desc: '系统管理员',
roles: ['系统管理员'],
buttons: ['cuser.detail', 'cuser.user'],
routes: ['Home', 'MyCourseStudy', 'CourseResources', 'Message','LearningProcess','CourseCollections','Courselikes','WebHome','CourseHome','LearningPathRecommendations','KnowledgePointLearning','CourseReports'], //学生权限
routes: [
'Home',
'MyCourseStudy',
'CourseResources',
'Message',
'LearningProcess',
'CourseCollections',
'Courselikes',
'WebHome',
'CourseHome',
'LearningPathRecommendations',
'KnowledgePointLearning',
'CourseReports',
], //学生权限
token: 'System Token',
},
]

@ -0,0 +1,69 @@
//用户信息数据
function createUserList() {
return [
{
userId: 1,
avatar:
'https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif',
username: 'admin',
password: '111111',
desc: '平台管理员',
roles: ['平台管理员'],
buttons: ['cuser.detail'],
routes: ['Home', 'Course', 'Student', 'Group', 'Message','BasicCourseInformation','CourseObjectives','CourseChapters','KnowledgePoints','CurriculumMap'], //老师权限
token: 'Admin Token',
},
{
userId: 2,
avatar:
'https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif',
username: 'student',
password: '111111',
desc: '系统管理员',
roles: ['系统管理员'],
buttons: ['cuser.detail', 'cuser.user'],
routes: ['Home', 'MyCourseStudy', 'CourseResources', 'Message','LearningProcess','CourseCollections','Courselikes','WebHome','CourseHome','LearningPathRecommendations','KnowledgePointLearning','CourseReports'], //学生权限
token: 'System Token',
},
]
}
export default [
// 用户登录接口
{
url: '/api/user/login', //请求地址
method: 'post', //请求方式
response: ({ body }) => {
//获取请求体携带过来的用户名与密码
const { username, password } = body
//调用获取用户信息函数,用于判断是否有此用户
const checkUser = createUserList().find(
(item) => item.username === username && item.password === password,
)
//没有用户返回失败信息
if (!checkUser) {
return { code: 201, data: { message: '账号或者密码不正确' } }
}
//如果有返回成功信息
const { token } = checkUser
return { code: 200, data: { token } }
},
},
// 获取用户信息
{
url: '/api/user/info',
method: 'get',
response: (request) => {
//获取请求头携带token
const token = request.headers.token
//查看用户信息是否包含有次token用户
const checkUser = createUserList().find((item) => item.token === token)
//没有返回失败的信息
if (!checkUser) {
return { code: 201, data: { message: '获取用户信息失败' } }
}
//如果有返回成功信息
return { code: 200, data: { checkUser } }
},
},
]

@ -21,11 +21,16 @@
"@element-plus/icons-vue": "^2.3.1",
"@vueuse/core": "^10.9.0",
"axios": "^1.6.8",
"echarts": "^5.5.0",
"echarts-liquidfill": "^3.1.0",
"element-plus": "^2.6.0",
"form-data": "^4.0.0",
"jquery": "^3.7.1",
"nprogress": "^0.2.0",
"pinia": "^2.1.7",
"three": "^0.163.0",
"vue": "^3.4.19",
"vue": "^3.4.27",
"vue-echarts": "^6.7.2",
"vue-router": "^4.3.0"
},
"devDependencies": {

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 548 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 183 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

@ -1,3 +1,26 @@
import request from '@/utils/request'
/**
*
* @param par
*/
export function aaaApi(par:any){
if(par)return request.get(`url${par}`)
else return request.get(`url`)
}
export const uploadFile = (data:any) => {
return request({
url:'/upload',
method:"POST",
data
})
}
/**
*
* @returns
@ -27,3 +50,4 @@ export function getOrogramObjectiveApi() {
setTimeout(() => resolve(data), 500 * Math.random())
})
}

@ -0,0 +1,10 @@
import request from '@/utils/request'
//获取浏览记录列表
export const getRecordListService = (params) =>
request.get('/learningrecords/getall', { params })
//删除浏览记录
export function DelRecordService(ids) {
return request.delete(
`h/learningrecords/delete?ids=${ids}`,
)
}

@ -0,0 +1,28 @@
import request from '@/utils/request'
export const getCourseListApi = () => {
return request.get('/coursesteacher/page?teacherId=2140110334')
}
export const editCourseApi = () => {
return request.put('/coursesTeacher')
}
export const addCourseApi = (data) => {
return request.post('/courseTeacher/addCourse', data)
}
export const fnName = (data) => {
return request({
url: 'xxxxx',
method: 'POST',
data
})
}
export const fnNameGet = (params) => {
return request({
url: 'xxxxx',
method: 'get',
params
})
}
// {id:1}
// http://127.0.0.1/getlist?id=1
// http://127.0.0.1/setuser 载荷 body

@ -0,0 +1,10 @@
import request from '@/utils/request'
//获取浏览记录列表
export const getRecordListService = (params) =>
request.get('http://localhost:8080/learningrecords/getall', { params })
//删除浏览记录
export function DelRecordService(ids) {
return request.delete(
`http://localhost:8080/learningrecords/delete?ids=${ids}`,
)
}

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1717496383924" class="icon" viewBox="0 0 1136 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="12748" xmlns:xlink="http://www.w3.org/1999/xlink" width="35.5" height="32"><path d="M674.032008 1024L0 874.193082V149.806918L674.032008 0z m-594.734125-213.377388L594.734125 925.141972V99.122354L79.297883 213.377388zM1136.602994 915.097574h-409.70573v-806.195148h409.70573z m-330.407847-79.297884h251.109964v-647.59938h-251.109964z" p-id="12749" fill="#1296db"></path><path d="M726.897264 287.322664h264.326278v39.648942h-264.326278zM726.897264 423.913268h264.326278v39.648942h-264.326278zM726.897264 560.43779h264.326278v39.648942h-264.326278zM726.897264 697.028394h264.326278v39.648942h-264.326278zM178.420237 320.363449h79.297884v383.273102H178.420237z" p-id="12750" fill="#1296db"></path><path d="M495.611771 571.473412H178.420237v-251.109963h317.191534z m-237.89365-79.297883h158.595766v-92.514197H257.718121z" p-id="12751" fill="#1296db"></path></svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 12 KiB

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1717149223148" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="11088" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M923.136 969.557333H193.024v-909.653333h521.386667l208.725333 207.701333z" fill="#7CCDFF" p-id="11089"></path><path d="M912.896 253.952l2.56 671.914667c0 15.530667-12.458667 27.989333-27.989333 27.989333H237.909333c-15.530667 0-27.989333-12.458667-27.989333-27.989333V96.938667c0-15.530667 12.458667-27.989333 27.989333-27.989334l493.397334-1.024-38.912-39.936H239.274667c-36.352 0-65.706667 29.354667-65.706667 65.706667v835.584c0 36.352 29.354667 65.706667 65.706667 65.706667h646.826666c36.352 0 65.706667-29.354667 65.706667-65.706667V293.888l-38.912-39.936z" fill="#4191FB" p-id="11090"></path><path d="M692.394667 222.72c0 39.424 31.914667 71.338667 71.338666 71.338667h188.245334L692.394667 27.989333v194.730667z" fill="#C7E2FF" p-id="11091"></path><path d="M557.568 482.304H158.72c-50.346667 0-91.136-40.789333-91.136-91.136v-60.245333c0-50.346667 40.789333-91.136 91.136-91.136h398.848c50.346667 0 91.136 40.789333 91.136 91.136v60.245333c0 50.346667-40.789333 91.136-91.136 91.136z" fill="#4191FB" p-id="11092"></path><path d="M135.168 287.573333h80.042667c17.408 0 30.549333 4.096 39.082666 12.458667 8.704 8.362667 12.970667 20.138667 12.970667 35.328 0 15.701333-4.778667 27.989333-14.165333 36.864-9.386667 8.874667-23.893333 13.312-43.349334 13.312h-26.282666v57.856H135.168v-155.818667z m48.298667 66.389334h11.776c9.216 0 15.872-1.536 19.626666-4.778667 3.754667-3.242667 5.632-7.338667 5.632-12.458667 0-4.949333-1.706667-9.045333-4.949333-12.458666s-9.386667-5.12-18.432-5.12h-13.653333v34.816zM292.181333 287.573333h80.042667c17.408 0 30.549333 4.096 39.082667 12.458667 8.704 8.362667 12.970667 20.138667 12.970666 35.328 0 15.701333-4.778667 27.989333-14.165333 36.864-9.386667 8.874667-23.893333 13.312-43.349333 13.312h-26.282667v57.856h-48.298667v-155.818667z m48.469334 66.389334h11.776c9.216 0 15.872-1.536 19.626666-4.778667 3.754667-3.242667 5.632-7.338667 5.632-12.458667 0-4.949333-1.706667-9.045333-4.949333-12.458666s-9.386667-5.12-18.432-5.12h-13.653333v34.816zM438.613333 287.573333h146.261334V325.973333H535.893333v117.248h-48.128V325.973333H438.613333v-38.4z" fill="#FFFFFF" p-id="11093"></path><path d="M548.522667 562.688c-87.210667 0-158.037333 70.656-158.037334 158.037333s70.656 158.037333 158.037334 158.037334c87.210667 0 158.037333-70.656 158.037333-158.037334h-158.037333v-158.037333z" fill="#4191FB" p-id="11094"></path><path d="M583.68 527.36v158.037333h158.037333c0-87.210667-70.826667-158.037333-158.037333-158.037333z" fill="#4191FB" p-id="11095"></path></svg>

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1717062811098" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3731" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M923.136 969.557333H193.024v-909.653333h521.386667l208.725333 207.701333z" fill="#7CCDFF" p-id="3732"></path><path d="M912.896 253.952l2.56 671.914667c0 15.530667-12.458667 27.989333-27.989333 27.989333H237.909333c-15.530667 0-27.989333-12.458667-27.989333-27.989333V96.938667c0-15.530667 12.458667-27.989333 27.989333-27.989334l493.397334-1.024-38.912-39.936H239.274667c-36.352 0-65.706667 29.354667-65.706667 65.706667v835.584c0 36.352 29.354667 65.706667 65.706667 65.706667h646.826666c36.352 0 65.706667-29.354667 65.706667-65.706667V293.888l-38.912-39.936z" fill="#4191FB" p-id="3733" data-spm-anchor-id="a313x.search_index.0.i3.2afa3a81EN0Hhm"></path><path d="M692.394667 222.72c0 39.424 31.914667 71.338667 71.338666 71.338667h188.245334L692.394667 27.989333v194.730667z" fill="#C7E2FF" p-id="3734"></path><path d="M557.568 482.304H158.72c-50.346667 0-91.136-40.789333-91.136-91.136v-60.245333c0-50.346667 40.789333-91.136 91.136-91.136h398.848c50.346667 0 91.136 40.789333 91.136 91.136v60.245333c0 50.346667-40.789333 91.136-91.136 91.136z" fill="#4191FB" p-id="3735" data-spm-anchor-id="a313x.search_index.0.i2.2afa3a81EN0Hhm" class="selected"></path><path d="M135.168 287.573333h80.042667c17.408 0 30.549333 4.096 39.082666 12.458667 8.704 8.362667 12.970667 20.138667 12.970667 35.328 0 15.701333-4.778667 27.989333-14.165333 36.864-9.386667 8.874667-23.893333 13.312-43.349334 13.312h-26.282666v57.856H135.168v-155.818667z m48.298667 66.389334h11.776c9.216 0 15.872-1.536 19.626666-4.778667 3.754667-3.242667 5.632-7.338667 5.632-12.458667 0-4.949333-1.706667-9.045333-4.949333-12.458666s-9.386667-5.12-18.432-5.12h-13.653333v34.816zM292.181333 287.573333h80.042667c17.408 0 30.549333 4.096 39.082667 12.458667 8.704 8.362667 12.970667 20.138667 12.970666 35.328 0 15.701333-4.778667 27.989333-14.165333 36.864-9.386667 8.874667-23.893333 13.312-43.349333 13.312h-26.282667v57.856h-48.298667v-155.818667z m48.469334 66.389334h11.776c9.216 0 15.872-1.536 19.626666-4.778667 3.754667-3.242667 5.632-7.338667 5.632-12.458667 0-4.949333-1.706667-9.045333-4.949333-12.458666s-9.386667-5.12-18.432-5.12h-13.653333v34.816zM438.613333 287.573333h146.261334V325.973333H535.893333v117.248h-48.128V325.973333H438.613333v-38.4z" fill="#FFFFFF" p-id="3736"></path><path d="M548.522667 562.688c-87.210667 0-158.037333 70.656-158.037334 158.037333s70.656 158.037333 158.037334 158.037334c87.210667 0 158.037333-70.656 158.037333-158.037334h-158.037333v-158.037333z" fill="#4191FB" p-id="3737"></path><path d="M583.68 527.36v158.037333h158.037333c0-87.210667-70.826667-158.037333-158.037333-158.037333z" fill="#4191FB" p-id="3738"></path></svg>

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1717062926867" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2329" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M896 928H128a32 32 0 0 1-32-32V128a32 32 0 0 1 32-32h768a32 32 0 0 1 32 32v768a32 32 0 0 1-32 32zM160 864h704V160H160z" fill="#4A8BFE" p-id="2330"></path><path d="M768 288H256a32 32 0 0 1 0-64h512a32 32 0 0 1 0 64z" fill="#4A8BFE" p-id="2331"></path><path d="M512 800a32 32 0 0 1-32-32V256a32 32 0 0 1 64 0v512a32 32 0 0 1-32 32z" fill="#4A8BFE" p-id="2332"></path></svg>

After

Width:  |  Height:  |  Size: 704 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1717572662842" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="28594" width="16" height="16" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M512 298.6496a85.3504 85.3504 0 1 0 0-170.6496 85.3504 85.3504 0 0 0 0 170.6496z" fill="#5A5A68" p-id="28595"></path><path d="M512 512m-85.3504 0a85.3504 85.3504 0 1 0 170.7008 0 85.3504 85.3504 0 1 0-170.7008 0Z" fill="#5A5A68" p-id="28596"></path><path d="M512 896a85.3504 85.3504 0 1 0 0-170.7008 85.3504 85.3504 0 0 0 0 170.7008z" fill="#5A5A68" p-id="28597"></path></svg>

After

Width:  |  Height:  |  Size: 708 B

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1716623502952" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="37364" xmlns:xlink="http://www.w3.org/1999/xlink" width="128" height="128"><path d="M761.1 465.5H289.7c-17.4 0-31.4-14.1-31.4-31.4s14.1-31.4 31.4-31.4h471.5c17.4 0 31.4 14.1 31.4 31.4s-14.1 31.4-31.5 31.4zM642.9 619.2H289.7c-17.4 0-31.4-14.1-31.4-31.4s14.1-31.4 31.4-31.4h353.2c17.4 0 31.4 14.1 31.4 31.4s-14.1 31.4-31.4 31.4zM524.9 786.8H289.7c-17.4 0-31.4-14.1-31.4-31.4s14.1-31.4 31.4-31.4h235.2c17.4 0 31.4 14.1 31.4 31.4s-14 31.4-31.4 31.4z" fill="#0052FF" p-id="37365"></path><path d="M702 194.8c0-97.8-79.3-99-177.1-99s-177.1 1.2-177.1 99v62.9H702v-62.9z" fill="#0052FF" p-id="37366"></path><path d="M860.2 159.3H729.7c-19.8-94.7-121.3-95-204.8-95-83.5 0-185.1 0.3-204.9 95H166c-28.9 0-52.4 23.5-52.4 52.4v695.5c0 28.9 23.5 52.4 52.4 52.4h694.1c28.9 0 52.4-23.5 52.4-52.4V211.7c0-28.9-23.4-52.4-52.3-52.4z m-481 35.5c0-59.2 31-67.6 145.7-67.6 114.6 0 145.7 8.4 145.7 67.6v31.4H379.2v-31.4z m470.5 701.9H176.6V222.2h139.8V289h417.1v-66.9h116.2v674.6z" fill="#0052FF" p-id="37367"></path></svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1716623525515" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="38462" xmlns:xlink="http://www.w3.org/1999/xlink" width="128" height="128"><path d="M191.41 804.42h666.84v53.47H191.41zM915.23 713h-781a27.93 27.93 0 0 1-27.9-27.9V181.19a27.93 27.93 0 0 1 27.9-27.9h781a27.93 27.93 0 0 1 27.9 27.9v503.93a27.93 27.93 0 0 1-27.9 27.88z m-755.4-53.47h729.84V206.76H159.83z" p-id="38463" fill="#0052FF"></path><path d="M438.86 532.76l-101.42-99.58 101.23-107.27 19.44 18.34-83.23 88.22 82.71 81.21-18.73 19.08zM610.66 532.39l-19.44-18.35 83.24-88.21-82.72-81.21 18.73-19.08 101.42 99.58-101.23 107.27zM485.71 533.518l51.957-208.854 25.94 6.453-51.958 208.854z" p-id="38464" fill="#0052FF"></path></svg>

After

Width:  |  Height:  |  Size: 882 B

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1716622925767" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="14391" xmlns:xlink="http://www.w3.org/1999/xlink" width="128" height="128"><path d="M208 246.4h732.8v630.4H208V246.4z" fill="#BADEFA" p-id="14392"></path><path d="M659.2 67.2C601.6 67.2 544 96 512 144c-32-44.8-89.6-76.8-147.2-76.8H105.6C64 67.2 32 102.4 32 144v675.2c0 41.6 32 73.6 73.6 73.6h265.6c35.2 35.2 89.6 64 140.8 64 51.2 0 102.4-28.8 137.6-64h268.8c41.6 0 73.6-32 73.6-73.6V144c0-41.6-32-76.8-73.6-76.8H659.2z m256 748.8c-6.4 6.4-25.6 6.4-25.6 6.4h-256c-9.6 0-19.2 6.4-28.8 12.8-22.4 28.8-54.4 41.6-89.6 41.6-35.2 0-67.2-16-89.6-41.6-6.4-6.4-19.2-12.8-28.8-12.8H134.4s-16 3.2-25.6-6.4c-9.6-9.6-9.6-28.8-9.6-28.8V176s3.2-19.2 9.6-25.6c6.4-6.4 25.6-9.6 25.6-9.6h227.2c60.8 0 112 51.2 112 112v316.8c0 19.2 19.2 38.4 38.4 38.4s38.4-19.2 38.4-38.4v-320c0-60.8 51.2-112 112-112h227.2s19.2 0 25.6 9.6c6.4 9.6 9.6 25.6 9.6 25.6v617.6s0 19.2-9.6 25.6z" fill="#2095F3" p-id="14393"></path></svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1717062723385" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2642" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M782.933333 938.666667H241.066667c-76.8 0-138.666667-61.866667-138.666667-138.666667v-576C102.4 147.2 164.266667 85.333333 241.066667 85.333333h541.866666c76.8 0 138.666667 61.866667 138.666667 138.666667v576c0 76.8-61.866667 138.666667-138.666667 138.666667zM241.066667 149.333333c-40.533333 0-74.666667 34.133333-74.666667 74.666667v576c0 40.533333 34.133333 74.666667 74.666667 74.666667h541.866666c40.533333 0 74.666667-34.133333 74.666667-74.666667v-576c0-40.533333-34.133333-74.666667-74.666667-74.666667H241.066667z" fill="#0000FF" p-id="2643"></path><path d="M716.8 362.666667H307.2c-17.066667 0-32-14.933333-32-32s14.933333-32 32-32h409.6c17.066667 0 32 14.933333 32 32s-14.933333 32-32 32zM631.466667 544H307.2c-17.066667 0-32-14.933333-32-32s14.933333-32 32-32h324.266667c17.066667 0 32 14.933333 32 32s-14.933333 32-32 32zM537.6 725.333333H307.2c-17.066667 0-32-14.933333-32-32s14.933333-32 32-32h230.4c17.066667 0 32 14.933333 32 32S554.666667 725.333333 537.6 725.333333z" fill="#0000FF" p-id="2644"></path></svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1717062860487" class="icon" viewBox="0 0 1241 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4769" xmlns:xlink="http://www.w3.org/1999/xlink" width="242.3828125" height="200"><path d="M193.84646453 62h872.72727276c60.00000029 0 109.09090898 49.09090869 109.09090899 109.09090898v681.81818204c0 60.00000029-49.09090869 109.09090898-109.09090899 109.09090898H193.84646453c-60.00000029 0-109.09090898-49.09090869-109.09090898-109.09090898V171.09090898c0-60.00000029 49.09090869-109.09090898 109.09090898-109.09090898z" fill="#2F77F1" p-id="4770"></path><path d="M84.75555555 225.63636348h1090.90909072v54.54545449H84.75555555v-54.5454545z m673.63636377 340.90909101c9.5454545 5.4545458 15.00000029 16.36363653 15.0000003 27.27272725s-5.4545458 21.81818145-15.0000003 27.27272724L589.30101004 726.09090928c-9.5454545 5.4545458-21.81818145 5.4545458-31.36363594-1e-8-9.5454545-5.4545458-16.36363653-16.36363653-15.00000029-27.27272724V490.18181855c0-10.90909073 5.4545458-21.81818145 15.00000029-27.27272724 9.5454545-5.4545458 21.81818145-5.4545458 31.36363594 0L758.39191932 566.54545449z" fill="#AFFCFE" p-id="4771"></path></svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1717496200351" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="7767" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="32"><path d="M865.67 927.64H158.02c-33.08 0-60-26.92-60-60V159.99c0-33.08 26.92-60 60-60h707.65c33.08 0 60 26.92 60 60v707.65c0 33.08-26.92 60-60 60zM158.02 159.99v707.65H865.71l-0.04-707.65H158.02z" p-id="7768" fill="#1296db"></path><path d="M730.33 353.22H293.36c-16.57 0-30-13.43-30-30s13.43-30 30-30h436.97c16.57 0 30 13.43 30 30s-13.43 30-30 30zM730.33 546.29H293.36c-16.57 0-30-13.43-30-30s13.43-30 30-30h436.97c16.57 0 30 13.43 30 30s-13.43 30-30 30zM730.33 739.35H293.36c-16.57 0-30-13.43-30-30s13.43-30 30-30h436.97c16.57 0 30 13.43 30 30s-13.43 30-30 30z" p-id="7769" fill="#1296db"></path></svg>

After

Width:  |  Height:  |  Size: 924 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1717150947553" class="icon" viewBox="0 0 1210 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="24415" xmlns:xlink="http://www.w3.org/1999/xlink" width="236.328125" height="200"><path d="M186.181818 0h837.818182a186.181818 186.181818 0 0 1 186.181818 186.181818v651.636364a186.181818 186.181818 0 0 1-186.181818 186.181818H186.181818a186.181818 186.181818 0 0 1-186.181818-186.181818V186.181818a186.181818 186.181818 0 0 1 186.181818-186.181818z m551.563637 234.589091l-218.903273 67.072c-26.624 7.68-47.895273 35.374545-47.895273 61.719273v230.632727s-15.825455-10.705455-51.2-5.585455C367.802182 595.781818 325.818182 635.438545 325.818182 677.236364c0 41.704727 41.984 67.304727 93.928727 59.904 51.991273-7.447273 89.879273-45.847273 89.879273-87.552V426.821818c0-18.432 22.295273-26.391273 22.295273-26.391273l193.489454-60.648727s21.504-7.168 21.504 12.567273v183.761454s-19.688727-11.264-55.016727-7.168c-51.991273 6.423273-93.928727 45.335273-93.928727 87.04 0 41.751273 41.984 68.096 93.928727 61.952 51.991273-6.376727 93.975273-45.288727 93.975273-87.04V268.660364c-0.279273-26.112-21.783273-41.472-48.128-34.071273z" fill="#409EFF" p-id="24416"></path></svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 548 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 183 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 466 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 637 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 596 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 119 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 126 KiB

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save