Files
fe-manage/src/components/drawers/WorkManage.vue

651 lines
16 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="Wvisible"
class="drawerStyle WorkManage"
placement="right"
width="60%"
@after-visible-change="afterVisibleChange"
>
<div class="drawerMain">
<div class="header">
<div class="headerTitle">{{title}}管理</div>
<img
style="width: 29px; height: 29px; cursor: pointer"
src="../../assets/images/basicinfo/close.png"
@click="closeDrawer"
/>
</div>
<div class="main">
<div class="endtime">起止时间2022-07-21 14:00 2022-7-30 14:00</div>
<div class="search">
<div class="sealeft">
<div class="namecon" style="margin-right: 30px">
<div class="name">姓名</div>
<a-input
v-model:value="name"
style="width: 270px; height: 40px; border-radius: 8px"
placeholder="请输入姓名"
/>
</div>
<div class="namecon" style="margin-right: 50px">
<div class="name">任务状态</div>
<div class="select">
<a-select
v-model:value="projectName"
style="width: 160px"
placeholder="请选择"
:options="projectNameList"
@change="selectProjectName"
allowClear
showSearch
></a-select>
</div>
</div>
</div>
<div class="btns">
<div
class="btn btn1"
style="margin-right: 20px"
@click="searchTaskList"
>
<div class="img1"></div>
<div class="wz">搜索</div>
</div>
<div class="btn btn2" @click="resetTaskList">
<div class="img2"></div>
<div class="wz">重置</div>
</div>
</div>
</div>
<div class="btnss" style="margin-top: 20px">
<div class="btn btn1" style="margin-right: 20px; cursor: pointer">
<div class="img1"></div>
<div class="wz">导出数据</div>
</div>
<div class="btn btn2" @click="showModal">
<div class="wz">导出作业</div>
</div>
<div class="btn btn2" @click="showModal">
<div class="wz">导入成绩</div>
</div>
</div>
<div class="tab" style="margin-top: 20px; margin-bottom: 100px">
<a-table
style="border: 1px solid #f2f6fe"
:columns="tablecolumns"
:data-source="tabledata"
:loading="tableDataTotal === -1 ? true : false"
expandRowByClick="true"
:scroll="{ x: 900 }"
@expand="expandTable"
:pagination="false"
/>
<div class="tableBox">
<div class="pa">
<a-pagination
showSizeChanger="true"
showQuickJumper="true"
hideOnSinglePage="true"
:pageSize="pageSize"
:current="currentPage"
:total="tableDataTotal"
class="pagination"
@change="onChange"
/>
</div>
</div>
</div>
</div>
<div class="btnn">
<button class="btn1">取消</button>
<button class="btn2">确定</button>
</div>
<a-modal
v-model:visible="visible"
:closable="close"
:footer="null"
wrapClassName="WorkManage"
centered="true"
>
<div class="header">
<div class="inheader">
<div class="left">提示</div>
<div class="right" @click="closeModal"></div>
</div>
</div>
<div class="main">
<div class="check"></div>
<div class="text">作业导出完成请在下载中心查看</div>
<div class="btn">
<button class="btn1 sabtn" @click="closeModal">取消</button>
<button class="btn2 sabtn">查看</button>
</div>
</div>
</a-modal>
<!-- 作业详情抽屉 -->
<work-detail v-model:WDvisible="WDvisible" />
</div>
</a-drawer>
</template>
<script>
import { toRefs, reactive, onMounted } from "vue";
import WorkDetail from "../drawers/WorkDetail.vue";
import * as api from "../../api/index";
export default {
name: "WorkManage",
components: { WorkDetail },
props: {
Wvisible: {
type: Boolean,
default: false,
},
title: {
type: String,
default: "",
},
projectTaskId: {
type: Number,
default: null,
},
},
setup(props, ctx) {
const state = reactive({
name: null,
visible: false, //导出数据弹窗
close: false, //导出弹窗的关闭按钮
WDvisible: false, //作业详情
pageNo: 1,
pageSize: 10,
currentPage: 1,
tableDataTotal: 100,
projectName: "",
projectNameList: [
{
id: 1,
value: "-1",
label: "未开始",
},
{
id: 2,
value: "0",
label: "进行中",
},
{
id: 3,
value: "1",
label: "已完成",
},
],
tabledata: [
// {
// key: 1,
// userName: "哈哈",
// deptName: "产品部",
// jobName: "产品经理",
// comp: "好好学习",
// time: "-",
// state: "未完成",
// },
],
tablecolumns: [
{
title: "姓名",
dataIndex: "userName",
key: "userName",
width: 50,
align: "left",
className: "h head",
},
{
title: "所在部门",
dataIndex: "deptName",
key: "userName",
width: 60,
align: "center",
className: "h",
},
{
title: "所在岗位",
dataIndex: "jobName",
key: "jobName",
width: 60,
align: "center",
className: "h",
},
{
title: "课程成绩",
dataIndex: "score",
key: "score",
width: 60,
align: "center",
className: "h",
},
{
title: "任务状态",
dataIndex: "status",
key: "status",
width: 60,
align: "center",
className: "h",
},
],
});
const selectProjectName = (value, index) => {
console.log("value", value, index);
state.projectName = value;
};
const closeDrawer = () => {
ctx.emit("update:Wvisible", false);
};
const showModal = () => {
state.visible = true;
};
const closeModal = () => {
state.visible = false;
};
const showWorkDetail = () => {
state.WDvisible = true;
};
const onChange = (pageNumber) => {
console.log("Page: ", pageNumber);
};
//获取任务管理列表
const getManageList = () => {
let obj = {
name: "",
pageNo: state.pageNo,
pageSize: state.pageSize,
projectId: 27,
projectTaskId: props.projectTaskId,
status: -1,
};
api
.taskStudentList(obj)
.then((res) => {
state.pageNo = res.data.data.pageNo;
state.pageSize = res.data.data.pageSize;
state.pageSize = res.data.data.pageSize;
for (let i = 0; i < res.data.data.rows.length; i++) {
state.tabledata.push(res.data.data.rows[i].userInfoBo);
}
})
.catch((err) => {
console.log("获取作业任务列表失败", err);
});
};
//搜索任务列表
const searchTaskList = () => {
let objser = {
name: "",
pageNo: state.pageNo,
pageSize: state.pageSize,
projectId: 27,
projectTaskId: props.projectTaskId,
status: -1,
};
if (state.name !== "" || state.projectName !== "") {
api
.taskStudentList(objser)
.then((res) => {
state.pageNo = res.data.data.pageNo;
state.pageSize = res.data.data.pageSize;
state.pageSize = res.data.data.pageSize;
let newArr = [];
for (let i = 0; i < res.data.data.rows.length; i++) {
if (res.data.data.rows[i].userInfoBo.userName == state.name)
newArr.push(res.data.data.rows[i].userInfoBo);
}
state.tabledata = newArr;
})
.catch((err) => {
console.log("搜索任务列表失败", err);
});
}
};
//重置任务列表
const resetTaskList = () => {
state.name = "";
state.projectName = "";
state.tabledata = [];
getManageList();
};
onMounted(() => {
setTimeout(() => {
getManageList();
}, 1000);
});
return {
...toRefs(state),
selectProjectName,
closeDrawer,
showModal,
closeModal,
showWorkDetail,
onChange,
getManageList,
searchTaskList,
resetTaskList,
};
},
};
</script>
<style lang="scss">
// .drawerStyle {
// .ant-drawer-content-wrapper {
// // max-width: 1000px;
// .ant-drawer-header {
// display: none !important;
// }
// .ant-drawer-body {
// padding: 0;
// }
// }
// }
//作业管理弹窗
.WorkManage {
.ant-modal {
width: 473px;
height: 308px;
.ant-modal-content {
width: 473px;
height: 308px;
.ant-modal-body {
width: 473px;
height: 308px;
padding: 0px;
.header {
width: 473px;
height: 68px;
background: linear-gradient(
180deg,
rgba(78, 166, 255, 0.2) 0%,
rgba(78, 166, 255, 0) 100%
);
display: flex;
justify-content: center;
.inheader {
width: 90%;
display: flex;
align-items: center;
justify-content: space-between;
.left {
font-size: 16px;
font-weight: 600;
color: #333333;
}
.right {
width: 22px;
height: 22px;
background-image: url(../../assets/images/basicinfo/close.png);
background-size: 100% 100%;
cursor: pointer;
}
}
}
.main {
// background-color: red;
width: 100%;
// height: 100%;
margin-top: 32px;
display: flex;
flex-direction: column;
// justify-content: center;
align-items: center;
overflow-y: auto;
padding-right: 10px;
.check {
width: 40px;
height: 40px;
background-image: url(../../assets/images/basicinfo/check.png);
background-size: 100%;
}
.text {
margin-top: 16px;
font-size: 14px;
font-weight: 500;
color: rgba(0, 0, 0, 0.85);
}
.btn {
display: flex;
margin-top: 40px;
.sabtn {
width: 100px;
height: 40px;
border-radius: 4px;
cursor: pointer;
}
.btn1 {
border: 1px solid #387df7;
background-color: #fff;
color: #387df7;
}
.btn2 {
background-color: #409eff;
color: #fff;
border: 0;
margin-left: 16px;
}
}
}
}
}
}
}
//作业管理弹窗
.WorkManage {
.drawerMain {
min-width: 550px;
margin: 0px 32px 0px 32px;
overflow-x: auto;
display: flex;
flex-direction: column;
.header {
height: 73px;
border-bottom: 1px solid #e8e8e8;
display: flex;
justify-content: space-between;
align-items: center;
// background-color: red;
margin-bottom: 20px;
.headerTitle {
font-size: 18px;
font-weight: 600;
color: #333333;
line-height: 25px;
// margin-left: 24px;
}
}
.main {
width: 100%;
height: 100%;
// margin-bottom: 30px;
// background-color: #bfa;
overflow-y: auto;
.endtime {
font-size: 16px;
font-weight: 500;
color: #333333;
}
.search {
width: 100%;
display: flex;
flex-wrap: wrap;
margin-top: 20px;
justify-content: space-between;
.sealeft {
display: flex;
flex-wrap: wrap;
.namecon {
display: flex;
flex-wrap: nowrap;
margin-bottom: 10px;
.name {
margin-top: 8px;
white-space: nowrap;
}
}
}
.btns {
display: flex;
flex-wrap: nowrap;
.btn {
cursor: pointer;
width: 100px;
height: 40px;
border-radius: 8px;
display: flex;
justify-content: center;
align-items: center;
.img1 {
width: 15px;
height: 17px;
background-image: url(../../assets/images/courseManage/search0.png);
background-size: 100% 100%;
margin-right: 7px;
}
.img2 {
width: 16px;
height: 18px;
background-image: url(../../assets/images/courseManage/reset1.png);
background-size: 100% 100%;
margin-right: 7px;
}
}
.btn1 {
background: #409eff;
color: #ffffff;
}
.btn2 {
background: #ffffff;
color: #388be1;
border: 1px solid #388be1;
}
}
}
.btnss {
display: flex;
flex-wrap: nowrap;
.btn {
cursor: pointer;
width: 130px;
height: 40px;
border-radius: 8px;
display: flex;
justify-content: center;
align-items: center;
.img1 {
width: 17px;
height: 16px;
background-image: url(../../assets/images/coursewareManage/export1.png);
background-size: 100% 100%;
margin-right: 7px;
}
}
.btn1 {
background: #409eff;
color: #ffffff;
}
.btn2 {
background: #ffffff;
color: #388be1;
border: 1px solid #388be1;
}
}
.tab {
th.h {
background-color: #eff4fc !important;
}
.ant-table-tbody
> tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected)
> td {
background: #f6f9fd;
}
.tableBox {
.pa {
// left: 0;
margin-top: 15px;
width: 100%;
// height: 20px;
// background-color: red;
display: flex;
justify-content: center;
// position: absolute;
// bottom: 20px;
.ant-pagination-prev,
.ant-pagination-next,
.ant-pagination-item,
.ant-pagination-options {
margin-bottom: 10px;
}
}
}
}
}
.btnn {
height: 72px;
width: 100%;
position: absolute;
bottom: 0;
background-color: #fff;
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: #409eff;
border-radius: 8px;
border: 0;
margin-left: 15px;
color: #fff;
}
}
}
}
</style>