feat:任务批量删除弹窗 概览 获取规则 设置编辑 共享文档

This commit is contained in:
songwc
2022-11-14 18:18:57 +08:00
parent db70b9033d
commit c7dc4dd6e0
6 changed files with 702 additions and 439 deletions

View File

@@ -23,3 +23,6 @@ export const topStudent = (obj) => http.post('/admin/project/topStudent', obj)
//项目概览
export const overview = (obj) => http.get('/admin/project/overview', { params: obj })
//设置项目积分规则
export const setScoreRule = (obj) => http.post('/admin/project/setScoreRule', obj)

View File

@@ -164,8 +164,50 @@
><span class="scoretext">{{ score1 }} </span><span>积分</span>
</div>
<div class="content">
<span>优秀学员可获得 </span
><span class="scoretext">{{ score2 }}</span
<span>完成在线课程获得 </span
><span class="scoretext">{{ done }}</span
><span style="margin-right:50px">积分</span>
<span>完成面授课程获得 </span
><span class="scoretext">{{ done1 }}</span
><span style="margin-right:50px">积分</span>
<span>完成作业成绩不低于 </span
><span class="scoretext">{{ done2 }}</span
><span>分获得</span>
<span class="scoretext">{{ done3 }}</span
><span>积分</span>
</div>
<div class="content">
<span></span
><span class="scoretext">{{ four1}}</span
><span>名学完在线课程获得</span>
<span class="scoretext">{{ four2}}</span
><span style="margin-right:50px">积分</span>
<span></span
><span class="scoretext">{{ four3}}</span
><span>名提交作业且成绩不低于</span>
<span class="scoretext">{{ four4}}</span
><span >分获得</span>
<span class="scoretext">{{ four5}}</span
><span>积分</span>
</div>
<div class="content">
<span>考试成绩高于</span
><span class="scoretext">{{ five1 }}</span
><span>分获得</span>
<span class="scoretext">{{ five2 }}</span
><span>积分</span>
</div>
<div class="content">
<span>考勤正常学员获得 </span
><span class="scoretext">{{ six1}}</span
><span>积分</span>
</div>
<div class="content">
<span>成为小组长获得</span
><span class="scoretext">{{ seven1 }}</span
><span style="margin-right:50px">积分</span>
<span>优秀学员可获得</span>
<span class="scoretext">{{ seven2 }}</span
><span>积分</span>
</div>
</div>
@@ -186,11 +228,82 @@
><span>积分</span>
</div>
<div class="content">
<span>优秀学员可获得 </span
<span>完成在线课程获得 </span
><span
><a-input v-model:value="score2" :bordered="false" /></span
><span>积分</span>
><a-input v-model:value="done" :bordered="false" /></span
><span style="margin-right:50px">积分</span>
<span>完成面授课程获得 </span
><a-input
v-model:value="done1"
:bordered="false"
/>
<span style="margin-right:50px">积分</span>
<span>完成作业成绩不低于 </span
><a-input
v-model:value="done2"
:bordered="false"
/><span>分获得</span>
<a-input
v-model:value="done3"
:bordered="false"
/><span>积分</span>
</div>
<div class="content">
<span></span
><a-input
v-model:value="four1"
:bordered="false"
/><span>名学完在线课程获得</span>
<a-input
v-model:value="four2"
:bordered="false"
/><span style="margin-right:50px">积分</span>
<span></span
><a-input
v-model:value="four3"
:bordered="false"
/><span>名提交作业且成绩不低于</span>
<a-input
v-model:value="four4"
:bordered="false"
/><span >分获得</span>
<a-input
v-model:value="four5"
:bordered="false"
/><span>积分</span>
</div>
<div class="content">
<span>考试成绩高于</span
><a-input
v-model:value="five1"
:bordered="false"
/><span>分获得</span>
<a-input
v-model:value="five2"
:bordered="false"
/><span>积分</span>
</div>
<div class="content">
<span>考勤正常学员获得 </span
><a-input
v-model:value="six1"
:bordered="false"
/><span>积分</span>
</div>
<div class="content">
<span>成为小组长获得</span
><a-input
v-model:value="seven1"
:bordered="false"
/><span style="margin-right:50px">积分</span>
<span>优秀学员可获得</span>
<a-input
v-model:value="seven2"
:bordered="false"
/><span>积分</span>
</div>
</div>
</div>
</div></a-tab-pane
@@ -372,6 +485,20 @@ export default {
Svisible: false,
score1: 5,
score2: 5,
done:null,
done1:null,
done2:null,
done3:null,
four1:null,
four2:null,
four3:null,
four4:null,
four5:null,
five1:null,
five2:null,
six1:null,
seven1:null,
seven2:null,
edit: true,
searchRankName:null,//榜单搜索名称
});

View File

@@ -347,10 +347,13 @@
v-if="showHidden"
@click="morePeopleHidden"
>
<div>收起 <img
<div>
收起
<img
style="width: 10px; height: 12px; margin-top: -2px"
src="../../assets/images/projectadd/pickUp.png"
/></div>
/>
</div>
</div>
</div>
<div class="line"></div>
@@ -409,10 +412,13 @@
v-if="showHidden1"
@click="morePeopleHidden1"
>
<div>收起 <img
<div>
收起
<img
style="width: 10px; height: 12px; margin-top: -2px"
src="../../assets/images/projectadd/pickUp.png"
/></div>
/>
</div>
</div>
</div>
<div class="line"></div>
@@ -469,10 +475,13 @@
v-if="showHidden2"
@click="morePeopleHidden2"
>
<div>收起 <img
<div>
收起
<img
style="width: 10px; height: 12px; margin-top: -2px"
src="../../assets/images/projectadd/pickUp.png"
/></div>
/>
</div>
</div>
</div>
</div>
@@ -1051,6 +1060,7 @@ export default {
// console.log("selectedRowKeys changed: ", selectedRowKeys,item);
state.selectedRowKeys = selectedRowKeys;
state.choosepeople = item.reverse();
console.log(item, "选中你了!", state.choosepeople);
selectedsHeight();
};
//单个删除选中的人

View File

@@ -1161,7 +1161,6 @@ export default {
getTableDate();
};
const searchSubmit = () => {
console.log("点击了搜索");
state.currentPage = 1;
@@ -2921,6 +2920,9 @@ export default {
data.subList.map((data2) => {
data2.paraentName = value.name + "/" + data.name;
data2.isbj = "class";
storage.set("isbj", data.projectId);
// console.log(data2.paraentName, "conme");
storage.set("pN", data2.paraentName);
});
// console.log("lalallalaa", data);
} else {

View File

@@ -337,7 +337,7 @@
<div class="onerow">
<div class="taskmain">任务列表</div>
<button class="btn" @click="showChangeModal">移动任务到阶段</button>
<div class="edit" @click="deleteTaskAll">
<div class="edit" @click="showdeAll">
<img
class="editimg"
src="../../assets/images/projectadd/delete.png"
@@ -787,6 +787,35 @@
</div>
</div>
</a-modal>
<a-modal
v-model:visible="deAll"
:footer="null"
:closable="cC"
wrapClassName="ConfirmModal"
centered="true"
>
<div class="delete">
<div class="del_header"></div>
<div class="del_main">
<div class="header">
<div class="icon"></div>
<span>提示</span>
<div class="close_exit" @click="closeDeAll"></div>
</div>
<div class="body">
<span>您确定要批量删除任务吗</span>
</div>
<div class="del_btnbox">
<div class="del_btn btn1">
<div class="btnText" @click="closeDeAll">取消</div>
</div>
<div class="del_btn btn2">
<div class="btnText" @click="deleteTaskAll">确定</div>
</div>
</div>
</div>
</div>
</a-modal>
<!-- 移动任务到阶段 -->
<a-modal
style="padding: 0"
@@ -850,7 +879,6 @@ import * as apimove from "../../api/indexMovetask";
import draggable from "vuedraggable";
import { storage } from "../../api/storage";
const drawercolumns = [
{
title: "项目名称",
@@ -928,6 +956,7 @@ export default {
EditInvistId: null,
EditVoteId: null,
projectTaskId: null, // 要编辑的具体任务id
deAll: false,
projectNameList: [
{
id: 1,
@@ -1325,7 +1354,6 @@ export default {
// console.log("22222", res.data.data.stageList);
let leng = res.data.data.stageList.length;
if (leng > 0) {
let arr = res.data.data.stageList[0].taskList;
console.log("任务列表", arr);
getTableData(arr);
@@ -1351,8 +1379,6 @@ export default {
});
};
//获取删除id投票)
const changeVData = (data) => {
console.log("8989", data);
@@ -1420,8 +1446,11 @@ export default {
})
.catch((err) => {
console.log(err);
message.destroy();
message.warning("批量删除失败");
});
});
state.deAll = false;
};
const onSelectChange = (selectedRowKeys) => {
console.log("selectedRowKeys changed: ", selectedRowKeys);
@@ -1566,6 +1595,8 @@ export default {
});
}
state.selectRow = arr;
console.log(state.selectRow, "xuanzhong");
console.log(Object.prototype.toString.call(state.selectRow));
//判断是否是全部选择或者是全部未选择来修改selectAll框的样式
if (arr.length !== 0) {
if (arr.length === state.tableData.length) {
@@ -1608,7 +1639,6 @@ export default {
console.log("任务id", id);
};
//打开测评的弹窗
const showEditEvalDrawer = (id, eleId) => {
console.log("222222222222222222222", id);
@@ -1641,6 +1671,17 @@ export default {
showDrawerAddTest(id, eleId);
}
};
const showdeAll = () => {
if(state.selectRow.length==0){
message.destroy()
return message.warning("请选择要删除的任务")
}else{
state.deAll = true;
}
};
const closeDeAll = () => {
state.deAll = false;
};
return {
...toRefs(state),
selectProjectName,
@@ -1688,8 +1729,8 @@ export default {
moveTask,
deleteTaskAll,
decideType,
showdeAll,
closeDeAll,
};
},
};

View File

@@ -175,9 +175,15 @@
<div class="stage2">阶段2</div>
</div> -->
<div class="stagemess">
<div v-for="item in stageList"
:class= "{ 'stage1': item.stageId == choosedStageId, 'stage2': item.stageId != choosedStageId }"
:key="item.stageId" @click="choosedStageId = item.stageId">
<div
v-for="item in stageList"
:class="{
stage1: item.stageId == choosedStageId,
stage2: item.stageId != choosedStageId,
}"
:key="item.stageId"
@click="choosedStageId = item.stageId"
>
{{ item.stage }}
</div>
<!-- <div class="stage1">阶段1</div>
@@ -216,20 +222,35 @@
<div class="protext">作业完成率</div>
</div>
<div class="proright">
<div class="pronub" style="margin-left: 280px">{{stageOverviewList.totalTaskCnt}}</div>
<div class="pronub" style="margin-left: 280px">
{{ stageOverviewList.totalTaskCnt }}
</div>
<div class="proright1">
<span class="textpro">阶段任务总数</span>
<a-progress :percent="stageOverviewList.totalTaskCnt" style="width: 369px" />
<a-progress
:percent="stageOverviewList.totalTaskCnt"
style="width: 369px"
/>
</div>
<div class="pronub" style="margin-left: 206px">
{{ stageOverviewList.totalReqCnt }}
</div>
<div class="pronub" style="margin-left: 206px">{{stageOverviewList.totalReqCnt}}</div>
<div class="proright1">
<span class="textpro">必修课</span>
<a-progress :percent="stageOverviewList.totalReqCnt" style="width: 369px" />
<a-progress
:percent="stageOverviewList.totalReqCnt"
style="width: 369px"
/>
</div>
<div class="pronub" style="margin-left: 142px">
{{ stageOverviewList.totalOptCnt }}
</div>
<div class="pronub" style="margin-left: 142px">{{stageOverviewList.totalOptCnt}}</div>
<div class="proright1">
<span class="textpro">选修课</span>
<a-progress :percent="stageOverviewList.totalOptCnt" style="width: 369px" />
<a-progress
:percent="stageOverviewList.totalOptCnt"
style="width: 369px"
/>
</div>
</div>
</div>
@@ -454,7 +475,6 @@
background: linear-gradient(180deg, #ddeaff, #f0f8fe);
display: block;
"
>
<div class="leftt">
<img src="../../assets/images/taskpage/left2.png" />
@@ -871,7 +891,7 @@
<div class="img"></div>
<div class="ed">编辑</div>
</div> -->
<div class="edit">
<div class="edit" @click="toEdit">
<div class="img"></div>
<div class="ed">编辑</div>
</div>
@@ -962,29 +982,48 @@
<a-switch v-model:checked="docChecked"></a-switch>
</div>
</div>
<div class="btnbox" style="margin:20px;">
<div class="btnbox" style="margin: 20px">
<a-upload
v-model:file-list="fileList"
name="file"
action="/api/file/upload"
@change="handleChange"
>
<span class="xkbtn" style="cursor: pointer; font-size: 17px" >上传</span>
<img src="@/assets/images/basicinfo/cloud.png" style="cursor: pointer;
width:34px;height:34px;
" alt="">
<span
class="xkbtn"
style="cursor: pointer; font-size: 17px"
>上传</span
>
<img
src="@/assets/images/basicinfo/cloud.png"
style="cursor: pointer; width: 34px; height: 34px"
alt=""
/>
</a-upload>
<div class="btnbox" style="margin:20px;">
<div class="btnbox" style="margin: 20px">
<span style="color: #999999">
支持pdf.ppt.pptx.doc.docx.xls.xlsx.jpeg.png.gif.zip
</span>
</div>
<div v-for="item in docList" :key="item.src" class="docListStyle">
<img src="@/assets/images/basicinfo/download.png" style="cursor: pointer;
width:40px;height:40px;margin-right:40px;
" alt="">
<span style="font: oblique bold 16px Sans-serif">{{item.name}}</span>
<span style="color: #4ea6ff;float:right;">删除</span>
<div
v-for="item in docList"
:key="item.src"
class="docListStyle"
>
<img
src="@/assets/images/basicinfo/download.png"
style="
cursor: pointer;
width: 40px;
height: 40px;
margin-right: 40px;
"
alt=""
/>
<span style="font: oblique bold 16px Sans-serif">{{
item.name
}}</span>
<span style="color: #4ea6ff; float: right">删除</span>
</div>
</div>
</div>
@@ -1455,6 +1494,7 @@
<script>
import { reactive, toRefs, onMounted } from "vue";
import { useRoute } from "vue-router";
import { useRouter } from "vue-router";
// import { CaretRightOutlined } from "@ant-design/icons-vue";
import TimeManage from "../../components/drawers/TimeManage";
import FaceManage from "../../components/drawers/FaceManage";
@@ -1515,6 +1555,9 @@ export default {
projectId: storage.get("projectId")
? JSON.parse(storage.get("projectId"))
: null,
isbj: storage.get("isbj") ? JSON.parse(storage.get("isbj")) : null,
// pN: storage.get("pN") ? JSON.parse(storage.get("pN")) : null,
pN: storage.get("pN"),
goodstuList: [
{
id: 1,
@@ -1545,17 +1588,17 @@ export default {
docChecked: true,
docList: [
{
name:'测试文档1.doc',
name: "测试文档1.doc",
src: "",
},
{
name:'测试文档2.doc',
name: "测试文档2.doc",
src: "",
},
{
name:'测试文档3.doc',
name: "测试文档3.doc",
src: "",
}
},
],
//学员信息列表
tabledata: [
@@ -2122,6 +2165,7 @@ export default {
level: null, //项目级别
systemId: null, //培训体系
picUrl: null,
parentId: null,
});
const levelList = reactive({
@@ -2158,6 +2202,7 @@ export default {
// 输入接入 -- start --
const router = useRoute();
const routered = useRouter();
console.log("route:", router.query.id);
// 输入接入 -- start --
@@ -2921,7 +2966,7 @@ export default {
let info = res.data.data.projectInfo;
let start = toDate(info.beginTime / 1000, "Y-M-D");
let end = toDate(info.endTime / 1000, "Y-M-D");
state.parentId = info.parentId;
state.name = info.name;
state.startTime = start;
state.endTime = end;
@@ -3071,6 +3116,40 @@ export default {
message.error(`${info.file.name} 文件上传失败.`);
}
};
//设置里的编辑按钮
const toEdit = () => {
if (state.parentId == "0") {
routered.push({
path: "/projectadd",
query: {
projectId: state.projectId,
name: state.name,
},
});
} else {
if (state.isbj !== null) {
routered.push({
path: "/classadd",
query: {
projectId: state.projectId,
// name: state.paraentName,
name: state.pN,
edit: 0,
},
});
} else {
routered.push({
path: "/sonproject",
query: {
projectId: state.projectId,
name: state.name,
edit: 0,
},
});
}
}
};
onMounted(() => {
getStu();
getTaskList();
@@ -3154,6 +3233,7 @@ export default {
cancelcanyou,
changePaginationStu,
handleChange,
toEdit,
};
},
};