Browse Source

合併衝突

JAELYS 3 years ago
parent
commit
1183c16fa6

+ 8 - 2
TEAMModelOS.FunctionV4/HttpTrigger/IESHttpTrigger.cs

@@ -469,10 +469,16 @@ namespace TEAMModelOS.FunctionV4.HttpTrigger
                     try {
 
                     string tbScHourSql = $"PartitionKey eq 'HourLogin-{school}' and RowKey le '{delTbHour}'";
-                    await table.DeleteStringWhere<HourLogin>(tbScHourSql); //删除学校168小时前的数据
+                    List<HourLogin> scHourLog = await table.QueryWhereString<HourLogin>(tbScHourSql);
+                    if (scHourLog.Count > 0)
+                        //await table.DeleteStringWhere<HourLogin>(tbScHourSql); //删除学校168小时前的数据
+                        await table.DeleteAll(scHourLog);
 
                     string tbScDaySql = $"PartitionKey eq 'DayLogin-{school}' and RowKey le '{delTbDay}'";
-                    await table.DeleteStringWhere<DayLogin>(tbScDaySql); //删除学校180天前的数据
+                    List<DayLogin> scDayLog = await table.QueryWhereString<DayLogin>(tbScDaySql);
+                    if (scDayLog.Count > 0)
+                        await table.DeleteAll(scDayLog);
+                        //await table.DeleteStringWhere<DayLogin>(tbScDaySql); //删除学校180天前的数据
                 }
 
                 await response.WriteAsJsonAsync(new { data = json });

+ 12 - 5
TEAMModelOS.SDK/Models/Cosmos/Common/StudentScoreRecord.cs

@@ -14,14 +14,16 @@ namespace TEAMModelOS.SDK.Models.Cosmos.Common
         // id  雪花id
         //code  LessonStudentRecord[-学校编码],  LessonStudentRecord
         //其他基础信息
-        public StudentScoreRecord() {
+        public StudentScoreRecord()
+        {
             pk = "StudentScoreRecord";
         }
         public string stuid { get; set; }
         public string tmdid { get; set; }
+        public string userType { get; set; }
         public string school { get; set; }
         public int year { get; set; }
-        
+
         public List<StudentLessonRecord> lessonRecords { get; set; } = new List<StudentLessonRecord>();
         //单独记录 组计分,个人积分,互动分,
         public double gscore { get; set; } //组计分
@@ -30,12 +32,13 @@ namespace TEAMModelOS.SDK.Models.Cosmos.Common
     }
 
 
-    public class StudentLessonRecord {
+    public class StudentLessonRecord
+    {
         /// <summary>
         ///必填 教师醍摩豆id
         /// </summary>
         public string tmdid { get; set; }
-       // public string tmdname { get; set; }
+        // public string tmdname { get; set; }
         /// <summary>
         ///必填 课堂名称
         /// </summary>
@@ -69,10 +72,14 @@ namespace TEAMModelOS.SDK.Models.Cosmos.Common
         public double pscore { get; set; }  //个人计分
         public double tscore { get; set; } //互动计分
         /// <summary>
+        /// 课例时间
+        /// </summary>
+        public long time { get; set; }
+        /// <summary>
         /// 名单信息
         /// </summary>
         //public List<string> groupIds { get; set; } = new List<string>();
     }
-   
+
 
 }

+ 49 - 30
TEAMModelOS.SDK/Models/Service/LessonService.cs

@@ -17,11 +17,12 @@ namespace TEAMModelOS.SDK.Models.Service
 {
     public class LessonService
     {
-        public static async void DoLessonStudentRecord(DingDing _dingding , SnowflakeId snowflakeId, LessonRecord lessonRecord, string scope, CosmosClient client, string school, string tmdid,
+        public static async void DoLessonStudentRecord(DingDing _dingding, SnowflakeId snowflakeId, LessonRecord lessonRecord, string scope, CosmosClient client, string school, string tmdid,
             Teacher teacher, NotificationService _notificationService, AzureServiceBusFactory _serviceBus, AzureStorageFactory _azureStorage, IConfiguration _configuration, LessonBase lessonBase)
         {
 
-            try {
+            try
+            {
                 int year = DateTimeOffset.UtcNow.Year;
                 var clientSummaryList = lessonBase.report.clientSummaryList.Where(x => x.groupTaskCompleteCount != 0 || x.groupScore != 0 || x.score != 0 || x.tnteractScore != 0 || x.taskCompleteCount != 0);
                 IEnumerable<LessonStudent> students = new List<LessonStudent>();
@@ -59,12 +60,13 @@ namespace TEAMModelOS.SDK.Models.Service
                 }
                 List<Task<ItemResponse<StudentScoreRecord>>> records = new List<Task<ItemResponse<StudentScoreRecord>>>();
                 stuids.ToList().ForEach(x => {
-                    var record = lessonStudentRecords.Find(l => l.id.Equals(x.id) && l.code.Equals($"StudentScoreRecord") && l.school.Equals(x.school) );
+                    var record = lessonStudentRecords.Find(l => l.id.Equals(x.id) && l.code.Equals($"StudentScoreRecord") && l.school.Equals(x.school));
                     ClientSummaryList clientSummaryList = lessonBase.report.clientSummaryList.Find(c => c.seatID == x.seatID);
                     if (record != null)
                     {
                         if (clientSummaryList != null)
                         {
+                            //排查重复课例的数据。》》》》》》》》》》》》》》》》》》》》》
                             record.lessonRecords.Add(
                                  new StudentLessonRecord
                                  {
@@ -78,15 +80,17 @@ namespace TEAMModelOS.SDK.Models.Service
                                      courseId = lessonRecord.courseId,
                                      periodId = lessonRecord.periodId,
                                      subjectId = lessonRecord.subjectId,
+                                     time = lessonRecord.startTime
                                  }
                              );
                         }
                     }
                     else
                     {
-
+                        //排查重复课例的数据。》》》》》》》》》》》》》》》》》》》》》
                         record = new StudentScoreRecord
                         {
+                            userType = Constant.ScopeStudent,
                             id = $"{snowflakeId.NextId()}",
                             year = year,
                             stuid = x.id,
@@ -110,6 +114,10 @@ namespace TEAMModelOS.SDK.Models.Service
                         };
 
                     }
+                    record.userType = Constant.ScopeStudent;
+                    record.gscore = record.lessonRecords.Select(x => x.gscore).Sum();
+                    record.pscore = record.lessonRecords.Select(x => x.pscore).Sum();
+                    record.tscore = record.lessonRecords.Select(x => x.tscore).Sum();
                     records.Add(client.GetContainer(Constant.TEAMModelOS, Constant.Student).UpsertItemAsync(record, partitionKey: new PartitionKey(record.code)));
                 });
                 tmdids.ToList().ForEach(x => {
@@ -118,7 +126,7 @@ namespace TEAMModelOS.SDK.Models.Service
                     if (record != null)
                     {
                         if (clientSummaryList != null)
-                        {
+                        {  //排查重复课例的数据。》》》》》》》》》》》》》》》》》》》》》
                             record.lessonRecords.Add(
                             new StudentLessonRecord
                             {
@@ -136,18 +144,20 @@ namespace TEAMModelOS.SDK.Models.Service
                         }
                     }
                     else
-                    {
+                    {  //排查重复课例的数据。》》》》》》》》》》》》》》》》》》》》》
                         record = new StudentScoreRecord
                         {
+                            userType = Constant.ScopeTmdUser,
                             id = $"{snowflakeId.NextId()}",
                             code = $"StudentScoreRecord",
                             pk = "StudentScoreRecord",
                             ttl = -1,
                             year = year,
                             tmdid = x.id,
-                            lessonRecords = new List<StudentLessonRecord> {
-                            new StudentLessonRecord
-                             {
+                            lessonRecords = new List<StudentLessonRecord> 
+                            {
+                                new StudentLessonRecord
+                                {
                                  gscore = clientSummaryList.groupScore,
                                  pscore = clientSummaryList.score,
                                  tscore = clientSummaryList.tnteractScore,
@@ -158,10 +168,11 @@ namespace TEAMModelOS.SDK.Models.Service
                                  courseId = lessonRecord.courseId,
                                  periodId = lessonRecord.periodId,
                                  subjectId = lessonRecord.subjectId,
+                                }
                             }
-                        }
                         };
                     }
+                    record.userType = Constant.ScopeStudent;
                     record.gscore = record.lessonRecords.Select(x => x.gscore).Sum();
                     record.pscore = record.lessonRecords.Select(x => x.pscore).Sum();
                     record.tscore = record.lessonRecords.Select(x => x.tscore).Sum();
@@ -171,13 +182,16 @@ namespace TEAMModelOS.SDK.Models.Service
                 {
                     await Task.WhenAll(records);
                 }
-            } catch (Exception ex ) {
-                await  _dingding.SendBotMsg($"学生个人课例统计信息异常,{ex.Message}\n{ex.StackTrace}",GroupNames.醍摩豆服務運維群組);
+            }
+            catch (Exception ex)
+            {
+                await _dingding.SendBotMsg($"学生个人课例统计信息异常,{ex.Message}\n{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
             }
         }
 
-        public static async void DoAutoDeleteSchoolLessonRecord(LessonRecord lessonRecord,string  scope ,CosmosClient client,string school,string tmdid,
-            Teacher teacher, NotificationService _notificationService, AzureServiceBusFactory _serviceBus, AzureStorageFactory _azureStorage, IConfiguration _configuration) {
+        public static async void DoAutoDeleteSchoolLessonRecord(LessonRecord lessonRecord, string scope, CosmosClient client, string school, string tmdid,
+            Teacher teacher, NotificationService _notificationService, AzureServiceBusFactory _serviceBus, AzureStorageFactory _azureStorage, IConfiguration _configuration)
+        {
             if (lessonRecord.scope.Equals("school"))
             {
                 SchoolSetting setting = null;
@@ -203,7 +217,7 @@ namespace TEAMModelOS.SDK.Models.Service
                 {
                     setting = new SchoolSetting() { lessonSetting = new LessonSetting { openAutoClean = 0, expireDays = Constant.school_lesson_expire } };
                 }
-                int school_lesson_expire =0;
+                int school_lesson_expire = 0;
                 bool save = true;
                 List<string> msg = new List<string>();
                 if (setting.lessonSetting.openAutoClean == 1)
@@ -212,7 +226,8 @@ namespace TEAMModelOS.SDK.Models.Service
                     {
                         save = false;
                     }
-                    else {
+                    else
+                    {
                         school_lesson_expire = setting.lessonSetting.expireDays;
                         foreach (var item in setting.lessonSetting.conds)
                         {
@@ -386,7 +401,8 @@ namespace TEAMModelOS.SDK.Models.Service
                         }
                     }
                 }
-                else {
+                else
+                {
                     save = false;
                     school_lesson_expire = Constant.school_lesson_expire;
                 }
@@ -401,14 +417,14 @@ namespace TEAMModelOS.SDK.Models.Service
                     //result.Add(3, day3);
                     //剩余1天的通知
                     var day1 = now.AddDays(school_lesson_expire - (school_lesson_expire - 1)).ToUnixTimeMilliseconds();
-                    result.Add(1, new ExpireTag { expire= day1 ,tag= "notification" });
+                    result.Add(1, new ExpireTag { expire = day1, tag = "notification" });
                     //到期通知
                     //不到五点上传的课例,七天之后直接删除。
                     int addSecond = 0;
                     if (now.Hour > 5)
                     {
                         // 到凌晨00点还差 (24 - now.Hour) *60 * 60 分钟,再加天数;
-                        addSecond = school_lesson_expire * 86400 + (24 - now.Hour) * 3600-(now.Hour* 3600);
+                        addSecond = school_lesson_expire * 86400 + (24 - now.Hour) * 3600 - (now.Hour * 3600);
                         //再加 00到05小时内的 随机秒数
                         Random rand = new Random();
                         int randInt = rand.Next(0, 18000);
@@ -420,13 +436,13 @@ namespace TEAMModelOS.SDK.Models.Service
                     }
                     lessonRecord.expire = now.AddSeconds(addSecond).ToUnixTimeMilliseconds();
                     result.Add(school_lesson_expire, new ExpireTag { expire = lessonRecord.expire, tag = "delete" });
-                   // result.Add(school_lesson_expire, lessonRecord.expire);
+                    // result.Add(school_lesson_expire, lessonRecord.expire);
                     string biz = "expire";
                     Notification notification = new Notification
                     {
                         hubName = "hita",
                         type = "msg",
-                        from = $"ies5:{ Environment.GetEnvironmentVariable("Option:Location")}:private",
+                        from = $"ies5:{Environment.GetEnvironmentVariable("Option:Location")}:private",
                         to = new List<string> { tmdid },
                         label = $"{biz}_lessonRecord",
                         body = new
@@ -491,7 +507,8 @@ namespace TEAMModelOS.SDK.Models.Service
                         }
                     }
                 }
-                else {
+                else
+                {
 
                     if (lessonRecord.expire > 0)
                     {
@@ -517,7 +534,8 @@ namespace TEAMModelOS.SDK.Models.Service
         }
 
 
-        public record ExpireTag {
+        public record ExpireTag
+        {
             public long expire { get; set; }
             public string tag { get; set; }
         }
@@ -536,7 +554,7 @@ namespace TEAMModelOS.SDK.Models.Service
                 lessonDis.record = 1;
             }
             //删除数据的情况
-           //不再对LessonCount进行减
+            //不再对LessonCount进行减
             else if (oldRecord != null && newRecord == null)
             {
                 /*lessonDis.record = -1;
@@ -679,11 +697,12 @@ namespace TEAMModelOS.SDK.Models.Service
                         code = $"LessonCount-{data.school}-{year}";
                         tbname = "School";
                     }
-                    else {
+                    else
+                    {
                         code = $"LessonCount-{data.school}-{year}-{data.periodId}";
                         tbname = "School";
                     }
-                    
+
                 }
                 else
                 {
@@ -712,10 +731,10 @@ namespace TEAMModelOS.SDK.Models.Service
                         ttl = -1
                     };
                     double[] da = new double[days];
-                    List<double> list = new (da);
-                    List<double> listT = new (da);
-                    List<double> listP = new (da);
-                    List<double> listPT = new (da);
+                    List<double> list = new(da);
+                    List<double> listT = new(da);
+                    List<double> listP = new(da);
+                    List<double> listPT = new(da);
 
                     list[day - 1] += lessonDis.record;
                     listT[day - 1] += lessonDis.disTCount;

File diff suppressed because it is too large
+ 138 - 135
TEAMModelOS/ClientApp/public/lang/en-US.js


+ 88 - 85
TEAMModelOS/ClientApp/public/lang/zh-CN.js

@@ -382,66 +382,69 @@ const LANG_ZH_CN = {
         toAuth: '前往授权',
         periodInfo1: '学校学段数量',
         periodInfo2: '学校学院数量',
-        searchSerial: '搜索序列号',
-        noDeviceName: '暂无设备名称',
-        noClassId: '未关联教室',
-        rltClass: '关联教室',
-        unrltClass: '解绑教室',
-        unbdDeviceCont: '确认解绑当前设备吗?',
-        unbdOk: '解绑成功',
-        unbdErr1: '设备ID错误',
-        unbdErr2: '序列号异常',
-        unMatchRoom: '未匹配到教室',
-        deviceName: '设备名称:',
-        bandOk: '绑定成功',
-        bandErr: '绑定失败',
-        unbdRoomCt: '确定解绑当前教室吗?',
-        unbdOk: '解绑成功',
-        unbdErr: '解绑失败',
-        pdName1: '学情分析模组',
-        pdName2: '智慧学校管理服务',
-        pdName3: '卷卡合一阅卷系统',
-        pdName4: 'AClass ONE智慧学伴',
-        pdName5: '数据储存服务空间',
-        pdName6: 'Haboard醍摩豆智慧大屏',
-        authDate: '有效期:',
-        fuAuth: '功能权限:',
-        IRSnumber: 'IRS链接数:',
-        bandDeviceNO: '可绑定硬件数:',
-        svcName: '服务名称:',
-        authType: '授权方式:',
-        authType1: '新约',
-        authType2: '续约',
-        authNumber: '购买数量:',
-        text1: '设备名称:',
-        text2: '硬件:',
-        text3: '服务类型:',
-        text4: '智慧教室:',
-        contactUs: '联系我们',
-        learnMore: '了解更多',
-        ctFrom: '联系表单',
-        ctFmText1: '您好,欢迎留下联络事项,我们将尽快与您联系。',
-        ctFmText2: '姓名',
-        ctFmText3: '请输入姓名',
-        ctFmText4: '性别',
-        ctFmText5: '先生',
-        ctFmText6: '女士',
-        ctFmText7: '联系电话',
-        ctFmText8: '请输入联系电话',
-        ctFmText9: '请选择性别',
-        ctFmText10: '请输入联系电话',
-        ctFmText11: '请完善表单信息',
-        ctFmText12: '所在地区',
-        ctFmText13: '咨询内容',
-        ctFmText14: '服务存储空间',
-        ctFmText15: '其他',
-        ctFmText16: '请选择所在地区',
-        ctFmText17: '请选择咨询内容',
-        ctFmText18: '保存成功,稍后我们将与您联系',
-        ctFmText19: '保存失败',
-        ctFmText20: '智慧教室',
-        ctFmText21: '研修中心',
-        ctFmText22: '顾问服务',
+        searchSerial:'搜索序列号',
+        noDeviceName:'暂无设备名称',
+        noClassId:'未关联教室',
+        rltClass:'关联教室',
+        unrltClass:'解绑教室',
+        unbdDeviceCont:'确认解绑当前设备吗?',
+        unbdOk:'解绑成功',
+        unbdErr1:'设备ID错误',
+        unbdErr2:'序列号异常',
+        unMatchRoom:'未匹配到教室',
+        deviceName:'设备名称:',  
+        bandOk:'绑定成功',
+        bandErr:'绑定失败',
+        unbdRoomCt:'确定解绑当前教室吗?',
+        unbdOk:'解绑成功',
+        unbdErr:'解绑失败',
+        pdName1:'学情分析模组',
+        pdName2:'智慧学校管理服务',
+        pdName3:'卷卡合一阅卷系统',
+        pdName4:'AClass ONE智慧学伴',
+        pdName5:'数据储存服务空间',
+        pdName6:'Haboard醍摩豆智慧大屏',
+        authDate:'有效期:',
+        fuAuth:'功能权限:',
+        IRSnumber:'IRS链接数:',
+        bandDeviceNO:'可绑定硬件数:',
+        svcName:'服务名称:',
+        authType:'授权方式:',
+        authType1:'新约',
+        authType2:'续约',
+        authNumber:'购买数量:',
+        text1:'设备名称:',
+        text2:'硬件:',
+        text3:'服务类型:',
+        text4:'智慧教室:',
+        contactUs:'联系我们',
+        learnMore:'了解更多',
+        ctFrom:'联系表单',
+        ctFmText1:'您好,欢迎留下联络事项,我们将尽快与您联系。',
+        ctFmText2:'姓名',
+        ctFmText3:'请输入姓名',
+        ctFmText4:'性别',
+        ctFmText5:'先生',
+        ctFmText6:'女士',
+        ctFmText7:'联系电话',
+        ctFmText8:'请输入联系电话',
+        ctFmText9:'请选择性别',
+        ctFmText10:'请输入联系电话',
+        ctFmText11:'请完善表单信息',
+        ctFmText12:'所在地区',
+        ctFmText13:'咨询内容',
+        ctFmText14:'服务存储空间',
+        ctFmText15:'其他',
+        ctFmText16:'请选择所在地区',
+        ctFmText17:'请选择咨询内容',
+        ctFmText18:'保存成功,稍后我们将与您联系',
+        ctFmText19:'保存失败',
+        ctFmText20:'智慧教室',
+        ctFmText21:'研修中心',
+        ctFmText22:'顾问服务',
+        ctFmText23:'电子邮箱',
+        ctFmText24:'请输入邮箱',
+        ctFmText25:'邮箱格式不正确',
     },
     // 班级管理
     classMgmt: {
@@ -849,21 +852,21 @@ const LANG_ZH_CN = {
         nicknameTips: '请输入学生昵称',
         evRcd: '历次评测',
         gradeErr: '查询成绩数据失败',
-        rcdExpired: '到期',
-        cusTab1: '评测活动',
-        cusTab2: '作业活动',
-        cusTab3: '投票活动',
-        cusTab4: '问卷活动',
-        cusTab5: '班级公告',
-        cusTab6: '评测列表',
-        cusTab7: '成绩统计',
-        cusTab8: '新建评测',
-        cusTab9: '新建作业',
-        cusTab10: '新建公告',
-        cusTab11: '新建问卷',
-        cusTab12: '新建投票',
-        fullTips1: '学校空间已满,无法创建学校课程评测',
-        fullTips2: '个人空间已满,无法创建个人课程评测',
+        rcdExpired:'到期',
+        cusTab1:'评测活动',
+        cusTab2:'作业活动',
+        cusTab3:'投票活动',
+        cusTab4:'问卷活动',
+        cusTab5:'班级公告',
+        cusTab6:'评测列表',
+        cusTab7:'成绩统计',
+        cusTab8:'新建评测',
+        cusTab9:'新建作业',
+        cusTab10:'新建公告',
+        cusTab11:'新建问卷',
+        cusTab12:'新建投票',
+        fullTips1:'学校空间已满,无法创建学校课程评测',
+        fullTips2:'个人空间已满,无法创建个人课程评测',
 
         //ManageClass.vue
         stuMgt: '学生管理',
@@ -1114,16 +1117,16 @@ const LANG_ZH_CN = {
             optionCount: '选项分布',
             tPushLabel: '推送:',
             noAns: '未答',
-            filter1: '所有',
-            filter2: '推送',
-            filter3: '任务',
-            filter4: '互动',
-            filter5: '测验',
-            evt1: '抢权:',
-            evt2: '课中评测数据',
-            evt3: '挑人:',
-            evt4: '收集:',
-            evt5: '收集的作品',
+            filter1:'所有',
+            filter2:'推送',
+            filter3:'任务',
+            filter4:'互动',
+            filter5:'测验',
+            evt1:'抢权:',
+            evt2:'课中评测数据',
+            evt3:'挑人:',
+            evt4:'收集:',
+            evt5:'收集的作品',
         }
     },
     // ElementUI相关

+ 109 - 106
TEAMModelOS/ClientApp/public/lang/zh-TW.js

@@ -382,66 +382,69 @@ const LANG_ZH_TW = {
         toAuth: '前往授權',
         periodInfo1: '學校學段數量',
         periodInfo2: '學校學院數量',
-        searchSerial: '搜尋序號',
-        noDeviceName: '暫無設備名稱',
-        noClassId: '未關聯教室',
-        rltClass: '關聯教室',
-        unrltClass: '解除關聯教室',
-        unbdDeviceCont: '確認解綁當前序號嗎?',
-        unbdOk: '解綁成功',
-        unbdErr1: '設備ID錯誤',
-        unbdErr2: '序號異常',
-        unMatchRoom: '未匹配到教室',
-        deviceName: '設備名稱:',
-        bandOk: '綁定成功',
-        bandErr: '綁定失敗',
-        unbdRoomCt: '確定解除關聯當前教室嗎?',
-        unbdOk: '解除成功',
-        unbdErr: '解除失敗',
-        pdName1: '學情分析模組',
-        pdName2: '智慧學校管理服務',
-        pdName3: '卷卡合一閱卷系統',
-        pdName4: 'AClass ONE智慧學伴',
-        pdName5: '數據儲存服務空間',
-        pdName6: 'Haboard醍摩豆智慧大屏',
-        authDate: '有效期:',
-        fuAuth: '功能權限:',
-        IRSnumber: 'IRS連線數:',
-        bandDeviceNO: '可綁定設備數:',
-        svcName: '服務名稱:',
-        authType: '授權方式:',
-        authType1: '新約',
-        authType2: '續約',
-        authNumber: '購買數量:',
-        text1: '設備名稱:',
-        text2: '設備:',
-        text3: '服務類型:',
-        text4: '智慧教室:',
-        contactUs: '聯系我們',
-        learnMore: '了解更多',
-        ctFrom: '聯系表單',
-        ctFmText1: '您好,歡迎留下聯絡事項,我們將盡快與您聯系。',
-        ctFmText2: '姓名',
-        ctFmText3: '請輸入姓名',
-        ctFmText4: '性別',
-        ctFmText5: '先生',
-        ctFmText6: '女士',
-        ctFmText7: '聯系電話',
-        ctFmText8: '請輸入聯系電話',
-        ctFmText9: '請選擇性別',
-        ctFmText10: '請輸入聯系電話',
-        ctFmText11: '請完善表單信息',
-        ctFmText12: '所在地區',
-        ctFmText13: '咨詢內容',
-        ctFmText14: '服務存儲空間',
-        ctFmText15: '其他',
-        ctFmText16: '請選擇所在地區',
-        ctFmText17: '請選擇咨詢內容',
-        ctFmText18: '保存成功,稍後我們將與您聯系',
-        ctFmText19: '保存失敗',
-        ctFmText20: '智慧教室',
-        ctFmText21: '研修中心',
-        ctFmText22: '顧問服務',
+        searchSerial:'搜尋序號',
+        noDeviceName:'暫無設備名稱',
+        noClassId:'未關聯教室',
+        rltClass:'關聯教室',
+        unrltClass:'解除關聯教室',
+        unbdDeviceCont:'確認解綁當前序號嗎?',
+        unbdOk:'解綁成功',
+        unbdErr1:'設備ID錯誤',
+        unbdErr2:'序號異常',
+        unMatchRoom:'未匹配到教室',
+        deviceName:'設備名稱:',   
+        bandOk:'綁定成功',
+        bandErr:'綁定失敗',
+        unbdRoomCt:'確定解除關聯當前教室嗎?',
+        unbdOk:'解除成功',
+        unbdErr:'解除失敗',
+        pdName1:'學情分析模組',
+        pdName2:'智慧學校管理服務',
+        pdName3:'卷卡合一閱卷系統',
+        pdName4:'AClass ONE智慧學伴',
+        pdName5:'數據儲存服務空間',
+        pdName6:'Haboard醍摩豆智慧大屏',
+        authDate:'有效期:',
+        fuAuth:'功能權限:',
+        IRSnumber:'IRS連線數:',
+        bandDeviceNO:'可綁定設備數:',
+        svcName:'服務名稱:',
+        authType:'授權方式:',
+        authType1:'新約',
+        authType2:'續約',
+        authNumber:'購買數量:',
+        text1:'設備名稱:',
+        text2:'設備:',
+        text3:'服務類型:',
+        text4:'智慧教室:',
+        contactUs:'聯繫我們',
+        learnMore:'了解更多',
+        ctFrom:'聯繫表單',
+        ctFmText1:'您好,歡迎留下聯絡事項,我們將盡快與您聯繫。',
+        ctFmText2:'姓名',
+        ctFmText3:'請輸入姓名',
+        ctFmText4:'性別',
+        ctFmText5:'先生',
+        ctFmText6:'女士',
+        ctFmText7:'聯繫電話',
+        ctFmText8:'請輸入聯繫電話',
+        ctFmText9:'請選擇性別',
+        ctFmText10:'請輸入聯繫電話',
+        ctFmText11:'請完善表單信息',
+        ctFmText12:'所在地區',
+        ctFmText13:'諮詢內容',
+        ctFmText14:'服務存儲空間',
+        ctFmText15:'其他',
+        ctFmText16:'請選擇所在地區',
+        ctFmText17:'請選擇諮詢內容',
+        ctFmText18:'保存成功,稍後我們將與您聯繫',
+        ctFmText19:'保存失敗',
+        ctFmText20:'智慧教室',
+        ctFmText21:'研修中心',
+        ctFmText22:'顧問服務',
+        ctFmText23:'電子郵箱',
+        ctFmText24:'請輸入郵箱',
+        ctFmText25:'郵箱格式不正確',
     },
     // 班级管理
     classMgmt: {
@@ -571,7 +574,7 @@ const LANG_ZH_TW = {
     },
     // 课堂管理
     courseManage: {
-        addCourse: '新課程',
+        addCourse: '新課程',
         courseList: '課程清單',
         courseList1: '我的課程',
         courseShow: '顯示所有課程',
@@ -651,7 +654,7 @@ const LANG_ZH_TW = {
             studentTableC10: '編制班',
             studentTableC11: '暱稱',
             addClassroomProp1: '選擇預設教室',
-            addClassroomProp2: '新個人教室',
+            addClassroomProp2: '新個人教室',
             chooseClassroom: '請選擇系統的教室',
             searchHolder1: '關鍵字搜尋',
             classroomTableC1: '教室編碼',
@@ -849,21 +852,21 @@ const LANG_ZH_TW = {
         nicknameTips: '請輸入學生暱稱',
         evRcd: '歷次評量',
         gradeErr: '查詢成績數據失敗',
-        rcdExpired: '到期',
-        cusTab1: '評測活動',
-        cusTab2: '作業活動',
-        cusTab3: '投票活動',
-        cusTab4: '問卷活動',
-        cusTab5: '班級公告',
-        cusTab6: '評測列表',
-        cusTab7: '成績統計',
-        cusTab8: '新建評測',
-        cusTab9: '新建作業',
-        cusTab10: '新建公告',
-        cusTab11: '新建問卷',
-        cusTab12: '新建投票',
-        fullTips1: '學校空間已滿,無法創建學校課程評測',
-        fullTips2: '個人空間已滿,無法創建個人課程評測',
+        rcdExpired:'到期',
+        cusTab1:'評測活動',
+        cusTab2:'作業活動',
+        cusTab3:'投票活動',
+        cusTab4:'問卷活動',
+        cusTab5:'班級公告',
+        cusTab6:'評測列表',
+        cusTab7:'成績統計',
+        cusTab8:'新建評測',
+        cusTab9:'新建作業',
+        cusTab10:'新建公告',
+        cusTab11:'新建問卷',
+        cusTab12:'新建投票',
+        fullTips1:'學校空間已滿,無法創建學校課程評測',
+        fullTips2:'個人空間已滿,無法創建個人課程評測',
 
         //ManageClass.vue
         stuMgt: '學生管理',
@@ -931,7 +934,7 @@ const LANG_ZH_TW = {
         saveLabel: '儲存變更',
         addStuList: '新增名單',
         addListType: '方式',
-        addListType1: '新名單',
+        addListType1: '新名單',
         addListType2: '選擇已有名單',
         listLabel: '名單',
         removeList: '移除名單',
@@ -950,7 +953,7 @@ const LANG_ZH_TW = {
         listType2: '選課班',
         confirmAdd: '確認新增',
         cancelAdd: '取消新增',
-        createList: '新選課班',
+        createList: '新選課班',
         name: '名稱:',
         nameHolder: '請輸入名單名稱…',
         nameRepeat: '選課班名稱重複',
@@ -1114,16 +1117,16 @@ const LANG_ZH_TW = {
             optionCount: '選項分佈',
             tPushLabel: '推送:',
             noAns: '未答',
-            filter1: '所有',
-            filter2: '推送',
-            filter3: '任務',
-            filter4: '互動',
-            filter5: '測驗',
-            evt1: '搶權:',
-            evt2: '課中評量數據',
-            evt3: '挑人:',
-            evt4: '收集:',
-            evt5: '收集的作品',
+            filter1:'所有',
+            filter2:'推送',
+            filter3:'任務',
+            filter4:'互動',
+            filter5:'測驗',
+            evt1:'搶權:',
+            evt2:'課中評量數據',
+            evt3:'挑人:',
+            evt4:'收集:',
+            evt5:'收集的作品',
         }
     },
     // ElementUI相关
@@ -1210,7 +1213,7 @@ const LANG_ZH_TW = {
         index: {
             item: '試題',
             paper: '試卷',
-            addExercise: '新試題',
+            addExercise: '新試題',
             openAll: '全部展開',
             collapseAll: '全部折疊',
             autoCreate: '智慧組卷',
@@ -1281,8 +1284,8 @@ const LANG_ZH_TW = {
         cancelSuc: '取消成功',
         addSuc: '新增成功',
         newExercise: {
-            newSchoolItem: '新學校題目',
-            newPrivateItem: '新個人題目',
+            newSchoolItem: '新學校題目',
+            newPrivateItem: '新個人題目',
             backToBank: '返回題庫',
             choosePeriod: '選擇學制',
             chooseGrade: '選擇年級',
@@ -2142,7 +2145,7 @@ const LANG_ZH_TW = {
         delete: '刪除',
         moveBlock: '移出知識塊',
         searchBlock: '搜尋知識塊',
-        buildBlock: '新知識塊',
+        buildBlock: '新知識塊',
         pointCount: '知識點數:',
         editBlock: '編輯知識塊',
         addPoint: '新增知識點',
@@ -2194,7 +2197,7 @@ const LANG_ZH_TW = {
             listLabel1: '學校評量',
             listLabel2: '個人評量',
             period: '學制:',
-            create: '新',
+            create: '新',
             delete: '刪除',
             edit: '編輯',
             createTime: '施測時間:',
@@ -2259,8 +2262,8 @@ const LANG_ZH_TW = {
             shareText6: '快速登入醍摩豆雲平臺IES學習主頁,進行線上活動',
             shareText7: '或登入醍摩豆雲平臺IES學習主頁,進行線上活動:',
             shareText8: '掃碼進行線上活動',
-            shareText9: '製評量通知',
-            shareText10: '復製評量鏈接',
+            shareText9: '製評量通知',
+            shareText10: '複製評量網址',
             shareText11: '為了更好的用戶體驗,請在PC端完成線上活動!',
             copy: '複製',
             copyTitle: '複製評量',
@@ -3254,7 +3257,7 @@ const LANG_ZH_TW = {
         periodCountTips: '學段數量根據學校購買進行分配,學校只能進行編輯學段名稱,不能新增和刪除學段。',
         cgCountTips: '學院數量根據學校購買進行分配,學校只能進行編輯學院名稱,不能新增和刪除學院。',
         addSubjectType: '新增方式',
-        addSubjectType1: '新學科',
+        addSubjectType1: '新學科',
         addSubjectType2: '選擇已有學科',
         addSubjectType3: '已有學科',
         addSubjectType4: '請選擇需要新增的學科',
@@ -3397,7 +3400,7 @@ const LANG_ZH_TW = {
         updOk: '修改成功',
         updErr: '修改失敗',
         warmTips: '溫馨提示',
-        mobileTips: '為了您更好的使用體驗,建議使用PC端訪問IES5雲平臺!',
+        mobileTips:'為了您更好的使用體驗,建議使用PC端訪問IES5雲平臺!',
         noStuContent: '學校暫未匯入學生帳號,是否前往學生管理匯入學生帳號?',
         setIrsWarning: '請設定IRS編號',
         setNoWarning: '請設定座號'
@@ -4802,7 +4805,7 @@ const LANG_ZH_TW = {
         chooseTargetTip: '請先選擇分享對象!',
         chooseShareChapterTip: '請先選擇需要分享的章節!',
         chooseChapterTip: '請先選擇需要收藏的章節!',
-        chooseVolumeTip: '請選擇已新增的冊別或者新冊別!',
+        chooseVolumeTip: '請選擇已新增的冊別或者新冊別!',
         playFailTip: '資源暫不支援播放',
         shareSyllabus: '分享個人課綱',
         chooseShareChapter: '選擇分享的章節',
@@ -4813,7 +4816,7 @@ const LANG_ZH_TW = {
         allSave: '整冊收藏',
         chooseSavePos: '選擇收藏位置',
         pos1: '已有冊別',
-        pos2: '新冊別',
+        pos2: '新冊別',
         chooseVolume: '選擇一個冊別',
         newVolume: '輸入新冊別名稱',
         confirmSave: '確認收藏',
@@ -4837,7 +4840,7 @@ const LANG_ZH_TW = {
         search: '搜尋',
         edit: '編輯',
         delete: '刪除',
-        add: '新冊別',
+        add: '新冊別',
         place1: '輸入冊別名稱…',
         isDel: '已失效',
         deleteDelV: '刪除失效冊別',
@@ -4947,7 +4950,7 @@ const LANG_ZH_TW = {
     },
     // 系统相关
     system: {
-        wechatTip: '關注醍摩豆微信公眾號詢',
+        wechatTip: '關注醍摩豆微信公眾號詢',
         wechatTipTw: '透過QR Code加入Line官方客服',
         preview: '預覽',
         title: '醍摩豆雲平臺',
@@ -5118,7 +5121,7 @@ const LANG_ZH_TW = {
         text65: "播放影片",
         text66: "換頁",
     },
-    // 阅卷任务
+    // 閱卷任務
     task: {
         markTask: '閱卷任務',
         markStatus0: '未開始',
@@ -6214,9 +6217,9 @@ const LANG_ZH_TW = {
     },
     // 投票活动
     vote: {
-        copyNotice: '複製活動通知',
-        copyLinkUrl: '複製活動鏈接',
-        fullTip: '資源空間已滿,無法建立新活動!',
+        copyNotice:'複製活動通知',
+        copyLinkUrl:'複製活動鏈接',
+        fullTip:'資源空間已滿,無法建立新活動!',
         secret: '匿名',
         allTeacher: '所有老師',
         noFindVote: '未查詢到當前活動!',

+ 8 - 8
TEAMModelOS/ClientApp/src/utils/editorLangTw.js

@@ -1,9 +1,9 @@
 let editor_tw_config = {
     wangEditor: {
-        重置: '重',
+        重置: '重',
         插入: '插入',
-        默认: '默認',
-        创建: '建',
+        默认: '預設',
+        创建: '建',
         修改: '修改',
         如: '連結URL,如',
         请输入正文: '請輸入正文',
@@ -30,7 +30,7 @@ let editor_tw_config = {
                 表格: '表格',
                 代码: '程式碼',
                 分割线: '分割線',
-                恢复: '復',
+                恢复: '復',
                 撤销: '撤銷',
                 全屏: '全屏',
                 代办事项: '代辦事項',
@@ -69,7 +69,7 @@ let editor_tw_config = {
 					插入公式:'插入公式',
 				},
                 emoticon: {
-                    默认: '默認',
+                    默认: '預設',
                     新浪: '新浪',
                     emoji: 'emoji',
                     手势: '手勢',
@@ -77,14 +77,14 @@ let editor_tw_config = {
                 image: {
                     图片链接: '圖片連結',
                     上传图片: '上傳圖片',
-                    网络图片: '網圖片',
+                    网络图片: '網圖片',
                 },
                 link: {
                     链接: '連結',
                     链接文字: '連結描述',
                     删除链接: '删除連結',
                     查看链接: '查看連結',
-					取消链接: '取消鏈接',
+					取消链接: '取消連結',
                 },
                 video: {
                     插入视频: '插入視頻',
@@ -126,7 +126,7 @@ let editor_tw_config = {
             服务器返回状态: '服務器返回狀態',
             上传图片返回结果错误: '上傳圖片返回結果錯誤',
             请替换为支持的图片类型: '請替換為支持的圖片類型',
-            您插入的网络图片无法识别: '您插入的網圖片無法識別',
+            您插入的网络图片无法识别: '您插入的網圖片無法識別',
             您刚才插入的图片链接未通过编辑器校验: '您剛才插入的圖片連結未通過編輯器校驗',
         },
     }

+ 1 - 1
TEAMModelOS/ClientApp/src/view/ability/Review.vue

@@ -307,7 +307,7 @@ export default {
       let suffix = this.getSuffix(file.name)
       console.log(file)
       console.log(fullFilePath)
-      let isImg = ['jpg', 'png', 'gif'].includes(suffix)
+      let isImg = ['jpg', 'png','gif'].includes(suffix)
       let isDoc = ['doc', 'docx', 'xls', 'xlsx', 'ppt', 'pptx'].includes(suffix)
       let isPdf = suffix === 'pdf'
       let isVideo = suffix === 'mp4' || suffix === 'webm'

+ 23 - 18
TEAMModelOS/ClientApp/src/view/auth/Product.vue

@@ -17,7 +17,7 @@
                         </p>
                         <p class="product-content">
                             {{item.content}}
-                            <a :href="item.more" target="_black" style="text-decoration: underline;">
+                            <a :href="item[lang]" target="_black" style="text-decoration: underline;">
                                 {{$t('auth.learnMore')}}
                             </a>
                         </p>
@@ -144,6 +144,9 @@
                     <FormItem :label="$t('auth.ctFmText7')" prop="mobile">
                         <Input v-model="contact.mobile" type="number" :placeholder="$t('auth.ctFmText8')"></Input>
                     </FormItem>
+                    <FormItem :label="$t('auth.ctFmText23')" prop="email">
+                        <Input v-model="contact.email" :placeholder="$t('auth.ctFmText24')"></Input>
+                    </FormItem>
                     <!-- 不需要地区 -->
                     <!-- <FormItem :label="$t('auth.ctFmText12')" prop="address">
                         <BaseAreaPicker ref="areaPicker" v-if="isChinaSite"></BaseAreaPicker>
@@ -221,7 +224,11 @@ export default {
                 ],
                 mobile: [
                     { required: true, message: this.$t('auth.ctFmText10'), trigger: 'change' }
-                ]
+                ],
+                email: [
+                    { required: true, message: this.$t('auth.ctFmText24'), trigger: 'blur' },
+                    { type: 'email', message: this.$t('auth.ctFmText25'), trigger: 'blur' }
+                ],
             },
             contact: {
                 name: this.$store.state.userInfo.name,
@@ -245,7 +252,9 @@ export default {
                     content: this.$t('auth.content1'),
                     isPay: 0,
                     prodCode: 'YMPCVCIM',
-                    more: 'https://www.habook.com.cn/product.php?act=view&id=29'
+                    'zh-cn': 'https://www.habook.com.cn/product.php?act=view&id=28',
+                    'zh-tw': 'https://www.habook.com/zh-tw/cloud.php?act=view&id=9',
+                    'en-us': 'https://www.habook.com/en/cloud.php?act=view&id=9'
                 },
                 {
                     name: this.$t('auth.module2'),
@@ -255,7 +264,9 @@ export default {
                     content: this.$t('auth.content2'),
                     isPay: 0,
                     prodCode: 'VABAJ6NV',
-                    more: 'https://www.habook.com.cn/product.php?act=view&id=30'
+                    'zh-cn': 'https://www.habook.com.cn/product.php?act=view&id=30',
+                    'zh-tw': 'https://www.habook.com/zh-tw/cloud.php?act=view&id=8',
+                    'en-us': 'https://www.habook.com/en/cloud.php?act=view&id=8'
                 },
                 {
                     name: this.$t('auth.module3'),
@@ -265,7 +276,9 @@ export default {
                     content: this.$t('auth.content3'),
                     isPay: 0,
                     prodCode: 'Sokrates',
-                    more: 'https://www.habook.com.cn/cloud.php?act=view&id=21'
+                    'zh-cn': 'https://www.habook.com.cn/cloud.php?act=view&id=22',
+                    'zh-tw': 'https://www.habook.com/zh-tw/product.php?act=view&id=37',
+                    'en-us': 'https://www.habook.com/en/product.php?act=view&id=37'
                 }
             ]
         }
@@ -283,6 +296,10 @@ export default {
             } else {
                 return 0
             }
+        },
+        lang() {
+            let curLang = localStorage.getItem('local') || 'zh-cn'
+            return curLang
         }
     },
     methods: {
@@ -309,6 +326,7 @@ export default {
                         tmdname: this.$store.state.userInfo.name,
                         tmdid: this.$store.state.userInfo.TEAMModelId,
                         gender: this.contact.sex,
+                        email: this.contact.email,
                         cellphone: this.contact.mobile,
                         content: this.contact.content.join(',')
                     }
@@ -331,19 +349,6 @@ export default {
         toContact(isPay) {
             if (!isPay) {
                 this.formStatus = true
-                return
-                let urls = {
-                    en: 'https://www.habook.com/en/contact_us.php',
-                    tw: 'https://www.habook.com/zh-tw/contact_us.php',
-                    cn: 'https://www.habook.com.cn/contact_us.php'
-                }
-                let lang = localStorage.getItem('local') || 'zh-cn'
-                for (let key in urls) {
-                    if (lang.includes(key)) {
-                        window.open(/^(http:|https:)/i.test(urls[key]) ? urls[key] : "http://" + urls[key])
-                        break
-                    }
-                }
             }
         },
         toTeacherMgt() {

+ 3 - 3
TEAMModelOS/ClientApp/src/view/classmgt/CreateNotice.vue

@@ -93,9 +93,10 @@ export default {
             console.log(this.noticeDate)
             console.log(date)
             if (date.length == 2) {
-                this.notifyInfo.startTime = new Date(date[0]).getTime()
-                this.notifyInfo.endTime = new Date(date[1]).getTime()
+                this.notifyInfo.startTime = new Date(date[0] + " 00:00").getTime()
+                this.notifyInfo.endTime = new Date(date[1] + " 23:59").getTime()
             }
+            console.log(this.notifyInfo)
         },
         //初始化富文本编辑器
         initEditor() {
@@ -186,7 +187,6 @@ export default {
         // this.initEditor()
     },
     created() {
-        this.findClass()
         let routeData = this.$route.params
         //编辑公告
         if (routeData.notice) {

+ 15 - 9
TEAMModelOS/ClientApp/src/view/classrecord/eventchart/Exam.vue

@@ -1,7 +1,11 @@
 <template>
     <div class="exam-wrap">
         <TeacherClient></TeacherClient>
-        <div class="exam-info" v-if="!examDetaiInfo" @click="getExamInfo">
+        <div class="exam-info" v-if="!examInfo.ExamId" style="background: #fff7e6;border-color: #ffd591;color:#fa8c16">
+            <Icon type="md-podium" style="margin-right:5px" />
+            {{$t('cusMgt.rcd.oldHT')}}
+        </div>
+        <div class="exam-info" v-else-if="!examDetaiInfo" @click="getExamInfo">
             <Icon type="md-podium" style="margin-right:5px" />
             {{$t('cusMgt.rcd.evt2')}}
         </div>
@@ -10,6 +14,7 @@
             <ExamQu :quData="correctData[0] ? correctData[0].data : []" style="margin-right:50px"></ExamQu>
             <ExamTable :examInfo="examDetaiInfo" :recordInfo="recordInfo"></ExamTable>
         </div>
+
     </div>
 </template>
 <script>
@@ -40,7 +45,7 @@ export default {
             simpleData: {},
             examDetaiInfo: undefined,
             paperQuInfo: [],
-            correctData:[]
+            correctData: []
         }
     },
     methods: {
@@ -130,6 +135,7 @@ export default {
             }
         },
         getExamInfo() {
+            if (!this.examInfo.ExamId) return
             let requestData = {
                 id: this.examInfo.ExamId,
                 code: `Exam-${this.$store.state.userInfo.TEAMModelId}` //课中评测统一记录的是教师id,不用根据课堂记录scope处理
@@ -280,12 +286,12 @@ export default {
             }
         },
     },
-    watch:{
-        examInfo:{
-            deep:true,
-            immediate:true,
-            handler(n,o){
-                if(n && n.ExamId){
+    watch: {
+        examInfo: {
+            deep: true,
+            immediate: true,
+            handler(n, o) {
+                if (n && n.ExamId) {
                     this.getExamInfo()
                 }
             }
@@ -308,7 +314,7 @@ export default {
     user-select: none;
     cursor: pointer;
 }
-.exam-chart-wrap{
+.exam-chart-wrap {
     display: flex;
     flex-wrap: wrap;
 }

+ 1 - 1
TEAMModelOS/ClientApp/src/view/classrecord/eventchart/ExamTable.vue

@@ -284,7 +284,7 @@ export default {
             let requestData = {
                 id: this.examInfo.id,
                 code: this.recordInfo.scope == 'school' ? this.$store.state.userInfo.schoolCode : this.$store.state.userInfo.TEAMModelId,
-                subjectId: this.recordInfo.subjectId,
+                subjectId: this.recordInfo.scope == 'school' ? this.recordInfo.subjectId : this.recordInfo.courseId,
                 classId: this.recordInfo.groupIds[0],
             };
             this.$api.learnActivity.FindAllStudent(requestData).then(

+ 3 - 0
TEAMModelOS/ClientApp/src/view/homepage/HomePage.vue

@@ -525,6 +525,9 @@ export default {
                         let sasInfo = item.scope == 'school' ? schoolSasInfo : privateSasInfo
                         item.poster = `${sasInfo.url}/${sasInfo.name}/records/${item.id}/Record/CoverImage.jpg${sasInfo.sas}`
                     })
+                    this.recentRcdList.sort((a, b) => {
+                        return b.startTime - a.startTime
+                    })
                     console.log(this.recentRcdList)
                 },
                 err => {

+ 2 - 1
TEAMModelOS/ClientApp/src/view/homepage/RcdPoster.vue

@@ -42,6 +42,7 @@ export default {
 </script>
 <style scoped lang="less">
 .rcd-poster-img {
-    width: 100%;
+    max-width: 100%;
+    max-height: 100%;
 }
 </style>

+ 13 - 5
TEAMModelOS/ClientApp/src/view/mycourse/MyCourse.vue

@@ -3,7 +3,9 @@
         <!-- 顶部课程筛选区域 -->
         <div class="my-course-header">
             <div class="course-type" v-show="isShowTypeFilter">
-                <span class="filter-label">来源:</span>
+                <span class="filter-label">
+                    {{$t('cusMgt.cusSource')}}
+                </span>
                 <RadioGroup v-model="listType" type="button">
                     <Radio v-for="item in cusType" :label="item.value" :key="item.value">
                         {{item.label}}
@@ -11,8 +13,12 @@
                 </RadioGroup>
             </div>
             <div :class="courseTypeClass" @mouseover="checkOverflow" @mouseleave="removeOverflow">
-                <span class="filter-label">课程:</span>
-                <span v-show="!courseListShow.length">暂无课程</span>
+                <span class="filter-label">
+                    {{$t('home.course')}}
+                </span>
+                <span v-show="!courseListShow.length">
+                    {{$t('cusMgt.noScCus')}}
+                </span>
                 <RadioGroup v-model="courseId" type="button" id="course-list-box" style="width: calc(100% - 70px);">
                     <Radio v-for="item in courseListShow" :label="item.id" :key="item.id" style="margin-right:15px">
                         {{item.name}}
@@ -25,7 +31,9 @@
 
             </div>
             <div class="course-action-wrap">
-                <Button type="text" icon="md-add" @click="addCusStatus = true">新建个人课程</Button>
+                <Button type="text" icon="md-add" @click="addCusStatus = true">
+                    {{$t('cusMgt.createPrivCus')}}
+                </Button>
             </div>
         </div>
         <div class="my-course-main custom-iview-split">
@@ -275,7 +283,7 @@ export default {
             return {
                 scope: this.listType,
                 courseId: this.courseId,
-                classId: this.teaClassList[this.curClassIndex].classId || this.teaClassList[this.curClassIndex].stulist
+                classId: this.teaClassList[this.curClassIndex]?.classId || this.teaClassList[this.curClassIndex]?.stulist
             }
         },
         students() {

+ 2 - 2
TEAMModelOS/ClientApp/src/view/mycourse/notice/Create.vue

@@ -120,8 +120,8 @@ export default {
     methods: {
         getTimestamp(date) {
             if (date.length == 2) {
-                this.notifyInfo.startTime = new Date(date[0]).getTime()
-                this.notifyInfo.endTime = new Date(date[1]).getTime()
+                this.notifyInfo.startTime = new Date(date[0] + " 00:00").getTime()
+                this.notifyInfo.endTime = new Date(date[1] + " 23:59").getTime()
             }
         },
         //初始化富文本编辑器

+ 50 - 22
TEAMModelOS/ClientApp/src/view/mycourse/student/Student.vue

@@ -1,28 +1,56 @@
 <template>
     <div class="cus-student-contianer">
         <div class="stu-action-wrap common-save-btn">
-            <span v-if="stuList && stuList.scope == 'private'" class="action-item" @click="delStudents">
-                <Icon type="md-trash" size="16" />
-                {{$t('cusMgt.delStu')}}
-            </span>
-            <span v-if="stuList && stuList.scope == 'private'" v-show="$store.state.userInfo.hasSchool" class="action-item" @click="addStuStatus = true">
-                <Icon type="md-add" size="16" />
-                {{$t('cusMgt.addStu')}}
-            </span>
-            <span v-if="stuList && stuList.scope == 'private'" class="action-item" @click="setIrsStatus = true">
-                <Icon type="md-settings" size="16" />
-                {{$t('cusMgt.editStu')}}
-            </span>
-            <Button icon="md-download" class="save-btn action-item" @click="generateQrcodes" :loading="btnLoading">
-                {{$t('schoolBaseInfo.exportQrCode')}}
-            </Button>
-            <Button icon="md-download" class="save-btn action-item" @click="generatePDF" :loading="pdfLoading">
-                {{$t('schoolBaseInfo.exportList')}}
-            </Button>
-            <span class="action-item" @click="exportStudents">
-                <Icon type="md-download" size="16" />
-                {{$t('cusMgt.exportStu')}}
-            </span>
+            <Dropdown style="margin-top:5px;margin-right:8px">
+                <a href="javascript:void(0)">
+                    {{$t('cusMgt.moreFn')}}
+                    <Icon type="ios-arrow-down"></Icon>
+                </a>
+                <DropdownMenu slot="list">
+                    <DropdownItem>
+                        <!-- <Button icon="md-download" class="save-btn action-item" @click="generateQrcodes" :loading="btnLoading">
+                            {{$t('schoolBaseInfo.exportQrCode')}}
+                        </Button> -->
+                        <span @click="generateQrcodes">
+                            <Icon type="md-download" size="16" />
+                            {{$t('schoolBaseInfo.exportQrCode')}}
+                        </span>
+                    </DropdownItem>
+                    <DropdownItem>
+                        <!-- <Button icon="md-download" class="save-btn action-item" @click="generatePDF" :loading="pdfLoading">
+                            {{$t('schoolBaseInfo.exportList')}}
+                        </Button> -->
+                        <span @click="generatePDF">
+                            <Icon type="md-download" size="16" />
+                            {{$t('schoolBaseInfo.exportList')}}
+                        </span>
+                    </DropdownItem>
+                    <DropdownItem>
+                        <span class="action-item" @click="exportStudents">
+                            <Icon type="md-download" size="16" />
+                            {{$t('cusMgt.exportStu')}}
+                        </span>
+                    </DropdownItem>
+                    <DropdownItem v-if="stuList && stuList.scope == 'private'" class="action-item">
+                        <span @click="setIrsStatus = true">
+                            <Icon type="md-settings" size="16" />
+                            {{$t('cusMgt.editStu')}}
+                        </span>
+                    </DropdownItem>
+                    <DropdownItem v-if="stuList && stuList.scope == 'private'" v-show="$store.state.userInfo.hasSchool">
+                        <span class="action-item" @click="addStuStatus = true">
+                            <Icon type="md-add" size="16" />
+                            {{$t('cusMgt.addStu')}}
+                        </span>
+                    </DropdownItem>
+                    <DropdownItem v-if="stuList && stuList.scope == 'private'">
+                        <span class="action-item" @click="delStudents">
+                            <Icon type="md-trash" size="16" />
+                            {{$t('cusMgt.delStu')}}
+                        </span>
+                    </DropdownItem>
+                </DropdownMenu>
+            </Dropdown>
         </div>
         <vuescroll style="height:100%;">
             <Alert @on-close="isClose = true" v-show="!isClose" show-icon type="warning" style="margin-bottom:0px" closable>

+ 2 - 2
TEAMModelOS/ClientApp/src/view/notify/CreateNotify.vue

@@ -77,8 +77,8 @@ export default {
             console.log(this.noticeDate)
             console.log(date)
             if (date.length == 2) {
-                this.notifyInfo.startTime = new Date(date[0]).getTime()
-                this.notifyInfo.endTime = new Date(date[1]).getTime()
+                this.notifyInfo.startTime = new Date(date[0] + " 00:00").getTime()
+                this.notifyInfo.endTime = new Date(date[1] + " 23:59").getTime()
             }
         },
         //初始化富文本编辑器

+ 1 - 1
TEAMModelOS/TEAMModelOS.csproj

@@ -44,7 +44,7 @@
     <AssemblyVersion>5.2205.25.1</AssemblyVersion>
     <FileVersion>5.2205.25.1</FileVersion>
     <Description>TEAMModelOS(IES5)</Description>
-    <PackageReleaseNotes>IES版本说明版本标记5.2205.25.1</PackageReleaseNotes>
+    <PackageReleaseNotes>IES版本说明版本标记5.2205.25.1,RC切换Master标记</PackageReleaseNotes>
     <PackageId>TEAMModelOS</PackageId>
     <Authors>teammodel</Authors>
     <Company>醍摩豆(成都)信息技术有限公司</Company>