lijiaqi 5 months ago
commit cc50542108
  1. 2
      .env.production
  2. 3
      .env_1.production
  3. 3
      .eslintignore
  4. 66
      .eslintrc copy.cjs
  5. 6
      .eslintrc.cjs
  6. 16
      .eslintrc_1.cjs
  7. 2
      .gitignore
  8. 1
      Teaching_integration_platform_admin_template
  9. BIN
      dist.zip
  10. 51
      generated/core/OpenAPI.ts
  11. 6
      generated/index.ts
  12. 11
      generated/models/BaseResponse_ObjectiveContents_.ts
  13. 2
      generated/models/CoursesDTO.ts
  14. 14
      generated/models/Know.ts
  15. 8
      generated/models/KnowQueryRequest.ts
  16. 13
      generated/models/KnowRequest.ts
  17. 14
      generated/models/KnowupdateRequest.ts
  18. 27
      generated/services/CourseResourceControllerService.ts
  19. 2
      generated/services/FavourInformationControllerService.ts
  20. 97
      generated/services/KnowControllerService.ts
  21. 8
      generated/services/LearningRecordsControllerService.ts
  22. 8
      generated/services/SeCourseFavourControllerService.ts
  23. 4
      generated/services/SeCourseThumbControllerService.ts
  24. 2
      generated/services/SeKnowFavourControllerService.ts
  25. 2
      generated/services/SeKnowThumbControllerService.ts
  26. 4
      generated/services/SeResourceFavourControllerService.ts
  27. 2
      generated/services/SeResourceThumbControllerService.ts
  28. 65
      generated/services/Service.ts
  29. 24
      generated/services/UmsAdminControllerService.ts
  30. 2
      package.json
  31. 531
      public/data.json
  32. 3486
      public/nodeList.json
  33. 43
      src/api/courseChaptersApi.ts
  34. 8
      src/api/record.js
  35. 16
      src/api/user/crouse.js
  36. 6
      src/api/user/index.ts
  37. 22
      src/api/user/user.js
  38. 4
      src/layout/index.vue
  39. 2
      src/layout/tabbar/setting/index.vue
  40. 6
      src/main.ts
  41. 2
      src/permission.ts
  42. 4
      src/router/index.ts
  43. 1
      src/store/modules/type/types.ts
  44. 53
      src/store/modules/user.ts
  45. 45
      src/views/MyCourseStudy/ContainerCla.vue
  46. 116
      src/views/MyCourseStudy/ContainerKno.vue
  47. 145
      src/views/MyCourseStudy/courseCollections.vue
  48. 18
      src/views/MyCourseStudy/learningProcess.vue
  49. 77
      src/views/course/CourseObjectives.vue
  50. 92
      src/views/course/CourseObjectives111.vue
  51. 4
      src/views/course/spritetext.js
  52. 97
      src/views/courseResources/componse/resourceAdd.vue
  53. 19
      src/views/courseResources/index.vue
  54. 16
      src/views/home/components/Class1.vue
  55. 13
      src/views/home/components/Class2.vue
  56. 30
      src/views/home/components/ConHeader.vue
  57. 4
      src/views/home/components/Echart/Echarts.vue
  58. 4
      src/views/home/components/Echarts.vue
  59. 161
      src/views/home/components/Info.vue
  60. 20
      src/views/home/components/Status.vue
  61. 2
      src/views/home/components/Student1.vue
  62. 2
      src/views/home/components/Student2.vue
  63. 4
      src/views/home/components/Welcome.vue
  64. 68
      src/views/home/index.vue
  65. 25
      src/views/login/index.vue
  66. 1141
      src/views/portal/LearningPathRecommendations.vue
  67. 87
      src/views/portal/components/KnowledgeGraph.vue
  68. 6
      src/views/portal/courseHomepage.vue
  69. 100
      src/views/portal/index.vue
  70. 245
      src/views/portal/knowledgePointLearning.vue
  71. 1
      tsconfig.json

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

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

@ -1,2 +1,3 @@
dist dist
node_modules node_modules
src/views/course/spritetext.js

@ -0,0 +1,66 @@
// @see https://eslint.bootcss.com/docs/rules/
module.exports = {
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,
},
},
/* 继承已有的规则 */
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', // 对模板中的自定义组件强制执行属性命名样式
},
}

@ -43,13 +43,13 @@ module.exports = {
// eslint(https://eslint.bootcss.com/docs/rules/) // eslint(https://eslint.bootcss.com/docs/rules/)
'no-var': 'error', // 要求使用 let 或 const 而不是 var 'no-var': 'error', // 要求使用 let 或 const 而不是 var
'no-multiple-empty-lines': ['warn', { max: 1 }], // 不允许多个空行 'no-multiple-empty-lines': ['warn', { max: 1 }], // 不允许多个空行
'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off', 'no-console': process.env.NODE_ENV === 'production' ? 'off' : 'off',
'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off', 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',
'no-unexpected-multiline': 'error', // 禁止空余的多行 'no-unexpected-multiline': 'off', // 禁止空余的多行
'no-useless-escape': 'off', // 禁止不必要的转义字符 'no-useless-escape': 'off', // 禁止不必要的转义字符
// typeScript (https://typescript-eslint.io/rules) // typeScript (https://typescript-eslint.io/rules)
'@typescript-eslint/no-unused-vars': 'error', // 禁止定义未使用的变量 '@typescript-eslint/no-unused-vars': 'off', // 禁止定义未使用的变量
'@typescript-eslint/prefer-ts-expect-error': 'off', // 禁止使用 @ts-ignore '@typescript-eslint/prefer-ts-expect-error': 'off', // 禁止使用 @ts-ignore
'@typescript-eslint/ban-ts-ignore': 'off', '@typescript-eslint/ban-ts-ignore': 'off',
'@typescript-eslint/no-explicit-any': 'off', // 禁止使用 any 类型 '@typescript-eslint/no-explicit-any': 'off', // 禁止使用 any 类型

@ -40,16 +40,16 @@ module.exports = {
*/ */
rules: { rules: {
// eslint(https://eslint.bootcss.com/docs/rules/) // eslint(https://eslint.bootcss.com/docs/rules/)
'no-var': 'error', // 要求使用 let 或 const 而不是 var 'no-var': 'off', // 要求使用 let 或 const 而不是 var
'no-multiple-empty-lines': ['warn', { max: 1 }], // 不允许多个空行 'no-multiple-empty-lines': ['off', { max: 1 }], // 不允许多个空行
'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off', 'no-console': process.env.NODE_ENV === 'production' ? 'off' : 'off',
'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off', 'no-debugger': process.env.NODE_ENV === 'production' ? 'off' : 'off',
'no-unexpected-multiline': 'error', // 禁止空余的多行 'no-unexpected-multiline': 'off', // 禁止空余的多行
'no-useless-escape': 'off', // 禁止不必要的转义字符 'no-useless-escape': 'off', // 禁止不必要的转义字符
// typeScript (https://typescript-eslint.io/rules) // typeScript (https://typescript-eslint.io/rules)
'@typescript-eslint/no-unused-vars': 'error', // 禁止定义未使用的变量 '@typescript-eslint/no-unused-vars': 'off', // 禁止定义未使用的变量
'@typescript-eslint/prefer-ts-expect-error': 'off', // 禁止使用 @ts-ignore '@typescript-eslint/prefer-ts-expect-off': 'off', // 禁止使用 @ts-ignore
'@typescript-eslint/ban-ts-ignore': 'off', '@typescript-eslint/ban-ts-ignore': 'off',
'@typescript-eslint/no-explicit-any': 'off', // 禁止使用 any 类型 '@typescript-eslint/no-explicit-any': 'off', // 禁止使用 any 类型
'@typescript-eslint/no-non-null-assertion': 'off', '@typescript-eslint/no-non-null-assertion': 'off',
@ -58,7 +58,7 @@ module.exports = {
// eslint-plugin-vue (https://eslint.vuejs.org/rules/) // eslint-plugin-vue (https://eslint.vuejs.org/rules/)
'vue/multi-word-component-names': 'off', // 要求组件名称始终为 “-” 链接的单词 'vue/multi-word-component-names': 'off', // 要求组件名称始终为 “-” 链接的单词
'vue/script-setup-uses-vars': 'error', // 防止<script setup>使用的变量<template>被标记为未使用 'vue/script-setup-uses-vars': 'off', // 防止<script setup>使用的变量<template>被标记为未使用
'vue/no-mutating-props': 'off', // 不允许组件 prop的改变 'vue/no-mutating-props': 'off', // 不允许组件 prop的改变
'vue/attribute-hyphenation': 'off', // 对模板中的自定义组件强制执行属性命名样式 'vue/attribute-hyphenation': 'off', // 对模板中的自定义组件强制执行属性命名样式
}, },

2
.gitignore vendored

@ -21,4 +21,4 @@ dist-ssr
*.ntvs* *.ntvs*
*.njsproj *.njsproj
*.sln *.sln
*.sw? *.sw?

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

Binary file not shown.

@ -2,34 +2,31 @@
/* istanbul ignore file */ /* istanbul ignore file */
/* tslint:disable */ /* tslint:disable */
/* eslint-disable */ /* eslint-disable */
import type { ApiRequestOptions } from './ApiRequestOptions' import type { ApiRequestOptions } from './ApiRequestOptions';
// 引入设置token的方法
import { GET_TKOEN } from '@/utils/token' type Resolver<T> = (options: ApiRequestOptions) => Promise<T>;
type Resolver<T> = (options: ApiRequestOptions) => Promise<T> type Headers = Record<string, string>;
type Headers = Record<string, string>
export type OpenAPIConfig = { export type OpenAPIConfig = {
BASE: string BASE: string;
VERSION: string VERSION: string;
WITH_CREDENTIALS: boolean WITH_CREDENTIALS: boolean;
CREDENTIALS: 'include' | 'omit' | 'same-origin' CREDENTIALS: 'include' | 'omit' | 'same-origin';
TOKEN?: string | Resolver<string> | undefined TOKEN?: string | Resolver<string> | undefined;
USERNAME?: string | Resolver<string> | undefined USERNAME?: string | Resolver<string> | undefined;
PASSWORD?: string | Resolver<string> | undefined PASSWORD?: string | Resolver<string> | undefined;
HEADERS?: Headers | Resolver<Headers> | undefined HEADERS?: Headers | Resolver<Headers> | undefined;
ENCODE_PATH?: ((path: string) => string) | undefined ENCODE_PATH?: ((path: string) => string) | undefined;
} };
export const OpenAPI: OpenAPIConfig = { export const OpenAPI: OpenAPIConfig = {
BASE: 'http://39.106.16.162:8080', BASE: 'http://39.106.16.162:8080',
VERSION: '1.0.0', VERSION: '1.0.0',
WITH_CREDENTIALS: false, WITH_CREDENTIALS: false,
CREDENTIALS: 'include', CREDENTIALS: 'include',
TOKEN: GET_TKOEN('TOKEN'), TOKEN: undefined,
USERNAME: undefined, USERNAME: undefined,
PASSWORD: undefined, PASSWORD: undefined,
HEADERS: { HEADERS: undefined,
Authorization: 'Bearer ' + GET_TKOEN('TOKEN'), ENCODE_PATH: undefined,
}, };
ENCODE_PATH: undefined,
}

@ -18,6 +18,7 @@ export type { BaseResponse_List_TeacherInfVO_ } from './models/BaseResponse_List
export type { BaseResponse_long_ } from './models/BaseResponse_long_'; export type { BaseResponse_long_ } from './models/BaseResponse_long_';
export type { BaseResponse_Map_string_object_ } from './models/BaseResponse_Map_string_object_'; export type { BaseResponse_Map_string_object_ } from './models/BaseResponse_Map_string_object_';
export type { BaseResponse_ObjectiveContentKnowVO_ } from './models/BaseResponse_ObjectiveContentKnowVO_'; export type { BaseResponse_ObjectiveContentKnowVO_ } from './models/BaseResponse_ObjectiveContentKnowVO_';
export type { BaseResponse_ObjectiveContents_ } from './models/BaseResponse_ObjectiveContents_';
export type { BaseResponse_Page_ } from './models/BaseResponse_Page_'; export type { BaseResponse_Page_ } from './models/BaseResponse_Page_';
export type { BaseResponse_Page_CourseFavourDetailVO_ } from './models/BaseResponse_Page_CourseFavourDetailVO_'; export type { BaseResponse_Page_CourseFavourDetailVO_ } from './models/BaseResponse_Page_CourseFavourDetailVO_';
export type { BaseResponse_Page_CourseResources_ } from './models/BaseResponse_Page_CourseResources_'; export type { BaseResponse_Page_CourseResources_ } from './models/BaseResponse_Page_CourseResources_';
@ -36,8 +37,12 @@ export type { CourseResources } from './models/CourseResources';
export type { CoursesDTO } from './models/CoursesDTO'; export type { CoursesDTO } from './models/CoursesDTO';
export type { CoursesVO } from './models/CoursesVO'; export type { CoursesVO } from './models/CoursesVO';
export type { CourseThumbAddRequest } from './models/CourseThumbAddRequest'; export type { CourseThumbAddRequest } from './models/CourseThumbAddRequest';
export type { Know } from './models/Know';
export type { KnowFavourAddRequest } from './models/KnowFavourAddRequest'; export type { KnowFavourAddRequest } from './models/KnowFavourAddRequest';
export type { KnowQueryRequest } from './models/KnowQueryRequest';
export type { KnowRequest } from './models/KnowRequest';
export type { KnowThumbAddRequest } from './models/KnowThumbAddRequest'; export type { KnowThumbAddRequest } from './models/KnowThumbAddRequest';
export type { KnowupdateRequest } from './models/KnowupdateRequest';
export type { LearningRecords } from './models/LearningRecords'; export type { LearningRecords } from './models/LearningRecords';
export type { ObjectiveContentKnowDTO } from './models/ObjectiveContentKnowDTO'; export type { ObjectiveContentKnowDTO } from './models/ObjectiveContentKnowDTO';
export type { ObjectiveContentKnowVO } from './models/ObjectiveContentKnowVO'; export type { ObjectiveContentKnowVO } from './models/ObjectiveContentKnowVO';
@ -61,6 +66,7 @@ export type { UpdateAdminPasswordParam } from './models/UpdateAdminPasswordParam
export { Service } from './services/Service'; export { Service } from './services/Service';
export { CourseResourceControllerService } from './services/CourseResourceControllerService'; export { CourseResourceControllerService } from './services/CourseResourceControllerService';
export { FavourInformationControllerService } from './services/FavourInformationControllerService'; export { FavourInformationControllerService } from './services/FavourInformationControllerService';
export { KnowControllerService } from './services/KnowControllerService';
export { LearningRecordsControllerService } from './services/LearningRecordsControllerService'; export { LearningRecordsControllerService } from './services/LearningRecordsControllerService';
export { ResourceControllerService } from './services/ResourceControllerService'; export { ResourceControllerService } from './services/ResourceControllerService';
export { SeCourseFavourControllerService } from './services/SeCourseFavourControllerService'; export { SeCourseFavourControllerService } from './services/SeCourseFavourControllerService';

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

@ -45,7 +45,7 @@ export type CoursesDTO = {
/** /**
* *
*/ */
img?: string; img: string;
/** /**
* *
*/ */

@ -0,0 +1,14 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
/* eslint-disable */
export type Know = {
content?: string;
hour?: number;
id?: number;
img?: string;
info?: string;
name?: string;
resourceid?: string;
};

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

@ -0,0 +1,13 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
/* eslint-disable */
export type KnowRequest = {
content?: string;
hour?: number;
img?: string;
info?: string;
name?: string;
resourceid?: string;
};

@ -0,0 +1,14 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
/* eslint-disable */
export type KnowupdateRequest = {
content?: string;
hour?: number;
id?: number;
img?: string;
info?: string;
name?: string;
resourceid?: string;
};

@ -5,6 +5,7 @@
import type { BaseResponse_List_CourseResources_ } from '../models/BaseResponse_List_CourseResources_'; import type { BaseResponse_List_CourseResources_ } from '../models/BaseResponse_List_CourseResources_';
import type { BaseResponse_Page_ } from '../models/BaseResponse_Page_'; import type { BaseResponse_Page_ } from '../models/BaseResponse_Page_';
import type { BaseResponse_string_ } from '../models/BaseResponse_string_'; import type { BaseResponse_string_ } from '../models/BaseResponse_string_';
import type { CourseResources } from '../models/CourseResources';
import type { CancelablePromise } from '../core/CancelablePromise'; import type { CancelablePromise } from '../core/CancelablePromise';
import { OpenAPI } from '../core/OpenAPI'; import { OpenAPI } from '../core/OpenAPI';
import { request as __request } from '../core/request'; import { request as __request } from '../core/request';
@ -17,7 +18,7 @@ export class CourseResourceControllerService {
public static allUsingGet1(): CancelablePromise<BaseResponse_List_CourseResources_> { public static allUsingGet1(): CancelablePromise<BaseResponse_List_CourseResources_> {
return __request(OpenAPI, { return __request(OpenAPI, {
method: 'GET', method: 'GET',
url: '/courses/all', url: '/api/courses/all',
errors: { errors: {
401: `Unauthorized`, 401: `Unauthorized`,
403: `Forbidden`, 403: `Forbidden`,
@ -36,7 +37,7 @@ export class CourseResourceControllerService {
): CancelablePromise<BaseResponse_string_> { ): CancelablePromise<BaseResponse_string_> {
return __request(OpenAPI, { return __request(OpenAPI, {
method: 'DELETE', method: 'DELETE',
url: '/courses/delete', url: '/api/courses/delete',
query: { query: {
'ids': ids, 'ids': ids,
}, },
@ -61,7 +62,7 @@ export class CourseResourceControllerService {
): CancelablePromise<BaseResponse_Page_> { ): CancelablePromise<BaseResponse_Page_> {
return __request(OpenAPI, { return __request(OpenAPI, {
method: 'GET', method: 'GET',
url: '/courses/getall', url: '/api/courses/getall',
query: { query: {
'pagenum': pagenum, 'pagenum': pagenum,
'pagesize': pagesize, 'pagesize': pagesize,
@ -74,4 +75,24 @@ export class CourseResourceControllerService {
}, },
}); });
} }
/**
* saveCourseResource
* @param courseResources courseResources
* @returns BaseResponse_string_ OK
* @throws ApiError
*/
public static saveCourseResourceUsingGet1(
courseResources: CourseResources,
): CancelablePromise<BaseResponse_string_> {
return __request(OpenAPI, {
method: 'GET',
url: '/api/courses/save',
body: courseResources,
errors: {
401: `Unauthorized`,
403: `Forbidden`,
404: `Not Found`,
},
});
}
} }

@ -28,7 +28,7 @@ export class FavourInformationControllerService {
): CancelablePromise<BaseResponse_Page_CourseResources_> { ): CancelablePromise<BaseResponse_Page_CourseResources_> {
return __request(OpenAPI, { return __request(OpenAPI, {
method: 'GET', method: 'GET',
url: '/Favour/get', url: '/api/Favour/get',
query: { query: {
'current': current, 'current': current,
'pageSize': pageSize, 'pageSize': pageSize,

@ -0,0 +1,97 @@
/* generated using openapi-typescript-codegen -- do not edit */
/* istanbul ignore file */
/* tslint:disable */
/* eslint-disable */
import type { Know } from '../models/Know';
import type { KnowQueryRequest } from '../models/KnowQueryRequest';
import type { KnowRequest } from '../models/KnowRequest';
import type { KnowupdateRequest } from '../models/KnowupdateRequest';
import type { CancelablePromise } from '../core/CancelablePromise';
import { OpenAPI } from '../core/OpenAPI';
import { request as __request } from '../core/request';
export class KnowControllerService {
/**
* add
* @param knowAddRequest knowAddRequest
* @returns boolean OK
* @returns any Created
* @throws ApiError
*/
public static addUsingPost1(
knowAddRequest: KnowRequest,
): CancelablePromise<boolean | any> {
return __request(OpenAPI, {
method: 'POST',
url: '/api/know/add',
body: knowAddRequest,
errors: {
401: `Unauthorized`,
403: `Forbidden`,
404: `Not Found`,
},
});
}
/**
* deleteKnow
* @param ids ids
* @returns number OK
* @returns any Created
* @throws ApiError
*/
public static deleteKnowUsingPost1(
ids: Array<number>,
): CancelablePromise<number | any> {
return __request(OpenAPI, {
method: 'POST',
url: '/api/know/delete',
body: ids,
errors: {
401: `Unauthorized`,
403: `Forbidden`,
404: `Not Found`,
},
});
}
/**
* query
* @param knowQueryRequest knowQueryRequest
* @returns Know OK
* @returns any Created
* @throws ApiError
*/
public static queryUsingPost1(
knowQueryRequest: KnowQueryRequest,
): CancelablePromise<Array<Know> | any> {
return __request(OpenAPI, {
method: 'POST',
url: '/api/know/query',
body: knowQueryRequest,
errors: {
401: `Unauthorized`,
403: `Forbidden`,
404: `Not Found`,
},
});
}
/**
* update
* @param knowAddRequest knowAddRequest
* @returns boolean OK
* @returns any Created
* @throws ApiError
*/
public static updateUsingPost1(
knowAddRequest: KnowupdateRequest,
): CancelablePromise<boolean | any> {
return __request(OpenAPI, {
method: 'POST',
url: '/api/know/update',
body: knowAddRequest,
errors: {
401: `Unauthorized`,
403: `Forbidden`,
404: `Not Found`,
},
});
}
}

@ -18,7 +18,7 @@ export class LearningRecordsControllerService {
public static allUsingGet3(): CancelablePromise<BaseResponse_List_LearningRecords_> { public static allUsingGet3(): CancelablePromise<BaseResponse_List_LearningRecords_> {
return __request(OpenAPI, { return __request(OpenAPI, {
method: 'GET', method: 'GET',
url: '/learningrecords/all', url: '/api/learningrecords/all',
errors: { errors: {
401: `Unauthorized`, 401: `Unauthorized`,
403: `Forbidden`, 403: `Forbidden`,
@ -37,7 +37,7 @@ export class LearningRecordsControllerService {
): CancelablePromise<BaseResponse_string_> { ): CancelablePromise<BaseResponse_string_> {
return __request(OpenAPI, { return __request(OpenAPI, {
method: 'DELETE', method: 'DELETE',
url: '/learningrecords/delete', url: '/api/learningrecords/delete',
query: { query: {
'ids': ids, 'ids': ids,
}, },
@ -62,7 +62,7 @@ export class LearningRecordsControllerService {
): CancelablePromise<BaseResponse_Page_> { ): CancelablePromise<BaseResponse_Page_> {
return __request(OpenAPI, { return __request(OpenAPI, {
method: 'GET', method: 'GET',
url: '/learningrecords/getall', url: '/api/learningrecords/getall',
query: { query: {
'pagenum': pagenum, 'pagenum': pagenum,
'pagesize': pagesize, 'pagesize': pagesize,
@ -87,7 +87,7 @@ export class LearningRecordsControllerService {
): CancelablePromise<BaseResponse_string_ | any> { ): CancelablePromise<BaseResponse_string_ | any> {
return __request(OpenAPI, { return __request(OpenAPI, {
method: 'POST', method: 'POST',
url: '/learningrecords/saverecords', url: '/api/learningrecords/saverecords',
body: learningRecords, body: learningRecords,
errors: { errors: {
401: `Unauthorized`, 401: `Unauthorized`,

@ -24,7 +24,7 @@ export class SeCourseFavourControllerService {
): CancelablePromise<BaseResponse_boolean_ | any> { ): CancelablePromise<BaseResponse_boolean_ | any> {
return __request(OpenAPI, { return __request(OpenAPI, {
method: 'POST', method: 'POST',
url: '/course_favour/add', url: '/api/course_favour/add',
body: courseFavourAddRequest, body: courseFavourAddRequest,
errors: { errors: {
401: `Unauthorized`, 401: `Unauthorized`,
@ -45,7 +45,7 @@ export class SeCourseFavourControllerService {
): CancelablePromise<BaseResponse_long_ | any> { ): CancelablePromise<BaseResponse_long_ | any> {
return __request(OpenAPI, { return __request(OpenAPI, {
method: 'POST', method: 'POST',
url: '/course_favour/count', url: '/api/course_favour/count',
body: courseFavourAddRequest, body: courseFavourAddRequest,
errors: { errors: {
401: `Unauthorized`, 401: `Unauthorized`,
@ -66,7 +66,7 @@ export class SeCourseFavourControllerService {
): CancelablePromise<BaseResponse_long_ | any> { ): CancelablePromise<BaseResponse_long_ | any> {
return __request(OpenAPI, { return __request(OpenAPI, {
method: 'POST', method: 'POST',
url: '/course_favour/countAll', url: '/api/course_favour/countAll',
body: courseFavourAllRequest, body: courseFavourAllRequest,
errors: { errors: {
401: `Unauthorized`, 401: `Unauthorized`,
@ -87,7 +87,7 @@ export class SeCourseFavourControllerService {
): CancelablePromise<BaseResponse_Page_CourseFavourDetailVO_ | any> { ): CancelablePromise<BaseResponse_Page_CourseFavourDetailVO_ | any> {
return __request(OpenAPI, { return __request(OpenAPI, {
method: 'POST', method: 'POST',
url: '/course_favour/list/page', url: '/api/course_favour/list/page',
body: courseFavourQueryRequest, body: courseFavourQueryRequest,
errors: { errors: {
401: `Unauthorized`, 401: `Unauthorized`,

@ -21,7 +21,7 @@ export class SeCourseThumbControllerService {
): CancelablePromise<BaseResponse_boolean_ | any> { ): CancelablePromise<BaseResponse_boolean_ | any> {
return __request(OpenAPI, { return __request(OpenAPI, {
method: 'POST', method: 'POST',
url: '/course_thumb/', url: '/api/course_thumb/',
body: courseThumbAddRequest, body: courseThumbAddRequest,
errors: { errors: {
401: `Unauthorized`, 401: `Unauthorized`,
@ -42,7 +42,7 @@ export class SeCourseThumbControllerService {
): CancelablePromise<BaseResponse_long_ | any> { ): CancelablePromise<BaseResponse_long_ | any> {
return __request(OpenAPI, { return __request(OpenAPI, {
method: 'POST', method: 'POST',
url: '/course_thumb/count', url: '/api/course_thumb/count',
body: courseThumbAddRequest, body: courseThumbAddRequest,
errors: { errors: {
401: `Unauthorized`, 401: `Unauthorized`,

@ -20,7 +20,7 @@ export class SeKnowFavourControllerService {
): CancelablePromise<BaseResponse_boolean_ | any> { ): CancelablePromise<BaseResponse_boolean_ | any> {
return __request(OpenAPI, { return __request(OpenAPI, {
method: 'POST', method: 'POST',
url: '/know_favour/add', url: '/api/know_favour/add',
body: knowFavourAddRequest, body: knowFavourAddRequest,
errors: { errors: {
401: `Unauthorized`, 401: `Unauthorized`,

@ -20,7 +20,7 @@ export class SeKnowThumbControllerService {
): CancelablePromise<BaseResponse_boolean_ | any> { ): CancelablePromise<BaseResponse_boolean_ | any> {
return __request(OpenAPI, { return __request(OpenAPI, {
method: 'POST', method: 'POST',
url: '/know_thumb/add', url: '/api/know_thumb/add',
body: knowThumbAddRequest, body: knowThumbAddRequest,
errors: { errors: {
401: `Unauthorized`, 401: `Unauthorized`,

@ -22,7 +22,7 @@ export class SeResourceFavourControllerService {
): CancelablePromise<BaseResponse_boolean_ | any> { ): CancelablePromise<BaseResponse_boolean_ | any> {
return __request(OpenAPI, { return __request(OpenAPI, {
method: 'POST', method: 'POST',
url: '/resource_favour/add', url: '/api/resource_favour/add',
body: resourceFavourAddRequest, body: resourceFavourAddRequest,
errors: { errors: {
401: `Unauthorized`, 401: `Unauthorized`,
@ -43,7 +43,7 @@ export class SeResourceFavourControllerService {
): CancelablePromise<BaseResponse_Page_CourseResources_ | any> { ): CancelablePromise<BaseResponse_Page_CourseResources_ | any> {
return __request(OpenAPI, { return __request(OpenAPI, {
method: 'POST', method: 'POST',
url: '/resource_favour/list/page', url: '/api/resource_favour/list/page',
body: resourceFavourQueryRequest, body: resourceFavourQueryRequest,
errors: { errors: {
401: `Unauthorized`, 401: `Unauthorized`,

@ -20,7 +20,7 @@ export class SeResourceThumbControllerService {
): CancelablePromise<BaseResponse_boolean_ | any> { ): CancelablePromise<BaseResponse_boolean_ | any> {
return __request(OpenAPI, { return __request(OpenAPI, {
method: 'POST', method: 'POST',
url: '/resource_thumb/add', url: '/api/resource_thumb/add',
body: resourceThumbAddRequest, body: resourceThumbAddRequest,
errors: { errors: {
401: `Unauthorized`, 401: `Unauthorized`,

@ -8,6 +8,7 @@ import type { BaseResponse_List_CourseObjectivesTreeVO_ } from '../models/BaseRe
import type { BaseResponse_List_ObjectivesType_ } from '../models/BaseResponse_List_ObjectivesType_'; import type { BaseResponse_List_ObjectivesType_ } from '../models/BaseResponse_List_ObjectivesType_';
import type { BaseResponse_Map_string_object_ } from '../models/BaseResponse_Map_string_object_'; import type { BaseResponse_Map_string_object_ } from '../models/BaseResponse_Map_string_object_';
import type { BaseResponse_ObjectiveContentKnowVO_ } from '../models/BaseResponse_ObjectiveContentKnowVO_'; import type { BaseResponse_ObjectiveContentKnowVO_ } from '../models/BaseResponse_ObjectiveContentKnowVO_';
import type { BaseResponse_ObjectiveContents_ } from '../models/BaseResponse_ObjectiveContents_';
import type { BaseResponse_PageDTO_CoursesVO_ } from '../models/BaseResponse_PageDTO_CoursesVO_'; import type { BaseResponse_PageDTO_CoursesVO_ } from '../models/BaseResponse_PageDTO_CoursesVO_';
import type { BaseResponse_string_ } from '../models/BaseResponse_string_'; import type { BaseResponse_string_ } from '../models/BaseResponse_string_';
import type { CourseObjectivesDTO } from '../models/CourseObjectivesDTO'; import type { CourseObjectivesDTO } from '../models/CourseObjectivesDTO';
@ -32,7 +33,7 @@ export class Service {
): CancelablePromise<BaseResponse_string_ | any> { ): CancelablePromise<BaseResponse_string_ | any> {
return __request(OpenAPI, { return __request(OpenAPI, {
method: 'PUT', method: 'PUT',
url: '/course_objectives', url: '/api/course_objectives',
body: courseObjectivesDto, body: courseObjectivesDto,
errors: { errors: {
401: `Unauthorized`, 401: `Unauthorized`,
@ -53,7 +54,7 @@ export class Service {
): CancelablePromise<BaseResponse_string_ | any> { ): CancelablePromise<BaseResponse_string_ | any> {
return __request(OpenAPI, { return __request(OpenAPI, {
method: 'POST', method: 'POST',
url: '/course_objectives/addobjectives', url: '/api/course_objectives/addobjectives',
body: courseObjectivesDto, body: courseObjectivesDto,
errors: { errors: {
401: `Unauthorized`, 401: `Unauthorized`,
@ -73,7 +74,7 @@ export class Service {
): CancelablePromise<BaseResponse_List_CourseObjectivesTreeVO_> { ): CancelablePromise<BaseResponse_List_CourseObjectivesTreeVO_> {
return __request(OpenAPI, { return __request(OpenAPI, {
method: 'GET', method: 'GET',
url: '/course_objectives/list/{id}', url: '/api/course_objectives/list/{id}',
path: { path: {
'id': id, 'id': id,
}, },
@ -95,7 +96,7 @@ export class Service {
): CancelablePromise<BaseResponse_string_> { ): CancelablePromise<BaseResponse_string_> {
return __request(OpenAPI, { return __request(OpenAPI, {
method: 'DELETE', method: 'DELETE',
url: '/course_objectives/{id}', url: '/api/course_objectives/{id}',
path: { path: {
'id': id, 'id': id,
}, },
@ -117,7 +118,7 @@ export class Service {
): CancelablePromise<BaseResponse_string_ | any> { ): CancelablePromise<BaseResponse_string_ | any> {
return __request(OpenAPI, { return __request(OpenAPI, {
method: 'PUT', method: 'PUT',
url: '/coursesteacher', url: '/api/coursesteacher',
body: coursesDto, body: coursesDto,
errors: { errors: {
401: `Unauthorized`, 401: `Unauthorized`,
@ -138,7 +139,7 @@ export class Service {
): CancelablePromise<BaseResponse_string_ | any> { ): CancelablePromise<BaseResponse_string_ | any> {
return __request(OpenAPI, { return __request(OpenAPI, {
method: 'POST', method: 'POST',
url: '/coursesteacher/addcourse', url: '/api/coursesteacher/addcourse',
body: coursesDto, body: coursesDto,
errors: { errors: {
401: `Unauthorized`, 401: `Unauthorized`,
@ -155,7 +156,7 @@ export class Service {
public static testUsingGet1(): CancelablePromise<any> { public static testUsingGet1(): CancelablePromise<any> {
return __request(OpenAPI, { return __request(OpenAPI, {
method: 'GET', method: 'GET',
url: '/coursesteacher/down', url: '/api/coursesteacher/down',
errors: { errors: {
401: `Unauthorized`, 401: `Unauthorized`,
403: `Forbidden`, 403: `Forbidden`,
@ -176,7 +177,7 @@ export class Service {
): CancelablePromise<BaseResponse_Map_string_object_> { ): CancelablePromise<BaseResponse_Map_string_object_> {
return __request(OpenAPI, { return __request(OpenAPI, {
method: 'GET', method: 'GET',
url: '/coursesteacher/index', url: '/api/coursesteacher/index',
query: { query: {
'page': page, 'page': page,
'pageSize': pageSize, 'pageSize': pageSize,
@ -217,7 +218,7 @@ export class Service {
): CancelablePromise<BaseResponse_PageDTO_CoursesVO_> { ): CancelablePromise<BaseResponse_PageDTO_CoursesVO_> {
return __request(OpenAPI, { return __request(OpenAPI, {
method: 'GET', method: 'GET',
url: '/coursesteacher/page', url: '/api/coursesteacher/page',
query: { query: {
'assessmenttype': assessmenttype, 'assessmenttype': assessmenttype,
'category': category, 'category': category,
@ -248,7 +249,7 @@ export class Service {
): CancelablePromise<BaseResponse_CoursesDTO_> { ): CancelablePromise<BaseResponse_CoursesDTO_> {
return __request(OpenAPI, { return __request(OpenAPI, {
method: 'GET', method: 'GET',
url: '/coursesteacher/{id}', url: '/api/coursesteacher/{id}',
path: { path: {
'id': id, 'id': id,
}, },
@ -270,7 +271,7 @@ export class Service {
): CancelablePromise<BaseResponse> { ): CancelablePromise<BaseResponse> {
return __request(OpenAPI, { return __request(OpenAPI, {
method: 'DELETE', method: 'DELETE',
url: '/coursesteacher/{id}', url: '/api/coursesteacher/{id}',
path: { path: {
'id': id, 'id': id,
}, },
@ -292,7 +293,7 @@ export class Service {
): CancelablePromise<BaseResponse_string_ | any> { ): CancelablePromise<BaseResponse_string_ | any> {
return __request(OpenAPI, { return __request(OpenAPI, {
method: 'POST', method: 'POST',
url: '/objective_content_know/addknows', url: '/api/objective_content_know/addknows',
body: objectiveContentKnowDto, body: objectiveContentKnowDto,
errors: { errors: {
401: `Unauthorized`, 401: `Unauthorized`,
@ -312,7 +313,7 @@ export class Service {
): CancelablePromise<BaseResponse_ObjectiveContentKnowVO_> { ): CancelablePromise<BaseResponse_ObjectiveContentKnowVO_> {
return __request(OpenAPI, { return __request(OpenAPI, {
method: 'GET', method: 'GET',
url: '/objective_content_know/{objectiveId}', url: '/api/objective_content_know/{objectiveId}',
path: { path: {
'objectiveId': objectiveId, 'objectiveId': objectiveId,
}, },
@ -335,7 +336,7 @@ export class Service {
): CancelablePromise<BaseResponse_string_ | any> { ): CancelablePromise<BaseResponse_string_ | any> {
return __request(OpenAPI, { return __request(OpenAPI, {
method: 'POST', method: 'POST',
url: '/objective_contents/addcontent', url: '/api/objective_contents/addcontent',
body: objectiveContents, body: objectiveContents,
errors: { errors: {
401: `Unauthorized`, 401: `Unauthorized`,
@ -356,7 +357,7 @@ export class Service {
): CancelablePromise<BaseResponse_string_ | any> { ): CancelablePromise<BaseResponse_string_ | any> {
return __request(OpenAPI, { return __request(OpenAPI, {
method: 'PUT', method: 'PUT',
url: '/objective_contents/update', url: '/api/objective_contents/update',
body: objectiveContents, body: objectiveContents,
errors: { errors: {
401: `Unauthorized`, 401: `Unauthorized`,
@ -365,6 +366,28 @@ export class Service {
}, },
}); });
} }
/**
* id查询目标内容
* @param id id
* @returns BaseResponse_ObjectiveContents_ OK
* @throws ApiError
*/
public static updateContentUsingGet1(
id: string,
): CancelablePromise<BaseResponse_ObjectiveContents_> {
return __request(OpenAPI, {
method: 'GET',
url: '/api/objective_contents/{id}',
path: {
'id': id,
},
errors: {
401: `Unauthorized`,
403: `Forbidden`,
404: `Not Found`,
},
});
}
/** /**
* *
* @param id id * @param id id
@ -376,7 +399,7 @@ export class Service {
): CancelablePromise<BaseResponse_string_> { ): CancelablePromise<BaseResponse_string_> {
return __request(OpenAPI, { return __request(OpenAPI, {
method: 'DELETE', method: 'DELETE',
url: '/objective_contents/{id}', url: '/api/objective_contents/{id}',
path: { path: {
'id': id, 'id': id,
}, },
@ -398,7 +421,7 @@ export class Service {
): CancelablePromise<BaseResponse_string_ | any> { ): CancelablePromise<BaseResponse_string_ | any> {
return __request(OpenAPI, { return __request(OpenAPI, {
method: 'PUT', method: 'PUT',
url: '/objectives_type', url: '/api/objectives_type',
body: objectivesType, body: objectivesType,
errors: { errors: {
401: `Unauthorized`, 401: `Unauthorized`,
@ -419,7 +442,7 @@ export class Service {
): CancelablePromise<BaseResponse_string_ | any> { ): CancelablePromise<BaseResponse_string_ | any> {
return __request(OpenAPI, { return __request(OpenAPI, {
method: 'POST', method: 'POST',
url: '/objectives_type/addobjectives', url: '/api/objectives_type/addobjectives',
body: objectivesType, body: objectivesType,
errors: { errors: {
401: `Unauthorized`, 401: `Unauthorized`,
@ -439,7 +462,7 @@ export class Service {
): CancelablePromise<BaseResponse_string_> { ): CancelablePromise<BaseResponse_string_> {
return __request(OpenAPI, { return __request(OpenAPI, {
method: 'DELETE', method: 'DELETE',
url: '/objectives_type/deleteobjectives/{id}', url: '/api/objectives_type/deleteobjectives/{id}',
path: { path: {
'id': id, 'id': id,
}, },
@ -457,7 +480,7 @@ export class Service {
public static objectivesListUsingGet1(): CancelablePromise<BaseResponse_List_ObjectivesType_> { public static objectivesListUsingGet1(): CancelablePromise<BaseResponse_List_ObjectivesType_> {
return __request(OpenAPI, { return __request(OpenAPI, {
method: 'GET', method: 'GET',
url: '/objectives_type/list', url: '/api/objectives_type/list',
errors: { errors: {
401: `Unauthorized`, 401: `Unauthorized`,
403: `Forbidden`, 403: `Forbidden`,
@ -477,7 +500,7 @@ export class Service {
): CancelablePromise<BaseResponse_string_ | any> { ): CancelablePromise<BaseResponse_string_ | any> {
return __request(OpenAPI, { return __request(OpenAPI, {
method: 'POST', method: 'POST',
url: '/student_courses/addcoursess', url: '/api/student_courses/addcoursess',
body: studentCoursesDto, body: studentCoursesDto,
errors: { errors: {
401: `Unauthorized`, 401: `Unauthorized`,

@ -26,7 +26,7 @@ export class UmsAdminControllerService {
): CancelablePromise<CommonResult_string_ | any> { ): CancelablePromise<CommonResult_string_ | any> {
return __request(OpenAPI, { return __request(OpenAPI, {
method: 'POST', method: 'POST',
url: '/user/code', url: '/api/user/code',
query: { query: {
'phone': phone, 'phone': phone,
}, },
@ -45,7 +45,7 @@ export class UmsAdminControllerService {
public static getTeacherInfListUsingGet1(): CancelablePromise<BaseResponse_List_TeacherInfVO_> { public static getTeacherInfListUsingGet1(): CancelablePromise<BaseResponse_List_TeacherInfVO_> {
return __request(OpenAPI, { return __request(OpenAPI, {
method: 'GET', method: 'GET',
url: '/user/get_teacherinf_list', url: '/api/user/get_teacherinf_list',
errors: { errors: {
401: `Unauthorized`, 401: `Unauthorized`,
403: `Forbidden`, 403: `Forbidden`,
@ -64,7 +64,7 @@ export class UmsAdminControllerService {
): CancelablePromise<CommonResult> { ): CancelablePromise<CommonResult> {
return __request(OpenAPI, { return __request(OpenAPI, {
method: 'GET', method: 'GET',
url: '/user/info', url: '/api/user/info',
query: { query: {
'name': name, 'name': name,
}, },
@ -87,7 +87,7 @@ export class UmsAdminControllerService {
): CancelablePromise<CommonResult | any> { ): CancelablePromise<CommonResult | any> {
return __request(OpenAPI, { return __request(OpenAPI, {
method: 'POST', method: 'POST',
url: '/user/login', url: '/api/user/login',
body: umsAdmin, body: umsAdmin,
errors: { errors: {
401: `Unauthorized`, 401: `Unauthorized`,
@ -108,7 +108,7 @@ export class UmsAdminControllerService {
): CancelablePromise<CommonResult | any> { ): CancelablePromise<CommonResult | any> {
return __request(OpenAPI, { return __request(OpenAPI, {
method: 'POST', method: 'POST',
url: '/user/personal/info', url: '/api/user/personal/info',
query: { query: {
'id': id, 'id': id,
}, },
@ -131,7 +131,7 @@ export class UmsAdminControllerService {
): CancelablePromise<CommonResult | any> { ): CancelablePromise<CommonResult | any> {
return __request(OpenAPI, { return __request(OpenAPI, {
method: 'POST', method: 'POST',
url: '/user/phone/login', url: '/api/user/phone/login',
query: { query: {
'phone': phone, 'phone': phone,
}, },
@ -154,7 +154,7 @@ export class UmsAdminControllerService {
): CancelablePromise<CommonResult_UmsAdmin_ | any> { ): CancelablePromise<CommonResult_UmsAdmin_ | any> {
return __request(OpenAPI, { return __request(OpenAPI, {
method: 'POST', method: 'POST',
url: '/user/phone/register', url: '/api/user/phone/register',
body: umsAdminParam, body: umsAdminParam,
errors: { errors: {
401: `Unauthorized`, 401: `Unauthorized`,
@ -171,7 +171,7 @@ export class UmsAdminControllerService {
public static refreshTokenUsingGet1(): CancelablePromise<CommonResult> { public static refreshTokenUsingGet1(): CancelablePromise<CommonResult> {
return __request(OpenAPI, { return __request(OpenAPI, {
method: 'GET', method: 'GET',
url: '/user/refreshToken', url: '/api/user/refreshToken',
errors: { errors: {
401: `Unauthorized`, 401: `Unauthorized`,
403: `Forbidden`, 403: `Forbidden`,
@ -191,7 +191,7 @@ export class UmsAdminControllerService {
): CancelablePromise<CommonResult_UmsAdmin_ | any> { ): CancelablePromise<CommonResult_UmsAdmin_ | any> {
return __request(OpenAPI, { return __request(OpenAPI, {
method: 'POST', method: 'POST',
url: '/user/register', url: '/api/user/register',
body: umsAdminParam, body: umsAdminParam,
errors: { errors: {
401: `Unauthorized`, 401: `Unauthorized`,
@ -212,7 +212,7 @@ export class UmsAdminControllerService {
): CancelablePromise<CommonResult | any> { ): CancelablePromise<CommonResult | any> {
return __request(OpenAPI, { return __request(OpenAPI, {
method: 'POST', method: 'POST',
url: '/user/update', url: '/api/user/update',
body: umsadmin, body: umsadmin,
errors: { errors: {
401: `Unauthorized`, 401: `Unauthorized`,
@ -233,7 +233,7 @@ export class UmsAdminControllerService {
): CancelablePromise<CommonResult | any> { ): CancelablePromise<CommonResult | any> {
return __request(OpenAPI, { return __request(OpenAPI, {
method: 'POST', method: 'POST',
url: '/user/update/PersonalInfo', url: '/api/user/update/PersonalInfo',
body: umsStudentAndTeacherDto, body: umsStudentAndTeacherDto,
errors: { errors: {
401: `Unauthorized`, 401: `Unauthorized`,
@ -254,7 +254,7 @@ export class UmsAdminControllerService {
): CancelablePromise<CommonResult | any> { ): CancelablePromise<CommonResult | any> {
return __request(OpenAPI, { return __request(OpenAPI, {
method: 'POST', method: 'POST',
url: '/user/updatePassword', url: '/api/user/updatePassword',
body: updatePasswordParam, body: updatePasswordParam,
errors: { errors: {
401: `Unauthorized`, 401: `Unauthorized`,

@ -5,7 +5,7 @@
"type": "module", "type": "module",
"scripts": { "scripts": {
"dev": "vite --open", "dev": "vite --open",
"build": "vue-tsc && vite build", "build": "vite build",
"preview": "vite preview", "preview": "vite preview",
"build:test": "vue-tsc && vite build --mode test", "build:test": "vue-tsc && vite build --mode test",
"build:pro": "vue-tsc && vite build --mode production", "build:pro": "vue-tsc && vite build --mode production",

@ -1,267 +1,266 @@
{ {
"nodes": [ "nodes": [
{ "id": "node1", "label": "计算机", "color": "#4682B4", "classID": 0 }, { "id": "node1", "label": "计算机", "color": "#4682B4", "classID": 0 },
{ {
"id": "node2", "id": "node2",
"label": "前端", "label": "前端",
"color": "rgba(254, 241, 0, 1)", "color": "rgba(254, 241, 0, 1)",
"classID": 1 "classID": 1
}, },
{ {
"id": "node3", "id": "node3",
"label": "js", "label": "js",
"color": "rgba(239, 242, 18, 1)", "color": "rgba(239, 242, 18, 1)",
"classID": 2 "classID": 2
}, },
{ {
"id": "node4", "id": "node4",
"label": "html", "label": "html",
"color": "rgba(230, 234, 10, 1)", "color": "rgba(230, 234, 10, 1)",
"classID": 3 "classID": 3
}, },
{ {
"id": "node5", "id": "node5",
"label": "css", "label": "css",
"color": "rgba(244, 231, 0, 1)", "color": "rgba(244, 231, 0, 1)",
"classID": 4 "classID": 4
}, },
{ {
"id": "node6", "id": "node6",
"label": "less", "label": "less",
"color": "rgba(15, 245, 57, 1)", "color": "rgba(15, 245, 57, 1)",
"classID": 5 "classID": 5
}, },
{ {
"id": "node7", "id": "node7",
"label": "scss", "label": "scss",
"color": "rgba(133, 255, 11, 1)", "color": "rgba(133, 255, 11, 1)",
"classID": 6 "classID": 6
}, },
{ {
"id": "node8", "id": "node8",
"label": "VUE", "label": "VUE",
"color": "rgba(42, 255, 0, 1)", "color": "rgba(42, 255, 0, 1)",
"classID": 7 "classID": 7
}, },
{ {
"id": "node9", "id": "node9",
"label": "React", "label": "React",
"color": "rgba(76, 73, 245, 1)", "color": "rgba(76, 73, 245, 1)",
"classID": 8 "classID": 8
}, },
{ "id": "node10", "label": "模块化", "color": "#4682B4", "classID": 9 }, { "id": "node10", "label": "模块化", "color": "#4682B4", "classID": 9 },
{ "id": "node11", "label": "webpack", "color": "#4682B4", "classID": 10 }, { "id": "node11", "label": "webpack", "color": "#4682B4", "classID": 10 },
{ "id": "node12", "label": "vite", "color": "#4682B4", "classID": 11 }, { "id": "node12", "label": "vite", "color": "#4682B4", "classID": 11 },
{ {
"id": "node13", "id": "node13",
"label": "uniapp", "label": "uniapp",
"color": "rgba(77, 255, 0, 1)", "color": "rgba(77, 255, 0, 1)",
"classID": 12 "classID": 12
}, },
{ {
"id": "node14", "id": "node14",
"label": "element", "label": "element",
"color": "rgba(33, 162, 255, 1)", "color": "rgba(33, 162, 255, 1)",
"classID": 13 "classID": 13
}, },
{ {
"id": "node15", "id": "node15",
"label": "web3", "label": "web3",
"color": "rgba(255, 0, 251, 1)", "color": "rgba(255, 0, 251, 1)",
"classID": 14 "classID": 14
}, },
{ {
"id": "node16", "id": "node16",
"label": "webGl", "label": "webGl",
"color": "rgba(208, 0, 249, 1)", "color": "rgba(208, 0, 249, 1)",
"classID": 15 "classID": 15
}, },
{ {
"id": "node17", "id": "node17",
"label": "three", "label": "three",
"color": "rgba(225, 0, 255, 1)", "color": "rgba(225, 0, 255, 1)",
"classID": 16 "classID": 16
}, },
{ {
"id": "node18", "id": "node18",
"label": "后端", "label": "后端",
"color": "rgba(0, 229, 255, 1)", "color": "rgba(0, 229, 255, 1)",
"classID": 17 "classID": 17
}, },
{ {
"id": "node19", "id": "node19",
"label": "java", "label": "java",
"color": "rgba(237, 229, 85, 1)", "color": "rgba(237, 229, 85, 1)",
"classID": 18 "classID": 18
}, },
{ {
"id": "node20", "id": "node20",
"label": "PHP", "label": "PHP",
"color": "rgba(195, 206, 215, 1)", "color": "rgba(195, 206, 215, 1)",
"classID": 19 "classID": 19
}, },
{ {
"id": "node21", "id": "node21",
"label": "Go", "label": "Go",
"color": "rgba(255, 0, 0, 1)", "color": "rgba(255, 0, 0, 1)",
"classID": 20 "classID": 20
}, },
{ {
"id": "node22", "id": "node22",
"label": "Python", "label": "Python",
"color": "rgba(109, 238, 180, 1)", "color": "rgba(109, 238, 180, 1)",
"classID": 21 "classID": 21
}, },
{ "id": "node23", "label": "MySQL", "color": "#4682B4", "classID": 22 }, { "id": "node23", "label": "MySQL", "color": "#4682B4", "classID": 22 },
{ {
"id": "node24", "id": "node24",
"label": "人工智能", "label": "人工智能",
"color": "rgba(180, 5, 255, 1)", "color": "rgba(180, 5, 255, 1)",
"classID": 23 "classID": 23
}, },
{ {
"id": "node25", "id": "node25",
"label": "python", "label": "python",
"color": "rgba(255, 8, 8, 1)", "color": "rgba(255, 8, 8, 1)",
"classID": 24 "classID": 24
}, },
{ {
"id": "node26", "id": "node26",
"label": "AI模型", "label": "AI模型",
"color": "rgba(10, 138, 244, 1)", "color": "rgba(10, 138, 244, 1)",
"classID": 25 "classID": 25
}, },
{ {
"id": "node27", "id": "node27",
"label": "Spring Framework", "label": "Spring Framework",
"color": "rgba(242, 238, 14, 1)", "color": "rgba(242, 238, 14, 1)",
"classID": 26 "classID": 26
}, },
{ {
"id": "node28", "id": "node28",
"label": "Hibernate", "label": "Hibernate",
"color": "rgba(242, 238, 14, 1)", "color": "rgba(242, 238, 14, 1)",
"classID": 27 "classID": 27
}, },
{ {
"id": "node29", "id": "node29",
"label": "Spring MVC", "label": "Spring MVC",
"color": "rgba(242, 238, 14, 1)", "color": "rgba(242, 238, 14, 1)",
"classID": 28 "classID": 28
}, },
{ {
"id": "node30", "id": "node30",
"label": "Gin", "label": "Gin",
"color": "rgba(255, 0, 0, 1)", "color": "rgba(255, 0, 0, 1)",
"classID": 29 "classID": 29
}, },
{ {
"id": "node31", "id": "node31",
"label": "Echo", "label": "Echo",
"color": "rgba(255, 0, 0, 1)", "color": "rgba(255, 0, 0, 1)",
"classID": 30 "classID": 30
}, },
{ {
"id": "node32", "id": "node32",
"label": "Beego", "label": "Beego",
"color": "rgba(255, 8, 0, 1)", "color": "rgba(255, 8, 0, 1)",
"classID": 31 "classID": 31
}, },
{ {
"id": "node33", "id": "node33",
"label": "Laravel", "label": "Laravel",
"color": "rgba(200, 209, 217, 1)", "color": "rgba(200, 209, 217, 1)",
"classID": 32 "classID": 32
}, },
{ {
"id": "node34", "id": "node34",
"label": "Symfony", "label": "Symfony",
"color": "rgba(182, 194, 204, 1)", "color": "rgba(182, 194, 204, 1)",
"classID": 33 "classID": 33
}, },
{ {
"id": "node35", "id": "node35",
"label": "CodeIgniter", "label": "CodeIgniter",
"color": "rgba(188, 197, 204, 1)", "color": "rgba(188, 197, 204, 1)",
"classID": 34 "classID": 34
}, },
{ {
"id": "node36", "id": "node36",
"label": "Django", "label": "Django",
"color": "rgba(36, 245, 144, 1)", "color": "rgba(36, 245, 144, 1)",
"classID": 35 "classID": 35
}, },
{ {
"id": "node37", "id": "node37",
"label": "Flask", "label": "Flask",
"color": "rgba(41, 244, 176, 1)", "color": "rgba(41, 244, 176, 1)",
"classID": 36 "classID": 36
}, },
{ {
"id": "node38", "id": "node38",
"label": "FastAPI", "label": "FastAPI",
"color": "rgba(58, 244, 142, 1)", "color": "rgba(58, 244, 142, 1)",
"classID": 37 "classID": 37
} }
], ],
"links": [ "links": [
{ "source": "node2", "target": "node3", "label": "", "classID": 0 }, { "source": "node2", "target": "node3", "label": "", "classID": 0 },
{ "source": "node2", "target": "node5", "label": "", "classID": 1 }, { "source": "node2", "target": "node5", "label": "", "classID": 1 },
{ "source": "node2", "target": "node4", "label": "", "classID": 2 }, { "source": "node2", "target": "node4", "label": "", "classID": 2 },
{ "source": "node1", "target": "node2", "label": "前端方向", "classID": 3 }, { "source": "node1", "target": "node2", "label": "前端方向", "classID": 3 },
{ "source": "node5", "target": "node6", "label": "", "classID": 4 }, { "source": "node5", "target": "node6", "label": "", "classID": 4 },
{ "source": "node5", "target": "node7", "label": "", "classID": 5 }, { "source": "node5", "target": "node7", "label": "", "classID": 5 },
{ "source": "node3", "target": "node8", "label": "", "classID": 6 }, { "source": "node3", "target": "node8", "label": "", "classID": 6 },
{ "source": "node3", "target": "node9", "label": "", "classID": 7 }, { "source": "node3", "target": "node9", "label": "", "classID": 7 },
{ "source": "node3", "target": "node10", "label": "", "classID": 8 }, { "source": "node3", "target": "node10", "label": "", "classID": 8 },
{ "source": "node10", "target": "node11", "label": "", "classID": 9 }, { "source": "node10", "target": "node11", "label": "", "classID": 9 },
{ "source": "node10", "target": "node12", "label": "", "classID": 10 }, { "source": "node10", "target": "node12", "label": "", "classID": 10 },
{ "source": "node11", "target": "node9", "label": "", "classID": 11 }, { "source": "node11", "target": "node9", "label": "", "classID": 11 },
{ "source": "node11", "target": "node8", "label": "", "classID": 12 }, { "source": "node11", "target": "node8", "label": "", "classID": 12 },
{ "source": "node12", "target": "node8", "label": "", "classID": 13 }, { "source": "node12", "target": "node8", "label": "", "classID": 13 },
{ "source": "node8", "target": "node13", "label": "", "classID": 14 }, { "source": "node8", "target": "node13", "label": "", "classID": 14 },
{ "source": "node8", "target": "node14", "label": "", "classID": 15 }, { "source": "node8", "target": "node14", "label": "", "classID": 15 },
{ "source": "node11", "target": "node13", "label": "", "classID": 16 }, { "source": "node11", "target": "node13", "label": "", "classID": 16 },
{ "source": "node12", "target": "node13", "label": "", "classID": 17 }, { "source": "node12", "target": "node13", "label": "", "classID": 17 },
{ "source": "node2", "target": "node15", "label": "", "classID": 18 }, { "source": "node2", "target": "node15", "label": "", "classID": 18 },
{ "source": "node15", "target": "node16", "label": "", "classID": 19 }, { "source": "node15", "target": "node16", "label": "", "classID": 19 },
{ "source": "node16", "target": "node17", "label": "", "classID": 20 }, { "source": "node16", "target": "node17", "label": "", "classID": 20 },
{ "source": "node1", "target": "node1", "label": "", "classID": 21 }, { "source": "node1", "target": "node1", "label": "", "classID": 21 },
{ {
"source": "node1", "source": "node1",
"target": "node18", "target": "node18",
"label": "后端方向", "label": "后端方向",
"classID": 22 "classID": 22
}, },
{ "source": "node18", "target": "node21", "label": "", "classID": 23 }, { "source": "node18", "target": "node21", "label": "", "classID": 23 },
{ "source": "node18", "target": "node20", "label": "", "classID": 24 }, { "source": "node18", "target": "node20", "label": "", "classID": 24 },
{ "source": "node18", "target": "node19", "label": "", "classID": 25 }, { "source": "node18", "target": "node19", "label": "", "classID": 25 },
{ "source": "node18", "target": "node22", "label": "", "classID": 26 }, { "source": "node18", "target": "node22", "label": "", "classID": 26 },
{ "source": "node22", "target": "node23", "label": "", "classID": 27 }, { "source": "node22", "target": "node23", "label": "", "classID": 27 },
{ "source": "node19", "target": "node23", "label": "", "classID": 28 }, { "source": "node19", "target": "node23", "label": "", "classID": 28 },
{ "source": "node20", "target": "node23", "label": "", "classID": 29 }, { "source": "node20", "target": "node23", "label": "", "classID": 29 },
{ "source": "node21", "target": "node23", "label": "", "classID": 30 }, { "source": "node21", "target": "node23", "label": "", "classID": 30 },
{ {
"source": "node1", "source": "node1",
"target": "node24", "target": "node24",
"label": "人工智能方向", "label": "人工智能方向",
"classID": 31 "classID": 31
}, },
{ "source": "node24", "target": "node25", "label": "", "classID": 32 }, { "source": "node24", "target": "node25", "label": "", "classID": 32 },
{ "source": "node24", "target": "node26", "label": "", "classID": 33 }, { "source": "node24", "target": "node26", "label": "", "classID": 33 },
{ "source": "node12", "target": "node9", "label": "", "classID": 34 }, { "source": "node12", "target": "node9", "label": "", "classID": 34 },
{ "source": "node19", "target": "node27", "label": "", "classID": 35 }, { "source": "node19", "target": "node27", "label": "", "classID": 35 },
{ "source": "node19", "target": "node28", "label": "", "classID": 36 }, { "source": "node19", "target": "node28", "label": "", "classID": 36 },
{ "source": "node19", "target": "node29", "label": "", "classID": 37 }, { "source": "node19", "target": "node29", "label": "", "classID": 37 },
{ "source": "node21", "target": "node30", "label": "", "classID": 38 }, { "source": "node21", "target": "node30", "label": "", "classID": 38 },
{ "source": "node21", "target": "node31", "label": "", "classID": 39 }, { "source": "node21", "target": "node31", "label": "", "classID": 39 },
{ "source": "node21", "target": "node32", "label": "", "classID": 40 }, { "source": "node21", "target": "node32", "label": "", "classID": 40 },
{ "source": "node20", "target": "node33", "label": "", "classID": 41 }, { "source": "node20", "target": "node33", "label": "", "classID": 41 },
{ "source": "node20", "target": "node34", "label": "", "classID": 42 }, { "source": "node20", "target": "node34", "label": "", "classID": 42 },
{ "source": "node20", "target": "node35", "label": "", "classID": 43 }, { "source": "node20", "target": "node35", "label": "", "classID": 43 },
{ "source": "node22", "target": "node36", "label": "", "classID": 44 }, { "source": "node22", "target": "node36", "label": "", "classID": 44 },
{ "source": "node22", "target": "node37", "label": "", "classID": 45 }, { "source": "node22", "target": "node37", "label": "", "classID": 45 },
{ "source": "node22", "target": "node38", "label": "", "classID": 46 } { "source": "node22", "target": "node38", "label": "", "classID": 46 }
] ]
} }

File diff suppressed because it is too large Load Diff

@ -1,41 +1,38 @@
import request from '@/utils/request' import request from '@/utils/request'
/** /**
* *
*/ */
export function getAssApi(params: { export function getAssApi(params: {
page: number, page: number
pageSize: number, pageSize: number
resourceIdList: string, resourceIdList: string
type: 1 | 2 | 3 | 4 | 5 type: 1 | 2 | 3 | 4 | 5
userId: string
}) { }) {
return request.get('/Favour/get', { return request.get('/Favour/get', {
params params,
}) })
} }
/** /**
* *
* @param par * @param par
*/ */
export function aaaApi(par: any) { export function aaaApi(par: any) {
if (par) return request.get(`url${par}`) if (par) return request.get(`url${par}`)
else return request.get(`url`) else return request.get(`url`)
} }
export const uploadFile = (data: any) => { export const uploadFile = (data: any) => {
return request({ return request({
url: '/upload', url: '/upload',
method: "POST", method: 'POST',
data data,
}) })
} }
/** /**
* *
* @returns * @returns
@ -66,33 +63,33 @@ export function getOrogramObjectiveApi() {
}) })
} }
// 获取课程列表 // 获取课程列表
export const getCourseList = (params:any) => { export const getCourseList = (params: any) => {
return request({ return request({
url: '/course_objectives/list/' + params.id, url: '/course_objectives/list/' + params.id,
params params,
}) })
} }
// 添加分目标 // 添加分目标
export const addCourse = (data:any) => { export const addCourse = (data: any) => {
return request({ return request({
url:'/objective_contents/addcontent', url: '/objective_contents/addcontent',
method:"POST", method: 'POST',
data data,
}) })
} }
// 编辑目标 // 编辑目标
export const editCourse = (data: any) => { export const editCourse = (data: any) => {
return request({ return request({
url: '/objective_contents/update', url: '/objective_contents/update',
method: "PUT", method: 'PUT',
data data,
}) })
} }
//删除课程目标 //删除课程目标
export const deleteCourse = (params: any) => { export const deleteCourse = (params: any) => {
return request({ return request({
url: '/objective_contents/' + params.id, url: '/objective_contents/' + params.id,
method: "DELETE", method: 'DELETE',
}) })
} }
// /objective_contents/ // /objective_contents/
@ -100,7 +97,7 @@ export const deleteCourse = (params: any) => {
export const getCourseInfo = (params: any) => { export const getCourseInfo = (params: any) => {
return request({ return request({
url: '/objective_contents/' + params.id, url: '/objective_contents/' + params.id,
method: "get", method: 'get',
params params,
}) })
} }

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

@ -1,35 +1,35 @@
import request from '@/utils/request' import request from '@/utils/request'
// 获取课程列表 // 获取课程列表
export const getCourseListApi = (params) => { export const getCourseListApi = (params) => {
return request.get('/coursesteacher/page', { return request.get('/api/coursesteacher/page', {
params, params,
}) })
} }
// 编辑课程 // 编辑课程
export const editCourseApi = (params) => { export const editCourseApi = (params) => {
return request.put('/coursesteacher', params) return request.put('/api/coursesteacher', params)
} }
// 添加课程 // 添加课程
export const addCourseApi = (data) => { export const addCourseApi = (data) => {
return request.post(`/coursesteacher/addcourse`, data) return request.post(`/api/coursesteacher/addcourse`, data)
} }
// 获取课程详情 // 获取课程详情
export const getCourseDetailApi = (id) => { export const getCourseDetailApi = (id) => {
return request.get(`/coursesteacher/${id}`) return request.get(`/api/coursesteacher/${id}`)
} }
// 删除课程 // 删除课程
export const deleteCourseApi = (id) => { export const deleteCourseApi = (id) => {
return request.delete(`/coursesteacher/${id}`) return request.delete(`/api/coursesteacher/${id}`)
} }
// 获取课程id // 获取课程id
export const getCourseObjectApi = (id) => { export const getCourseObjectApi = (id) => {
return request.get(`/course_objectives/list/${id}`) return request.get(`/api/course_objectives/list/${id}`)
} }
// 获取教师列表 // 获取教师列表
export const getTeacherListApi = () => { export const getTeacherListApi = () => {
return request.get('/user/get_teacherinf_list') return request.get('/api/user/get_teacherinf_list')
} }
export const fnNameGet = (params) => { export const fnNameGet = (params) => {
@ -44,7 +44,7 @@ export const getPageCourses = (data) => {
console.log(data.pageSize) console.log(data.pageSize)
// return request.get(`/courses/index`,data) // return request.get(`/courses/index`,data)
return request.get( return request.get(
`/coursesteacher/index?page=${data.page}&pageSize=${data.pageSize}`, `/api/coursesteacher/index?page=${data.page}&pageSize=${data.pageSize}`,
) )
} }
// {id:1} // {id:1}

@ -3,9 +3,9 @@ import { loginType, loginResponseType, userInfoType } from './types'
//项目用户相关的请求地址 //项目用户相关的请求地址
enum API { enum API {
LOGIN_URL = '/user/login', LOGIN_URL = '/api/user/login',
USERINFO_URL = '/user/info', USERINFO_URL = '/api/user/info',
LOGOUT_URL = '/user/logout', LOGOUT_URL = '/api/user/logout',
} }
// 用户登录 // 用户登录
export const reqLogin = (data: loginType) => export const reqLogin = (data: loginType) =>

@ -1,48 +1,48 @@
import request from '@/utils/request' import request from '@/utils/request'
//账号登录接口 //账号登录接口
export const userLoginService = (loginData) => { export const userLoginService = (loginData) => {
return request.post('/user/login', loginData, { return request.post('/api/user/login', loginData, {
headers: { 'Content-Type': 'application/json;charset=UTF-8' }, headers: { 'Content-Type': 'application/json;charset=UTF-8' },
}) })
} }
//手机号登录接口 //手机号登录接口
export const userPhoneLoginService = (phones) => { export const userPhoneLoginService = (phones) => {
return request.post('/user/phone/login?phone=' + phones) return request.post('/api/user/phone/login?phone=' + phones)
} }
//账号注册接口 //账号注册接口
export const userRegisterService = (jsonData) => { export const userRegisterService = (jsonData) => {
return request.post('/user/register', jsonData, { return request.post('/api/user/register', jsonData, {
headers: { 'Content-Type': 'application/json;charset=UTF-8' }, headers: { 'Content-Type': 'application/json;charset=UTF-8' },
}) })
} }
//手机号注册接口 //手机号注册接口
export const userPhoneRegisterService = (jsonData) => { export const userPhoneRegisterService = (jsonData) => {
return request.post('/user/phone/register', jsonData, { return request.post('/api/user/phone/register', jsonData, {
headers: { 'Content-Type': 'application/json;charset=UTF-8' }, headers: { 'Content-Type': 'application/json;charset=UTF-8' },
}) })
} }
//手机号验证码请求 //手机号验证码请求
export const userCodeRegisterService = (phoness) => { export const userCodeRegisterService = (phoness) => {
return request.post('/user/code?phone=' + phoness) return request.post('/api/user/code?phone=' + phoness)
} }
//用户信息接口 //用户信息接口
export const userGetInfoService = (token) => export const userGetInfoService = (token) =>
request.get('/user/info', { request.get('/api/user/info', {
headers: { Authorization: `Bearer ${token}` }, headers: { Authorization: `Bearer ${token}` },
}) })
//修改用户信息 //修改用户信息
export const userChangeService = (jsonData) => { export const userChangeService = (jsonData) => {
return request.post('/user/update', jsonData, { return request.post('/api/user/update', jsonData, {
headers: { 'Content-Type': 'application/json;charset=UTF-8' }, headers: { 'Content-Type': 'application/json;charset=UTF-8' },
}) })
} }
//获取身份信息 //获取个人信息
export const userIdenService = (id) => { export const userIdenService = (id) => {
return request.post('/user/personal/info?id=' + id) return request.post('/api/user/personal/info?id=' + id)
} }
//修改身份信息 //修改个人信息
export const userIdenChangeService = (dataToSend) => { export const userIdenChangeService = (dataToSend) => {
return request.post('/user/update/PersonalInfo', dataToSend, { return request.post('/api/user/update/PersonalInfo', dataToSend, {
headers: { 'Content-Type': 'application/json;charset=UTF-8' }, headers: { 'Content-Type': 'application/json;charset=UTF-8' },
}) })
} }

@ -43,19 +43,17 @@
<script lang="ts" setup> <script lang="ts" setup>
import { onMounted, watch } from 'vue' import { onMounted, watch } from 'vue'
import useLayoutSettingStoe from '@/store/modules/setting' import useLayoutSettingStoe from '@/store/modules/setting'
import permissionStore from '@/store/modules/permission'
// //
import { useRoute } from 'vue-router' import { useRoute } from 'vue-router'
import Tabbar from './tabbar/index.vue' import Tabbar from './tabbar/index.vue'
import LoGo from './logo/index.vue' import LoGo from './logo/index.vue'
import Menu from './menu/index.vue' import Menu from './menu/index.vue'
import {constantRoute} from '@/router/routers' import { constantRoute } from '@/router/routers'
// //
// import userUserStore from '@/store/modules/user' // import userUserStore from '@/store/modules/user'
// import { onMounted, reactive, ref, toRefs, watch } from 'vue' // import { onMounted, reactive, ref, toRefs, watch } from 'vue'
import Main from './main/index.vue' import Main from './main/index.vue'
const LayoutSettingStoe = useLayoutSettingStoe() const LayoutSettingStoe = useLayoutSettingStoe()
const usePermissionStore = permissionStore()
// const userStore = userUserStore() // const userStore = userUserStore()
const $route = useRoute() const $route = useRoute()

@ -13,7 +13,7 @@
<el-button size="small" icon="FullScreen" circle @click="fullScreen" /> <el-button size="small" icon="FullScreen" circle @click="fullScreen" />
<el-button size="small" icon="Setting" circle /> <el-button size="small" icon="Setting" circle />
<img <img
:src="userStore.avatar" src=""
alt="" alt=""
style="width: 24px; height: 24px; margin: 0 10px; border-radius: 50%" style="width: 24px; height: 24px; margin: 0 10px; border-radius: 50%"
/> />

@ -22,14 +22,14 @@ const app = createApp(App)
//持久化 //持久化
import gloablComponent from '@/components/index' import gloablComponent from '@/components/index'
import 'echarts' import 'echarts'
import ECharts from 'vue-echarts'; import ECharts from 'vue-echarts'
// 导入jquery // 导入jquery
// import $ from 'jquery' // import $ from 'jquery'
app.use(gloablComponent) app.use(gloablComponent)
// 注册仓库 // 注册仓库
app.use(pinia) app.use(pinia)
app.component('ECharts',ECharts) app.component('ECharts', ECharts)
// 安装element插件 // 安装element插件
app.use(ElementPlus, { app.use(ElementPlus, {
locale: zhCn, //使用中文 locale: zhCn, //使用中文

@ -68,7 +68,7 @@ router.beforeEach(async (to, form, next) => {
// console.log(to, 'to') // console.log(to, 'to')
// next() // next()
// }) // })
router.afterEach((to, form, next) => { router.afterEach(() => {
nprogress.done() nprogress.done()
}) })
export default router export default router

@ -1,6 +1,6 @@
// 导入路由插件 // 导入路由插件
import { createRouter, createWebHashHistory } from 'vue-router' import { createRouter, createWebHashHistory } from 'vue-router'
import {constantRoute} from './routers.ts' import { constantRoute } from './routers.ts'
const routerList = [ const routerList = [
{ {
path: '/login', path: '/login',
@ -14,7 +14,7 @@ const routerList = [
] ]
const router = createRouter({ const router = createRouter({
history: createWebHashHistory(), history: createWebHashHistory(),
routes: [...routerList,...constantRoute], routes: [...routerList, ...constantRoute],
scrollBehavior() { scrollBehavior() {
return { return {
left: 0, left: 0,

@ -7,4 +7,5 @@ export interface LoginStoreType {
routes: string routes: string
phone: string phone: string
userInfo: object userInfo: object
data: object
} }

@ -1,9 +1,9 @@
// 创建用户相关的仓库 // 创建用户相关的仓库
import { defineStore } from 'pinia' import { defineStore } from 'pinia'
// 引入登录接口 // 引入登录接口
import { reqLogin, getUserInfo } from '@/api/user/index' // import { reqLogin, getUserInfo } from '@/api/user/index'
// 引入登录参数类型 // 引入登录参数类型
import { loginType, loginResponseType } from '@/api/user/types' import { loginType } from '@/api/user/types'
// 引入ElementPlus通知插件 // 引入ElementPlus通知插件
import { ElMessage, ElNotification } from 'element-plus' import { ElMessage, ElNotification } from 'element-plus'
import { getTime } from '@/utils/time' import { getTime } from '@/utils/time'
@ -24,6 +24,8 @@ import {
const useUserStore = defineStore( const useUserStore = defineStore(
'User', 'User',
{ {
// @ts-expect-error
state: (): LoginStoreType => { state: (): LoginStoreType => {
return { return {
token: GET_TKOEN('TOKEN') || '', token: GET_TKOEN('TOKEN') || '',
@ -31,22 +33,25 @@ const useUserStore = defineStore(
userName: '', // 用户姓名 userName: '', // 用户姓名
avatar: '', // 用户头像 avatar: '', // 用户头像
routes: '', routes: '',
phone: '',
userInfo: {}, // 当前用户相关信息 userInfo: {}, // 当前用户相关信息
data: {},
} }
}, },
actions: { actions: {
// 登录事件 // 登录事件
async userLogin(data: loginType) { async userLogin(data: any) {
console.log(data, 'pinia') // console.log(data, 'pinia')
const res: loginResponseType = await userLoginService(data).catch( const res: any = await userLoginService(data).catch((error) => {
(error) => { ElMessage.error(error.response.data.message)
ElMessage.error(error.response.data.message) console.log(error, 'error')
console.log(error, 'error') })
},
)
if (res.code === 200) { if (res.code === 200) {
// @ts-expect-error
this.token = res.data.token as string this.token = res.data.token as string
// @ts-expect-error
SET_TKOEN('TOKEN', this.token) SET_TKOEN('TOKEN', this.token)
// localStorage.setItem('TOKEN', this.token) // localStorage.setItem('TOKEN', this.token)
@ -68,10 +73,14 @@ const useUserStore = defineStore(
}, },
//手机号登录 //手机号登录
async userPhoneLogin(data: loginType) { async userPhoneLogin(data: loginType) {
const res: loginResponseType = await userPhoneLoginService(data) const res: any = await userPhoneLoginService(data)
console.log(res, 11111) console.log(res, 11111)
if (res.code === 200) { if (res.code === 200) {
// @ts-expect-error
this.token = res.data.token as string //接收返回的token this.token = res.data.token as string //接收返回的token
// @ts-expect-error
SET_TKOEN('TOKEN', this.token) SET_TKOEN('TOKEN', this.token)
// localStorage.setItem('TOKEN', this.token) // localStorage.setItem('TOKEN', this.token)
ElNotification({ ElNotification({
@ -90,16 +99,24 @@ const useUserStore = defineStore(
}, },
// 获取用户信息事件 // 获取用户信息事件
async getUserInfo() { async getUserInfo() {
const result = await userGetInfoService(GET_TKOEN('TOKEN')) const result: any = await userGetInfoService(GET_TKOEN('TOKEN'))
if (result.code === 200) { if (result.code === 200) {
const res = await userIdenService(result.data.id) const res = await userIdenService(result.data.id)
// @ts-expect-error
this.userInfo = res.data this.userInfo = res.data
console.log(this.userInfo, 'this.userInfo') // console.log(this.userInfo, 'this.userInfo')
// @ts-expect-error
this.data = result.data
console.log(result, '123') console.log(result, '123')
// @ts-expect-error
this.userName = result.data.username this.userName = result.data.username
// this.avatar = result.data.checkUser.avatar // this.avatar = result.data.checkUser.avatar
this.routes = result.data.menus.map((item) => { // @ts-expect-error
this.routes = result.data.menus.map((item: any) => {
return item.name return item.name
}) })
return { return {
@ -116,9 +133,17 @@ const useUserStore = defineStore(
// 清除token // 清除token
REMOVE_TOKEN('TOKEN'), REMOVE_TOKEN('TOKEN'),
// ;(this.userName = ''), (this.avatar = '') // ;(this.userName = ''), (this.avatar = '')
// @ts-expect-error
(this.userName = ''), (this.userName = ''),
// @ts-expect-error
(this.avatar = '') (this.avatar = '')
// @ts-expect-error
this.token = '' this.token = ''
// @ts-expect-error
this.routes = '' this.routes = ''
usePermissionStore.removeRouter() usePermissionStore.removeRouter()
location.reload() location.reload()

@ -2,12 +2,14 @@
<!-- 课程收藏页面 --> <!-- 课程收藏页面 -->
<el-tab-pane label="课程收藏" name="first"> <el-tab-pane label="课程收藏" name="first">
<div class="Container_Cla" ref="container"> <div class="Container_Cla" ref="container">
<div class="item_1" v-for="(item_1, index) in datalist" :key="index"> <div class="item_1" v-for="item_1 in datalist" :key="item_1.id">
<!-- 课程图片盒子 --> <!-- 课程图片盒子 -->
<div class="ClassImg"> <div class="ClassImg">
<!-- 更多图片盒子 --> <!-- 更多图片盒子 -->
<div class="ClassGd"> <div class="ClassGd">
<img src="../../assets/icons/更多.svg" width="100%" height="100%" /> <!-- <img src="../../assets/icons/更多.svg" width="100%" height="100%" /> -->
<p>查看课程</p>
<p>取消收藏</p>
</div> </div>
<!-- 课程图片 --> <!-- 课程图片 -->
<img :src="item_1.img" /> <img :src="item_1.img" />
@ -40,7 +42,7 @@
</el-tab-pane> </el-tab-pane>
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import { ref, onMounted, onBeforeUnmount } from 'vue' import { ref, onMounted } from 'vue'
import { SeCourseFavourControllerService } from '../../../generated/services/SeCourseFavourControllerService' import { SeCourseFavourControllerService } from '../../../generated/services/SeCourseFavourControllerService'
import { CourseFavourQueryRequest } from 'generated/models/CourseFavourQueryRequest' import { CourseFavourQueryRequest } from 'generated/models/CourseFavourQueryRequest'
// =============================== // ===============================
@ -69,27 +71,18 @@ onMounted(() => myObserver.observe(container.value))
const total = ref(0) const total = ref(0)
const datalist = ref([ const datalist = ref([
{ {
/** //
* 课程学时
*/
classhours: '', classhours: '',
/** //
* 课程学分
*/
credit: '', credit: '',
id: '', id: '',
img: '', img: '',
name: '', name: '',
/** // id
* 教师id
*/
teacher: '', teacher: '',
}, },
]) ])
//
/**
* 表单信息
*/
let params = ref<CourseFavourQueryRequest>({ let params = ref<CourseFavourQueryRequest>({
current: 1, current: 1,
pageSize: 12, pageSize: 12,
@ -97,7 +90,7 @@ let params = ref<CourseFavourQueryRequest>({
sortOrder: '', sortOrder: '',
userId: 2, userId: 2,
}) })
//
const getDatalist = async () => { const getDatalist = async () => {
const res = await SeCourseFavourControllerService.listPostByPageUsingPost1( const res = await SeCourseFavourControllerService.listPostByPageUsingPost1(
params.value, params.value,
@ -108,6 +101,7 @@ const getDatalist = async () => {
getDatalist() getDatalist()
//
const handleSizeChange = (size: any) => { const handleSizeChange = (size: any) => {
// console.log(size) // console.log(size)
params.value.current = 1 params.value.current = 1
@ -200,10 +194,23 @@ const handleCurrentChange = (page: any) => {
.ClassGd { .ClassGd {
position: absolute; position: absolute;
background-color: rgb(217, 217, 217, 0.5);
display: none; display: none;
margin-top: -9px; margin-left: 85%;
margin-left: 95%; padding: 3px 5px;
cursor: pointer; cursor: pointer;
border-radius: 20%;
& > p {
margin-top: 3px;
margin-bottom: 3px;
font-size: 10px;
font-weight: 350;
color: black;
&:hover {
color: #2952f6;
font-weight: 35s0;
}
}
} }
.ClaCon { .ClaCon {

@ -1,36 +1,90 @@
<template> <template>
<el-tab-pane label="知识点收藏" name="third"> <el-tab-pane label="知识点收藏" name="third">
<div class="Container_Kno"> <div class="Container_Kno">
<div class="item_3" v-for="(item_3, index) in 10" :key="index"> <div
<div> class="item_3 noUpd"
<div class="KnowledgeCollent"> v-for="item_3 in arr"
<div class="KnoCon"> :onclick="handClick"
<h4>课程名称</h4> :key="item_3.id"
<p>{{ item_3 }}-xxxx</p> >
</div> <div>
<div class="KnoBtn" > <div class="KnowledgeCollent">
<img src="../../assets/icons/更多.svg" alt="" /> <div class="KnoCon">
</div> <h4>{{ item_3.name }}</h4>
</div> <p>{{ item_3.num }}-{{ item_3.zjname }}</p>
<div class="Knowledge_point">
<ul>
<li v-for="(item, index) in 6" :key="index">
知识点知识点知识点{{ item }}
<span class="btn" >×</span>
&nbsp;
</li>
</ul>
</div>
</div>
</div> </div>
<div class="KnoBtn">
<img class="cli" src="../../assets/icons/更多.svg" />
</div>
</div>
<div class="Knowledge_point">
<ul>
<li v-for="(item, index) in 5" :key="index">
&nbsp;
{{ index + 1 }}. 知识点知识点知识点 &nbsp;
<span class="btn">×</span>
&nbsp;
</li>
</ul>
</div> </div>
</el-tab-pane> </div>
</div>
</div>
</el-tab-pane>
</template> </template>
<script lang="ts" setup> <script setup>
import { ref, reactive } from 'vue'
function handClick(e) {
if (e.target.classList.contains('cli')) {
this.classList.toggle('noUpd')
}
}
const arr = reactive([])
const a = [
{
id: 1,
name: '操作系统',
num: 1,
zjname: '操作系统引论',
zsd: ['sadas', 'asdadsad', 'asdasdas'],
},
{
id: 2,
name: '跨文化交际',
num: 1,
},
{
id: 3,
name: '软件项目管理',
num: 1,
},
{
id: 4,
name: '英语课',
num: 1,
},
]
arr.length = 0
arr.push(...a)
const ShowDel = ref(false)
function XsDel(id) {
const item = arr.find((o) => o.a.id == id)
item.ShowDel = !item.ShowDel
}
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.btn {
display: inline-block;
}
.item_3.noUpd {
.btn {
display: none;
}
}
.Container_Kno { .Container_Kno {
width: 100%; width: 100%;
height: 100%; height: 100%;
@ -68,14 +122,14 @@
justify-content: space-around; justify-content: space-around;
} }
.KnoBtn>img { .KnoBtn > img {
padding-top: 20px; padding-top: 20px;
cursor: pointer; cursor: pointer;
} }
.KnowledgeCollent h4 { .KnowledgeCollent h4 {
margin-top: 3px; margin-top: 3px;
font-size: 30px; font-size: 27px;
font-weight: 550; font-weight: 550;
font-style: normal; font-style: normal;
} }
@ -96,7 +150,7 @@
flex-direction: column; flex-direction: column;
} }
.Knowledge_point>ul>li { .Knowledge_point > ul > li {
display: inline-block; display: inline-block;
margin-top: 3px; margin-top: 3px;
margin-bottom: 3px; margin-bottom: 3px;
@ -110,12 +164,8 @@
border-radius: 3px; border-radius: 3px;
} }
.btn {
display: none;
}
.btn:hover { .btn:hover {
cursor: pointer; cursor: pointer;
color: rgb(15, 57, 76); color: rgb(15, 57, 76);
} }
</style> </style>

@ -1,6 +1,12 @@
<template> <template>
<div class="curse-collection"> <div class="curse-collection">
<el-tabs v-model="activeName" type="card" class="demo-tabs" @tab-click="handleClick" style="padding-top: 0"> <el-tabs
v-model="activeName"
type="card"
class="demo-tabs"
@tab-click="handleClick"
style="padding-top: 0"
>
<!-- 课程收藏页面 --> <!-- 课程收藏页面 -->
<ContainerCla /> <ContainerCla />
<!-- 资源收藏页面 --> <!-- 资源收藏页面 -->
@ -77,11 +83,18 @@
</div> </div>
</div> </div>
</div> </div>
<el-dialog v-model="centerDialogVisible" title="视频播放中" width="1000" align-center> <el-dialog
v-model="centerDialogVisible"
title="视频播放中"
width="1000"
align-center
>
<span>点击开了一个弹框</span> <span>点击开了一个弹框</span>
<template #footer> <template #footer>
<div class="dialog-footer"> <div class="dialog-footer">
<video src=""></video> <video
src="https://www.bilibili.com/video/BV1HV4y1a7n4?p=50&vd_source=9e99d3200788d6043e077de463ef019b"
></video>
</div> </div>
</template> </template>
</el-dialog> </el-dialog>
@ -109,13 +122,23 @@
</div> </div>
<div class="ResClaDic"> <div class="ResClaDic">
<p>音频名称-----{{ item }}</p> <p>音频名称-----{{ item }}</p>
<el-button plain @click="centerDialogVisible = true">
点击播放
</el-button>
</div> </div>
</div> </div>
</div> </div>
<div class="Page-2"> <div class="Page-2">
<el-pagination v-model:current-page="currentPage1" v-model:page-size="pageSize1" :disabled="disabled" <el-pagination
:page-sizes="[6, 8, 12, 15]" layout="total, sizes, prev, pager, next, jumper" :total="10" v-model:current-page="currentPage1"
@size-change="handleSizeChange" @current-change="handleCurrentChange" /> v-model:page-size="pageSize1"
:disabled="disabled"
:page-sizes="[6, 8, 12, 15]"
layout="total, sizes, prev, pager, next, jumper"
:total="10"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
/>
</div> </div>
</el-tab-pane> </el-tab-pane>
<!-- 知识点收藏页面 --> <!-- 知识点收藏页面 -->
@ -130,21 +153,22 @@ import { ref, watch } from 'vue'
import type { TabsPaneContext } from 'element-plus' import type { TabsPaneContext } from 'element-plus'
import ContainerCla from './ContainerCla.vue' import ContainerCla from './ContainerCla.vue'
import ContainerKno from './ContainerKno.vue' import ContainerKno from './ContainerKno.vue'
import { getAssApi } from "@/api/courseChaptersApi"; // import { getAssApi } from '@/api/courseChaptersApi'
import { SeResourceFavourControllerService } from '../../../generated/services/SeResourceFavourControllerService'
const centerDialogVisible = ref(false) const centerDialogVisible = ref(false)
const activeIndex = ref(1) const activeIndex = ref(1)
function hsndelShow(index: number) { function hsndelShow(index: number) {
activeIndex.value = index activeIndex.value = index
} }
//========================= // //=========================
function handleApi(params) { // function handleApi(params) {
getAssApi(params).then(res => { // getAssApi(params).then(res => {
arr.value = res.data.records // arr.value = res.data.records
total.value = res.data.total // total.value = res.data.total
console.log(arr.value, '-', total.value) // console.log(arr.value, '-', total.value)
}) // })
} // }
const arr = ref([]) const arr = ref([])
const total = ref(0) const total = ref(0)
// //
@ -152,11 +176,11 @@ const currentPage1 = ref(1)
const pageSize1 = ref(10) const pageSize1 = ref(10)
const disabled = ref(false) const disabled = ref(false)
const handleSizeChange = (val: number) => { const handleSizeChange = () => {
hand() getDatalist()
} }
const handleCurrentChange = (val: number) => { const handleCurrentChange = () => {
hand() getDatalist()
} }
function initFenYie() { function initFenYie() {
@ -165,34 +189,61 @@ function initFenYie() {
pageSize1.value = 10 pageSize1.value = 10
} }
watch(activeIndex, () => {
watch(activeIndex, (newVal) => {
initFenYie() initFenYie()
hand() getDatalist()
}) })
function hand() { // function hand() {
const params = { // console.log(res)
type: activeIndex.value, // // handleApi(params)
page: currentPage1.value, // }
pageSize: pageSize1.value,
resourceIdList: '1,2,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20' const params = {
} current: currentPage1.value,
handleApi(params)
}
const obj = {
type: activeIndex.value, type: activeIndex.value,
page: currentPage1.value,
pageSize: pageSize1.value, pageSize: pageSize1.value,
resourceIdList: '1,2,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20' sortField: '',
sortOrder: '',
userId: '3',
} }
handleApi(obj)
const datalist = ref([
{
description: '',
id: '',
img: '',
name: '',
path: '',
status: '',
tags: '',
type: '',
},
])
const getDatalist = async () => {
const res =
await SeResourceFavourControllerService.listPostByPageUsingPost3(params)
datalist.value = res.data.records
total.value = res.data.total
console.log(datalist.value[0])
}
getDatalist()
// hand()
// const obj = {
// type: activeIndex.value,
// page: currentPage1.value,
// pageSize: pageSize1.value,
// sortField:'',
// sortOrder:'',
// resourceIdList: ''
// }
// handleApi(obj)
//========================= //=========================
const activeName = ref('first') const activeName = ref('first')
const handleClick = (tab: TabsPaneContext, event: Event) => { const handleClick = (tab: TabsPaneContext, event: Event) => {
console.log(tab, event) console.log(tab, event)
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@ -200,7 +251,7 @@ const handleClick = (tab: TabsPaneContext, event: Event) => {
justify-content: center; justify-content: center;
} }
.example-pagination-block+.example-pagination-block { .example-pagination-block + .example-pagination-block {
margin-top: 10px; margin-top: 10px;
} }
@ -337,7 +388,7 @@ const handleClick = (tab: TabsPaneContext, event: Event) => {
align-items: center; align-items: center;
} }
.ResClaDic>p { .ResClaDic > p {
font-family: Inter, Inter; font-family: Inter, Inter;
font-weight: 500; font-weight: 500;
font-size: 20px; font-size: 20px;
@ -348,8 +399,6 @@ const handleClick = (tab: TabsPaneContext, event: Event) => {
} }
.item_2-2, .item_2-2,
.item_2-3,
.item_2-4,
.item_2-5 { .item_2-5 {
width: 100%; width: 100%;
height: 300px; height: 300px;
@ -361,6 +410,18 @@ const handleClick = (tab: TabsPaneContext, event: Event) => {
border-radius: 6px; border-radius: 6px;
margin-bottom: 32px; margin-bottom: 32px;
} }
.item_2-3,
.item_2-4 {
width: 100%;
height: 300px;
margin-top: 20px;
border-left: 1px solid #e4e4e4;
border-top: 1px solid #e4e4e4;
overflow: hidden;
box-shadow: 2px 2px 2px 2px rgba(214, 212, 212, 0.5);
border-radius: 6px;
margin-bottom: 32px;
}
.Page-2 { .Page-2 {
width: 100%; width: 100%;
@ -368,7 +429,7 @@ const handleClick = (tab: TabsPaneContext, event: Event) => {
position: flex; position: flex;
justify-content: center; justify-content: center;
background-color: #fff; background-color: #fff;
border-top: 1px solid rgb(229, 227, 227, .5); border-top: 1px solid rgb(229, 227, 227, 0.5);
border-bottom: 1px solid rgb(229, 227, 227, .5); border-bottom: 1px solid rgb(229, 227, 227, 0.5);
} }
</style> </style>

@ -155,6 +155,7 @@ const goToAnotherPage = (address) => {
<ul v-if="recordList.length > 0"> <ul v-if="recordList.length > 0">
<li v-for="record in recordList" :key="record.id" v-loading="loading"> <li v-for="record in recordList" :key="record.id" v-loading="loading">
<input <input
style="display: flex"
type="checkbox" type="checkbox"
:value="record.id" :value="record.id"
@change="toggleSelection(record.id)" @change="toggleSelection(record.id)"
@ -241,29 +242,30 @@ ul {
padding: 10; padding: 10;
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
justify-content: start; justify-content: start;
} }
li { li {
/* margin-bottom: 30px; */
transition: filter 0.3s; /* 添加过渡动画 */ transition: filter 0.3s; /* 添加过渡动画 */
flex: 0 0 20%; /* flex: 1 0 20%; */
width: calc(20% - 20px);
flex-direction: column; flex-direction: column;
align-items: center;
margin-bottom: 10px; text-align: center;
/* margin: 0 15px; */
padding: 10px; padding: 10px;
box-sizing: border-box; box-sizing: border-box;
transition: box-shadow 0.3s; transition: box-shadow 0.3s;
cursor: pointer; cursor: pointer;
align-items: center;
} }
li:hover { li:hover {
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2); box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2);
} }
.img { .img {
width: 100%; display: block;
height: 100%; width: 250px;
height: 250px;
} }
</style> </style>

@ -4,7 +4,13 @@ import { ElMessage, ElMessageBox } from 'element-plus'
import { id } from 'element-plus/es/locales.mjs' import { id } from 'element-plus/es/locales.mjs'
import * as echarts from 'echarts' import * as echarts from 'echarts'
import { useRoute } from 'vue-router' import { useRoute } from 'vue-router'
import { getCourseList, addCourse, editCourse, deleteCourse, getCourseInfo } from '@/api/courseChaptersApi' import {
getCourseList,
addCourse,
editCourse,
deleteCourse,
getCourseInfo,
} from '@/api/courseChaptersApi'
const route = useRoute() const route = useRoute()
// id id // id id
// targetId // targetId
@ -49,11 +55,16 @@ const handleClose = () => {
// //
const submit = async () => { const submit = async () => {
if (flog.value) { if (flog.value) {
await editCourse({ id: activeIndex.value, content: formData.value.description }) await editCourse({
id: activeIndex.value,
content: formData.value.description,
})
} else { } else {
await addCourse({ objectiveId: activeIndex.value, content: formData.value.description }) await addCourse({
objectiveId: activeIndex.value,
content: formData.value.description,
})
} }
getList() getList()
dialogVisible.value = false dialogVisible.value = false
formData.value.description = '' formData.value.description = ''
@ -79,7 +90,6 @@ const submit = async () => {
// }) // })
// close() // close()
// flog.value = false // flog.value = false
} }
const close = () => { const close = () => {
formData.value = { formData.value = {
@ -117,7 +127,7 @@ const del = async (obj) => {
await ElMessageBox.confirm('你确认要删除该课程目标吗', '温馨提示', { await ElMessageBox.confirm('你确认要删除该课程目标吗', '温馨提示', {
type: 'warning', type: 'warning',
confirmButtonText: '确认', confirmButtonText: '确认',
cancelButtonText: '取消' cancelButtonText: '取消',
}) })
await deleteCourse({ id: obj.id }) await deleteCourse({ id: obj.id })
ElMessage.success('删除成功') ElMessage.success('删除成功')
@ -145,9 +155,9 @@ const data = ref({})
const courseId = ref(0) const courseId = ref(0)
onMounted(async () => { onMounted(async () => {
courseId.value = route.query.id courseId.value = route.query.id
console.log(courseId.value); console.log(courseId.value)
getList() getList()
console.log(data.value); console.log(data.value)
let chartDom = document.getElementById('main') let chartDom = document.getElementById('main')
let myChart = echarts.init(chartDom) let myChart = echarts.init(chartDom)
let option let option
@ -197,7 +207,9 @@ onMounted(async () => {
<div class="topContent"> <div class="topContent">
<div class="title">| 课程总目标</div> <div class="title">| 课程总目标</div>
<div class="content1"> <div class="content1">
<textarea class="textarea" @change="textChange" v-model="text">文本内容</textarea> <textarea class="textarea" @change="textChange" v-model="text">
文本内容</textarea
>
</div> </div>
</div> </div>
<div class="footContent"> <div class="footContent">
@ -208,13 +220,17 @@ onMounted(async () => {
</div> </div>
</div> </div>
<div class="rightContent"> <div class="rightContent">
<div class="title" style=" <div
class="title"
style="
width: 100%; width: 100%;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: space-between; justify-content: space-between;
padding: 0 20px; padding: 0 20px;
height: 60px;"> height: 60px;
"
>
<div class="left2">| 课程分目标</div> <div class="left2">| 课程分目标</div>
<div class="right2"> <div class="right2">
<!-- <el-button type="primary" @click="addBook">新增</el-button> --> <!-- <el-button type="primary" @click="addBook">新增</el-button> -->
@ -223,7 +239,10 @@ onMounted(async () => {
<div class="content2"> <div class="content2">
<el-scrollbar height="600px"> <el-scrollbar height="600px">
<ul class="objectLi"> <ul class="objectLi">
<li v-for="(item, index) in data.courseObjectivesTrees" :key="item.id"> <li
v-for="(item, index) in data.courseObjectivesTrees"
:key="item.id"
>
<div class="courseObject"> <div class="courseObject">
<!-- {{ filterTarger(item.targetId) }} --> <!-- {{ filterTarger(item.targetId) }} -->
<div class="courseObject1">{{ item.name }}</div> <div class="courseObject1">{{ item.name }}</div>
@ -231,7 +250,9 @@ onMounted(async () => {
<!-- <el-button class="edit" type="text" @click="editBook(item)"> <!-- <el-button class="edit" type="text" @click="editBook(item)">
编辑 编辑
</el-button> --> </el-button> -->
<el-button type="primary" @click="addBook(item.id)">新增</el-button> <el-button type="primary" @click="addBook(item.id)">
新增
</el-button>
</div> </div>
</div> </div>
<div class="smallContent"> <div class="smallContent">
@ -246,10 +267,18 @@ onMounted(async () => {
<!-- {{ filterTarger(obj.targetId) }} --> <!-- {{ filterTarger(obj.targetId) }} -->
</div> </div>
<div class="partObject2"> <div class="partObject2">
<el-button class="edit" type="text" @click="editBook(obj)"> <el-button
class="edit"
type="text"
@click="editBook(obj)"
>
编辑 编辑
</el-button> </el-button>
<el-button class="destroy" type="text" @click="del(obj)"> <el-button
class="destroy"
type="text"
@click="del(obj)"
>
删除 删除
</el-button> </el-button>
</div> </div>
@ -267,8 +296,13 @@ onMounted(async () => {
</div> </div>
</div> </div>
</div> </div>
<el-dialog v-if="dialogVisible" v-model="dialogVisible" :title="flog ? '编辑' : '新增'" width="500" <el-dialog
:before-close="handleClose"> v-if="dialogVisible"
v-model="dialogVisible"
:title="flog ? '编辑' : '新增'"
width="500"
:before-close="handleClose"
>
<el-form :model="formData" label-width="auto" style="max-width: 600px"> <el-form :model="formData" label-width="auto" style="max-width: 600px">
<!-- <el-form-item label="目标" prop="target"> <!-- <el-form-item label="目标" prop="target">
<el-select v-model="formData.target" placeholder="Select" size="large" style="width: 240px"> <el-select v-model="formData.target" placeholder="Select" size="large" style="width: 240px">
@ -277,7 +311,10 @@ onMounted(async () => {
</el-select> </el-select>
</el-form-item> --> </el-form-item> -->
<el-form-item label="内容" prop="description"> <el-form-item label="内容" prop="description">
<el-input v-model="formData.description" placeholder="请输入内容"></el-input> <el-input
v-model="formData.description"
placeholder="请输入内容"
></el-input>
</el-form-item> </el-form-item>
</el-form> </el-form>
<template #footer> <template #footer>
@ -380,7 +417,7 @@ const li
background-color: #fff; background-color: #fff;
background-image: linear-gradient(#c7e3ff, #ffffff); background-image: linear-gradient(#c7e3ff, #ffffff);
.objectLi>li { .objectLi > li {
width: 845px; width: 845px;
height: 250px; height: 250px;
// margin: 40px; // margin: 40px;
@ -423,7 +460,7 @@ const li
background-image: linear-gradient(#c7e3ff, #ffffff); background-image: linear-gradient(#c7e3ff, #ffffff);
} }
.small>li { .small > li {
// display: inline-flex; // display: inline-flex;
width: 650px; width: 650px;
height: 150px; height: 150px;

@ -3,7 +3,7 @@ import { ref, onMounted } from 'vue'
import { ElMessage, ElMessageBox } from 'element-plus' import { ElMessage, ElMessageBox } from 'element-plus'
import { id } from 'element-plus/es/locales.mjs' import { id } from 'element-plus/es/locales.mjs'
import * as echarts from 'echarts' import * as echarts from 'echarts'
import {useRoute } from 'vue-router' import { useRoute } from 'vue-router'
import { getCourseList } from '@/api/courseChaptersApi' import { getCourseList } from '@/api/courseChaptersApi'
const route = useRoute() const route = useRoute()
// id id // id id
@ -15,10 +15,26 @@ const booksList = ref([
]) ])
const courseList = ref([ const courseList = ref([
{ id: 1, specific: '思政目标', booklist: [{ id: 1, targetId: 1, introduce: '内容111111' }] }, {
{ id: 2, specific: '知识目标', booklist: [{ id: 1, targetId: 1, introduce: '内容222222' }] }, id: 1,
{ id: 3, specific: '能力目标', booklist: [{ id: 1, targetId: 1, introduce: '内容333333' }] }, specific: '思政目标',
{ id: 4, specific: '素质目标', booklist: [{ id: 1, targetId: 1, introduce: '内容444444' }] }, booklist: [{ id: 1, targetId: 1, introduce: '内容111111' }],
},
{
id: 2,
specific: '知识目标',
booklist: [{ id: 1, targetId: 1, introduce: '内容222222' }],
},
{
id: 3,
specific: '能力目标',
booklist: [{ id: 1, targetId: 1, introduce: '内容333333' }],
},
{
id: 4,
specific: '素质目标',
booklist: [{ id: 1, targetId: 1, introduce: '内容444444' }],
},
]) ])
const targetList = ref([ const targetList = ref([
{ {
@ -115,7 +131,9 @@ const editBook = (obj) => {
} }
const del = (id) => { const del = (id) => {
// console.log(id); // console.log(id);
courseList.booksList.value = booksList.value.filter((item) => item.id !== id) courseList.value.booksList.value = booksList.value.filter(
(item) => item.id !== id,
)
} }
// const disableChange = (id) => { // const disableChange = (id) => {
@ -139,20 +157,19 @@ const updateDisabledStatus = () => {
} }
}) })
} }
const list=ref([]) const list = ref([])
const content88=ref() const content88 = ref()
const courseId = ref(0) const courseId = ref(0)
onMounted(async() => { onMounted(async () => {
courseId.value = route.query.id courseId.value = route.query.id
console.log(courseId.value); console.log(courseId.value)
const res = await getCourseList({ id: courseId.value }) const res = await getCourseList({ id: courseId.value })
console.log(res); console.log(res)
list.value=res.data list.value = res.data
console.log(list.value); console.log(list.value)
content88.value = list.value[0].contents[0].content content88.value = list.value[0].contents[0].content
console.log(list.value[0].contents[0].content); console.log(list.value[0].contents[0].content)
console.log(content88.value); console.log(content88.value)
let chartDom = document.getElementById('main') let chartDom = document.getElementById('main')
let myChart = echarts.init(chartDom) let myChart = echarts.init(chartDom)
@ -203,7 +220,9 @@ onMounted(async() => {
<div class="topContent"> <div class="topContent">
<div class="title">| 课程总目标</div> <div class="title">| 课程总目标</div>
<div class="content1"> <div class="content1">
<textarea class="textarea" @change="textChange">{{ content88 }}</textarea> <textarea class="textarea" @change="textChange">{{
content88
}}</textarea>
</div> </div>
</div> </div>
<div class="footContent"> <div class="footContent">
@ -214,13 +233,17 @@ onMounted(async() => {
</div> </div>
</div> </div>
<div class="rightContent"> <div class="rightContent">
<div class="title" style=" <div
class="title"
style="
width: 100%; width: 100%;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: space-between; justify-content: space-between;
padding: 0 20px; padding: 0 20px;
height: 60px;"> height: 60px;
"
>
<div class="left2">| 课程分目标</div> <div class="left2">| 课程分目标</div>
<div class="right2"> <div class="right2">
<!-- <el-button type="primary" @click="addBook">新增</el-button> --> <!-- <el-button type="primary" @click="addBook">新增</el-button> -->
@ -237,7 +260,9 @@ onMounted(async() => {
<!-- <el-button class="edit" type="text" @click="editBook(item)"> <!-- <el-button class="edit" type="text" @click="editBook(item)">
编辑 编辑
</el-button> --> </el-button> -->
<el-button type="primary" @click="addBook(index)">新增</el-button> <el-button type="primary" @click="addBook(index)">
新增
</el-button>
</div> </div>
</div> </div>
<div class="smallContent"> <div class="smallContent">
@ -247,14 +272,22 @@ onMounted(async() => {
<div class="partObject"> <div class="partObject">
<div class="partObject1"> <div class="partObject1">
<!-- {{ item.introduce }} --> <!-- {{ item.introduce }} -->
课程目标{{ i+1 }} 课程目标{{ i + 1 }}
<!-- {{ filterTarger(obj.targetId) }} --> <!-- {{ filterTarger(obj.targetId) }} -->
</div> </div>
<div class="partObject2"> <div class="partObject2">
<el-button class="edit" type="text" @click="editBook(obj)"> <el-button
class="edit"
type="text"
@click="editBook(obj)"
>
编辑 编辑
</el-button> </el-button>
<el-button class="destroy" type="text" @click="del(obj.id)"> <el-button
class="destroy"
type="text"
@click="del(obj.id)"
>
删除 删除
</el-button> </el-button>
</div> </div>
@ -272,7 +305,13 @@ onMounted(async() => {
</div> </div>
</div> </div>
</div> </div>
<el-dialog v-if="dialogVisible" v-model="dialogVisible" title="新增目标" width="500" :before-close="handleClose"> <el-dialog
v-if="dialogVisible"
v-model="dialogVisible"
title="新增目标"
width="500"
:before-close="handleClose"
>
<el-form :model="formData" label-width="auto" style="max-width: 600px"> <el-form :model="formData" label-width="auto" style="max-width: 600px">
<!-- <el-form-item label="目标" prop="target"> <!-- <el-form-item label="目标" prop="target">
<el-select v-model="formData.target" placeholder="Select" size="large" style="width: 240px"> <el-select v-model="formData.target" placeholder="Select" size="large" style="width: 240px">
@ -281,7 +320,10 @@ onMounted(async() => {
</el-select> </el-select>
</el-form-item> --> </el-form-item> -->
<el-form-item label="内容" prop="description"> <el-form-item label="内容" prop="description">
<el-input v-model="formData.description" placeholder="请输入内容"></el-input> <el-input
v-model="formData.description"
placeholder="请输入内容"
></el-input>
</el-form-item> </el-form-item>
</el-form> </el-form>
<template #footer> <template #footer>

@ -19,7 +19,7 @@ function _callSuper(t, o, e) {
} }
function _isNativeReflectConstruct() { function _isNativeReflectConstruct() {
try { try {
var t = !Boolean.prototype.valueOf.call( let t = !Boolean.prototype.valueOf.call(
Reflect.construct(Boolean, [], function () {}), Reflect.construct(Boolean, [], function () {}),
) )
} catch (t) {} } catch (t) {}
@ -190,7 +190,7 @@ function _unsupportedIterableToArray(o, minLen) {
} }
function _arrayLikeToArray(arr, len) { function _arrayLikeToArray(arr, len) {
if (len == null || len > arr.length) len = arr.length if (len == null || len > arr.length) len = arr.length
for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i] for (let i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]
return arr2 return arr2
} }
function _nonIterableSpread() { function _nonIterableSpread() {

@ -1,9 +1,11 @@
<script lang="ts" setup> <script lang="ts" setup>
import { ref } from 'vue' import { ref } from 'vue'
// import axios from 'axios'
import { CourseResourceControllerService } from '../../../../generated/services/CourseResourceControllerService' import { CourseResourceControllerService } from '../../../../generated/services/CourseResourceControllerService'
const props = defineProps(['dafulIndex']) const props = defineProps(['dafulIndex'])
import { QuillEditor } from '@vueup/vue-quill' import { QuillEditor } from '@vueup/vue-quill'
import '@vueup/vue-quill/dist/vue-quill.snow.css' import '@vueup/vue-quill/dist/vue-quill.snow.css'
import { ElMessage } from 'element-plus'
// //
const visibleDramwer = ref(false) const visibleDramwer = ref(false)
// //
@ -63,12 +65,17 @@ const selectOp = ref([
{ label: '文件', value: '5' }, { label: '文件', value: '5' },
{ label: '音频', value: '6' }, { label: '音频', value: '6' },
]) ])
const handleSel = () => {}
// const fileList = ref([])
import type { UploadProps, UploadUserFile } from 'element-plus' function clearFileList() {
fileList.value.length = 0
}
const handleSel = () => {
fileList.value.length = 0
}
const fileList = ref<UploadUserFile[]>([]) //
import type { UploadProps } from 'element-plus'
const handleRemove: UploadProps['onRemove'] = (uploadFile, uploadFiles) => { const handleRemove: UploadProps['onRemove'] = (uploadFile, uploadFiles) => {
console.log(uploadFile, uploadFiles) console.log(uploadFile, uploadFiles)
@ -77,6 +84,82 @@ const handleRemove: UploadProps['onRemove'] = (uploadFile, uploadFiles) => {
const handlePreview: UploadProps['onPreview'] = (file) => { const handlePreview: UploadProps['onPreview'] = (file) => {
console.log(file) console.log(file)
} }
const formRef = ref()
function isSubmit() {
formRef.value.validate((valid, fields) => {
if (valid) {
const params = {
name: formModel.value.name,
type: selectVal.value,
img: fileList.value[0]?.raw,
description: formModel.value.description,
}
console.log('根据参数:', params, '去调用接口???')
} else {
console.log('error submit!', fields)
}
})
}
// upd
const beforeAvatarUpload = (rawFile) => {
console.log('执行了')
switch (+selectVal.value) {
case 1:
if (rawFile.type !== 'application/vnd.ms-powerpoint') {
clearFileList()
ElMessage.error('必须是ppt文件!')
} else {
clearFileList()
fileList.value.push(rawFile)
}
break
case 2:
if (!rawFile.type.startsWith('image/')) {
clearFileList()
ElMessage.error('必须是??文件!')
} else {
clearFileList()
fileList.value.push(rawFile)
}
break
// case 3:
// if (false) {
// clearFileList()
// ElMessage.error('??')
// } else {
// clearFileList()
// fileList.value.push(rawFile)
// }
// break
// case 4:
// if (false) {
// clearFileList()
// ElMessage.error('??')
// } else {
// clearFileList()
// fileList.value.push(rawFile)
// }
// break
// case 5:
// if (false) {
// clearFileList()
// ElMessage.error('??')
// } else {
// clearFileList()
// fileList.value.push(rawFile)
// }
// break
// case 6:
// if (false) {
// clearFileList()
// ElMessage.error('??')
// } else {
// clearFileList()
// fileList.value.push(rawFile)
// }
// break
}
}
</script> </script>
<template> <template>
<el-drawer <el-drawer
@ -118,11 +201,13 @@ const handlePreview: UploadProps['onPreview'] = (file) => {
<el-form-item label="上传资源" prop="fileList"> <el-form-item label="上传资源" prop="fileList">
<el-upload <el-upload
v-model:file-list="fileList" v-model:file-list="fileList"
:limit="1"
class="upload-demo" class="upload-demo"
action="https://run.mocky.io/v3/9d059bf9-4660-45f2-925d-ce80ad6c4d15" action="https://run.mocky.io/v3/9d059bf9-4660-45f2-925d-ce80ad6c4d15"
:on-preview="handlePreview" :on-preview="handlePreview"
:on-remove="handleRemove" :on-remove="handleRemove"
list-type="picture" list-type="picture"
:before-upload="beforeAvatarUpload"
> >
<el-button type="primary">点击上传资源</el-button> <el-button type="primary">点击上传资源</el-button>
<template #tip> <template #tip>
@ -135,7 +220,7 @@ const handlePreview: UploadProps['onPreview'] = (file) => {
<el-form-item label="资源简介" prop="description"> <el-form-item label="资源简介" prop="description">
<div class="editor"> <div class="editor">
<quill-editor <quill-editor
v-model:description="formModel.description" v-model:content="formModel.description"
content-type="html" content-type="html"
theme="snow" theme="snow"
></quill-editor> ></quill-editor>
@ -143,7 +228,7 @@ const handlePreview: UploadProps['onPreview'] = (file) => {
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary">取消</el-button> <el-button type="primary">取消</el-button>
<el-button type="info">确定</el-button> <el-button type="info" @click="isSubmit">确定</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
</el-drawer> </el-drawer>

@ -185,13 +185,13 @@ const onEditResource = (row) => {
<Edit /> <Edit />
</el-icon> </el-icon>
</div> </div>
<div <img
class="vedio" class="img"
@click="generateRecords(resource)" @click="generateRecords(resource)"
style="margin-top: 10px; margin-bottom: 10px" style="margin-top: 10px; margin-bottom: 10px"
> :src="resource.img"
<img :src="resource.img" /> />
</div>
<div class="box" style="display: flex; flex-direction: column"> <div class="box" style="display: flex; flex-direction: column">
<p style="margin-bottom: 10px">{{ resource.name }}</p> <p style="margin-bottom: 10px">{{ resource.name }}</p>
<p style="margin-top: 10px">{{ resource.description }}</p> <p style="margin-top: 10px">{{ resource.description }}</p>
@ -243,7 +243,6 @@ const onEditResource = (row) => {
} }
.body { .body {
background-color: #fff; background-color: #fff;
height: 100%;
} }
.top { .top {
margin-bottom: 20px; margin-bottom: 20px;
@ -267,13 +266,12 @@ ul {
} }
li { li {
transition: filter 0.3s; /* 添加过渡动画 */ transition: filter 0.3s; /* 添加过渡动画 */
flex: 0 0 20%; width: calc(25% - 25px);
flex-direction: column; flex-direction: column;
align-items: center; align-items: center;
margin-bottom: 10px; margin-bottom: 10px;
padding: 10px; padding: 10px;
box-sizing: border-box; box-sizing: border-box;
transition: box-shadow 0.3s; transition: box-shadow 0.3s;
cursor: pointer; cursor: pointer;
} }
@ -296,4 +294,9 @@ li:hover {
.box p:hover { .box p:hover {
font-weight: bold; font-weight: bold;
} }
.img {
display: block;
width: 250px;
height: 250px;
}
</style> </style>

@ -2,38 +2,38 @@
import conheader from '@/views/home/components/ConHeader.vue' import conheader from '@/views/home/components/ConHeader.vue'
const courses = [ const courses = [
{ {
name: 'Vue.js Basics', name: '软件构造',
image: 'vuejs-basics.jpg', image: 'vuejs-basics.jpg',
hours: 20, hours: 20,
}, },
{ {
name: 'Reac', name: '软件项目管理',
image: 'react-fundamentals.jpg', image: 'react-fundamentals.jpg',
hours: 25, hours: 25,
}, },
{ {
name: 'Reacts', name: 'React',
image: 'react-fundamentals.jpg', image: 'react-fundamentals.jpg',
hours: 25, hours: 25,
}, },
{ {
name: 'React Fund', name: '程序设计',
image: 'react-fundamentals.jpg', image: 'react-fundamentals.jpg',
hours: 25, hours: 25,
}, },
] ]
</script> </script>
<template> <template>
<div class="info_container" style="width: 214px; height: 326px"> <div class="info_container" style="width: 90%; height: 326px">
<conheader title="已开科目"></conheader> <conheader title="已开科目"></conheader>
<div class="info_content" style="width: 214px; height: 264px"> <div class="info_content" style="width: 100%; height: 264px">
<div class="course-list"> <div class="course-list">
<div <div
v-for="(course, index) in courses" v-for="(course, index) in courses"
:key="index" :key="index"
class="course-item" class="course-item"
> >
<img :src="course.image" alt="course image" class="course-image" /> <img :src="course.image" class="course-image" />
<div class="course-info"> <div class="course-info">
<p class="course-name">{{ course.name }}</p> <p class="course-name">{{ course.name }}</p>
<p class="course-hours">{{ course.hours }}</p> <p class="course-hours">{{ course.hours }}</p>
@ -63,7 +63,7 @@ const courses = [
.course-list { .course-list {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
width: 132px;
height: 48px; height: 48px;
} }
.course-item { .course-item {

@ -2,31 +2,31 @@
import conheader from '@/views/home/components/ConHeader.vue' import conheader from '@/views/home/components/ConHeader.vue'
const courses = [ const courses = [
{ {
name: 'Vue.js Basics', name: '软件构造',
image: 'vuejs-basics.jpg', image: 'vuejs-basics.jpg',
hours: 20, hours: 20,
}, },
{ {
name: 'Reac', name: '项目管理',
image: 'react-fundamentals.jpg', image: 'react-fundamentals.jpg',
hours: 25, hours: 25,
}, },
{ {
name: 'Reacts', name: 'React',
image: 'react-fundamentals.jpg', image: 'react-fundamentals.jpg',
hours: 25, hours: 25,
}, },
{ {
name: 'React Fund', name: '程序设计',
image: 'react-fundamentals.jpg', image: 'react-fundamentals.jpg',
hours: 25, hours: 25,
}, },
] ]
</script> </script>
<template> <template>
<div class="info_container" style="width: 214px; height: 326px"> <div class="info_container" style="width: 90%; height: 326px">
<conheader title="我的科目"></conheader> <conheader title="我的科目"></conheader>
<div class="info_content" style="width: 214px; height: 264px"> <div class="info_content" style="width: 100%; height: 264px">
<div class="course-list"> <div class="course-list">
<div <div
v-for="(course, index) in courses" v-for="(course, index) in courses"
@ -63,7 +63,6 @@ const courses = [
.course-list { .course-list {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
width: 132px;
height: 48px; height: 48px;
} }
.course-item { .course-item {

@ -46,19 +46,19 @@ function handleClick() {
justify-content: center; justify-content: center;
align-items: center; align-items: center;
} }
.overlay { // .overlay {
position: absolute; // position: absolute;
top: 181px; // top: 181px;
left: 1278px; // left: 1278px;
width: 40px; // width: 40px;
height: 30px; // height: 30px;
// background-color: lightgray; // // background-color: lightgray;
border: 1px solid black; // border: 1px solid black;
z-index: 1000; // z-index: 1000;
display: flex; // display: flex;
justify-content: center; // justify-content: center;
flex-direction: column; // flex-direction: column;
align-items: center; // align-items: center;
margin-bottom: 10px; // margin-bottom: 10px;
} // }
</style> </style>

@ -95,9 +95,9 @@ onMounted(() => {
<template> <template>
<div ref="echarsDom" class="main"></div> <div ref="echarsDom" class="main"></div>
</template> </template>
<style> <style scoped>
.main { .main {
width: 766px; width: 100%;
height: 352px; height: 352px;
} }
</style> </style>

@ -3,9 +3,9 @@ import echarts from '@/views/home/components/Echart/Echarts.vue'
import conheader from '@/views/home/components/ConHeader.vue' import conheader from '@/views/home/components/ConHeader.vue'
</script> </script>
<template> <template>
<div class="info_container" style="width: 1257px; height: 384px"> <div class="info_container" style="width: 95%; height: 384px">
<conheader title="主页访问数据(次)"></conheader> <conheader title="主页访问数据(次)"></conheader>
<div class="info_content" style="width: 766px; height: 352px"> <div class="info_content" style="width: 75%; height: 100%">
<echarts></echarts> <echarts></echarts>
</div> </div>
</div> </div>

@ -1,15 +1,16 @@
<script setup> <script setup>
import conheader from '@/views/home/components/ConHeader.vue' import conheader from '@/views/home/components/ConHeader.vue'
import { onMounted, ref, computed } from 'vue' import { onMounted, ref, computed } from 'vue'
import { userIdenService, userIdenChangeService } from '@/api/user/user.js' import { userIdenChangeService } from '@/api/user/user.js'
import { Edit } from '@element-plus/icons-vue' import { Edit } from '@element-plus/icons-vue'
import { ElMessage } from 'element-plus' import { ElMessage } from 'element-plus'
const props = defineProps({ const props = defineProps({
data: { data: {
type: Object, type: Object,
}, },
}) })
const id = props.data.id console.log(props.data, 'djegd ')
const formModel = ref() const formModel = ref()
const loading = ref() const loading = ref()
//true //true
@ -27,7 +28,6 @@ const openEditDialog = (row) => {
} }
// //
const saveEdit = () => { const saveEdit = () => {
console.log(editRowIndex.value, 'rowww')
const index = editRowIndex.value const index = editRowIndex.value
if (index !== -1) { if (index !== -1) {
formModel.value[index] = { ...editForm.value } formModel.value[index] = { ...editForm.value }
@ -44,82 +44,64 @@ const cancelEdit = () => {
content: '', content: '',
} }
} }
const identInfo = ref()
//
// const getInfo = async (id) => {
// const res = await userIdenService(id)
// identInfo.value = res
// return res
// }
console.log()
onMounted(() => { onMounted(() => {
// getInfo(id) if (props.data.roleId === 1) {
// getInfo(id) formModel.value = [
// .then((res) => { { par: 'name', name: '姓名', content: props.data.name },
// // 访 getData { par: 'sex', name: '性别', content: props.data.sex },
// console.log(res.data, '000000') { par: 'nationality', name: '民族', content: props.data.nationality },
// identInfo.value = res.data { par: 'profession', name: '专业', content: props.data.profession },
// // { par: 'education', name: '学历', content: props.data.education },
// if (res.data.roleId === 1) { { par: 'degree', name: '学位', content: props.data.degree },
// formModel.value = [ {
// { par: 'name', name: '', content: res.data.name }, par: 'professionalTitle',
// { par: 'sex', name: '', content: res.data.sex }, name: '职称',
// { par: 'nationality', name: '', content: res.data.nationality }, content: props.data.professionalTitle,
// { par: 'profession', name: '', content: res.data.profession }, },
// { par: 'education', name: '', content: res.data.education }, {
// { par: 'degree', name: '', content: res.data.degree }, par: 'emergencyContact',
// { name: '手机号',
// par: 'professionalTitle', content: props.data.emergencyContact,
// name: '', },
// content: res.data.professionalTitle, {
// }, par: 'joinWorkTime',
// { name: '参加工作时间',
// par: 'emergencyContact', content: props.data.joinWorkTime,
// name: '', },
// content: res.data.emergencyContact, {
// }, par: 'politicalStatus',
// { name: '政治面貌',
// par: 'joinWorkTime', content: props.data.politicalStatus,
// name: '', },
// content: res.data.joinWorkTime, ]
// }, } else if (props.data.roleId === 2) {
// { formModel.value = [
// par: 'politicalStatus', { par: 'name', name: '姓名', content: props.data.name },
// name: '', { par: 'sex', name: '性别', content: props.data.sex },
// content: res.data.politicalStatus, { par: 'nationality', name: '民族', content: props.data.nationality },
// }, { par: 'number', name: '学号', content: props.data.number },
// ] { par: 'birthday', name: '生日', content: props.data.birthday },
// } else if (res.data.roleId === 2) { { par: 'phone', name: '手机号', content: props.data.phone },
// formModel.value = [ { par: 'faculty', name: '院系', content: props.data.faculty },
// { par: 'name', name: '', content: res.data.name }, { par: 'major', name: '专业', content: props.data.major },
// { par: 'sex', name: '', content: res.data.sex }, { par: 'yearAge', name: '入学年份', content: props.data.yearAge },
// { par: 'nationality', name: '', content: res.data.nationality }, { par: 'className', name: '班级', content: props.data.className },
// { par: 'number', name: '', content: res.data.number }, ]
// { par: 'birthday', name: '', content: res.data.birthday }, }
// { par: 'phone', name: '', content: res.data.phone }, // else {
// { par: 'faculty', name: '', content: res.data.faculty }, // formModel.value = [
// { par: 'major', name: '', content: res.data.major }, // { name: '', content: res.data.name },
// { par: 'year_age', name: '', content: res.data.year_age }, // { name: '', content: res.data.id },
// { par: 'class_name', name: '', content: res.data.class_name }, // { name: '', content: 9.9 },
// ] // { name: '', content: 9.9 },
// } // { name: '', content: 9.9 },
// // else { // { name: '', content: 9.9 },
// // formModel.value = [ // { name: '', content: 9.9 },
// // { name: '', content: res.data.name }, // { name: '', content: 9.9 },
// // { name: '', content: res.data.id }, // { name: '', content: 9.9 },
// // { name: '', content: 9.9 }, // ]
// // { name: '', content: 9.9 }, // }
// // { name: '', content: 9.9 },
// // { name: '', content: 9.9 },
// // { name: '', content: 9.9 },
// // { name: '', content: 9.9 },
// // { name: '', content: 9.9 },
// // ]
// // }
// })
// .catch((error) => {
// console.error(error)
// })
}) })
// 1 // 1
const drawer2 = ref(false) const drawer2 = ref(false)
@ -127,7 +109,7 @@ const direction = ref('rtl')
function cancelClick() { function cancelClick() {
drawer2.value = false drawer2.value = false
} }
const data1 = ref() const data1 = ref([])
const confirmClick = () => { const confirmClick = () => {
drawer2.value = false drawer2.value = false
data1.value = formModel.value data1.value = formModel.value
@ -135,16 +117,21 @@ const confirmClick = () => {
data1.value.map((item) => (values[item.par] = item.content)) data1.value.map((item) => (values[item.par] = item.content))
const dataToSend = { const dataToSend = {
...values, ...values,
roleId: identInfo.value.roleId, roleId: props.data.roleId,
id: identInfo.value.id, id: props.data.id,
} }
userIdenChangeService(dataToSend).then(() => { console.log(dataToSend, 'datato111')
ElMessage.success('修改成功') userIdenChangeService(dataToSend)
}) .then(() => {
ElMessage.success('修改成功')
})
.catch((error) => {
console.log(error)
})
} }
</script> </script>
<template> <template>
<div class="info_container" style="width: 1265px; height: 306px"> <div class="info_container" style="width: 95%; height: 306px">
<conheader title="个人信息" v-model="drawer2"> <conheader title="个人信息" v-model="drawer2">
<template #drawer> <template #drawer>
<el-drawer v-model="drawer2" :direction="direction" class="table"> <el-drawer v-model="drawer2" :direction="direction" class="table">
@ -203,7 +190,7 @@ const confirmClick = () => {
</conheader> </conheader>
<div <div
class="info_content" class="info_content"
style="width: 776px; height: 244px" style="width: 60%; height: 244px"
v-loading="loading" v-loading="loading"
> >
<div class="item" :key="item.name" v-for="item in formModel"> <div class="item" :key="item.name" v-for="item in formModel">
@ -226,7 +213,7 @@ const confirmClick = () => {
gap: 10px; /* 设置元素之间的间隔 */ gap: 10px; /* 设置元素之间的间隔 */
} }
.item { .item {
width: 176px; width: 100%;
height: 60px; height: 60px;
display: flex; display: flex;
flex-direction: column; flex-direction: column;

@ -9,7 +9,8 @@ const props = defineProps({
type: Object, type: Object,
}, },
}) })
// console.log(props.data.icon, 44444) // const data = ref(props.data, 'dsfd')
console.log(props.data, 44444)
const imageUrl = ref('') const imageUrl = ref('')
// //
const form = ref() const form = ref()
@ -37,7 +38,7 @@ const form = ref()
// code: [{ message: '', trigger: 'blur' }], // code: [{ message: '', trigger: 'blur' }],
// } // }
form.value = props.data form.value = props.data
const formLabelWidth = '140px' const formLabelWidth = '70px'
// //
imageUrl.value = props.data.icon imageUrl.value = props.data.icon
// //
@ -61,15 +62,10 @@ const openFileInput = () => {
input.click() input.click()
document.body.removeChild(input) document.body.removeChild(input)
} }
const upload = async (option) => {
const res = await tool.oss.upload(option.file)
imageUrl.value = res.url
console.log(imageUrl.value)
}
// //
const changeInfo = async () => { const changeInfo = async () => {
const userInfo = { const userInfo = {
username: form.value.username, // username: form.value.username,
phone: form.value.phone, phone: form.value.phone,
id: form.value.id, id: form.value.id,
nickName: form.value.nickName, nickName: form.value.nickName,
@ -82,7 +78,7 @@ const changeInfo = async () => {
} }
</script> </script>
<template> <template>
<div class="ident" style="width: 278px; height: 274px; background: #375fff"> <div class="ident" style="width: 100%; height: 274px; background: #375fff">
<div class="info_container" style="width: 201px; height: 178px"> <div class="info_container" style="width: 201px; height: 178px">
<div class="avater"> <div class="avater">
<img :src="imageUrl" alt="Uploaded" v-if="imageUrl" class="avater" /> <img :src="imageUrl" alt="Uploaded" v-if="imageUrl" class="avater" />
@ -104,11 +100,10 @@ const changeInfo = async () => {
title="登录信息" title="登录信息"
style="width: 800px; text-align: center" style="width: 800px; text-align: center"
> >
<el-form :model="form" style="" :data="form" :rules="rules"> <el-form :model="form" :data="form" :rules="rules">
<el-form-item label="用户名" :label-width="formLabelWidth"> <el-form-item label="用户名" :label-width="formLabelWidth">
<el-input v-model="form.username" autocomplete="off" /> <el-input v-model="form.username" autocomplete="off" />
</el-form-item> </el-form-item>
<el-form-item label="昵称" :label-width="formLabelWidth"> <el-form-item label="昵称" :label-width="formLabelWidth">
<el-input v-model="form.nickName" autocomplete="off" /> <el-input v-model="form.nickName" autocomplete="off" />
</el-form-item> </el-form-item>
@ -187,8 +182,6 @@ span {
text-align: center; text-align: center;
font-style: normal; font-style: normal;
text-transform: none; text-transform: none;
grid-area: element1;
position: relative; position: relative;
margin-left: 27px; margin-left: 27px;
top: 18px; top: 18px;
@ -198,7 +191,6 @@ span {
height: 24px; height: 24px;
border-radius: 100px 100px 100px 100px; border-radius: 100px 100px 100px 100px;
border: 2px solid #ffffff; border: 2px solid #ffffff;
grid-area: element2;
background: #0052d9; background: #0052d9;
border-radius: 32px 32px 32px 32px; border-radius: 32px 32px 32px 32px;
display: flex; display: flex;

@ -16,7 +16,7 @@ function confirmClick() {
} }
</script> </script>
<template> <template>
<div class="info_container" style="width: 222px; height: 174px"> <div class="info_container" style="width: 90%; height: 174px">
<conheader title="学生分组" v-model="drawer2"> <conheader title="学生分组" v-model="drawer2">
<div>编辑</div> <div>编辑</div>
<template #drawer> <template #drawer>

@ -16,7 +16,7 @@ function confirmClick() {
} }
</script> </script>
<template> <template>
<div class="info_container" style="width: 222px; height: 174px"> <div class="info_container" style="width: 90%; height: 174px">
<conheader title="已分组别" v-model="drawer2"> <conheader title="已分组别" v-model="drawer2">
<div>编辑</div> <div>编辑</div>
<template #drawer> <template #drawer>

@ -13,7 +13,7 @@ const props = defineProps({
</template> </template>
<style scoped> <style scoped>
.nav_info { .nav_info {
width: 1265px; width: 95%;
height: 32px; height: 32px;
display: flex; display: flex;
justify-content: start; justify-content: start;
@ -32,7 +32,7 @@ const props = defineProps({
margin-right: 68px; margin-right: 68px;
} }
.intro { .intro {
width: 257px; width: 50%;
height: 22px; height: 22px;
font-family: Inter, Inter; font-family: Inter, Inter;
font-weight: bold; font-weight: bold;

@ -9,38 +9,33 @@ import Class2 from './components/Class2.vue'
import Student2 from './components/Student2.vue' import Student2 from './components/Student2.vue'
import useUserStore from '@/store/modules/user' import useUserStore from '@/store/modules/user'
import { ref, onMounted } from 'vue' import { ref, onMounted } from 'vue'
import { toRaw } from 'vue'
const userStore = useUserStore() const userStore = useUserStore()
// const info = userStore.getUserInfo()
// console.log(info)
const username = ref() const username = ref()
const data = ref(null) const data = ref({})
const infoData = ref()
const flag = ref(false) const flag = ref(false)
const role = ref(null) const role = ref(null)
const rightVisible = ref(false) const rightVisible = ref(false)
const getData = async () => { userStore.getUserInfo().catch((error) => {
await userStore console.log(error)
.getUserInfo() })
.then((response) => {
const res = toRaw(response.result.data)
username.value = res.username
data.value = res
flag.value = true
role.value = data.value.roles[0]
if (role.value === '老师') {
rightVisible.value = true
} else {
rightVisible.value = false
}
console.log(data.value, 333333)
})
.catch((error) => {
console.log(error)
})
}
onMounted(() => { onMounted(() => {
getData() // getData()
username.value = userStore.userName
data.value = userStore.data
infoData.value = userStore.userInfo
// console.log(data.value, '11111')
// console.log(userStore.userInfo, '22222')
// console.log(userStore, 'userStore')
username.value = data.value.username
flag.value = true
role.value = data.value.roles[0]
if (role.value === '老师') {
rightVisible.value = true
} else {
rightVisible.value = false
}
}) })
</script> </script>
<template> <template>
@ -49,28 +44,28 @@ onMounted(() => {
<div class="nav"> <div class="nav">
<welcome :username="username"></welcome> <welcome :username="username"></welcome>
</div> </div>
<div class="info" style="width: 1321px; height: 368px"> <div class="info" style="width: 100%; height: 368px">
<Info :data="data" v-if="flag"></Info> <Info :data="infoData" v-if="flag"></Info>
</div> </div>
<div class="echarts" style="width: 1321px; height: 444px"> <div class="echarts" style="width: 100%; height: 444px">
<echarts></echarts> <echarts></echarts>
</div> </div>
</div> </div>
<div v-if="rightVisible" class="right"> <div v-if="rightVisible" class="right">
<status :data="data" v-if="flag"></status> <status :data="data" v-if="flag"></status>
<div class="class" style="width: 278px; height: 388px"> <div class="class" style="width: 100%; height: 388px">
<Class1></Class1> <Class1></Class1>
</div> </div>
<div class="stu" style="width: 278px; height: 236px"> <div class="stu" style="width: 100%; height: 236px">
<Student1></Student1> <Student1></Student1>
</div> </div>
</div> </div>
<div v-else class="right"> <div v-else class="right">
<status :data="data" v-if="flag"></status> <status :data="data" v-if="flag"></status>
<div class="class" style="width: 278px; height: 388px"> <div class="class" style="width: 100%; height: 388px">
<Class2></Class2> <Class2></Class2>
</div> </div>
<div class="stu" style="width: 278px; height: 236px"> <div class="stu" style="width: 100%; height: 236px">
<Student2></Student2> <Student2></Student2>
</div> </div>
</div> </div>
@ -79,15 +74,16 @@ onMounted(() => {
<style lang="scss" scoped> <style lang="scss" scoped>
.container { .container {
display: flex; display: flex;
width: 100%;
.left { .left {
width: 1321px; width: 80%;
height: 936px; height: 936px;
margin-right: 16px; margin-right: 16px;
display: grid; display: grid;
grid-template-rows: 1fr 1fr 1fr; /* 使用fr单位来平均分布 */ grid-template-rows: 1fr 1fr 1fr; /* 使用fr单位来平均分布 */
height: 300px; /* 设置容器高度 */ height: 300px; /* 设置容器高度 */
.nav { .nav {
width: 1321px; width: 100%;
height: 92px; height: 92px;
background: #ffffff; background: #ffffff;
box-shadow: 0px 1px 2px 0px rgba(0, 0, 0, 0.1); box-shadow: 0px 1px 2px 0px rgba(0, 0, 0, 0.1);
@ -115,7 +111,7 @@ onMounted(() => {
} }
} }
.class { .class {
width: 1321px; width: 80%;
height: 444px; height: 444px;
background: #c57676; background: #c57676;
box-shadow: 0px 1px 2px 0px rgba(0, 0, 0, 0.1); box-shadow: 0px 1px 2px 0px rgba(0, 0, 0, 0.1);
@ -127,7 +123,7 @@ onMounted(() => {
} }
} }
.right { .right {
width: 278px; width: 20%;
height: 930px; height: 930px;
display: flex; display: flex;
flex-direction: column; // flex-direction: column; //

@ -300,7 +300,7 @@ import {
userRegisterService, userRegisterService,
userPhoneRegisterService, userPhoneRegisterService,
userCodeRegisterService, userCodeRegisterService,
} from '@/api/user/user.js' } from '@/api/user/user'
// let loginForm = reactive({ username: 'admin', password: '111111' }) // let loginForm = reactive({ username: 'admin', password: '111111' })
// //
let userStore = useUserStore() let userStore = useUserStore()
@ -371,7 +371,7 @@ const rules = {
code: [{ message: '验证码不能为空', trigger: 'blur' }], code: [{ message: '验证码不能为空', trigger: 'blur' }],
} }
//-- //
const countdown = ref(0) const countdown = ref(0)
let timer let timer
const updateCountdown = () => { const updateCountdown = () => {
@ -385,15 +385,15 @@ onBeforeUnmount(() => {
clearInterval(timer) // clearInterval(timer) //
}) })
// //
// watch(isRegister, () => { watch(isRegister, () => {
// formModel.value = { formModel.value = {
// username: '', username: '',
// password: '', password: '',
// repassword: '', repassword: '',
// phone: '', phone: '',
// code: '', code: '',
// } }
// }) })
// //
watch(isToggle, () => { watch(isToggle, () => {
formModel.value = { formModel.value = {
@ -414,6 +414,7 @@ const checkPasswordMatch = () => {
passwordMatchError.value = '' passwordMatchError.value = ''
} }
} }
//json //json
const handleSubmit = async () => { const handleSubmit = async () => {
// //
@ -467,7 +468,7 @@ const phoneChange = () => {
console.log('开始手机号注册') console.log('开始手机号注册')
isinfo.value = false isinfo.value = false
} }
// //
const phoneReturn = () => { const phoneReturn = () => {
isinfo.value = true isinfo.value = true
} }

File diff suppressed because it is too large Load Diff

@ -1,33 +1,41 @@
<template> <template>
<div id="3d-graph"></div> <div id="3d-graph"></div>
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
// import { useRouter } from 'vue-router' // import { useRouter } from 'vue-router'
import { onMounted, ref,reactive } from 'vue' import { onMounted, ref, reactive } from 'vue'
import ForceGraph3D from '3d-force-graph' import ForceGraph3D from '3d-force-graph'
//@ts-ignore //@ts-ignore
import { CSS2DRenderer, CSS2DObject,} from 'three/examples/jsm/renderers/CSS2DRenderer.js' import {
CSS2DRenderer,
CSS2DObject,
//@ts-expect-error
} from 'three/examples/jsm/renderers/CSS2DRenderer.js'
//@ts-ignore //@ts-ignore
import SpriteText from '../spritetext.js' import SpriteText from '../spritetext.js'
// const $router = useRouter() // const $router = useRouter()
// const jsonData = ref(null) // const jsonData = ref(null)
let Graph = reactive({}) let Graph = reactive({})
const props = defineProps({ const props = defineProps({
width:{ width: {
type:Number, type: Number,
default:window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth, default:
window.innerWidth ||
document.documentElement.clientWidth ||
document.body.clientWidth,
},
height: {
type: Number,
default:
window.innerHeight ||
document.documentElement.clientHeight ||
document.body.clientHeight,
}, },
height:{
type:Number,
default:window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight,
}
}) })
const dom = ref(null) const dom = ref(null)
onMounted(() => { onMounted(() => {
Graph = ForceGraph3D({
Graph = ForceGraph3D({
extraRenderers: [new CSS2DRenderer()], extraRenderers: [new CSS2DRenderer()],
})(document.getElementById('3d-graph') as HTMLElement) })(document.getElementById('3d-graph') as HTMLElement)
.jsonUrl('../../../public/data.json') .jsonUrl('../../../public/data.json')
@ -40,7 +48,7 @@ onMounted(() => {
// console.log(node, 111, Graph.graphData().nodes) // console.log(node, 111, Graph.graphData().nodes)
return new CSS2DObject(nodeEl) return new CSS2DObject(nodeEl)
}) })
.linkLabel((link:any) => link.label) // .linkLabel((link: any) => link.label) //
.linkWidth(0.8) .linkWidth(0.8)
.linkHoverPrecision(0.5) // .linkHoverPrecision(0.5) //
.linkColor(() => '#dd92fd') // 线 .linkColor(() => '#dd92fd') // 线
@ -101,7 +109,6 @@ onMounted(() => {
} else { } else {
return '#dd92fd' return '#dd92fd'
} }
}) })
} else { } else {
// Graph.linkColor(() => '#a4c7fe') // 线 // Graph.linkColor(() => '#a4c7fe') // 线
@ -112,40 +119,40 @@ onMounted(() => {
//@ts-ignore //@ts-ignore
Graph.graphData(graphData) Graph.graphData(graphData)
}) })
dom.value = document.querySelector('canvas') as any dom.value = document.querySelector('canvas') as any
}) })
const setLabel = () => { const setLabel = () => {
//@ts-ignore //@ts-ignore
Graph.linkThreeObject((link:any) => { Graph.linkThreeObject((link: any) => {
// extend link with text sprite // extend link with text sprite
const sprite = new SpriteText(`${link.label}`); const sprite = new SpriteText(`${link.label}`)
sprite.color = '#ccc'; sprite.color = '#ccc'
sprite.textHeight = 1.5; sprite.textHeight = 1.5
return sprite; return sprite
}) })
//@ts-ignore
Graph.linkPositionUpdate((sprite, { start, end }) => {
//@ts-ignore
const middlePos = Object.assign(
//@ts-expect-error
...['x', 'y', 'z'].map((c) => ({
//@ts-ignore //@ts-ignore
Graph.linkPositionUpdate((sprite, { start, end }) => { [c]: start[c] + (end[c] - start[c]) / 2, // calc middle point
//@ts-ignore })),
const middlePos = Object.assign(...['x', 'y', 'z'].map(c => ({ )
//@ts-ignore
[c]: start[c] + (end[c] - start[c]) / 2 // calc middle point
})));
// Position sprite // Position sprite
Object.assign(sprite.position, middlePos); Object.assign(sprite.position, middlePos)
}); })
//@ts-ignore //@ts-ignore
Graph.d3Force('charge').strength(-120); Graph.d3Force('charge').strength(-120)
} }
// const goToEditAtlas = () => { // const goToEditAtlas = () => {
// console.log(jsonData.value) // console.log(jsonData.value)
// $router.push({ name: 'EditAtlas', params: { id: 123 } }) // $router.push({ name: 'EditAtlas', params: { id: 123 } })
// } // }
</script> </script>
<style lang='scss' scoped> <style lang="scss" scoped></style>
</style>

@ -64,7 +64,9 @@
</div> </div>
<div class="sidebar"> <div class="sidebar">
<div class="icon"><img src="/src/assets/images/rjgz.jpg" width="100%" height="100%"></div> <div class="icon">
<img src="/src/assets/images/rjgz.jpg" width="100%" height="100%" />
</div>
<!-- <div class="content"> <!-- <div class="content">
<h3>课程目标</h3> <h3>课程目标</h3>
<div class="btn">了解更多</div> <div class="btn">了解更多</div>
@ -387,7 +389,7 @@ body {
margin-left: 20px; margin-left: 20px;
// background-color: rgb(84, 50, 9) // background-color: rgb(84, 50, 9)
} }
.sidebar .icon{ .sidebar .icon {
width: 100%; width: 100%;
height: 20%; height: 20%;
} }

@ -71,16 +71,20 @@
<!-- </div> --> <!-- </div> -->
<div class="box" style="width: 100%; <div
height: 20%; class="box"
/* background-color: #3374ff; */ style="
display: flex; width: 100%;
flex-wrap: wrap; height: 20%;
flex-direction: row; /* background-color: #3374ff; */
justify-content: space-around; display: flex;
flex-wrap: wrap;
/* background-color: #74a5ff; */ flex-direction: row;
"> justify-content: space-around;
/* background-color: #74a5ff; */
"
>
<!-- <p style="font-size: 14px;color: #6B6B6B;">总学时 {{ item.totalHours }}小时</p> <!-- <p style="font-size: 14px;color: #6B6B6B;">总学时 {{ item.totalHours }}小时</p>
<p style="font-size: 14px;color: #6B6B6B;">总学分 {{item.credit}}</p> <p style="font-size: 14px;color: #6B6B6B;">总学分 {{item.credit}}</p>
<p style="font-size: 14px;color: #6B6B6B;">章节数 xxx章</p> <p style="font-size: 14px;color: #6B6B6B;">章节数 xxx章</p>
@ -97,7 +101,10 @@
<div class="a" style="margin-left: 0px; color: #6b6b6b"> <div class="a" style="margin-left: 0px; color: #6b6b6b">
章节数 {{ item.totalchapter }} 章节数 {{ item.totalchapter }}
</div> </div>
<div class="a" style="margin-left: 29%;color: #6b6b6b;padding-left: 4%;" > <div
class="a"
style="margin-left: 29%; color: #6b6b6b; padding-left: 4%"
>
知识点总数 {{ item.totalKnow }} 知识点总数 {{ item.totalKnow }}
</div> </div>
@ -115,17 +122,21 @@
</div> </div>
<!-- </div> --> <!-- </div> -->
<div class="box" style="width: 100%; <div
height: 20%; class="box"
/* background-color: #3374ff; */ style="
display: flex; width: 100%;
flex-wrap: wrap; height: 20%;
flex-direction: row; /* background-color: #3374ff; */
justify-content: space-around; display: flex;
flex-wrap: wrap;
/* background-color: #74a5ff; */ flex-direction: row;
"> justify-content: space-around;
<div
/* background-color: #74a5ff; */
"
>
<div
class="a" class="a"
style="margin-left: 0px; width: 62%; color: aliceblue" style="margin-left: 0px; width: 62%; color: aliceblue"
> >
@ -137,7 +148,10 @@
<div class="a" style="margin-left: 0px; color: aliceblue"> <div class="a" style="margin-left: 0px; color: aliceblue">
章节数 {{ item.totalchapter }} 章节数 {{ item.totalchapter }}
</div> </div>
<div class="a" style="margin-left: 29%;color: aliceblue;padding-left: 4%;" > <div
class="a"
style="margin-left: 29%; color: aliceblue; padding-left: 4%"
>
知识点总数 {{ item.totalKnow }} 知识点总数 {{ item.totalKnow }}
</div> </div>
<!-- <p style="font-size: 14px;">总学时 {{ item.totalHours }}小时</p> <!-- <p style="font-size: 14px;">总学时 {{ item.totalHours }}小时</p>
@ -166,13 +180,11 @@
</div> </div>
</div> </div>
<div class="con"></div> <div class="con"></div>
<!-- 连接后端时可以去掉注释 --> <!-- 连接后端时可以去掉注释 -->
<div class="but" v-if="!noMoreData" @click="loadItems"> <div class="but" v-if="!noMoreData" @click="loadItems">
{{ buttonFlag ? '正在加载...' : '加载更多' }} {{ buttonFlag ? '正在加载...' : '加载更多' }}
</div> </div>
<p v-else class="cont">数据全部加载完成</p> <p v-else class="cont">数据全部加载完成</p>
</div> </div>
<!-- 底部 --> <!-- 底部 -->
@ -194,10 +206,10 @@
<script lang="ts" setup> <script lang="ts" setup>
// //
import axios from 'axios' // import axios from 'axios'
import { ref, onMounted, onBeforeUnmount, nextTick } from 'vue' import { ref } from 'vue'
import { getPageCourses } from '@/api/user/crouse.js' import { getPageCourses } from '@/api/user/crouse.js'
import { autoResetRef } from '@vueuse/core' // import { autoResetRef } from '@vueuse/core'
// export default{ // export default{
const containerRef = ref(null) const containerRef = ref(null)
// const items = ref([{ // const items = ref([{
@ -211,12 +223,12 @@ const date = ref({
// const loading = ref(false) // const loading = ref(false)
const page = ref(date.value.page) const page = ref(date.value.page)
const main = ref<any>(null) const main = ref<any>(null)
const buttonColor = ref('red') // const buttonColor = ref('red')
const userList = ref<any>([]) const userList = ref<any>([])
// let count = 0 // let count = 0
const showLoadMoreButton = ref(false) // const showLoadMoreButton = ref(false)
const noMoreData = ref(false) const noMoreData = ref(false)
const isLoading = ref(false) // const isLoading = ref(false)
const buttonFlag = ref(false) const buttonFlag = ref(false)
const loadItems = async () => { const loadItems = async () => {
// isLoading.value = true // isLoading.value = true
@ -231,19 +243,16 @@ const loadItems = async () => {
console.log(userList.value, response.data.content) console.log(userList.value, response.data.content)
} }
const loadMore = () => { const loadMore = () => {
date.value.page = page.value++ date.value.page = page.value++
if (date.value.page <= 2) { if (date.value.page <= 2) {
loadItems() loadItems()
} }
} }
const handleScroll = () => { const handleScroll = () => {
const container: any = containerRef.value const container: any = containerRef.value
console.log( console.log(
container.scrollTop, container.scrollTop,
container.clientHeight, container.clientHeight,
@ -256,23 +265,16 @@ const handleScroll = () => {
) { ) {
console.log('到底了') console.log('到底了')
if (buttonFlag.value) { if (buttonFlag.value) {
return alert('正在加载请勿重复滑动') return alert('正在加载请勿重复滑动')
} else { } else {
loadMore() loadMore()
} }
} }
} }
loadMore() loadMore()
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.container-box { .container-box {
height: 700px; height: 700px;
@ -478,16 +480,16 @@ img {
height: 30%; height: 30%;
// background-color: #3374ff; // background-color: #3374ff;
display: flex; display: flex;
flex-direction: row; flex-direction: row;
flex-wrap: wrap; flex-wrap: wrap;
// background-color: #74a5ff; // background-color: #74a5ff;
justify-content: space-around; justify-content: space-around;
} }
.content .txt .box .a { .content .txt .box .a {
width: 39%; width: 39%;
height: 30%; height: 30%;
text-align: center; text-align: center;
font-size:clamp(0.7rem, 0.489rem + 0.4vw, 2rem); font-size: clamp(0.7rem, 0.489rem + 0.4vw, 2rem);
// float: left; // float: left;
// margin-top: 10px; // margin-top: 10px;
// margin-left: 40px; // margin-left: 40px;

@ -39,8 +39,20 @@
<div class="sidebar"> <div class="sidebar">
<div class="sidebar-header"> <div class="sidebar-header">
<div class="sidebar-header-imag"> <div class="sidebar-header-imag">
<div class="sidebar-header-imag1"><img src="/src/assets/images/gd (3).png" width="100%" height="100%"></div> <div class="sidebar-header-imag1">
<div class="sidebar-header-imag2"><img src="/src/assets/images/sjx(1).png" width="100%" height="100%"></div> <img
src="/src/assets/images/gd (3).png"
width="100%"
height="100%"
/>
</div>
<div class="sidebar-header-imag2">
<img
src="/src/assets/images/sjx(1).png"
width="100%"
height="100%"
/>
</div>
</div> </div>
<h1>知识点</h1> <h1>知识点</h1>
<p>共发布225个</p> <p>共发布225个</p>
@ -51,11 +63,17 @@
<div class="content"> <div class="content">
<div class="txt"> <div class="txt">
<div class="txt1">联试题数233 &nbsp;&nbsp;&nbsp;关联学习数22</div> <div class="txt1">联试题数233 &nbsp;&nbsp;&nbsp;关联学习数22</div>
<div class="imag"><img src="/src/assets/images/sjx(1).png" width="100%" height="100%"></div> <div class="imag">
<img
src="/src/assets/images/sjx(1).png"
width="100%"
height="100%"
/>
</div>
</div> </div>
</div> </div>
<div class="lina"> <div class="lina">
<e-charts style="height: 260px;" id="lina" /> <e-charts style="height: 260px" id="lina" />
</div> </div>
<!-- <div id="staff_all_orderCount" style="width: 300px;height:300px;"></div> --> <!-- <div id="staff_all_orderCount" style="width: 300px;height:300px;"></div> -->
<!-- <e-chars class="lina" option="option"/> --> <!-- <e-chars class="lina" option="option"/> -->
@ -64,16 +82,20 @@
<div class="completion"> <div class="completion">
<!-- <div class="echates-title">知识点掌握百分比</div> --> <!-- <div class="echates-title">知识点掌握百分比</div> -->
<div class="box"> <div class="box">
<div id="liquidfill" style="width: 65%; height: 65%; "></div> <div id="liquidfill" style="width: 65%; height: 65%"></div>
<div class="percentage"> <div class="percentage">
<h4>平均完成率:<p>80%</p> <h4>
平均完成率:
<p>80%</p>
</h4> </h4>
</div> </div>
</div> </div>
<div class="box"> <div class="box">
<div id="liquidfil" style="width: 65%; height: 65%; "></div> <div id="liquidfil" style="width: 65%; height: 65%"></div>
<div class="percentage"> <div class="percentage">
<h4>平均完成率:<p>60%</p> <h4>
平均完成率:
<p>60%</p>
</h4> </h4>
</div> </div>
</div> </div>
@ -112,11 +134,11 @@
<h1>49</h1> <h1>49</h1>
<p>80% ~ 100%</p> <p>80% ~ 100%</p>
</div> </div>
<div class="libox" style="border-left: 2px solid #74a5ff;"> <div class="libox" style="border-left: 2px solid #74a5ff">
<h1>3</h1> <h1>3</h1>
<p>60% ~ 79%</p> <p>60% ~ 79%</p>
</div> </div>
<div class="libox" style="border-left: 2px solid #74a5ff;"> <div class="libox" style="border-left: 2px solid #74a5ff">
<h1>4</h1> <h1>4</h1>
<p>59%以下</p> <p>59%以下</p>
</div> </div>
@ -130,20 +152,22 @@
</div> </div>
<div class="lin"></div> <div class="lin"></div>
</div> </div>
</div> </div>
</div> </div>
<!-- 底部 --> <!-- 底部 -->
<div class="footer"> <div class="footer">
<h3>软件工程专业</h3> <h3>软件工程专业</h3>
<h1>教学一体化平台</h1> <h1>教学一体化平台</h1>
<p>关于我们&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp; &nbsp;联系我们&nbsp; &nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp; 服务协议 <p>
关于我们&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp; &nbsp;联系我们&nbsp;
&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp; 服务协议
</p>
<p style="font-size: 13px; margin-top: 70px">
黄淮学院版权所有@2023 湘豫CP备 19005950-1
<br />
违法和不良信息举报 举报电话0xxx-8xxxxxxx 举报邮箱xxxxxxxxx@qq.com
</p> </p>
<p style="font-size: 13px;margin-top: 70px">黄淮学院版权所有@2023 湘豫CP备 19005950-1<br>
违法和不良信息举报 举报电话0xxx-8xxxxxxx 举报邮箱xxxxxxxxx@qq.com</p>
</div> </div>
<div></div> <div></div>
</template> </template>
@ -151,34 +175,34 @@
<script lang="ts" setup> <script lang="ts" setup>
// import axios from 'axios'; // import axios from 'axios';
import { ref, onMounted, markRaw } from 'vue' import { ref, onMounted, markRaw } from 'vue'
import * as echarts from 'echarts'; import * as echarts from 'echarts'
import 'echarts-liquidfill' import 'echarts-liquidfill'
// var ROOT_PATH = 'https://echarts.apache.org/examples'; // var ROOT_PATH = 'https://echarts.apache.org/examples';
// type EChartsOption = echarts.EChartsOption; // type EChartsOption = echarts.EChartsOption;
var option = null let option = null
// dom dom // dom dom
onMounted(() => { onMounted(() => {
const dom = document.getElementById('main') const dom = document.getElementById('main')
// dom echarts // dom echarts
var myChart = echarts.init(dom); let myChart = echarts.init(dom)
console.log(dom, 'dom') console.log(dom, 'dom')
// loading // loading
myChart.showLoading(); myChart.showLoading()
// json // json
fetch('../../../public/nodeList.json').then((res) => { fetch('../../../public/nodeList.json').then((res) => {
res.json().then(graph => { res.json().then((graph) => {
console.log(graph); console.log(graph)
myChart.hideLoading(); myChart.hideLoading()
// node links // node links
option = { option = {
tooltip: {}, tooltip: {},
legend: [ legend: [
{ {
data: graph.categories.map(function (a: { name: string }) { data: graph.categories.map(function (a: { name: string }) {
return a.name; return a.name
}) }),
} },
], ],
series: [ series: [
@ -193,44 +217,35 @@ onMounted(() => {
label: { label: {
show: true, show: true,
position: 'right', position: 'right',
formatter: '{b}' formatter: '{b}',
}, },
labelLayout: { labelLayout: {
hideOverlap: true hideOverlap: true,
}, },
scaleLimit: { scaleLimit: {
min: 0.4, min: 0.4,
max: 2 max: 2,
}, },
lineStyle: { lineStyle: {
color: 'source', color: 'source',
curveness: 0.3 curveness: 0.3,
} },
} },
] ],
}; }
// echarts // echarts
myChart.setOption(option); myChart.setOption(option)
}) })
}) })
// option && myChart.setOption(option); // option && myChart.setOption(option);
}) })
onMounted(() => { onMounted(() => {
const chartInstance: any = ref(null) const chartInstance: any = ref(null)
const updateChart = () => { const updateChart = () => {
chartInstance.value = markRaw( chartInstance.value = markRaw(
echarts.init(document?.getElementById(`liquidfill`,)), echarts.init(document?.getElementById(`liquidfill`)),
) )
const option = { const option = {
series: [ series: [
@ -289,40 +304,38 @@ onMounted(() => {
onMounted(() => { onMounted(() => {
const dom = document.getElementById('lina') const dom = document.getElementById('lina')
// dom echarts // dom echarts
var myChart = echarts.init(dom); let myChart = echarts.init(dom)
console.log(dom, 'dom') console.log(dom, 'dom')
// loading // loading
myChart.showLoading(); myChart.showLoading()
// json // json
fetch('../../../public/nodeList.json').then((res) => { fetch('../../../public/nodeList.json').then((res) => {
res.json().then(graph => { res.json().then((graph) => {
console.log(graph); console.log(graph)
myChart.hideLoading(); myChart.hideLoading()
// node links // node links
option = { option = {
xAxis: { xAxis: {
type: 'category', type: 'category',
boundaryGap: false, boundaryGap: false,
data: ['记忆', '理解', '应用', '分析', '评价'], data: ['记忆', '理解', '应用', '分析', '评价'],
axisLine: { axisLine: {
lineStyle: { lineStyle: {
color: '#5470C6' // X color: '#5470C6', // X
} },
} },
}, },
yAxis: { yAxis: {
type: 'value', type: 'value',
axisLine: { axisLine: {
lineStyle: { lineStyle: {
color: '#5470C6' // Y color: '#5470C6', // Y
} },
}, },
// min:'700', // min:'700',
splitLine: { splitLine: {
show: false show: false,
},
}
}, },
series: [ series: [
{ {
@ -330,28 +343,26 @@ onMounted(() => {
type: 'line', type: 'line',
areaStyle: { areaStyle: {
color: '#76A6FF', color: '#76A6FF',
opacity: 0.5 opacity: 0.5,
}, },
} },
] ],
}; }
// echarts // echarts
myChart.setOption(option); myChart.setOption(option)
}) })
}) })
// option && myChart.setOption(option); // option && myChart.setOption(option);
}) })
// //
onMounted(() => { onMounted(() => {
const chartInstance: any = ref(null) const chartInstance: any = ref(null)
const updateChart = () => { const updateChart = () => {
chartInstance.value = markRaw( chartInstance.value = markRaw(
echarts.init(document?.getElementById(`liquidfil`,)), echarts.init(document?.getElementById(`liquidfil`)),
) )
const option = { const option = {
series: [ series: [
@ -428,7 +439,6 @@ onMounted(() => {
* { * {
margin: 0; margin: 0;
padding: 0; padding: 0;
} }
ul { ul {
@ -461,8 +471,6 @@ img {
background-image: url('/src/assets/images/top.png'); background-image: url('/src/assets/images/top.png');
background-size: 100% 100%; background-size: 100% 100%;
// background:linear-gradient(#74a5ff,#91b7ff,#A4c3ff); // background:linear-gradient(#74a5ff,#91b7ff,#A4c3ff);
} }
// //
@ -477,8 +485,7 @@ img {
width: 24%; width: 24%;
height: 10%; height: 10%;
margin-right: 20px; margin-right: 20px;
// background-color: #6759ff; // background-color: #6759ff;
} }
.header .nav1 ul li { .header .nav1 ul li {
@ -488,7 +495,7 @@ img {
color: white; color: white;
font-size: 12px; font-size: 12px;
text-align: center; text-align: center;
// border-right: 1px solid #FFFFFF; // border-right: 1px solid #FFFFFF;
} }
.header .nav2 { .header .nav2 {
@ -499,7 +506,7 @@ img {
height: 25%; height: 25%;
margin-top: 30px; margin-top: 30px;
// margin-right: -260px; // margin-right: -260px;
// background-color: #6759ff; // background-color: #6759ff;
} }
.header .nav2 ul li { .header .nav2 ul li {
@ -527,17 +534,17 @@ img {
font-size: 50px; font-size: 50px;
margin-top: 23px; margin-top: 23px;
font-weight: bolder; font-weight: bolder;
color: #FFFFFF; color: #ffffff;
float: right; float: right;
margin-right: 173px // float: left; margin-right: 173px; // float: left;
// margin-left: 779px; // margin-left: 779px;
} }
.header p { .header p {
font-size: 15px; font-size: 15px;
margin-top: 102px; margin-top: 102px;
// font-weight:bolder; // font-weight:bolder;
color: #FFFFFF; color: #ffffff;
float: right; float: right;
margin-right: -175px; margin-right: -175px;
} }
@ -558,13 +565,13 @@ img {
} }
.subnav h1 { .subnav h1 {
border-bottom: 4px solid #0052FF; border-bottom: 4px solid #0052ff;
font-size: 20px; font-size: 20px;
width: 10%; width: 10%;
height: 35px; height: 35px;
margin: auto; margin: auto;
font-weight: bolder; font-weight: bolder;
color: #0052FF; color: #0052ff;
text-align: center; text-align: center;
} }
@ -578,7 +585,6 @@ img {
flex-direction: row; flex-direction: row;
flex-wrap: nowrap; flex-wrap: nowrap;
justify-content: space-around; justify-content: space-around;
} }
.chart { .chart {
@ -605,8 +611,8 @@ img {
.sidebar .sidebar-header { .sidebar .sidebar-header {
width: 100%; width: 100%;
height: 7%; height: 7%;
background: linear-gradient(#74a5ff, #91b7ff, #A4c3ff); background: linear-gradient(#74a5ff, #91b7ff, #a4c3ff);
// transform: perspective(3em) rotateY(-6deg); // transform: perspective(3em) rotateY(-6deg);
} }
.sidebar .sidebar-header-imag { .sidebar .sidebar-header-imag {
@ -641,7 +647,7 @@ img {
font-size: 16px; font-size: 16px;
line-height: 30px; line-height: 30px;
// background-color: #728cc4; // background-color: #728cc4;
// transform: perspective(3em) rotateY(-6deg); // transform: perspective(3em) rotateY(-6deg);
} }
.sidebar .sidebar-header p { .sidebar .sidebar-header p {
@ -653,7 +659,7 @@ img {
font-size: 13px; font-size: 13px;
line-height: 30px; line-height: 30px;
// background-color: #728cc4; // background-color: #728cc4;
// transform: perspective(3em) rotateY(-6deg); // transform: perspective(3em) rotateY(-6deg);
} }
.sidebar .sidebar-header a { .sidebar .sidebar-header a {
@ -665,7 +671,7 @@ img {
font-size: 13px; font-size: 13px;
line-height: 30px; line-height: 30px;
// background-color: #728cc4; // background-color: #728cc4;
// transform: perspective(3em) rotateY(-6deg); // transform: perspective(3em) rotateY(-6deg);
} }
.sidebar .sidebar-header-line { .sidebar .sidebar-header-line {
@ -676,17 +682,16 @@ img {
float: left; float: left;
margin-top: 1.5%; margin-top: 1.5%;
// box-shadow: 1.5px -2px #F0F4FA; // box-shadow: 1.5px -2px #F0F4FA;
box-shadow: 0px -2px 3px 2px #F0F4FA; box-shadow: 0px -2px 3px 2px #f0f4fa;
// box-shadow: 1.5px 1px #F0F4FA; // box-shadow: 1.5px 1px #F0F4FA;
// transform: perspective(3em) rotateY(-6deg); // transform: perspective(3em) rotateY(-6deg);
} }
.sidebar .content { .sidebar .content {
width: 100%; width: 100%;
height: 6%; height: 6%;
background: linear-gradient(#74a5ff, #91b7ff, #A4c3ff); background: linear-gradient(#74a5ff, #91b7ff, #a4c3ff);
margin-top: 10px; margin-top: 10px;
} }
.sidebar .content .txt { .sidebar .content .txt {
@ -697,7 +702,6 @@ img {
justify-content: space-between; justify-content: space-between;
flex-wrap: nowrap; flex-wrap: nowrap;
display: flex; display: flex;
} }
.sidebar .content .txt .imag { .sidebar .content .txt .imag {
@ -710,9 +714,8 @@ img {
height: 5%; height: 5%;
font-size: 14px; font-size: 14px;
margin-left: 4px; margin-left: 4px;
color: #FFFFFF; color: #ffffff;
margin-top: 15px; margin-top: 15px;
} }
.sidebar .lina { .sidebar .lina {
@ -772,7 +775,7 @@ img {
display: flex; display: flex;
flex-wrap: nowrap; flex-wrap: nowrap;
justify-content: space-evenly; justify-content: space-evenly;
color: #F0F4FA; color: #f0f4fa;
font-weight: bold; font-weight: bold;
// background-color: #5582dc; // background-color: #5582dc;
} }
@ -782,17 +785,20 @@ img {
height: 90%; height: 90%;
font-size: 15px; font-size: 15px;
line-height: 20px; line-height: 20px;
color: #5470C6; color: #5470c6;
// background-color: #b3c8f2; // background-color: #b3c8f2;
} }
// //
.header1 { .header1 {
position: relative; position: relative;
text-align: center; text-align: center;
border-radius: 100%; border-radius: 100%;
background: linear-gradient(60deg, rgba(84, 58, 183, 1) 0%, rgba(0, 172, 193, 1) 100%); background: linear-gradient(
60deg,
rgba(84, 58, 183, 1) 0%,
rgba(0, 172, 193, 1) 100%
);
// color: rgb(207, 59, 59); // color: rgb(207, 59, 59);
} }
@ -829,12 +835,12 @@ img {
// background-color: white; // background-color: white;
// } // }
.parallax>use { .parallax > use {
/* 使use元素执行move-forever动画 */ /* 使use元素执行move-forever动画 */
animation: move-forever 25s cubic-bezier(.55, .5, .45, .5) infinite; animation: move-forever 25s cubic-bezier(0.55, 0.5, 0.45, 0.5) infinite;
} }
.parallax>use:nth-child(1) { .parallax > use:nth-child(1) {
/* 延迟2秒启动动画 */ /* 延迟2秒启动动画 */
/* 设置动画持续时间为7秒 */ /* 设置动画持续时间为7秒 */
@ -845,7 +851,7 @@ img {
// animation-delay: -2s; // animation-delay: -2s;
} }
.parallax>use:nth-child(2) { .parallax > use:nth-child(2) {
// background-color: #0052FF; // background-color: #0052FF;
animation-delay: -3s; animation-delay: -3s;
animation-duration: 10s; animation-duration: 10s;
@ -888,7 +894,6 @@ img {
// } // }
} }
// //
.knowledge { .knowledge {
width: 100%; width: 100%;
@ -896,7 +901,7 @@ img {
display: flex; display: flex;
flex-direction: row; flex-direction: row;
justify-content: center; justify-content: center;
background-color: #A1C1FF; background-color: #a1c1ff;
// background-color: #A4c3ff; // background-color: #A4c3ff;
padding-top: 20px; padding-top: 20px;
} }
@ -912,7 +917,7 @@ img {
.knowledge .libox h1 { .knowledge .libox h1 {
width: 100%; width: 100%;
height: 50%; height: 50%;
color: #F0F4FA; color: #f0f4fa;
line-height: 50px; line-height: 50px;
text-align: center; text-align: center;
margin: auto; margin: auto;
@ -924,7 +929,7 @@ img {
.knowledge .libox p { .knowledge .libox p {
width: 100%; width: 100%;
height: 50%; height: 50%;
color: #F0F4FA; color: #f0f4fa;
line-height: 50px; line-height: 50px;
text-align: center; text-align: center;
margin: auto; margin: auto;
@ -937,7 +942,7 @@ img {
.box1 { .box1 {
width: 100%; width: 100%;
height: 147px; height: 147px;
background-color: #A1C1FF; background-color: #a1c1ff;
// height: 100%; // height: 100%;
} }
@ -947,11 +952,9 @@ img {
margin: auto; margin: auto;
border-radius: 15px 15px 15px 15px; border-radius: 15px 15px 15px 15px;
background-color: #74a5ff; background-color: #74a5ff;
// background: linear-gradient(#74a5ff, #91b7ff, #A4c3ff); // background: linear-gradient(#74a5ff, #91b7ff, #A4c3ff);
} }
.method li { .method li {
width: 90%; width: 90%;
height: 20%; height: 20%;
@ -960,18 +963,18 @@ img {
line-height: 35px; line-height: 35px;
margin-left: 10px; margin-left: 10px;
padding-top: 10px; padding-top: 10px;
color: #F0F4FA; color: #f0f4fa;
// background-color: #74a5ff; // background-color: #74a5ff;
} }
.box1 .lin{ .box1 .lin {
width: 60%; width: 60%;
height: 3%; height: 3%;
border-radius: 2px 2px 2px 2px; border-radius: 2px 2px 2px 2px;
background-color: #74a5ff; background-color: #74a5ff;
margin: auto; margin: auto;
margin-top: 5.5%; margin-top: 5.5%;
// box-shadow: 1.5px -2px #F0F4FA; // box-shadow: 1.5px -2px #F0F4FA;
box-shadow: 0px -2px 3px 2px #F0F4FA; box-shadow: 0px -2px 3px 2px #f0f4fa;
} }
// //
@ -990,17 +993,17 @@ width: 60%;
text-align: center; text-align: center;
font-size: 15px; font-size: 15px;
padding-top: 40px; padding-top: 40px;
color: #7F9EED; color: #7f9eed;
font-weight: bolder; font-weight: bolder;
} }
.footer h1 { .footer h1 {
width: 100%; width: 100%;
// position: absolute; // position: absolute;
font-family: "kaiti_gb2312"; font-family: 'kaiti_gb2312';
margin-top: 10px; margin-top: 10px;
font-size: 25px; font-size: 25px;
color: #7F9EED; color: #7f9eed;
font-weight: bolder; font-weight: bolder;
} }
@ -1008,10 +1011,10 @@ width: 60%;
width: 100%; width: 100%;
height: 20px; height: 20px;
// position: absolute; // position: absolute;
font-family: "kaiti_gb2312"; font-family: 'kaiti_gb2312';
margin-top: 25px; margin-top: 25px;
font-size: 17px; font-size: 17px;
color: #7F9EED; color: #7f9eed;
} }
.echates-title { .echates-title {
@ -1023,6 +1026,6 @@ width: 60%;
.bo { .bo {
width: 100%; width: 100%;
background: linear-gradient(#74a5ff, #91b7ff, #A4c3ff); background: linear-gradient(#74a5ff, #91b7ff, #a4c3ff);
} }
</style> </style>

@ -1,5 +1,6 @@
{ {
"compilerOptions": { "compilerOptions": {
"allowJs": true,
"target": "ES2020", "target": "ES2020",
"useDefineForClassFields": true, "useDefineForClassFields": true,
"module": "ESNext", "module": "ESNext",

Loading…
Cancel
Save