浏览代码

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

zhousheng 4 年之前
父节点
当前提交
d2ba5b79f9

+ 95 - 0
TEAMModelFunction/ActivityHttpTrigger.cs

@@ -0,0 +1,95 @@
+using System;
+using System.IO;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.Azure.WebJobs;
+using Microsoft.Azure.WebJobs.Extensions.Http;
+using Microsoft.AspNetCore.Http;
+using Microsoft.Extensions.Logging;
+using Newtonsoft.Json;
+using TEAMModelOS.SDK.DI;
+using Azure.Cosmos;
+using System.Text.Json;
+using System.Collections.Generic;
+using TEAMModelOS.SDK.Models;
+using TEAMModelOS.SDK.Extension;
+
+namespace TEAMModelFunction
+{
+    public   class ActivityHttpTrigger
+    {
+
+
+        private readonly AzureCosmosFactory _azureCosmos;
+        private readonly DingDing _dingDing;
+        private readonly AzureStorageFactory _azureStorage;
+        private readonly AzureRedisFactory _azureRedis;
+        public ActivityHttpTrigger(AzureCosmosFactory azureCosmos, DingDing dingDing, AzureStorageFactory azureStorage
+             , AzureRedisFactory azureRedis)
+        {
+            _azureCosmos = azureCosmos;
+            _dingDing = dingDing;
+            _azureStorage = azureStorage;
+            _azureRedis = azureRedis;
+        }
+        [FunctionName("fix-exam-activity")]
+        public   async Task<IActionResult> ExamActivity([HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = null)] HttpRequest req,ILogger log)
+        {
+            log.LogInformation("C# HTTP trigger function processed a request.");
+            string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
+            List<string> datas = JsonConvert.DeserializeObject<List<string>>(requestBody);
+            var client = _azureCosmos.GetCosmosClient();
+            List<ExamInfo> exams = new List<ExamInfo>();
+            var query = $"select  *  from c ";
+            foreach (string data in datas) {
+                await foreach (var item in client.GetContainer("TEAMModelOS", "Common").GetItemQueryStreamIterator(
+                    queryText: query,  requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"Exam-{data}") }))
+                {
+                    using var json = await JsonDocument.ParseAsync(item.ContentStream);
+                    if (json.RootElement.TryGetProperty("_count", out JsonElement count) && count.GetUInt16() > 0)
+                    {
+                        foreach (var obj in json.RootElement.GetProperty("Documents").EnumerateArray())
+                        {
+                            exams.Add(obj.ToObject<ExamInfo>());
+                        }
+                    }
+                }
+            }
+            return new OkObjectResult(new { });
+        }
+
+        [FunctionName("fix-vote-activity")]
+        public async Task<IActionResult> VoteActivity(
+            [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
+            ILogger log)
+        {
+            log.LogInformation("C# HTTP trigger function processed a request.1");
+            string name = req.Query["name"];
+            string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
+            dynamic data = JsonConvert.DeserializeObject(requestBody);
+            log.LogInformation($"{data}");
+            name = name ?? data?.name;
+
+            string responseMessage = string.IsNullOrEmpty(name)
+                ? "This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response."
+                : $"Hello, {name}. This HTTP triggered function executed successfully.";
+            return new OkObjectResult(responseMessage);
+        }
+        [FunctionName("fix-survey-activity")]
+        public async Task<IActionResult> SurveyActivity(
+            [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
+            ILogger log)
+        {
+            log.LogInformation("C# HTTP trigger function processed a request.1");
+            string name = req.Query["name"];
+            string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
+            dynamic data = JsonConvert.DeserializeObject(requestBody);
+            log.LogInformation($"{data}");
+            name = name ?? data?.name;
+            string responseMessage = string.IsNullOrEmpty(name)
+                ? "This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response."
+                : $"Hello, {name}. This HTTP triggered function executed successfully.";
+            return new OkObjectResult(responseMessage);
+        }
+    }
+}

+ 0 - 7
TEAMModelFunction/MonitorCosmosDB.cs

@@ -30,13 +30,6 @@ namespace TEAMModelFunction
             _azureRedis = azureRedis;
             _azureRedis = azureRedis;
         }
         }
 
 
-        //[FunctionName("Common")]
-        //public async Task Common([HttpTrigger(
-        //    databaseName: "TEAMModelOS",
-        //    collectionName: "Common",
-        //    ConnectionStringSetting = "Azure:Cosmos:ConnectionString",
-        //    LeaseCollectionName = "leases")]IReadOnlyList<Document> inputs, ILogger log)
-
         [FunctionName("Common")]
         [FunctionName("Common")]
         public async Task Common([CosmosDBTrigger(
         public async Task Common([CosmosDBTrigger(
             databaseName: "TEAMModelOS",
             databaseName: "TEAMModelOS",

+ 1 - 1
TEAMModelFunction/MonitorServicesBus.cs

@@ -18,7 +18,7 @@ namespace TEAMModelFunction
         private readonly AzureCosmosFactory _azureCosmos;
         private readonly AzureCosmosFactory _azureCosmos;
         private readonly DingDing _dingDing;
         private readonly DingDing _dingDing;
         private readonly AzureStorageFactory _azureStorage;
         private readonly AzureStorageFactory _azureStorage;
-       private readonly AzureRedisFactory _azureRedis;
+        private readonly AzureRedisFactory _azureRedis;
         public MonitorServicesBus(AzureCosmosFactory azureCosmos, DingDing dingDing, AzureStorageFactory azureStorage
         public MonitorServicesBus(AzureCosmosFactory azureCosmos, DingDing dingDing, AzureStorageFactory azureStorage
              , AzureRedisFactory azureRedis
              , AzureRedisFactory azureRedis
             )
             )

+ 53 - 67
TEAMModelFunction/TriggerExam.cs

@@ -153,43 +153,44 @@ namespace TEAMModelFunction
                                     scope = info.scope
                                     scope = info.scope
                                 };
                                 };
                                 result.info.id = cla;
                                 result.info.id = cla;
-                                if (info.scope.Equals("private", StringComparison.OrdinalIgnoreCase))
+                                List<string> ans = new List<string>();
+                                List<double> ansPoint = new List<double>();
+                                List<string> ids = new List<string>();
+                                foreach (double p in info.papers[m].point)
                                 {
                                 {
-                                    
-                                    List<string> ans = new List<string>();
-                                    List<double> ansPoint = new List<double>();
-                                    List<string> ids = new List<string>();
-                                    foreach (double p in info.papers[m].point)
-                                    {
-                                        //ans.Add(new List<string>());
-                                        ansPoint.Add(-1);
-                                    }
-                                    var sresponse = await client.GetContainer("TEAMModelOS", "School").ReadItemStreamAsync(cla, new Azure.Cosmos.PartitionKey($"Class-{info.school}"));
-                                    if (sresponse.Status == 200)
+                                    //ans.Add(new List<string>());
+                                    ansPoint.Add(-1);
+                                }
+                                var sresponse = await client.GetContainer("TEAMModelOS", "School").ReadItemStreamAsync(cla, new Azure.Cosmos.PartitionKey($"Class-{info.school}"));
+                                if (sresponse.Status == 200)
+                                {
+                                    using var json = await JsonDocument.ParseAsync(sresponse.ContentStream);
+                                    Class classroom = json.ToObject<Class>();
+                                    //result.info.id = classroom.id;
+                                    result.info.name = classroom.name;
+                                    result.gradeId = classroom.gradeId;
+                                    //处理班级人数
+                                    await foreach (var item in client.GetContainer("TEAMModelOS", "Student").GetItemQueryStreamIterator(queryText: $"select c.id from c where c.classId = '{classroom.id}'", requestOptions: new QueryRequestOptions() { PartitionKey = new Azure.Cosmos.PartitionKey($"Base-{info.school}") }))
                                     {
                                     {
-                                        using var json = await JsonDocument.ParseAsync(sresponse.ContentStream);
-                                        Class classroom = json.ToObject<Class>();
-                                        result.info.name = classroom.name;
-                                        result.gradeId = classroom.gradeId;
-                                        //处理班级人数
-                                        await foreach (var item in client.GetContainer("TEAMModelOS", "Student").GetItemQueryStreamIterator(queryText: $"select c.id from c where c.classId = '{classroom.id}'", requestOptions: new QueryRequestOptions() { PartitionKey = new Azure.Cosmos.PartitionKey($"Base-{info.school}") }))
+                                        using var json_stu = await JsonDocument.ParseAsync(item.ContentStream);
+                                        if (json_stu.RootElement.TryGetProperty("_count", out JsonElement count) && count.GetUInt16() > 0)
                                         {
                                         {
-                                            using var json_stu = await JsonDocument.ParseAsync(item.ContentStream);
-                                            if (json_stu.RootElement.TryGetProperty("_count", out JsonElement count) && count.GetUInt16() > 0)
+                                            var accounts = json_stu.RootElement.GetProperty("Documents").EnumerateArray();
+                                            while (accounts.MoveNext())
                                             {
                                             {
-                                                var accounts = json_stu.RootElement.GetProperty("Documents").EnumerateArray();
-                                                while (accounts.MoveNext())
-                                                {
-                                                    JsonElement account = accounts.Current;
-                                                    ids.Add(account.GetProperty("id").GetString());
-                                                }
+                                                JsonElement account = accounts.Current;
+                                                ids.Add(account.GetProperty("id").GetString());
                                             }
                                             }
-                                        }                                                                               
+                                        }
                                     }
                                     }
+                                }
+                                if (info.scope.Equals("private", StringComparison.OrdinalIgnoreCase))
+                                {                                                                                                        
                                     var stuResponse = await client.GetContainer("TEAMModelOS", "Teacher").ReadItemStreamAsync(cla, new Azure.Cosmos.PartitionKey($"StuList"));
                                     var stuResponse = await client.GetContainer("TEAMModelOS", "Teacher").ReadItemStreamAsync(cla, new Azure.Cosmos.PartitionKey($"StuList"));
                                     if (sresponse.Status == 200) {
                                     if (sresponse.Status == 200) {
                                         using var json = await JsonDocument.ParseAsync(sresponse.ContentStream);
                                         using var json = await JsonDocument.ParseAsync(sresponse.ContentStream);
                                         StuList stuList = json.ToObject<StuList>();
                                         StuList stuList = json.ToObject<StuList>();
+                                        //result.info.id = stuList.id;
                                         result.info.name = stuList.name;
                                         result.info.name = stuList.name;
                                         //处理发布对象为自选名单(个人)
                                         //处理发布对象为自选名单(个人)
 
 
@@ -214,56 +215,41 @@ namespace TEAMModelFunction
                                                         ids.Add(tid);
                                                         ids.Add(tid);
                                                     }
                                                     }
                                                 }
                                                 }
-
-                                    }
-                                    foreach (string stu in ids)
-                                    {
-                                        result.studentIds.Add(stu);
-                                        result.studentAnswers.Add(ans);
-                                        result.studentScores.Add(ansPoint);
-                                        result.sum.Add(0);
-                                    }
+                                    }                                   
                                 }
                                 }
-                                else {
-                                    var sresponse = await client.GetContainer("TEAMModelOS", "School").ReadItemStreamAsync(cla, new Azure.Cosmos.PartitionKey($"Class-{info.school}"));
+                                else {                                                                                                                                                                                                                       
+                                    var stuResponse = await client.GetContainer("TEAMModelOS", "School").ReadItemStreamAsync(cla, new Azure.Cosmos.PartitionKey($"StuList-{info.school}"));
                                     if (sresponse.Status == 200)
                                     if (sresponse.Status == 200)
                                     {
                                     {
                                         using var json = await JsonDocument.ParseAsync(sresponse.ContentStream);
                                         using var json = await JsonDocument.ParseAsync(sresponse.ContentStream);
-                                        Class classroom = json.ToObject<Class>();
-                                        result.info.name = classroom.name;
-                                        result.gradeId = classroom.gradeId;
-                                        List<string> ans = new List<string>();
-                                        List<double> ansPoint = new List<double>();
-                                        foreach (double p in info.papers[m].point)
-                                        {
-                                            //ans.Add(new List<string>());
-                                            ansPoint.Add(-1);
-                                        }
-                                        List<string> ids = new List<string>();
-                                        //处理班级人数
-                                        await foreach (var item in client.GetContainer("TEAMModelOS", "Student").GetItemQueryStreamIterator(queryText: $"select c.id from c where c.classId = '{classroom.id}'", requestOptions: new QueryRequestOptions() { PartitionKey = new Azure.Cosmos.PartitionKey($"Base-{info.school}") }))
+                                        StuList stuList = json.ToObject<StuList>();
+                                        //result.info.id = stuList.id;
+                                        result.info.name = stuList.name;
+                                        //处理发布对象为自选名单(校本)
+                                        foreach (Students students in stuList.students)
                                         {
                                         {
-                                            using var json_stu = await JsonDocument.ParseAsync(item.ContentStream);
-                                            if (json_stu.RootElement.TryGetProperty("_count", out JsonElement count) && count.GetUInt16() > 0)
+                                            if (students.code.Contains(code))
                                             {
                                             {
-                                                var accounts = json_stu.RootElement.GetProperty("Documents").EnumerateArray();
-                                                while (accounts.MoveNext())
+                                                if (!ids.Contains(students.id))
                                                 {
                                                 {
-                                                    JsonElement account = accounts.Current;
-                                                    ids.Add(account.GetProperty("id").GetString());
+                                                    ids.Add(students.id);
                                                 }
                                                 }
                                             }
                                             }
-                                        }
-                                        foreach (string stu in ids)
-                                        {
-                                            result.studentIds.Add(stu);
-                                            result.studentAnswers.Add(ans);
-                                            result.studentScores.Add(ansPoint);
-                                            result.sum.Add(0);
-                                        }
-                                    }
+                                            else
+                                            {
+                                                ids.Add(students.id);
+                                            }
+                                        }                                      
+                                    }                                    
                                 }
                                 }
-                                
+                                foreach (string stu in ids)
+                                {
+                                    result.studentIds.Add(stu);
+                                    result.studentAnswers.Add(ans);
+                                    result.studentScores.Add(ansPoint);
+                                    result.sum.Add(0);
+                                }
+
                                 //result.progress = info.progress;
                                 //result.progress = info.progress;
                                 result.school = info.school;
                                 result.school = info.school;
                                 m++;
                                 m++;

+ 3 - 3
TEAMModelOS/ClientApp/src/api/courseMgmt.js

@@ -44,9 +44,9 @@ export default {
         return post('/api/Course/deleteTime', data)
         return post('/api/Course/deleteTime', data)
     },
     },
     //获取教室关联的学生(移动到班级api管理)
     //获取教室关联的学生(移动到班级api管理)
-    getClassroomStudent: function (data) {
-       return post('/student/class/find', data)
-    },
+    // getClassroomStudent: function (data) {
+    //    return post('/student/class/find', data)
+    // },
     //虚拟教室添加学生
     //虚拟教室添加学生
     addClassroom: function (data) {
     addClassroom: function (data) {
         return post('/api/ClassStudent/upsert', data)
         return post('/api/ClassStudent/upsert', data)

+ 1 - 1
TEAMModelOS/ClientApp/src/view/classmgt/ManageClass.vue

@@ -467,7 +467,7 @@ export default {
             this.$api.schoolSetting.getClassroomStudent(params).then(
             this.$api.schoolSetting.getClassroomStudent(params).then(
                 (res) => {
                 (res) => {
                     if (!res.error) {
                     if (!res.error) {
-                        this.classList[this.curClassIndex].students = res.classrooms[0] ? res.classrooms[0].students : []
+                        this.classList[this.curClassIndex].students = res.stus.length ? res.stus[0] : []
                     } else {
                     } else {
                         this.$Message.error('API error!')
                         this.$Message.error('API error!')
                     }
                     }

+ 117 - 105
TEAMModelOS/ClientApp/src/view/learnactivity/CreatePrivEva.vue

@@ -30,7 +30,7 @@
                             </FormItem>
                             </FormItem>
                             <FormItem :label="$t('learnActivity.createEv.courseType')" prop="course">
                             <FormItem :label="$t('learnActivity.createEv.courseType')" prop="course">
                                 <Select v-model="evaluationInfo.scope" @on-change="resetCourse">
                                 <Select v-model="evaluationInfo.scope" @on-change="resetCourse">
-                                    <Option value="teacher">{{$t('learnActivity.createEv.cusLabel1')}}</Option>
+                                    <Option value="school">{{$t('learnActivity.createEv.cusLabel1')}}</Option>
                                     <Option value="private">{{$t('learnActivity.createEv.cusLabel2')}}</Option>
                                     <Option value="private">{{$t('learnActivity.createEv.cusLabel2')}}</Option>
                                 </Select>
                                 </Select>
                             </FormItem>
                             </FormItem>
@@ -111,53 +111,55 @@ export default {
                 lazy: true,
                 lazy: true,
                 lazyLoad(node, resolve) {
                 lazyLoad(node, resolve) {
                     const { level } = node
                     const { level } = node
-                    let scope = _this.evaluationInfo.scope == "teacher" ? 'school' : 'teacher'
-                    if (level == 0) {
-                        if (_this.courseList.length == 0) {
-                            let requestData = {
-                                'code': _this.$store.state.userInfo.TEAMModelId,
-                                'schoolId': _this.$store.state.userInfo.schoolCode,
-                                'scope': 'private'
-                            }
-                            _this.$api.courseMgmt.findCourse(requestData).then(
-                                (res) => {
-                                    if (res.error == null) {
-                                        _this.courseList = res.courses
-                                        let scope = _this.evaluationInfo.scope == "teacher" ? 'school' : 'teacher'
-                                        let curCus = _this.courseList.filter(item => {
-                                            return item.scope == scope
-                                        })
-                                        let nodes = curCus.map(item => {
-                                            return {
-                                                value: item.id,
-                                                label: item.name,
-                                                leaf: level >= 1
-                                            }
-                                        })
-                                        resolve(nodes)
-                                    } else {
-                                        _this.$Message.error('API ERROR!')
-                                    }
-                                },
-                                (err) => {
+                    let scope = _this.evaluationInfo.scope
+                    // 一级菜单首次加载
+                    if (level == 0 && _this.courseList.length == 0) {
+                        let requestData = {
+                            'code': _this.$store.state.userInfo.TEAMModelId,
+                            'schoolId': _this.$store.state.userInfo.schoolCode,
+                            'scope': 'private'
+                        }
+                        _this.$api.courseMgmt.findCourse(requestData).then(
+                            (res) => {
+                                if (res.error) {
                                     _this.$Message.error('API ERROR!')
                                     _this.$Message.error('API ERROR!')
+                                    return
                                 }
                                 }
-                            )
-                        } else {
-
-                            let curCus = _this.courseList.filter(item => {
-                                return item.scope == scope
-                            })
-                            let nodes = curCus.map(item => {
-                                return {
-                                    value: item.id,
-                                    label: item.name,
-                                    leaf: true
-                                }
-                            })
-                            resolve(nodes)
-                        }
-                    } else if (level == 1) {
+                                _this.courseList = res.courses
+                                let scope = _this.evaluationInfo.scope
+                                let curCus = _this.courseList.filter(item => {
+                                    return item.scope == scope
+                                })
+                                let nodes = curCus.map(item => {
+                                    return {
+                                        value: item.id,
+                                        label: item.name,
+                                        leaf: level >= 1
+                                    }
+                                })
+                                resolve(nodes)
+                            },
+                            (err) => {
+                                _this.$Message.error('API ERROR!')
+                            }
+                        )
+                    }
+                    // 一级菜单非首次加载
+                    else if (level == 0 && _this.courseList.length > 0) {
+                        let curCus = _this.courseList.filter(item => {
+                            return item.scope == scope
+                        })
+                        let nodes = curCus.map(item => {
+                            return {
+                                value: item.id,
+                                label: item.name,
+                                leaf: true
+                            }
+                        })
+                        resolve(nodes)
+                    }
+                    // 加载二级菜单
+                    else if (level == 1) {
                         console.log(node)
                         console.log(node)
                         let course = node.data
                         let course = node.data
                         let requestData = {
                         let requestData = {
@@ -166,67 +168,68 @@ export default {
                             'id': course.value
                             'id': course.value
                         }
                         }
                         _this.$api.courseMgmt.findCusInfo(requestData).then(
                         _this.$api.courseMgmt.findCusInfo(requestData).then(
-                            (res) => {
-                                if (!res.error) {
-                                    if (res.courses && res.courses.length > 0) {
-                                        res.courses[0].schedule = res.courses[0].schedule ? res.courses[0].schedule : []
-                                        res.courses[0].schedule.forEach(item => {
-                                            if (item.classId) {
-                                                let classInfo = _this.schoolClassList.find(classItem => {
-                                                    return classItem.id == item.classId
-                                                })
-                                                if (classInfo) {
-                                                    item.classInfo = {
-                                                        id: item.classId,
-                                                        name: classInfo.name
-                                                    }
-                                                } else {
-                                                    item.classInfo = {
-                                                        id: item.classId,
-                                                        name: '未找到'
-                                                    }
-                                                }
-                                            }
-                                            if (item.stulist) {
-                                                let listInfo = _this.stuList.find(listItem => {
-                                                    return listItem.id == item.stulist
-                                                })
-                                                if (listInfo) {
-                                                    item.listName = listInfo.name
-                                                } else {
-                                                    item.listName = '未找到对应名单'
-                                                }
-                                            }
-
-                                        })
+                            async (res) => {
+                                if (res.error) {
+                                    resolve([])
+                                    return
+                                }
+                                // 获取自定义名单信息
+                                let ids = res.courses[0].schedule.map(item => {
+                                    return item.stulist
+                                })
+                                for (let i = 0; i < ids.length; i++) {
+                                    if (!ids[i]) {
+                                        ids.splice(i, 1)
+                                        i--
                                     }
                                     }
-                                    let schedule = res.courses[0].schedule.filter(item => {
-                                        return item.teacher.id == _this.$store.state.userInfo.TEAMModelId //teacherId尚未处理,暂时用teacher.id
-                                    })
-                                    console.log('***',schedule)
-                                    let nodes = schedule.map(item => {
-                                        return {
-                                            value: item.stulist || item.classId,
-                                            label: item.listName || item.classInfo.name,
-                                            leaf: false
+                                }
+                                if (ids.length) {
+                                    try {
+                                        let listRes = await _this.getListInfo([...ids])
+                                        if (listRes) _this.stuList.push(...listRes.stuList)
+                                    } catch (e) {
+                                        _this.$Message.error('获取自定义名单失败')
+                                    }
+                                }
+
+                                if (res.courses && res.courses.length > 0) {
+                                    res.courses[0].schedule = res.courses[0].schedule ? res.courses[0].schedule : []
+                                    res.courses[0].schedule.forEach(item => {
+                                        // 补充教室信息
+                                        if (item.classId) {
+                                            let classInfo = _this.schoolClassList.find(classItem => {
+                                                return classItem.id == item.classId
+                                            })
+                                            item.classInfo = {
+                                                id: item.classId,
+                                                name: classInfo ? `${classInfo.name}(默认名单)` : '--'
+                                            }
+                                        }
+                                        // 补充名单信息
+                                        if (item.stulist) {
+                                            let listInfo = _this.stuList.find(listItem => {
+                                                return listItem.id == item.stulist
+                                            })
+                                            item.listName = listInfo ? `${listInfo.name}(自定义名单)` : '--'
                                         }
                                         }
                                     })
                                     })
-                                    resolve(nodes)
                                 }
                                 }
+                                let schedule = res.courses[0].schedule.filter(item => {
+                                    return item.teacherId == _this.$store.state.userInfo.TEAMModelId && (item.stulist || item.classId)
+                                })
+                                let nodes = schedule.map(item => {
+                                    return {
+                                        value: item.stulist || item.classId,
+                                        label: item.listName || item.classInfo.name,
+                                        leaf: level >= 1
+                                    }
+                                })
+                                resolve(nodes)
                             }
                             }
                         )
                         )
+                    } else {
+                        resolve([])
                     }
                     }
-
-                    // setTimeout(() => {
-                    //     const nodes = Array.from({ length: level + 1 })
-                    //         .map(item => ({
-                    //             value: ++id,
-                    //             label: `选项${id}`,
-                    //             leaf: level >= 2
-                    //         }));
-                    //     // 通过调用resolve将子节点数据返回,通知组件数据加载完成
-                    //     resolve(nodes);
-                    // }, 1000);
                 }
                 }
             },
             },
             schoolBase: {
             schoolBase: {
@@ -277,7 +280,7 @@ export default {
                 name: '',
                 name: '',
                 targets: [],
                 targets: [],
                 targetClassIds: [],
                 targetClassIds: [],
-                scope: 'teacher',
+                scope: 'school',
                 type: '',  //测试类别
                 type: '',  //测试类别
                 source: '',
                 source: '',
                 publish: '0',
                 publish: '0',
@@ -288,11 +291,20 @@ export default {
                 papers: []
                 papers: []
             },
             },
             mode: '',
             mode: '',
-            selectBefore: []
+            selectBefore: [],
+            stuList: []
         }
         }
     },
     },
     methods: {
     methods: {
-
+        //根据id获取stulist信息
+        getListInfo(ids) {
+            let requestData = {
+                'code': this.evaluationInfo.scope == 'school' ? this.$store.state.userInfo.schoolCode : this.$store.state.userInfo.TEAMModelId,
+                'scope': this.evaluationInfo.scope,
+                'ids': ids
+            }
+            return this.$api.courseMgmt.findListSummary(requestData)
+        },
         //重置课程类型
         //重置课程类型
         resetCourse() {
         resetCourse() {
             this.evaluationInfo.targets = []
             this.evaluationInfo.targets = []
@@ -510,7 +522,7 @@ export default {
             //设置测试“学科”
             //设置测试“学科”
             this.evaluationInfo.subjects = []
             this.evaluationInfo.subjects = []
             if (this.evaluationInfo.targets.length) {
             if (this.evaluationInfo.targets.length) {
-                if (this.evaluationInfo.scope == 'teacher') {
+                if (this.evaluationInfo.scope == 'school') {
                     let res = this.schoolTree.filter(item => {
                     let res = this.schoolTree.filter(item => {
                         return item.value == this.evaluationInfo.targets[0][0]
                         return item.value == this.evaluationInfo.targets[0][0]
                     })
                     })
@@ -655,7 +667,7 @@ export default {
                 endTime: this.evaluationInfo.endTime,
                 endTime: this.evaluationInfo.endTime,
                 scope: this.evaluationInfo.scope,
                 scope: this.evaluationInfo.scope,
                 createDate: Math.round(new Date()),
                 createDate: Math.round(new Date()),
-                owner: this.evaluationInfo.scope == 'teacher' ? this.$store.state.userInfo.schoolCode : this.$store.state.userInfo.TEAMModelId //后面新增字段
+                owner: this.evaluationInfo.scope == 'school' ? this.$store.state.userInfo.schoolCode : this.$store.state.userInfo.TEAMModelId //后面新增字段
             }
             }
 
 
             this.$api.learnActivity.SaveExamInfo(requestData).then(
             this.$api.learnActivity.SaveExamInfo(requestData).then(

+ 5 - 1
TEAMModelOS/ClientApp/src/view/learnactivity/Scoring.vue

@@ -268,7 +268,11 @@ export default {
                     if (!this.paperInfo[this.chooseClass]) {
                     if (!this.paperInfo[this.chooseClass]) {
                         this.paperInfo[this.chooseClass] = {}
                         this.paperInfo[this.chooseClass] = {}
                     }
                     }
-                    this.$set(this.paperInfo[this.chooseClass], "students", res.classrooms[0])
+                    let classStu = {
+                        students: res.stus.length ? res.stus[0] : [],
+                        id:this.chooseClass
+                    }
+                    this.$set(this.paperInfo[this.chooseClass], "students", classStu)
                     this.students = []
                     this.students = []
                     this.tableData = []
                     this.tableData = []
                     this.studentScore = []
                     this.studentScore = []

+ 2 - 2
TEAMModelOS/ClientApp/src/view/schoolmgmt/ClassroomSetting/ClassroomSetting.vue

@@ -604,8 +604,8 @@ export default {
                     this.stuLoading = true
                     this.stuLoading = true
                     this.$api.schoolSetting.getClassroomStudent(params).then(
                     this.$api.schoolSetting.getClassroomStudent(params).then(
                         res => {
                         res => {
-                            if (res.classrooms.length > 0) {
-                                this.$set(this.classroomListShow[this.curClassIndex], 'students', res.classrooms[0].students)
+                            if (res.stus.length > 0) {
+                                this.$set(this.classroomListShow[this.curClassIndex], 'students', res.stus[0])
                             }
                             }
                         },
                         },
                         err => {
                         err => {

+ 2 - 2
TEAMModelOS/Controllers/Analysis/AnalysisController.cs

@@ -1805,7 +1805,7 @@ namespace TEAMModelOS.Controllers.Analysis
                     mapClass.Add("classAverage", ClassAverage[indexClass]);
                     mapClass.Add("classAverage", ClassAverage[indexClass]);
                     mapClass.Add("classCount", personCount[indexClass]);
                     mapClass.Add("classCount", personCount[indexClass]);
                     mapClass.Add("classRank", classScores[indexClass].IndexOf(result.studentScores[index].Sum()));
                     mapClass.Add("classRank", classScores[indexClass].IndexOf(result.studentScores[index].Sum()));
-                    mapClass.Add("gradeAverage", Math.Round(totalGrade*1.0 / result.studentIds.Count,2));
+                    mapClass.Add("gradeAverage", result.studentIds.Count > 0 ? Math.Round(totalGrade*1.0 / result.studentIds.Count,2) : 0);
                     mapClass.Add("gradeCount", result.studentIds.Count);
                     mapClass.Add("gradeCount", result.studentIds.Count);
                     mapClass.Add("gradeRank", gradeScores.IndexOf(result.studentScores[index].Sum()));
                     mapClass.Add("gradeRank", gradeScores.IndexOf(result.studentScores[index].Sum()));
                     averageMap.Add(mapClass);
                     averageMap.Add(mapClass);
@@ -1841,7 +1841,7 @@ namespace TEAMModelOS.Controllers.Analysis
                 }
                 }
                 GradeScore.Sort((s1, s2) => { return s2.CompareTo(s1); });
                 GradeScore.Sort((s1, s2) => { return s2.CompareTo(s1); });
                 double ipoint = GradeScore[count];
                 double ipoint = GradeScore[count];
-                return Ok(new { income = ipoint, rankc = classScore.IndexOf(totalScore),rankg = GradeScore.IndexOf(totalScore), classAverage = Math.Round(AllAverage[indexClass],2), gradeAverage = Math.Round(AllAverage.Sum() * 1.0 / cla.Count,2), averageMap }); ;
+                return Ok(new { income = ipoint, rankc = classScore.IndexOf(totalScore),rankg = GradeScore.IndexOf(totalScore), classAverage = Math.Round(AllAverage[indexClass],2), gradeAverage = cla.Count > 0 ? Math.Round(AllAverage.Sum() * 1.0 / cla.Count, 2) : 0, averageMap }); ;
             }
             }
             catch (Exception e)
             catch (Exception e)
             {
             {