feat: 投票题干获取,成员列表批量删除,查看,搜索,模板编辑修改

This commit is contained in:
王熙东
2022-11-17 18:53:50 +08:00
parent 0acb1f027d
commit 132381cc88
6 changed files with 1557 additions and 28 deletions

View File

@@ -63,7 +63,9 @@ export const deleteVoteStemOption = (obj) => http.post('/vote/deleteVoteStemOpti
export const editVote = (obj) => http.post('/vote/editVote', obj)
//根据题干ID获取题干信息
export const queryStemByStemId = (obj) => http.post('/vote/queryStemByStemId', { params: obj })
export const queryStemByStemId = (obj) => http.post('/vote/queryStemByStemId', obj,{
headers: {'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'}
})
//修改题干信息接口
export const updateStemMessage = (obj) => http.post('/vote/updateStemMessage', obj);

View File

@@ -56,6 +56,7 @@
>
创建投票
</button>
<a @click="queryStem">查看投票</a>
<div>
<CreateVote
v-model:createVoteVisible="createVoteVisible"
@@ -77,6 +78,13 @@
</div>
</div>
</div>
<!-- 查看投票弹窗 -->
<queryStem @closeDrawer="closeStem"
v-model:addStemVisible="addStemVisible" />
<!-- 创建投票侧弹窗 -->
<div>
<create-vote
@@ -142,12 +150,13 @@ import { message } from "ant-design-vue";
import { RouterEditTask } from "@/api/indexTask";
import dayjs from "dayjs";
import * as apiTask from "../../api/indexTaskadd";
import queryStem from "./queryStem.vue"
export default {
name: "AddVote",
components: {
CreateVote,
queryStem,
},
props: {
addvoteVisible: {
@@ -210,6 +219,7 @@ export default {
editStem: false, //编辑状态
ballotId: 0, //题干id
optionId: "", //删除修改选项id
addStemVisible:false, //
editChild:false,
});
const closeDrawer = () => {
@@ -366,6 +376,12 @@ export default {
}
}
const queryStem = () => {
state.addStemVisible = true;
};
const closeStem = () => {
state.addStemVisible = false;
};
return {
...toRefs(state),
showDrawerCreVote,
@@ -376,7 +392,8 @@ export default {
dleVoteStem,
updateVoteInfo,
delBox,
queryStem,
closeStem,
};
},
};

View File

@@ -0,0 +1,86 @@
<template>
<a-drawer :visible="addStemVisible"
placement="right" class="custom-class"
@after-visible-change="afterVisibleChange"
@close="closeDrawer" width="60%">
<div>
<h2 style="text-align:center;">投票查看</h2>
<div v-for="(item,index) in form" :key="item.voteStemId">
<div class="title">{{index+1}}. {{item.voteStemName}}</div>
<a-radio-group v-model:value="item.voteStemId">
<a-radio :value="3" :style="radioStyle">
{{item.optionDetailList[0].optionName}}</a-radio>
<br />
<a-radio :value="2" :style="radioStyle">
{{item.optionDetailList[1].optionName}}</a-radio>
</a-radio-group>
</div>
</div>
</a-drawer>
</template>
<script>
import { reactive, toRefs,ref } from "vue";
import { message } from "ant-design-vue";
import * as api from "@/api/indexVote"
export default {
name: "queryStem",
props: {
addStemVisible:{
type: Boolean,
default: false,
}
},
setup(props,ctx) {
const value = ref(1);
const state = reactive({
form:[],
});
const radioStyle = reactive({
display: 'flex',
height: '30px',
lineHeight: '30px',
});
const afterVisibleChange = (bool) => {
if(bool === true) {
getStem()
}
}
const getStem = () => {
let obj = {
stemId:0,
ballotId:2,
}
api.queryStemByStemId(obj).then((res) => {
state.form = res.data.data
console.log(JSON.stringify(res.data)+'***');
message.success("投票获取成功");
console.log(res);
}).catch((err) => {
message.error("投票获取失败"+err);
console.log(err);
})
}
const closeDrawer = () => {
ctx.emit("closeDrawer")
}
return {
...toRefs(state),
afterVisibleChange,
closeDrawer,
radioStyle,
value
}
}
}
</script>
<style>
.title {
font-size: 17px;
}
</style>

View File

@@ -98,10 +98,12 @@
<div class="taskmain">快速创建项目详情</div>
</div>
<div class="second">
<router-link :to="{ path: '/leveladddetail' }">
<div
class="taskbox"
style="background: linear-gradient(180deg, #fef3dd, #fffaf0)"
>
<div class="leftt">
<img src="../../assets/images/taskpage/left1.png" />
</div>
@@ -116,8 +118,9 @@
</div>
<div class="centermain">快速添加任务/关卡</div>
</div>
</router-link>
<div
class="taskbox"
class="taskbox" @click="showAddStu"
style="background: linear-gradient(180deg, #ddeaff, #f0f8fe)"
>
<div class="leftt">
@@ -129,7 +132,9 @@
<div class="rightt">
<img src="../../assets/images/taskpage/right2.png" />
</div>
<div class="centerbox" style="color: rgba(78, 166, 255, 1)">
<div class="centerbox"
style="color: rgba(78, 166, 255, 1)">
添加学员
</div>
<div class="centermain">快速添加学员</div>
@@ -155,7 +160,6 @@
</div>
</div>
</div>
<!-- 概览无数据 -->
<!-- 概览有数据 -->
<div :style="{ display: nodata ? 'none' : 'block' }">
<div class="onerow"><div class="taskmain">关卡概览</div></div>
@@ -215,16 +219,16 @@
stage2: item.stageId != choosedStageId,
}"
:key="item.stageId"
@click="choosedStageId = item.stageId"
@click="stageChange(item.name,item.stageId)"
>
{{ item.stage }}
关卡{{ item.stageId }}
</div>
<!-- <div class="stage1">阶段1</div>
<div class="stage2">阶段2</div> -->
</div>
<div class="stagesecond">
<div class="staname">关卡名称</div>
<div class="stamess">管理者进阶-腾飞班1第一关卡</div>
<div class="stamess">{{stateName}}</div>
</div>
<div class="stagelast">
<div class="stagepro">
@@ -578,8 +582,8 @@
<a-select
style="width: 130px"
value="更多操作"
:options="projectNameListt"
@change="selectProjectName"
@change="handleStuChange"
:options="projectNameList"
></a-select>
</div>
</div>
@@ -588,12 +592,12 @@
<div class="xu">
<span class="yi">已选择</span>
<div style="width: 5px; display: inline-block"></div>
<span class="th">3</span>
<span class="th">{{selectedRowKeys.length}}</span>
<div style="width: 5px; display: inline-block"></div>
<span class="yi"></span>
<span class="zon">列表选项总数</span>
<span class="yi">5</span>
<span class="yi"></span>
<span class="th">{{tableData.length}}</span>
<span class="yi"> </span>
</div>
</div>
<div class="tableBox" style="margin-top: 30px">
@@ -1203,6 +1207,7 @@ export default {
CheckStuvisible: false, //学员管理的查看抽屉
addLoading: false, // 加载动画
choosedStageId: 1, // 选择的阶段id
selectedRowKeys:[],
twobtn: true,
number: true,
twobtnn: false,
@@ -1214,6 +1219,20 @@ export default {
styTitle: null,
cretime: null,
picUrl: null,
projectNameList:[
{
value: '1',
label: '导出信息',
},
{
value: '2',
label: '批量调整关卡',
},
{
value: '3',
label: '批量删除',
}
],
// 共享文档列表
docList: [
{
@@ -1262,7 +1281,7 @@ export default {
pageSize: 10,
visiblene: false,
sh: false,
nodata: false,
nodata: true,
closeDeleteAll: false,
curLevel: "",
taskSyllabusActive: 0,
@@ -1279,6 +1298,7 @@ export default {
visible: false, //时间管理
TMvisible: false, //考试管理
FaceVisivle: false, //面授管理
stateName:null, // 关卡名称
//关卡的数据
level: [
// {
@@ -1330,11 +1350,11 @@ export default {
// 阶段列表
{
stageId: 1,
stage: "关卡一",
name: "关卡一xx",
},
{
stageId: 2,
stage: "关卡二",
name: "关卡二xx",
},
],
});
@@ -1542,7 +1562,10 @@ export default {
const closehuodModal = () => {
state.huodModal = false;
};
const stageChange = (name,id) => {
state.choosedStageId = id;
state.stateName = name;
}
const changeTabs = (e) => {
console.log("切换tabs", e, state.routerId);
if (e == 2) {
@@ -1567,12 +1590,12 @@ export default {
.then((res) => {
console.log("获取学员列表", res);
let data = res.data.data.rows || null;
state.tableData = [];
// state.tableData = [];
if (data.length) {
for (let i in data) {
let _time = new Date(data[i].beginStudyTime * 1000);
state.tableData.push({
key: i + 1,
key: data[i].studentId,
com: data[i].userInfoBo.deptName,
name: data[i].userInfoBo.userName,
gang: data[i].userInfoBo.jobName,
@@ -1620,6 +1643,7 @@ export default {
onMounted(() => {
state.addLoading = true;
getOverview();
myGetRouterDetail();
reget();
});
const closePub = () => {
@@ -1807,8 +1831,10 @@ export default {
const myGetRouterDetail = () => {
GetRouterDetail(state.routerId)
.then((res) => {
if(res.data.data.routerInfo.status == 1) {
state.nodata = false;
}
let data = res.data.data.chapterList;
state.taskSyllabus = data;
// for(let i in data) {
// state.taskSyllabus[i].name = data[i].name
@@ -1819,8 +1845,13 @@ export default {
// })
// }
// }
// }
levelList.stageList = [];
for(let i in data) {
if(i==0) {state.stateName = data[0].name}
levelList.stageList.push({
stageId:Number(i)+1,
name:data[i].name
}) }
})
.catch((err) => {
console.log(err);
@@ -1869,6 +1900,27 @@ export default {
state.gatenamee = '';
getStudent();
};
const handleStuChange = (value) => {
console.log(value);
if(value == 2) {state.visiblene = true}
if(value == 3 ) { deleteStu() }
};
const deleteStu = () => {
if(state.selectedRowKeys.length == 0) {
message.warning("请选择成员");
return }
let obj = {
routerId:100,
studentIds:state.selectedRowKeys,
}
api.delStudent(obj).then((res) => {
console.log(res);
message.success("批量删除成功")
}).catch(err => {
message.error("批量删除失败"+err);
console.log(err)
})
};
return {
...toRefs(state),
...toRefs(levelList),
@@ -1898,6 +1950,7 @@ export default {
changeTabs,
checkType,
handleChange,
handleStuChange,
delConfirm,
searchLevel,
resetLevel,
@@ -1914,6 +1967,7 @@ export default {
stopLearnPath,
showStop,
reget,
stageChange,
};
},
};

View File

@@ -200,7 +200,7 @@
: 'none',
}"
>
考勤
<!-- 考勤 -->
</div>
<div
class="operation"
@@ -214,7 +214,7 @@
: 'none',
}"
>
二维码
<!-- 二维码 -->
</div>
<div
class="operation"
@@ -238,7 +238,7 @@
: null
"
>
管理
<!-- 管理 -->
</div>
</div>
</div>
@@ -388,7 +388,7 @@
<div class="setting">
<div class="set_tit">
<span>基本信息</span>
<span class="editBtn" @click="() => {isEdit=true}">编辑</span>
<span class="editBtn" @click="toEdit">编辑</span>
</div>
<hr color="#E8E8E8" />
<div class="set_body">
@@ -593,6 +593,7 @@
import { ref, reactive, defineComponent, toRefs, onMounted} from "vue";
import { message } from "ant-design-vue";
import * as api from "@/api/indexTemplate"
import { useRouter } from "vue-router";
export default defineComponent({
name: "LibraryAdd",
setup() {
@@ -790,6 +791,7 @@ export default defineComponent({
const value = ref("");
const value2 = ref("");
const textnum = "150";
const routered = useRouter();
const changeopclo = () => {
state.hideshow = !state.hideshow;
};
@@ -907,7 +909,15 @@ export default defineComponent({
console.log(err)
})
}
const toEdit = () => {
routered.push({
path: "/templateAdd",
query: {
projectId: state.projectId,
name: state.name,
},
});
}
// 新建或编辑阶段
const stateEdit = () => {
let obj={
@@ -959,6 +969,7 @@ export default defineComponent({
taskDel,
stateEdit,
taskEdit,
toEdit,
};
},
computed: {

File diff suppressed because it is too large Load Diff