From 0056237bb5466db8274cc8922ff8e53d41f40356 Mon Sep 17 00:00:00 2001 From: hujunpeng Date: Thu, 27 Mar 2025 15:58:11 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=80=E9=94=AE=E5=AF=BC=E5=85=A5=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/examination/public/template.xlsx | Bin 0 -> 10755 bytes .../src/views/question/questionAdd.tsx | 55 ++++++++++-------- 2 files changed, 32 insertions(+), 23 deletions(-) create mode 100644 packages/examination/public/template.xlsx diff --git a/packages/examination/public/template.xlsx b/packages/examination/public/template.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..5484058059b8241cf1e897feb4daf4ec9774f22a GIT binary patch literal 10755 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 WS`7SU&H;q{{F8Y0mPPh*_x}Kq-KhQm literal 0 HcmV?d00001 diff --git a/packages/examination/src/views/question/questionAdd.tsx b/packages/examination/src/views/question/questionAdd.tsx index 91adbbb..9e1e67a 100644 --- a/packages/examination/src/views/question/questionAdd.tsx +++ b/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 { addQuestion, findIndustry } from "api/question"; import * as XLSX from "xlsx"; -// @ts-ignore -import { saveAs } from "file-saver"; -import TextArea from "antd/es/input/TextArea"; const { Option } = Select; @@ -70,7 +67,6 @@ class QuestionAdd extends Component { // 题型切换 handleQuestionTypeChange = (formId: string, value: string) => { - const { questionTypesMap } = this.state; const formValues = {}; formValues[`questionTypes_${formId}`] = value; this.formRef.current.setFieldsValue(formValues); @@ -175,22 +171,23 @@ class QuestionAdd extends Component { // 下载模板 handleDownloadTemplate = () => { - const headers = [ - "题型", - "监管行业", - "AQ服务类型", - "题干", - "选项A", - "选项B", - "选项C", - "选项D", - "答案" - ]; - const ws = XLSX.utils.aoa_to_sheet([headers]); - const wb = XLSX.utils.book_new(); - XLSX.utils.book_append_sheet(wb, ws, "试题模板"); - const wbOut = XLSX.write(wb, { bookType: "xlsx", type: "array" }); - saveAs(new Blob([wbOut], { type: "application/octet-stream" }), "试题模板.xlsx"); + const downloadUrl = '/template.xlsx'; + fetch(downloadUrl) + .then(response => { + return response.blob();}) + .then(blob => { + const url = window.URL.createObjectURL(blob); + const link = document.createElement('a'); + link.href = url; + link.setAttribute('download', '试题模板.xlsx'); + document.body.appendChild(link); + link.click(); + link.parentNode?.removeChild(link); + window.URL.revokeObjectURL(url); + }) + .catch(error => { + console.error('下载文件时出错:', error); + }); }; // 一键导入 @@ -216,9 +213,21 @@ class QuestionAdd extends Component { rows.forEach((row: any, index) => { const formId = `form_${index}`; formIds.push(formId); - formValues[`questionTypes_${formId}`] = String(row[0]); - formValues[`industryId_${formId}`] = String(row[1]); - formValues[`serviceTypeId_${formId}`] = String(row[2]); + let questionTypeId = ''; + if (row[0] === '单选题') { + 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[`optionA_${formId}`] = String(row[4]); formValues[`optionB_${formId}`] = String(row[5]);