一键导入修改

main
hujunpeng 3 months ago
parent 4757c3a3d4
commit 0056237bb5
  1. BIN
      packages/examination/public/template.xlsx
  2. 55
      packages/examination/src/views/question/questionAdd.tsx

@ -3,9 +3,6 @@ import { Form, Input, Button, Radio, Checkbox, Select, message } from "antd";
import { dictionary } from "api/dict/index"; import { dictionary } from "api/dict/index";
import { addQuestion, findIndustry } from "api/question"; import { addQuestion, findIndustry } from "api/question";
import * as XLSX from "xlsx"; import * as XLSX from "xlsx";
// @ts-ignore
import { saveAs } from "file-saver";
import TextArea from "antd/es/input/TextArea";
const { Option } = Select; const { Option } = Select;
@ -70,7 +67,6 @@ class QuestionAdd extends Component<any, States> {
// 题型切换 // 题型切换
handleQuestionTypeChange = (formId: string, value: string) => { handleQuestionTypeChange = (formId: string, value: string) => {
const { questionTypesMap } = this.state;
const formValues = {}; const formValues = {};
formValues[`questionTypes_${formId}`] = value; formValues[`questionTypes_${formId}`] = value;
this.formRef.current.setFieldsValue(formValues); this.formRef.current.setFieldsValue(formValues);
@ -175,22 +171,23 @@ class QuestionAdd extends Component<any, States> {
// 下载模板 // 下载模板
handleDownloadTemplate = () => { handleDownloadTemplate = () => {
const headers = [ const downloadUrl = '/template.xlsx';
"题型", fetch(downloadUrl)
"监管行业", .then(response => {
"AQ服务类型", return response.blob();})
"题干", .then(blob => {
"选项A", const url = window.URL.createObjectURL(blob);
"选项B", const link = document.createElement('a');
"选项C", link.href = url;
"选项D", link.setAttribute('download', '试题模板.xlsx');
"答案" document.body.appendChild(link);
]; link.click();
const ws = XLSX.utils.aoa_to_sheet([headers]); link.parentNode?.removeChild(link);
const wb = XLSX.utils.book_new(); window.URL.revokeObjectURL(url);
XLSX.utils.book_append_sheet(wb, ws, "试题模板"); })
const wbOut = XLSX.write(wb, { bookType: "xlsx", type: "array" }); .catch(error => {
saveAs(new Blob([wbOut], { type: "application/octet-stream" }), "试题模板.xlsx"); console.error('下载文件时出错:', error);
});
}; };
// 一键导入 // 一键导入
@ -216,9 +213,21 @@ class QuestionAdd extends Component<any, States> {
rows.forEach((row: any, index) => { rows.forEach((row: any, index) => {
const formId = `form_${index}`; const formId = `form_${index}`;
formIds.push(formId); formIds.push(formId);
formValues[`questionTypes_${formId}`] = String(row[0]); let questionTypeId = '';
formValues[`industryId_${formId}`] = String(row[1]); if (row[0] === '单选题') {
formValues[`serviceTypeId_${formId}`] = String(row[2]); questionTypeId = '1';
} else if (row[0] === '多选题') {
questionTypeId = '2';
}
const {industryDict ,serviceTypeDict } = this.state
const industryItem = industryDict.find((item:any) => item.industryName === row[1]);
const industryId = industryItem ? String(industryItem.industryId) : '';
const serviceTypeItem = serviceTypeDict.find((item:any) => item.dictValue === row[2]);
const serviceTypeId = serviceTypeItem ? String(serviceTypeItem.dictKey) : '';
formValues[`questionTypes_${formId}`] = questionTypeId;
formValues[`industryId_${formId}`] = industryId;
formValues[`serviceTypeId_${formId}`] = serviceTypeId;
formValues[`questionContent_${formId}`] = String(row[3]); formValues[`questionContent_${formId}`] = String(row[3]);
formValues[`optionA_${formId}`] = String(row[4]); formValues[`optionA_${formId}`] = String(row[4]);
formValues[`optionB_${formId}`] = String(row[5]); formValues[`optionB_${formId}`] = String(row[5]);

Loading…
Cancel
Save