mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/vue/fe-manage.git
synced 2025-12-15 22:06:45 +08:00
feat: 投票题干获取,成员列表批量删除,查看,搜索,模板编辑修改
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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,
|
||||
};
|
||||
},
|
||||
};
|
||||
|
||||
86
src/components/vote/queryStem.vue
Normal file
86
src/components/vote/queryStem.vue
Normal 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>
|
||||
@@ -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,
|
||||
};
|
||||
},
|
||||
};
|
||||
|
||||
@@ -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: {
|
||||
|
||||
1359
src/views/projectcenter/templateAdd.vue
Normal file
1359
src/views/projectcenter/templateAdd.vue
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user