feat:添加学员管理列表图片

This commit is contained in:
李晓鸽
2022-10-22 15:31:57 +08:00
10 changed files with 2076 additions and 229 deletions

View File

@@ -208,12 +208,28 @@
</div>
<!-- 概览有数据 -->
</a-tab-pane>
<a-tab-pane key="2" tab="任务">
<a-tab-pane key="2" tab="任务" force-render>
<div style="flex: 1">
<div class="split"></div>
<!-- 无数据样式 -->
<div class="notable" style="display: none">
<div class="notablebox">
<div class="boxbody">
<div class="boximg"></div>
<div class="boxtitle">
<span style="color: #ffb64e; font-size: 20px">无课程</span>
</div>
<div class="boxtitle2">
<span style="color: #878b92">请点击新建开课创建课程</span>
</div>
</div>
<div class="smallleft"></div>
<div class="smallright"></div>
</div>
</div>
<div class="onerow">
<div class="taskmain">任务大纲</div>
<button class="btn">批量面授报名</button>
<button class="btn" @click="showFaceIn">批量面授报名</button>
<router-link to="/taskadd" class="edit">
<img
class="editimg"
@@ -222,6 +238,16 @@
<span class="editext">编辑</span>
</router-link>
</div>
<!-- <div class="taskSyllabus">
<a-collapse v-model:activeKey="taskSyllabusActive" accordion>
<template #expandIcon="{ isActive }">
<img
class="editimg"
src="../../assets/images/projectadd/edit.png"
/>
<span class="editext">编辑</span>
</router-link>
</div> -->
<div class="taskSyllabus">
<a-collapse v-model:activeKey="taskSyllabusActive" accordion>
<template #expandIcon="{ isActive }">
@@ -393,6 +419,29 @@
</div>
</a-collapse-panel>
</a-collapse>
<!-- 无数据创建任务 -->
<div
class="taskbox"
style="
background: linear-gradient(180deg, #ddeaff, #f0f8fe);
display: none;
"
>
<div class="leftt">
<img src="../../assets/images/taskpage/left2.png" />
</div>
<div class="photo">
<img src="../../assets/images/taskpage/picture8.png" />
</div>
<div class="rightt">
<img src="../../assets/images/taskpage/right2.png" />
</div>
<div class="centerbox" style="color: rgba(78, 166, 255, 1)">
创建任务
</div>
<div class="centermain">点击创建项目任务</div>
</div>
<!-- 无数据创建任务 -->
</div>
<div style="display: flex; height: 20px"></div>
</div>
@@ -772,7 +821,63 @@
</div>
</div>
</a-tab-pane>
<a-tab-pane key="5" tab="项目积分">Content of Tab Pane 3</a-tab-pane>
<a-tab-pane key="5" tab="项目积分">
<div class="split"></div>
<div class="content3">
<a-tabs v-model:activeKey="activeKey2">
<a-tab-pane key="1" tab="学员获取"> </a-tab-pane>
<a-tab-pane key="2" tab="榜单"> </a-tab-pane>
<a-tab-pane key="3" tab="获取规则">
<div class="projectscore">
<div class="pjc_body">
<div class="pjcb_header">
<span>规则</span>
<div class="edit_btn">
<div class="edit"></div>
<div class="btnText">编辑</div>
</div>
</div>
<div class="pjcb_content">
<div class="content content1">
<span
>当前设计下学员可以获得
<a-input
v-model:value="inputValue"
:maxlength="3"
style="width: 50px"
/>
积分</span
>
</div>
<div class="content content2">
<span
>完成必修/选修获得
<a-input
v-model:value="inputValue2"
:maxlength="3"
style="width: 50px"
/>
积分</span
>
</div>
<div class="content content3">
<span
>优秀学员可获得
<a-input
v-model:value="inputValue3"
:maxlength="3"
style="width: 50px"
/>
积分</span
>
</div>
</div>
</div>
</div>
</a-tab-pane>
</a-tabs>
</div>
</a-tab-pane>
<a-tab-pane key="6" tab="排行榜">
<div class="content6">
<div class="title">排行榜</div>
@@ -908,7 +1013,7 @@
<div class="set_body">
<div class="edit" @click="edit_hShow">
<div class="img"></div>
<div class="ed">编辑11</div>
<div class="ed">编辑</div>
</div>
<div class="set_content">
<div class="setc_name"><span>项目名称</span></div>
@@ -1007,6 +1112,8 @@
<work-manage v-model:Wvisible="Wvisible" />
<!-- 考试管理抽屉 -->
<test-manage v-model:TMvisible="TMvisible" :title="showTestText" />
<!-- 批量面授报名 -->
<task-imp-stu v-model:TaskFaceImpStuvisible="TaskFaceImpStuvisible" />
<!-- 概览无数据-项目发布弹窗 -->
<div>
@@ -1220,7 +1327,7 @@
>编辑</span
>
</div>
<div style="cursor: pointer; margin-right: 32px" @click="closeModal">
<div style="cursor: pointer; margin-right: 32px" @click="edit_exit">
<img
style="width: 22px; height: 22px"
src="../../assets/images/basicinfo/close.png"
@@ -1253,24 +1360,11 @@
<div class="signbox">
<span style="margin-right: 3px">直播封面</span>
</div>
<div class="textarea">
<a-upload
v-model:file-list="fileList"
name="avatar"
list-type="picture-card"
class="avatar-uploader"
:show-upload-list="false"
action="https://www.mocky.io/v2/5cc8019d300000980a055e76"
:before-upload="beforeUpload"
@change="handleChange"
>
<img v-if="imageUrl" :src="imageUrl" alt="avatar" />
<div v-else>
<loading-outlined v-if="loading"></loading-outlined>
<plus-outlined v-else></plus-outlined>
<div class="ant-upload-text">Upload</div>
</div>
</a-upload>
<div class="lodalimg">
<div class="lodalcenter">
<span style="color: #448ef7; margin-right: 10px">+</span>
<span style="color: #448ef7">添加图片</span>
</div>
</div>
</div>
<div class="main_item">
@@ -1427,6 +1521,39 @@
</a-modal>
</div>
<!-- 编辑弹窗 -->
<!-- 删除弹窗 -->
<div>
<a-modal
v-model:visible="delete_hs"
:footer="null"
:closable="closableQR"
wrapClassName="DelModal"
style="margin-top: 400px"
>
<div class="delete" :style="{ display: delete_hs ? 'block' : 'none' }">
<div class="del_header"></div>
<div class="del_main">
<div class="header">
<div class="del-icon"></div>
<span>提示</span>
<div class="close_exit" @click="delete_exit"></div>
</div>
<div class="body">
<span>您确定要删除此课程吗</span>
</div>
<div class="del_btnbox">
<div class="del_btn btn1">
<div class="btnText" @click="delete_exit">取消</div>
</div>
<div class="del_btn btn2">
<div class="btnText" @click="delete_exit">确定</div>
</div>
</div>
</div>
</div>
</a-modal>
</div>
<!-- 删除弹窗 -->
</div>
</template>
<script>
@@ -1444,6 +1571,7 @@ import StuAdd from "../../components/drawers/StuAdd";
import ImportStu from "../../components/drawers/ImportStu";
import SeeStu from "../../components/drawers/SeeStu";
import ChangeGroup from "../../components/drawers/ChangeGroup";
import TaskImpStu from "../../components/drawers/TaskFaceIn";
export default {
name: "taskPage",
components: {
@@ -1460,6 +1588,7 @@ export default {
ImportStu,
SeeStu,
ChangeGroup,
TaskImpStu,
},
setup() {
const state = reactive({
@@ -1556,6 +1685,7 @@ export default {
Seevisible: false, //查看学员
Changevisible: false, //学员换组
edit_hs: false, //编辑弹窗
delete_hs: false, //删除弹窗
pubproject: false,
stugroup: false,
canclestu: false,
@@ -1568,10 +1698,15 @@ export default {
radioV2: "",
activeKey: "3",
activeKey1: "8",
activeKey2: "3",
inputValue: 5,
inputValue2: 5,
inputValue3: 5,
valueName: "", //排行榜输入姓名
valueDate: "", //排行榜输入日期
noticeChecked: true,
noticeContent: "",
TaskFaceImpStuvisible: false, //批量面授报名
//进度排行表
jindutabledata: [
@@ -2022,6 +2157,79 @@ export default {
//考试、测评页面传递参数
showTestText: "",
});
//学员学员管理渲染
const getTableDate = () => {
let datas = state.tabledata;
datas.map((value) => {
{
//单层项目
value.operations = (
<div class="operation">
<div class="nSelect">
<div class="nselect">
<div
class="jc"
onClick={() => {
// state.QR_hs = true;
// state.ftsQR_hs = true;
}}
>
优秀学员
</div>
<div
class="jc"
onClick={() => {
state.Seevisible = true;
}}
>
查看
</div>
<div class="tableSelect">
<a-select
style="width: 50px;margin-top:2px;margin-left:25px"
value="更多"
// options={state.projectNameList}
dropdownClassName="tabledropdown"
>
<a-select-option
value="换组"
label="换组"
style="padding-left:35px"
>
<div
onClick={() => {
// state.copy_hs = true;
}}
>
复制
</div>
</a-select-option>
<a-select-option
value="删除"
label="删除"
style="padding-left:35px"
>
<div
onClick={() => {
state.delete_hs = true;
}}
>
删除
</div>
</a-select-option>
</a-select>
</div>
</div>
</div>
</div>
);
}
});
state.tableData = datas;
};
getTableDate();
const showModal = () => {
state.pubproject = true;
};
@@ -2040,6 +2248,9 @@ export default {
const closeModal2 = () => {
state.stugroup = false;
};
const showFaceIn = () => {
state.TaskFaceImpStuvisible = true;
};
//新增
const showTime = (course, name) => {
console.log("点击管理");
@@ -2102,6 +2313,8 @@ export default {
};
const edit_exit = () => {
state.edit_hs = false;
state.radioV1 = "";
state.radioV2 = "";
};
const cloradio1 = (value) => {
if (value != "") {
@@ -2182,7 +2395,10 @@ export default {
>
<span class="stydentName">{text.value}</span>
<div class="studentExcellent">
<img class="studentExcellentImg" />
<img
class="studentExcellentImg"
src={require("../../assets/images/taskpage/excellent.png")}
/>
<span class="studentExcellentT">优秀</span>
</div>
</div>
@@ -2266,7 +2482,9 @@ export default {
];
return tablecolumns;
};
const delete_exit = () => {
state.delete_hs = false;
};
return {
...toRefs(state),
showModal,
@@ -2289,11 +2507,13 @@ export default {
showImportStu,
showSeeStu,
showChangeGroup,
showFaceIn,
edit_hShow,
edit_exit,
cloradio1,
cloradio2,
studentColumns,
delete_exit,
};
},
};
@@ -2858,6 +3078,55 @@ export default {
margin-left: 30px;
margin-top: 10px;
}
.notable {
width: 100%;
height: 100%;
display: flex;
justify-content: center;
.notablebox {
width: 412px;
height: 212px;
background: linear-gradient(180deg, #fef3dd 0%, #fffaf0 100%);
border-radius: 10px;
display: flex;
justify-content: center;
text-align: center;
margin-top: 77px;
margin-bottom: 109px;
cursor: pointer;
position: relative;
.smallleft {
position: absolute;
top: 18px;
left: 0px;
width: 8px;
height: 21px;
border-radius: 0px 4px 4px 0px;
background-color: #ffb64e;
}
.smallright {
position: absolute;
bottom: 18px;
right: 0px;
width: 8px;
height: 21px;
border-radius: 4px 0px 0px 4px;
background-color: #ffb64e;
}
.boxbody {
.boximg {
width: 72px;
height: 72px;
margin: 32px auto 20px auto;
background-image: url(@/assets/images/coursewareManage/nostate.png);
background-size: 100% 100%;
}
.boxtitle {
margin-bottom: 4px;
}
}
}
}
.onerow {
//width: 100%;
display: flex;
@@ -3116,6 +3385,46 @@ export default {
border-top: 0px;
}
}
.taskbox {
width: 412px;
height: 160px;
border-radius: 10px;
position: relative;
margin-left: 68px;
margin-bottom: 40px;
margin-top: 32px;
cursor: pointer;
.leftt {
position: absolute;
top: 18px;
left: 0;
}
.photo {
position: absolute;
top: 42px;
left: 37px;
}
.rightt {
position: absolute;
top: 69px;
right: 26px;
}
.centerbox {
position: absolute;
top: 52px;
left: 145px;
font-size: 20px;
font-weight: 700;
//line-height: 36px;
}
.centermain {
color: rgba(135, 139, 146, 1);
font-size: 14px;
position: absolute;
left: 144px;
bottom: 49px;
}
}
.stage {
display: flex;
height: 49px;
@@ -3445,7 +3754,30 @@ export default {
// position: absolute;
// bottom: 20px;
}
.operation {
display: flex;
justify-content: center;
align-items: center;
color: #4ea6ff;
.nselect {
justify-content: center;
align-items: center;
display: flex;
.jc {
margin-left: 20px;
cursor: pointer;
white-space: nowrap;
}
}
.tableSelect {
margin-right: 10px;
margin-left: -5px;
display: flex;
align-items: center;
justify-content: right;
white-space: nowrap;
}
}
.studentName {
font-size: 14px;
font-weight: 400;
@@ -3462,16 +3794,16 @@ export default {
display: flex;
align-items: center;
.studentExcellentImg {
width: 13px;
height: 14px;
margin-left: 8px;
width: 16px;
height: 16px;
margin-left: 7px;
}
.studentExcellentT {
font-size: 12px;
font-weight: 400;
color: #ffb64e;
line-height: 17px;
margin-left: 5px;
margin-left: 3px;
}
}
@@ -3674,6 +4006,54 @@ export default {
}
}
}
.projectscore {
.pjc_body {
margin-left: 34px;
margin-right: 34px;
.pjcb_header {
display: flex;
justify-content: space-between;
align-items: center;
margin: 24px auto;
.edit_btn {
width: 100px;
// padding: 0px 26px 0px 26px;
height: 38px;
background: rgb(64, 158, 255);
border-radius: 8px;
border: 1px solid rgba(64, 158, 255, 1);
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
cursor: pointer;
.edit {
width: 15px;
height: 15px;
background-image: url(@/assets/images/coursewareManage/export1.png);
background-size: 100% 100%;
}
.btnText {
font-size: 14px;
font-weight: 400;
color: rgb(255, 255, 255);
line-height: 36px;
margin-left: 5px;
}
}
}
.pjcb_content {
border: 1px solid #388be1;
padding: 32px;
.pjcb_content :last-child {
margin-bottom: 0px;
}
.content {
margin-bottom: 24px;
}
}
}
}
}
.content6 {
width: 100%;
@@ -3958,6 +4338,19 @@ export default {
margin-right: 5px;
}
}
.lodalimg {
width: 120px;
height: 120px;
border: 1px dashed #387df7;
display: flex;
justify-content: center;
align-items: center;
cursor: pointer;
.lodalimg {
display: flex;
white-space: nowrap;
}
}
.kqszbox {
.qdqtbox {
margin-left: 5px;
@@ -4048,4 +4441,104 @@ export default {
}
}
}
.DelModal {
.ant-modal {
.ant-modal-content {
width: 424px !important;
.ant-modal-body {
.delete {
z-index: 999;
width: 424px;
background: #ffffff;
box-shadow: 0px 1px 35px 0px rgba(118, 136, 166, 0.21);
border-radius: 4px;
position: absolute;
left: 50%;
top: 10%;
transform: translate(-50%, -50%);
.del_header {
position: absolute;
width: calc(100%);
height: 40px;
background: linear-gradient(
rgba(78, 166, 255, 0.2) 0%,
rgba(78, 166, 255, 0) 100%
);
}
.del_main {
width: 100%;
position: relative;
.header {
display: flex;
align-items: center;
padding-top: 20px;
padding-left: 26px;
font-size: 16px;
.del-icon {
width: 16px;
height: 16px;
margin-right: 10px;
background-image: url(@/assets/images/coursewareManage/notice.png);
background-size: 100% 100%;
}
.icon {
width: 16px;
height: 16px;
margin-right: 10px;
background-image: url(@/assets/images/coursewareManage/QR.png);
background-size: 100% 100%;
}
.close_exit {
position: absolute;
right: 42px;
cursor: pointer;
width: 20px;
height: 20px;
background-image: url(@/assets/images/coursewareManage/close.png);
background-size: 100% 100%;
}
}
.body {
width: 100%;
margin: 34px auto 56px auto;
display: flex;
justify-content: center;
align-items: center;
}
.del_btnbox {
display: flex;
margin: 30px auto;
justify-content: center;
.del_btn {
width: 100px;
height: 40px;
background: rgba(64, 158, 255, 0);
border-radius: 8px;
display: flex;
align-items: center;
justify-content: center;
margin-right: 14px;
flex-shrink: 0;
cursor: pointer;
.btnText {
font-size: 14px;
font-weight: 400;
line-height: 40px;
}
}
.btn1 {
border: 1px solid rgba(64, 158, 255, 1);
color: #4ea6ff;
}
.btn2 {
background-color: #4ea6ff;
color: #ffffff;
}
}
}
}
}
}
}
}
</style>