mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/vue/student-h5.git
synced 2025-12-10 11:26:48 +08:00
330 lines
8.7 KiB
Vue
330 lines
8.7 KiB
Vue
<template>
|
||
<ReturnHead
|
||
text="写作业"
|
||
:showpublish="true"
|
||
:publishWork="publishWork"
|
||
></ReturnHead>
|
||
<div
|
||
class="uploadworkpage"
|
||
:style="{
|
||
height: screenHeight - 73.5 + 'px',
|
||
}"
|
||
>
|
||
<div class="inputcontainer">
|
||
<div class="inputt">
|
||
<el-input
|
||
type="textarea"
|
||
placeholder="请输入正文"
|
||
v-model="textarea"
|
||
autosize
|
||
></el-input>
|
||
</div>
|
||
|
||
<div class="imgcon">
|
||
<div class="linecon">
|
||
<div class="line"></div>
|
||
</div>
|
||
<div class="allimg">
|
||
<UploadImg v-model:fileList="fileList" ref="uploadRef">
|
||
<img src="../../assets/image/homeworkpage/link.png" />
|
||
</UploadImg>
|
||
<!-- <img src="../../assets/image/homeworkpage/pre.png" />
|
||
<img src="../../assets/image/homeworkpage/next.png" /> -->
|
||
<img
|
||
src="../../assets/image/homeworkpage/delete.png"
|
||
@click="deleteAll"
|
||
/>
|
||
</div>
|
||
</div>
|
||
<div class="fileInfo" v-if="fileList && fileList.length !== 0">
|
||
<div class="triangle"></div>
|
||
<div class="filebox" v-for="(item, index) in fileList" :key="index">
|
||
<img
|
||
v-if="
|
||
item.name.indexOf('jpg') !== -1 ||
|
||
item.name.indexOf('jpeg') !== -1 ||
|
||
item.name.indexOf('png') !== -1
|
||
"
|
||
style="width: 20px; height: 22px; margin-right: 20px"
|
||
src="@/assets/image/file/pngpic.png"
|
||
/>
|
||
<div v-else>
|
||
<img
|
||
v-if="item.name.indexOf('doc') !== -1"
|
||
style="width: 20px; height: 22px; margin-right: 20px"
|
||
src="@/assets/image/file/word.png"
|
||
/>
|
||
<div v-else>
|
||
<img
|
||
v-if="item.name.indexOf('xls') !== -1"
|
||
style="width: 20px; height: 22px; margin-right: 20px"
|
||
src="@/assets/image/file/excel.png"
|
||
/>
|
||
<div v-else>
|
||
<img
|
||
v-if="item.name.indexOf('ppt') !== -1"
|
||
style="width: 20px; height: 22px; margin-right: 20px"
|
||
src="@/assets/image/file/ppt.png"
|
||
/>
|
||
<div v-else>
|
||
<img
|
||
v-if="item.name.indexOf('pdf') !== -1"
|
||
style="width: 20px; height: 22px; margin-right: 20px"
|
||
src="@/assets/image/file/pdf.png"
|
||
/>
|
||
<div v-else>
|
||
<img
|
||
v-if="item.name.indexOf('zip') !== -1"
|
||
style="width: 20px; height: 22px; margin-right: 20px"
|
||
src="@/assets/image/file/zip.png"
|
||
/>
|
||
<img
|
||
v-else
|
||
style="width: 20px; height: 22px; margin-right: 20px"
|
||
src="@/assets/image/file/word.png"
|
||
/>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<span class="filename" :title="item.name">{{ item.name }}</span>
|
||
<div
|
||
class="download"
|
||
style="display: flex; align-items: center"
|
||
@click="deleteFile"
|
||
>
|
||
<img
|
||
src="../../assets/image/download.png"
|
||
style="width: 16px; height: 15px"
|
||
/>
|
||
<div style="margin-left: 2px; color: #2478ff">删除</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</template>
|
||
|
||
<script>
|
||
import { reactive, toRefs, ref } from "vue";
|
||
import ReturnHead from "@/components/ReturnHead.vue";
|
||
import { request, useRequest } from "@/api/request";
|
||
import { TASK_WORK_COMMIT } from "@/api/api";
|
||
import { useRoute } from "vue-router/dist/vue-router";
|
||
import { useRouter } from "vue-router";
|
||
import { ElMessage, ElLoading } from "element-plus";
|
||
import UploadImg from "@/components/img/UploadImg.vue";
|
||
export default {
|
||
name: "UploadWork",
|
||
components: {
|
||
ReturnHead,
|
||
UploadImg,
|
||
},
|
||
setup() {
|
||
const router = useRouter();
|
||
const state = reactive({
|
||
text: "",
|
||
screenHeight: document.body.clientHeight, // 屏幕高度
|
||
});
|
||
const {
|
||
query: { workId, type, taskId, infoId },
|
||
} = useRoute();
|
||
const textarea = ref("");
|
||
const fileList = ref([]);
|
||
// 使用
|
||
const loading = ref(false); // loading
|
||
const openLoading = () => {
|
||
loading.value = ElLoading.service({
|
||
lock: true,
|
||
text: "Loading",
|
||
background: "rgba(0, 0, 0, 0.7)",
|
||
});
|
||
};
|
||
const closeLoading = () => {
|
||
loading.value.close();
|
||
};
|
||
//发布作业
|
||
const publishWork = () => {
|
||
console.log("点击了发布", workId, type, taskId, fileList);
|
||
if (!textarea.value) {
|
||
ElMessage.warning("请输入作业内容")
|
||
return ;
|
||
}
|
||
openLoading();
|
||
let obj = {
|
||
projectOrRouterLogo: type,
|
||
workUploadContent: textarea.value,
|
||
workUploadAddress:
|
||
fileList.value && fileList.value.length !== 0
|
||
? fileList.value[0].url
|
||
: "",
|
||
workId,
|
||
type,
|
||
taskId: taskId || infoId,
|
||
workScore: -1
|
||
};
|
||
console.log("obj", obj, fileList.value);
|
||
request(TASK_WORK_COMMIT, obj).then((res) => {
|
||
console.log("上传作业", res);
|
||
// submitList.value.unshift(res.data);
|
||
// open();
|
||
ElMessage.success("作业发布成功");
|
||
closeLoading();
|
||
textarea.value = "";
|
||
fileList.value = [];
|
||
router.back();
|
||
// remove(0);
|
||
// clearFiles();
|
||
});
|
||
};
|
||
const deleteAll = () => {
|
||
console.log("点击");
|
||
textarea.value = "";
|
||
fileList.value = [];
|
||
};
|
||
const deleteFile = () => {
|
||
fileList.value = [];
|
||
};
|
||
return {
|
||
...toRefs(state),
|
||
publishWork,
|
||
textarea,
|
||
fileList,
|
||
deleteAll,
|
||
deleteFile,
|
||
};
|
||
},
|
||
};
|
||
</script>
|
||
|
||
<style lang="scss">
|
||
.clearfix:before,
|
||
clearfix:after {
|
||
content: " ";
|
||
display: table;
|
||
clear: both;
|
||
}
|
||
.uploadworkpage {
|
||
width: 100%;
|
||
background-color: #fff;
|
||
// margin-top: 73.5px;
|
||
.inputcontainer {
|
||
margin-top: 10px;
|
||
background-color: #fff;
|
||
width: 100%;
|
||
// height: 100px;
|
||
// display: flex;
|
||
// justify-content: center;
|
||
// height: 80%;
|
||
height: 100%;
|
||
.inputt {
|
||
width: 100%;
|
||
height: calc(100% - 79px);
|
||
// height: 100px;
|
||
// padding-bottom: 79px;
|
||
overflow-y: scroll;
|
||
}
|
||
::v-deep .el-textarea__inner {
|
||
resize: none;
|
||
border-color: transparent;
|
||
height: 100%;
|
||
}
|
||
::v-deep .el-textarea:focus {
|
||
border-color: transparent;
|
||
}
|
||
::v-deep .el-textarea {
|
||
height: 100%;
|
||
}
|
||
.el-textarea__inner {
|
||
border: 0 !important;
|
||
resize: none !important; /* 这个是去掉 textarea 下面拉伸的那个标志,如下图 */
|
||
box-shadow: none !important;
|
||
padding: 16px 18px;
|
||
}
|
||
.el-textarea__inner:hover {
|
||
box-shadow: none !important;
|
||
border: 0 !important;
|
||
}
|
||
.el-textarea__inner:focus {
|
||
border: none;
|
||
border: 0 !important;
|
||
}
|
||
|
||
.imgcon {
|
||
width: 100%;
|
||
display: flex;
|
||
flex-direction: column;
|
||
align-items: center;
|
||
justify-content: center;
|
||
position: fixed;
|
||
bottom: 0;
|
||
background-color: #fff;
|
||
.linecon {
|
||
margin-top: 10px;
|
||
width: 100%;
|
||
display: flex;
|
||
justify-content: center;
|
||
.line {
|
||
width: 90%;
|
||
height: 0;
|
||
border-top: 1px solid #f1f2f3;
|
||
}
|
||
}
|
||
.allimg {
|
||
margin-top: 24.5px;
|
||
width: 70%;
|
||
display: flex;
|
||
justify-content: space-between;
|
||
margin-bottom: 24.5px;
|
||
}
|
||
}
|
||
|
||
.fileInfo {
|
||
width: 95%;
|
||
height: 56px;
|
||
background-color: #fff;
|
||
box-shadow: 0px 1px 24px 0px rgba(0, 0, 0, 0.11);
|
||
border-radius: 4px;
|
||
position: absolute;
|
||
bottom: 81px;
|
||
left: 2.5%;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: space-between;
|
||
.triangle {
|
||
width: 0;
|
||
height: 0;
|
||
border: 7px solid;
|
||
border-color: #fff rgba(255, 255, 255, 0) rgba(255, 255, 255, 0)
|
||
rgba(255, 255, 255, 0);
|
||
position: absolute;
|
||
bottom: -14px;
|
||
left: 10%;
|
||
}
|
||
.filebox {
|
||
width: 90%;
|
||
display: flex;
|
||
margin-left: 5%;
|
||
margin-right: 5%;
|
||
align-items: center;
|
||
.fileimg {
|
||
width: 19.5px;
|
||
height: 22px;
|
||
background-size: 100% 100%;
|
||
margin-right: 19px;
|
||
}
|
||
}
|
||
.filename {
|
||
width: calc(100% - 100px);
|
||
font-size: 13px;
|
||
display: block;
|
||
overflow: hidden;
|
||
white-space: nowrap;
|
||
text-overflow: ellipsis;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
</style>
|