Переглянути джерело

Merge branch 'develop' of http://163.228.141.122:3000/TEAMMODEL/TEAMModelOS into develop

jeff 8 місяців тому
батько
коміт
a3b2e4dc5b
23 змінених файлів з 897 додано та 373 видалено
  1. 3 3
      TEAMModelBI/TEAMModelBI.csproj
  2. 391 332
      TEAMModelOS.Extension/HTEX.Test/Controllers/LessonRecordController.cs
  3. 3 3
      TEAMModelOS.Function/TEAMModelOS.Function.csproj
  4. 78 2
      TEAMModelOS.SDK/Models/Cosmos/Common/ArtEvaluation.cs
  5. 4 0
      TEAMModelOS.SDK/Models/Cosmos/Common/ExamClassResult.cs
  6. 254 4
      TEAMModelOS.SDK/Models/Cosmos/Common/LessonRecord.cs
  7. 1 1
      TEAMModelOS.SDK/Models/Cosmos/School/Class.cs
  8. 66 0
      TEAMModelOS.SDK/Models/Cosmos/Student/Student.cs
  9. 52 2
      TEAMModelOS.SDK/Models/Cosmos/Teacher/Teacher.cs
  10. 3 3
      TEAMModelOS.SDK/TEAMModelOS.SDK.csproj
  11. 1 0
      TEAMModelOS/ClientApp/public/lang/en-US.js
  12. 1 0
      TEAMModelOS/ClientApp/public/lang/zh-CN.js
  13. 1 0
      TEAMModelOS/ClientApp/public/lang/zh-TW.js
  14. 1 1
      TEAMModelOS/ClientApp/src/common/BaseQuickPaper.vue
  15. 1 0
      TEAMModelOS/ClientApp/src/view/evaluation/components/BasePaperItemPicker.vue
  16. 9 1
      TEAMModelOS/ClientApp/src/view/evaluation/components/BasePoints.vue
  17. 4 4
      TEAMModelOS/ClientApp/src/view/evaluation/index/CreateExercises.vue
  18. 13 6
      TEAMModelOS/ClientApp/src/view/evaluation/index/CreatePaper.vue
  19. 4 4
      TEAMModelOS/ClientApp/src/view/knowledge-point/index/page.vue
  20. 1 1
      TEAMModelOS/Controllers/Third/IRS/ThirdIRSController.cs
  21. 4 4
      TEAMModelOS/TEAMModelOS.csproj
  22. 1 1
      TEAMModelOS/appsettings.Development.json
  23. 1 1
      TEAMModelOS/appsettings.json

+ 3 - 3
TEAMModelBI/TEAMModelBI.csproj

@@ -65,9 +65,9 @@
 		<SpaRoot>ClientApp\</SpaRoot>
 		<DefaultItemExcludes>$(DefaultItemExcludes);$(SpaRoot)node_modules\**</DefaultItemExcludes>
 		<UserSecretsId>078b5d89-7d90-4f6a-88fc-7d96025990a8</UserSecretsId>
-		<Version>5.2409.4</Version>
-		<AssemblyVersion>5.2409.4.1</AssemblyVersion>
-		<FileVersion>5.2409.4.1</FileVersion>
+		<Version>5.2409.11</Version>
+		<AssemblyVersion>5.2409.11.1</AssemblyVersion>
+		<FileVersion>5.2409.11.1</FileVersion>
 		<Description>TEAMModelBI(BI)</Description>
 		<PackageReleaseNotes>BI版本说明版本切换标记2022000908</PackageReleaseNotes>
 		<PackageId>TEAMModelBI</PackageId>

Різницю між файлами не показано, бо вона завелика
+ 391 - 332
TEAMModelOS.Extension/HTEX.Test/Controllers/LessonRecordController.cs


+ 3 - 3
TEAMModelOS.Function/TEAMModelOS.Function.csproj

@@ -5,9 +5,9 @@
     <OutputType>Exe</OutputType>
     <ImplicitUsings>enable</ImplicitUsings>
     <Nullable>enable</Nullable>
-	<Version>5.2409.4</Version>
-	<AssemblyVersion>5.2409.4.1</AssemblyVersion>
-	<FileVersion>5.2409.4.1</FileVersion>
+	<Version>5.2409.11</Version>
+	<AssemblyVersion>5.2409.11.1</AssemblyVersion>
+	<FileVersion>5.2409.11.1</FileVersion>
 	<PackageId>TEAMModelOS.FunctionV4</PackageId>
 	<Authors>teammodel</Authors>
 	<Company>醍摩豆(成都)信息技术有限公司</Company>

+ 78 - 2
TEAMModelOS.SDK/Models/Cosmos/Common/ArtEvaluation.cs

@@ -8,19 +8,36 @@ using System.Threading.Tasks;
 
 namespace TEAMModelOS.SDK.Models.Cosmos.Common
 {
+    /// <summary>
+    /// 艺术评测基础信息
+    /// </summary>
     public class ArtEvaluation : CosmosEntity
     {
         public ArtEvaluation()
         {
             pk = "Art";           
         }
-
+        /// <summary>
+        /// 评测名称
+        /// </summary>
         public string name { get; set; }
+        /// <summary>
+        /// 学校
+        /// </summary>
         public string school { get; set; }
         //高级设置
         public List<Tasks> settings { get; set; } = new List<Tasks>();
+        /// <summary>
+        /// 创建者
+        /// </summary>
         public string creatorId { get; set; }
+        /// <summary>
+        /// 创建时间
+        /// </summary>
         public long createTime { get; set; }
+        /// <summary>
+        /// 更新时间
+        /// </summary>
         public long updateTime { get; set; }
         //教研类型
         public int type { get; set; } = 0;
@@ -39,8 +56,17 @@ namespace TEAMModelOS.SDK.Models.Cosmos.Common
         /// 发布对象全部信息。由前端操作,用于前端回显发布对象的格式。
         /// </summary>
         public List<JsonElement> targets { get; set; } = new List<JsonElement>();
+        /// <summary>
+        /// 评测进度
+        /// </summary>
         public string progress { get; set; }
+        /// <summary>
+        /// 作业范围
+        /// </summary>
         public string scope { get; set; }
+        /// <summary>
+        /// 评测状态
+        /// </summary>
         public int? status { get; set; } = 0;
         //记录该评测内容下blob大小
         public long? size { get; set; } = 0;
@@ -48,32 +74,82 @@ namespace TEAMModelOS.SDK.Models.Cosmos.Common
         ///发布层级 类型 school  area
         /// </summary>
         public string owner { get; set; }
+        /// <summary>
+        /// 区域id
+        /// </summary>
         public string areaId { get; set; }
         public string pId { get; set; }
+        /// <summary>
+        /// 宣传人
+        /// </summary>
         public string presenter { get; set; }
+        /// <summary>
+        /// 专题
+        /// </summary>
         public string topic { get; set; }
+        /// <summary>
+        /// 评测开始时间
+        /// </summary>
         public long startTime { get; set; }
+        /// <summary>
+        /// 评测结束时间
+        /// </summary>
         public long endTime { get; set; }
+        /// <summary>
+        /// 上传开始时间
+        /// </summary>
         public long uploadSTime { get; set; }
+        /// <summary>
+        /// 上传结束时间
+        /// </summary>
         public long uploadETime { get; set; }
+        /// <summary>
+        /// 上传进度
+        /// </summary>
         public string uploadProgress { get; set; }
+        /// <summary>
+        /// //地址
+        /// </summary>
         public string address { get; set; }
         //培训内容
         public string desc { get; set; }
+        /// <summary>
+        /// 图片
+        /// </summary>
         public string img { get; set; }
 /*        public string workId { get; set; }
         public string surveyId { get; set; }
         public string examId { get; set; }*/
         //发布层级 0校级,1区级
         public int? publish { get; set; } = 0;
+        /// <summary>
+        /// 艺术学科
+        /// </summary>
         public List<ArtSubject> subjects { get; set; } = new List<ArtSubject>();
+        /// <summary>
+        /// 艺术学段
+        /// </summary>
         public ArtPeriod period { get; set; } = new ArtPeriod();
+        /// <summary>
+        /// 学段类型
+        /// </summary>
         public string periodType { get; set; }
+        /// <summary>
+        /// 缺考学生
+        /// </summary>
         public List<LostStudent> lost { get; set; } = new List<LostStudent>();
         //用来判定是否已经处理过缺考人数逻辑标识
+        /// <summary>
+        /// 缺考标识
+        /// </summary>
         public int? pass { get; set; } = 0;
+        /// <summary>
+        /// 缺考学生标识
+        /// </summary>
         public List<int> miss { get; set; } = new List<int>();
-
+        /// <summary>
+        /// 音乐作品
+        /// </summary>
         public List<Zymusicstd> zymusicstds { get; set; } = new List<Zymusicstd>();
     }
     public class Zymusicstd

+ 4 - 0
TEAMModelOS.SDK/Models/Cosmos/Common/ExamClassResult.cs

@@ -64,6 +64,10 @@ namespace TEAMModelOS.SDK.Models
     {
         public List<List<string>>  studentAnswersArray { get; set; }= new List<List<string>>();
     }
+    public class ExamLessonStudentAnswerArray : ExamClassResult
+    {
+        public List<List<List<string>>> studentAnswersArray { get; set; } = new List<List<List<string>>>();
+    }
     /*    public class PaperSimple {
             public string id { get; set; }
             public string name { get; set; }

+ 254 - 4
TEAMModelOS.SDK/Models/Cosmos/Common/LessonRecord.cs

@@ -455,10 +455,224 @@ namespace TEAMModelOS.SDK.Models
         public List<MeteorScoreSummary> meteor_ScoreSummary { get; set; } = new List<MeteorScoreSummary>();
         public Dictionary<string, Dictionary<string, string>> scoreDetailResult { get; set; } = new Dictionary<string, Dictionary<string, string>>();
         public Dictionary<string, MeteorVoteSummary> meteor_VoteSummary { get; set; } = new Dictionary<string, MeteorVoteSummary>();
-        public Dictionary<string , VoteDetailResult> voteDetailResult { get; set; }
+        public Dictionary<string, VoteDetailResult> voteDetailResult { get; set; } = new Dictionary<string, VoteDetailResult>();
         public MutualSummary mutualSummary { get; set; }
         public Dictionary<string, Dictionary<string, string>> mutualDetailSummary { get; set; } = new Dictionary<string, Dictionary<string, string>>();
     }
+
+    /// <summary>
+    /// 学生课中数据
+    /// </summary>
+    public class StudentLessonData
+    {
+
+        //是否出席
+        public int attend { get; set; }
+        /// <summary>
+        /// 课例id
+        /// </summary>
+        public string? lessonId { get; set; }
+        /// <summary>
+        /// 课程id
+        /// </summary>
+        public string? courseId { get; set; }
+        /// <summary>
+        /// 科目id
+        /// </summary>
+        public string? subjectId { get; set; }
+        /// <summary>
+        /// 学生的学号
+        /// </summary>
+        public string? id { get; set; }
+        /// <summary>
+        /// 学生所在下标
+        /// </summary>
+        public int index { get; set; } = -1;
+        /// <summary>
+        /// 学生座位号
+        /// </summary>
+        public string? seatID { get; set; }
+        /// <summary>
+        /// 小组编号
+        /// </summary>
+        public string? groupId { get; set; }
+        /// <summary>
+        /// 小组下标 ,暂不使用
+        /// </summary>
+        //public int groupIndex { get; set; } = -1;
+
+        /// <summary>
+        /// 学生评测记录相关
+        /// </summary>
+        public List<StudentExamRecord> examRecords { get; set; } = new List<StudentExamRecord>();
+        /// <summary>
+        /// 协作记录
+        /// </summary>
+        public StudentCoworkRecord coworkRecord { get; set; } = new StudentCoworkRecord();
+        /// <summary>
+        /// 互动记录
+        /// </summary>
+        public StudentInteractRecord interactRecord { get; set; } = new StudentInteractRecord();
+        /// <summary>
+        /// 任务记录
+        /// </summary>
+        public StudentTaskRecord taskRecord { get; set; } = new StudentTaskRecord();
+
+
+    }
+
+    /// <summary>
+    /// 学生协作记录
+    /// </summary>
+    public class StudentInteractRecord
+    {
+        /// <summary>
+        /// 学生专属的互动次数,单独设置此字段,因为存在挑人的情况,需要单独设置
+        /// </summary>
+        public int interactRate { get; set; }
+        /// <summary>
+        /// 互动积分
+        /// </summary>
+        public double interactScore { get; set; }
+
+        /// <summary>
+        /// -1表示本次互动未统计分数,0表示本次互动答错为0,大于0 的分数表示本次互动打对为相应的分数。  该分数用于统计成果。
+        /// 互动积分记录[-1,0,10]
+        /// </summary>
+        public List<ItemRecord> interactRecords { get; set; } = new List<ItemRecord>();
+    }
+    /// <summary>
+    /// 学生任务记录
+    /// </summary>
+    public class StudentTaskRecord
+    {
+        /// <summary>
+        /// 协作参与率
+        /// </summary>
+        public double taskRate { get; set; }
+        
+        /// <summary>
+        /// 任务参与记录
+        /// </summary>
+        public List<ItemRecord> itemRecords { get; set; } = new List<ItemRecord>();
+    }
+    /// <summary>
+    /// 学生协作记录
+    /// </summary>
+    public class StudentCoworkRecord
+    {
+        /// <summary>
+        /// 协作参与率
+        /// </summary>
+        public double coworkRate { get; set; }
+        /// <summary>
+        /// 协作得分
+        /// </summary>
+        public double coworkScore { get; set; }
+        /// <summary>
+        /// 协作参与记录
+        /// </summary>
+        public List<ItemRecord> itemRecords { get; set; } = new List<ItemRecord>();
+    }
+    /// <summary>
+    /// 学生课中评测记录
+    /// </summary>
+    public class StudentExamRecord
+    {
+        /// <summary>
+        /// 作答率0 未作答,1,所有题目作答,小数点则表示部分作答。 可纳入学习态度计算,  主观题需要确认 是否会在此写入答案。
+        /// </summary>
+        public double answerRate { get; set; }
+        /// <summary>
+        /// 评测得分
+        /// </summary>
+        public double score { get; set; }
+        /// <summary>
+        /// 评测id
+        /// </summary>
+        public string? examId { get; set; }
+        /// <summary>
+        /// 得分率
+        /// </summary>
+        public double scoreRate { get; set; }
+        /// <summary>
+        /// 配分
+        /// </summary>
+        //  public double allocation { get; set; }
+        /// <summary> 
+        /// 暂不计算,取消{ get; set; }
+        /// 每个题的得分情况
+        /// </summary>
+        public List<ItemRecord> itemRecords /*{ get; set; }*/ = new List<ItemRecord>();
+    }
+
+    public class ItemRecord
+    {
+
+        /// <summary>
+        ///    { "PopQuesLoad", "ReAtmpAnsStrt", "BuzrAns", "BuzrLoad", "PickupResult","SPQStrt" };  //"SPQStrt" 课中评测专用,不参与互动的统计,会重复
+        /// </summary>
+        public string? itemType { get; set; }
+        /// <summary>
+        /// 互动结果权重,纳入学习状态计算
+        /// </summary>
+        public double resultWeight { get; set; }
+        /// <summary>
+        /// 互动结果类型,如:T0没有作答, 没有参与,T1作答错误,有参加,有抢权,TP部分正确,TT作答正确,抢权成功,被抽到
+        /// </summary>
+        public string? resultType { get; set; }
+        /// <summary>
+        ///  互动积分,试题评分
+        /// </summary>
+        public double itemScore { get; set; }
+        /// <summary>
+        /// 基准分值
+        /// </summary>
+        public double criterion { get; set; }
+        /// <summary>
+        /// 是否是小组类型的
+        /// </summary>
+        public bool isGroup { get; set;}
+    }
+    public static class InteractReultType
+    {
+        /// <summary>
+        /// 没有作答, 没有参与0
+        /// </summary>
+        public static readonly string T0 = "T0";
+        /// <summary>
+        /// 作答错误,有参加,有抢权1
+        /// </summary>
+        public static readonly string T1 = "T1";
+        /// <summary>
+        /// 部分正确1.3
+        /// </summary>
+        public static readonly string TP = "TP";
+        /// <summary>
+        /// 作答正确,抢权成功,被抽到1.5
+        /// </summary>
+        public static readonly string TT = "TT";
+
+    }
+    public static class InteractWeight
+    {
+        /// <summary>
+        /// 没有作答, 没有参与0
+        /// </summary>
+        public static readonly double T0 = 0;
+        /// <summary>
+        /// 作答错误,有参加,有抢权1
+        /// </summary>
+        public static readonly double T1 = 1;
+        /// <summary>
+        /// 部分正确1.3
+        /// </summary>
+        public static readonly double TP = 1.3;
+        /// <summary>
+        /// 作答正确,抢权成功,被抽到1.5
+        /// </summary>
+        public static readonly double TT = 1.5;
+    }
     public class MutualSummary
     {
         public string mutualType { get; set;}
@@ -579,7 +793,40 @@ namespace TEAMModelOS.SDK.Models
     public class ExamData 
     {
         public ExamInfo exam { get; set; }
-        public List<ExamClassResultStudentAnswerArray> examClassResult { get; set; } = new List<ExamClassResultStudentAnswerArray>();
+        public List<ExamLessonStudentAnswerArray> examClassResult { get; set; } = new List<ExamLessonStudentAnswerArray>();
+        public LessonPaper paper { get; set; }
+    }
+    public class LessonPaper
+    {
+
+        public List<LessonPaperSlide> slides { get; set; } = new List<LessonPaperSlide>();
+    }
+    public class LessonPaperSlide
+    {
+        /// <summary>
+        /// blob 路徑
+        /// </summary>
+        public string? url { get; set; }
+        /// <summary>
+        /// 題型
+        /// </summary>
+        public string? type { get; set; }
+        /// <summary>
+        /// scoring
+        /// </summary>
+        public LessonPaperSlideScoring? scoring { get; set; }
+    }
+    public class LessonPaperSlideScoring
+    {
+        /// <summary>
+        /// knowledge
+        /// </summary>
+        public List<string> knowledge { get; set; } = new List<string>();
+        /// <summary>
+        /// 答案
+        /// </summary>
+        public List<string> ans { get; set; } = new List<string>();
+
     }
     /// <summary>
     /// IRS.json
@@ -601,7 +848,6 @@ namespace TEAMModelOS.SDK.Models
         public List<string> buzzParticipants { get; set; } = new List<string>();
         public JsonNode question { get; set; }
         public Dictionary<string, List<List<string>>> clientAnswers { get; set; } = new Dictionary<string, List<List<string>>>();
-     
     }
     /// <summary>
     /// TimeLine.json
@@ -621,7 +867,7 @@ namespace TEAMModelOS.SDK.Models
         // public int EventId { get; set; }
         /// <summary>
         /// 事件
-        /// 推送相关 在Push.json处理 DifObjPush 推送给学生 差异化推送   "PushMemberId":[1,4,8,12,17,18,19,23,24,27,32,36]  ,FastPgPush 一推送
+        /// 推送相关 在Push.json处理 DifObjPush 推送给学生 差异化推送   "PushMemberId":[1,4,8,12,17,18,19,23,24,27,32,36]  ,FastPgPush 一推送
         /// 互动相关 在IRS.json处理 'PopQuesLoad'互动问答 , 'ReAtmpAnsStrt' 二次作答 , 'BuzrAns'  抢权(新), 'BuzrLoad'抢权(旧), PickupResult   挑人算不算互动??  读取PickupMemberId "[\r\n  35\r\n]"
         /// 测验相关 在IRS.json处理 SPQStrt 测验模式
         /// 任务相关 在Task.json处理 'WrkSpaceLoad' 作品收集, 'WrkCmp' 作品贴上  是什么操作
@@ -654,6 +900,10 @@ namespace TEAMModelOS.SDK.Models
         /// 挑人的类型
         /// </summary>
         public string PickupType { get; set; }
+        /// <summary>
+        /// 课中评测的id
+        /// </summary>
+        public string ExamId { get; set; }
     }
     public class LearningCategory {
         /// <summary>

+ 1 - 1
TEAMModelOS.SDK/Models/Cosmos/School/Class.cs

@@ -11,7 +11,7 @@ using TEAMModelOS.SDK.DI;
 namespace TEAMModelOS.SDK.Models
 {    
     /// <summary>
-    /// 班级
+    /// 班级信息
     /// </summary>
     public class Class : CosmosEntity
     {

+ 66 - 0
TEAMModelOS.SDK/Models/Cosmos/Student/Student.cs

@@ -28,25 +28,64 @@ namespace TEAMModelOS.SDK.Models
         /// </summary>
         public string imeiType { get; set; }
     }
+    /// <summary>
+    /// 学生
+    /// </summary>
     public class Student : CosmosEntity
     {
+        /// <summary>
+        /// 邮箱
+        /// </summary>
         public string mail { get; set; }
+        /// <summary>
+        /// 手机号
+        /// </summary>
         public string mobile { get; set; }
+        /// <summary>
+        /// 国家
+        /// </summary>
         public string country { get; set; }
+        /// <summary>
+        /// 姓名
+        /// </summary>
         public string name { get; set; }
+        /// <summary>
+        /// 头像
+        /// </summary>
         public string picture { get; set; }
+        /// <summary>
+        /// 学校Id
+        /// </summary>
         public string schoolId { get; set; }
+        /// <summary>
+        /// 密码
+        /// </summary>
         public string pw { get; set; }
+        /// <summary>
+        /// 密码盐值
+        /// </summary>
         public string salt { get; set; }
+        /// <summary>
+        /// 入学年份
+        /// </summary>
         public int year { get; set; }
         //座位号
         public string no { get; set; }   //座位号
+        /// <summary>
+        /// IRS编号
+        /// </summary>
         public string irs { get; set; }
         //绑定班级Id
         public string classId { get; set; }
         //分组信息
         public string groupId { get; set; }
+        /// <summary>
+        /// 分组名称
+        /// </summary>
         public string groupName { get; set; }
+        /// <summary>
+        /// 学段id
+        /// </summary>
         public string periodId { get; set; }
         /// <summary>
         /// 性别 M( male,男) F (female 女)  N(secret 保密) 
@@ -64,6 +103,9 @@ namespace TEAMModelOS.SDK.Models
         /// 创建时间  十位 时间戳
         /// </summary>
         public long createTime { get; set; }
+        /// <summary>
+        /// 学生的监护人信息
+        /// </summary>
         public List<StudentGuardian> guardians { get; set; }= new List<StudentGuardian>();
         /// <summary>
         /// 学生的专业id
@@ -74,6 +116,9 @@ namespace TEAMModelOS.SDK.Models
         /// </summary>
         public string openId { get; set; }
     }
+    /// <summary>
+    /// 监护人
+    /// </summary>
     public class Guardian : CosmosEntity
     {
         //存 Student表
@@ -91,9 +136,21 @@ namespace TEAMModelOS.SDK.Models
         /// 头像
         /// </summary>
         public string picture { get; set; }
+        /// <summary>
+        /// id
+        /// </summary>
         public string tmdid { get; set; }
+        /// <summary>
+        /// 手机号
+        /// </summary>
         public string mobile { get; set; }
+        /// <summary>
+        /// 邮箱
+        /// </summary>
         public string mail { get; set; }
+        /// <summary>
+        /// 学生信息
+        /// </summary>
         public List<GuardianStudent> students { get; set; } = new List<GuardianStudent>();
 
     }
@@ -134,8 +191,17 @@ namespace TEAMModelOS.SDK.Models
         /// 头像
         /// </summary>
         public string picture { get; set; }
+        /// <summary>
+        /// id
+        /// </summary>
         public string tmdid { get; set; }
+        /// <summary>
+        /// 手机号
+        /// </summary>
         public string mobile { get; set; }
+        /// <summary>
+        /// 邮箱
+        /// </summary>
         public string mail { get; set; }
     }
 }

+ 52 - 2
TEAMModelOS.SDK/Models/Cosmos/Teacher/Teacher.cs

@@ -7,12 +7,33 @@ namespace TEAMModelOS.SDK.Models
 {
     public class Teacher : CosmosEntity
     {
+        /// <summary>
+        /// 老師名字
+        /// </summary>
         public string name { get; set; }
+        /// <summary>
+        /// 头像
+        /// </summary>
         public string picture { get; set; }
+        /// <summary>
+        /// 存储大小
+        /// </summary>
         public int size { get; set; }
+        /// <summary>
+        /// 默认学校
+        /// </summary>
         public string defaultSchool { get; set; }
+        /// <summary>
+        /// 默认学段
+        /// </summary>
         public string defaultschoolPeriod { get; set; }
+        /// <summary>
+        ///加入的学校列表
+        /// </summary>
         public List<TeacherSchool> schools { get; set; } = new List<TeacherSchool>();
+        /// <summary>
+        /// 关联区级
+        /// </summary>
         public List<TeacherArea> areas { get; set; } = new List<TeacherArea>();
         public List<ThirdBind> binds { get; set; } = new List<ThirdBind>();
         public int lessonLimit { get; set; } = 0;
@@ -25,10 +46,18 @@ namespace TEAMModelOS.SDK.Models
         /// 保留当天的登录信息
         /// </summary>
         public List<LoginInfo> loginInfos { get; set; } = new List<LoginInfo>();
-
+        /// <summary>
+        /// 语系
+        /// </summary>
         public string lang { get; set; }
+        /// <summary>
+        /// 时区
+        /// </summary>
         public double timezone { get; set; } = 8;
-        public List<string> permission { get; set; } = new List<string>(); //老師個人權限
+        /// <summary>
+        /// 权限
+        /// </summary>
+        public List<string> permission { get; set; } = new List<string>(); 
 
         public class LoginInfo
         {
@@ -47,12 +76,33 @@ namespace TEAMModelOS.SDK.Models
         }
         public class TeacherSchool
         {
+            /// <summary>
+            /// 学校id
+            /// </summary>
             public string schoolId { get; set; }
+            /// <summary>
+            /// 学校名字
+            /// </summary>
             public string name { get; set; }
+            /// <summary>
+            /// 加入状态
+            /// </summary>
             public string status { get; set; }
+            /// <summary>
+            /// 加入时间
+            /// </summary>
             public long time { get; set; }
+            /// <summary>
+            /// 学校logo
+            /// </summary>
             public string picture { get; set; }
+            /// <summary>
+            /// 区域id
+            /// </summary>
             public string areaId { get; set; }
+            /// <summary>
+            /// 角色
+            /// </summary>
             public List<string> roles { get; set; } = new List<string>();
         }
         public class TeacherArea

+ 3 - 3
TEAMModelOS.SDK/TEAMModelOS.SDK.csproj

@@ -1,9 +1,9 @@
 <Project Sdk="Microsoft.NET.Sdk">
 	<PropertyGroup>
 		<TargetFramework>net8.0</TargetFramework>
-		<Version>5.2409.4</Version>
-		<AssemblyVersion>5.2409.4.1</AssemblyVersion>
-		<FileVersion>5.2409.4.1</FileVersion>
+		<Version>5.2409.11</Version>
+		<AssemblyVersion>5.2409.11.1</AssemblyVersion>
+		<FileVersion>5.2409.11.1</FileVersion>
 		<PackageReleaseNotes>发版</PackageReleaseNotes>
 	</PropertyGroup>
 

+ 1 - 0
TEAMModelOS/ClientApp/public/lang/en-US.js

@@ -2710,6 +2710,7 @@ const LANG_EN_US = {
         blockWarning: 'Key concept set name cannot be empty!',
         block: 'Key Concept Set',
         knowledgeP: 'Please enter the name of the key concept',
+        knowledgeP1: 'Please enter the name',
         knowledgeWarning: 'Key concept name cannot be empty!',
         knowledgeRepeat: 'The same name key concept already exists, please do not add it repeatedly.',
         newBlock: 'Add key concept set',

+ 1 - 0
TEAMModelOS/ClientApp/public/lang/zh-CN.js

@@ -2709,6 +2709,7 @@ const LANG_ZH_CN = {
         blockWarning: '知识块名称不能为空!',
         block: '知识块',
         knowledgeP: '请输入知识点名称,必填项',
+        knowledgeP1: '请输入知识点名称',
         knowledgeRepeat: '已存在相同名称知识点,请勿重复添加!',
         knowledgeWarning: '知识点名称不能为空!',
         newBlock: '新增知识块',

+ 1 - 0
TEAMModelOS/ClientApp/public/lang/zh-TW.js

@@ -2712,6 +2712,7 @@ const LANG_ZH_TW = {
         blockWarning: '知識塊名稱不能為空!',
         block: '知識塊',
         knowledgeP: '請輸入知識點名稱,必填項',
+        knowledgeP1: '請輸入知識點名稱',
         knowledgeWarning: '知識點名稱不能為空! ',
         knowledgeRepeat: '已存在相同名稱知識點,請勿重覆新增!',
         newBlock: '新增知識塊',

+ 1 - 1
TEAMModelOS/ClientApp/src/common/BaseQuickPaper.vue

@@ -45,7 +45,7 @@
 				</div>
 			</div>
 		</template>
-		<div class="manual-filter-item" v-else>
+		<div class="manual-filter-item" v-else-if="isSchool && schoolInfo">
 			<span class="manual-filter-label">{{ $t("evaluation.filter.range") }}:</span>
 			<Tag color="blue">{{ condName.periodName }}</Tag>
 			<Tag color="geekblue">{{ condName.subjectName }}</Tag>

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

@@ -160,6 +160,7 @@ export default {
       this.paperIndex = this.paperList.findIndex(i => i.id === paperId[0])
       let fullPaperJson = await this.$evTools.getFullPaper(paper)
       let fullPaperNoCompose = this.isMarkModel ? fullPaperJson.item.filter(item => item.type !== 'compose') : fullPaperJson.item
+      fullPaperNoCompose.forEach(item => item.paperName = paper.name)
       this.questionList = fullPaperNoCompose
       this.originQuestionList = this._.cloneDeep(fullPaperNoCompose)
       this.questionList.forEach(i => {

+ 9 - 1
TEAMModelOS/ClientApp/src/view/evaluation/components/BasePoints.vue

@@ -2,7 +2,7 @@
   <div class="points-container">
     <!-- <Button type="info" class="btn-add-point" @click="addPointsModal = true"
 			v-show="curScope === 'school'">{{$t('evaluation.points.addPoint')}}</Button> -->
-    <div v-if="curScope != 'school'" style="margin-bottom: 10px;">
+    <div v-if="curScope != 'school' && subject" style="margin-bottom: 10px;">
       <span class="manual-filter-label">{{ $t('evaluation.filter.origin') }}:</span>
       <RadioGroup v-model="radioCode" @on-change="onCodeChange">
             <Radio label="private">
@@ -273,6 +273,10 @@ export default {
 
     /** 添加新知识点 */
     onAddNewPoint() {
+      if(!this.newPointName) {
+        this.$Message.warning(this.$t('knowledge.knowledgeP1'))
+        return
+      }
       this.knowledgeTree.push({
         allcids: [],
         children: [],
@@ -377,6 +381,10 @@ export default {
     },
     // 新增知识点事件
     onAddPoint(node, data) {
+        if(!this.newPointName) {
+          this.$Message.warning(this.$t('knowledge.knowledgeP1'))
+          return
+        }
         let idLast2 = data.children.length ? data.children[data.children.length - 1].id : '-0'
         let id2 = idLast2.split(`-`)
         data.children.push({

+ 4 - 4
TEAMModelOS/ClientApp/src/view/evaluation/index/CreateExercises.vue

@@ -136,7 +136,7 @@
     </div>
 
     <Modal v-model="selectPointsModal" :title="$t('evaluation.newExercise.choosePoint')" width="600px" class="related-point-modal" footer-hide style="z-index: 99999">
-      <BasePoints v-if="selectPointsModal" :period="schoolInfo.period[exercisePeriod].id" :subject="subjectList[exerciseSubject].id" @onCheckChange="onCheckChange" @onCancel="selectPointsModal = false" :points="exercisePoints" :scope="curScope" ref="pointRef"></BasePoints>
+      <BasePoints v-if="selectPointsModal" :period="schoolInfo.period ? schoolInfo.period[exercisePeriod].id : ''" :subject="subjectList.length ? subjectList[exerciseSubject].id : ''" @onCheckChange="onCheckChange" @onCancel="selectPointsModal = false" :points="exercisePoints" :scope="curScope" ref="pointRef"></BasePoints>
     </Modal>
 
     <!-- 添加小题弹窗 -->
@@ -284,15 +284,15 @@ export default {
         this.$Message.warning(this.$t('evaluation.completeTip'))
         return
       }
-      if (this.hasSchool) {
+      // if (this.hasSchool) {
         if (this.exersicesType === 'compose') {
           this.$Message.warning(this.$t('evaluation.newExercise.composeTip'))
         } else {
           this.selectPointsModal = true
         }
-      } else {
+      /* } else {
         this.$Message.warning(this.$t('evaluation.newExercise.noSchoolTip'))
-      }
+      } */
     },
 
     onSelectFile(val) {

+ 13 - 6
TEAMModelOS/ClientApp/src/view/evaluation/index/CreatePaper.vue

@@ -1272,13 +1272,20 @@ export default {
                     false).then(res => {
                       r(200)
                     })
-                } else if (item.blob && item.blob.includes('syllabus/')) {
-                  let blobCntr = item.scope == 'school' ? schoolBlob : privateBlob
-                  containerClient.copyFolder('paper/' + paperItem.name + '/',
-                    'syllabus/' + item.nodeId + '/' + item.id, blobCntr, null, false).then(res => {
-                    r(200)
-                  })
                 } else {
+                  if (item.blob && (item.blob.includes('paper/') || item.blob.includes('syllabus/'))) {
+                    let videoSrcList = this.$editorTools.getRichTextSrc(item.question, 'video')
+                    let audioSrcList = this.$editorTools.getRichTextSrc(item.question, 'audio')
+                    let srcList = videoSrcList.concat(audioSrcList)
+                    let curNoSaveArr = JSON.parse(localStorage.getItem('noSave'))
+                    srcList.forEach(src => {
+                      curNoSaveArr.push({
+                        path: item.blob.includes('paper/') ? `/paper/${item.paperName}/${src}` : `/syllabus/${item.nodeId}/${item.id}/${src}`, //旧文件的相对地址
+                        scope: item.scope
+                      })
+                    })
+                    localStorage.setItem('noSave', JSON.stringify(curNoSaveArr))
+                  }
                   const itemJsonFile = await this.$evTools
                     .createBlobItem(item)
                   let file = new File([JSON.stringify(itemJsonFile)],

+ 4 - 4
TEAMModelOS/ClientApp/src/view/knowledge-point/index/page.vue

@@ -5,7 +5,7 @@
             <div class="new-syllabus-select">
                 <span style="font-size: 14px;">{{$t('knowledge.title')}}</span>
             </div>
-            <Button type="success" v-if="$access.ability('admin','knowledge-upd').validateAll && updated" class="school-tools ivu-btn ivu-btn-default" icon="ios-albums-outline" @click="saveData()">
+            <Button type="success" v-if="(isSchool ? $access.ability('admin','knowledge-upd').validateAll : true) && updated" class="school-tools ivu-btn ivu-btn-default" icon="ios-albums-outline" @click="saveData()">
                 {{ $t('schoolBaseInfo.saveInfo') }}
             </Button>
             <div class="bank-tools-btn" @click="changeStatus()">
@@ -163,9 +163,9 @@
                                         </Tooltip> -->
                                     </span>
                                     <span class="custom-tree-tools">
-                                        <Icon type="md-create" :title="$t('knowledge.edit')" v-if="$access.can('admin.*|knowledge-upd') || tabIndex === 1" @click.stop="onEditPoint(node, data)" />
-                                        <Icon type="md-trash" :title="$t('knowledge.delete')" v-if="$access.can('admin.*|knowledge-upd') || tabIndex === 1" @click.stop="onDeletePoint(node, data)" />
-                                        <Icon type="md-add" :title="$t('knowledge.moveBlock')" v-if="$access.can('admin.*|knowledge-upd') && node.level < 4" @click.stop="onAddPoint(node, data)" />
+                                        <Icon type="md-create" :title="$t('knowledge.edit')" v-if="(isSchool ? ($access.can('admin.*|knowledge-upd')) : true) || tabIndex === 1" @click.stop="onEditPoint(node, data)" />
+                                        <Icon type="md-trash" :title="$t('knowledge.delete')" v-if="(isSchool ? ($access.can('admin.*|knowledge-upd')) : true) || tabIndex === 1" @click.stop="onDeletePoint(node, data)" />
+                                        <Icon type="md-add" :title="$t('knowledge.addPoint')" v-if="(isSchool ? ($access.can('admin.*|knowledge-upd')) : true) && node.level < 4" @click.stop="onAddPoint(node, data)" />
                                     </span>
                                 </span>
                             </el-tree>

+ 1 - 1
TEAMModelOS/Controllers/Third/IRS/ThirdIRSController.cs

@@ -183,7 +183,7 @@ namespace TEAMModelOS.Controllers
         [HttpPost("third-irs/receive-139zhxy")]
         public async Task<IActionResult> Receive_139zhxy(JsonElement json)
         {
-         //   await _dingDing.SendBotMsg($"收到,接收到 139zhxy反馈器推送信息!{json.ToJsonString()}\n", GroupNames.成都开发測試群組);
+            await _dingDing.SendBotMsg($"收到,接收到 139zhxy反馈器推送信息!{json.ToJsonString()}\n", GroupNames.成都开发測試群組);
             string sign = string.Empty, timestamp = string.Empty, message="请求失败";
             int code = -1;
             long now =  DateTimeOffset.UtcNow.GetGMTTime(8).ToUnixTimeMilliseconds();

+ 4 - 4
TEAMModelOS/TEAMModelOS.csproj

@@ -80,11 +80,11 @@
 		<SpaRoot>ClientApp\</SpaRoot>
 		<DefaultItemExcludes>$(DefaultItemExcludes);$(SpaRoot)node_modules\**</DefaultItemExcludes>
 		<UserSecretsId>078b5d89-7d90-4f6a-88fc-7d96025990a8</UserSecretsId>
-		<Version>5.2409.4</Version>
-		<AssemblyVersion>5.2409.4.1</AssemblyVersion>
-		<FileVersion>5.2409.4.1</FileVersion>
+		<Version>5.2409.11</Version>
+		<AssemblyVersion>5.2409.11.1</AssemblyVersion>
+		<FileVersion>5.2409.11.1</FileVersion>
 		<Description>TEAMModelOS(IES5)</Description>
-		<PackageReleaseNotes>IES版本说明版本切换标记5.2409.4.1</PackageReleaseNotes>
+		<PackageReleaseNotes>IES版本说明版本切换标记5.2409.11.1</PackageReleaseNotes>
 		<PackageId>TEAMModelOS</PackageId>
 		<Authors>teammodel</Authors>
 		<Company>醍摩豆(成都)信息技术有限公司</Company>

+ 1 - 1
TEAMModelOS/appsettings.Development.json

@@ -18,7 +18,7 @@
     "IdTokenSalt": "8263692E2213497BB55E74792B7900B4",
     "HttpTrigger": "https://teammodelosfunction-test.chinacloudsites.cn/api/",
     //"HttpTrigger": "http://localhost:7071/api/"
-    "Version": "5.2409.4.1"
+    "Version": "5.2409.11.1"
   },
   "Azure": {
     // 测试站数据库

+ 1 - 1
TEAMModelOS/appsettings.json

@@ -18,7 +18,7 @@
     "Exp": 86400,
     "IdTokenSalt": "8263692E2213497BB55E74792B7900B4",
     "HttpTrigger": "https://teammodelosfunction.chinacloudsites.cn/api/",
-    "Version": "5.2409.4.1"
+    "Version": "5.2409.11.1"
   },
   "Azure": {
     "Storage": {