diff --git a/backend/src/api/question.js b/backend/src/api/question.js
index 9ebcb4b..0755cd5 100644
--- a/backend/src/api/question.js
+++ b/backend/src/api/question.js
@@ -77,4 +77,22 @@ export function getList(query) {
       method: 'post',
       data: fd
     })
+  }
+  export function importQuestion(obj){
+    let fd = new FormData()
+    if(obj instanceof Object){
+      Object.keys(obj).forEach(key =>{
+        const o = obj[key]
+        if(o instanceof Object){
+          fd.append(key,o)
+        }else{
+          fd.append(key,o)
+        }
+      })
+    }
+    return request({
+      url: "/api/question/importQuestion",
+      method: 'post',
+      data: fd
+    })
   }
\ No newline at end of file
diff --git a/backend/src/views/competition/components/survey.vue b/backend/src/views/competition/components/survey.vue
index fd6576d..55061e6 100644
--- a/backend/src/views/competition/components/survey.vue
+++ b/backend/src/views/competition/components/survey.vue
@@ -195,6 +195,7 @@ export default {
     if(this.survey.organizer){
       this.organizerList = this.survey.organizer.split('|')
     } 
+    console.log(this.survey)
     if(this.survey.supporter2){
       this.supporterList2 = this.survey.supporter2.split('|')
     }
@@ -209,6 +210,9 @@ export default {
         if(nv.supporter){
           this.supporterList = this.survey.supporter.split('|')
         }
+        if(nv.supporter2){
+          this.supporterList2 = this.survey.supporter2.split('|')
+        }
         if(nv.organizer){
           this.organizerList = this.survey.organizer.split('|')
         } 
diff --git a/backend/src/views/competition/components/task.vue b/backend/src/views/competition/components/task.vue
index f719b37..cc8a753 100644
--- a/backend/src/views/competition/components/task.vue
+++ b/backend/src/views/competition/components/task.vue
@@ -178,7 +178,7 @@
         </el-table>
         <el-pagination
         :current-page.sync="questionTempQuery.pageNo"
-        :page-sizes="[10,20,30,40,50]"
+        :page-sizes="[10,20,30,40,50,100,200]"
         :page-size.sync="questionTempQuery.pageSize"
         layout="total,prev,pager,next,jumper,sizes"
         :total="questionTempQuery.total"
diff --git a/backend/src/views/resource/exam/add/batch.vue b/backend/src/views/resource/exam/add/batch.vue
index 172671e..658dfe7 100644
--- a/backend/src/views/resource/exam/add/batch.vue
+++ b/backend/src/views/resource/exam/add/batch.vue
@@ -148,8 +148,10 @@ export default {
        
         const files = e.target.files
         const rawFile = files[0] // only use files[0]
-          questionApi.importExcel({
-              file: rawFile
+          questionApi.importQuestion({
+              file: rawFile,
+              courseId: 6,
+              levelId: 0
           }).then(res=>{
               if(res.code == 200){
                   this.list = res.data.list
diff --git a/front/src/views/system/exam.vue b/front/src/views/system/exam.vue
index 88e8789..5125eca 100644
--- a/front/src/views/system/exam.vue
+++ b/front/src/views/system/exam.vue
@@ -111,37 +111,38 @@
                             </div>
                         </div>
                     </div>
-
-                    <div>
-                        <a name="anli" />
-                        案例题(共<span>{{anliInfo.size}}</span>题,每题<span>{{anliInfo.score}}</span>分,共<span>{{anliInfo.sumScore}}</span>分)
-                    </div>
-                    <div v-for="cq in anliQuestion" :key="cq.id">
-                        <a :name="cq.id" />
-                        <div class="anli_title">案例名称:</div>
-                        <div class="anli_sub_title" v-if="!!cq.item">
-                             {{cq.item.stem}}
+                    <div v-if="anliInfo.size>0">
+                        <div>
+                            <a name="anli" />
+                            案例题(共<span>{{anliInfo.size}}</span>题,每题<span>{{anliInfo.score}}</span>分,共<span>{{anliInfo.sumScore}}</span>分)
                         </div>
-                        <div class="anli_title">案例介绍:</div>
-                        <div class="anli_sub_title" v-html="cq.item.content"></div>
-                        <hr class="tz-line-dash" />
-                        <div v-for="subcq in cq.item.children" :key="subcq.id">
-                            <div class="question-stem">
-                                {{subcq.id}}.{{subcq.stem}}
+                        <div v-for="cq in anliQuestion" :key="cq.id">
+                            <a :name="cq.id" />
+                            <div class="anli_title">案例名称:</div>
+                            <div class="anli_sub_title" v-if="!!cq.item">
+                                {{cq.item.stem}}
                             </div>
-                            <div  v-if="subcq.questionType == 1 || subcq.questionType ==3 ">
-                                <div v-for="subitem in subcq.answerList" :key="subitem.id" class="question">
-                                    <b-radio v-model="subcq.answerId" :name="cq.id+'_'+subcq.id+''" :value="subitem.id"  ></b-radio> <span> {{ idToName(subitem.id)}}.</span>{{subitem.title}}
+                            <div class="anli_title">案例介绍:</div>
+                            <div class="anli_sub_title" v-html="cq.item.content"></div>
+                            <hr class="tz-line-dash" />
+                            <div v-for="subcq in cq.item.children" :key="subcq.id">
+                                <div class="question-stem">
+                                    {{subcq.id}}.{{subcq.stem}}
+                                </div>
+                                <div  v-if="subcq.questionType == 1 || subcq.questionType ==3 ">
+                                    <div v-for="subitem in subcq.answerList" :key="subitem.id" class="question">
+                                        <b-radio v-model="subcq.answerId" :name="cq.id+'_'+subcq.id+''" :value="subitem.id"  ></b-radio> <span> {{ idToName(subitem.id)}}.</span>{{subitem.title}}
+                                    </div>
                                 </div>
-                            </div>
 
-                            <div  v-if="subcq.questionType == 2">
-                                <div v-for="subitem in subcq.answerList" :key="subitem.id" class="question">
-                                    <b-check v-model="subcq.answerId" :name="cq.id+'_'+subcq.id+''" :value="subitem.id" ></b-check> <span> {{ idToName(subitem.id)}}.</span>{{subitem.title}}
+                                <div  v-if="subcq.questionType == 2">
+                                    <div v-for="subitem in subcq.answerList" :key="subitem.id" class="question">
+                                        <b-check v-model="subcq.answerId" :name="cq.id+'_'+subcq.id+''" :value="subitem.id" ></b-check> <span> {{ idToName(subitem.id)}}.</span>{{subitem.title}}
+                                    </div>
                                 </div>
                             </div>
-                        </div>
 
+                        </div>
                     </div>
 
                 </div>                      
diff --git a/tz/competition/target/classes/META-INF/build-info.properties b/tz/competition/target/classes/META-INF/build-info.properties
index bae0263..29e1e54 100644
--- a/tz/competition/target/classes/META-INF/build-info.properties
+++ b/tz/competition/target/classes/META-INF/build-info.properties
@@ -1,5 +1,5 @@
 build.artifact=competition
 build.group=com.tz
 build.name=competition
-build.time=2022-05-16T13\:19\:35.289Z
+build.time=2022-07-25T01\:13\:41.151Z
 build.version=1.0-SNAPSHOT
diff --git a/tz/exam/exam-service/pom.xml b/tz/exam/exam-service/pom.xml
index 8e8a8ec..1378ad9 100644
--- a/tz/exam/exam-service/pom.xml
+++ b/tz/exam/exam-service/pom.xml
@@ -32,6 +32,16 @@
             <groupId>com.tz</groupId>
             <artifactId>system-feign</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.monitorjbl</groupId>
+            <artifactId>xlsx-streamer</artifactId>
+            <version>2.1.0</version>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>easyexcel</artifactId>
+            <version>3.0.5</version>
+        </dependency>
         <!--rabbitmq-->
         <dependency>
             <groupId>org.springframework.boot</groupId>
@@ -43,6 +53,7 @@
             <artifactId>spring-boot-starter-test</artifactId>
             <scope>test</scope>
         </dependency>
+
     </dependencies>
 
     <build>
diff --git a/tz/exam/exam-service/src/main/java/com/tz/platform/pc/PCQuestionImportController.java b/tz/exam/exam-service/src/main/java/com/tz/platform/pc/PCQuestionImportController.java
index 066df6c..f5798b6 100644
--- a/tz/exam/exam-service/src/main/java/com/tz/platform/pc/PCQuestionImportController.java
+++ b/tz/exam/exam-service/src/main/java/com/tz/platform/pc/PCQuestionImportController.java
@@ -21,4 +21,9 @@ public class PCQuestionImportController extends BaseController {
     public Result<ListQuestionImportDTO> importExcell(MultipartFile file){
         return importBiz.importExcel(file,getUserNo());
     }
+
+    @PostMapping(value = "importQuestion")
+    public Result<ListQuestionImportDTO> importQuestion(MultipartFile file,Long courseId,Integer levelId){
+        return  importBiz.importExecl2(file,getUserNo(),courseId,levelId);
+    }
 }
diff --git a/tz/exam/exam-service/src/main/java/com/tz/platform/pc/biz/QuestionImportBiz.java b/tz/exam/exam-service/src/main/java/com/tz/platform/pc/biz/QuestionImportBiz.java
index 222e8f4..43ef26b 100644
--- a/tz/exam/exam-service/src/main/java/com/tz/platform/pc/biz/QuestionImportBiz.java
+++ b/tz/exam/exam-service/src/main/java/com/tz/platform/pc/biz/QuestionImportBiz.java
@@ -1,5 +1,8 @@
 package com.tz.platform.pc.biz;
 
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.context.AnalysisContext;
+import com.alibaba.excel.event.AnalysisEventListener;
 import com.tz.platform.common.core.base.Result;
 import com.tz.platform.common.core.bo.Answer;
 import com.tz.platform.common.core.enmus.QuestionTypeEnum;
@@ -13,6 +16,7 @@ import com.tz.platform.feign.user.vo.UserVo;
 import com.tz.platform.feign.vo.StudentLevelVo;
 import com.tz.platform.pc.dto.ListQuestionImportDTO;
 import com.tz.platform.pc.dto.QuestionImportDTO;
+import com.tz.platform.pc.excel.QuestionEx;
 import com.tz.platform.repository.CourseDao;
 import com.tz.platform.repository.QuestionDao;
 import org.apache.catalina.User;
@@ -23,6 +27,7 @@ import org.springframework.stereotype.Component;
 import org.springframework.util.StringUtils;
 import org.springframework.web.multipart.MultipartFile;
 
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
@@ -169,4 +174,165 @@ public class QuestionImportBiz {
 
         return Result.success(dto);
     }
+
+    public Result<ListQuestionImportDTO> importExecl2(MultipartFile file,Long userNo,Long courseId,Integer leveId){
+        if(userNo == null ||userNo<=0){
+            return Result.error("无权操作");
+        }
+        UserVo user = feignUser.getByUserNo(userNo);
+        if(user==null||user.getUserType()< UserTypeEnum.TEACHER.getCode()){
+            return Result.error("无权操作");
+        }
+        Course course = courseDao.getById(courseId);
+        List<StudentLevelVo> levelList = feignStudentLevel.list();
+        StudentLevelVo levelVo = levelList.stream().filter(studentLevelVo -> studentLevelVo.getId().equals(leveId)).findFirst().orElse(null);
+        if(course == null ){
+            return  Result.error("请选择课程");
+        }
+        try {
+            final List list = new ArrayList();
+            EasyExcel.read(file.getInputStream(), QuestionEx.class, new AnalysisEventListener() {
+                @Override
+                public void invoke(Object object, AnalysisContext analysisContext) {
+                    list.add(object);
+                }
+
+                @Override
+                public void doAfterAllAnalysed(AnalysisContext analysisContext) {
+
+                }
+            }).doReadAll();
+
+            ListQuestionImportDTO dto = new ListQuestionImportDTO();
+            List<QuestionImportDTO> list2 = new ArrayList<>();
+            for (Object o :list){
+                QuestionEx questionEx = (QuestionEx) o;
+                QuestionImportDTO subDto = new QuestionImportDTO();
+                subDto.setStem(questionEx.getSub());
+                subDto.setQuestionType(questionEx.getType());
+                subDto.setCourseName(course.getName());
+                if(StringUtils.isEmpty(questionEx.getSub())){
+                    subDto.setStatus("题干为空");
+                }else{
+                    List<Question> temp = questionDao.findAllByStem(questionEx.getSub());
+                    if (temp.size()>0) {
+                        subDto.setStatus("题干已存在");
+                    }
+
+                    Question question = new Question();
+
+
+                    if (levelVo == null) {
+                        question.setLevelId(0);
+                        question.setLevelName("通用");
+                    } else {
+                        question.setLevelId(levelVo.getId());
+                        question.setLevelName(levelVo.getName());
+                    }
+
+                    question.setStem(questionEx.getSub());
+                    question.setUserNo(userNo);
+                    question.setCreateTime(new Date());
+                    question.setStatus(0);
+                    question.setScore(questionEx.getScore());
+                    question.setCreatorId(userNo);
+                    question.setCreator(user.getName());
+                    question.setType(0);
+                    question.setAnalysis(questionEx.getAnalysis());
+                    question.setCourseId(course.getId());
+                    QuestionTypeEnum qt = null;
+                    if(questionEx.getType().contains(QuestionTypeEnum.SINGLE.getDesc())){
+                        qt = QuestionTypeEnum.SINGLE;
+                    }else if(questionEx.getType().contains(QuestionTypeEnum.MULTY.getDesc())){
+                        qt = QuestionTypeEnum.MULTY;
+                    }else if(questionEx.getType().contains(QuestionTypeEnum.JUDGE.getDesc())) {
+                        qt= QuestionTypeEnum.JUDGE;
+                    }
+                    if(qt == null){
+                        subDto.setStatus("题型未匹配");
+                    }else{
+                        List<Answer> answerList = new ArrayList<>();
+                        List<Integer> answerIds = new ArrayList<>();
+                        if(StringUtils.hasText(questionEx.getOptionA())){
+                            Answer answer = new Answer();
+                            answer.setId(1);
+                            answer.setTitle(questionEx.getOptionA());
+                            answerList.add(answer);
+                        }
+
+                        if(StringUtils.hasText(questionEx.getOptionB())){
+                            Answer answer = new Answer();
+                            answer.setId(2);
+                            answer.setTitle(questionEx.getOptionB());
+                            answerList.add(answer);
+                        }
+                        if(StringUtils.hasText(questionEx.getOptionC())){
+                            Answer answer = new Answer();
+                            answer.setId(3);
+                            answer.setTitle(questionEx.getOptionC());
+                            answerList.add(answer);
+                        }
+
+                        if(StringUtils.hasText(questionEx.getOptionD())){
+                            Answer answer = new Answer();
+                            answer.setId(4);
+                            answer.setTitle(questionEx.getOptionD());
+                            answerList.add(answer);
+                        }
+                        if(StringUtils.hasText(questionEx.getOptionE())){
+                            Answer answer = new Answer();
+                            answer.setId(5);
+                            answer.setTitle(questionEx.getOptionE());
+                            answerList.add(answer);
+                        }
+
+
+                        String[]  answerS = questionEx.getAnswer().split(",");
+                        for(int i =0;i<answerS.length;i++){
+                            String a = answerS[i];
+                            switch (a){
+                                case "A":
+                                    answerIds.add(1);
+                                    break;
+                                case  "B":
+                                    answerIds.add(2);
+                                    break;
+                                case "C":
+                                    answerIds.add(3);
+                                    break;
+                                case "D":
+                                    answerIds.add(4);
+                                    break;
+                                case "E":
+                                    answerIds.add(5);
+                                    break;
+                            }
+                        }
+                        if(answerIds.size() == 0){
+                            subDto.setStatus("无答案");
+                        }
+                        if(answerList.size()==0){
+                            subDto.setStatus("无选项");
+                        }
+
+                        if(answerIds.size()>0&&answerList.size()>0&&qt!=null){
+                            question.setQuestionType(qt.getCode());
+                            question.setAnswerList(answerList);
+                            question.setAnswerId(answerIds);
+                            question = questionDao.save(question);
+                            subDto.setId(question.getId());
+                            subDto.setStatus("成功");
+                        }
+                    }
+                    list2.add(subDto);
+                }
+
+            }
+            dto.setList(list2);
+            return Result.success(dto);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return Result.error("操作失败");
+    }
 }
diff --git a/tz/exam/exam-service/src/main/java/com/tz/platform/pc/excel/QuestionEx.java b/tz/exam/exam-service/src/main/java/com/tz/platform/pc/excel/QuestionEx.java
new file mode 100644
index 0000000..af88129
--- /dev/null
+++ b/tz/exam/exam-service/src/main/java/com/tz/platform/pc/excel/QuestionEx.java
@@ -0,0 +1,17 @@
+package com.tz.platform.pc.excel;
+
+import lombok.Data;
+
+@Data
+public class QuestionEx {
+    private String type;
+    private String sub;
+    private String optionA;
+    private String optionB;
+    private String optionC;
+    private String optionD;
+    private String optionE;
+    private String answer;
+    private Long score;
+    private String analysis;
+}
diff --git a/tz/exam/exam-service/src/main/java/com/tz/platform/repository/QuestionDao.java b/tz/exam/exam-service/src/main/java/com/tz/platform/repository/QuestionDao.java
index c7de81f..d5815a3 100644
--- a/tz/exam/exam-service/src/main/java/com/tz/platform/repository/QuestionDao.java
+++ b/tz/exam/exam-service/src/main/java/com/tz/platform/repository/QuestionDao.java
@@ -37,6 +37,8 @@ public interface QuestionDao extends JpaRepository<Question,Long> {
 
     Question getByStem(String stem);
 
+    List<Question> findAllByStem(String stem);
+
     @Transactional
     @Modifying
     @Query(value = "update question set status=:status where id in (:ids)",nativeQuery = true)
diff --git a/tz/exam/exam-service/src/test/java/com/tz/platform/excel/QuestionImportTest.java b/tz/exam/exam-service/src/test/java/com/tz/platform/excel/QuestionImportTest.java
new file mode 100644
index 0000000..aed4fdd
--- /dev/null
+++ b/tz/exam/exam-service/src/test/java/com/tz/platform/excel/QuestionImportTest.java
@@ -0,0 +1,35 @@
+package com.tz.platform.excel;
+
+
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.context.AnalysisContext;
+import com.alibaba.excel.event.AnalysisEventListener;
+import com.tz.platform.pc.excel.QuestionEx;
+import org.junit.jupiter.api.Test;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+public class QuestionImportTest {
+    @Test
+    public  void importTest(){
+            final List list = new ArrayList();
+            EasyExcel.read("/Users/tianchengjun/Desktop/资料/冠军邀请赛数据/test.xlsx", QuestionEx.class, new AnalysisEventListener() {
+                @Override
+                public void invoke(Object object, AnalysisContext analysisContext) {
+                    list.add(object);
+                }
+
+                @Override
+                public void doAfterAllAnalysed(AnalysisContext analysisContext) {
+
+                }
+            }).doReadAll();
+
+            for (Object o :list){
+                QuestionEx questionEx = (QuestionEx) o;
+                System.out.println(questionEx.getSub());
+            }
+    }
+}
diff --git a/tz/gateway/target/classes/META-INF/build-info.properties b/tz/gateway/target/classes/META-INF/build-info.properties
index 08f12d6..7ecb9aa 100644
--- a/tz/gateway/target/classes/META-INF/build-info.properties
+++ b/tz/gateway/target/classes/META-INF/build-info.properties
@@ -1,5 +1,5 @@
 build.artifact=gateway
 build.group=com.tz
 build.name=gateway
-build.time=2022-05-16T13\:19\:35.289Z
+build.time=2022-07-25T01\:13\:41.151Z
 build.version=1.0-SNAPSHOT
diff --git a/tz/gateway/target/maven-archiver/pom.properties b/tz/gateway/target/maven-archiver/pom.properties
index 8b023f4..0db009e 100644
--- a/tz/gateway/target/maven-archiver/pom.properties
+++ b/tz/gateway/target/maven-archiver/pom.properties
@@ -1,5 +1,5 @@
 #Generated by Maven
-#Mon May 16 21:19:46 CST 2022
+#Mon Jul 25 09:13:46 CST 2022
 version=1.0-SNAPSHOT
 groupId=com.tz
 artifactId=gateway
diff --git a/tz/gateway/target/tianze-gateway.jar.original b/tz/gateway/target/tianze-gateway.jar.original
index fccecc5..adb0007 100644
Binary files a/tz/gateway/target/tianze-gateway.jar.original and b/tz/gateway/target/tianze-gateway.jar.original differ