Files
fe-manage/src/components/drawers/AddHomework.vue
2022-11-01 17:31:02 +08:00

410 lines
11 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<template>
<a-drawer
:visible="addhomeworkVisible"
class="drawerStyle addhomeworkDrawer"
width="80%"
title="添加作业"
placement="right"
@after-visible-change="afterVisibleChange"
>
<div class="drawerMain">
<div class="header">
<div class="headerTitle">添加作业</div>
<img
style="width: 29px; height: 29px; cursor: pointer"
src="../../assets/images/basicinfo/close.png"
@click="closeDrawer"
/>
</div>
<a-form
ref="formRef"
name="custom-validation"
:model="formState"
:rules="rules"
v-bind="layout"
@finish="handleFinish"
@validate="handleValidate"
@finishFailed="handleFinishFailed"
>
<div class="contentMain">
<div class="main_left">
<div class="main_item">
<div class="btnbox">
<a-form-item has-feedback label="作业名称" name="workName">
<a-input v-model:value="formState.workName"
style="width: 424px; height: 32px;margin-left: 35px;"
placeholder="请输入作业名称"
autocomplete="off" />
</a-form-item>
</div>
</div>
<div class="main_item2">
<a-form-item has-feedback label="作业要求" name="workRequirement">
<a-textarea
v-model:value="formState.workRequirement"
placeholder="请输入作业要求"
autocomplete="off"
allow-clear
style="margin-left: 35px"
maxlength="150"
/>
</a-form-item>
</div>
<div class="main_item">
<div class="btnbox">
<a-form-item has-feedback label="提交时间" name="choosedTime">
<a-range-picker
style="width: 424px;margin-left: 35px;"
v-model:value="formState.choosedTime"
:placeholder="[' 开始时间', ' 结束时间']"
/>
</a-form-item>
</div>
</div>
<div class="main_item">
<div class="signbox">
<div class="sign">
<img
src="@/assets/images/coursewareManage/enclosure.png"
alt=""
/>
</div>
<span style="margin-right: 3px">附件</span>
</div>
<div class="btnbox">
<a-upload
v-model:file-list="fileList"
name="file"
action="/api/file/upload"
@change="handleChange"
>
<button class="xkbtn">上传附件</button>
</a-upload>
</div>
</div>
<div class="main_item" style="margin-top:-25px;">
<div class="signbox">
</div>
<div class="btnbox">
<span style="color:#999999;">支持pdf.ppt.pptx.doc.docx.xls.xlsx.jpeg.png.gif.zip</span>
</div>
</div>
</div>
</div>
<div class="main_btns">
<a-button class="btn1" @click="closeDrawer">取消</a-button>
<a-button class="btn2" html-type="submit">确定</a-button>
</div>
</a-form>
</div>
</a-drawer>
</template>
<script>
import { reactive, ref } from "vue";
import {message} from"ant-design-vue";
import {createWorkTask} from "@/api/indexWork"
import dayjs from 'dayjs';
const rowSelection = ref({
checkStrictly: false,
onChange: (selectedRowKeys, selectedRows) => {
console.log(
`selectedRowKeys: ${selectedRowKeys}`,
"selectedRows: ",
selectedRows
);
},
onSelect: (record, selected, selectedRows) => {
console.log(record, selected, selectedRows);
},
onSelectAll: (selected, selectedRows, changeRows) => {
console.log(selected, selectedRows, changeRows);
},
});
export default {
name: "AddHomework",
// components: {
// },
props: {
addhomeworkVisible: {
type: Boolean,
default: false,
},
},
setup(props, ctx) {
const formState = reactive({
workName: '',
workRequirement: '',
choosedTime: '',
});
const formRef = ref();
let checkWorkName = async (_rule, value) => {
if (!value) {
message.warning("请输入作业名称");
return Promise.reject('请输入作业名称');
}
};
let checkWorkRequirement = async (_rule, value) => {
if (!value) {
message.warning("请输入作业要求");
return Promise.reject('请输入作业要求');
}
};
let checkTime = async (_rule, value) => {
if (!value) {
message.warning("请选择时间");
return Promise.reject('请选择时间');
}
};
const rules = {
workName: [{
required: true,
validator: checkWorkName,
trigger: 'change',
}],
workRequirement: [{
required: true,
validator: checkWorkRequirement,
trigger: 'change',
}],
choosedTime: [{
required: true,
validator: checkTime,
trigger: 'change',
}],
};
// const layout = {
// labelCol: {
// span: 4,
// },
// wrapperCol: {
// span: 14,
// },
// };
const handleFinish = values => {
console.log(values);
addHomework()
};
const handleFinishFailed = errors => {
console.log(errors);
// message.error("handleFinishFailed");
};
const resetForm = () => {
formRef.value.resetFields();
};
const handleValidate = (...args) => {
console.log(args);
};
const handleChange = info => {
if (info.file.status !== 'uploading') {
console.log(info.file, info.fileList);
}
if (info.file.status === 'done') {
message.success(`${info.file.name} 文件上传成功`);
} else if (info.file.status === 'error') {
message.error(`${info.file.name} 文件上传失败.`);
}
};
const fileList = ref([]);
const closeDrawer = () => {
resetForm();
ctx.emit("update:addhomeworkVisible", false);
};
const afterVisibleChange = (bool) => {
console.log("state", bool);
};
const addHomework = () => {
createWorkTask({
"createTime": "",
"createUser": 0,
"submitEndTime": dayjs(formState.choosedTime[1]).format("YYYY-MM-DD"),
"submitStartTime": dayjs(formState.choosedTime[0]).format("YYYY-MM-DD"),
"updateTime": "",
"updateUser": 0,
"workEnclosureAddress": "",
"workFlag": "",
"workId": 0,
"workName": formState.workName,
"workRequirement": formState.workRequirement,
"workTag": ""
}).then((res)=>{
message.success(`添加成功${res}`)
closeDrawer();
}).catch((err)=>{
message.error(`添加失败${err}`)
})
}
return {
afterVisibleChange,
closeDrawer,
rowSelection,
addHomework,
handleChange,
fileList,
formState,
handleFinish,
handleFinishFailed,
resetForm,
handleValidate,
formRef,
// layout,
rules,
};
},
};
</script>
<style lang="scss">
.ant-table-striped :deep(.table-striped) td {
background-color: #fafafa !important;
}
.addhomeworkDrawer {
.drawerMain {
.header {
height: 73px;
border-bottom: 1px solid #e8e8e8;
display: flex;
justify-content: space-between;
align-items: center;
flex-shrink: 0;
.headerTitle {
font-size: 18px;
font-weight: 600;
color: #333333;
line-height: 25px;
margin-left: 24px;
}
}
.contentMain {
display: flex;
justify-content: space-between;
.main_left {
padding-right: 30px;
flex: 1;
border-right: 1px solid #e8e8e8;
.main_item {
display: flex;
align-items: center;
margin-bottom: 32px;
.signbox {
width: 120px;
display: flex;
justify-content: end;
align-items: center;
.sign {
margin-right: 5px;
}
}
.btnbox {
display: flex;
flex: 1;
align-items: center;
.xkbtn {
cursor: pointer;
width: 130px;
height: 40px;
background: #388be1;
border-radius: 8px;
border: 0;
margin-right: 8px;
color: #fff;
}
}
}
.main_item2 {
display: flex;
align-items: flex-start;
margin-bottom: 32px;
.signbox {
width: 120px;
display: flex;
justify-content: end;
align-items: center;
.sign {
margin-right: 5px;
}
}
.kqszbox {
.qdqtbox {
margin-left: 56px;
}
.setbox {
display: flex;
flex-wrap: wrap;
margin-top: 10px;
margin-bottom: 24px;
.timerbox {
margin-top: 6px;
margin-right: 32px;
display: flex;
align-items: center;
flex-wrap: nowrap;
}
}
}
.btnbox2 {
display: flex;
flex-direction: column;
justify-content: flex-start;
.xkbtn {
cursor: pointer;
width: 130px;
height: 40px;
background: #388be1;
border-radius: 8px;
border: 0;
margin-right: 16px 8px 32px 0;
color: #fff;
margin-top: 16px;
margin-bottom: 60px;
}
}
}
}
}
.main_btns {
position: absolute;
height: 72px;
width: 100%;
bottom: 0;
left: 0;
display: flex;
align-items: center;
justify-content: center;
box-shadow: 0px 1px 35px 0px rgba(118, 136, 166, 0.16);
.btn1 {
width: 100px;
height: 40px;
border: 1px solid #4ea6ff;
border-radius: 8px;
color: #4ea6ff;
background-color: #fff;
cursor: pointer;
}
.btn2 {
cursor: pointer;
width: 100px;
height: 40px;
background: #4ea6ff;
border-radius: 8px;
border: 0;
margin-left: 15px;
color: #fff;
}
}
}
}
</style>