班级管理中作业相关功能的前端代码:
<template>
<div id="homework">
<div class="body">
<div class="container">
<div class="query-form">
<el-row :gutter="20">
<el-col :span="2">
<el-button @click="create" icon="el-icon-plus">发布作业</el-button>
</el-col>
<el-col :offset="13" :span="3">
<el-autocomplete
popper-class="my-autocomplete"
v-model="queryForm.homeworkTitle"
:fetch-suggestions="querySearch"
placeholder="作业标题"
@select="handleSelect">
<i
class="el-icon-edit el-input__icon"
slot="suffix"
@click="handleIconClick">
</i>
<template slot-scope="{ item }">
<div class="name">{{ item.value }}</div>
<span class="addr">{{ item.address }}</span>
</template>
</el-autocomplete>
</el-col>
<el-col :span="3">
<el-button @click="query" icon="el-icon-search" type="primary">搜索</el-button>
</el-col>
</el-row>
</div>
</div>
<div>
<p></p>
</div>
<el-row justify="center" type="flex" style="padding-top: 30px;margin-bottom: 0px">
<el-pagination
:current-page="currentPage"
:page-sizes="[5, 10, 20]"
:page-size="pageSize"
@size-change="handleSizeChange"
@current-change="getPage"
background
layout="total, sizes, prev, pager, next, jumper"
:total="tableData.length"
>
</el-pagination>
</el-row>
<div>
<p></p>
</div>
<button @click="img_get">点击获取图片</button>
<img :src="images" class="showavatar" />
<div class="homework">
<el-table :data="tableData.slice((currentPage-1)*pageSize,currentPage*pageSize)" stripe style="margin-top: 0">
<el-table-column label="作业编号" prop="hid" width="100px"/>
<el-table-column label="作业标题" prop="title"/>
<el-table-column label="作业内容" prop="description"/>
<el-form-item label="img" prop="pic1"/>
<el-table-column label="创建时间" prop="create_time"/>
<el-table-column label="截止年限" prop="ddl_year" width="60px"/>
<el-table-column label="截止月份" prop="ddl_month" width="50px"/>
<el-table-column label="截止日期" prop="ddl_day" width="50px"/>
<el-table-column align="center" label="操作" width="200px">
<template slot-scope="scope" >
<el-button @click="editHomework(scope.row.hid)" size="mini" type="success">编辑
</el-button>
<el-button @click="deleteHomework(scope.row.hid)" size="mini" type="danger">删除
</el-button>
</template>
</el-table-column>
</el-table>
</div>
</div>
<el-dialog :visible.sync="editing" title="发布作业" width="50%">
<el-form :model="entityForm" label-width="68px" ref="form">
<!-- <el-form-item label="作业编号">-->
<!-- <el-input disabled v-model="entityForm.homeworkId"></el-input>-->
<!-- </el-form-item>-->
<el-form-item label="作业标题">
<el-input v-model="entityForm.homeworkTitle"></el-input>
</el-form-item>
<el-form-item label="作业内容">
<el-input type="textarea" v-model="entityForm.homeworkContent"></el-input>
</el-form-item>
<el-form-item label="上传图片">
<el-upload
class="upload-demo"
ref="upload"
action="#"
:before-upload="beforeUploadFile"
:on-change="fileChange"
:on-exceed="exceedFile"
:on-success="handleSuccess"
:headers="file_header"
:on-error="handleError"
:file-list="imgFileList"
list-type="picture">
<el-button size="small" type="primary">点击上传</el-button>
<div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过1mb</div>
</el-upload>
</el-form-item>
<!-- <el-form-item label="创建时间">-->
<!-- <div class="block">-->
<!-- <!– <span class="demonstration">默认</span>–>-->
<!-- <el-date-picker-->
<!-- v-model="value1"-->
<!-- type="datetime"-->
<!-- placeholder="选择日期时间">-->
<!-- </el-date-picker>-->
<!-- </div>-->
<!-- </el-form-item>-->
<el-form-item label="截止时间">
<div class="block">
<!-- <span class="demonstration">默认</span>-->
<el-date-picker
v-model="value2"
type="date"
placeholder="选择日期时间">
</el-date-picker>
</div>
</el-form-item>
</el-form>
<span class="dialog-footer" slot="footer">
<el-button @click="save" type="primary">确 定</el-button>
<el-button @click="editing = false">取 消</el-button>
</span>
</el-dialog>
<el-dialog :visible.sync="edit_editing" title="编辑" width="50%">
<el-form :model="entityForm" label-width="68px" ref="form">
<!-- <el-form-item label="作业编号">-->
<!-- <el-input disabled v-model="entityForm.homeworkId"></el-input>-->
<!-- </el-form-item>-->
<el-form-item label="作业标题">
<el-input v-model="entityForm.homeworkTitle"></el-input>
</el-form-item>
<el-form-item label="作业内容">
<el-input type="textarea" v-model="entityForm.homeworkContent"></el-input>
</el-form-item>
<el-form-item label="上传图片">
<el-upload
class="upload-demo"
ref="upload"
action="#"
:before-upload="beforeUploadFile"
:on-change="fileChange"
:on-exceed="exceedFile"
:on-success="handleSuccess"
:headers="file_header"
:on-error="handleError"
:file-list="imgFileList"
list-type="picture">
<el-button size="small" type="primary">点击上传</el-button>
<div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过1mb</div>
</el-upload>
</el-form-item>
<el-form-item label="截止时间">
<div class="block">
<el-date-picker
v-model="value2"
type="date"
placeholder="选择日期时间">
</el-date-picker>
</div>
</el-form-item>
</el-form>
<span class="dialog-footer" slot="footer">
<el-button @click="save" type="primary">确 定</el-button>
<el-button @click="edit_editing = false">取 消</el-button>
</span>
</el-dialog>
<el-button @click="handleClick(true)" style="margin-top: 20px">点击查看已提交的作业</el-button>
<sumbmitted_homework :cid="cid_2" v-show="dialog_visible" ></sumbmitted_homework>
</div>
</template>
<script>
export default {
name: "homework",
props: ['cid'],
// components: {
// homework: resolve => {
// require(['./homework.vue'], resolve)
// },
// sumbmitted_homework: resolve => {
// require(['./sumbmitted_homework.vue'], resolve)
// }
// },
components: {
sumbmitted_homework: resolve => {
require(['./sumbmitted_homework.vue'], resolve)
}
},
data() {
return {
images:'',
cid_2: '',
dialog_visible: false,
currentView1: "homework",
currentView2: "sumbmitted_homework",
activeName: 'first',
queryForm: {
/*homeworkId: "",*/
homeworkTitle: "",
},
entityForm: {},
tableData: [],
tableData_title:[],
pageSize: 5,
currentPage: 1,
myclass: "软件工程",
mycid: {},
pageCount: 1,
pageIndex: 1,
editing: false,
edit_editing: false,
text: '',
value1: '',
value2: '',
fileList: [],
file_header: {'token': localStorage.getItem("token")},
uploadList: [],
create_hid: null,
edit_hid: null,
//搜索数据
restaurants: [],
state: ''
};
},
created() {
console.log("hhhhhhhhhhhhhh"),
console.log(this.cid),
this.axios({
url: '/teacher/homework_desc',
method: 'get',
params: {
cid: this.cid
},
headers: {
'token': localStorage.getItem("token")
},
}).then(
(res) => {
console.log(res)
this.tableData = res.data
console.log('创建啦啦啦啦啦');
console.log(this.tableData);
}
)
},
// 将图片格式转换成file-list需要的格式
computed: {
imgFileList() {
return this.fileList.map((imgURL, index) => {
return {
name: index + '.png',
url: imgURL
}
})
}
},
methods: {
img_get(hid,cid){
this.axios({
url: '/teacher/show_img',
method: 'get',
params: {
cid: '777',
title:'1002'
},
headers: {
'token': localStorage.getItem("token")
},
responseType: "blob"
}
).then(res => {
let blob = new window.Blob([res.data]);
let url = window.URL.createObjectURL(blob);
this.images = url;
});
},
sumbmitted_homework() {
/*<router-link :to="{name:'home', params: {id:123456}}">*/
this.$router.push({
path: "/sumbmitted_homework"
});
},
query() {
this.axios({
url: '/teacher/homework_desc_query',
method: 'get',
params: {
cid: this.cid,
title:this.queryForm.homeworkTitle
},
headers: {
'token': localStorage.getItem("token")
},
}).then(
(res) => {
console.log(res)
this.tableData = res.data
console.log('创建啦啦啦啦啦');
console.log(this.tableData);
}
)
},
upload_img() {
console.log("行行好吧aaaaaaa")
console.log("form:")
console.log(this.fileList)
if (this.fileList === 0) {
this.$message.warning("请上传图片!")
} else {
let form = new FormData();
console.log("form:")
console.log(form)
console.log("hid=" + this.hid)
console.log("sid=" + this.sid)
form.append('file', this.fileList[0].raw)
form.append('hid', this.create_hid)
console.log("form3:")
console.log(form.get("file"))
this.axios({
method: "post",
url: "/teacher/upload_img",
enctype: "multipart/form-data",
headers: {
/*'Content-type': 'multipart/form-data',*/
'token': localStorage.getItem("token")
},
data: form
}).then(res => {
console.log('上传成功!')
})
}
},
edit_upload_img() {
console.log("行行好吧aaaaaaa")
console.log("form:")
console.log(this.fileList)
if (this.fileList === 0) {
this.$message.warning("请上传图片!")
} else {
let form = new FormData();
console.log("form:")
console.log(form)
console.log("hid=" + this.hid)
console.log("sid=" + this.sid)
form.append('file', this.fileList[0].raw)
form.append('hid', this.edit_hid)
console.log("form3:")
console.log(form.get("file"))
this.axios({
method: "post",
url: "/teacher/upload_img",
enctype: "multipart/form-data",
headers: {
/*'Content-type': 'multipart/form-data',*/
'token': localStorage.getItem("token")
},
data: form
}).then(res => {
console.log('上传成功!')
})
}
},
create() {
console.log(this.value2);
console.log(this.value1);
console.log(this.entityForm);
var hid = 1000 + Math.ceil(Math.random() * 10);
var time2 = new Date(this.value2);
this.create_hid = hid;
console.log('lllllllllllllllll')
console.log(this.create_hid);
this.axios({
url: '/teacher/add_homework_desc',
method: 'post',
headers: {
'token': localStorage.getItem("token")
},
data: {
hid: this.create_hid,
cid: this.cid,
/*create_time: this.value1,*/
title: this.entityForm.homeworkTitle,
description: this.entityForm.homeworkContent,
ddl_year: time2.getFullYear(),
ddl_month: time2.getMonth() + 1,
ddl_day: time2.getDate()
}
}).then(
(res) => {
console.log(res)
this.text = res.data
}
)
this.entityForm = {
homeworkId: "",
homeworkTitle: "",
homeworkContent: ""
};
this.editing = true;
if (this.text == null) {
this.editing = false;
}
},
handleClick(visible) {
console.log(visible)
this.dialog_visible = visible;
console.log(this.cid);
this.cid_2 = this.cid;
console.log(this.cid_2)
},
editHomework(hid) {
console.log(hid);
this.edit_editing = true;
this.edit_hid = hid;
},
editHomework_plus() {
console.log('eeeeeeeeedit')
console.log(this.entityForm)
var time2 = new Date(this.value2)
console.log(time2.getFullYear())
console.log(time2.getYear())
this.axios({
url: '/teacher/edit_homework_desc',
method: 'post',
data: {
hid: this.edit_hid,
cid: this.cid,
title: this.entityForm.homeworkTitle,
description: this.entityForm.homeworkContent,
ddl_year: time2.getFullYear(),
ddl_month: time2.getMonth() + 1,
ddl_day: time2.getDate()
},
headers: {
'token': localStorage.getItem("token")
},
}).then(
(res) => {
console.log(res)
this.entityForm = res;
this.edit_editing = false;
});
},
save() {
if (this.create_hid==null&&this.edit_hid==null) {
this.create();
this.upload_img();
this.create_hid = null;
this.finishSave();
} else {
this.editHomework_plus();
/*this.upload_img();*/
this.edit_upload_img();
this.edit_hid = null;
this.finishSave_edit();
}
},
finishSave() {
this.$message({
message: '恭喜你,这是一条成功消息',
type: 'success'
});
/*this.getPage(this.pageIndex);*/
this.editing = false;
},
finishSave_edit() {
this.$message({
message: '成功编辑作业',
type: 'success'
});
/*this.getPage(this.pageIndex);*/
this.edit_editing = false;
},
deleteHomework(hid) {
this.$message.warning("delete");
this.axios({
url: '/teacher/delete_homework_desc',
method: 'get',
params: {
hid: hid
},
headers: {
'token': localStorage.getItem("token")
},
}).then(() => {
this.$message.success("删除成功");
}
)
},
getPage(currentPage) {
this.currentPage = currentPage
console.log(this.currentPage)
},
handleSizeChange(size) {
this.pageSize = size;
console.log(this.pageSize)
},
exceedFile(files, fileList) {
this.fileList = fileList;
this.$message.warning(`只能选择 ${this.limitNum} 个文件,当前共选择了 ${files.length + fileList.length} 个`);
},
// 文件状态改变时的钩子
fileChange(file, fileList) {
this.fileList = fileList;
console.log(file.raw);
this.uploadList.push(file.raw);
console.log(this.fileList);
},
// 上传文件之前的钩子, 参数为上传的文件,若返回 false 或者返回 Promise 且被 reject,则停止上传
beforeUploadFile(file) {
console.log('before upload');
console.log(file);
let size = file.size / 1024 / 1024;
if (size > 1) {
this.$message.warning('文件大小不得超过1M');
}
},
// 文件上传成功时的钩子
handleSuccess(res, file, fileList) {
this.$message.success('文件上传成功');
},
// 文件上传失败时的钩子
handleError(err, file, fileList) {
console.log(fileList);
console.log(this.uploadList);
console.log(this.fileList);
console.log('err', err)
this.$message.error('文件上传失败');
},