Merge branch 'develoop' of http://182.92.169.222:3000/dlsx/Teaching_integration_platform_admin_template into develoop
@ -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 |
@ -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 知识2、素质3、价值4 |
||||
*/ |
||||
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> |
@ -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 } } |
||||
}, |
||||
}, |
||||
] |
After Width: | Height: | Size: 548 KiB |
After Width: | Height: | Size: 183 KiB |
After Width: | Height: | Size: 1.0 MiB |
After Width: | Height: | Size: 28 KiB |
@ -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}`, |
||||
) |
||||
} |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 2.8 KiB |
After Width: | Height: | Size: 2.9 KiB |
After Width: | Height: | Size: 2.9 KiB |
After Width: | Height: | Size: 4.6 KiB |
After Width: | Height: | Size: 704 B |
After Width: | Height: | Size: 4.7 KiB |
After Width: | Height: | Size: 708 B |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 882 B |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 3.7 KiB |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 924 B |
After Width: | Height: | Size: 85 KiB |
After Width: | Height: | Size: 6.1 KiB |
After Width: | Height: | Size: 2.1 KiB |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 548 KiB |
After Width: | Height: | Size: 183 KiB |
After Width: | Height: | Size: 466 KiB |
After Width: | Height: | Size: 44 KiB |
After Width: | Height: | Size: 1.3 MiB |
After Width: | Height: | Size: 637 KiB |
After Width: | Height: | Size: 596 KiB |
After Width: | Height: | Size: 4.1 KiB |
After Width: | Height: | Size: 45 KiB |
After Width: | Height: | Size: 2.5 KiB |
After Width: | Height: | Size: 51 KiB |
After Width: | Height: | Size: 119 KiB |
After Width: | Height: | Size: 126 KiB |