--fix 路径图整体修改

This commit is contained in:
yuping
2023-02-16 13:08:35 +08:00
parent 57681e0725
commit 00c50a9e3c
31 changed files with 10910 additions and 9567 deletions

View File

@@ -1,15 +1,17 @@
<template>
<div @click="openDrawer">
<slot></slot>
</div>
<a-drawer
:visible="addvoteVisible"
:visible="visible"
class="drawerStyle addvoteDrawer"
width="80%"
width="800"
title="添加投票"
placement="right"
@after-visible-change="afterVisibleChange"
>
<div class="drawerMain">
<div class="header">
<div v-if="edit" class="headerTitle">编辑投票任务</div>
<div v-if="taskIndex>=0" class="headerTitle">编辑投票任务</div>
<div v-else class="headerTitle">添加投票任务</div>
<img
style="width: 29px; height: 29px; cursor: pointer"
@@ -31,7 +33,7 @@
</div>
<div class="btnbox">
<a-input
v-model:value="inputV1"
v-model:value="formData.voteName"
style="width: 424px; height: 40px; border-radius: 8px;"
placeholder="请输入投票任务名称"
maxlength="20"
@@ -51,10 +53,12 @@
<div class="select">
<a-range-picker
:show-time="{ format: 'HH:mm' }"
:disabled-date="disabledDate" :disabled-time="disabledRangeTime"
:disabled-date="disabledDate"
:disabled-time="disabledRangeTime"
format="YYYY-MM-DD HH:mm"
style="width: 424px"
v-model:value="time"
v-model:value="dateTime"
@change="timeChange"
:placeholder="[' 开始时间', ' 结束时间']"
/>
</div>
@@ -70,45 +74,19 @@
<span>创建投票题干</span>
</div>
<div class="btnbox">
<button class="xkbtn" @click="showDrawerCreVote">
{{ voteId ? "编辑" : "创建" }}投票题干
</button>
<div v-if="voteId">
<a-tag closable color="processing" @close="handlelog">
<CreateVote v-model:options="formData.voteStemDtoList">
<button class="xkbtn">
{{ formData.voteStemDtoList.length ? "编辑" : "创建" }}投票题干
</button>
</CreateVote>
<div v-if="formData.voteStemDtoList.length">
<a-tag closable color="processing" @close="handleDel">
<span style="font-size: 14px; line-height: 33px">
删除投票题干
</span>
</a-tag>
</div>
<div>
<CreateVote
v-model:createVoteVisible="createVoteVisible"
v-model:voteId="voteId"
/>
</div>
<button
class="xkbtn"
:style="{ display: creVote ? 'block' : 'none' }"
@click="showDrawerCreVote"
>
编辑投票
</button>
<div :style="{ display: creVote ? 'block' : 'none' }">
<div class="fileTigan">
<span style="color: #4ea6ff">{{ voteName }}</span>
<div class="delBox" @click="dleVoteStem()"></div>
</div>
</div>
</div>
<!-- 创建投票侧弹窗 -->
<div>
<create-vote
v-model:crevoteVisible="crevotevisible"
v-model:voteId="voteId"
/>
</div>
<!-- 创建投票侧弹窗 -->
</div>
<div class="main_item2">
<div class="signbox">
@@ -116,7 +94,7 @@
</div>
<div class="textarea">
<a-textarea
v-model:value="textV1"
v-model:value="formData.voteExplain"
placeholder="请输入投票说明"
allow-clear
:rows="6"
@@ -127,280 +105,250 @@
</div>
</div>
<div class="main_btns">
<button class="btn1" @click="closeDrawer()">取消</button>
<button class="btn2" @click="updateVoteInfo()">确定</button>
<button class="btn1" @click="closeDrawer">取消</button>
<button class="btn2" @click="confirm">确定</button>
</div>
</div>
</a-drawer>
</template>
<script>
import {reactive, toRefs} from "vue";
<script setup>
import {defineEmits, defineProps, ref} from "vue";
import CreateVote from "./CreateVote.vue";
import * as api from "../../api/indexVote";
import {message} from "ant-design-vue";
import {RouterEditTask} from "@/api/indexTask";
import {Form, message} from "ant-design-vue";
import dayjs from "dayjs";
import * as apiTask from "../../api/indexTaskadd";
import {addTempTask} from "../../api/indexTaskadd";
import {baseVoteupload} from "../../api/indexEval";
export default {
name: "AddVote",
components: {
CreateVote,
},
props: {
addvoteVisible: {
type: Boolean,
default: false,
const props = defineProps({
type: Number,
taskList: []
})
const visible = ref(false)
const formData = ref({
voteName: '',
voteStartTime: '',
voteEndTime: '',
voteStemDtoList: [],
voteExplain: '',
})
const emit = defineEmits({})
const taskIndex = ref(-1);
const dateTime = ref([]);
const rulesRef = ref({
voteName: [
{
required: true,
message: '请输入投票名称',
},
taskIdDraft: {
type: Number,
default: null,
},
edit: {
type: Boolean,
default: false,
],
voteStartTime: [
{
required: true,
message: '请输入起止时间',
},
EditVoteId: {
type: Number,
default: null,
],
voteEndTime: [
{
required: true,
message: '请输入起止时间',
},
projectId: {
type: Number,
default: null,
],
voteStemDtoList: [
{
required: true,
message: '请创建题干信息',
},
chooseStageId: {
type: Number,
default: null,
},
routerTaskId: {
type: Number,
default: 0,
},
isLevel: {
// 是否是关卡页面触发
type: Number,
default: null,
},
projectTaskId: {
// 要编辑的projectId
type: Number,
default: null,
},
routerId: {
type: Number,
default: null,
},
isactive: {
type: Number,
default: null,
},
projectTemplateId: {
type: Number,
default: null,
},
},
setup(props, ctx) {
const state = reactive({
inputV1: "",
textV1: "",
createVoteVisible: false,
time: undefined,
startTime: "",
endTime: "",
basevote: "",
ascriptionId: "",
voteStemId: null,
EditVoteId: "",
voteStemName: "",
ballot_name: "",
editStem: false, //编辑状态
voteId: '', //题干id
optionId: "", //删除修改选项id
addStemVisible: false, //
editChild: false,
fileList: [],
voteCount: null,
projectTemplateId: null,
});
const closeDrawer = () => {
state.inputV1 = "";
state.textV1 = "";
state.time = undefined;
state.basevote = "";
state.voteId = "";
ctx.emit("update:addvoteVisible", false);
ctx.emit("update:edit", false);
],
});
};
const afterVisibleChange = (bool) => {
if (props.edit && bool) {
queryVoteInfo();
}
state.projectTemplateId = props.projectTemplateId;
console.log("projectTemplateId visible====", state.projectTemplateId);
};
const {resetFields, validate} = Form.useForm(formData, rulesRef);
const showDrawerCreVote = () => {
state.createVoteVisible = true;
state.editChild = props.edit;
};
// 限制文件格式上传
const beforeUpload = (file) => {
if (file.type.indexOf("sheet") == -1) {
message.destroy();
message.error("请上传正确的文件格式");
state.fileList = [];
return false;
}
const formData = new FormData();
formData.append("uploadFile", file);
baseVoteupload(formData).then((res) => {
if (res.data.code === 200) {
state.basevote = res.data.data;
}
});
return false;
};
//删除题干信息接口
const dleVoteStem = () => {
api.deleteVoteStem({voteStemId: state.voteId}).then(() => {
message.success("删除题干信息成功");
});
};
//根据投票id获取投票信息
const queryVoteInfo = () => {
api.queryVoteDetailById(props.EditVoteId)
.then((res) => {
state.inputV1 = res.data.data.voteName;
state.textV1 = res.data.data.voteExplain;
state.baseVote = res.data.data.baseVote;
state.ascriptionId = res.data.data.ascriptionId;
state.voteId = res.data.data.id;
state.time = [
dayjs(res.data.data.voteStartTime, "YYYY-MM-DD HH:mm"),
dayjs(res.data.data.voteEndTime, "YYYY-MM-DD HH:mm"),
];
})
};
const updateToTask = (res) => {
console.log("props.isLevel=====", props.isLevel);
if (props.isLevel == 1) {
if (!props.isactive) {
message.destroy();
return message.warning("请先选中关卡");
}
RouterEditTask({
chapterId: props.isactive,
courseId: res.data.data.id,
name: res.data.data.voteName,
routerId: props.routerId,
routerTaskId: props.routerTaskId || 0,
type: 12,
id: props.taskIdDraft
}).then(() => {
ctx.emit("changeData", false);
state.addLoading = false;
})
} else if (props.isLevel == 2) {
apiTask.addTask({
courseId: res.data.data.id,
name: res.data.data.voteName,
projectId: props.projectId,
projectTaskId: props.projectTaskId || 0,
stageId: props.chooseStageId || 0,
type: 12,
id: props.taskIdDraft
})
.then(() => {
ctx.emit("changeData", false);
})
} else if (props.isLevel == 3) {
addTempTask({
courseId: res.data.data.id,
name: res.data.data.voteName,
projectTemplateId: props.projectTemplateId,
projectTaskId: props.projectTaskId || 0,
stageId: props.chooseStageId || 0,
type: 12,
id: props.taskIdDraft
})
.then(() => {
ctx.emit("changeData", false);
//message.success(`${props.edit ? "编辑" : "新增"}阶段任务成功`);
})
}
};
//修改投票信息接口
const updateVoteInfo = () => {
if (!state.inputV1) {
message.destroy();
return message.warning("请输入投票名称");
}
if (!state.voteId) {
message.destroy();
return message.warning("请创建题干信息");
}
if (!state.time) {
message.destroy();
return message.warning("请输入起止时间");
}
if (state.time) {
state.startTime = dayjs(state.time[0]).format("YYYY-MM-DD HH:mm:ss");
state.endTime = dayjs(state.time[1]).format("YYYY-MM-DD HH:mm:ss");
}
let obj = {
voteName: state.inputV1,
voteStartTime: dayjs(state.time[0]).format("YYYY-MM-DD HH:mm:ss"),
voteEndTime: dayjs(state.time[1]).format("YYYY-MM-DD HH:mm:ss"),
id: state.voteId,
voteExplain: state.textV1,
};
api.editVote(obj).then(async (res) => {
await updateToTask(res);
closeDrawer();
message.destroy();
message.success(props.edit ? "修改投票信息成功" : "添加投票信息成功");
})
};
const queryStem = () => {
state.addStemVisible = true;
};
const closeStem = () => {
state.addStemVisible = false;
};
const handlelog = (e) => {
state.ballotId = null;
console.log(e);
};
function downloadTemplate() {
window.open("/manageApi/投票基础数据模版.xlsx");
}
return {
...toRefs(state),
downloadTemplate,
showDrawerCreVote,
afterVisibleChange,
closeDrawer,
queryVoteInfo,
dleVoteStem,
updateVoteInfo,
queryStem,
closeStem,
beforeUpload,
handlelog,
};
},
const closeDrawer = () => {
visible.value = false
taskIndex.value = -1
dateTime.value = []
resetFields()
};
const range = (start, end) => {
const result = [];
for (let i = start; i < end; i++) {
result.push(i);
}
return result;
};
function timeChange(time, timeStr) {
formData.value.voteStartTime = timeStr[0]
formData.value.voteEndTime = timeStr[1]
}
const disabledDate = (current) => {
return current && current < dayjs().startOf('day');
};
const disabledRangeTime = () => ({
disabledHours: () => range(0, 24).splice(4, 20),
disabledMinutes: () => range(30, 60),
disabledSeconds: () => [55, 56],
});
async function confirm() {
await validate().catch(({errorFields}) => {
message.warning(errorFields[0].errors.join());
throw Error("数据校验不通过")
});
if (taskIndex.value === -1) {
const list = props.taskList
list.push({name: formData.value.voteName, type: props.type, info: {...formData.value}})
} else {
const data = props.taskList[taskIndex.value]
data.name = formData.value.voteName
data.info = {...formData.value}
}
emit('update:taskList', [...props.taskList])
closeDrawer()
}
function openDrawer(i, row) {
row && (formData.value = {...row.info});
row && (dateTime.value = [dayjs(row.info.voteStartTime, "YYYY-MM-DD HH:mm"), dayjs(row.info.voteEndTime, "YYYY-MM-DD HH:mm")]);
(i >= 0) && (taskIndex.value = i)
visible.value = true
}
function handleDel() {
}
defineExpose({openDrawer})
// 限制文件格式上传
// const beforeUpload = (file) => {
// if (file.type.indexOf("sheet") == -1) {
// message.destroy();
// message.error("请上传正确的文件格式");
//
// state.fileList = [];
// return false;
// }
//
// const formData = new FormData();
// formData.append("uploadFile", file);
// baseVoteupload(formData).then((res) => {
// if (res.data.code === 200) {
// state.basevote = res.data.data;
// }
// });
// return false;
// };
//
// //删除题干信息接口
// const dleVoteStem = () => {
// api.deleteVoteStem({voteStemId: state.voteId}).then(() => {
// message.success("删除题干信息成功");
// });
// };
//
// //根据投票id获取投票信息
// const queryVoteInfo = () => {
// api.queryVoteDetailById(props.EditVoteId)
// .then((res) => {
// state.inputV1 = res.data.data.voteName;
// state.textV1 = res.data.data.voteExplain;
// state.baseVote = res.data.data.baseVote;
// state.ascriptionId = res.data.data.ascriptionId;
// state.voteId = res.data.data.id;
// state.time = [
// dayjs(res.data.data.voteStartTime, "YYYY-MM-DD HH:mm"),
// dayjs(res.data.data.voteEndTime, "YYYY-MM-DD HH:mm"),
// ];
// })
// };
// const updateToTask = (res) => {
// console.log("props.isLevel=====", props.isLevel);
// if (props.isLevel == 1) {
// if (!props.isactive) {
// message.destroy();
// return message.warning("请先选中关卡");
// }
// RouterEditTask({
// chapterId: props.isactive,
// courseId: res.data.data.id,
// name: res.data.data.voteName,
// routerId: props.routerId,
// routerTaskId: props.routerTaskId || 0,
// type: 12,
// id: props.taskIdDraft
// }).then(() => {
// ctx.emit("changeData", false);
// state.addLoading = false;
// })
// } else if (props.isLevel == 2) {
// apiTask.addTask({
// courseId: res.data.data.id,
// name: res.data.data.voteName,
// projectId: props.projectId,
// projectTaskId: props.projectTaskId || 0,
// stageId: props.chooseStageId || 0,
// type: 12,
// id: props.taskIdDraft
// })
// .then(() => {
// ctx.emit("changeData", false);
// })
// } else if (props.isLevel == 3) {
// addTempTask({
// courseId: res.data.data.id,
// name: res.data.data.voteName,
// projectTemplateId: props.projectTemplateId,
// projectTaskId: props.projectTaskId || 0,
// stageId: props.chooseStageId || 0,
// type: 12,
// id: props.taskIdDraft
// })
// .then(() => {
// ctx.emit("changeData", false);
// //message.success(`${props.edit ? "编辑" : "新增"}阶段任务成功`);
// })
// }
// };
// //修改投票信息接口
// const updateVoteInfo = () => {
//
// if (state.time) {
// state.startTime = dayjs(state.time[0]).format("YYYY-MM-DD HH:mm:ss");
// state.endTime = dayjs(state.time[1]).format("YYYY-MM-DD HH:mm:ss");
// }
// let obj = {
// voteName: state.inputV1,
// voteStartTime: dayjs(state.time[0]).format("YYYY-MM-DD HH:mm:ss"),
// voteEndTime: dayjs(state.time[1]).format("YYYY-MM-DD HH:mm:ss"),
// id: state.voteId,
// voteExplain: state.textV1,
// };
// api.editVote(obj).then(async (res) => {
// await updateToTask(res);
// closeDrawer();
// message.destroy();
// message.success(props.edit ? "修改投票信息成功" : "添加投票信息成功");
// })
// };
// const queryStem = () => {
// state.addStemVisible = true;
// };
// const closeStem = () => {
// state.addStemVisible = false;
// };
// const handlelog = (e) => {
// state.ballotId = null;
// console.log(e);
// };
//
// function downloadTemplate() {
// window.open("/manageApi/投票基础数据模版.xlsx");
// }
</script>
<style lang="scss">
.ConfirmModal {