CrazyIter vor 5 Jahren
Ursprung
Commit
0361214924

+ 10 - 0
TEAMModelOS.GRPC/appsettings.Development.json

@@ -0,0 +1,10 @@
+{
+  "Logging": {
+    "LogLevel": {
+      "Default": "Debug",
+      "System": "Information",
+      "Grpc": "Information",
+      "Microsoft": "Information"
+    }
+  }
+}

+ 15 - 0
TEAMModelOS.GRPC/appsettings.json

@@ -0,0 +1,15 @@
+{
+  "Logging": {
+    "LogLevel": {
+      "Default": "Information",
+      "Microsoft": "Warning",
+      "Microsoft.Hosting.Lifetime": "Information"
+    }
+  },
+  "AllowedHosts": "*",
+  "Kestrel": {
+    "EndpointDefaults": {
+      "Protocols": "Http2"
+    }
+  }
+}

+ 0 - 52
TEAMModelOS.Grpc/appsettings.Development.json

@@ -6,57 +6,5 @@
       "Grpc": "Information",
       "Microsoft": "Information"
     }
-  },
-  "urls": "https://*:5000",
-  "GrpcServer": {
-    //用于grpc启动后注册到服务发现的ip地址段
-    "ServiceAddress": "192.168.*.*:",
-    //是否启用服务注册和服务发现,默认是true
-    "EnableDiscovery": false,
-    //服务发现服务器地址
-    "DiscoveryUrl": "http://106.12.23.251:8500",
-    //注册到服务发现的服务名称
-    "DiscoveryServiceName": "TMDOSgRPC",
-    //服务发现主动TTL的时间(秒)
-    "DiscoveryTTLInterval": 10,
-    //注册到服务发现的服务Tag
-    "DiscoveryServiceTags": "v-1.0.0.1",
-    //默认错误码
-    "DefaultErrorCode": 4300000,
-    //Jaeger配制(OpenTracing)
-    "Jaeger": {
-      //是否启用Jaeger,默认false
-      "Enable": false,
-      "AgentIp": "192.168.8.11",
-      "AgentPort": 5775
-    }
-  },
-  "Azure": {
-    "Table": {
-      "ConnectionString": "DefaultEndpointsProtocol=https;AccountName=teammodelostest;AccountKey=QB/zYHHCAtZfl9tf4emL1Y9ZXGc6fqZ+nNbCxIHM70HnziC8dMdEAu7+Pa4mbKLlbswV90wWHAF3nMjrKB54Lw==;EndpointSuffix=core.chinacloudapi.cn"
-    },
-    "Blob": {
-      "ConnectionString": "DefaultEndpointsProtocol=https;AccountName=teammodelstorage;AccountKey=Yq7D4dE6cFuer2d2UZIccTA/i0c3sJ/6ITc8tNOyW+K5f+/lWw9GCos3Mxhj47PyWQgDL8YbVD63B9XcGtrMxQ==;EndpointSuffix=core.chinacloudapi.cn",
-      "Container": "teammodelos"
-    },
-    "CosmosDB": {
-      "ConnectionString": "https://192.168.8.128:8081",
-      "ConnectionKey": "ddwAeGSf8Lsf1kxPXmdqnyzzi3CkJ0KW2BTPZ7Zq1N7qbJic5j7AaQ+WbF86F3rnzuDgGM1yg8O7BUFo93iA8w==",
-      "Database": "TEAMModelOS",
-      "CollectionThroughput": 400,
-      "ScanModel": [ "TEAMModelOS.Service" ]
-    },
-    "Redis": {
-      "ConnectionString": "106.12.23.251:6379,password=habook,ssl=false,abortConnect=False,defaultDatabase=13,writeBuffer=10240,poolsize=50,prefix=habook:"
-    }
-  },
-  "HaBookAuth": {
-    "TeamModelRegistUrl": "https://account.habookaclass.biz/regist?token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJsb2dpbiIsImF1ZCI6ImNoZW5nZHVMb2dpbiIsImlzcyI6Imh0dHBzOi8vYXBpLmhhYm9va2FjbGFzcy5iaXoiLCJpYXQiOjE1MzYxMzUwNDcsIm5iZiI6MTUzNjEzNTA0NywiZXhwIjoxNTY3NTU1MjAwLCJpZHAiOiJIYWJvb2sgQ29yZVNlcnZpY2UifQ.F4AnkbJrMRoZvJ6SC-lqZEYIYSoq5x8lvX6_a3YqSgM&callback=",
-    "TeamModelLoginUrl": "https://account.habookaclass.biz/?token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJsb2dpbiIsImF1ZCI6ImNoZW5nZHVMb2dpbiIsImlzcyI6Imh0dHBzOi8vYXBpLmhhYm9va2FjbGFzcy5iaXoiLCJpYXQiOjE1MzYxMzUwNDcsIm5iZiI6MTUzNjEzNTA0NywiZXhwIjoxNTY3NTU1MjAwLCJpZHAiOiJIYWJvb2sgQ29yZVNlcnZpY2UifQ.F4AnkbJrMRoZvJ6SC-lqZEYIYSoq5x8lvX6_a3YqSgM&callback=",
-    "AccountUrl": "https://api.habookaclass.biz/account",
-    "ServiceUrl": "https://api.habookaclass.biz/service",
-    "UserInfoKey": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJpZCIsImF1ZCI6ImNoZW5nZHVJZCIsImlzcyI6Imh0dHBzOi8vYXBpLmhhYm9va2FjbGFzcy5iaXoiLCJpYXQiOjE1MzYwNTIzNjcsIm5iZiI6MTUzNjA1MjM2NywiZXhwIjoxNTY3NTU1MjAwLCJpZHAiOiJIYWJvb2sgQ29yZVNlcnZpY2UifQ.RGKDVtwFEp4OBctlHOuF6yqyI21fTz4cinCxjFCxkSQ",
-    "SchoolCodeKey": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJzY2hvb2xDb2RlIiwiYXVkIjoiY2hlbmdkdVNjaG9vbENvZGUiLCJpc3MiOiJodHRwczovL2FwaS5oYWJvb2thY2xhc3MuYml6IiwiaWF0IjoxNTM2MDUyNDI3LCJuYmYiOjE1MzYwNTI0MjcsImV4cCI6MTU2NzU1NTIwMCwiaWRwIjoiSGFib29rIENvcmVTZXJ2aWNlIn0.8m5VH3Nz4N9EdMz8AexTOEuDVitcJZFKy9DfW_UQkSY",
-    "SmsKey": "Basic ZmYwMWM0YTJjODdmZmNkYTUyNjhmMDEwOmE0YTE5YTVjNTU2ZWVhZTNjZmZhNTI0Mg=="
   }
 }

+ 12 - 8
TEAMModelOS/ClientApp/src/components/student-analysis/total/BaseGeniusLine.vue

@@ -1,19 +1,23 @@
 <template>
     <div>
+        <Loading :top="100" v-show="dataLoading" type="1"></Loading>
         <div :id='echartsId' class='myLine'></div>
     </div>
 </template>
 
 <script>
+    import Loading from '@/common/Loading.vue'
     export default {
         name: 'BaseGeniusLine',
+        components: {Loading},
         props: ['echartsId', 'echartsData'],
         data() {
             return {
+                dataLoading:true,
                 radarData: []
             }
         },
-
+        
         methods: {
             drawLine(echartsData) {
                 let that = this
@@ -22,12 +26,6 @@
                     'chalk'
                 )
 
-                myLine.showLoading({
-                    text: '',
-                    color: '#E6E6E6',
-                    textColor: '#E4E9EC',
-                    maskColor: 'rgba(0, 0, 0, 0)'
-                })
 
                 // 指定图表的配置项和数据
                 var option = {
@@ -235,11 +233,16 @@
 
                     // 绘制图表
                 myLine.setOption(option)
-                myLine.hideLoading()
 
                 window.addEventListener('resize', function() {
                     myLine.resize()
                 })
+
+                myLine.on('finished', function () {
+                    if (that.dataLoading) {
+                        that.dataLoading = false
+                    }
+                });
             }
         },
         mounted() {
@@ -248,6 +251,7 @@
         watch: {
             echartsData(val) {
                 if (!val) return
+                
                 this.drawLine(val)
             }
         }

+ 2 - 0
TEAMModelOS/ClientApp/src/store/module/totalAnalysis.js

@@ -77,6 +77,7 @@ export default {
 
         // 更新 试题分析数据(以试题为单位)
         getExerciseData(state, data) {
+            let mapJson = require('./map.json')
             let jsonData = tools.jsonTransform(data[1])
             // 给题目列表加入每道题每个班的得分率
             jsonData.forEach((item, index) => {
@@ -84,6 +85,7 @@ export default {
                 for (let i = 0; i < data[0].classList.length; i++) {
                     item[data[0].classList[i]] = data[0].datas[i][index]
                 }
+                item.knowledge = mapJson.filter(i => i.code === item.knowledge)[0].name // 可删除 替换使用
             })
             state.exerciseData = jsonData
         },

+ 7 - 1
TEAMModelOS/ClientApp/src/view/evaluation/bank/ExerciseList.vue

@@ -153,9 +153,11 @@
         <Modal v-model="editExerciseModal"
                class-name="edit-exercise-modal"
                width="1200px"
+               footer-hide
+               @on-visible-change="editModalChange"
                title="编辑习题">
 
-            <BaseEditExercise :exerciseItem="currentExercise" @onEditSuccess="onEditSuccess"></BaseEditExercise>
+            <BaseEditExercise :exerciseItem="currentExercise" @onEditSuccess="onEditSuccess" ref="editModal"></BaseEditExercise>
 
             <div slot="footer">
                 <Button type="success">确认</Button>
@@ -295,6 +297,10 @@
                 })
             },
 
+            editModalChange(val) {
+                    this.$refs.editModal.backToTop()
+            },
+
             /**
              * 获取筛选结果数量
              * @param data

+ 92 - 87
TEAMModelOS/ClientApp/src/view/evaluation/components/BaseEditExercise.vue

@@ -1,100 +1,100 @@
 <template>
-    <div class="ev-container">
-        <div class="display-flex">
-            <div class="exersices-attr my-radio-style">
-                <IconText :text="'选择学段'" :color="'#00b8ff'" :icon="'md-school'"></IconText>
-                <Select v-model="exercisePeriod" @on-change="onPeriodChange">
-                    <Option v-for="(period,index) in schoolInfo.period" :value="index" :key="index">{{ period.periodName }}</Option>
-                </Select>
-            </div>
-            <div class="my-radio-style exersices-attr">
-                <IconText :text="'选择年级'" :color="'#00b8ff'" :icon="'logo-buffer'"></IconText>
-                <Select v-model="exerciseGrade" multiple>
-                    <Option v-for="(grade,index) in gradeList" :value="grade.gradeCode" :key="index">{{ grade.gradeName }}</Option>
-                </Select>
-            </div>
-            <div class="exersices-attr my-radio-style">
-                <IconText :text="'选择科目'" :color="'#00b8ff'" :icon="'md-bookmarks'"></IconText>
-                <Select v-model="exerciseSubject">
-                    <Option v-for="(subject,index) in subjectList" :value="index" :key="index">{{ subject.subjectName }}</Option>
-                </Select>
-            </div>
-        </div>
-        <div class="display-flex">
-            <div class="exersices-attr my-radio-style">
-                <IconText :text="'题目归属'" :color="'#00b8ff'" :icon="'md-cube'"></IconText>
-                <Select v-model="exerciseScope">
-                    <Option v-for="(item,index) in scopeList" :value="index" :key="index">{{ item }}</Option>
-                </Select>
-            </div>
-            <div class="exersices-attr my-radio-style">
-                <IconText :text="'关联认知层次'" :color="'#00b8ff'" :icon="'md-planet'"></IconText>
-                <Select v-model="exerciseField">
-                    <Option v-for="(item,index) in fieldList" :value="index" :key="index">{{ item }}</Option>
-                </Select>
-            </div>
-            <div class="exersices-attr my-radio-style">
-                <IconText :text="'关联知识点'" :color="'#00b8ff'" :icon="'md-infinite'"></IconText>
-                <Button type="info" style="margin-top:20px" @click="selectPointsModal = true" v-if="exercisePoints.length === 0">选择知识点</Button>
-                <div v-else style="margin-top:10px">
-                    <span v-for="(item,index) in exercisePoints" :key="index" class="exercise-item-point">
-                        {{item.name}}
-                        <span class="exercise-item-point-close"><Icon type="md-close" @click="onDeletePoint(index)" style="display:none" /></span>
-                    </span>
-                    <span class="exercise-item-point-modify" @click="selectPointsModal = true">修改</span>
+    <div class="ev-container component-ev-container" ref="componentRef">
+            <div class="display-flex">
+                <div class="exersices-attr my-radio-style">
+                    <IconText :text="'选择学段'" :color="'#00b8ff'" :icon="'md-school'"></IconText>
+                    <Select v-model="exercisePeriod" @on-change="onPeriodChange">
+                        <Option v-for="(period,index) in schoolInfo.period" :value="index" :key="index">{{ period.periodName }}</Option>
+                    </Select>
+                </div>
+                <div class="my-radio-style exersices-attr">
+                    <IconText :text="'选择年级'" :color="'#00b8ff'" :icon="'logo-buffer'"></IconText>
+                    <Select v-model="exerciseGrade" multiple>
+                        <Option v-for="(grade,index) in gradeList" :value="grade.gradeCode" :key="index">{{ grade.gradeName }}</Option>
+                    </Select>
+                </div>
+                <div class="exersices-attr my-radio-style">
+                    <IconText :text="'选择科目'" :color="'#00b8ff'" :icon="'md-bookmarks'"></IconText>
+                    <Select v-model="exerciseSubject">
+                        <Option v-for="(subject,index) in subjectList" :value="index" :key="index">{{ subject.subjectName }}</Option>
+                    </Select>
                 </div>
             </div>
+            <div class="display-flex">
+                <div class="exersices-attr my-radio-style">
+                    <IconText :text="'题目归属'" :color="'#00b8ff'" :icon="'md-cube'"></IconText>
+                    <Select v-model="exerciseScope">
+                        <Option v-for="(item,index) in scopeList" :value="index" :key="index">{{ item }}</Option>
+                    </Select>
+                </div>
+                <div class="exersices-attr my-radio-style">
+                    <IconText :text="'关联认知层次'" :color="'#00b8ff'" :icon="'md-planet'"></IconText>
+                    <Select v-model="exerciseField">
+                        <Option v-for="(item,index) in fieldList" :value="index" :key="index">{{ item }}</Option>
+                    </Select>
+                </div>
+                <div class="exersices-attr my-radio-style">
+                    <IconText :text="'关联知识点'" :color="'#00b8ff'" :icon="'md-infinite'"></IconText>
+                    <Button type="info" style="margin-top:20px" @click="selectPointsModal = true" v-if="exercisePoints.length === 0">选择知识点</Button>
+                    <div v-else style="margin-top:10px">
+                        <span v-for="(item,index) in exercisePoints" :key="index" class="exercise-item-point">
+                            {{item.name}}
+                            <span class="exercise-item-point-close"><Icon type="md-close" @click="onDeletePoint(index)" style="display:none" /></span>
+                        </span>
+                        <span class="exercise-item-point-modify" @click="selectPointsModal = true">修改</span>
+                    </div>
+                </div>
 
-        </div>
-        <div class="exersices-attr display-flex">
-            <div class="exersices-attr-type my-radio-style"  style="width:50%">
-                <IconText :text="'选择题型'" :color="'#00b8ff'" :icon="'md-pricetags'"></IconText>
-                <RadioGroup v-model="exersicesType" type="button" @on-change="typeChange">
-                    <Radio label="Single" :disabled="isEdit">单选</Radio>
-                    <Radio label="Multiple" :disabled="isEdit">多选</Radio>
-                    <Radio label="Judge" :disabled="isEdit">判断</Radio>
-                    <Radio label="Complete" :disabled="isEdit">填空</Radio>
-                    <Radio label="Subjective" :disabled="isEdit">问答</Radio>
-                    <Radio label="Compose" :disabled="isEdit">综合</Radio>
-                </RadioGroup>
             </div>
-            <div class="exersices-attr-diff edit-exersices-attr-diff my-radio-style">
-                <IconText :text="'题目难度'" :color="'#00b8ff'" :icon="'md-pulse'"></IconText>
-                <RadioGroup v-model="exersicesDiff" type="button" ref="diffRef">
-                    <Radio label="1" @click.native="diffChange($event,'1')">容易</Radio>
-                    <Radio label="2" @click.native="diffChange($event,'2')">较易</Radio>
-                    <Radio label="3" @click.native="diffChange($event,'3')">一般</Radio>
-                    <Radio label="4" @click.native="diffChange($event,'4')">较难</Radio>
-                    <Radio label="5" @click.native="diffChange($event,'5')">困难</Radio>
-                </RadioGroup>
+            <div class="exersices-attr display-flex">
+                <div class="exersices-attr-type my-radio-style" style="width:50%">
+                    <IconText :text="'选择题型'" :color="'#00b8ff'" :icon="'md-pricetags'"></IconText>
+                    <RadioGroup v-model="exersicesType" type="button" @on-change="typeChange">
+                        <Radio label="Single" :disabled="isEdit">单选</Radio>
+                        <Radio label="Multiple" :disabled="isEdit">多选</Radio>
+                        <Radio label="Judge" :disabled="isEdit">判断</Radio>
+                        <Radio label="Complete" :disabled="isEdit">填空</Radio>
+                        <Radio label="Subjective" :disabled="isEdit">问答</Radio>
+                        <Radio label="Compose" :disabled="isEdit">综合</Radio>
+                    </RadioGroup>
+                </div>
+                <div class="exersices-attr-diff edit-exersices-attr-diff my-radio-style">
+                    <IconText :text="'题目难度'" :color="'#00b8ff'" :icon="'md-pulse'"></IconText>
+                    <RadioGroup v-model="exersicesDiff" type="button" ref="diffRef">
+                        <Radio label="1" @click.native="diffChange($event,'1')">容易</Radio>
+                        <Radio label="2" @click.native="diffChange($event,'2')">较易</Radio>
+                        <Radio label="3" @click.native="diffChange($event,'3')">一般</Radio>
+                        <Radio label="4" @click.native="diffChange($event,'4')">较难</Radio>
+                        <Radio label="5" @click.native="diffChange($event,'5')">困难</Radio>
+                    </RadioGroup>
+                </div>
             </div>
-        </div>
-
-        <BaseSingle v-if="exersicesType==='Single'" ref="single" :editItem="editInfo"></BaseSingle>
-        <BaseMultiple v-else-if="exersicesType==='Multiple'" ref="multiple" :editInfo="editInfo"></BaseMultiple>
-        <BaseJudge v-else-if="exersicesType==='Judge'" ref="judge" :editInfo="editInfo"></BaseJudge>
-        <BaseCompletion v-else-if="exersicesType==='Complete'" ref="complete" :editInfo="editInfo"></BaseCompletion>
-        <BaseSubjective v-else-if="exersicesType==='Subjective'" ref="subjective" :editInfo="editInfo"></BaseSubjective>
-
-        <!-- 解析的富文本部分 -->
-        <div class="exersices-analysis">
-            <IconText :text="'解析'" :color="'#2892DD'" :icon="'md-list'" style="margin-bottom:10px;"></IconText>
-            <div>
-                <div ref="analysisEditor" style="text-align:left"></div>
+
+            <BaseSingle v-if="exersicesType==='Single'" ref="single" :editItem="editInfo"></BaseSingle>
+            <BaseMultiple v-else-if="exersicesType==='Multiple'" ref="multiple" :editInfo="editInfo"></BaseMultiple>
+            <BaseJudge v-else-if="exersicesType==='Judge'" ref="judge" :editInfo="editInfo"></BaseJudge>
+            <BaseCompletion v-else-if="exersicesType==='Complete'" ref="complete" :editInfo="editInfo"></BaseCompletion>
+            <BaseSubjective v-else-if="exersicesType==='Subjective'" ref="subjective" :editInfo="editInfo"></BaseSubjective>
+
+            <!-- 解析的富文本部分 -->
+            <div class="exersices-analysis">
+                <IconText :text="'解析'" :color="'#2892DD'" :icon="'md-list'" style="margin-bottom:10px;"></IconText>
+                <div>
+                    <div ref="analysisEditor" style="text-align:left"></div>
+                </div>
             </div>
-        </div>
 
-        <!-- 补救的富文本部分 -->
-        <div class="exersices-analysis">
-            <IconText :text="'补救资源'" :color="'#2892DD'" :icon="'md-list'" style="margin-bottom:10px"></IconText>
-            <div>
-                <div ref="repairEditor" style="text-align:left"></div>
+            <!-- 补救的富文本部分 -->
+            <div class="exersices-analysis">
+                <IconText :text="'补救资源'" :color="'#2892DD'" :icon="'md-list'" style="margin-bottom:10px"></IconText>
+                <div>
+                    <div ref="repairEditor" style="text-align:left"></div>
+                </div>
             </div>
-        </div>
 
-        <div class="save-wrap display-flex">
-            <Button type="success" @click="getContent(exersicesType)">保存</Button>
-        </div>
+            <div class="save-wrap display-flex">
+                <Button type="success" @click="getContent(exersicesType)">保存</Button>
+            </div>
 
         <Modal v-model="selectPointsModal"
                title="选择知识点"
@@ -245,6 +245,11 @@
                 })
             },
 
+            /** 回到顶部 */
+            backToTop() {
+                
+            },
+
             onDeletePoint(index) {
                 this.exercisePoints.splice(index, 1)
             },

+ 59 - 61
TEAMModelOS/ClientApp/src/view/evaluation/components/BaseExerciseList.vue

@@ -8,76 +8,74 @@
         </div>
         <div class="content-wrap" v-else>
             <Loading :top="200" v-show="dataLoading" type="1"></Loading>
+                <div class="list-view" v-for="(typeItem,typeIndex) in groupList">
+                    <p v-show="viewModel === 'type'" class="type-name">{{ numberConvertToUppercase(typeIndex + 1) }} : {{  exersicesType[typeItem.type] }} ( {{ typeItem.score }} 分)</p>
+                    <div class="exercise-item" v-for="(item,index) of typeItem.list" :key="index" @click="onQuestionToggle(exerciseList.indexOf(item),item.id,$event,typeItem.list)" @mouseenter="exerciseMouseover($event)" @mouseleave="exerciseMouseleave($event)">
+                        <div class="item-tools-wrap">
+                            <div class="item-tools-t flex-row-center" @click.stop="handleSetScore(item,exerciseList.indexOf(item))"><Icon type="ios-list-box-outline" />配分</div>
+                            <div class="item-tools-t flex-row-center" @click.stop="handleToolEdit(item)"><Icon type="ios-brush-outline" />编辑</div>
+                            <div class="item-tools-t flex-row-center" @click.stop="handleDelete(typeItem.list,item,index)"><Icon type="ios-archive-outline" />删除</div>
+                            <div class="item-tools-t flex-row-center" v-show="index != 0" @click.stop="handleMoveUp(typeItem.list,index)"><Icon type="md-arrow-up" />上移</div>
+                            <div class="item-tools-t flex-row-center" v-show="index != (typeItem.list.length - 1)" @click.stop="handleMoveDown(typeItem.list,index)"><Icon type="md-arrow-down" />下移</div>
+                        </div>
 
-            <div class="list-view" v-for="(typeItem,typeIndex) in groupList">
-                <p v-show="viewModel === 'type'" class="type-name">{{ numberConvertToUppercase(typeIndex + 1) }} : {{  exersicesType[typeItem.type] }} ( {{ typeItem.score }} 分)</p>
-                <div class="exercise-item" v-for="(item,index) of typeItem.list" :key="index" @click="onQuestionToggle(exerciseList.indexOf(item),item.id,$event,typeItem.list)" @mouseenter="exerciseMouseover($event)" @mouseleave="exerciseMouseleave($event)">
-                    <div class="item-tools-wrap">
-                        <div class="item-tools-t flex-row-center" @click.stop="handleSetScore(item,exerciseList.indexOf(item))"><Icon type="ios-list-box-outline" />配分</div>
-                        <div class="item-tools-t flex-row-center" @click.stop="handleToolEdit(item)"><Icon type="ios-brush-outline" />编辑</div>
-                        <div class="item-tools-t flex-row-center" @click.stop="handleDelete(typeItem.list,item,index)"><Icon type="ios-archive-outline" />删除</div>
-                        <div class="item-tools-t flex-row-center" v-show="index != 0" @click.stop="handleMoveUp(typeItem.list,index)"><Icon type="md-arrow-up" />上移</div>
-                        <div class="item-tools-t flex-row-center" v-show="index != (typeItem.list.length - 1)" @click.stop="handleMoveDown(typeItem.list,index)"><Icon type="md-arrow-down" />下移</div>
-                    </div>
-
-                    <!-- 题干部分 -->
-                    <div class="item-question" style="pointer-events:none">
-                        <p v-if="viewModel === 'list'">{{pageSize * (pageNum - 1) + exerciseList.indexOf(item) + 1}} : <span v-html="item.question"></span></p>
-                        <p v-else>{{ pageSize * (pageNum - 1) + index + 1 }} : <span v-html="item.question"></span></p>
-                        <span class="item-btn-toggle">
-                            <span class="item-score">{{ item.score }} 分</span>
+                        <!-- 题干部分 -->
+                        <div class="item-question" style="pointer-events:none">
+                            <p v-if="viewModel === 'list'">{{pageSize * (pageNum - 1) + exerciseList.indexOf(item) + 1}} : <span v-html="item.question"></span></p>
+                            <p v-else>{{ pageSize * (pageNum - 1) + index + 1 }} : <span v-html="item.question"></span></p>
+                            <span class="item-btn-toggle">
+                                <span class="item-score">{{ item.score }} 分</span>
 
-                            <Icon :type="collapseList.indexOf(index) > -1 ? 'ios-arrow-dropup' : 'ios-arrow-dropdown'" />
-                            <!--<Button type="primary">选题</Button>-->
-                        </span>
-                    </div>
-                    <!-- 选项部分 -->
-                    <div v-for="(option,optionIndex) in item.option" :key="optionIndex" class="item-options" style="pointer-events:none">
-                        <p class="item-option-content">{{String.fromCharCode(64 + parseInt(optionIndex+1))}} : <span v-html="option.value"></span></p>
-                    </div>
-                    <transition name="slide">
-                        <div v-show="collapseList.indexOf(exerciseList.indexOf(item)) > -1" class="toggle-area">
-                            <!-- 答案展示部分 -->
-                            <div class="item-explain" v-show="isShowAnswer">
-                                <span class="explain-title">【答案】</span>
-                                <div class="item-explain-details">
-                                    <!-- 问答题答案 -->
-                                    <div v-if="item.type === 'Subjective'">
-                                        <span v-for="(answer,index) in item.answer" :key="index" v-html="item.answer.length ? answer : '未设置答案'"></span>
-                                    </div>
-                                    <!-- 填空题答案 -->
-                                    <div v-else-if="item.type === 'Complete'">
-                                        <span :class="[ item.type === 'Complete' ? 'item-answer-item':'']" v-for="(answer,index) in item.answer" :key="index" v-html="answer"></span>
-                                    </div>
-                                    <!-- 其余题型答案 -->
-                                    <div v-else>
-                                        <span :class="[ item.type === 'Complete' ? 'item-answer-item':'']" v-for="(answer,index) in item.answer" :key="index">{{answer}}</span>
+                                <Icon :type="collapseList.indexOf(index) > -1 ? 'ios-arrow-dropup' : 'ios-arrow-dropdown'" />
+                                <!--<Button type="primary">选题</Button>-->
+                            </span>
+                        </div>
+                        <!-- 选项部分 -->
+                        <div v-for="(option,optionIndex) in item.option" :key="optionIndex" class="item-options" style="pointer-events:none">
+                            <p class="item-option-content">{{String.fromCharCode(64 + parseInt(optionIndex+1))}} : <span v-html="option.value"></span></p>
+                        </div>
+                        <transition name="slide">
+                            <div v-show="collapseList.indexOf(exerciseList.indexOf(item)) > -1" class="toggle-area">
+                                <!-- 答案展示部分 -->
+                                <div class="item-explain" v-show="isShowAnswer">
+                                    <span class="explain-title">【答案】</span>
+                                    <div class="item-explain-details">
+                                        <!-- 问答题答案 -->
+                                        <div v-if="item.type === 'Subjective'">
+                                            <span v-for="(answer,index) in item.answer" :key="index" v-html="item.answer.length ? answer : '未设置答案'"></span>
+                                        </div>
+                                        <!-- 填空题答案 -->
+                                        <div v-else-if="item.type === 'Complete'">
+                                            <span :class="[ item.type === 'Complete' ? 'item-answer-item':'']" v-for="(answer,index) in item.answer" :key="index" v-html="answer"></span>
+                                        </div>
+                                        <!-- 其余题型答案 -->
+                                        <div v-else>
+                                            <span :class="[ item.type === 'Complete' ? 'item-answer-item':'']" v-for="(answer,index) in item.answer" :key="index">{{answer}}</span>
+                                        </div>
                                     </div>
                                 </div>
-                            </div>
-                            <!-- 解析部分 -->
-                            <div class="item-explain" v-show="isShowAnswer">
-                                <span class="explain-title">【解析】</span>
-                                <div class="item-explain-details">
-                                    <span v-html="item.explain || '暂无解析'"></span>
+                                <!-- 解析部分 -->
+                                <div class="item-explain" v-show="isShowAnswer">
+                                    <span class="explain-title">【解析】</span>
+                                    <div class="item-explain-details">
+                                        <span v-html="item.explain || '暂无解析'"></span>
+                                    </div>
                                 </div>
-                            </div>
-                            <!-- 知识点部分 -->
-                            <div class="item-explain" v-show="isShowAnswer">
-                                <span class="explain-title">【知识点】</span>
-                                <div class="item-explain-details">
-                                    <span v-if="!item.points.length">暂未绑定知识点</span>
-                                    <div v-else>
-                                        <span v-for="point in item.points" style="padding:0 10px;border:1px solid #808080;margin-left:10px">{{ point.name }}</span>
+                                <!-- 知识点部分 -->
+                                <div class="item-explain" v-show="isShowAnswer">
+                                    <span class="explain-title">【知识点】</span>
+                                    <div class="item-explain-details">
+                                        <span v-if="!item.points.length">暂未绑定知识点</span>
+                                        <div v-else>
+                                            <span v-for="point in item.points" style="padding:0 10px;border:1px solid #808080;margin-left:10px">{{ point.name }}</span>
+                                        </div>
                                     </div>
                                 </div>
-                            </div>
 
-                        </div>
-                    </transition>
+                            </div>
+                        </transition>
+                    </div>
                 </div>
-            </div>
-
         </div>
 
         <!-- 底部分页区域 -->

+ 20 - 4
TEAMModelOS/ClientApp/src/view/evaluation/components/BaseImport.vue

@@ -36,8 +36,10 @@
                     <!-- 题干部分 -->
                     <div class="item-question">
                         <p>{{ index + 1 }} : <span v-html="item.question"></span></p>
-                        <span class="item-btn-toggle btn-edit-exercise">
-                            <Icon type="md-create" color="#B5B5B5" @click="onEditExercise(item,index)"/>
+                        <span class="item-btn-toggle btn-edit-exercise" @click="onEditExercise(item,index)" >
+                            <Icon type="md-create" color="#B5B5B5" size="20" />
+                            <span> 编辑  </span>
+
                         </span>
                     </div>
                     <!-- 选项部分 -->
@@ -110,12 +112,15 @@
 
         </Modal>
 
+        <!-- 编辑习题 弹窗 -->
         <Modal v-model="editExerciseModal"
                class-name="edit-exercise-modal"
                width="1200px"
+               footer-hide
+               @on-visible-change="editModalChange"
                title="编辑习题">
 
-               <BaseEditExercise :exerciseItem="currentExercise" @onEditSuccess="onEditSuccess"></BaseEditExercise>
+               <BaseEditExercise :exerciseItem="currentExercise" @onEditSuccess="onEditSuccess" ref="editModal"></BaseEditExercise>
 
             <div slot="footer">
                 <Button type="success">确认</Button>
@@ -161,6 +166,8 @@
             /** 点击导入习题 */
             handleUpload() {
                 this.importPreviewModal = true
+                this.exerciseList = []
+                this.isImportFinish = false
             },
 
             /**
@@ -182,6 +189,10 @@
                 this.exerciseList.splice(this.currentExerciseIndex,1,newItem)
             },
 
+            editModalChange(val) {
+                    this.$refs.editModal.backToTop()
+            },
+
             /** 重新导入文件 */
             onReImport() {
                 this.isImportFinish = false
@@ -243,7 +254,12 @@
 
             /** 导入后选择试题用途 */
             onSelectUsage() {
-                this.selectUsageModal = true
+                console.log(this.exerciseList)
+                //let importList = this.exerciseList
+                //for (let i = 0; i < importList.length; i++) {
+
+                //}
+                //this.selectUsageModal = true
             },
 
             onSelectBank() {