From 1b177f15f99907bc93360514a12c3e9f9192b67c Mon Sep 17 00:00:00 2001 From: 18571350067 Date: Mon, 13 Sep 2021 11:26:45 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A1=8C=E7=9B=AE=E5=88=97=E8=A1=A8=E3=80=81?= =?UTF-8?q?=E8=AA=B2=E7=A8=8B=E5=88=97=E8=A1=A8=E3=80=81=E8=AA=B2=E4=BB=B6?= =?UTF-8?q?=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 186 +++++++++-------- package.json | 5 +- src/api/course/course.js | 46 +++-- src/api/course/courseware.js | 0 src/api/course/question/question.js | 48 +++++ src/views/course/CourseForm.vue | 61 ++++++ src/views/course/CourseList.vue | 223 +++++---------------- src/views/course/CoursewareList.vue | 54 +++++ src/views/course/courseDetail.vue | 77 ++++--- src/views/course/coursestep/Step1.vue | 164 +++++++++++++++ src/views/course/coursestep/Step2.vue | 110 ++++++++++ src/views/course/question/QuestionList.vue | 185 +++++++++++++++++ 12 files changed, 865 insertions(+), 294 deletions(-) create mode 100644 src/api/course/courseware.js create mode 100644 src/api/course/question/question.js create mode 100644 src/views/course/CourseForm.vue create mode 100644 src/views/course/CoursewareList.vue create mode 100644 src/views/course/coursestep/Step1.vue create mode 100644 src/views/course/coursestep/Step2.vue create mode 100644 src/views/course/question/QuestionList.vue diff --git a/package-lock.json b/package-lock.json index 136474a..824023d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2596,6 +2596,17 @@ "color-convert": "^2.0.1" } }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "optional": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, "cliui": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", @@ -2631,6 +2642,25 @@ "ms": "2.1.2" } }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "optional": true + }, + "loader-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", + "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", + "dev": true, + "optional": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -2655,6 +2685,28 @@ "ansi-regex": "^5.0.0" } }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "optional": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "vue-loader-v16": { + "version": "npm:vue-loader@16.5.0", + "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.5.0.tgz", + "integrity": "sha512-WXh+7AgFxGTgb5QAkQtFeUcHNIEq3PGVQ8WskY5ZiFbWBkOwcCPRs4w/2tVyTbh2q6TVRlO3xfvIukUtjsu62A==", + "dev": true, + "optional": true, + "requires": { + "chalk": "^4.1.0", + "hash-sum": "^2.0.0", + "loader-utils": "^2.0.0" + } + }, "wrap-ansi": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", @@ -6480,6 +6532,16 @@ "minimatch": "^3.0.4" } }, + "draftjs-to-html": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/draftjs-to-html/-/draftjs-to-html-0.9.1.tgz", + "integrity": "sha512-fFstE6+IayaVFBEvaFt/wN8vdj8FsTRzij7dy7LI9QIwf5LgfHFi9zSpvCg+feJ2tbYVqHxUkjcibwpsTpgFVQ==" + }, + "draftjs-utils": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/draftjs-utils/-/draftjs-utils-0.10.2.tgz", + "integrity": "sha512-EstHqr3R3JVcilJrBaO/A+01GvwwKmC7e4TCjC7S94ZeMh4IVmf60OuQXtHHpwItK8C2JCi3iljgN5KHkJboUg==" + }, "duplexer": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", @@ -8569,6 +8631,11 @@ "integrity": "sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg==", "dev": true }, + "html-to-draftjs": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/html-to-draftjs/-/html-to-draftjs-1.5.0.tgz", + "integrity": "sha512-kggLXBNciKDwKf+KYsuE+V5gw4dZ7nHyGMX9m0wy7urzWjKGWyNFetmArRLvRV0VrxKN70WylFsJvMTJx02OBQ==" + }, "html-webpack-plugin": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz", @@ -11374,6 +11441,14 @@ "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", "dev": true }, + "linkify-it": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.2.0.tgz", + "integrity": "sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw==", + "requires": { + "uc.micro": "^1.0.1" + } + }, "load-json-file": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", @@ -13884,6 +13959,16 @@ "sisteransi": "^1.0.5" } }, + "prop-types": { + "version": "15.7.2", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", + "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" + } + }, "proto-list": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", @@ -14105,11 +14190,22 @@ "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-0.5.1.tgz", "integrity": "sha1-DD0L6u2KAclm2Xh793goElKpeao=" }, + "react-draft-wysiwyg": { + "version": "1.14.7", + "resolved": "https://registry.npmjs.org/react-draft-wysiwyg/-/react-draft-wysiwyg-1.14.7.tgz", + "integrity": "sha512-D4X8F/ourvQZuqHzCQ6Vs6Tnt6TbGH58kvHQxC+aZGq+45ko2EyatL6G5C/paMaNKDZq2JRe7yAzykneMLpNOg==", + "requires": { + "classnames": "^2.2.6", + "draftjs-utils": "^0.10.2", + "html-to-draftjs": "^1.5.0", + "linkify-it": "^2.2.0", + "prop-types": "^15.7.2" + } + }, "react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "dev": true + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, "read-pkg": { "version": "5.2.0", @@ -16335,6 +16431,11 @@ "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", "dev": true }, + "uc.micro": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", + "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==" + }, "uglify-js": { "version": "2.8.29", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", @@ -16884,87 +16985,6 @@ } } }, - "vue-loader-v16": { - "version": "npm:vue-loader@16.5.0", - "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.5.0.tgz", - "integrity": "sha512-WXh+7AgFxGTgb5QAkQtFeUcHNIEq3PGVQ8WskY5ZiFbWBkOwcCPRs4w/2tVyTbh2q6TVRlO3xfvIukUtjsu62A==", - "dev": true, - "optional": true, - "requires": { - "chalk": "^4.1.0", - "hash-sum": "^2.0.0", - "loader-utils": "^2.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "optional": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "optional": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "optional": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "optional": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "optional": true - }, - "loader-utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", - "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", - "dev": true, - "optional": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "optional": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, "vue-quill-editor": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/vue-quill-editor/-/vue-quill-editor-3.0.6.tgz", diff --git a/package.json b/package.json index dc5cd07..b9354fe 100644 --- a/package.json +++ b/package.json @@ -16,8 +16,10 @@ "ant-design-vue": "^1.6.2", "axios": "^0.19.0", "core-js": "^3.1.2", + "draftjs-to-html": "^0.9.1", "enquire.js": "^2.1.6", "file-saver": "^2.0.5", + "html-to-draftjs": "^1.5.0", "js-export-excel": "^1.1.4", "jszip": "^3.7.1", "lodash.clonedeep": "^4.5.0", @@ -27,6 +29,7 @@ "mockjs2": "1.0.8", "moment": "^2.24.0", "nprogress": "^0.2.0", + "react-draft-wysiwyg": "^1.14.7", "store": "^2.0.12", "viser-vue": "^2.4.6", "vue": "^2.6.10", @@ -65,4 +68,4 @@ "webpack-theme-color-replacer": "^1.3.12", "webpack": "^4.44.2" } -} \ No newline at end of file +} diff --git a/src/api/course/course.js b/src/api/course/course.js index 1c6d574..36b2d09 100644 --- a/src/api/course/course.js +++ b/src/api/course/course.js @@ -4,9 +4,12 @@ const courseApi = { // add: 'sys/menu/add', get: '/courseManagement/course/details', // update: 'sys/menu/update', -// del: 'sys/menu/delete', + del: 'courseManagement/course/delete', // updateStatus: 'sys/menu/updateStatus', - list: '/courseManagement/course/listPage' + list: '/courseManagement/course/listPage', + coursewareList:'/courseManagement/course/courseware/details', + questionList:'/courseManagement/course/questionList' + } // export function menuAdd (params) { @@ -30,13 +33,14 @@ const courseApi = { // data: params // }) // } -// export function menuDelete (params) { -// return request({ -// url: menuApi.del, -// method: 'post', -// data: params -// }) -// } + +export function deleteCourse (params) { + return request({ + url: courseApi.del, + method: 'delete', + params: params + }) +} // 查询课程列表 export function getCourseList (params) { @@ -56,12 +60,20 @@ export function getCourseDetails (params) { }) } +//通过课程ID获取课件列表 +export function getCoursewareListByCourseId (params) { + return request({ + url: courseApi.coursewareList, + method: 'get', + params: params + }) +} - -// export function menuUpdateStatus (params) { -// return request({ -// url: menuApi.updateStatus, -// method: 'post', -// data: params -// }) -// } +//通过课程ID获取题目列表 +export function getQuestionListByCourseId (params) { + return request({ + url: courseApi.questionList, + method: 'get', + params: params + }) +} diff --git a/src/api/course/courseware.js b/src/api/course/courseware.js new file mode 100644 index 0000000..e69de29 diff --git a/src/api/course/question/question.js b/src/api/course/question/question.js new file mode 100644 index 0000000..1664445 --- /dev/null +++ b/src/api/course/question/question.js @@ -0,0 +1,48 @@ +import request from '@/utils/request' + +const questionApi = { +// add: 'sys/menu/add', + get: '/courseManagement/question/details', +// update: 'sys/menu/update', +// del: 'courseManagement/course/delete', +// updateStatus: 'sys/menu/updateStatus', +// list: '/courseManagement/course/listPage', +// coursewareList:'/courseManagement/course/courseware/details', +// questionList:'/courseManagement/course/questionList' + +} + +// export function menuAdd (params) { +// return request({ +// url: menuApi.add, +// method: 'post', +// data: params +// }) +// } +// export function menuGet (params) { +// return request({ +// url: menuApi.get, +// method: 'post', +// data: params +// }) +// } +// export function menuUpdate (params) { +// return request({ +// url: menuApi.update, +// method: 'post', +// data: params +// }) +// } + + +// 查看课程详情 +export function getQuestionDeatil (params) { + return request({ + url:questionApi.get, + method:'get', + params:params + }) +} + + + diff --git a/src/views/course/CourseForm.vue b/src/views/course/CourseForm.vue new file mode 100644 index 0000000..b1df082 --- /dev/null +++ b/src/views/course/CourseForm.vue @@ -0,0 +1,61 @@ + + + + + diff --git a/src/views/course/CourseList.vue b/src/views/course/CourseList.vue index ed1966b..6dcb311 100644 --- a/src/views/course/CourseList.vue +++ b/src/views/course/CourseList.vue @@ -1,198 +1,83 @@ - - \ No newline at end of file + \ No newline at end of file diff --git a/src/views/course/CoursewareList.vue b/src/views/course/CoursewareList.vue new file mode 100644 index 0000000..d8485d1 --- /dev/null +++ b/src/views/course/CoursewareList.vue @@ -0,0 +1,54 @@ + + diff --git a/src/views/course/courseDetail.vue b/src/views/course/courseDetail.vue index d5f01d2..83c1ba9 100644 --- a/src/views/course/courseDetail.vue +++ b/src/views/course/courseDetail.vue @@ -1,27 +1,56 @@ - - - \ No newline at end of file +import { getCourseDetails } from '@/api/course/course' + +export default { + name: 'details', + components: {}, + data() { + return { + queryParam: { id: this.$route.query.id }, + detailData: {} + } + }, + created: function() { + let parameter = {}; + getCourseDetails(Object.assign(parameter, this.queryParam)).then(res => { this.detailData = res.data }); + }, + methods: { + close () { + this.$router.push({ path: '/course/CourseList', query: { } }); + } + }, + +} + + + \ No newline at end of file diff --git a/src/views/course/coursestep/Step1.vue b/src/views/course/coursestep/Step1.vue new file mode 100644 index 0000000..3cd40ae --- /dev/null +++ b/src/views/course/coursestep/Step1.vue @@ -0,0 +1,164 @@ + + + diff --git a/src/views/course/coursestep/Step2.vue b/src/views/course/coursestep/Step2.vue new file mode 100644 index 0000000..dc50a7f --- /dev/null +++ b/src/views/course/coursestep/Step2.vue @@ -0,0 +1,110 @@ + + + + + diff --git a/src/views/course/question/QuestionList.vue b/src/views/course/question/QuestionList.vue new file mode 100644 index 0000000..1de02f6 --- /dev/null +++ b/src/views/course/question/QuestionList.vue @@ -0,0 +1,185 @@ + + + + + \ No newline at end of file