Commit f7b9295f authored by 纪泽龙's avatar 纪泽龙

题库管理页面的增加删除修改。

parent a40306a3
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* @Author: 纪泽龙 jizelong@qq.com * @Author: 纪泽龙 jizelong@qq.com
* @Date: 2022-06-16 14:52:17 * @Date: 2022-06-16 14:52:17
* @LastEditors: 纪泽龙 jizelong@qq.com * @LastEditors: 纪泽龙 jizelong@qq.com
* @LastEditTime: 2022-09-20 23:37:42 * @LastEditTime: 2022-12-15 14:39:18
* @FilePath: /danger-manage-web/src/main.js * @FilePath: /danger-manage-web/src/main.js
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/ */
...@@ -48,11 +48,14 @@ import VueVideoPlayer from 'vue-video-player' ...@@ -48,11 +48,14 @@ import VueVideoPlayer from 'vue-video-player'
// require videojs style // require videojs style
import 'video.js/dist/video-js.css' import 'video.js/dist/video-js.css'
// import 'vue-video-player/src/custom-theme.css' // import 'vue-video-player/src/custom-theme.css'
Vue.use(VueVideoPlayer, /* { Vue.use(VueVideoPlayer, /* {
options: global default options, options: global default options,
events: global videojs events events: global videojs events
} */) } */)
// require('video.js/dist/video-js.css') // require('video.js/dist/video-js.css')
// require('vue-video-player/src/custom-theme.css') // require('vue-video-player/src/custom-theme.css')
// Vue.use(VideoPlayer) // Vue.use(VideoPlayer)
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* @Author: 纪泽龙 jizelong@qq.com * @Author: 纪泽龙 jizelong@qq.com
* @Date: 2022-09-22 10:59:44 * @Date: 2022-09-22 10:59:44
* @LastEditors: 纪泽龙 jizelong@qq.com * @LastEditors: 纪泽龙 jizelong@qq.com
* @LastEditTime: 2022-09-28 17:52:32 * @LastEditTime: 2022-12-16 16:43:06
* @FilePath: /danger-manage-web/src/views/lessonsProgram/components/Lession.vue * @FilePath: /danger-manage-web/src/views/lessonsProgram/components/Lession.vue
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
--> -->
...@@ -16,38 +16,40 @@ ...@@ -16,38 +16,40 @@
:rules="rules" :rules="rules"
> >
<div class="top flex"> <div class="top flex">
<el-form-item label="课程标题" prop="courseName"> <el-form-item label="题库名称" prop="bankName">
<el-input style="width: 500px" v-model="form.courseName"></el-input> <el-input style="width: 300px" v-model="form.bankName"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="课程类型" prop="courseType"> <el-form-item
<el-select label="归属部门"
v-model="form.courseType" prop="deptId"
placeholder="请选择隐患等级" label-width="140px"
clearable ref="treeItem"
size="small"
> >
<el-option <Treeselect
v-for="course in courseOptions" class="tree"
:key="course.planId" v-model="form.deptId"
:label="course.planName" :options="deptOptions"
:value="course.planId" :show-count="true"
placeholder="请选择归属部门"
@open="treeOpen"
@close="treeClose"
@select="select"
/> />
</el-select>
</el-form-item> </el-form-item>
</div> </div>
<!-- </div> --> <!-- </div> -->
<el-form-item label="课程内容" prop="courseConent"> <!-- <el-form-item label="课程内容" prop="courseConent">
<Editor v-model="form.courseConent" :min-height="192" /> <Editor v-model="form.courseConent" :min-height="192" />
<el-input <el-input
v-show="false" v-show="false"
disabled disabled
v-model="form.courseConent" v-model="form.courseConent"
></el-input> ></el-input>
</el-form-item> </el-form-item> -->
<div class="flex"> <!-- <div class="flex">
<el-form-item label="视频上传" v-if="!readOnly" prop="video"> <el-form-item label="视频上传" v-if="!readOnly" prop="video">
<FileUpload <FileUpload
listType="picture" listType="picture"
...@@ -68,7 +70,7 @@ ...@@ -68,7 +70,7 @@
/> />
<el-input v-show="false" disabled v-model="form.enclosure"></el-input> <el-input v-show="false" disabled v-model="form.enclosure"></el-input>
</el-form-item> </el-form-item>
</div> </div> -->
</el-form> </el-form>
</div> </div>
</template> </template>
...@@ -83,7 +85,18 @@ import { ...@@ -83,7 +85,18 @@ import {
getLessonById, getLessonById,
changeLesson, changeLesson,
} from "@/api/educationPlanExam/lessonsProgram"; } from "@/api/educationPlanExam/lessonsProgram";
import {
listBank,
addBank,
updateBank,
getBank,
} from "@/api/system/questionBank.js";
// 所有部门
import { treeselect } from "@/api/system/dept";
import Treeselect from "@riophae/vue-treeselect";
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
export default { export default {
name: "", name: "",
props: { props: {
...@@ -94,84 +107,123 @@ export default { ...@@ -94,84 +107,123 @@ export default {
components: { components: {
Editor, Editor,
FileUpload, FileUpload,
Treeselect,
}, },
data() { data() {
return { return {
form: { form: {
courseName: "", bankName: "",
courseType: "", // courseType: "",
courseConent: "", // courseConent: "",
video: "", // video: "",
enclosure: "", // enclosure: "",
deptId: null,
}, },
// 归属部门列表
deptOptions: [],
fileListVideo: [], fileListVideo: [],
fileListFile: [], fileListFile: [],
readOnly: false, readOnly: false,
rules: { rules: {
courseName: [ bankName: [
{ required: true, trigger: "blur", message: "课程名称不能为空" }, { required: true, trigger: "blur", message: "课程名称不能为空" },
], ],
courseType: [ deptId: [
{ required: true, trigger: "change", message: "课程类型不能为空" }, { required: true, trigger: "blur", message: "请选择所属部门" },
],
courseConent: [
{ required: true, trigger: "blur", message: "课程内容不能为空" },
],
video: [{ required: true, trigger: "blue", message: "视频不能为空" }],
enclosure: [
{ required: true, trigger: "blur", message: "附件不能为空" },
], ],
// courseType: [
// { required: true, trigger: "change", message: "课程类型不能为空" },
// ],
// courseConent: [
// { required: true, trigger: "blur", message: "课程内容不能为空" },
// ],
// video: [{ required: true, trigger: "blue", message: "视频不能为空" }],
// enclosure: [
// { required: true, trigger: "blur", message: "附件不能为空" },
// ],
}, },
}; };
}, },
computed: { computed: {
// 获取课程类型 // 获取课程类型
...mapGetters(["courseOptions"]), // ...mapGetters(["courseOptions"]),
}, },
created() { created() {
if (this.courseId) { if (this.courseId) {
this.getLessonById(); this.getLessonById();
} }
// 归属部门列表
this.getTreeselect();
}, },
mounted() {}, mounted() {},
methods: { methods: {
// 添加课程 // 添加课程
addLessons(data) { addLessons(data) {
console.log("this.courseId", this.courseId);
if (!this.courseId) { if (!this.courseId) {
console.log("添加"); console.log("添加");
return addLessons(data); return addBank(data);
} else { } else {
console.log("修改"); console.log("修改");
return changeLesson({ courseId: this.courseId, ...data }); return updateBank({ bankId: this.courseId, ...data });
} }
}, },
/** 查询部门下拉树结构 */
getTreeselect() {
treeselect().then((response) => {
this.deptOptions = response.data;
console.log(this.deptOptions);
});
},
// 当树形组件打开
treeOpen() {
document.querySelector(".vue-treeselect__control").style.borderColor = "";
},
// 当属性组件关闭
treeClose(a, b) {
if (!a) {
// 手动添加报红功能,没值的时候报红
document.querySelector(".vue-treeselect__control").style.borderColor =
"red";
this.save();
} else {
document.querySelector(".vue-treeselect__control").style.borderColor =
"";
this.$refs.treeItem.clearValidate();
}
},
select() {},
// 复现 // 复现
getLessonById() { getLessonById() {
getLessonById(this.courseId).then((res) => { getBank(this.courseId).then((res) => {
console.log("res", res);
if (res.code == 200) { if (res.code == 200) {
const data = res.data;
const { courseName, courseType, courseConent, video, enclosure } =
data;
this.form = { this.form = {
courseName, bankName: res.data.bankName,
courseType, deptId: res.data.deptId,
courseConent,
video,
enclosure,
}; };
this.fileListVideo = [ // const data = res.data;
{ // const { bankName, courseType, courseConent, video, enclosure } =
name: courseName + "视频", // data;
url: uploadfile, // this.form = {
}, // bankName,
]; // courseType,
this.fileListFile = [ // courseConent,
{ // video,
name: courseName + "附件", // enclosure,
url: uploadfile, // };
}, // this.fileListVideo = [
]; // {
// name: bankName + "视频",
// url: uploadfile,
// },
// ];
// this.fileListFile = [
// {
// name: bankName + "附件",
// url: uploadfile,
// },
// ];
} }
}); });
}, },
...@@ -207,25 +259,25 @@ export default { ...@@ -207,25 +259,25 @@ export default {
}, },
save(num = 2) { save(num = 2) {
// 因为富文本编辑器会残留<p><br></p>,所以要清 // 因为富文本编辑器会残留<p><br></p>,所以要清
if (this.form.courseConent === "<p><br></p>") { // if (this.form.courseConent === "<p><br></p>") {
this.form.courseConent = ""; // this.form.courseConent = "";
} // }
this.$refs.form.validate((valid) => { this.$refs.form.validate((valid) => {
if (valid) { if (valid) {
// console.log(this.form);
this.addLessons({ ...this.form }).then((res) => { this.addLessons({ ...this.form }).then((res) => {
// 如果添加会传回来,就用传回来的,如果是修改本身就有,就用本身的 // 如果添加会传回来,就用传回来的,如果是修改本身就有,就用本身的
const courseId = res.data || this.courseId; // console.log('res',res)
if (res.code == 200) { const courseId = this.courseId || res;
// if (res.code == 200) {
// 这样调比较纯函数一点 // 这样调比较纯函数一点
if (num == 2) { if (num == 2) {
this.$message({ this.$message({
message: "保存课程成功", message: "保存题库成功",
type: "success", type: "success",
}); });
} else if (num == 3) { } else if (num == 3) {
this.$message({ this.$message({
message: "保存课程成功,请开始录入题目", message: "保存题库成功,请开始录入题目",
type: "success", type: "success",
}); });
} }
...@@ -234,8 +286,19 @@ export default { ...@@ -234,8 +286,19 @@ export default {
this.$parent.$parent.$parent.getList(); this.$parent.$parent.$parent.getList();
return true; return true;
} // }
}); });
} else {
if (!this.form.deptId) {
document.querySelector(
".vue-treeselect__control"
).style.borderColor = "red";
} else {
document.querySelector(
".vue-treeselect__control"
).style.borderColor = "";
this.$refs.treeItem.clearValidate();
}
} }
}); });
}, },
...@@ -250,8 +313,8 @@ export default { ...@@ -250,8 +313,8 @@ export default {
.form-wrapper { .form-wrapper {
padding-top: 22px; padding-top: 22px;
width: 100%; width: 100%;
height: 550px; height: 100px;
overflow: hidden; // overflow: hidden;
// padding-bottom: 10px; // padding-bottom: 10px;
margin-bottom: 20px; margin-bottom: 20px;
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* @Author: 纪泽龙 jizelong@qq.com * @Author: 纪泽龙 jizelong@qq.com
* @Date: 2022-09-22 17:56:05 * @Date: 2022-09-22 17:56:05
* @LastEditors: 纪泽龙 jizelong@qq.com * @LastEditors: 纪泽龙 jizelong@qq.com
* @LastEditTime: 2022-09-28 17:54:16 * @LastEditTime: 2022-12-16 10:23:13
* @FilePath: /danger-manage-web/src/views/lessonsProgram/components/QuestionList.vue * @FilePath: /danger-manage-web/src/views/lessonsProgram/components/QuestionList.vue
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
--> -->
...@@ -10,9 +10,9 @@ ...@@ -10,9 +10,9 @@
<div ref="myBody" class="add-question flex"> <div ref="myBody" class="add-question flex">
<div class="text flex"> <div class="text flex">
<div class="left"> <div class="left">
目前有<span>{{ questionNum }}</span 目前有<span>{{ questionNum || 0}}</span
>道题 >道题
<span class="warn">温馨提示:发布课程前需要进行考试设置</span> <!-- <span class="warn">温馨提示:发布课程前需要进行考试设置</span> -->
</div> </div>
<div class="right">{{courseName}}</div> <div class="right">{{courseName}}</div>
</div> </div>
...@@ -51,8 +51,9 @@ ...@@ -51,8 +51,9 @@
</div> </div>
</div> </div>
</div> </div>
<div class="rightNum flex"> <!-- <div class="rightNum flex">
<div class="left">考试设置</div>
<div class="left">录入考题</div>
<div class="middle flex"> <div class="middle flex">
<div class="left-text">答对题目大于</div> <div class="left-text">答对题目大于</div>
<div> <div>
...@@ -73,7 +74,7 @@ ...@@ -73,7 +74,7 @@
>保存</el-button >保存</el-button
> >
</div> </div>
</div> </div> -->
</div> </div>
</template> </template>
......
...@@ -35,7 +35,7 @@ module.exports = { ...@@ -35,7 +35,7 @@ module.exports = {
// detail: https://cli.vuejs.org/config/#devserver-proxy // detail: https://cli.vuejs.org/config/#devserver-proxy
[process.env.VUE_APP_BASE_API]: { [process.env.VUE_APP_BASE_API]: {
target: process.env.VUE_APP_TARGET, target: process.env.VUE_APP_TARGET,
//target: `http://192.168.31.87:8908/dangerManage`, target: `http://192.168.2.2:8908/dangerManage`,
changeOrigin: true, changeOrigin: true,
pathRewrite: { pathRewrite: {
['^' + process.env.VUE_APP_BASE_API]: '' ['^' + process.env.VUE_APP_BASE_API]: ''
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment