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

606 lines
17 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="addvoteVisible"
class="drawerStyle addvoteDrawer"
width="80%"
title="添加投票"
placement="right"
@after-visible-change="afterVisibleChange"
>
<div class="drawerMain">
<div class="header">
<div v-if="edit" class="headerTitle">编辑投票</div>
<div v-else class="headerTitle">添加投票</div>
<img
style="width: 29px; height: 29px; cursor: pointer"
src="../../assets/images/basicinfo/close.png"
@click="closeDrawer"
/>
</div>
<div class="contentMain">
<div class="main_left">
<div class="main_item">
<div class="signbox">
<div class="sign">
<img
src="@/assets/images/coursewareManage/asterisk.png"
alt=""
/>
</div>
<span style="margin-right: 3px">任务名称</span>
</div>
<div class="btnbox">
<a-input
v-model:value="inputV1"
style="width: 424px; height: 32px"
placeholder="请输入投票名称"
maxlength="20"
/>
</div>
</div>
<div class="main_item">
<div class="signbox">
<div class="sign">
<img
src="@/assets/images/coursewareManage/asterisk.png"
alt=""
/>
</div>
<span>创建投票</span>
</div>
<div class="btnbox">
<button
class="xkbtn"
:style="{ display: creVote ? 'none' : 'block' }"
@click="showDrawerCreVote"
>
创建投票
</button>
<button
class="xkbtn"
:style="{ display: creVote ? 'block' : 'none' }"
@click="showDrawerCreVote"
>
编辑投票
</button>
<div :style="{ display: creVote ? 'block' : 'none' }">
<div class="fileTigan">
<span style="color: #388be1">{{ballotName}}</span>
<div class="delBox" @click="dleVoteStem()"></div>
</div>
</div>
</div>
<!-- 创建投票侧弹窗 -->
<div>
<cre-vote
v-model:crevoteVisible="crevotevisible"
@getData="getStemId"
v-model:voteStemId="voteStemId"
v-model:editStem="editStem"
/>
</div>
<!-- 创建投票侧弹窗 -->
</div>
<div class="main_item">
<div class="signbox">
<span style="margin-right: 3px">起止时间</span>
</div>
<div class="btnbox">
<a-range-picker
style="width: 424px"
:placeholder="[' 开始时间', ' 结束时间']"
/>
</div>
</div>
<div class="main_item">
<div class="signbox">
<span style="margin-right: 3px">基础投票数</span>
</div>
<div class="btnbox">
<button class="xkbtn">点击上传</button>
</div>
</div>
<div class="main_item" style="margin-top: -25px">
<div class="signbox"></div>
<div class="btnbox">
<span style="color: #999999">支持xls.xlsx</span>
</div>
</div>
<div class="main_item2">
<div class="signbox">
<span style="margin-right: 3px">投票说明</span>
</div>
<div class="textarea">
<a-textarea
v-model:value="textV1"
placeholder="请输入投票说明"
allow-clear
maxlength="150"
/>
</div>
</div>
</div>
</div>
<div class="main_btns">
<button class="btn1">取消</button>
<button class="btn2" @click="creoredi()">确定</button>
</div>
</div>
</a-drawer>
</template>
<script>
import { reactive, toRefs, ref } from "vue";
import CreVote from "../../components/drawers/CreVote.vue";
import * as api from "../../api/indexVote";
import * as apitaskadd from "../../api/indexTaskadd";
import { message } from "ant-design-vue";
import { toDate } from "../../api/method";
import { RouterEditTask } from "@/api/indexTask";
const options1 = ref([
{
value: "value1",
label: "请选择状态",
},
]);
const rowSelection = ref({
checkStrictly: false,
onChange: (selectedRowKeys, selectedRows) => {
console.log(
`selectedRowKeys: ${selectedRowKeys}`,
"selectedRows: ",
selectedRows
);
},
onSelect: (record, selected, selectedRows) => {
console.log(record, selected, selectedRows);
},
onSelectAll: (selected, selectedRows, changeRows) => {
console.log(selected, selectedRows, changeRows);
},
});
export default {
name: "AddVote",
components: {
CreVote,
},
props: {
addvoteVisible: {
type: Boolean,
default: false,
},
edit: {
type: Boolean,
default: false,
},
learn: {
type: Number,
default: 0,
},
projectId: {
type: Number,
default: null,
},
chooseStageId: {
type: Number,
default: null,
},
voteId: {
type: Number,
default: null,
},
ballotId: {
type: Number,
default: null,
}
},
setup(props, ctx) {
const state = reactive({
inputV1: "",
textV1: "",
creVote: false,
crevotevisible: false,
time: undefined,
basevote: "",
endTimes: "",
startTimes: "",
ascriptionId: "",
voteStemId: null,
voteId:"",
voteStemName:"",
ballotName: "",
editStem: false, //编辑状态
ballotId: "", //题干id
optionId: "", //删除修改选项id
});
const closeDrawer = () => {
state.inputV1 = "",
state.textV1 = "",
state.startTimes = "",
state.time = undefined,
state.endTimes = "",
state.basevote = "",
ctx.emit("update:addvoteVisible", false);
ctx.emit("update:edit", false);
};
const afterVisibleChange = (bool) => {
console.log("state", bool);
// if (props.edit == true) {
// queryVoteText()
// }
};
const showDrawerCreVote = () => {
state.crevotevisible = true;
if (state.creVote == true) {
state.editStem = true
}
};
const getStemId = (data) => {
state.ballotName = data.ballotName;
state.voteStemName = data.voteStemName;
state.voteStemId = Number(data.voteStemId);
state.ballotId = Number(data.ballotId)
state.creVote = data.creVote;
console.log('state.voteStemId', state.voteStemId);
console.log('state.voteStemId', state.creVote);
}
//暂时没用 之前给子用传参来着
// const changeVData = (data) => {
// console.log("111", data);
// state.creVote = data.creVote;
// state.ascriptionId = data.ascriptionId;
// state.voteStemId = data.voteStemId;
// state.voteStemName = data.voteStemName;
// console.log("222", state.creVote);
// console.log("333", state.ascriptionId);
// };
const delBox = () => {
state.creVote = false;
};
const updateTableData = (data) => {
console.log(data, 'data');
}
//删除题干信息接口
const dleVoteStem = () => {
let objdelstem = {
voteStemId:state.voteStemId
}
api.deleteVoteStem(objdelstem)
.then((res) => {
console.log('删除题干信息成功', res)
message.success('删除题干信息成功')
delBox()
})
}
//新建还是编辑方法
const creoredi = () => {
if (props.eidt == false) {
createVoteText()
}
else {
changeVoteText()
}
}
//创建投票信息
const createVoteText = () => {
if (!state.inputV1) {
message.destroy();
return message.info("请输入投票名称");
}
if (state.basevote == "") {
state.basevote = 1;
}
if (state.time != undefined) {
state.endTimes = toDate(
new Date(state.time[0].$d).getTime() / 1000,
"Y-M-D"
);
state.startTimes = toDate(
new Date(state.time[1].$d).getTime() / 1000,
"Y-M-D"
);
}
let obj = {
ballotId: state.ballotId,
baseVote: state.basevote,
createTime: "",
createUser: 0,
updateTime: "",
updateUser: 0,
voteEndTime: state.endTimes,
voteExplain: state.textV1,
voteFlag: "",
voteId: 0,
voteName: state.inputV1,
voteStartTime: state.startTimes,
voteTag: ""
};
api
.createVote(obj)
.then((res) => {
console.log("创建成功123", res);
message.success("创建成功");
let changeVoteId = {
voteId: res.data.data.voteId,
ballotId: state.ballotId,
}
ctx.emit("getData", changeVoteId);
closeDrawer();
if (props.learn == 0)
//添加到项目任务列表
apitaskadd
.addTask({
courseId: 0,
duration: 0,
flag: true,
name: obj.voteName,
projectId: props.projectId,
projectTaskId: 0,
stageId: props.chooseStageId,
type: 12,
})
.then((res) => {
console.log("调用项目添加接口后", res.data);
//自定义事件给父组件传值
ctx.emit("changeData", false);
//重新获取任务列表
// apiTask.getTask({ projectId: 28 });
// router.push("/taskadd");
})
.catch((err) => {
console.log(err);
});
else {
let editObj1 = {
chapterId: 36,
courseId: 0,
duration: 0,
flag: true,
name: obj.voteName,
routerId: 92,
routerTaskId: 0,
type: 12,
};
RouterEditTask(editObj1);
}
})
.catch((err) => {
console.log("创建失败", err);
});
};
//根据投票id获取投票信息
// const queryVoteText = ()=>{
// let objqurvt = {
// voteStemId:state.voteStemId
// //没有接口 个人认为应该是这个id
// }
// api
// //目前没接口 大概写的
// .queryVoteText(objqurvt)
// .then((res)=>{
// console.log('获取投票信息成功',res);
// state.inputV1 = res.data.data.voteName
// state.endTimes = res.data.data.voteEndTime
// state.startTimes = res.data.data.voteStartTime
// state.textV1 = res.data.data.voteExplain
// state.baseVote = res.data.data.baseVote
// state.ascriptionId = res.data.data.ascriptionId
// state.ballotId = res.data.data.ballotId
// })
// .catch((err)=>{
// console.log('获取投票信息失败',err);
// })
// }
//修改投票信息接口
const changeVoteText = () => {
let objcvt = {
ballotId: state.ballotId,
baseVote: state.basevote,
createTime: "",
createUser: 0,
updateTime: "",
updateUser: 0,
voteEndTime: state.endTimes,
voteExplain: state.textV1,
voteFlag: "",
voteId: state.voteId,
voteName: state.inputV1,
voteStartTime: state.startTimes,
voteTag: ""
}
api
.editVote(objcvt)
.then((res) => {
console.log('修改投票信息成功', res);
})
.catch((err) => {
console.log('修改投票信息失败', err);
})
}
return {
...toRefs(state),
showDrawerCreVote,
afterVisibleChange,
closeDrawer,
getStemId,
// changeVData,
rowSelection,
options1,
dleVoteStem,
creoredi,
createVoteText,
changeVoteText,
delBox,
// queryVoteText,
updateTableData,
};
},
};
</script>
<style lang="scss">
.ant-table-striped :deep(.table-striped) td {
background-color: #fafafa !important;
}
.addvoteDrawer {
.drawerMain {
.header {
height: 73px;
border-bottom: 1px solid #e8e8e8;
display: flex;
justify-content: space-between;
align-items: center;
flex-shrink: 0;
.headerTitle {
font-size: 18px;
font-weight: 600;
color: #333333;
line-height: 25px;
margin-left: 24px;
}
}
.contentMain {
display: flex;
justify-content: space-between;
.main_left {
padding-right: 30px;
flex: 1;
border-right: 1px solid #e8e8e8;
.main_item {
display: flex;
align-items: center;
margin-bottom: 32px;
.signbox {
width: 120px;
display: flex;
justify-content: end;
align-items: center;
.sign {
margin-right: 5px;
}
}
.btnbox {
display: flex;
flex: 1;
align-items: center;
.xkbtn {
cursor: pointer;
width: 130px;
height: 40px;
background: #388be1;
border-radius: 8px;
border: 0;
margin-right: 8px;
color: #fff;
margin-right: 10px;
}
.fileTigan {
display: flex;
align-items: center;
padding: 3px 5px;
background-color: rgba(42, 103, 209, 0.4);
span {
margin-right: 5px;
}
.delBox {
width: 13px;
height: 13px;
background-image: url(@/assets/images/basicinfo/ch.png);
background-size: 100% 100%;
border-radius: 50%;
}
}
}
}
.main_item2 {
display: flex;
align-items: flex-start;
margin-bottom: 32px;
.signbox {
width: 120px;
display: flex;
justify-content: end;
align-items: center;
.sign {
margin-right: 5px;
}
}
.kqszbox {
.qdqtbox {
margin-left: 56px;
}
.setbox {
display: flex;
flex-wrap: wrap;
margin-top: 10px;
margin-bottom: 24px;
.timerbox {
margin-top: 6px;
margin-right: 32px;
display: flex;
align-items: center;
flex-wrap: nowrap;
}
}
}
.btnbox2 {
display: flex;
flex-direction: column;
justify-content: flex-start;
.xkbtn {
cursor: pointer;
width: 130px;
height: 40px;
background: #388be1;
border-radius: 8px;
border: 0;
margin-right: 16px 8px 32px 0;
color: #fff;
margin-top: 16px;
margin-bottom: 60px;
}
}
}
}
}
.main_btns {
height: 72px;
width: 100%;
bottom: 0;
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: #4ea6ff;
border-radius: 8px;
border: 0;
margin-left: 15px;
color: #fff;
}
}
}
}
</style>