Browse Source

处理冲突

zhouj1203@hotmail.com 2 years ago
parent
commit
37978a6105

+ 118 - 15
TEAMModelBI/ClientApp/src/view/systemConfig/correlation.vue

@@ -10,9 +10,21 @@
         <div class="userlist-name">{{nowUsers.name}}({{nowUsers.mobile}})</div>
         <div class="userlist-name">{{nowUsers.name}}({{nowUsers.mobile}})</div>
       </div>
       </div>
     </div>
     </div>
-    <p class="correlationbox-title">目前用户所关联学校:</p>
+    <div class="school-list-header">
+      <div class="correlationbox-titles">目前用户所关联学校:<span>关联数量:<span class="correlationbox-num">{{nowUsers.handleSchools.length}}</span></span></div>
+      <div class="correlationbox-btn">
+        <el-button type="primary" size="small" v-if="removeBatchschool.length >0 && PowerShow" @click="multipeRemove"> 移除选中学校</el-button>
+        <el-button type="primary" size="small" v-else-if="removeBatchschool.length ===0 && PowerShow" disabled>移除选中学校</el-button>
+      </div>
+    </div>
+    <!-- <p class="correlationbox-title">目前用户所关联学校:</p>
+    <div class="correlationbox-btn">
+      <el-button type="primary" size="small" v-if="multipleSchool.length >0 && PowerShow" @click="multipleCorrelation">关联选中学校</el-button>
+      <el-button type="primary" size="small" v-else-if="multipleSchool.length ===0 && PowerShow" disabled>关联选中学校</el-button>
+    </div> -->
     <div class="possessbox" v-if="nowUsers.handleSchools.length >0">
     <div class="possessbox" v-if="nowUsers.handleSchools.length >0">
-      <el-table :data="nowUsers.handleSchools" style="width: 100%" height="20vh" size="small" v-loading="loadingData.possess" element-loading-text="数据加载中...">
+      <el-table :data="nowUsers.handleSchools" style="width: 100%" height="20vh" size="small" @selection-change="removeBatch" v-loading="loadingData.possess" element-loading-text="数据加载中...">
+        <el-table-column type="selection" v-if="PowerShow" />
         <el-table-column label="校徽" align="center">
         <el-table-column label="校徽" align="center">
           <template #default="scope">
           <template #default="scope">
             <el-image style="width: 40px; height: 40px;" :src="scope.row.picture" fit="fill" v-if="scope.row.picture"></el-image>
             <el-image style="width: 40px; height: 40px;" :src="scope.row.picture" fit="fill" v-if="scope.row.picture"></el-image>
@@ -23,6 +35,16 @@
         <el-table-column prop="id" label="学校简码" align="center" />
         <el-table-column prop="id" label="学校简码" align="center" />
         <!-- <el-table-column prop="name" label="版本" />
         <!-- <el-table-column prop="name" label="版本" />
                 <el-table-column prop="name" label="目前顾问" /> -->
                 <el-table-column prop="name" label="目前顾问" /> -->
+        <el-table-column align="center">
+          <template #header>
+            <el-select v-model="areaList.value" placeholder="Select" size="small" @change="getAreaschool">
+              <el-option v-for="item in areaList.data" :key="item.value" :label="item.label" :value="item.value" />
+            </el-select>
+          </template>
+          <template #default="scope">
+            <span class="areaitem-name">{{scope.row.areaName}}</span><span class="areaitem-insti">({{scope.row.institution}})</span>
+          </template>
+        </el-table-column>
         <el-table-column fixed="right" label="操作" width='80' align="center" v-if="PowerShow">
         <el-table-column fixed="right" label="操作" width='80' align="center" v-if="PowerShow">
           <template #default="scope">
           <template #default="scope">
             <el-button type="text" size="small" @click="removeSchool(scope.row,scope.$index)">取消关联</el-button>
             <el-button type="text" size="small" @click="removeSchool(scope.row,scope.$index)">取消关联</el-button>
@@ -98,6 +120,7 @@ export default {
     let tableData = ref([])
     let tableData = ref([])
     let nowUsers = ref()
     let nowUsers = ref()
     let multipleSchool = ref([])
     let multipleSchool = ref([])
+    let removeBatchschool = ref([])
     let schoolSearch = ref('')
     let schoolSearch = ref('')
     let original = ref([])
     let original = ref([])
     let timer = ref('')
     let timer = ref('')
@@ -127,13 +150,16 @@ export default {
         console.log(scrollHeight.value, '值')
         console.log(scrollHeight.value, '值')
       }
       }
     }
     }
-    function getSchoolList (value, state) {
-      console.log(value, '触发下一页')
+    async function getSchoolList (value, state) {
+      console.log(value, nextpageToken.value, '触发下一页')
       if ((nextpageToken.value === null) && state !== 'restart') {
       if ((nextpageToken.value === null) && state !== 'restart') {
         ElMessage.success('已经到最底了')
         ElMessage.success('已经到最底了')
         return
         return
       }
       }
       loadingData.value.list = true
       loadingData.value.list = true
+      if (areaList.value.data.length === 1) {
+        await areaData()
+      }
       let data = value ? { contToken: value } : {}
       let data = value ? { contToken: value } : {}
       proxy.$api
       proxy.$api
         .getSchooldata(data)
         .getSchooldata(data)
@@ -155,9 +181,11 @@ export default {
             console.log(areaList.value.data, '是否有数据')
             console.log(areaList.value.data, '是否有数据')
             for (let y in res.schoolAssists) {
             for (let y in res.schoolAssists) {
               let areaValue = res.schoolAssists[y].areaId
               let areaValue = res.schoolAssists[y].areaId
+              console.log(areaValue, '学区的值')
               res.schoolAssists[y].areaName = ''
               res.schoolAssists[y].areaName = ''
               res.schoolAssists[y].institution = ''
               res.schoolAssists[y].institution = ''
               for (let i in areaList.value.data) {
               for (let i in areaList.value.data) {
+                console.log(areaList.value.data[i], '循环的值')
                 areaValue === areaList.value.data[i].value ? (res.schoolAssists[y].areaName = areaList.value.data[i].label, res.schoolAssists[y].institution = areaList.value.data[i].situate) : ''
                 areaValue === areaList.value.data[i].value ? (res.schoolAssists[y].areaName = areaList.value.data[i].label, res.schoolAssists[y].institution = areaList.value.data[i].situate) : ''
               }
               }
             }
             }
@@ -192,9 +220,9 @@ export default {
           .then((res) => {
           .then((res) => {
             console.log(res, '成功的返回')
             console.log(res, '成功的返回')
             res.state === 200
             res.state === 200
-              ? (nowUsers.value.handleSchools.push(value), getSchoolList(), processingSchool(), ElMessage.success('操作成功'))
+              ? (nowUsers.value.handleSchools.push(value), getSchoolList('', 'restart'), processingSchool(), ElMessage.success('操作成功'))
               : res.state === 201
               : res.state === 201
-                ? (ElMessage.success('已关联,请勿重复操作'), getSchoolList())
+                ? (ElMessage.success('已关联,请勿重复操作'), getSchoolList('', 'restart'))
                 : ''
                 : ''
           })
           })
           .catch((error) => {
           .catch((error) => {
@@ -215,7 +243,7 @@ export default {
         proxy.$api
         proxy.$api
           .setAistschool(data)
           .setAistschool(data)
           .then((res) => {
           .then((res) => {
-            res.state === 200 ? (nowUsers.value.handleSchools.splice(index, 1), getSchoolList(), processingSchool(), ElMessage.success('操作成功')) : ''
+            res.state === 200 ? (nowUsers.value.handleSchools.splice(index, 1), getSchoolList('', 'restart'), processingSchool(), ElMessage.success('操作成功')) : ''
           })
           })
           .catch((error) => {
           .catch((error) => {
             ElMessage.error('取消关联失败,API异常')
             ElMessage.error('取消关联失败,API异常')
@@ -226,6 +254,9 @@ export default {
       multipleSchool.value = value
       multipleSchool.value = value
       console.log(multipleSchool.value, '111')
       console.log(multipleSchool.value, '111')
     }
     }
+    function removeBatch (value) {
+      removeBatchschool.value = value
+    }
     function multipleCorrelation () {
     function multipleCorrelation () {
       let schoolData = multipleSchool.value
       let schoolData = multipleSchool.value
       let schoolName = ''
       let schoolName = ''
@@ -255,7 +286,7 @@ export default {
           .then((res) => {
           .then((res) => {
             console.log(res, '成功的返回')
             console.log(res, '成功的返回')
             res.state === 200
             res.state === 200
-              ? ((nowUsers.value.handleSchools = nowUsers.value.handleSchools.concat(schoolData)), getSchoolList(), processingSchool(), ElMessage.success('操作成功'))
+              ? ((nowUsers.value.handleSchools = nowUsers.value.handleSchools.concat(schoolData)), getSchoolList('', 'restart'), processingSchool())
               : res.state === 201
               : res.state === 201
                 ? (ElMessage.success('已关联,请勿重复操作'), getSchoolList())
                 ? (ElMessage.success('已关联,请勿重复操作'), getSchoolList())
                 : ''
                 : ''
@@ -265,6 +296,54 @@ export default {
           })
           })
       })
       })
     }
     }
+    function multipeRemove () {
+      let schoolData = removeBatchschool.value
+      let schoolName = ''
+      console.log(schoolData, '学校信息')
+      if (schoolData.length < 5) {
+        schoolData.forEach((item) => {
+          schoolName = schoolName ? schoolName + ',' + item.name : item.name
+        })
+      } else {
+        for (let i = 0; i < 5; i++) {
+          schoolName = schoolName ? schoolName + ',' + schoolData[i].name : schoolData[i].name
+        }
+        schoolName = schoolName + '等...'
+      }
+      ElMessageBox.confirm(`请问您确定将 ${schoolName} 移除学校管理,取消数据关联吗 ?`, '取消关联学校', {
+        confirmButtonText: proxy.$t(`commonMsg.confirm`),
+        cancelButtonText: proxy.$t(`commonMsg.closes`),
+        type: 'success',
+        center: true,
+      }).then(() => {
+        let schoolArr = []
+        for (let s of schoolData) {
+          s.id ? schoolArr.push(s.id) : ''
+        }
+        let data = { partitionKey: nowUsers.value.partitionKey, userId: nowUsers.value.userId, tmdId: nowUsers.value.tmdId, schoolIds: schoolArr, busy: 'del' }
+        proxy.$api
+          .setAistschool(data)
+          .then((res) => {
+            if (res.state === 200) {
+              console.log(schoolData, '内容')
+              schoolData.forEach((item, index) => {
+                let iteId = item.id
+                console.log(iteId, 'ID值')
+                for (let e in nowUsers.value.handleSchools) {
+                  console.log(nowUsers.value.handleSchools, '值')
+                  iteId === nowUsers.value.handleSchools[e].id ? nowUsers.value.handleSchools.splice(e, 1) : ''
+                }
+              })
+              getSchoolList('', 'restart')
+              processingSchool()
+              ElMessage.success('操作成功')
+            }
+          })
+          .catch((error) => {
+            ElMessage.error('取消关联失败,API异常')
+          })
+      })
+    }
     function processingSchool (state) {
     function processingSchool (state) {
       console.log(tableData.value, original.value, '原始数据和变更数据')
       console.log(tableData.value, original.value, '原始数据和变更数据')
       state ? tableData.value = original.value : ''
       state ? tableData.value = original.value : ''
@@ -308,8 +387,8 @@ export default {
       })
       })
     }
     }
     //加载所有学区信息
     //加载所有学区信息
-    function areaData () {
-      proxy.$api.getCapacity({}).then((res) => {
+    async function areaData () {
+      await proxy.$api.getCapacity({}).then((res) => {
         console.log(res, '学区信息')
         console.log(res, '学区信息')
         res.state === 200 ? res.areas.forEach((item) => { areaList.value.data.push({ value: item.id, label: item.name, situate: item.institution }) }) : ''
         res.state === 200 ? res.areas.forEach((item) => { areaList.value.data.push({ value: item.id, label: item.name, situate: item.institution }) }) : ''
       }).catch((error) => {
       }).catch((error) => {
@@ -339,6 +418,7 @@ export default {
               }
               }
             }
             }
             tableData.value = res.joinAreaSchools
             tableData.value = res.joinAreaSchools
+            processingSchool()
             nextpageToken.value = null
             nextpageToken.value = null
           }
           }
           loadingData.value.list = false
           loadingData.value.list = false
@@ -348,6 +428,25 @@ export default {
         })
         })
       }
       }
     }
     }
+    //处理显示目前关联的
+    async function nowRelevance (value) {
+      nowUsers.value = JSON.parse(JSON.stringify(value))
+      if (areaList.value.data.length === 1) {
+        await areaData()
+      }
+      getSchoolList()
+      let nowUserdata = nowUsers.value
+      nowUserdata.handleSchools.forEach((item) => {
+        let areaIds = item.areaId
+        item.areaName = ''; item.institution = ''
+        for (let i of areaList.value.data) {
+          console.log(i, '值123')
+          i.value === areaIds ? (item.areaName = i.label, item.institution = i.situate) : ''
+        }
+      })
+      nowUsers.value.handleSchools = nowUserdata.handleSchools
+      loadingData.value.possess = false
+    }
     watch(scrollHeight, (newdata, olddata) => {
     watch(scrollHeight, (newdata, olddata) => {
       console.log(newdata, olddata, '监听的数据')
       console.log(newdata, olddata, '监听的数据')
       if (newdata < olddata) {
       if (newdata < olddata) {
@@ -357,7 +456,7 @@ export default {
     watch(
     watch(
       props,
       props,
       (newuser) => {
       (newuser) => {
-        newuser ? (nowUsers.value = newuser.userdata, loadingData.value.possess = false, processingSchool(true)) : ''
+        newuser ? (nowRelevance(newuser.userdata), processingSchool(true)) : ''
         console.log(nowUsers.value, '触发监听')
         console.log(nowUsers.value, '触发监听')
       },
       },
       { immediate: true, deep: true }
       { immediate: true, deep: true }
@@ -369,8 +468,7 @@ export default {
         tableData.value = original.value
         tableData.value = original.value
       }
       }
     })
     })
-    getSchoolList()
-    areaData()
+    // areaData()
     return {
     return {
       tableData,
       tableData,
       tableDatas,
       tableDatas,
@@ -390,7 +488,11 @@ export default {
       areaData,
       areaData,
       loadingData,
       loadingData,
       areaList,
       areaList,
-      getAreaschool
+      getAreaschool,
+      removeBatchschool,
+      multipeRemove,
+      removeBatch,
+      nowRelevance
     }
     }
   },
   },
 }
 }
@@ -479,7 +581,8 @@ export default {
   color: #ecf0f1;
   color: #ecf0f1;
   margin: 0 auto;
   margin: 0 auto;
 }
 }
-.areaitem-name {
+.areaitem-name,
+.correlationbox-num {
   color: #409eff;
   color: #409eff;
 }
 }
 .areaitem-insti {
 .areaitem-insti {

+ 1 - 1
TEAMModelOS.FunctionV4/HttpTrigger/IESHttpTrigger.cs

@@ -165,7 +165,7 @@ namespace TEAMModelOS.FunctionV4.HttpTrigger
                                     foreach (var subject in subjects)
                                     foreach (var subject in subjects)
                                     {
                                     {
                                         //获取同名学科,且没绑定的
                                         //获取同名学科,且没绑定的
-                                        var sub = period.subjects.FindAll(sub => sub.name.Equals(subject) && string.IsNullOrWhiteSpace(sub.bindId));
+                                        var sub = period.subjects.FindAll(sub => sub.name.Contains(subject) && string.IsNullOrWhiteSpace(sub.bindId));
                                         if (sub.IsNotEmpty())
                                         if (sub.IsNotEmpty())
                                         {
                                         {
                                             sub[0].bindId = unBindId;
                                             sub[0].bindId = unBindId;

+ 3 - 0
TEAMModelOS.SDK/Models/Cosmos/Common/LessonRecord.cs

@@ -359,6 +359,9 @@ namespace TEAMModelOS.SDK.Models
         /// 学生互动率
         /// 学生互动率
         /// </summary>
         /// </summary>
         public double clientInteractionAverge { get; set; } = 0;
         public double clientInteractionAverge { get; set; } = 0;
+        /// <summary>
+        /// 测验次数
+        /// </summary>
         public int examCount { get; set; }
         public int examCount { get; set; }
         public LearningCategory learningCategory { get; set; }
         public LearningCategory learningCategory { get; set; }
     }
     }

+ 0 - 74
TEAMModelOS.SDK/Models/Cosmos/Student/FiveEducate.cs

@@ -1,74 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace TEAMModelOS.SDK.Models.Cosmos.Student
-{
-    /// <summary>
-    /// 五育数据看板结构
-    /// </summary>
-    public class FiveEducate : CosmosEntity
-    {
-        public string semesterName { get; set; }
-        public int year { get; set; }
-        public string semesterId { get; set; }
-        public string schoolCode { get; set; }
-        public string studentId { get; set; }
-        public string name { get; set; }
-        public List<string> classId { get; set; } = new List<string>();
-        public string periodId { get; set; }
-        public int grade { get; set; }
-        List<SemesterData> sports { get; set; }
-    }
-
-
-    /// <summary>
-    /// 保存学生画像  第三方传入的学校
-    /// </summary>
-    public class Portrait
-    {
-        public string schoolCode { get; set; } //学校编码
-        public string studentId { get; set; }//学生编号
-        public string name { get; set; }//学生姓名
-        public string classId { get; set; }//行政班id
-        public string periodId { get; set; }//学段id
-        public string subjectId { get; set; }//体育科目id
-        public List<SemesterData> semesterData { get; set; }//学期数据
-    }
-
-    /// <summary>
-    /// 学期数据
-    /// </summary>
-    public class SemesterData
-    {
-        public string examName { get; set; } //评测名称
-        public string examId { get; set; }//用于数据新增或更新
-
-        public long examDate { get; set; } //评测时间,13位时间戳
-        public string examType { get; set; }  //评测类型 期末,期中,季考,月考,周考,测验,练习,作业,课中
-
-        public int year { get; set; }//所属学年,学年跨年,按上一年。
-
-        public int semester { get; set; }//学期,与semesterId选填其一
-
-        public string semesterId { get; set; }//学期id 
-        public double sumScore { get; set; }//总成绩
-
-        public double excellenceRate { get; set; }//优秀率
-
-        public double passRate { get; set; }//及格率
-        public List<ItemScore> itemScore { get; set; } //考核项目数据
-
-    }
-
-    /// <summary>
-    /// 考核项目数据
-    /// </summary>
-    public class ItemScore
-    {
-        public string name { get; set; }//项目名称
-        public double score { get; set; }//项目分数
-    }
-}

+ 209 - 0
TEAMModelOS.SDK/Models/Cosmos/Student/OverallEducation.cs

@@ -0,0 +1,209 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace TEAMModelOS.SDK.Models.Cosmos.Student
+{
+    /// <summary>
+    /// 德智体美劳全面
+    /// </summary>
+    public class OverallEducation : CosmosEntity
+    {
+        // id="2021-semesterId"
+        /// <summary>
+        /// 
+        /// </summary>
+        public string semesterName { get; set; }
+        /// <summary>
+        /// 所属学年,学年跨年,按上一年。 2021学年包含 2021年和2022年,且2022年上半年的学期也属于2021
+        /// </summary>
+        public int year { get; set; }
+        /// <summary>
+        /// 学期id
+        /// </summary>
+        public string semesterId { get; set; }
+        /// <summary>
+        /// 学校编码
+        /// </summary>
+        public string schoolCode { get; set; }
+        /// <summary>
+        /// 学生id
+        /// </summary>
+        public string studentId { get; set; }
+        /// <summary>
+        /// 学生姓名
+        /// </summary>
+        public string name { get; set; }
+        /// <summary>
+        /// 所属行政班
+        /// </summary>
+        public string  classId { get; set; } 
+        /// <summary>
+        /// 学段
+        /// </summary>
+        public string periodId { get; set; }
+        /// <summary>
+        /// 年级
+        /// </summary>
+        public int grade { get; set; }
+        /// <summary>
+        /// 德育
+        /// </summary>
+        public List<EducationScore> virtue { get; set; } = new List<EducationScore>();
+        /// <summary>
+        /// 智育
+        /// </summary>
+        public List<EducationScore> intelligence { get; set; } = new List<EducationScore>();
+        /// <summary>
+        /// 体育
+        /// </summary>
+        public List<EducationScore> sports { get; set; } = new List<EducationScore>();
+        /// <summary>
+        /// 艺术
+        /// </summary>
+        public List<EducationScore> art { get; set; } = new List<EducationScore>();
+        /// <summary>
+        /// 劳动
+        /// </summary>
+        public List<EducationScore> labour { get; set; } = new List<EducationScore>();
+
+    }
+    public class EducationScore {
+        /// <summary>
+        /// //评测名称
+        /// </summary>
+        public string examName { get; set; } 
+        /// <summary>
+        /// //用于数据新增或更新
+        /// </summary>
+        public string examId { get; set; }
+        /// <summary>
+        /// //评测时间,13位时间戳
+        /// </summary>
+        public long examDate { get; set; } 
+        /// <summary>
+        ///  //评测类型 期末,期中,季考,月考,周考,测验,练习,作业,课中
+        /// </summary>
+        public string examType { get; set; }
+        /// <summary>
+        /// 满分
+        /// </summary>
+        public double full { get; set; } = 100;
+        /// <summary>
+        /// 总分得分率
+        /// </summary>
+        public double rate { get; set; }
+        /// <summary>
+        /// 总分等级
+        /// </summary>
+        public double level { get; set; }
+        /// <summary>
+        /// //总成绩
+        /// </summary>
+        public double sumScore { get; set; }
+        /// <summary>
+        /// 细项优秀率
+        /// </summary>
+        public double excellenceRate { get; set; }
+        /// <summary>
+        /// 细项及格率
+        /// </summary>
+        public double passRate { get; set; }
+        /// <summary>
+        /// 考核项目数据
+        /// </summary>
+        public List<ItemScore> itemScore { get; set; } = new List<ItemScore>();
+    }
+
+    /// <summary>
+    /// 考核项目数据
+    /// </summary>
+    public class ItemScore
+    {
+        /// <summary>
+        /// 项目名称
+        /// </summary>
+        public string name { get; set; }//项目名称
+        /// <summary>
+        /// 项目分数
+        /// </summary>
+        public double score { get; set; }//
+        /// <summary>
+        /// 评分等级
+        /// </summary>
+        public double level { get; set; }
+        /// <summary>
+        /// 细项考核时间
+        /// </summary>
+        public long time { get; set; }
+    }
+
+
+    /// <summary>
+    /// 保存学生画像  第三方传入的学校
+    /// </summary>
+    public class Portrait
+    {
+        public string schoolCode { get; set; } //学校编码
+        public string studentId { get; set; }//学生编号
+        public string name { get; set; }//学生姓名
+        public string classId { get; set; }//行政班id
+        public string periodId { get; set; }//学段id
+        public string subjectId { get; set; }//体育科目id
+        public List<SemesterData> semesterData { get; set; }//学期数据
+    }
+
+    /// <summary>
+    /// 学期数据
+    /// </summary>
+    public class SemesterData
+    {
+        /// <summary>
+        /// //评测名称
+        /// </summary>
+        public string examName { get; set; } 
+        /// <summary>
+        /// //用于数据新增或更新
+        /// </summary>
+        public string examId { get; set; }
+        /// <summary>
+        ///  //评测时间,13位时间戳
+        /// </summary>
+        public long examDate { get; set; }
+        /// <summary>
+        ///  //评测类型 期末,期中,季考,月考,周考,测验,练习,作业,课中
+        /// </summary>
+        public string examType { get; set; } 
+        /// <summary>
+        /// //所属学年,学年跨年,按上一年。
+        /// </summary>
+        public int year { get; set; }
+        /// <summary>
+        /// 学期,与semesterId选填其一
+        /// </summary>
+        public int semester { get; set; }
+        /// <summary>
+        /// //学期id 
+        /// </summary>
+        public string semesterId { get; set; }
+        /// <summary>
+        /// //总成绩
+        /// </summary>
+        public double sumScore { get; set; }
+        /// <summary>
+        /// //优秀率
+        /// </summary>
+        public double excellenceRate { get; set; }
+        /// <summary>
+        /// //及格率
+        /// </summary>
+
+        public double passRate { get; set; }
+        /// <summary>
+        /// //考核项目数据
+        /// </summary>
+        public List<ItemScore> itemScore { get; set; } 
+    }
+}

+ 60 - 60
TEAMModelOS/ClientApp/public/lang/zh-CN.js

@@ -504,7 +504,7 @@ const LANG_ZH_CN = {
         hadExp: '(已到期)',
         hadExp: '(已到期)',
         unuse: '(未启用)',
         unuse: '(未启用)',
         forever: '(永久授权)',
         forever: '(永久授权)',
-        longTime:'长期授权',
+        longTime: '长期授权',
         useInfo: '使用状况:',
         useInfo: '使用状况:',
         unband: '解绑设备',
         unband: '解绑设备',
         cancel: '取消',
         cancel: '取消',
@@ -1110,7 +1110,7 @@ const LANG_ZH_CN = {
         classStuErr: '获取班级名单失败',
         classStuErr: '获取班级名单失败',
         unGroup: '未分组学生',
         unGroup: '未分组学生',
         setGroupName: '请设置组名',
         setGroupName: '请设置组名',
-        filterExpList:'到期名单',
+        filterExpList: '到期名单',
 
 
         //NewCusMgt.vue
         //NewCusMgt.vue
         schdTable: '课表模式',
         schdTable: '课表模式',
@@ -3065,13 +3065,13 @@ const LANG_ZH_CN = {
         attendCount: '出席率',
         attendCount: '出席率',
         groupCount: '小组数',
         groupCount: '小组数',
         totalPoint: '总记分',
         totalPoint: '总记分',
-        collateTaskCount: '任务总数',
+        collateTaskCount: '合作学习',
         collateCount: '作品总数',
         collateCount: '作品总数',
-        pushCount: '推送资源数',
+        pushCount: '差异教学',
         score: '总互动分',
         score: '总互动分',
         interactionCount: '互动题数',
         interactionCount: '互动题数',
-        clientInteractionCount: '互动总数',
-        examQuizCount: '测验总题数',
+        clientInteractionCount: '互动教学',
+        examQuizCount: '精准教学',
         examPointRate: '测验得分率',
         examPointRate: '测验得分率',
         action: '操作',
         action: '操作',
         allTable: '课例数据汇总表',
         allTable: '课例数据汇总表',
@@ -3096,7 +3096,7 @@ const LANG_ZH_CN = {
             pie1: '教研组',
             pie1: '教研组',
             pie2: '课例类别',
             pie2: '课例类别',
             pie3: '年级',
             pie3: '年级',
-            pie4: '科',
+            pie4: '科',
             title2: '课例趋势图',
             title2: '课例趋势图',
             title3: '减负数据分析',
             title3: '减负数据分析',
             title4: '常用科技工具统计',
             title4: '常用科技工具统计',
@@ -3422,7 +3422,7 @@ const LANG_ZH_CN = {
         dashboard: {
         dashboard: {
             title: '校园大数据',
             title: '校园大数据',
             title3: '五育并举大数据看板',
             title3: '五育并举大数据看板',
-            block1: '教学数据',
+            block1: '教学数据看板',
             block2: '教室物联',
             block2: '教室物联',
             block3: '德育评价',
             block3: '德育评价',
             block4: '学情分析',
             block4: '学情分析',
@@ -3433,7 +3433,7 @@ const LANG_ZH_CN = {
             comingSoon: '即将上线',
             comingSoon: '即将上线',
             loading: '加载中',
             loading: '加载中',
             quit: '退出',
             quit: '退出',
-            title2: '教学数据',
+            title2: '教学数据看板',
         },
         },
         // 播放视频
         // 播放视频
         video: {
         video: {
@@ -3687,7 +3687,7 @@ const LANG_ZH_CN = {
         irsRep: 'IRS号码重复',
         irsRep: 'IRS号码重复',
         noRep: '座号重复',
         noRep: '座号重复',
         getTeachersErr: '获取教师列表失败',
         getTeachersErr: '获取教师列表失败',
-        gdFreeze:'已毕业的班级不能被删除和修改',
+        gdFreeze: '已毕业的班级不能被删除和修改',
 
 
         //ClassMgt.vue
         //ClassMgt.vue
         className: '名称',
         className: '名称',
@@ -5451,8 +5451,8 @@ const LANG_ZH_CN = {
             trainCheck: '研修考核',
             trainCheck: '研修考核',
             activity: '活动平台',
             activity: '活动平台',
             trainSystem: '研修平台',
             trainSystem: '研修平台',
-            artExam:'评测活动',
-            artExam1:'评测考核',
+            artExam: '评测活动',
+            artExam1: '评测考核',
         },
         },
         compt: {
         compt: {
             cusWare: '课件',
             cusWare: '课件',
@@ -5629,8 +5629,8 @@ const LANG_ZH_CN = {
     },
     },
     // 教师管理
     // 教师管理
     teachContent: {
     teachContent: {
-        ext1:'请保持后缀名与源文件后缀名',
-        ext2:'一致!',
+        ext1: '请保持后缀名与源文件后缀名',
+        ext2: '一致!',
         recent: '最近',
         recent: '最近',
         recentTips: '临时缓存最近上传的资源,最多保存20条。退出账号或更换电脑缓存记录将会被清空。',
         recentTips: '临时缓存最近上传的资源,最多保存20条。退出账号或更换电脑缓存记录将会被清空。',
         filterRes: '教材',
         filterRes: '教材',
@@ -6950,51 +6950,51 @@ const LANG_ZH_CN = {
         rate: '占比'
         rate: '占比'
     },
     },
     // 艺术评价模块
     // 艺术评价模块
-    ae:{
-        ae0:'评测',
-        ae1:'材料',
-        ae2:'名称',
-        ae3:'请输入艺术评测活动名称',
-        ae4:'学科',
-        ae5:'请选择艺术评测活动学科',
-        ae6:'班级',
-        ae7:'时间',
-        ae8:'请设置评测时间',
-        ae9:'评价指标',
-        ae10:'音乐',
-        ae11:'美术',
-        ae12:'艺术评测发布成功',
-        ae13:'艺术评测发布失败',
-        ae14:'试卷复制失败',
-        ae15:'查询发布对象失败',
-        ae16:'评测试卷:',
-        ae17:'重选',
-        ae18:'请挑选评测试卷',
-        ae19:'作答方式:',
-        ae20:'默认排序',
-        ae21:'乱序作答',
-        ae22:'挑选艺术评测试卷',
-        ae23:'试卷来源:',
-        ae24:'醍摩豆',
-        ae25:'本校',
-        ae26:'返回试卷列表',
-        ae27:'参数异常',
-        ae28:'艺术评测活动',
-        ae29:'未提交',
-        ae30:'暂无区级艺术评测指标',
-        ae31:'删除艺术评测活动',
-        ae32:'是否确认删除',
-        ae33:'删除成功',
-        ae34:'删除失败',
-        ae35:'获取班级列表失败',
-        ae36:'提交时间',
-        ae37:'材料描述:',
-        ae38:'请输入材料描述...',
-        ae39:'请完成评价指标详细设置',
-        ae40:'请完成',
-        ae41:'详细设置',
-        ae42:'试卷不可用',
-        ae43:'艺术评测试卷只能包含客观题(单选、多选、判断),请重新挑选试卷或前往试卷库修改当前试卷。',
-        ae44:'试卷数据异常',
+    ae: {
+        ae0: '评测',
+        ae1: '材料',
+        ae2: '名称',
+        ae3: '请输入艺术评测活动名称',
+        ae4: '学科',
+        ae5: '请选择艺术评测活动学科',
+        ae6: '班级',
+        ae7: '时间',
+        ae8: '请设置评测时间',
+        ae9: '评价指标',
+        ae10: '音乐',
+        ae11: '美术',
+        ae12: '艺术评测发布成功',
+        ae13: '艺术评测发布失败',
+        ae14: '试卷复制失败',
+        ae15: '查询发布对象失败',
+        ae16: '评测试卷:',
+        ae17: '重选',
+        ae18: '请挑选评测试卷',
+        ae19: '作答方式:',
+        ae20: '默认排序',
+        ae21: '乱序作答',
+        ae22: '挑选艺术评测试卷',
+        ae23: '试卷来源:',
+        ae24: '醍摩豆',
+        ae25: '本校',
+        ae26: '返回试卷列表',
+        ae27: '参数异常',
+        ae28: '艺术评测活动',
+        ae29: '未提交',
+        ae30: '暂无区级艺术评测指标',
+        ae31: '删除艺术评测活动',
+        ae32: '是否确认删除',
+        ae33: '删除成功',
+        ae34: '删除失败',
+        ae35: '获取班级列表失败',
+        ae36: '提交时间',
+        ae37: '材料描述:',
+        ae38: '请输入材料描述...',
+        ae39: '请完成评价指标详细设置',
+        ae40: '请完成',
+        ae41: '详细设置',
+        ae42: '试卷不可用',
+        ae43: '艺术评测试卷只能包含客观题(单选、多选、判断),请重新挑选试卷或前往试卷库修改当前试卷。',
+        ae44: '试卷数据异常',
     }
     }
 }
 }

+ 54 - 54
TEAMModelOS/ClientApp/public/lang/zh-TW.js

@@ -504,7 +504,7 @@ const LANG_ZH_TW = {
         hadExp: '(已到期)',
         hadExp: '(已到期)',
         unuse: '(未啟用)',
         unuse: '(未啟用)',
         forever: '(永久授權)',
         forever: '(永久授權)',
-        longTime:'長期授權',
+        longTime: '長期授權',
         useInfo: '使用狀況:',
         useInfo: '使用狀況:',
         unband: '解綁設備',
         unband: '解綁設備',
         cancel: '取消',
         cancel: '取消',
@@ -1110,7 +1110,7 @@ const LANG_ZH_TW = {
         classStuErr: '獲取班級名單失敗',
         classStuErr: '獲取班級名單失敗',
         unGroup: '未分組學生',
         unGroup: '未分組學生',
         setGroupName: '請設定組名',
         setGroupName: '請設定組名',
-        filterExpList:'到期名單',
+        filterExpList: '到期名單',
 
 
         //NewCusMgt.vue
         //NewCusMgt.vue
         schdTable: '課表模式',
         schdTable: '課表模式',
@@ -3098,7 +3098,7 @@ const LANG_ZH_TW = {
             pie1: '教師群組',
             pie1: '教師群組',
             pie2: '課堂類別',
             pie2: '課堂類別',
             pie3: '年級',
             pie3: '年級',
-            pie4: '科',
+            pie4: '科',
             title2: '課堂趨勢圖',
             title2: '課堂趨勢圖',
             title3: '活動類型分析',
             title3: '活動類型分析',
             title4: '常用科技工具統計',
             title4: '常用科技工具統計',
@@ -3688,7 +3688,7 @@ const LANG_ZH_TW = {
         irsRep: 'IRS號碼重複',
         irsRep: 'IRS號碼重複',
         noRep: '座號重複',
         noRep: '座號重複',
         getTeachersErr: '獲取教師列表失敗',
         getTeachersErr: '獲取教師列表失敗',
-        gdFreeze:'已畢業的班級不能被刪除和修改',
+        gdFreeze: '已畢業的班級不能被刪除和修改',
 
 
         //ClassMgt.vue
         //ClassMgt.vue
         className: '名稱',
         className: '名稱',
@@ -5452,8 +5452,8 @@ const LANG_ZH_TW = {
             trainCheck: '研習審核',
             trainCheck: '研習審核',
             activity: '活動平臺',
             activity: '活動平臺',
             trainSystem: '研習平臺',
             trainSystem: '研習平臺',
-            artExam:'評測活動',
-            artExam1:'評測考核',
+            artExam: '評測活動',
+            artExam1: '評測考核',
         },
         },
         compt: {
         compt: {
             cusWare: '教材',
             cusWare: '教材',
@@ -5630,8 +5630,8 @@ const LANG_ZH_TW = {
     },
     },
     // 教师管理
     // 教师管理
     teachContent: {
     teachContent: {
-        ext1:'請保持後綴名與源文件後綴名',
-        ext2:'一致!',
+        ext1: '請保持後綴名與源文件後綴名',
+        ext2: '一致!',
         recent: '最近',
         recent: '最近',
         recentTips: '暫存最近上傳的資源,最多儲存20條。 登出帳號或是更換電腦,暫存紀錄將會被清空。 ',
         recentTips: '暫存最近上傳的資源,最多儲存20條。 登出帳號或是更換電腦,暫存紀錄將會被清空。 ',
         filterRes: '教材',
         filterRes: '教材',
@@ -6950,51 +6950,51 @@ const LANG_ZH_TW = {
         rate: '比例'
         rate: '比例'
     },
     },
     // 艺术评价模块
     // 艺术评价模块
-    ae:{
-        ae0:'評量',
-        ae1:'材料',
-        ae2:'名稱',
-        ae3:'請輸入藝術評量活動名稱',
-        ae4:'學科',
-        ae5:'請選擇藝術評量活動科目',
-        ae6:'班級',
-        ae7:'時間',
-        ae8:'請設置評量時間',
-        ae9:'評量指標',
-        ae10:'音樂',
-        ae11:'美術',
-        ae12:'藝術評量發布成功',
-        ae13:'藝術評量發布失敗',
-        ae14:'試卷複製失敗',
-        ae15:'查詢發佈對象失敗',
-        ae16:'評量試卷:',
-        ae17:'重選',
-        ae18:'請挑選評量試卷',
-        ae19:'作答方式:',
-        ae20:'預設排序',
-        ae21:'亂序作答',
-        ae22:'挑選藝術評量試卷',
-        ae23:'試卷來源:',
-        ae24:'醍摩豆',
-        ae25:'本校',
-        ae26:'返回試卷列表',
-        ae27:'參數異常',
-        ae28:'藝術評量活動',
-        ae29:'未提交',
-        ae30:'暫無區級藝術評量指標',
-        ae31:'刪除藝術評量活動',
-        ae32:'是否確認刪除',
-        ae33:'刪除成功',
-        ae34:'刪除失敗',
-        ae35:'獲取班級列表失敗',
-        ae36:'繳交時間',
-        ae37:'資料描述:',
-        ae38:'請輸入資料描述...',
-        ae39:'請完成評量指標詳細設定',
-        ae40:'請完成',
-        ae41:'詳細設定',
-        ae42:'試卷不可用',
-        ae43:'藝術評量試卷只能包含客觀類題型(單選、複選、是非),請重新挑選試卷或前往試卷庫修改當前試卷。 ',
-        ae44:'試卷資料異常',
+    ae: {
+        ae0: '評量',
+        ae1: '材料',
+        ae2: '名稱',
+        ae3: '請輸入藝術評量活動名稱',
+        ae4: '學科',
+        ae5: '請選擇藝術評量活動科目',
+        ae6: '班級',
+        ae7: '時間',
+        ae8: '請設置評量時間',
+        ae9: '評量指標',
+        ae10: '音樂',
+        ae11: '美術',
+        ae12: '藝術評量發布成功',
+        ae13: '藝術評量發布失敗',
+        ae14: '試卷複製失敗',
+        ae15: '查詢發佈對象失敗',
+        ae16: '評量試卷:',
+        ae17: '重選',
+        ae18: '請挑選評量試卷',
+        ae19: '作答方式:',
+        ae20: '預設排序',
+        ae21: '亂序作答',
+        ae22: '挑選藝術評量試卷',
+        ae23: '試卷來源:',
+        ae24: '醍摩豆',
+        ae25: '本校',
+        ae26: '返回試卷列表',
+        ae27: '參數異常',
+        ae28: '藝術評量活動',
+        ae29: '未提交',
+        ae30: '暫無區級藝術評量指標',
+        ae31: '刪除藝術評量活動',
+        ae32: '是否確認刪除',
+        ae33: '刪除成功',
+        ae34: '刪除失敗',
+        ae35: '獲取班級列表失敗',
+        ae36: '繳交時間',
+        ae37: '資料描述:',
+        ae38: '請輸入資料描述...',
+        ae39: '請完成評量指標詳細設定',
+        ae40: '請完成',
+        ae41: '詳細設定',
+        ae42: '試卷不可用',
+        ae43: '藝術評量試卷只能包含客觀類題型(單選、複選、是非),請重新挑選試卷或前往試卷庫修改當前試卷。 ',
+        ae44: '試卷資料異常',
     }
     }
 }
 }

+ 11 - 14
TEAMModelOS/ClientApp/src/components/research-dashboard/BaseTechBar.vue

@@ -9,23 +9,13 @@ export default {
     }
     }
   },
   },
   methods: {
   methods: {
-    doRender() {
+    doRender(data) {
       let myChart = this.$echarts.init(document.getElementById('baseTechBar'))
       let myChart = this.$echarts.init(document.getElementById('baseTechBar'))
       var echartsData = {
       var echartsData = {
         title: 'title',
         title: 'title',
         city: ['互动教学', '合作学习', '差异教学', '精准教学'],
         city: ['互动教学', '合作学习', '差异教学', '精准教学'],
-        legend: ['一年级', '二年级', '三年级', '四年级'],
-        data: this.isTestSite ? [
-          [0, 0, 0, 0],
-          [0, 0, 0, 0],
-          [0, 0, 0, 0],
-          [0, 0, 0, 0],
-        ] : [
-          [1550, 1260, 2125, 1800],
-          [929, 945, 1012, 930],
-          [2310, 2890, 3198, 3645],
-          [1670, 2337, 2724, 2990],
-        ],
+        legend: data.legend,
+        data: data.data,
       };
       };
       var colors = ['#F56679', '#4C98FB', '#8CDF6C', '#9D50E0'];
       var colors = ['#F56679', '#4C98FB', '#8CDF6C', '#9D50E0'];
       let option = {
       let option = {
@@ -130,7 +120,14 @@ export default {
     }
     }
   },
   },
   mounted() {
   mounted() {
-    this.doRender()
+    let pieJson = this.$store.state.dashboard.researchDashboard
+    let echartJson = {
+      legend: pieJson.teachingCount.map(i => i.name),
+      data: pieJson.teachingCount.map(i => {
+        return [i.clientInteractionCount, i.collateTaskCount, i.pushCount, i.examCount]
+      })
+    }
+    this.doRender(echartJson)
   },
   },
   computed: {
   computed: {
     isTestSite() {
     isTestSite() {

+ 112 - 119
TEAMModelOS/ClientApp/src/components/research-dashboard/LeftBottom.vue

@@ -1,133 +1,126 @@
 <template>
 <template>
-	<div id="bottomLeft">
-		<p class="dashboard-block-title">
-			<Icon type="md-pie" />
-			<span>{{ $t('lessonRecord.echarts.title1') }}</span>
-			<dv-decoration-3 class="dv-dec-3" />
-		</p>
-		<div class="bg-color-black">
-			<div class="pie-item">
-				<BasePie :title="$t('lessonRecord.echarts.pie3')" :pieData="gradeData"/>
-			</div>
-			<div class="pie-item">
-				<BasePie :title="$t('lessonRecord.echarts.pie4')" :pieData="subjectData"/>
-			</div>
-			<div class="pie-item">
-				<BasePie :title="$t('lessonRecord.echarts.pie1')" :pieData="groupData"/>
-			</div>
-			<div class="pie-item">
-				<BasePie :title="$t('lessonRecord.echarts.pie2')" :pieData="cateData"/>
-			</div>
-		</div>
-	</div>
+  <div id="bottomLeft">
+    <p class="dashboard-block-title">
+      <Icon type="md-pie" />
+      <span>{{ $t('lessonRecord.echarts.title1') }}</span>
+      <dv-decoration-3 class="dv-dec-3" />
+    </p>
+    <div class="bg-color-black">
+      <div class="pie-item">
+        <BasePie :title="$t('lessonRecord.echarts.pie3')" :pieData="gradeData" />
+      </div>
+      <div class="pie-item">
+        <BasePie :title="$t('lessonRecord.echarts.pie4')" :pieData="subjectData" />
+      </div>
+      <div class="pie-item">
+        <BasePie :title="$t('lessonRecord.echarts.pie1')" :pieData="groupData" />
+      </div>
+      <div class="pie-item">
+        <BasePie :title="$t('lessonRecord.echarts.pie2')" :pieData="cateData" />
+      </div>
+    </div>
+  </div>
 </template>
 </template>
 
 
 <script>
 <script>
-	import BasePie from '@/components/echart/pie/index'
-	export default {
-		components: {
-			BasePie
-		},
-		data() {
-			return {
-				groupData: [],
-				cateData:[],
-				gradeData:[],
-				subjectData:[]
-			}
-		},
-		created() {
-			let pieJson = this.$store.state.dashboard.researchDashboard
-			let curPeriod = this.$store.state.user.curPeriod
-			console.log(curPeriod.subjects.map(i => i.id))
-			if(pieJson){
-				this.gradeData = pieJson.classify_grade.map(i => {
-					return {
-						name:curPeriod.grades[+i.name],
-						value:i.value
-					}
-				})
-				
-				this.subjectData = pieJson.classify_sub.map(i => {
-					let findSubject = curPeriod.subjects.find(j => j.id === i.name)
-					return {
-						name:findSubject ? findSubject.name : this.$t('vote.form.noMatchDataTip'),
-						value:i.value
-					}
-				})
-				
-				if(!pieJson.classify_group.length){
-					this.groupData = [{
-						name:this.$t('lessonRecord.echarts.noGroup'),
-						value:0
-					}]
-				}else{
-					this.groupData = pieJson.classify_group.map(i => {
-						return {
-							name:i.name,
-							value:i.value
-						}
-					})
-				}
-				
-				if(!pieJson.classify_type.length){
-					this.cateData = [{
-						name:this.$t('lessonRecord.echarts.noType'),
-						value:0
-					}]
-				}else{
-					this.cateData = pieJson.classify_type.map(i => {
-						return {
-							name:i.name,
-							value:i.value
-						}
-					})
-				}
-				
-			}
-		},
-	}
+import BasePie from '@/components/echart/pie/index'
+export default {
+  components: {
+    BasePie
+  },
+  data() {
+    return {
+      groupData: [],
+      cateData: [],
+      gradeData: [],
+      subjectData: []
+    }
+  },
+  created() {
+    let pieJson = this.$store.state.dashboard.researchDashboard
+    let curPeriod = this.$store.state.user.curPeriod
+    console.log(curPeriod.subjects.map(i => i.id))
+    if (pieJson) {
+      this.gradeData = pieJson.classify_grade
+      this.subjectData = pieJson.classify_sub.map(i => {
+        let findSubject = curPeriod.subjects.find(j => j.id === i.name)
+        return {
+          name: findSubject ? findSubject.name : this.$t('vote.form.noMatchDataTip'),
+          value: i.value
+        }
+      })
+
+      if (!pieJson.classify_group.length) {
+        this.groupData = [{
+          name: this.$t('lessonRecord.echarts.noGroup'),
+          value: 0
+        }]
+      } else {
+        this.groupData = pieJson.classify_group.map(i => {
+          return {
+            name: i.name,
+            value: i.value
+          }
+        })
+      }
+
+      if (!pieJson.classify_type.length) {
+        this.cateData = [{
+          name: this.$t('lessonRecord.echarts.noType'),
+          value: 0
+        }]
+      } else {
+        this.cateData = pieJson.classify_type.map(i => {
+          return {
+            name: i.name,
+            value: i.value
+          }
+        })
+      }
+
+    }
+  },
+}
 </script>
 </script>
 
 
 <style lang="less" scoped>
 <style lang="less" scoped>
-	@box-height: 100%;
-	@box-width: 100%;
-
-	#bottomLeft {
-		padding: 20px 16px;
-		height: @box-height;
-		width: @box-width;
-		display: flex;
-		flex-direction: column;
-		justify-content: space-between;
+@box-height: 100%;
+@box-width: 100%;
 
 
+#bottomLeft {
+  padding: 20px 16px;
+  height: @box-height;
+  width: @box-width;
+  display: flex;
+  flex-direction: column;
+  justify-content: space-between;
 
 
-		.bg-color-black {
-			height: 96%;
-			padding-top: 10px;
-			display: flex;
-			flex-wrap: wrap;
-			justify-content: center;
-			align-items: center;
+  .bg-color-black {
+    height: 96%;
+    padding-top: 10px;
+    display: flex;
+    flex-wrap: wrap;
+    justify-content: center;
+    align-items: center;
 
 
-			.pie-item {
-				width: 48%;
-				height: 48%;
-			}
-		}
+    .pie-item {
+      width: 48%;
+      height: 48%;
+    }
+  }
 
 
-		.text {
-			color: #c3cbde;
-		}
+  .text {
+    color: #c3cbde;
+  }
 
 
-		.chart-box {
-			margin-top: 16px;
-			width: 170px;
-			height: 170px;
+  .chart-box {
+    margin-top: 16px;
+    width: 170px;
+    height: 170px;
 
 
-			.active-ring-name {
-				padding-top: 10px;
-			}
-		}
-	}
+    .active-ring-name {
+      padding-top: 10px;
+    }
+  }
+}
 </style>
 </style>

+ 6 - 0
TEAMModelOS/ClientApp/src/components/student-web/EventView/EventContentTypeTemplate/VoteResultChart.vue

@@ -86,3 +86,9 @@ export default {
     }
     }
 };
 };
 </script>
 </script>
+
+<style scoped>
+#main {
+    height: 350px;
+}
+</style>

+ 24 - 1
TEAMModelOS/ClientApp/src/view/dashboard/Index.vue

@@ -25,6 +25,7 @@
   </div>
   </div>
 </template>
 </template>
 <script>
 <script>
+import { mapGetters } from 'vuex'
 export default {
 export default {
   data(vm) {
   data(vm) {
     return {
     return {
@@ -121,12 +122,34 @@ export default {
         this.$router.push('/stuDetails')
         this.$router.push('/stuDetails')
       } else if (item.path === 'fiveEdu' && localStorage.getItem('srvAdr') === 'China' && ['habook', 'ydzt', 'cdydzt', 'hbcn'].includes(this.$store.state.userInfo.schoolCode)) {
       } else if (item.path === 'fiveEdu' && localStorage.getItem('srvAdr') === 'China' && ['habook', 'ydzt', 'cdydzt', 'hbcn'].includes(this.$store.state.userInfo.schoolCode)) {
         this.$router.push('/fiveEdu')
         this.$router.push('/fiveEdu')
+      } else if (item.path === 'teacher') {
+        this.toPrivSokrate()
       } else {
       } else {
         this.$Message.warning(this.$t('researchCenter.dashboard.comingSoon'))
         this.$Message.warning(this.$t('researchCenter.dashboard.comingSoon'))
       }
       }
-    }
+    },
+    //获取快速登录的code
+    getLoginCode() {
+      this.isLoading = true
+      let idToken = localStorage.getItem('id_token')
+      return this.$api.login.getCode(idToken)
+    },
+    //教师个人跳转苏格拉底
+    toPrivSokrate() {
+      this.getLoginCode().then(
+        res => {
+          let url = `${this.curSiteConfig.sokrateUrl}/auth/login/callback-habook?code=${res.code}`
+          window.open(url)
+        }
+      ).finally(() => {
+        this.isLoading = false
+      })
+    },
   },
   },
   computed: {
   computed: {
+    ...mapGetters({
+      curSiteConfig: 'config/getCurSiteConfig',
+    }),
     /* 判断是否为测试站 */
     /* 判断是否为测试站 */
     isTestSite() {
     isTestSite() {
       return window.location.host.includes('test.teammodel')
       return window.location.host.includes('test.teammodel')

+ 6 - 7
TEAMModelOS/ClientApp/src/view/dashboard/fiveEdu/FiveEdu.vue

@@ -28,7 +28,7 @@
           <dv-decoration-10 class="dv-dec-10-s" />
           <dv-decoration-10 class="dv-dec-10-s" />
         </div>
         </div>
 
 
-        <div class="body-box">
+        <div class="body-box" v-if="activeMenuId === 'all'">
           <!-- 左侧 -->
           <!-- 左侧 -->
           <div class="left-box">
           <div class="left-box">
             <div class="left-box-top">
             <div class="left-box-top">
@@ -169,10 +169,7 @@
           </div>
           </div>
         </div>
         </div>
 
 
-        <!-- <div class="iframe-box" v-if="activeMenuId !== 'all'" style="width:100%;height:100%">
-          <iframe style="width:100%;height:100%" src="https://paas-admin.xydqq.cn/GkI043vXpK9sat5yDW008oaWt9yZ1dwIIq7rdiUywbU4HgI656W2cIbzOWRzoI93vzv82l28DyQKxVVd9qPqFkLLmrlCkIvDlWecschool-datawuhZVGb2K8KM5hlGfU0123tKhKd6b5f84EPUOcszar3ltNpImTPa8BeQtVbcuUtdWUL0zmRaUJRHOlYRVbDofmn9K7XTNwf4Q9mh" frameborder="0" width="100%" height="100%"></iframe>
-        </div> -->
-
+        <StudyDash v-else-if="activeMenuId === 'study'"></StudyDash>
       </div>
       </div>
     </div>
     </div>
   </div>
   </div>
@@ -189,6 +186,7 @@ import BaseMusicCircle from '@/components/dashboard/student/BaseMusicCircle'
 import BaseCircle from '@/components/dashboard/student/BaseCircle'
 import BaseCircle from '@/components/dashboard/student/BaseCircle'
 import StudentDetails from '../Student'
 import StudentDetails from '../Student'
 import BaseProgressBar from '@/components/dashboard/student/BaseProgressBar'
 import BaseProgressBar from '@/components/dashboard/student/BaseProgressBar'
+import StudyDash from '../study/StudyDash'
 export default {
 export default {
   data() {
   data() {
     return {
     return {
@@ -352,6 +350,7 @@ export default {
     }
     }
   },
   },
   components: {
   components: {
+    StudyDash,
     countTo,
     countTo,
     StudentDetails,
     StudentDetails,
     BaseRateLine,
     BaseRateLine,
@@ -384,9 +383,9 @@ export default {
       if (menu.id === 'moral') {
       if (menu.id === 'moral') {
         window.open('https://paas-admin.xydqq.cn/GkI043vXpK9sat5yDW008oaWt9yZ1dwIIq7rdiUywbU4HgI656W2cIbzOWRzoI93vzv82l28DyQKxVVd9qPqFkLLmrlCkIvDlWecschool-datawuhZVGb2K8KM5hlGfU0123tKhKd6b5f84EPUOcszar3ltNpImTPa8BeQtVbcuUtdWUL0zmRaUJRHOlYRVbDofmn9K7XTNwf4Q9mh')
         window.open('https://paas-admin.xydqq.cn/GkI043vXpK9sat5yDW008oaWt9yZ1dwIIq7rdiUywbU4HgI656W2cIbzOWRzoI93vzv82l28DyQKxVVd9qPqFkLLmrlCkIvDlWecschool-datawuhZVGb2K8KM5hlGfU0123tKhKd6b5f84EPUOcszar3ltNpImTPa8BeQtVbcuUtdWUL0zmRaUJRHOlYRVbDofmn9K7XTNwf4Q9mh')
       } else if (menu.id === 'study') {
       } else if (menu.id === 'study') {
-        window.open('https://np3mzo.axshare.com/#id=p2g0pj&p=%E6%99%BA%E8%82%B2%E7%9C%8B%E6%9D%BF%EF%BC%88%E6%A0%A1%E7%BA%A7%EF%BC%89')
+        // window.open('https://np3mzo.axshare.com/#id=p2g0pj&p=%E6%99%BA%E8%82%B2%E7%9C%8B%E6%9D%BF%EF%BC%88%E6%A0%A1%E7%BA%A7%EF%BC%89')
       } else if (menu.id === 'all') {
       } else if (menu.id === 'all') {
-        window.open('https://np3mzo.axshare.com/#id=ck6wma&p=五育看板(总览)')
+        // window.open('https://np3mzo.axshare.com/#id=ck6wma&p=五育看板(总览)')
       } else if (menu.id === 'sport') {
       } else if (menu.id === 'sport') {
         window.open('https://ydztshow.cdwalker.com/app-health-100/smart-course')
         window.open('https://ydztshow.cdwalker.com/app-health-100/smart-course')
       } else if (menu.id === 'art') {
       } else if (menu.id === 'art') {

File diff suppressed because it is too large
+ 258 - 0
TEAMModelOS/ClientApp/src/view/dashboard/study/BaseExamLine.vue


+ 123 - 0
TEAMModelOS/ClientApp/src/view/dashboard/study/BaseRadar.vue

@@ -0,0 +1,123 @@
+<template>
+  <div id="studyRadar" class="art-echart"></div>
+</template>
+<script>
+export default {
+  data() {
+    return {
+      option: null,
+    }
+  },
+  methods: {
+    doRender() {
+      let myChart = this.$echarts.init(document.getElementById('studyRadar'))
+      var dataname = ['记忆', '理解', '应用', '创造', '评价', '分析']
+      var datamax = [20, 20, 20, 20, 20, 20]
+      var datavaule = [10, 16, 20, 15, 12, 18]
+
+      var indicator = []
+      for (var i = 0; i < dataname.length; i++) {
+        indicator.push({
+          name: dataname[i],
+          max: datamax[i],
+        })
+      }
+      let option = {
+        tooltip: {
+          show: false,
+          trigger: "item",
+        },
+        radar: {
+          center: ["50%", "50%"],
+          radius: "90%",
+          startAngle: 240,
+          splitNumber: 5,
+          splitArea: {
+            areaStyle: {
+              color: [
+                'rgba(0,96,208, 0.1)', 'rgba(0,96,208, 0.2)',
+                'rgba(0,96,208, 0.4)', 'rgba(0,96,208, 0.6)',
+                'rgba(0,96,208, 0.8)', 'rgba(0,96,208, 1)'
+              ].reverse()
+            }
+          },
+          axisLabel: {
+            show: false,
+          },
+          axisLine: {
+            show: true,
+            lineStyle: {
+              color: "transparent"
+            }
+          },
+          splitLine: {
+            show: true,
+            lineStyle: {
+              color: "transparent"
+            }
+          },
+          name: {
+            textStyle: {
+              color: '#fff',
+              fontSize: '12',
+              padding: 10
+            }
+          },
+          indicator: indicator
+        },
+
+        series: [{
+          type: "radar",
+          symbol: "circle",
+          symbolSize: 7,
+          areaStyle: {
+            normal: {
+              color: 'rgba(170, 216, 255, 0.2)',
+            }
+          },
+
+          itemStyle: {
+            color: '#84E1FF',
+            borderColor: '#00A7FE',
+            borderWidth: 1,
+          },
+          lineStyle: {
+            normal: {
+              color: "#00A7FE",
+              width: 2
+            }
+          },
+          data: [datavaule]
+        }]
+      };
+      myChart.clear()
+      myChart.setOption(option)
+      window.addEventListener('resize', function () {
+        myChart.resize()
+      })
+
+    }
+  },
+  mounted() {
+    this.doRender()
+  },
+  //   watch: {
+  //     '$store.state.dashboard.artDashboard': {
+  //       deep: true,
+  //       immediate: true,
+  //       handler(n, o) {
+
+  //       }
+  //     }
+  //   }
+}
+</script>
+
+<style>
+.art-echart {
+  width: 100%;
+  height: 100%;
+  margin: 0 auto;
+  display: block;
+}
+</style>

+ 146 - 0
TEAMModelOS/ClientApp/src/view/dashboard/study/BaseSubLine.vue

@@ -0,0 +1,146 @@
+<template>
+  <div id="studySubjectLine" class="art-echart"></div>
+</template>
+<script>
+export default {
+  data() {
+    return {
+      option: null,
+    }
+  },
+  methods: {
+    doRender() {
+      let myChart = this.$echarts.init(document.getElementById('studySubjectLine'))
+      let name = "单科平均分"
+      let xData = [
+        "语文",
+        "数学",
+        "英语",
+        "音乐"
+      ]
+      let yData = [
+        68,
+        84,
+        77,
+        72
+      ]
+      let option = {
+        tooltip: {
+          trigger: 'axis',
+          axisPointer: {            // 坐标轴指示器,坐标轴触发有效
+            type: 'shadow'        // 默认为直线,可选为:'line' | 'shadow'
+          },
+          backgroundColor: 'rgba(13,5,30,.6)',
+          borderColor: ' rgba(255,255,255,.2)',
+          borderWidth: 1,
+          padding: 5
+        },
+        legend: {
+          show: false
+        },
+        grid: {
+          left: '3%',
+          right: '8%',
+          bottom: '5%',
+          top: ' 15%',
+          containLabel: true
+        },
+        xAxis: [
+          {
+            type: 'category',
+            data: xData,
+            splitLine: {
+              show: false
+            },
+            axisLabel: {
+              show: true,
+              // interval: '0',//X轴坐标全显示
+              textStyle: {
+                color: "#fff"
+              }
+            }
+          }
+        ],
+        yAxis: [
+          {
+            type: 'value',
+            splitLine: {
+              show: false
+            },
+            axisLabel: {
+              show: true,
+              textStyle: {
+                color: "#fff"
+              }
+            }
+          }
+        ],
+        series: [
+          {
+            name: name,
+            type: 'bar',
+            barMaxWidth: 20,
+            barMinWidth: 10,
+            minWidth: 5,
+            xAxisIndex: 0,
+            yAxisIndex: 0,
+            itemStyle: {
+              barBorderRadius: 20,
+              normal: {
+                barBorderRadius: 10,
+                color: function (params) {
+                  var colors = []
+                  var maxIndex = 1;
+                  if (params.dataIndex == maxIndex) {
+                    colors = ["#fc532d", "#fe7018", "#ff8706"]
+                  } else {
+                    colors = ["#00aef2", "#0077fe", "#0072ff"];
+                  }
+                  return new echarts.graphic.LinearGradient(0, 0, 1, 0,
+                    [
+                      { offset: 0, color: colors[0] },
+                      { offset: 0.5, color: colors[1] },
+                      { offset: 1, color: colors[2] }
+                    ]);
+                }
+              },
+              emphasis: {
+                color: "#fc532d"
+              }
+            },
+            zlevel: 1,
+            data: yData
+          }
+        ]
+      };
+      myChart.clear()
+      myChart.setOption(option)
+      window.addEventListener('resize', function () {
+        myChart.resize()
+      })
+
+    }
+  },
+  mounted() {
+    this.doRender()
+  },
+  //   watch: {
+  //     '$store.state.dashboard.artDashboard': {
+  //       deep: true,
+  //       immediate: true,
+  //       handler(n, o) {
+
+  //       }
+  //     }
+  //   }
+}
+</script>
+
+<style>
+.art-echart {
+  width: 100%;
+  height: 100%;
+  margin: 0 auto;
+  display: block;
+}
+</style>

+ 33 - 0
TEAMModelOS/ClientApp/src/view/dashboard/study/StudyDash.less

@@ -0,0 +1,33 @@
+.study-dash-container {
+    .right-box-top {
+        height: 64% !important;
+    }
+
+    .rank-wrap {
+        display: flex;
+        flex-direction: column;
+        padding: 10px;
+
+        .stu-rank-item {
+            margin-bottom: 10px;
+            display: flex;
+
+            .img-avatar {
+                border-radius: 100px;
+            }
+
+            .stu-info {
+                margin-left: 20px;
+                height: 100%;
+                display: flex;
+                flex-direction: column;
+                justify-content: space-between;
+
+                .name {
+                    font-weight: bold;
+                    font-size: 18px;
+                }
+            }
+        }
+    }
+}

+ 223 - 0
TEAMModelOS/ClientApp/src/view/dashboard/study/StudyDash.vue

@@ -0,0 +1,223 @@
+<template>
+  <div class="body-box study-dash-container">
+    <!-- 左侧 -->
+    <div class="left-box">
+      <div class="left-box-top">
+        <dv-border-box-12>
+          <div class="dashboard-block">
+            <div class="block-content">
+              <div class="static-wrap">
+                <div class="item" v-for="(item,index) in staticArr">
+                  <span class="num" :style="{color:item.color}">
+                    <countTo :startVal='0' :endVal='item.val' :duration='1000' class="count-num"></countTo>
+                  </span>
+                  <span class="label">{{ item.label }}</span>
+                </div>
+              </div>
+              <!-- <BaseLine></BaseLine> -->
+            </div>
+          </div>
+        </dv-border-box-12>
+      </div>
+      <div class="left-box-bottom">
+        <div class="left-bottom-left">
+          <dv-border-box-13>
+            <div class="dashboard-block">
+              <div class="block-title">
+                <span>近三次评测统计图</span>
+                <dv-decoration-1 style="width:150px;height:20px;" />
+              </div>
+              <div class="block-content">
+                <BaseExamLine></BaseExamLine>
+              </div>
+            </div>
+          </dv-border-box-13>
+          <dv-border-box-13>
+            <div class="dashboard-block">
+              <div class="block-title">
+                <span>学习稳定度统计分布</span>
+                <dv-decoration-1 style="width:150px;height:20px;" />
+              </div>
+              <div class="block-content">
+                <BaseScoreBar></BaseScoreBar>
+              </div>
+            </div>
+          </dv-border-box-13>
+        </div>
+        <div class="left-bottom-right">
+          <div class="top">
+            <dv-border-box-13>
+              <div class="dashboard-block">
+                <div class="block-title">
+                  <span>班级排名</span>
+                  <dv-decoration-1 style="width:150px;height:20px;" />
+                </div>
+                <div class="block-content">
+                  <dv-scroll-board :config="classRankConfig" />
+                </div>
+              </div>
+            </dv-border-box-13>
+            <dv-border-box-13>
+              <div class="dashboard-block">
+                <div class="block-title">
+                  <span>学生排名</span>
+                  <dv-decoration-1 style="width:150px;height:20px;" />
+                </div>
+                <div class="block-content">
+                  <div class="rank-wrap">
+                    <div class="stu-rank-item">
+                      <img class="img-avatar" @click="goStudent()" src="https://paas-admin.xydqq.cn/img/avatar.647bbbfe.png" alt="" width="60">
+                      <div class="stu-info">
+                        <p class="name">张三</p>
+                        <p class="id">140015511001</p>
+                      </div>
+                    </div>
+                  </div>
+                </div>
+              </div>
+            </dv-border-box-13>
+          </div>
+        </div>
+      </div>
+    </div>
+    <!-- 右侧 -->
+    <div class="right-box">
+      <div class="right-box-top">
+        <dv-border-box-13>
+          <div class="dashboard-block">
+            <div class="block-title">
+              <span>各科表现排行</span>
+              <dv-decoration-1 style="width:150px;height:20px;" />
+            </div>
+            <div class="block-content" style="display:flex;flex-direction:column;">
+              <BaseSubLine></BaseSubLine>
+              <br>
+              <dv-scroll-ranking-board :config="stuRankConfig" style="width:90%;margin-left:5%" />
+            </div>
+          </div>
+        </dv-border-box-13>
+      </div>
+      <div class="right-box-bottom">
+        <dv-border-box-13>
+          <div class="dashboard-block">
+            <div class="block-title">
+              <span>认知层次分布</span>
+              <dv-decoration-1 style="width:150px;height:20px;" />
+            </div>
+            <div class="block-content">
+              <BaseStudyRadar></BaseStudyRadar>
+            </div>
+          </div>
+        </dv-border-box-13>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import countTo from 'vue-count-to'
+import BaseCircle from '@/components/dashboard/student/BaseCircle'
+import BaseScoreBar from '@/components/dashboard/studentAll/BaseScoreBar'
+import BaseExamLine from './BaseExamLine'
+import BaseSubLine from './BaseSubLine'
+import BaseStudyRadar from './BaseRadar'
+export default {
+  components: {
+    countTo,
+    BaseCircle,
+    BaseExamLine,
+    BaseScoreBar,
+    BaseSubLine,
+    BaseStudyRadar
+  },
+  data() {
+    return {
+      staticArr: [
+        {
+          label: '学生总数',
+          color: '#7ec4ff',
+          val: 7944
+        },
+        {
+          label: '评测总数',
+          color: '#7ec4ff',
+          val: 135
+        }, {
+          label: '线上评测数',
+          color: '#7ec4ff',
+          val: 44
+        },
+        {
+          label: '课中评测数',
+          color: '#7ec4ff',
+          val: 12
+        },
+        {
+          label: '阅卷评测数',
+          color: '#20d99d',
+          val: 64
+        },
+        {
+          label: '智育平均分',
+          color: '#ff8e2e',
+          val: 82.26
+        }
+      ],
+      stuTopArr: new Array(10),
+      classRankConfig: {
+        header: ['<span style="color:#32c5e9;font-weight: bold;">班级</span>', '<span style="color:#32c5e9;font-weight: bold;">最高分</span>', '<span style="color:#32c5e9;font-weight: bold;">最低分</span>', '<span style="color:#32c5e9;font-weight: bold;">综合平均分</span>'],
+        data: [
+          ['一年级1班', '84.3 分', '84.3 分', '84.3 分'],
+          ['一年级2班', '82.6 分', '84.3 分', '84.3 分'],
+          ['一年级3班', '76.0 分', '84.3 分', '84.3 分'],
+          ['一年级4班', '74.1 分', '84.3 分', '84.3 分'],
+          ['一年级5班', '65.8 分', '84.3 分', '84.3 分'],
+          ['一年级6班', '64.3 分', '84.3 分', '84.3 分'],
+          ['一年级1班', '84.3 分', '84.3 分', '84.3 分'],
+          ['一年级2班', '82.6 分', '84.3 分', '84.3 分'],
+          ['一年级3班', '76.0 分', '84.3 分', '84.3 分'],
+          ['一年级4班', '74.1 分', '84.3 分', '84.3 分'],
+          ['一年级5班', '65.8 分', '84.3 分', '84.3 分'],
+          ['一年级6班', '64.3 分', '84.3 分', '84.3 分'],
+        ],
+        align: ['center'],
+        rowNum: 12,
+        headerHeight: 30,
+        headerBGC: "transparent", //表头
+        oddRowBGC: "transparent", //奇数行
+        evenRowBGC: "transparent", //偶数行
+      },
+      stuRankConfig: {
+        data: [
+          {
+            name: '詹姆斯',
+            value: 55
+          },
+          {
+            name: '库里',
+            value: 96
+          },
+          {
+            name: '奥尼尔',
+            value: 78
+          },
+          {
+            name: '韦德',
+            value: 66
+          },
+          {
+            name: '科比',
+            value: 80
+          }
+        ],
+        unit: '分'
+      },
+    }
+  }
+}
+</script>
+
+<style lang="less">
+@import "StudyDash.less";
+// @import "../fiveEdu/FiveEdu.less";
+</style>

+ 30 - 25
TEAMModelOS/ClientApp/src/view/research-center/ResearchMgt.vue

@@ -332,8 +332,8 @@ export default {
           type: '>='
           type: '>='
         },
         },
         {
         {
-          name: this.$t('lessonRecord.examQuizCount'),
-          key: 'examQuizCount',
+          name: this.$t('lessonRecord.examCount'),
+          key: 'examCount',
           val: 0,
           val: 0,
           unit: 'count',
           unit: 'count',
           type: '>='
           type: '>='
@@ -408,68 +408,72 @@ export default {
           minWidth: 400
           minWidth: 400
         },
         },
         {
         {
-          title: vm.$t('lessonRecord.attendCount'),
-          key: 'attendRate',
+          title: vm.$t('lessonRecord.clientInteractionCount'),
+          key: 'clientInteractionCount',
           sortable: true,
           sortable: true,
           ellipsis: true,
           ellipsis: true,
-          render: function (h, params) {
-            return h('span', (Number(params.row.attendRate)).toFixed(2) + '%')
-          },
         },
         },
         {
         {
-          title: vm.$t('lessonRecord.groupCount'),
-          key: 'groupCount',
+          title: vm.$t('lessonRecord.collateTaskCount'),
+          key: 'collateTaskCount',
           sortable: true,
           sortable: true,
           ellipsis: true,
           ellipsis: true,
         },
         },
         {
         {
-          title: vm.$t('lessonRecord.totalPoint'),
-          key: 'totalPoint',
+          title: vm.$t('lessonRecord.pushCount'),
+          key: 'pushCount',
           sortable: true,
           sortable: true,
           ellipsis: true,
           ellipsis: true,
         },
         },
         {
         {
-          title: vm.$t('lessonRecord.collateTaskCount'),
-          key: 'collateTaskCount',
+          title: vm.$t('lessonRecord.examQuizCount'),
+          key: 'examCount',
           sortable: true,
           sortable: true,
           ellipsis: true,
           ellipsis: true,
         },
         },
         {
         {
-          title: vm.$t('lessonRecord.collateCount'),
-          key: 'collateCount',
+          title: vm.$t('lessonRecord.attendCount'),
+          key: 'attendRate',
           sortable: true,
           sortable: true,
           ellipsis: true,
           ellipsis: true,
+          render: function (h, params) {
+            return h('span', (Number(params.row.attendRate)).toFixed(2) + '%')
+          },
         },
         },
         {
         {
-          title: vm.$t('lessonRecord.pushCount'),
-          key: 'pushCount',
+          title: vm.$t('lessonRecord.groupCount'),
+          key: 'groupCount',
           sortable: true,
           sortable: true,
           ellipsis: true,
           ellipsis: true,
         },
         },
         {
         {
-          title: vm.$t('lessonRecord.score'),
-          key: 'totalInteractPoint',
+          title: vm.$t('lessonRecord.totalPoint'),
+          key: 'totalPoint',
           sortable: true,
           sortable: true,
           ellipsis: true,
           ellipsis: true,
         },
         },
+
         {
         {
-          title: vm.$t('lessonRecord.interactionCount'),
-          key: 'interactionCount',
+          title: vm.$t('lessonRecord.collateCount'),
+          key: 'collateCount',
           sortable: true,
           sortable: true,
           ellipsis: true,
           ellipsis: true,
         },
         },
+
         {
         {
-          title: vm.$t('lessonRecord.clientInteractionCount'),
-          key: 'clientInteractionCount',
+          title: vm.$t('lessonRecord.score'),
+          key: 'totalInteractPoint',
           sortable: true,
           sortable: true,
           ellipsis: true,
           ellipsis: true,
         },
         },
         {
         {
-          title: vm.$t('lessonRecord.examQuizCount'),
-          key: 'examQuizCount',
+          title: vm.$t('lessonRecord.interactionCount'),
+          key: 'interactionCount',
           sortable: true,
           sortable: true,
           ellipsis: true,
           ellipsis: true,
         },
         },
+
+
         {
         {
           title: vm.$t('lessonRecord.examPointRate'),
           title: vm.$t('lessonRecord.examPointRate'),
           key: 'examPointRate',
           key: 'examPointRate',
@@ -555,6 +559,7 @@ export default {
                 interactionCount: record.interactionCount,
                 interactionCount: record.interactionCount,
                 clientInteractionCount: record.clientInteractionCount,
                 clientInteractionCount: record.clientInteractionCount,
                 examQuizCount: record.examQuizCount,
                 examQuizCount: record.examQuizCount,
+                examCount: record.examCount,
                 examPointRate: record.examPointRate.toFixed(2) + '%',
                 examPointRate: record.examPointRate.toFixed(2) + '%',
                 time: this.$tools.formatTime(record.startTime, 'yyyy-MM-dd')
                 time: this.$tools.formatTime(record.startTime, 'yyyy-MM-dd')
               }
               }

+ 3 - 5
TEAMModelOS/Controllers/Common/AreaController.cs

@@ -606,7 +606,7 @@ namespace TEAMModelOS.Controllers
                         }
                         }
                     }
                     }
                 }
                 }
-                if (pIds.Count > 0)
+                if (pIds.Any())
                 {
                 {
                     var querySchool = $"select c.id,c.school,c.pId from c where c.pk = 'Art' and c.pId in ({string.Join(",", pIds.Select(o => $"'{o}'"))})";
                     var querySchool = $"select c.id,c.school,c.pId from c where c.pk = 'Art' and c.pId in ({string.Join(",", pIds.Select(o => $"'{o}'"))})";
                     await foreach (var item in client.GetContainer("TEAMModelOS", "Common").GetItemQueryStreamIterator(queryText: querySchool))
                     await foreach (var item in client.GetContainer("TEAMModelOS", "Common").GetItemQueryStreamIterator(queryText: querySchool))
@@ -637,17 +637,15 @@ namespace TEAMModelOS.Controllers
                     });
                     });
                     return Ok(new { arts });
                     return Ok(new { arts });
                 }
                 }
-                else {
-                    return Ok(new { code = 400,msg = "暂无数据"});
+                else { 
+                    return Ok(new { arts=new List<dynamic> { } });
                 }
                 }
-                
             }
             }
             catch (Exception e)
             catch (Exception e)
             {
             {
                 await _dingDing.SendBotMsg($"OS,{_option.Location},area/find-all-art()\n{e.Message}\n{e.StackTrace}", GroupNames.醍摩豆服務運維群組);
                 await _dingDing.SendBotMsg($"OS,{_option.Location},area/find-all-art()\n{e.Message}\n{e.StackTrace}", GroupNames.醍摩豆服務運維群組);
                 return BadRequest();
                 return BadRequest();
             }
             }
-
         }
         }
 
 
 
 

+ 0 - 4
TEAMModelOS/Controllers/School/ArtReviewController.cs

@@ -155,10 +155,6 @@ namespace TEAMModelOS.Controllers
             List<ArtStudentPdf> studentPdfs = new List<ArtStudentPdf>();
             List<ArtStudentPdf> studentPdfs = new List<ArtStudentPdf>();
             artResults.ForEach(x =>
             artResults.ForEach(x =>
             {
             {
-                if (x.studentId.Equals("202107001"))
-                {
-                    Console.WriteLine(11);
-                }
                 var allSubject = x.results.GroupBy(g => g.quotaId).Select(s => new { key = s.Key, list = s.ToList() }).ToList();
                 var allSubject = x.results.GroupBy(g => g.quotaId).Select(s => new { key = s.Key, list = s.ToList() }).ToList();
                 var groupSubject = x.results.GroupBy(g => $"{g.quotaId}-{g.subjectId}").Select(s => new { key = s.Key, list = s.ToList() }).ToList();
                 var groupSubject = x.results.GroupBy(g => $"{g.quotaId}-{g.subjectId}").Select(s => new { key = s.Key, list = s.ToList() }).ToList();
                 //综合-所有科目的艺术评测指标维度。
                 //综合-所有科目的艺术评测指标维度。

+ 4 - 4
TEAMModelOS/TEAMModelOS.csproj

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