Browse Source

Merge branch 'develop3.0-tmd' of http://106.12.23.251:10080/TEAMMODEL/TEAMModelOS into develop3.0-tmd

liqk 4 years ago
parent
commit
3e625788d6
22 changed files with 217 additions and 187 deletions
  1. 1 1
      TEAMModelOS/ClientApp/package.json
  2. 0 1
      TEAMModelOS/ClientApp/src/components/evaluation/ExerciseList.vue
  3. 3 1
      TEAMModelOS/ClientApp/src/components/student-analysis/total/BaseKnowledgeDetail.vue
  4. 2 1
      TEAMModelOS/ClientApp/src/components/student-analysis/total/BaseKnowledgeRadar.vue
  5. 27 17
      TEAMModelOS/ClientApp/src/components/student-analysis/total/BaseLevelPie.vue
  6. 11 1
      TEAMModelOS/ClientApp/src/components/student-analysis/total/BaseLevelRadar.vue
  7. 4 2
      TEAMModelOS/ClientApp/src/components/student-analysis/total/BaseMyTable.vue
  8. 2 19
      TEAMModelOS/ClientApp/src/components/student-analysis/total/BasePie.vue
  9. 1 1
      TEAMModelOS/ClientApp/src/components/student-analysis/total/BaseRadar.vue
  10. 1 0
      TEAMModelOS/ClientApp/src/utils/public.js
  11. 4 2
      TEAMModelOS/ClientApp/src/view/student-analysis/total-analysis/AchievementAnalysis/EntryTables.vue
  12. 6 1
      TEAMModelOS/ClientApp/src/view/student-analysis/total-analysis/KnowledgeAnalysis/KnowledgeAnalysis.css
  13. 67 61
      TEAMModelOS/ClientApp/src/view/student-analysis/total-analysis/KnowledgeAnalysis/KnowledgeAnalysis.vue
  14. 2 1
      TEAMModelOS/ClientApp/src/view/student-analysis/total-analysis/KnowledgeAnalysis/ScoreDetails.vue
  15. 31 40
      TEAMModelOS/ClientApp/src/view/student-analysis/total-analysis/LevelAnalysis/LevelAnalysis.vue
  16. 14 15
      TEAMModelOS/ClientApp/src/view/student-analysis/total-analysis/LevelAnalysis/ScoreDetails.vue
  17. 2 0
      TEAMModelOS/ClientApp/src/view/student-analysis/total-analysis/index.less
  18. 1 1
      TEAMModelOS/ClientApp/src/view/teachermgmt/components/userList/Index.vue
  19. 1 9
      TEAMModelOS/ClientApp/vue.config.js
  20. 17 10
      TEAMModelOS/Controllers/Analysis/AnalysisController.cs
  21. 19 2
      TEAMModelOS/Controllers/Core/ImportController.cs
  22. 1 1
      TEAMModelOS/TEAMModelOS.csproj

+ 1 - 1
TEAMModelOS/ClientApp/package.json

@@ -21,7 +21,7 @@
 		"@vue/eslint-config-standard": "^4.0.0",
 		"@vue/eslint-config-standard": "^4.0.0",
 		"animate.css": "^3.7.2",
 		"animate.css": "^3.7.2",
 		"apexcharts": "^3.20.0",
 		"apexcharts": "^3.20.0",
-		"axios": "^0.19.0",
+		"axios": "^0.21.1",
 		"bcryptjs": "^2.4.3",
 		"bcryptjs": "^2.4.3",
 		"core-js": "^3.1.2",
 		"core-js": "^3.1.2",
 		"d3": "^5.9.2",
 		"d3": "^5.9.2",

+ 0 - 1
TEAMModelOS/ClientApp/src/components/evaluation/ExerciseList.vue

@@ -213,7 +213,6 @@
 					let exerciseItemDom = e.path.filter(
 					let exerciseItemDom = e.path.filter(
 						(i) => i.className === "exercise-item"
 						(i) => i.className === "exercise-item"
 					);
 					);
-					console.log(exerciseItemDom)
 					if (exerciseItemDom.length) {
 					if (exerciseItemDom.length) {
 						this.$emit("pageScroll", exerciseItemDom[0].offsetTop);
 						this.$emit("pageScroll", exerciseItemDom[0].offsetTop);
 					}
 					}

+ 3 - 1
TEAMModelOS/ClientApp/src/components/student-analysis/total/BaseKnowledgeDetail.vue

@@ -218,7 +218,9 @@
         computed: {
         computed: {
             // 获取最新散点图数据
             // 获取最新散点图数据
             getKnowledgeData() {
             getKnowledgeData() {
-                return this.echartsId === 'knowDetailBar' ? this.$store.state.totalAnalysis.knowledgeData : this.$store.state.totalAnalysis.levelData
+				let curSubjectIndex = this.$store.state.totalAnalysis.analysisJson.subjects.map(i => i.name).indexOf(this.$store.state.totalAnalysis.currentSubject)
+                return this.echartsId === 'knowDetailBar' ? this.$store.state.totalAnalysis.analysisJson.pointLevelKey[curSubjectIndex].pointKey : 
+				this.$store.state.totalAnalysis.analysisJson.pointLevelKey[curSubjectIndex].levelKey
             }
             }
         },
         },
         watch: {
         watch: {

+ 2 - 1
TEAMModelOS/ClientApp/src/components/student-analysis/total/BaseKnowledgeRadar.vue

@@ -138,7 +138,8 @@
         computed: {
         computed: {
             // 获取最新散点图数据
             // 获取最新散点图数据
             getKnowledgeData() {
             getKnowledgeData() {
-                return this.$store.state.totalAnalysis.knowledgeData
+                let curSubjectIndex = this.$store.state.totalAnalysis.analysisJson.subjects.map(i => i.name).indexOf(this.$store.state.totalAnalysis.currentSubject)
+                return this.$store.state.totalAnalysis.analysisJson.pointLevelKey[curSubjectIndex].pointKey
             }
             }
         },
         },
         watch: {
         watch: {

+ 27 - 17
TEAMModelOS/ClientApp/src/components/student-analysis/total/BaseLevelPie.vue

@@ -47,7 +47,7 @@
         },
         },
         mounted() {
         mounted() {
             if (this.getPieData) {
             if (this.getPieData) {
-                let pointList = this.getPieData.level
+                let pointList = this.getPieData.pointList
                 let valList = this.getPieData.fper
                 let valList = this.getPieData.fper
                 let arr = []
                 let arr = []
                 pointList.forEach((item, index) => {
                 pointList.forEach((item, index) => {
@@ -62,25 +62,35 @@
         computed: {
         computed: {
             // 获取最新知识点占比饼图数据
             // 获取最新知识点占比饼图数据
             getPieData() {
             getPieData() {
-                return this.$store.state.totalAnalysis.levelData
+				let curSubjectIndex = this.$store.state.totalAnalysis.analysisJson.subjects.map(i => i.name).indexOf(this.$store.state.totalAnalysis.currentSubject)
+                let levelJson = this.$store.state.totalAnalysis.analysisJson.pointLevelKey[curSubjectIndex].levelKey
+                let transArr = ["知识", "理解", "应用", "分析", "综合", "评鉴"]
+                levelJson.pointList = levelJson.pointList.map((i,index) => transArr[index])
+                for(let key in levelJson.classpercent){
+                	if(key !== 'className'){
+                		let newKey = transArr[+key - 1]
+                		levelJson.classpercent[newKey] = levelJson.classpercent[key]
+                	}
+                }
+                return levelJson
             }
             }
         },
         },
         watch: {
         watch: {
-            getPieData: {
-                deep: true,
-                handler(val) {
-                    let pointList = val.level
-                    let valList = val.fper
-                    let arr = []
-                    pointList.forEach((item, index) => {
-                        let o = {}
-                        o.name = item
-                        o.value = valList[index].replace('%', '')
-                        arr.push(o)
-                    })
-                    this.drawLine(arr)
-                }
-            }
+            // getPieData: {
+            //     deep: true,
+            //     handler(val) {
+            //         let pointList = val.level
+            //         let valList = val.fper
+            //         let arr = []
+            //         pointList.forEach((item, index) => {
+            //             let o = {}
+            //             o.name = item
+            //             o.value = valList[index].replace('%', '')
+            //             arr.push(o)
+            //         })
+            //         this.drawLine(arr)
+            //     }
+            // }
         }
         }
 
 
     }
     }

+ 11 - 1
TEAMModelOS/ClientApp/src/components/student-analysis/total/BaseLevelRadar.vue

@@ -138,7 +138,17 @@
         computed: {
         computed: {
             // 获取最新散点图数据
             // 获取最新散点图数据
             getKnowledgeData() {
             getKnowledgeData() {
-                return this.$store.state.totalAnalysis.levelData
+                let curSubjectIndex = this.$store.state.totalAnalysis.analysisJson.subjects.map(i => i.name).indexOf(this.$store.state.totalAnalysis.currentSubject)
+                let levelJson = this.$store.state.totalAnalysis.analysisJson.pointLevelKey[curSubjectIndex].levelKey
+                let transArr = ["知识", "理解", "应用", "分析", "综合", "评鉴"]
+                levelJson.pointList = levelJson.pointList.map((i,index) => transArr[index])
+                for(let key in levelJson.classpercent){
+                	if(key !== 'className'){
+                		let newKey = transArr[+key - 1]
+                		levelJson.classpercent[newKey] = levelJson.classpercent[key]
+                	}
+                }
+                return levelJson
             }
             }
         },
         },
         watch: {
         watch: {

+ 4 - 2
TEAMModelOS/ClientApp/src/components/student-analysis/total/BaseMyTable.vue

@@ -336,6 +336,8 @@
             // 是否进线
             // 是否进线
             renderEntry(h, params) {
             renderEntry(h, params) {
                 const row = params.row
                 const row = params.row
+				const ipoint = this.$store.state.totalAnalysis.analysisJson.ipoint
+				const touchScore = this.$store.state.totalAnalysis.analysisJson.touchScore
                 return h('span', [
                 return h('span', [
                     h('span', {
                     h('span', {
                         domProps: {
                         domProps: {
@@ -343,9 +345,9 @@
                         },
                         },
                         style: {
                         style: {
                             cursor: 'pointer',
                             cursor: 'pointer',
-                            background: row.score > 200 ? '#209a31' : row.score > 180 ? '#00767d' : 'transparent'
+                            background: row.score > (ipoint + touchScore) ? '#209a31' : row.score > ipoint ? '#00767d' : 'transparent'
                         }
                         }
-                    }, row.score > 200 ? '进' : row.score > 180 ? '踩' : ''),
+                    }, row.score > (ipoint + touchScore) ? '进' : row.score > ipoint ? '踩' : ''),
                     h('span', {
                     h('span', {
                         domProps: {
                         domProps: {
                             className: 'table-rank-value'
                             className: 'table-rank-value'

+ 2 - 19
TEAMModelOS/ClientApp/src/components/student-analysis/total/BasePie.vue

@@ -14,24 +14,6 @@
         },
         },
         methods: {
         methods: {
 
 
-            /**
-             * 根据知识点id集合换取知识点对象集合
-             * @param ids
-             */
-            getPointsByIds(ids) {
-                return new Promise((r, j) => {
-                    this.$api.knowledge.FindKnowledgebyId(ids).then(res => {
-                        if (res.result.data.length) {
-                            r(res.result.data)
-                        } else {
-                            r([])
-                        } 
-                    }).catch(err => {
-                        j(err)
-                    })
-                })
-
-            },
 
 
             drawLine(data) {
             drawLine(data) {
                 let that = this
                 let that = this
@@ -87,7 +69,8 @@
         computed: {
         computed: {
             // 获取最新知识点占比饼图数据
             // 获取最新知识点占比饼图数据
             getPieData() {
             getPieData() {
-                return this.$store.state.totalAnalysis.knowledgeData
+                let curSubjectIndex = this.$store.state.totalAnalysis.analysisJson.subjects.map(i => i.name).indexOf(this.$store.state.totalAnalysis.currentSubject)
+                return this.$store.state.totalAnalysis.analysisJson.pointLevelKey[curSubjectIndex].pointKey
             }
             }
         },
         },
         watch: {
         watch: {

+ 1 - 1
TEAMModelOS/ClientApp/src/components/student-analysis/total/BaseRadar.vue

@@ -140,7 +140,7 @@
         computed: {
         computed: {
             // 获取最新雷达图数据
             // 获取最新雷达图数据
             getKnowledgeData() {
             getKnowledgeData() {
-                return this.echartsId === 'knowRadar' ? this.$store.state.totalAnalysis.knowledgeData : this.$store.state.totalAnalysis.levelData
+                return this.echartsId === 'knowRadar' ? this.$store.state.totalAnalysis.analysisJson.pointKey : this.$store.state.totalAnalysis.analysisJson.levelKey
             }
             }
         },
         },
         watch: {
         watch: {

+ 1 - 0
TEAMModelOS/ClientApp/src/utils/public.js

@@ -208,6 +208,7 @@ export default {
 	// 数据结构转换工具
 	// 数据结构转换工具
 	jsonTransform(obj) {
 	jsonTransform(obj) {
 		let arr = []
 		let arr = []
+		console.log(obj)
 		if (obj.datas.length) {
 		if (obj.datas.length) {
 			let item = {}
 			let item = {}
 			let attrLength = obj.keys.length
 			let attrLength = obj.keys.length

+ 4 - 2
TEAMModelOS/ClientApp/src/view/student-analysis/total-analysis/AchievementAnalysis/EntryTables.vue

@@ -76,10 +76,12 @@
                         ],
                         ],
                         filterMultiple: false,
                         filterMultiple: false,
                         filterRemote(value, row) {
                         filterRemote(value, row) {
+							console.log(this.getAnalysisJson)
+							console.log(value)
                             if (value === 1) {
                             if (value === 1) {
-                                this.entryTableData = this.entryTableData.filter(item => item.score > 180)
+                                this.entryTableData = this.entryTableData.filter(item => item.score > this.getAnalysisJson.ipoint)
                             } else if (value === 2) {
                             } else if (value === 2) {
-                                this.entryTableData = this.entryTableData.filter(item => item.score > 180 && item.score < 200)
+                                this.entryTableData = this.entryTableData.filter(item => item.score > this.getAnalysisJson.ipoint && item.score < this.getAnalysisJson.ipoint + this.getAnalysisJson.touchScore)
                             }
                             }
                         }
                         }
                     }
                     }

+ 6 - 1
TEAMModelOS/ClientApp/src/view/student-analysis/total-analysis/KnowledgeAnalysis/KnowledgeAnalysis.css

@@ -78,7 +78,12 @@
         vertical-align: sub;
         vertical-align: sub;
     }
     }
 
 
-
+.analysis-no-data{
+	display: flex;
+	flex-direction: column;
+	justify-content: center;
+	align-items: center;
+}
 
 
 .fl-col-center {
 .fl-col-center {
     display: flex;
     display: flex;

+ 67 - 61
TEAMModelOS/ClientApp/src/view/student-analysis/total-analysis/KnowledgeAnalysis/KnowledgeAnalysis.vue

@@ -1,38 +1,44 @@
 <template>
 <template>
     <div class="scatter-container">
     <div class="scatter-container">
-        <Row>
-            <Col span="12">
-                <span class="component-title">{{$t('totalAnalysis.ka_title1')}}</span>
-                <BasePie pieId="knowPie"></BasePie>
-            </Col>
-            <Col span="12" style="position:relative">
-                <!--<span class="component-title">{{$t('totalAnalysis.ka_title2')}}</span>-->
-                <!--<BaseRadar v-if="!isShowPie"></BaseRadar>-->
-                <BaseKnowledgeRadar echartsId="knowPie2"></BaseKnowledgeRadar>
-            </Col>
-        </Row>
-        <Divider />
-        <Row>
-
-            <span class="component-title">
-                {{$t('totalAnalysis.ka_title3')}}
-                <!-- 当前知识块 : 全部 -->
-                <!--<span style="font-size:14px;font-weight:bold;margin-left:20px;color:#66cccc">
-                    {{$t('totalAnalysis.ka_text1')}}:{{currentBlock}}
-                    <Icon type="ios-close-circle-outline" @click="refresh" style="cursor:pointer;" v-show="currentBlock != '全部'" />
-                </span>-->
-            </span>
-            <!-- 得分率关系表 -->
-            <div style="padding:20px 50px;position:relative">
-                <!--<span class="btn-class-score" @click="handleGoDetails">查看班级得分<Icon type="ios-arrow-dropright" /></span>-->
-                <BaseMyTable :columns="tableColumns"
-                             :tableName="$t('totalAnalysis.ka_title3')"
-                              tableRef="pointScoreRateTable"
-                             :tableDatas="knowledgeData"></BaseMyTable>
-            </div>
-        </Row>
-        <Divider />
-        <ScoreDetails ref="detailsRef"></ScoreDetails>
+		<div v-if="!hasKnowledge" class="analysis-no-data">
+			<EmptyData :top="200" textContent="本次考试未收集到知识点数据"></EmptyData>
+		</div>
+		<div v-else>
+			<Row>
+			    <Col span="12">
+			        <span class="component-title">{{$t('totalAnalysis.ka_title1')}}</span>
+			        <BasePie pieId="knowPie"></BasePie>
+			    </Col>
+			    <Col span="12" style="position:relative">
+			        <!--<span class="component-title">{{$t('totalAnalysis.ka_title2')}}</span>-->
+			        <!--<BaseRadar v-if="!isShowPie"></BaseRadar>-->
+			        <BaseKnowledgeRadar echartsId="knowPie2"></BaseKnowledgeRadar>
+			    </Col>
+			</Row>
+			<Divider />
+			<Row>
+			
+			    <span class="component-title">
+			        {{$t('totalAnalysis.ka_title3')}}
+			        <!-- 当前知识块 : 全部 -->
+			        <!--<span style="font-size:14px;font-weight:bold;margin-left:20px;color:#66cccc">
+			            {{$t('totalAnalysis.ka_text1')}}:{{currentBlock}}
+			            <Icon type="ios-close-circle-outline" @click="refresh" style="cursor:pointer;" v-show="currentBlock != '全部'" />
+			        </span>-->
+			    </span>
+			    <!-- 得分率关系表 -->
+			    <div style="padding:20px 50px;position:relative">
+			        <!--<span class="btn-class-score" @click="handleGoDetails">查看班级得分<Icon type="ios-arrow-dropright" /></span>-->
+			        <BaseMyTable :columns="tableColumns"
+			                     :tableName="$t('totalAnalysis.ka_title3')"
+			                      tableRef="pointScoreRateTable"
+			                     :tableDatas="knowledgeData"></BaseMyTable>
+			    </div>
+			</Row>
+			<Divider />
+			<ScoreDetails ref="detailsRef"></ScoreDetails>
+		</div>
+        
     </div>
     </div>
 </template>
 </template>
 
 
@@ -77,20 +83,21 @@
         },
         },
 
 
         methods: {
         methods: {
-            renderClassColumns(classData) {
+            renderClassColumns(classData,origin) {
+				console.log(origin)
                 // 渲染得分率关系表格的班级数据
                 // 渲染得分率关系表格的班级数据
-                classData.forEach(item => {
-                    let classColumn = {
-                        title: item,
-                        sortable: 'custom',
-                        key: item,
-                        render: (h, params) => {
-                            return h('span', (Number(params.row[item]) * 100).toFixed(2) + '%')
-                        },
-                        minWidth: 150
-                    }
-                    this.tableColumns.push(classColumn)
-                })
+				classData.classes.forEach((item,index) => {
+				    let classColumn = {
+				        title: item.className,
+				        sortable: 'custom',
+				        key: item.className,
+				        render: (h, params) => {
+				            return h('span', ((Number(origin[params.row.name][index])) * 100).toFixed(2) + '%')
+				        },
+				        minWidth: 150
+				    }
+				    this.tableColumns.push(classColumn)
+				})
             },
             },
 
 
             changePieOrBar() {
             changePieOrBar() {
@@ -110,14 +117,14 @@
                     }
                     }
                     arr.push(o)
                     arr.push(o)
                 }
                 }
-                this.renderClassColumns(origin.className)
+                this.renderClassColumns(this.getAnalysisJson,origin)
 				console.log(arr)
 				console.log(arr)
                 this.knowledgeData = arr
                 this.knowledgeData = arr
             }
             }
 
 
         },
         },
         mounted() {
         mounted() {
-            if (this.getKnowledgeData) {
+            if (this.getKnowledgeData && this.hasKnowledge) {
                 this.doRender(this.getKnowledgeData)
                 this.doRender(this.getKnowledgeData)
             }
             }
         },
         },
@@ -125,19 +132,18 @@
         computed: {
         computed: {
             // 获取最新散点图数据
             // 获取最新散点图数据
             getKnowledgeData() {
             getKnowledgeData() {
-                return this.$store.state.totalAnalysis.knowledgeData
-            }
-        },
-        watch: {
-            getKnowledgeData: {
-                deep: true,
-                handler(val) {
-                    if (val) {
-                        this.doRender(val)
-                    }
-                }
-
-            }
+				let curSubjectIndex = this.$store.state.totalAnalysis.analysisJson.subjects.map(i => i.name).indexOf(this.$store.state.totalAnalysis.currentSubject)
+                return this.$store.state.totalAnalysis.analysisJson.pointLevelKey[curSubjectIndex].pointKey
+            },
+			
+			getAnalysisJson() {
+			    return this.$store.state.totalAnalysis.analysisJson
+			},
+			
+			hasKnowledge(){
+				let curSubjectIndex = this.$store.state.totalAnalysis.analysisJson.subjects.map(i => i.name).indexOf(this.$store.state.totalAnalysis.currentSubject)
+				return this.$store.state.totalAnalysis.analysisJson.pointLevelKey[curSubjectIndex].pointKey.classpercent
+			}
         }
         }
     }
     }
 </script>
 </script>

+ 2 - 1
TEAMModelOS/ClientApp/src/view/student-analysis/total-analysis/KnowledgeAnalysis/ScoreDetails.vue

@@ -193,7 +193,8 @@
         computed: {
         computed: {
             // 获取最新散点图数据
             // 获取最新散点图数据
             getKnowledgeData() {
             getKnowledgeData() {
-                return this.$store.state.totalAnalysis.knowledgeData
+                let curSubjectIndex = this.$store.state.totalAnalysis.analysisJson.subjects.map(i => i.name).indexOf(this.$store.state.totalAnalysis.currentSubject)
+                return this.$store.state.totalAnalysis.analysisJson.pointLevelKey[curSubjectIndex].pointKey
             }
             }
         },
         },
         watch: {
         watch: {

+ 31 - 40
TEAMModelOS/ClientApp/src/view/student-analysis/total-analysis/LevelAnalysis/LevelAnalysis.vue

@@ -14,14 +14,8 @@
 
 
             <span class="component-title">
             <span class="component-title">
                 {{$t('totalAnalysis.le_title3')}}
                 {{$t('totalAnalysis.le_title3')}}
-                <!-- 当前知识块 : 全部 -->
-                <!--<span style="font-size:14px;font-weight:bold;margin-left:20px;color:#66cccc">
-                    {{$t('totalAnalysis.ka_text1')}}:{{currentBlock}}
-                    <Icon type="ios-close-circle-outline" @click="refresh" style="cursor:pointer;" v-show="currentBlock != '全部'" />
-                </span>-->
             </span>
             </span>
             <div style="padding:20px 50px;position:relative">
             <div style="padding:20px 50px;position:relative">
-                <!--<span class="btn-class-score" @click="handleGoDetails">查看班级得分<Icon type="ios-arrow-dropright" /></span>-->
                 <BaseMyTable :columns="tableColumns"
                 <BaseMyTable :columns="tableColumns"
                              :tableName="$t('totalAnalysis.le_title3')"
                              :tableName="$t('totalAnalysis.le_title3')"
                               tableRef="levelScoreRateTable"
                               tableRef="levelScoreRateTable"
@@ -74,20 +68,20 @@
         },
         },
 
 
         methods: {
         methods: {
-            renderClassColumns(classData) {
+            renderClassColumns(classData,origin) {
                 // 渲染得分率关系表格的班级数据
                 // 渲染得分率关系表格的班级数据
-                classData.forEach(item => {
-                    let classColumn = {
-                        title: item,
-                        sortable: 'custom',
-                        key: item,
-                        render: (h, params) => {
-                            return h('span', (Number(params.row[item]) * 100).toFixed(2) + '%')
-                        },
-                        minWidth: 150
-                    }
-                    this.tableColumns.push(classColumn)
-                })
+            	classData.classes.forEach((item,index) => {
+            	    let classColumn = {
+            	        title: item.className,
+            	        sortable: 'custom',
+            	        key: item.className,
+            	        render: (h, params) => {
+            	            return h('span', ((Number(origin[params.row.name][index])) * 100).toFixed(2) + '%')
+            	        },
+            	        minWidth: 150
+            	    }
+            	    this.tableColumns.push(classColumn)
+            	})
             },
             },
 
 
             changePieOrBar() {
             changePieOrBar() {
@@ -107,22 +101,14 @@
                     }
                     }
                     arr.push(o)
                     arr.push(o)
                 }
                 }
-                this.renderClassColumns(origin.className)
+                this.renderClassColumns(this.getAnalysisJson,origin)
                 this.levelData = arr
                 this.levelData = arr
             }
             }
 
 
-            // 点击玫瑰图某个知识点事件
-            // handleItemClick(item) {
-            //    let exerciseList = this.$store.state.totalAnalysis.exerciseList
-            //    this.currentBlock = item.data.name
-            //    let blockId = item.data.id
-            //    this.levelData = exerciseList.filter(item => item.blockId === blockId)
-            //    this.$refs.detailsRef.levelData = this.levelData
-            // },
-
         },
         },
         mounted() {
         mounted() {
             if (this.getLevelData) {
             if (this.getLevelData) {
+				console.log(this.getLevelData)
                 this.doRender(this.getLevelData)
                 this.doRender(this.getLevelData)
             }
             }
         },
         },
@@ -130,19 +116,24 @@
         computed: {
         computed: {
             // 获取最新散点图数据
             // 获取最新散点图数据
             getLevelData() {
             getLevelData() {
-                return this.$store.state.totalAnalysis.levelData
-            }
+				let curSubjectIndex = this.$store.state.totalAnalysis.analysisJson.subjects.map(i => i.name).indexOf(this.$store.state.totalAnalysis.currentSubject)
+				let levelJson = this.$store.state.totalAnalysis.analysisJson.pointLevelKey[curSubjectIndex].levelKey
+				let transArr = ["知识", "理解", "应用", "分析", "综合", "评鉴"]
+				levelJson.pointList = levelJson.pointList.map((i,index) => transArr[index])
+				for(let key in levelJson.classpercent){
+					if(key !== 'className'){
+						let newKey = transArr[+key - 1]
+						levelJson.classpercent[newKey] = levelJson.classpercent[key]
+					}
+				}
+				return levelJson
+            },
+			getAnalysisJson() {
+			    return this.$store.state.totalAnalysis.analysisJson
+			},
         },
         },
         watch: {
         watch: {
-            getKnowledgeData: {
-                deep: true,
-                handler(val) {
-                    if (val) {
-                        this.doRender(val)
-                    }
-                }
-
-            }
+            
         }
         }
     }
     }
 </script>
 </script>

+ 14 - 15
TEAMModelOS/ClientApp/src/view/student-analysis/total-analysis/LevelAnalysis/ScoreDetails.vue

@@ -12,7 +12,7 @@
                 </div>
                 </div>
             </Col>
             </Col>
             <Col span="12">
             <Col span="12">
-            <span class="component-title">{{$t('totalAnalysis.le_title5')}}<span style="font-size:14px;font-weight:bold;margin-left:20px;color:#66cccc">{{$t('totalAnalysis.ka_text3')}}:{{currentPoint}}</span></span>
+            <span class="component-title">{{$t('totalAnalysis.le_title5')}}<span style="font-size:14px;font-weight:bold;margin-left:20px;color:#66cccc">{{$t('totalAnalysis.ka_text3')}}:{{transArr[+currentPoint-1]}}</span></span>
                 <div style="padding:0 50px;">
                 <div style="padding:0 50px;">
                     <BaseMyTable :columns="detailsColumns"
                     <BaseMyTable :columns="detailsColumns"
                                  :tableName="$t('totalAnalysis.le_title5')"
                                  :tableName="$t('totalAnalysis.le_title5')"
@@ -48,7 +48,8 @@
                 isShowRadar: false,
                 isShowRadar: false,
                 tableData: [],
                 tableData: [],
                 classDatas: [],
                 classDatas: [],
-                currentPoint: '知识',
+                currentPoint: 1,
+				transArr:["知识", "理解", "应用", "分析", "综合", "评鉴"],
                 tipContent: '* RH:高分区段  /  RL:低分区段 (模拟数据,仅供参考)',
                 tipContent: '* RH:高分区段  /  RL:低分区段 (模拟数据,仅供参考)',
                 levelData: [],
                 levelData: [],
                 numData: [],
                 numData: [],
@@ -159,7 +160,7 @@
 
 
             // 点击柱状图某个点事件
             // 点击柱状图某个点事件
             handleItemClick(item) {
             handleItemClick(item) {
-                this.currentPoint = item.name
+                this.currentPoint = this.transArr.indexOf(item.name) + 1
                 this.doRender(this.getLevelData, this.currentPoint)
                 this.doRender(this.getLevelData, this.currentPoint)
             },
             },
 
 
@@ -167,7 +168,6 @@
                 let origin = data.stupercent
                 let origin = data.stupercent
                 let keys = origin.keys
                 let keys = origin.keys
                 let datas = origin[point]
                 let datas = origin[point]
-                console.log(origin)
                 this.tableData = this.$tools.jsonTransform({ datas: datas, keys: keys })
                 this.tableData = this.$tools.jsonTransform({ datas: datas, keys: keys })
             },
             },
 
 
@@ -190,18 +190,17 @@
         computed: {
         computed: {
             // 获取最新散点图数据
             // 获取最新散点图数据
             getLevelData() {
             getLevelData() {
-                return this.$store.state.totalAnalysis.levelData
-            }
-        },
-        watch: {
-            getLevelData: {
-                deep: true,
-                handler(val) {
-                    if (val) {
-                        this.doRender(val)
-                    }
+                let curSubjectIndex = this.$store.state.totalAnalysis.analysisJson.subjects.map(i => i.name).indexOf(this.$store.state.totalAnalysis.currentSubject)
+                let levelJson = this.$store.state.totalAnalysis.analysisJson.pointLevelKey[curSubjectIndex].levelKey
+                let transArr = ["知识", "理解", "应用", "分析", "综合", "评鉴"]
+                levelJson.pointList = levelJson.pointList.map((i,index) => transArr[index])
+                for(let key in levelJson.classpercent){
+                	if(key !== 'className'){
+                		let newKey = transArr[+key - 1]
+                		levelJson.classpercent[newKey] = levelJson.classpercent[key]
+                	}
                 }
                 }
-
+                return levelJson
             }
             }
         }
         }
     }
     }

+ 2 - 0
TEAMModelOS/ClientApp/src/view/student-analysis/total-analysis/index.less

@@ -209,6 +209,8 @@ body, html, .total-container {
     display: none;
     display: none;
   }
   }
 }
 }
+
+
 .fl-col-center {
 .fl-col-center {
   display: flex;
   display: flex;
   flex-direction: column;
   flex-direction: column;

+ 1 - 1
TEAMModelOS/ClientApp/src/view/teachermgmt/components/userList/Index.vue

@@ -227,7 +227,7 @@
       <div class="userListContent">
       <div class="userListContent">
         <Table v-if="isMockReloadAlive" class="scrollstyle" :height="tableHeight" ref="selection" :columns="tableColumns" :data="tableData" @on-selection-change="setTeachers" @on-sort-change="changeSort">
         <Table v-if="isMockReloadAlive" class="scrollstyle" :height="tableHeight" ref="selection" :columns="tableColumns" :data="tableData" @on-selection-change="setTeachers" @on-sort-change="changeSort">
           <template slot-scope="{ row }" slot="picture">
           <template slot-scope="{ row }" slot="picture">
-            <PersonalPhoto :name="row.name" :picture="row.picture" :color="row.nameColor" />
+            <PersonalPhoto :name="row.name" :picture="row.picture" />
           </template>
           </template>
           <template slot-scope="{ row }" slot="action" v-if="isOpenSpaceAuth == false">
           <template slot-scope="{ row }" slot="action" v-if="isOpenSpaceAuth == false">
             <icon icon="shield-alt" style="font-size: 14px; color: #fff; margin-right: 20px; cursor: pointer;" @click="showAuth(row)" />
             <icon icon="shield-alt" style="font-size: 14px; color: #fff; margin-right: 20px; cursor: pointer;" @click="showAuth(row)" />

+ 1 - 9
TEAMModelOS/ClientApp/vue.config.js

@@ -1,4 +1,4 @@
-const path = require('path')
+const path = require('path')
 const Timestamp = new Date().getTime();
 const Timestamp = new Date().getTime();
 function resolve(dir) {
 function resolve(dir) {
     return path.join(__dirname, './', dir)
     return path.join(__dirname, './', dir)
@@ -55,13 +55,5 @@ module.exports = {
     },
     },
     configureWebpack: config => {
     configureWebpack: config => {
         config.entry.app = ["babel-polyfill", "./src/main.js"];
         config.entry.app = ["babel-polyfill", "./src/main.js"];
-    },
-    configureWebpack: {
-        output: { // 输出重构  打包编译后的 文件名称  【模块名称.版本号.js】
-            filename: `js/[name].${Timestamp}.js`,
-            chunkFilename: `js/[name].${Timestamp}.js`
-            // chunkFilename: `js/[id].vw.js`
-        },
     }
     }
-
 }
 }

+ 17 - 10
TEAMModelOS/Controllers/Analysis/AnalysisController.cs

@@ -92,11 +92,13 @@ namespace TEAMModelOS.Controllers.Analysis
                 "examScoreRate"
                 "examScoreRate"
             };
             };
             ExamInfo info = null;
             ExamInfo info = null;
-            double ipoint = 0;
-            Dictionary<string, dynamic> gpoint = new Dictionary<string, dynamic>();
-            Dictionary<string, dynamic> glevel = new Dictionary<string, dynamic>();
+            double ipoint = 0;          
             List<KeyValuePair<string, List<List<string>>>> subjectPaperDatas = new List<KeyValuePair<string, List<List<string>>>>();
             List<KeyValuePair<string, List<List<string>>>> subjectPaperDatas = new List<KeyValuePair<string, List<List<string>>>>();
+            List<Dictionary<string, object>> valuePairs = new List<Dictionary<string, object>>();            
             List<KeyValuePair<string, List<KeyValuePair<string, List<double>>>>> classSubjectPaperDatas = new List<KeyValuePair<string, List<KeyValuePair<string, List<double>>>>>();
             List<KeyValuePair<string, List<KeyValuePair<string, List<double>>>>> classSubjectPaperDatas = new List<KeyValuePair<string, List<KeyValuePair<string, List<double>>>>>();
+            //获取进线标准以及踩线分数
+            int touch = 0;
+            int income = 0;
             try
             try
             {
             {
                 var client = _azureCosmos.GetCosmosClient();
                 var client = _azureCosmos.GetCosmosClient();
@@ -117,13 +119,13 @@ namespace TEAMModelOS.Controllers.Analysis
                     examClassResults.Add(item);
                     examClassResults.Add(item);
 
 
                 }
                 }
-                //获取进线标准
-                int touch = 0;
+
                 foreach (Period period in school.period)
                 foreach (Period period in school.period)
                 {
                 {
                     if (info.period.id.Equals(period.id))
                     if (info.period.id.Equals(period.id))
                     {
                     {
                         touch = period.analysis.touch;
                         touch = period.analysis.touch;
+                        income = period.analysis.income;
                     }
                     }
                 }
                 }
                 //计算每个年级参考人数并计算进线分数
                 //计算每个年级参考人数并计算进线分数
@@ -161,7 +163,7 @@ namespace TEAMModelOS.Controllers.Analysis
                     keys.Add(new KeyValuePair<string, double>(grade.id, ipoint));
                     keys.Add(new KeyValuePair<string, double>(grade.id, ipoint));
                 }*/
                 }*/
                 //获取进线人数
                 //获取进线人数
-                int personCount = (int)System.Math.Round(info.stuCount * (touch / 100.0), MidpointRounding.AwayFromZero);
+                int personCount = (int)System.Math.Round(info.stuCount * (income / 100.0), MidpointRounding.AwayFromZero);
 
 
                 /* //声明年级所有科目总分
                 /* //声明年级所有科目总分
                  List<double> total = new List<double>();*/
                  List<double> total = new List<double>();*/
@@ -175,12 +177,17 @@ namespace TEAMModelOS.Controllers.Analysis
                 foreach (ExamResult examResult in examResults)
                 foreach (ExamResult examResult in examResults)
                 {
                 {
                     (KeyValuePair<string, List<List<string>>> subjectData, KeyValuePair<string, List<KeyValuePair<string, List<double>>>> classSubjectData , Dictionary<string, List<double>> gscore) =DoExerciseScatteres(examResult, paperKey);
                     (KeyValuePair<string, List<List<string>>> subjectData, KeyValuePair<string, List<KeyValuePair<string, List<double>>>> classSubjectData , Dictionary<string, List<double>> gscore) =DoExerciseScatteres(examResult, paperKey);
-                    gscores.Add(new KeyValuePair<string, Dictionary<string, List<double>>>(examResult.subjectId, gscore));                   
+                    gscores.Add(new KeyValuePair<string, Dictionary<string, List<double>>>(examResult.subjectId, gscore));
+/*                    Dictionary<string, dynamic> gpoint = new Dictionary<string, dynamic>();
+                    Dictionary<string, dynamic> glevel = new Dictionary<string, dynamic>();*/
+                    Dictionary<string, object> gpointList = new Dictionary<string, object>();
                     subjectPaperDatas.Add(subjectData);
                     subjectPaperDatas.Add(subjectData);
                     classSubjectPaperDatas.Add(classSubjectData);
                     classSubjectPaperDatas.Add(classSubjectData);
                     subjectScatter.Add(DoSubjectScatter(examResult));
                     subjectScatter.Add(DoSubjectScatter(examResult));
-                    gpoint = DoKnowledgePoint(examResult,info);
-                    glevel = DoLevel(examResult, info);
+                    gpointList.Add("subjectId", examResult.subjectId);
+                    gpointList.Add("pointKey", DoKnowledgePoint(examResult, info));
+                    gpointList.Add("levelKey", DoLevel(examResult, info));
+                    valuePairs.Add(gpointList);
                     //获取一张试卷的满分
                     //获取一张试卷的满分
                     paperScore.Add(examResult.subjectId, examResult.paper.point.Sum());
                     paperScore.Add(examResult.subjectId, examResult.paper.point.Sum());
                     List<double> StuSubjectTotals = new List<double>();
                     List<double> StuSubjectTotals = new List<double>();
@@ -410,7 +417,7 @@ namespace TEAMModelOS.Controllers.Analysis
             
             
             }
             }
             var sub = info.subjects.Select(x => new { id = x.id, name = x.name });
             var sub = info.subjects.Select(x => new { id = x.id, name = x.name });
-            return Ok(new { students, classes, grades , paper= subjectPaperDatas, subjects=sub, scatterKey = scatterKey,paperKey=paperKey, pointKey = gpoint, ipoint = ipoint,levelKey = glevel });
+            return Ok(new { students, classes, grades , paper= subjectPaperDatas, subjects=sub, scatterKey = scatterKey,paperKey=paperKey, pointLevelKey = valuePairs, ipoint = ipoint,touchScore = touch});
         }
         }
 
 
         private static (KeyValuePair<string,List<List<string>>>, KeyValuePair<string, List<KeyValuePair<string, List<double>>>>,   Dictionary<string, List<double>>) DoExerciseScatteres(ExamResult e,  List<string > paperKey) 
         private static (KeyValuePair<string,List<List<string>>>, KeyValuePair<string, List<KeyValuePair<string, List<double>>>>,   Dictionary<string, List<double>>) DoExerciseScatteres(ExamResult e,  List<string > paperKey) 

+ 19 - 2
TEAMModelOS/Controllers/Core/ImportController.cs

@@ -71,7 +71,24 @@ namespace TEAMModelOS.Controllers
             string text = builder.ToString();
             string text = builder.ToString();
             langConfigs = text.ToObject<List<LangConfig>>();
             langConfigs = text.ToObject<List<LangConfig>>();
         }
         }
+        private static string ReplaceLast(string input, string oldValue, string newValue)
+        {
+            int index = input.LastIndexOf(oldValue);
+            if (index < 0)
+            {
+                return input;
+            }
+            else
+            {
+                StringBuilder sb = new StringBuilder(input.Length - oldValue.Length + newValue.Length);
+                sb.Append(input.Substring(0, index));
+                sb.Append(newValue);
+                sb.Append(input.Substring(index + oldValue.Length,
+                   input.Length - index - oldValue.Length));
 
 
+                return sb.ToString();
+            }
+        }
 
 
         /// <summary>
         /// <summary>
         ///  {"file":"www....xxxx.pptx","scope":"private/school"}
         ///  {"file":"www....xxxx.pptx","scope":"private/school"}
@@ -105,8 +122,8 @@ namespace TEAMModelOS.Controllers
             bool flg = IsBlobName(BlobName);
             bool flg = IsBlobName(BlobName);
             var codes = azureBlobSAS.Split("/");
             var codes = azureBlobSAS.Split("/");
             var file = codes[codes.Length - 1].Split(".");
             var file = codes[codes.Length - 1].Split(".");
-            var FileName = file[0];
-            var ext = file[1];
+            var ext = file[file.Length - 1];
+            var FileName = ReplaceLast(codes[codes.Length - 1], "." + ext, "");
             if (flg)
             if (flg)
             {
             {
                 BlobAuth blobAuth = _azureStorage.GetBlobSasUriRead(ContainerName, BlobName);
                 BlobAuth blobAuth = _azureStorage.GetBlobSasUriRead(ContainerName, BlobName);

+ 1 - 1
TEAMModelOS/TEAMModelOS.csproj

@@ -7,7 +7,7 @@
     <PackageReference Include="Caching.CSRedis" Version="3.6.50" />
     <PackageReference Include="Caching.CSRedis" Version="3.6.50" />
     <PackageReference Include="CSRedisCore" Version="3.6.5" />
     <PackageReference Include="CSRedisCore" Version="3.6.5" />
     <PackageReference Include="DotNetZip" Version="1.15.0" />
     <PackageReference Include="DotNetZip" Version="1.15.0" />
-    <PackageReference Include="HTEXLib" Version="2.1.7" />
+    <PackageReference Include="HTEXLib" Version="2.2.3" />
     <PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="3.1.6" />
     <PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="3.1.6" />
       <PackageReference Include="VueCliMiddleware" Version="3.1.2" />  </ItemGroup>
       <PackageReference Include="VueCliMiddleware" Version="3.1.2" />  </ItemGroup>
   <PropertyGroup>
   <PropertyGroup>