Files
bd-training-exam-manager/src/components/addNewData/trainindTopic/interlocution/excleAdd.vue

103 lines
2.1 KiB
Vue

<template>
<UploadFile
ref="uploadFileRef"
:options="options"
:relatedRules="relatedRules"
:relatedOptions="relatedOptions"
/>
</template>
<script setup>
import { ref } from "vue";
import { ElMessage } from "element-plus";
import UploadFile from "../../../operate/uploadFile.vue";
const uploadFileRef = ref(null);
const formClone = ref([]);
const options = {
limit: 1,
accept: ".xlsx",
action: "",
multiple: false,
listType: "text",
autoUpload: false,
};
const relatedRules = {
stem: {
value: "",
label: "题干",
},
answer: {
value: "",
label: "答案",
},
difficulty: {
value: "",
label: "难度",
},
};
const relatedOptions = [
{
value: "0",
label: "题干",
disabled: false,
},
{
value: "1",
label: "答案",
disabled: false,
},
{
value: "2",
label: "难度",
disabled: false,
},
];
const emit = defineEmits(["addInterlocution"]);
const resetCheckForm = () => {
if (!uploadFileRef) return;
uploadFileRef.value.handleExceed();
};
const confirm = async () => {
if (!uploadFileRef) return;
formClone.value = [];
const length = uploadFileRef.value.loadData.length;
if (length == 0) return ElMessage.error("请先上传文件!");
const flag = await uploadFileRef.value.confirm();
if (!flag) return ElMessage.error("请先选择表格关联项!");
ElMessage({
message: `正在上传数据中,请稍等...`,
type: "success",
});
setTimeout(() => {
uploadFileRef.value.loadData.forEach((ExcleForm) => {
ExcleForm.forEach((worksheet) => {
let context = [...worksheet];
context.shift();
context.forEach((item) => {
if (item.length != 0) {
formClone.value.push({
stem: item[relatedRules.stem.value],
answer: item[relatedRules.answer.value],
difficulty: item[relatedRules.difficulty.value],
});
}
});
});
});
emit("addInterlocution", formClone.value);
}, 3000);
};
defineExpose({ resetCheckForm, confirm, formClone });
</script>
<style scoped></style>