Selaa lähdekoodia

Merge branch 'develop' of http://52.130.252.100:10000/TEAMMODEL/TEAMModelOS into develop

Li 3 vuotta sitten
vanhempi
commit
af4a747141
100 muutettua tiedostoa jossa 4876 lisäystä ja 1148 poistoa
  1. 3 3
      TEAMModelAPI/Controllers/School/ExamController.cs
  2. 1 1
      TEAMModelAPI/Controllers/School/GroupListController.cs
  3. 1 1
      TEAMModelBI/ClientApp/package.json
  4. 1 1
      TEAMModelBI/ClientApp/public/index.html
  5. 1 0
      TEAMModelBI/ClientApp/src/App.vue
  6. 4 2
      TEAMModelBI/ClientApp/src/language/lang/zh-cn.js
  7. 204 58
      TEAMModelBI/ClientApp/src/view/areaServe/areamanage.vue
  8. 28 6
      TEAMModelBI/ClientApp/src/view/common/aside.vue
  9. 554 268
      TEAMModelBI/ClientApp/src/view/created/created.vue
  10. 24 10
      TEAMModelBI/ClientApp/src/view/index/index.vue
  11. 15 1
      TEAMModelBI/ClientApp/src/view/login.vue
  12. 128 48
      TEAMModelBI/ClientApp/src/view/participation/index.vue
  13. 251 89
      TEAMModelBI/ClientApp/src/view/participation/setAbility.vue
  14. 138 53
      TEAMModelBI/ClientApp/src/view/schoolServe/school.vue
  15. 434 182
      TEAMModelBI/ClientApp/src/view/schoolServe/setschool.vue
  16. 47 13
      TEAMModelBI/ClientApp/src/view/systemConfig/index.vue
  17. 133 52
      TEAMModelBI/ClientApp/src/view/teachermanage/school.vue
  18. 249 87
      TEAMModelBI/ClientApp/src/view/teachermanage/traitmanage.vue
  19. 6 6
      TEAMModelBI/Controllers/BIAbility/AbilityMgmtController.cs
  20. 3 3
      TEAMModelBI/Controllers/BIAbility/AbilityTaskMgmtController.cs
  21. 11 11
      TEAMModelBI/Controllers/BIHome/HomeStatisController.cs
  22. 4 4
      TEAMModelBI/Controllers/BINormal/AppCompanyController.cs
  23. 1 1
      TEAMModelBI/Controllers/BINormal/BIOpenApiController.cs
  24. 1 1
      TEAMModelBI/Controllers/BINormal/CompanyController.cs
  25. 2 2
      TEAMModelBI/Controllers/BISchool/AreaRelevantController.cs
  26. 4 4
      TEAMModelBI/Controllers/BISchool/BatchAreaController.cs
  27. 6 6
      TEAMModelBI/Controllers/BISchool/BatchSchoolController.cs
  28. 1 1
      TEAMModelBI/Controllers/BISchool/RoomController.cs
  29. 7 7
      TEAMModelBI/Controllers/BISchool/SchoolController.cs
  30. 4 4
      TEAMModelBI/Controllers/BIServer/BiServersController.cs
  31. 1 1
      TEAMModelBI/Controllers/BIStudent/StuActivityController.cs
  32. 2 2
      TEAMModelBI/Controllers/BITest/TestController.cs
  33. 1 1
      TEAMModelBI/Controllers/Census/ActivitySticsController.cs
  34. 2 2
      TEAMModelBI/Controllers/Census/LessonSticsController.cs
  35. 3 3
      TEAMModelBI/Controllers/DingDingStruc/DDStructController.cs
  36. 2 2
      TEAMModelBI/Controllers/DingDingStruc/SystemConfigController.cs
  37. 9 9
      TEAMModelBI/Controllers/DingDingStruc/TableDingDingInfoController.cs
  38. 3 3
      TEAMModelBI/Controllers/LoginController.cs
  39. 3 3
      TEAMModelBI/Controllers/OperateRecord/OperateLogController.cs
  40. 2 2
      TEAMModelOS.FunctionV4/CosmosDB/TriggerCorrect.cs
  41. 7 7
      TEAMModelOS.FunctionV4/CosmosDB/TriggerExam.cs
  42. 2 2
      TEAMModelOS.FunctionV4/CosmosDB/TriggerExamLite.cs
  43. 2 2
      TEAMModelOS.FunctionV4/CosmosDB/TriggerHomework.cs
  44. 3 3
      TEAMModelOS.FunctionV4/CosmosDB/TriggerStudy.cs
  45. 3 3
      TEAMModelOS.FunctionV4/CosmosDB/TriggerSurvey.cs
  46. 2 2
      TEAMModelOS.FunctionV4/CosmosDB/TriggerVote.cs
  47. 8 8
      TEAMModelOS.FunctionV4/HttpTrigger/ScsYxptApis.cs
  48. 43 40
      TEAMModelOS.FunctionV4/ServiceBus/ActiveTaskTopic.cs
  49. 4 4
      TEAMModelOS.SDK/DI/AzureStorage/AzureStorageBlobExtensions.cs
  50. 4 0
      TEAMModelOS.SDK/Models/Cosmos/Common/LessonRecord.cs
  51. 17 0
      TEAMModelOS.SDK/Models/Cosmos/Common/LessonStudentRecord.cs
  52. 4 4
      TEAMModelOS.SDK/Models/Service/ActivityService.cs
  53. 1 1
      TEAMModelOS.SDK/Models/Service/BatchCopyFileService.cs
  54. 1 1
      TEAMModelOS.SDK/Models/Service/Common/ActivityStudentService.cs
  55. 1 1
      TEAMModelOS.SDK/Models/Service/Common/BlobService.cs
  56. 1 1
      TEAMModelOS.SDK/Models/Service/Common/TeacherService.cs
  57. 1 1
      TEAMModelOS.SDK/Models/Service/ExamService.cs
  58. 4 4
      TEAMModelOS.SDK/Models/Service/FixDataService.cs
  59. 2 2
      TEAMModelOS.SDK/Models/Service/GroupListService.cs
  60. 1 1
      TEAMModelOS.SDK/Models/Service/HomeworkService.cs
  61. 1 1
      TEAMModelOS.SDK/Models/Service/LessonService.cs
  62. 1 1
      TEAMModelOS.SDK/Models/Service/SchoolService.cs
  63. 21 21
      TEAMModelOS.SDK/Models/Service/StudentService.cs
  64. 1 1
      TEAMModelOS.SDK/Models/Service/SurveyService.cs
  65. 1 1
      TEAMModelOS.SDK/Models/Service/Third/ThirdApisService.cs
  66. 1 1
      TEAMModelOS.SDK/Models/Service/Third/ThirdService.cs
  67. 14 3
      TEAMModelOS/ClientApp/src/assets/student-web/component_styles/paper-test.css
  68. 7 2
      TEAMModelOS/ClientApp/src/common/BaseCanvas.vue
  69. 112 0
      TEAMModelOS/ClientApp/src/components/dashboard/art/BaseAwardPie.vue
  70. 261 0
      TEAMModelOS/ClientApp/src/components/dashboard/art/BaseClassLineBar.vue
  71. 115 0
      TEAMModelOS/ClientApp/src/components/dashboard/art/BaseKnowPie.vue
  72. 187 0
      TEAMModelOS/ClientApp/src/components/dashboard/art/BaseLessonLineBar.vue
  73. 150 0
      TEAMModelOS/ClientApp/src/components/dashboard/art/BasePointLineBar.vue
  74. 76 0
      TEAMModelOS/ClientApp/src/components/dashboard/art/LeftBottom.vue
  75. 52 0
      TEAMModelOS/ClientApp/src/components/dashboard/art/LeftCenter.vue
  76. 177 0
      TEAMModelOS/ClientApp/src/components/dashboard/art/LeftTop.vue
  77. 48 0
      TEAMModelOS/ClientApp/src/components/dashboard/art/RightBotL.vue
  78. 63 0
      TEAMModelOS/ClientApp/src/components/dashboard/art/RightBotR.vue
  79. 48 0
      TEAMModelOS/ClientApp/src/components/dashboard/art/RightTop.vue
  80. 17 4
      TEAMModelOS/ClientApp/src/components/student-web/EventView/EventContentTypeTemplate/PaperTest.vue
  81. 2 1
      TEAMModelOS/ClientApp/src/components/student-web/EventView/EventContentTypeTemplate/composePaper.vue
  82. 1 1
      TEAMModelOS/ClientApp/src/components/student-web/SettingView/Setting.vue
  83. 150 0
      TEAMModelOS/ClientApp/src/components/student-web/SettingView/setting.less
  84. 16 0
      TEAMModelOS/ClientApp/src/components/student-web/achievement/MyAchievement.less
  85. 4 4
      TEAMModelOS/ClientApp/src/components/student-web/achievement/MyAchievement.vue
  86. 5 0
      TEAMModelOS/ClientApp/src/router/routes.js
  87. 1 1
      TEAMModelOS/ClientApp/src/store/module/config.js
  88. 456 10
      TEAMModelOS/ClientApp/src/store/module/dashboard.js
  89. 1 1
      TEAMModelOS/ClientApp/src/utils/editorTools.js
  90. 1 1
      TEAMModelOS/ClientApp/src/view/ability/Review.vue
  91. 241 0
      TEAMModelOS/ClientApp/src/view/dashboard/Art.less
  92. 174 0
      TEAMModelOS/ClientApp/src/view/dashboard/Art.vue
  93. 27 25
      TEAMModelOS/ClientApp/src/view/dashboard/Index.vue
  94. 3 1
      TEAMModelOS/ClientApp/src/view/jyzx/application.vue
  95. 1 1
      TEAMModelOS/ClientApp/src/view/research-center/BaseCleanCond.vue
  96. 3 0
      TEAMModelOS/ClientApp/src/view/student-web/AppiView.less
  97. 2 2
      TEAMModelOS/ClientApp/src/view/trainList/Check.vue
  98. 18 17
      TEAMModelOS/Controllers/Analysis/AchievementController.cs
  99. 12 8
      TEAMModelOS/Controllers/Analysis/AnalysisController.cs
  100. 0 0
      TEAMModelOS/Controllers/Analysis/ClassAnalysisController.cs

+ 3 - 3
TEAMModelAPI/Controllers/School/ExamController.cs

@@ -96,7 +96,7 @@ namespace TEAMModelAPI.Controllers
             }
             catch (Exception e)
             {
-                await _dingDing.SendBotMsg($"OS,{_option.Location},analysis/import-exam()\n{e.Message}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"OS,{_option.Location},analysis/import-exam()\n{e.Message}\n{e.StackTrace}", GroupNames.醍摩豆服務運維群組);
                 return BadRequest();
             }
         }
@@ -165,7 +165,7 @@ namespace TEAMModelAPI.Controllers
             }
             catch (Exception e)
             {
-                await _dingDing.SendBotMsg($"OS,{_option.Location},activity/upsert-record()\n{e.Message}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"OS,{_option.Location},activity/upsert-record()\n{e.Message}\n{e.StackTrace}", GroupNames.醍摩豆服務運維群組);
                 return BadRequest();
             }
 
@@ -535,7 +535,7 @@ namespace TEAMModelAPI.Controllers
             }
             catch (Exception e)
             {
-                await _dingDing.SendBotMsg($"OS,{_option.Location},analysis/word()\n{e.Message}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"OS,{_option.Location},analysis/word()\n{e.Message}\n{e.StackTrace}", GroupNames.醍摩豆服務運維群組);
                 return BadRequest();
             }
 

+ 1 - 1
TEAMModelAPI/Controllers/School/GroupListController.cs

@@ -397,7 +397,7 @@ namespace TEAMModelAPI.Controllers
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"{_coreAPIHttpService.options.Get("Default").location}用户转换失败:{_coreAPIHttpService.options.Get("Default").url}{tmdstr}\n {ex.Message}{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"{_coreAPIHttpService.options.Get("Default").location}用户转换失败:{_coreAPIHttpService.options.Get("Default").url}{tmdstr}\n {ex.Message}\n{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
                 //return Ok(new { error =3, msg = "醍摩豆ID验证错误!" });
             }
             var unexist_student = stus.Select(x => x.id).Except(students.Select(y => y.id));

+ 1 - 1
TEAMModelBI/ClientApp/package.json

@@ -28,7 +28,7 @@
         "qs": "^6.10.1",
         "splitpanes": "^3.1.1",
         "vue": "^3.2.0",
-        "vue-i18n": "^9.2.0-beta.32",
+        "vue-i18n": "^9.2.0-beta.35",
         "vue-loader-v16": "npm:vue-loader@^16.0.0-alpha.3",
         "vue-router": "^4.0.0-rc.5",
         "vue3-count-to": "^1.1.2",

+ 1 - 1
TEAMModelBI/ClientApp/public/index.html

@@ -11,7 +11,7 @@
     </title>
 </head>
 <script src="https://g.alicdn.com/dingding/dinglogin/0.0.5/ddLogin.js"></script>
-<script src="https://at.alicdn.com/t/font_2934132_ghuo4dq8cwd.js"></script>
+<script src="https://at.alicdn.com/t/font_2934132_79p5h3uoxur.js"></script>
 
 <body>
     <noscript>

+ 1 - 0
TEAMModelBI/ClientApp/src/App.vue

@@ -12,5 +12,6 @@ export default {
 #app {
     min-width: 1280px;
     max-width: 1920px;
+    font-family: 微軟正黑體, Microsoft JhengHei UI, Microsoft JhengHei !important;
 }
 </style>

+ 4 - 2
TEAMModelBI/ClientApp/src/language/lang/zh-cn.js

@@ -200,8 +200,8 @@ const zh_cn = {
             schoolinfo: {
                 serialnum: '编号',
                 name: '学校名称',
-                phase: '学段',
                 type: '学校类型',
+                phase: '学段类型',
                 assistant: '预设管家',
                 assistantHint: '预设管家手机号码',
                 location: '学校所属位置',
@@ -218,13 +218,15 @@ const zh_cn = {
             hint: {
                 name: 'name: 学校名称',
                 admin: 'admin: 管理员账号',
-                period: ' period: 学类型',
+                period: ' period: 学类型',
                 size: ' size: 空间大小',
                 region: 'region: 国家',
                 province: 'province: 省份',
                 city: 'city: 市级',
                 dist: 'dist: 区域',
                 address: 'address: 详细地址',
+                scales: 'scale:学校规模',
+                types: 'type:学校类型'
             }
         },
         redactSet: '基础设置',

+ 204 - 58
TEAMModelBI/ClientApp/src/view/areaServe/areamanage.vue

@@ -3,16 +3,21 @@
         <div class="nowtitle">
             <div class="select-List">
                 <div class="province-box">
-                    <span>{{$t('areaManages.selector.provinceName')}}:</span>
-                    <el-select v-model="provinceOptions.provinceValue" :placeholder="$t('areaManages.selector.provinceDefault')" @change="areaSelctChange(provinceOptions.provinceValue,'province')">
-                        <el-option v-for="item in provinceOptions.optionInfo" :key="item.code" :label="item.name" :value="item.name">
+                    <!-- <span>{{$t('areaManages.selector.provinceName')}}:</span> -->
+                    <el-select v-model="provinceOptions.provinceValue"
+                        :placeholder="$t('areaManages.selector.provinceDefault')"
+                        @change="areaSelctChange(provinceOptions.provinceValue, 'province')">
+                        <el-option v-for="item in provinceOptions.optionInfo" :key="item.code" :label="item.name"
+                            :value="item.name">
                         </el-option>
                     </el-select>
                 </div>
                 <div class="city-box">
-                    <span>{{$t('areaManages.selector.cityName')}}:</span>
-                    <el-select v-model="cityOptions.cityValue" :placeholder="$t('areaManages.selector.cityDefault')" @change="areaSelctChange(cityOptions.cityValue,'city')">
-                        <el-option v-for="item in cityOptions.cityInfo" :key="item.code" :label="item.name" :value="item.name">
+                    <!-- <span>{{$t('areaManages.selector.cityName')}}:</span> -->
+                    <el-select v-model="cityOptions.cityValue" :placeholder="$t('areaManages.selector.cityDefault')"
+                        @change="areaSelctChange(cityOptions.cityValue, 'city')">
+                        <el-option v-for="item in cityOptions.cityInfo" :key="item.code" :label="item.name"
+                            :value="item.name">
                         </el-option>
                     </el-select>
                 </div>
@@ -44,7 +49,7 @@
                     </div>
                     <span class="text">{{$t(`areaManages.found.creation`)}}</span>
                 </a> -->
-                <el-button size="small" color="#81ecec">
+                <el-button size="small" color="#81ecec" type="primary">
                     <svg class="created-icon" aria-hidden="true">
                         <use xlink:href="#icon-chuangjiandizhisuoyin"></use>
                     </svg>
@@ -53,8 +58,10 @@
             </div>
         </div>
         <div class="traitfrom">
-            <el-table :data="optionData" style="width: 100%" :highlight-current-row="true" height="74vh" v-loading="loading" :empty-text='$t(`commonMsg.nodataTable`)'>
-                <el-table-column prop="index" :label="$t(`areaManages.areaTable.serialnum`)" type=index sortable align="center" />
+            <el-table :data="optionData" style="width: 100%" :highlight-current-row="true" height="74vh"
+                v-loading="loading" :empty-text='$t(`commonMsg.nodataTable`)'>
+                <el-table-column prop="index" :label="$t(`areaManages.areaTable.serialnum`)" type=index sortable
+                    align="center" />
                 <el-table-column prop="name" :label="$t(`areaManages.areaTable.name`)" align="center" />
                 <el-table-column prop="schoolCount" label="区内学校数量" align="center" sortable :sort-method="areaSort" />
                 <el-table-column prop="location" label="位置" align="center" />
@@ -63,7 +70,8 @@
                 <el-table-column prop="standardName" :label="$t(`areaManages.areaTable.project`)" align="center" />
                 <el-table-column :label="$t(`areaManages.areaTable.operate`)" align="center" v-if="PowerShow">
                     <template #default="scope">
-                        <el-button size="mini" @click="operation(scope.$index, scope.row,true)" type="primary">{{$t(`areaManages.areaTable.operate`)}}</el-button>
+                        <el-button size="mini" @click="operation(scope.$index, scope.row, true)" type="primary">
+                            {{ $t(`areaManages.areaTable.operate`) }}</el-button>
                     </template>
                 </el-table-column>
             </el-table>
@@ -73,20 +81,38 @@
                 <el-tabs v-model="activeName">
                     <el-tab-pane :label="$t(`areaManages.operational.areaAddSchool.title`)" name="add">
                         <div class="haveSchool">
-                            <div class="schoolLeft" v-if="notjoinSchool.length !==0">
-                                <p>{{$t(`areaManages.operational.areaAddSchool.schooltitle`)}}</p>
+                            <div class="schoolLeft" v-if="notjoinSchool.length !== 0">
+                                <p>{{ $t(`areaManages.operational.areaAddSchool.schooltitle`) }}</p>
                                 <ul>
-                                    <li class="details-list-school" v-for="(item,index) in notjoinSchool" :key="item.id" :class="{'active':position===index}">
+                                    <li class="details-list-school" v-for="(item, index) in notjoinSchool"
+                                        :key="item.id" :class="{ 'active': position === index }">
                                         <div class="list-school-logo">
-                                            <el-image style="width: 60px; height: 60px" :src="item.picture" :fit="fill"></el-image>
+                                            <el-image style="width: 60px; height: 60px" :src="item.picture" :fit="fill">
+                                            </el-image>
                                         </div>
                                         <div class="list-school-name">
-                                            <div>{{$t(`areaManages.operational.areaAddSchool.schoolList.name`)}}:<span>{{item.name}}</span></div>
-                                            <div>{{$t(`areaManages.operational.areaAddSchool.schoolList.grading`)}}:<span>{{item.period[0]}}</span></div>
-                                            <div>{{$t(`areaManages.operational.areaAddSchool.schoolList.code`)}}:<span>{{item.id}}</span></div>
-                                            <div>{{$t(`areaManages.operational.areaAddSchool.schoolList.location`)}}:<span>{{item.province}}{{item.city}}{{item.dist}}</span></div>
+                                            <div>
+                                                {{ $t(`areaManages.operational.areaAddSchool.schoolList.name`)
+                                                }}:<span>{{ item.name }}</span>
+                                            </div>
+                                            <div>
+                                                {{ $t(`areaManages.operational.areaAddSchool.schoolList.grading`)
+                                                }}:<span>{{ item.period[0] }}</span>
+                                            </div>
+                                            <div>
+                                                {{ $t(`areaManages.operational.areaAddSchool.schoolList.code`)
+                                                }}:<span>{{ item.id }}</span>
+                                            </div>
+                                            <div>
+                                                {{ $t(`areaManages.operational.areaAddSchool.schoolList.location`)
+                                                }}:<span>{{ item.province }}{{ item.city }}{{ item.dist }}</span>
+                                            </div>
                                         </div>
-                                        <el-popconfirm :confirm-button-text="$t(`areaManages.operational.areaAddSchool.add`)" :cancel-button-text="$t(`commonMsg.closes`)" :title="$t(`areaManages.operational.areaAddSchool.addschoolHint`)" @confirm="areaAddschool(item.schoolCode,$event)" @cancel="position=''">
+                                        <el-popconfirm
+                                            :confirm-button-text="$t(`areaManages.operational.areaAddSchool.add`)"
+                                            :cancel-button-text="$t(`commonMsg.closes`)"
+                                            :title="$t(`areaManages.operational.areaAddSchool.addschoolHint`)"
+                                            @confirm="areaAddschool(item.schoolCode, $event)" @cancel="position = ''">
                                             <template #reference>
                                                 <div class="addiconsx" @click="changeStyle(index)">
                                                     <svg class="areaaddschool" aria-hidden="true">
@@ -99,27 +125,46 @@
                                 </ul>
                             </div>
                             <div class="noData" v-else>
-                                <div>{{$t(`commonMsg.nodataTable`)}}</div>
+                                <div>{{ $t(`commonMsg.nodataTable`) }}</div>
                             </div>
                             <div class="schoolRight">
-                                <div class="schoolRight-title">{{$t(`areaManages.operational.areaAddSchool.tabletitle`)}}</div>
+                                <div class="schoolRight-title">
+                                    {{ $t(`areaManages.operational.areaAddSchool.tabletitle`) }}</div>
                                 <div class="schoolRight-table">
                                     <el-table :data="tableDatas" style="width: 100%" max-height="500" height='500'>
-                                        <el-table-column prop="index" :label="$t(`areaManages.operational.areaAddSchool.tables.serialnum`)" width="100" type="index" />
-                                        <el-table-column :label="$t(`areaManages.operational.areaAddSchool.tables.badge`)" width="100" align="center">
+                                        <el-table-column prop="index"
+                                            :label="$t(`areaManages.operational.areaAddSchool.tables.serialnum`)"
+                                            width="100" type="index" />
+                                        <el-table-column
+                                            :label="$t(`areaManages.operational.areaAddSchool.tables.badge`)"
+                                            width="100" align="center">
                                             <template #default="scope">
-                                                <el-image style="width: 70px; height: 70px" :src="scope.row.picture" fit="fill"></el-image>
+                                                <el-image style="width: 70px; height: 70px" :src="scope.row.picture"
+                                                    fit="fill"></el-image>
                                             </template>
                                         </el-table-column>
-                                        <el-table-column prop="name" :label="$t(`areaManages.operational.areaAddSchool.tables.name`)" width="170" align="center" />
-                                        <el-table-column prop="id" :label="$t(`areaManages.operational.areaAddSchool.tables.brevityCode`)" width="120" align="center" />
-                                        <el-table-column prop="province" :label="$t(`areaManages.operational.areaAddSchool.tables.province`)" width="100" align="center" />
-                                        <el-table-column prop="city" :label="$t(`areaManages.operational.areaAddSchool.tables.city`)" width="100" align="center" />
-                                        <el-table-column prop="dist" :label="$t(`areaManages.operational.areaAddSchool.tables.area`)" width="100" align="center" />
-                                        <el-table-column fixed="right" :label="$t(`areaManages.operational.areaAddSchool.tables.operate`)" width="100">
+                                        <el-table-column prop="name"
+                                            :label="$t(`areaManages.operational.areaAddSchool.tables.name`)" width="170"
+                                            align="center" />
+                                        <el-table-column prop="id"
+                                            :label="$t(`areaManages.operational.areaAddSchool.tables.brevityCode`)"
+                                            width="120" align="center" />
+                                        <el-table-column prop="province"
+                                            :label="$t(`areaManages.operational.areaAddSchool.tables.province`)"
+                                            width="100" align="center" />
+                                        <el-table-column prop="city"
+                                            :label="$t(`areaManages.operational.areaAddSchool.tables.city`)" width="100"
+                                            align="center" />
+                                        <el-table-column prop="dist"
+                                            :label="$t(`areaManages.operational.areaAddSchool.tables.area`)" width="100"
+                                            align="center" />
+                                        <el-table-column fixed="right"
+                                            :label="$t(`areaManages.operational.areaAddSchool.tables.operate`)"
+                                            width="100">
                                             <template #default="scope">
-                                                <el-button type="text" size="small" @click.prevent="deleteRow(scope.$index, scope.row)">
-                                                    {{$t(`areaManages.operational.areaAddSchool.tables.areaRemove`)}}
+                                                <el-button type="text" size="small"
+                                                    @click.prevent="deleteRow(scope.$index, scope.row)">
+                                                    {{ $t(`areaManages.operational.areaAddSchool.tables.areaRemove`) }}
                                                 </el-button>
                                             </template>
                                         </el-table-column>
@@ -129,16 +174,30 @@
                         </div>
                     </el-tab-pane>
                     <el-tab-pane :label="$t(`areaManages.operational.abilitys.title`)" name="adjust">
-                        <div class="areaAbilitys" v-if="abilityModel ===true">
+                        <div class="areaAbilitys" v-if="abilityModel === true">
                             <Ability :selectObject="currentlySelect.standard"></Ability>
                         </div>
-                        <div class="cuttable" v-else-if="abilityModel ===false">
-                            <div class="nowAbility"><i class="diansInfo"></i><span class="now-title">{{$t(`areaManages.operational.abilitys.now`)}}:</span><span class="contents">{{currentlySelect.name}}—{{currentlySelect.standardName}}—{{currentlySelect.institution}}</span></div>
-                            <el-table :data="tableData" style="width: 100%" :highlight-current-row="true" @row-click="cutpitch">
-                                <el-table-column prop="index" :label="$t(`areaManages.operational.abilitys.tables.serialnum`)" width="180" type=index align="center" />
-                                <el-table-column prop="standardName" :label="$t(`areaManages.operational.abilitys.tables.name`)" width="180" align="center" />
-                                <el-table-column prop="name" :label="$t(`areaManages.operational.abilitys.tables.source`)" align="center" />
-                                <el-table-column prop="institution" :label="$t(`areaManages.operational.abilitys.tables.affiliation`)" align="center" />
+                        <div class="cuttable" v-else-if="abilityModel === false">
+                            <div class="nowAbility"><i class="diansInfo"></i><span class="now-title">{{
+                                    $t(`areaManages.operational.abilitys.now`)
+                            }}:</span><span class="contents">{{
+        currentlySelect.name
+}}—{{ currentlySelect.standardName }}—{{
+        currentlySelect.institution
+}}</span>
+                            </div>
+                            <el-table :data="tableData" style="width: 100%" :highlight-current-row="true"
+                                @row-click="cutpitch">
+                                <el-table-column prop="index"
+                                    :label="$t(`areaManages.operational.abilitys.tables.serialnum`)" width="180"
+                                    type=index align="center" />
+                                <el-table-column prop="standardName"
+                                    :label="$t(`areaManages.operational.abilitys.tables.name`)" width="180"
+                                    align="center" />
+                                <el-table-column prop="name"
+                                    :label="$t(`areaManages.operational.abilitys.tables.source`)" align="center" />
+                                <el-table-column prop="institution"
+                                    :label="$t(`areaManages.operational.abilitys.tables.affiliation`)" align="center" />
                                 <el-table-column label="" width="100" align="center">
                                     <template #default="scope">
                                         <svg class="cuticon" aria-hidden="true" v-show="scope.row.laterPitch">
@@ -148,30 +207,40 @@
                                 </el-table-column>
                             </el-table>
                             <div class="cuttable-btn">
-                                <el-button type="primary" @click="confirm">{{$t(`commonMsg.confirm`)}}</el-button>
-                                <el-button @click="adjustmentbox = false">{{$t(`commonMsg.closes`)}}</el-button>
+                                <el-button type="primary" @click="confirm">{{ $t(`commonMsg.confirm`) }}</el-button>
+                                <el-button @click="adjustmentbox = false">{{ $t(`commonMsg.closes`) }}</el-button>
                             </div>
                         </div>
                     </el-tab-pane>
                 </el-tabs>
-                <div class="cut-ability" v-if="activeName ==='adjust'" @click="abilityModel=!abilityModel">
+                <div class="cut-ability" v-if="activeName === 'adjust'" @click="abilityModel = !abilityModel">
                     <el-button type="primary" size="small" plain>
                         <svg class="cuticon" aria-hidden="true">
                             <use :xlink:href="cutbtnTitle.icon"></use>
                         </svg>
-                        {{cutbtnTitle.name}}
+                        {{ cutbtnTitle.name }}
                     </el-button>
                 </div>
             </el-dialog>
             <el-dialog v-model="CutNotarize" width="50%" :before-close="handleClose" :show-close="false">
-                <div class="reminder">注意:<span>{{$t(`areaManages.operational.abilitys.cuthint`)}}</span></div>
+                <div class="reminder">注意:<span>{{ $t(`areaManages.operational.abilitys.cuthint`) }}</span></div>
                 <div class="cutboxs">
                     <div class="now">
-                        <p><span class="cutbox-title">{{$t(`areaManages.operational.abilitys.objdata.name`)}}:</span><span class="cutbox-name">{{currentlySelect.name}}</span></p>
+                        <p><span class="cutbox-title">{{ $t(`areaManages.operational.abilitys.objdata.name`)
+                        }}:</span><span class="cutbox-name">{{ currentlySelect.name }}</span></p>
                         <div class="restbox">
-                            <div><span class="general-title">{{$t(`areaManages.operational.abilitys.objdata.project`)}}:</span><span class="general-content">{{currentlySelect.standardName}}</span></div>
-                            <div><span class="general-title">{{$t(`areaManages.operational.abilitys.objdata.affiliation`)}}:</span><span class="general-content">{{currentlySelect.institution}}</span></div>
-                            <div><span class="general-title">{{$t(`areaManages.operational.abilitys.objdata.areas`)}}:</span><span class="general-content">{{currentlySelect.provName}}{{currentlySelect.cityName}}</span></div>
+                            <div><span class="general-title">{{ $t(`areaManages.operational.abilitys.objdata.project`)
+                            }}:</span><span class="general-content">{{ currentlySelect.standardName }}</span>
+                            </div>
+                            <div><span class="general-title">{{
+                                    $t(`areaManages.operational.abilitys.objdata.affiliation`)
+                            }}:</span><span class="general-content">{{ currentlySelect.institution }}</span>
+                            </div>
+                            <div><span class="general-title">{{ $t(`areaManages.operational.abilitys.objdata.areas`)
+                            }}:</span><span class="general-content">{{ currentlySelect.provName }}{{
+        currentlySelect.cityName
+}}</span>
+                            </div>
                         </div>
                     </div>
                     <div class="cutpastIcon" :loading="true">
@@ -180,27 +249,39 @@
                         </svg>
                     </div>
                     <div class="now">
-                        <p><span class="cutbox-title">{{$t(`areaManages.operational.abilitys.objdata.name`)}}:</span><span class="cutbox-name">{{replaceProject.name}}</span></p>
+                        <p><span class="cutbox-title">{{ $t(`areaManages.operational.abilitys.objdata.name`)
+                        }}:</span><span class="cutbox-name">{{ replaceProject.name }}</span></p>
                         <div class="restbox">
-                            <div><span class="general-title">{{$t(`areaManages.operational.abilitys.objdata.project`)}}:</span><span class="general-content">{{replaceProject.standardName}}</span></div>
-                            <div><span class="general-title">{{$t(`areaManages.operational.abilitys.objdata.affiliation`)}}:</span><span class="general-content">{{replaceProject.institution}}</span></div>
-                            <div><span class="general-title">{{$t(`areaManages.operational.abilitys.objdata.areas`)}}:</span><span class="general-content">{{replaceProject.provName}}{{replaceProject.city}}</span></div>
+                            <div><span class="general-title">{{ $t(`areaManages.operational.abilitys.objdata.project`)
+                            }}:</span><span class="general-content">{{ replaceProject.standardName }}</span>
+                            </div>
+                            <div><span class="general-title">{{
+                                    $t(`areaManages.operational.abilitys.objdata.affiliation`)
+                            }}:</span><span class="general-content">{{ replaceProject.institution }}</span>
+                            </div>
+                            <div><span class="general-title">{{ $t(`areaManages.operational.abilitys.objdata.areas`)
+                            }}:</span><span class="general-content">{{ replaceProject.provName }}{{
+        replaceProject.city
+}}</span>
+                            </div>
                         </div>
                     </div>
                 </div>
                 <template #footer>
                     <div class="hint" v-show="loadingForm.cutAbility">
-                        <p>{{$t(`areaManages.operational.abilitys.cutTitle`)}}</p>
+                        <p>{{ $t(`areaManages.operational.abilitys.cutTitle`) }}</p>
                         <loadingsz></loadingsz>
                         <!-- <el-table v-loading="loadingForm.cutAbility" empty-text="   " style="width: 100%">
                         </el-table> -->
                     </div>
                     <div class="cut-footer">
                         <span class="dialog-footer">
-                            <el-button @click="CutNotarize = false" v-if="loadingForm.cutAbility===false">{{$t(`commonMsg.closes`)}}</el-button>
-                            <el-button disabled v-else>{{$t(`commonMsg.closes`)}}</el-button>
+                            <el-button @click="CutNotarize = false" v-if="loadingForm.cutAbility === false">
+                                {{ $t(`commonMsg.closes`) }}</el-button>
+                            <el-button disabled v-else>{{ $t(`commonMsg.closes`) }}</el-button>
                             <!-- <el-button type="primary" @click="loadingForm.cutAbility=true" :loading="loadingForm.cutAbility">确认</el-button> -->
-                            <el-button type="primary" @click="notarizeAbility(),loadingForm.cutAbility=true" :loading="loadingForm.cutAbility">{{$t(`commonMsg.confirm`)}}</el-button>
+                            <el-button type="primary" @click="notarizeAbility(), loadingForm.cutAbility = true"
+                                :loading="loadingForm.cutAbility">{{ $t(`commonMsg.confirm`) }}</el-button>
                         </span>
                     </div>
                 </template>
@@ -528,12 +609,14 @@ export default {
     /* background-color: #fff; */
     padding: 5px 10px;
 }
+
 .boxselect {
     width: 20%;
     display: inline-block;
     margin-top: 1.5%;
     padding-right: 1%;
 }
+
 .created-areaicon {
     width: 1.3em;
     height: 1.3em;
@@ -542,22 +625,26 @@ export default {
     overflow: hidden;
     margin-top: -135px;
 }
+
 .schoolLeft {
     width: 35%;
     padding: 0.5%;
     border-right: 1px dashed #ccc;
     float: left;
 }
+
 .schoolLeft p {
     line-height: 20px;
     margin-bottom: 0;
     color: #909399;
 }
+
 .schoolLeft ul {
     padding: 0;
     max-height: 530px;
     overflow-y: auto;
 }
+
 .details-list-school {
     padding: 20px 40px 20px 15px;
     display: flex;
@@ -565,41 +652,51 @@ export default {
     line-height: 22px;
     position: relative;
 }
+
 .details-list-school:hover {
     background-color: #dadada;
 }
+
 .details-list-school:hover .addiconsx {
     display: inline-block;
 }
+
 .active {
     background-color: #dadada;
 }
+
 /* .active .addicon {
     display: block;
 } */
 .list-school-logo {
     width: 20%;
 }
+
 .list-school-name {
     width: 65%;
     padding-left: 1%;
 }
+
 .list-school-name div {
     font-size: 14px;
     color: #909399;
 }
+
 .list-school-name div span {
     color: #303133;
 }
+
 .addiconsx {
     position: absolute;
     right: 5%;
     top: 35%;
     display: none;
 }
+
 .addiconsx:hover {
     cursor: pointer;
 }
+
 .areaaddschool {
     width: 2em !important;
     height: 2em !important;
@@ -607,28 +704,34 @@ export default {
     fill: currentColor !important;
     overflow: hidden !important;
 }
+
 .schoolRight {
     width: 60%;
     float: left;
 }
+
 .schoolRight-title {
     width: 100%;
     text-align: center;
     font-weight: 800;
     font-size: 18px;
 }
+
 .schoolRight-table {
     min-height: 55vh;
     padding: 1% 2%;
 }
+
 .cut-ability {
     position: absolute;
     top: 0%;
     right: 3%;
 }
+
 .nowAbility {
     line-height: 20px;
 }
+
 .diansInfo {
     content: '';
     display: inline-block;
@@ -637,15 +740,18 @@ export default {
     margin-right: 10px;
     margin-bottom: 2px;
 }
+
 .now-title {
     color: #757575;
     font-weight: 600;
     font-size: 14px;
 }
+
 .contents {
     font-size: 14px;
     font-weight: 550;
 }
+
 .cuticon {
     width: 1.1em;
     height: 1.1em;
@@ -654,12 +760,14 @@ export default {
     overflow: hidden;
     margin-right: 5px;
 }
+
 .cutboxs {
     display: flex;
     width: 80%;
     margin: 0 auto;
     text-align: center;
 }
+
 .now {
     width: 35%;
     line-height: 20px;
@@ -669,22 +777,27 @@ export default {
     text-align: center;
     background-color: aliceblue;
 }
+
 .cutbox-title {
     color: #757575;
     font-size: 16px;
 }
+
 .restbox {
     text-align: left;
 }
+
 .cutbox-name {
     color: #333;
     font-size: 16px;
     font-weight: 600;
 }
+
 .general-title {
     font-size: 14px;
     color: #757575;
 }
+
 .cutsbigIcon {
     width: 5.5em;
     height: 5.5em;
@@ -693,20 +806,24 @@ export default {
     overflow: hidden;
     margin-top: 35%;
 }
+
 .cutpastIcon {
     width: 15%;
     text-align: center;
     margin: 0% 5%;
 }
+
 .reminder {
     font-size: 14px;
     line-height: 120px;
     color: red;
 }
+
 .cut-footer {
     text-align: center;
     line-height: 60px;
 }
+
 .noData {
     width: 35%;
     height: 60vh;
@@ -714,6 +831,7 @@ export default {
     border-right: 1px dashed #ccc;
     float: left;
 }
+
 .noData div {
     width: 100%;
     height: 100%;
@@ -726,24 +844,28 @@ export default {
     align-items: center;
     color: #ccc;
 }
+
 .select-List {
     line-height: 60px;
     text-align: left;
-    padding: 1% 2%;
+    padding: 1%;
     width: 75%;
     float: left;
     font-weight: normal;
 }
+
 .province-box,
 .city-box,
 .dist-box,
 .close-box {
     display: inline-block;
 }
+
 .city-box,
 .dist-box {
     margin-left: 1%;
 }
+
 .closebtnIcon {
     width: 1.8em;
     height: 1.8em;
@@ -752,17 +874,21 @@ export default {
     overflow: hidden;
     margin-left: 8px;
 }
+
 .closebtnIcon:hover {
     cursor: pointer;
 }
+
 .hint {
     width: 100%;
     text-align: center;
 }
+
 .hint p {
     font-size: 16px;
     color: #1da1f2;
 }
+
 .created-icon {
     width: 1.3em;
     height: 1.3em;
@@ -777,26 +903,32 @@ export default {
     margin-top: 5% !important;
     margin-left: 150px !important;
 }
+
 .traitfrom {
     width: 98%;
     margin: 0 auto;
     /* padding: 1%; */
 }
+
 .traitfrom .el-form-item {
     width: 50%;
     margin: 0 auto;
 }
+
 .traitfrom .el-form-item__label {
     font-size: 16px;
 }
+
 .traitfrom .el-select {
     width: 100%;
 }
+
 .nowtitle {
     font-weight: bold;
     line-height: 20px;
     text-align: right;
 }
+
 .cuttable {
     width: 98%;
     padding: 1%;
@@ -804,14 +936,17 @@ export default {
     overflow-y: hidden;
     position: relative;
 }
+
 .cuttable-btn {
     width: 16%;
     margin: 0 auto;
 }
+
 .adjustmentDialog .el-dialog__header {
     line-height: 60px;
     padding: 0px !important;
 }
+
 .cuticon {
     width: 2em;
     height: 2em;
@@ -820,40 +955,51 @@ export default {
     overflow: hidden;
     margin-right: 5px;
 }
+
 .adjustmentDialog .el-dialog {
     line-height: 60px;
 }
+
 .details-list-school .el-image {
     margin-top: 25%;
 }
+
 .areamanabox .el-table__header-wrapper {
     line-height: 60px;
 }
+
 .cuttable .el-table--fit {
     width: 100%;
     height: 58vh;
     overflow: auto;
 }
+
 .adjustmentDialog .el-dialog {
     --el-dialog-margin-top: 9vh;
 }
+
 .adjustmentDialog .el-dialog__body {
     padding-top: 0px !important;
 }
+
 .adjustmentDialog .el-tabs__header {
     margin: 0px !important;
 }
+
 .adjustmentDialog .el-dialog__headerbtn {
     top: -15px;
     right: 8px;
 }
+
 .manage-table .el-image {
     margin-top: 3%;
 }
+
 .traitfrom .el-table::before,
 .schoolRight-table .el-table::before {
     width: 0px;
 }
+
 .areamanabox .el-tabs__header {
     height: 50px !important;
     line-height: 50px !important;

+ 28 - 6
TEAMModelBI/ClientApp/src/view/common/aside.vue

@@ -4,27 +4,29 @@
             <img src="@/assets/img/logox.png">
         </div>
         <el-aside :width="menuWidth">
-            <el-menu :default-active="currentRoutePath" :default-openeds="opens" class="el-menu-vertical-demo" :collapse="isCollapse" @select="handleSelect" :collapse-transition="locksetting" background-color="#1d1e23" text-color="#fff" unique-opened="true">
+            <el-menu :default-active="currentRoutePath" :default-openeds="opens" class="el-menu-vertical-demo"
+                :collapse="isCollapse" @select="handleSelect" :collapse-transition="locksetting"
+                background-color="#1d1e23" text-color="#fff" unique-opened="true">
                 <div v-for="item in menuList" :key="item.sort" class="menu-title">
                     <el-menu-item v-if="!item.child.length" :index="item.router">
                         <svg class="icon" aria-hidden="true">
                             <use :xlink:href="item.icon"></use>
                         </svg>
-                        <span @click="routerskip(item.router)">{{item.name}}</span>
+                        <span @click="routerskip(item.router)">{{ item.name }}</span>
                     </el-menu-item>
                     <el-sub-menu :index="item.sort" v-else>
                         <template #title>
                             <svg class="icon" aria-hidden="true">
                                 <use :xlink:href="item.icon"></use>
                             </svg>
-                            {{item.name}}
+                            {{ item.name }}
                         </template>
                         <el-menu-item v-for="items in item.child" :key="items.sort" :index="items.router">
                             <div @click="routerskip(items.router)" class="subordinate">
                                 <svg class="icon" aria-hidden="true">
                                     <use :xlink:href="items.icon"></use>
                                 </svg>
-                                {{items.name}}
+                                {{ items.name }}
                             </div>
                         </el-menu-item>
                     </el-sub-menu>
@@ -417,12 +419,14 @@ export default {
 .asidebox {
     position: relative;
 }
+
 .el-aside {
     background-color: #d3dce6;
     color: var(--el-text-color-primary);
     text-align: center;
     line-height: 200px;
 }
+
 .el-container:nth-child(5) .el-aside,
 .el-container:nth-child(6) .el-aside {
     line-height: 260px;
@@ -431,7 +435,8 @@ export default {
 .el-container:nth-child(7) .el-aside {
     line-height: 320px;
 }
-body > .el-container {
+
+body>.el-container {
     margin-bottom: 40px;
 }
 
@@ -443,15 +448,19 @@ body > .el-container {
 .el-container:nth-child(7) .el-aside {
     line-height: 320px;
 }
+
 .el-menu-vertical-demo:not(.el-menu--collapse) {
     width: 200px;
     min-height: 400px;
 }
+
 @font-face {
-    font-family: 'iconfont'; /* Project id 2934132 */
+    font-family: 'iconfont';
+    /* Project id 2934132 */
     src: url('https://at.alicdn.com/t/font_2934132_tn15yic1prg.woff2?t=1636790178979') format('woff2'), url('https://at.alicdn.com/t/font_2934132_tn15yic1prg.woff?t=1636790178979') format('woff'),
         url('https://at.alicdn.com/t/font_2934132_tn15yic1prg.ttf?t=1636790178979') format('truetype');
 }
+
 .iconfont {
     font-family: 'iconfont' !important;
     font-size: 22px;
@@ -460,12 +469,15 @@ body > .el-container {
     -webkit-text-stroke-width: 0.2px;
     -moz-osx-font-smoothing: grayscale;
 }
+
 .el-radio-button__inner {
     font-size: 18px !important;
 }
+
 .el-radio-button {
     background-color: rgb(238, 241, 246) !important;
 }
+
 .icon,
 .lockicon {
     width: 1.5em;
@@ -475,6 +487,7 @@ body > .el-container {
     overflow: hidden;
     margin-right: 25px;
 }
+
 .lockicon {
     width: 1em;
     height: 1em;
@@ -483,9 +496,11 @@ body > .el-container {
     overflow: hidden;
     margin-right: 5px;
 }
+
 .lockicon:hover {
     cursor: pointer;
 }
+
 .locks {
     position: absolute;
     width: 64px;
@@ -494,29 +509,36 @@ body > .el-container {
     line-height: 40px;
     border-top: 1px solid #ccc;
 }
+
 .MenuBox {
     width: 64px;
 }
+
 .viewbox .el-header {
     background-color: #1d1e23 !important;
     opacity: 0.97 !important;
     border-bottom: 2px solid #1cc0f3;
 }
+
 .viewbox .el-main {
     background-color: #fdfdfd;
 }
+
 .logobox {
     width: 100%;
     line-height: 58px;
     border-bottom: 2px solid #1cc0f3;
     text-align: center;
 }
+
 .MenuBox .el-menu-vertical-demo {
     overflow: hidden;
 }
+
 .subordinate {
     padding-left: 10px;
 }
+
 .el-menu--inline {
     background-color: #101117;
 }

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 554 - 268
TEAMModelBI/ClientApp/src/view/created/created.vue


+ 24 - 10
TEAMModelBI/ClientApp/src/view/index/index.vue

@@ -1,6 +1,6 @@
 <template>
     <!--首页(管理员以及研发页面)-->
-    <div class="statisticsbox-all" v-if="showPattern === 'admin'">
+    <div class="statisticsbox-all" v-if="showPattern.includes('admin')">
         <c-scrollbar ref="scrollbarRef" width="100%" height="100%" trigger="hover" direction="y">
             <div class="headerinbox">
                 <div class="headerinbox-title">TEAM Model·BI 数据监控系统</div>
@@ -228,7 +228,7 @@
         </c-scrollbar>
         <!-- <div class="participationbox"><span>查看我参与的</span></div> -->
     </div>
-    <AssitInterface v-else-if="showPattern === 'assist'"></AssitInterface>
+    <AssitInterface v-else-if="showPattern.includes('assist')"></AssitInterface>
 </template>
 <script>
 import { ref, getCurrentInstance, onMounted } from 'vue'
@@ -246,6 +246,7 @@ import { ElMessage, ElLoading } from 'element-plus'
 import * as echarts from 'echarts'
 import AssitInterface from './assitindex.vue'
 import 'echarts-liquidfill'
+import jwt_decode from 'jwt-decode'
 
 import Online from '@/components/echarts/test/online.vue'
 import OnlineType from '@/components/echarts/test/onlineType.vue'
@@ -272,7 +273,7 @@ export default {
     setup() {
         let { proxy } = getCurrentInstance()
         const routers = useRouter()
-        let showPattern = ref('admin')
+        let showPattern = ref([])
         let aspectsData = ref([
             { id: 1, title: '区内学校', num: 0, icon: '#icon-renshixuexiao', classname: 'school' },
             { id: 2, title: '区内老师', num: 0, icon: '#icon-schoollaoshi', classname: 'teach' },
@@ -396,6 +397,7 @@ export default {
             standard: { num: 0, proportion: 0 },
             major: { num: 0, proportion: 0 },
         })
+        let fileList = ref(["xlsx", "exel"])
         //首页
         let totalArea = ref({
             //在线人数趋势
@@ -654,7 +656,7 @@ export default {
                 },
                 // legend: { orient: 'vertical', top: 0, right: 0, itemWidth: 10, itemHeight: 10, icon: 'circle', data: ['学校课例', '个人课例'] },
                 grid: {
-                    top: '15%',
+                    top: '23%',
                     bottom: '10%',
                     left: '1%',
                     right: '10%',
@@ -819,14 +821,18 @@ export default {
             //课例活跃 折线图
             dynamic: {
                 //  backgroundColor: '#fff',
+                tooltip: {
+
+                },
                 grid: {
-                    top: '18%',
+                    top: '23%',
                     bottom: '22%',
                     left: '4%',
                     right: '7%',
                 },
                 legend: {
-                    top: '0',
+                    left: '45%',
+                    top: '0%',
                     itemHeight: 10,
                     data: ['昨日', '今日'],
                     textStyle: {
@@ -884,7 +890,7 @@ export default {
                         '21:00',
                         '22:00',
                         '23:00',
-                        '24:00',
+                        // '24:00',
                     ],
                 },
                 yAxis: {
@@ -1127,7 +1133,7 @@ export default {
                         },
                         itemStyle: {
                             borderRadius: 5,
-                            borderColor: '#fff',
+                            borderColor: '#bdc3c7',
                             borderWidth: 2,
                         },
                         // emphasis: {
@@ -1178,6 +1184,12 @@ export default {
                 console.log(Width, Height, '宽高值')
             }
         })
+        //获取用户身份显示不同页面
+        function getUseridentity() {
+            let user = jwt_decode(JSON.parse(localStorage.getItem('id_token')))
+            console.log(user, '用户身份识别')
+            showPattern.value = user.roles
+        }
         function getAll() {
             // let loading = ElLoading.service({
             //     lock: true,
@@ -1327,7 +1339,7 @@ export default {
                     //基础版
                     schoolList.forEach((x) => {
                         x.scale === 0 ? basicsData.push(x) : ''
-                        x.scale === 500 && x.hard === 0 && x.serial === 0 && x.service ? standardData.push(x) : ''
+                        x.scale === 500 && x.hard === 0 && x.serial === 0 && x.service === 0 ? standardData.push(x) : ''
                         x.scale === 500 && (x.hard !== 0 || x.serial !== 0 || x.service !== 0) ? majorData.push(x) : ''
                     })
                     versionsData.value.basics.num = basicsData.length
@@ -1695,6 +1707,7 @@ export default {
             header[0].style.display = 'block'
             screen.value.state = false
         }
+        getUseridentity()
         getAll()
         return {
             aspectsData,
@@ -1718,7 +1731,8 @@ export default {
             allTime,
             nowTimeQuantum,
             getVersionsData,
-            versionsData
+            versionsData,
+            getUseridentity
         }
     },
 }

+ 15 - 1
TEAMModelBI/ClientApp/src/view/login.vue

@@ -1,7 +1,7 @@
 <template>
     <div class="backgorundbox">
         <div class="loginbox">
-            <div class="logintitle">{{$t(`login.title`)}}</div>
+            <div class="logintitle">{{ $t(`login.title`) }}</div>
             <!-- <div class="usrpwd" v-if="loginModel">
                 <div class='userbox' style="margin-bottom:10%">
                     <el-input v-model="user" placeholder="醍摩豆ID/手机号码" prefix-icon="el-icon-user" />
@@ -234,6 +234,7 @@ export default {
     position: relative;
     /* filter: blur(2px); */
 }
+
 .loginbox {
     position: absolute;
     width: 550px;
@@ -243,10 +244,12 @@ export default {
     border-radius: 10px;
     box-shadow: 1px 1px 5px #ccc;
 }
+
 .usrpwd {
     height: 330px;
     text-align: center;
 }
+
 .logintitle {
     text-align: center;
     font-size: 20px;
@@ -254,15 +257,18 @@ export default {
     margin-bottom: 8%;
     margin-top: 5%;
 }
+
 .userbox {
     text-align: center;
     width: 60%;
     margin: 0 auto;
     position: relative;
 }
+
 .none {
     display: none;
 }
+
 .loginbtn {
     position: absolute;
     display: block;
@@ -272,6 +278,7 @@ export default {
     height: 44px;
     line-height: 43px;
 }
+
 .not_has_more {
     margin: 30px 0px 20px 0px;
     line-height: 50px;
@@ -284,6 +291,7 @@ export default {
     color: rgba(140, 142, 165, 1);
     line-height: 30px;
 }
+
 .not_has_more::after,
 .not_has_more::before {
     position: absolute;
@@ -294,12 +302,15 @@ export default {
     top: 15px;
     right: 28%;
 }
+
 .not_has_more::after {
     left: 28%;
 }
+
 .ddlogin {
     margin-top: 3%;
 }
+
 .cut {
     position: absolute;
     top: 0px;
@@ -311,10 +322,12 @@ export default {
     height: 45px;
     border-radius: 30px;
 }
+
 .el-loading-spinner {
     margin-top: 0 !important;
     transform: translateY(-50%);
 }
+
 .el-loading-text {
     padding-top: 50px;
     background-image: url('../assets/img/loading2.gif') !important;
@@ -322,6 +335,7 @@ export default {
     background-position: top center;
     background-size: 75px auto;
 }
+
 .el-loading-spinner .circular {
     display: none;
 }

+ 128 - 48
TEAMModelBI/ClientApp/src/view/participation/index.vue

@@ -1,29 +1,38 @@
 <template>
     <!--学校列表-->
-    <div class="schoolbox" v-show="models==='default'">
+    <div class="schoolboxtad" v-show="models === 'default'">
         <div class="select-List">
             <div class="province-box">
-                <span>{{$t(`areaManages.selector.provinceName`)}}:</span>
-                <el-select v-model="provinceOptions.provinceValue" :placeholder="$t(`areaManages.selector.provinceDefault`)" @change="areaSelctChange(provinceOptions.provinceValue,'province')">
-                    <el-option v-for="item in provinceOptions.optionInfo" :key="item.code" :label="item.name" :value="item.name">
+                <span>{{ $t(`areaManages.selector.provinceName`) }}:</span>
+                <el-select v-model="provinceOptions.provinceValue"
+                    :placeholder="$t(`areaManages.selector.provinceDefault`)"
+                    @change="areaSelctChange(provinceOptions.provinceValue, 'province')">
+                    <el-option v-for="item in provinceOptions.optionInfo" :key="item.code" :label="item.name"
+                        :value="item.name">
                     </el-option>
                 </el-select>
             </div>
             <div class="city-box">
-                <span>{{$t(`areaManages.selector.cityName`)}}:</span>
-                <el-select v-model="cityOptions.cityValue" :placeholder="$t(`areaManages.selector.cityDefault`)" @change="areaSelctChange(cityOptions.cityValue,'city')">
-                    <el-option v-for="item in cityOptions.cityInfo" :key="item.code" :label="item.name" :value="item.name">
+                <span>{{ $t(`areaManages.selector.cityName`) }}:</span>
+                <el-select v-model="cityOptions.cityValue" :placeholder="$t(`areaManages.selector.cityDefault`)"
+                    @change="areaSelctChange(cityOptions.cityValue, 'city')">
+                    <el-option v-for="item in cityOptions.cityInfo" :key="item.code" :label="item.name"
+                        :value="item.name">
                     </el-option>
                 </el-select>
             </div>
             <div class="dist-box">
-                <span>{{$t(`areaManages.selector.areaName`)}}:</span>
-                <el-select v-model="distOptions.distValue" filterable allow-create default-first-option :placeholder="$t(`areaManages.selector.areaDefault`)" @change="areaSelctChange(distOptions.distValue,'dist')">
-                    <el-option v-for="item in distOptions.distInfo" :key="item.code" :label="item.name" :value="item.name">
+                <span>{{ $t(`areaManages.selector.areaName`) }}:</span>
+                <el-select v-model="distOptions.distValue" filterable allow-create default-first-option
+                    :placeholder="$t(`areaManages.selector.areaDefault`)"
+                    @change="areaSelctChange(distOptions.distValue, 'dist')">
+                    <el-option v-for="item in distOptions.distInfo" :key="item.code" :label="item.name"
+                        :value="item.name">
                     </el-option>
                 </el-select>
             </div>
-            <div class="close-box" v-show="provinceOptions.provinceValue || cityOptions.cityValue ||distOptions.distValue">
+            <div class="close-box"
+                v-show="provinceOptions.provinceValue || cityOptions.cityValue || distOptions.distValue">
                 <svg class="closebtnIcon" aria-hidden="true" @click="closeSelectarea">
                     <use xlink:href="#icon-quxiao"></use>
                 </svg>
@@ -38,8 +47,10 @@
             </el-button>
         </div> -->
         <div class="school-list">
-            <el-table :data="tableData" style="width: 100%" height="75vh" v-loading="loading" element-loading-text="加载中...">
-                <el-table-column prop="index" :label="$t(`schoolManages.tables.serialnum`)" type="index" sortable align="center" />
+            <el-table :data="tableData" style="width: 100%" height="75vh" v-loading="loading"
+                element-loading-text="加载中...">
+                <el-table-column prop="index" :label="$t(`schoolManages.tables.serialnum`)" type="index" sortable
+                    align="center" />
                 <el-table-column :label="$t(`schoolManages.tables.badge`)" width="150" align="center">
                     <template #default="scope">
                         <el-image style="width: 70px; height: 70px" :src="scope.row.picture" fit="fill"></el-image>
@@ -53,9 +64,14 @@
                 </el-table-column> -->
                 <el-table-column :label="$t(`schoolManages.tables.scale`)" class="school-table-edition" align="center">
                     <template #default="scope">
-                        <el-image style="width: 80px; height: 80px" :src="imgData.basics" fit="fill" v-if="scope.row.scale ===0"></el-image>
-                        <el-image style="width: 80px; height: 80px" :src="imgData.standard" fit="fill" v-else-if="scope.row.scale ===500 && scope.row.hard.length===0 && scope.row.serial.length ===0 && scope.row.service.length ===0"></el-image>
-                        <el-image style="width: 80px; height: 80px" :src="imgData.specialty" fit="fill" v-else-if="scope.row.scale ===500 && (scope.row.hard.length !=0 || scope.row.serial.length !=0 || scope.row.service.length !=0)"></el-image>
+                        <el-image style="width: 80px; height: 80px" :src="imgData.basics" fit="fill"
+                            v-if="scope.row.scale === 0"></el-image>
+                        <el-image style="width: 80px; height: 80px" :src="imgData.standard" fit="fill"
+                            v-else-if="scope.row.scale === 500 && scope.row.hard.length === 0 && scope.row.serial.length === 0 && scope.row.service.length === 0">
+                        </el-image>
+                        <el-image style="width: 80px; height: 80px" :src="imgData.specialty" fit="fill"
+                            v-else-if="scope.row.scale === 500 && (scope.row.hard.length != 0 || scope.row.serial.length != 0 || scope.row.service.length != 0)">
+                        </el-image>
                     </template>
                 </el-table-column>
                 <el-table-column prop="id" :label="$t(`schoolManages.tables.brevityCode`)" align="center" />
@@ -65,7 +81,7 @@
                             <svg class="created-icon" aria-hidden="true">
                                 <use xlink:href="#icon-shuju"></use>
                             </svg>
-                            {{scope.row.lessonCount}}
+                            {{ scope.row.lessonCount }}
                         </div>
                         <div v-else>暂无</div>
                     </template>
@@ -76,7 +92,7 @@
                 <el-table-column prop="size" :label="$t(`schoolManages.tables.spacesize`)" align="center" />
                 <el-table-column :label="$t(`schoolManages.tables.assis`)" align="center">
                     <template #default="scope">
-                        <div v-if="scope.row.assisName">{{scope.row.assisName}}</div>
+                        <div v-if="scope.row.assisName">{{ scope.row.assisName }}</div>
                         <div v-else>暂无</div>
                     </template>
                 </el-table-column>
@@ -101,9 +117,10 @@
                     </template>
                 </el-table-column>
                 <!-- <el-table-column prop="state" label="状态" width="110" align="center" /> -->
-                <el-table-column :label="$t(`schoolManages.tables.operate`)" align="center" v-if="PowerShow">
+                <el-table-column :label="$t(`schoolManages.tables.operate`)" align="center">
                     <template #default="scope">
-                        <el-button type="primary" size="small" @click.prevent="deleteRow(scope.$index, scope.row)">{{$t(`schoolManages.tables.operatecontent`)}}</el-button>
+                        <el-button type="primary" size="small" @click.prevent="deleteRow(scope.$index, scope.row)">
+                            {{ $t(`schoolManages.tables.operatecontent`) }}</el-button>
                         <!-- <el-button type="danger" size="small" @click="removeSchool(scope.row,scope.$index)">删除</el-button> -->
                     </template>
                 </el-table-column>
@@ -113,12 +130,13 @@
     <!--学校列表end-->
     <!--编辑学校页面-->
     <div class="schoolDeatils">
-        <div class="backbtn" v-if="models==='details' && PowerShow">
-            <el-button class="changebtn" v-if="store.state.changbtnShow && changebtns" @click="getSetschool()" size="small">
+        <div class="backbtn" v-if="models === 'details' && PowerShow">
+            <el-button class="changebtn" v-if="store.state.changbtnShow && changebtns" @click="getSetschool()"
+                size="small">
                 <svg class="changebtn-areaicon" aria-hidden="true">
                     <use xlink:href="#icon-wenjian"></use>
                 </svg>
-                <span class="changebtn-title">{{$t(`schoolManages.gradSet.save`)}}</span>
+                <span class="changebtn-title">{{ $t(`schoolManages.gradSet.save`) }}</span>
             </el-button>
             <el-button type="primary" size="small" @click="schoolClose">
                 <svg class="back-icon" aria-hidden="true">
@@ -127,20 +145,23 @@
                 返回
             </el-button>
         </div>
-        <el-tabs v-if="models==='details' && PowerShow" @tab-click="changeTabs">
+        <el-tabs v-if="models === 'details' && PowerShow" @tab-click="changeTabs">
             <!--基础设置-->
             <el-tab-pane :label="$t(`schoolManages.redactSet`)">
-                <div class="redactbox" v-show="models==='details' && PowerShow">
+                <div class="redactbox" v-show="models === 'details' && PowerShow">
                     <div class="school-formbox">
                         <el-form ref="form" :model="nowPitchdata" label-width="120px">
-                            <el-form-item :label="$t(`schoolManages.basicSet.name`)+':'" class="school-form-name">
+                            <el-form-item :label="$t(`schoolManages.basicSet.name`) + ':'" class="school-form-name">
                                 <el-input v-model="nowPitchdata.name"></el-input>
                             </el-form-item>
-                            <el-form-item :label="$t(`schoolManages.basicSet.badge`)+':'" class="school-form-badge">
-                                <el-upload class="upload-demo-redact" :headers="uploadHeader" action="/blob/upload-public" :before-upload="changeBadge" :on-success="success" :on-error="handleUpdErr">
-                                    <el-image style="width: 100%; height:125px" :src="nowPitchdata.picture" fit="contain"></el-image>
+                            <el-form-item :label="$t(`schoolManages.basicSet.badge`) + ':'" class="school-form-badge">
+                                <el-upload class="upload-demo-redact" :headers="uploadHeader"
+                                    action="/blob/upload-public" :before-upload="changeBadge" :on-success="success"
+                                    :on-error="handleUpdErr">
+                                    <el-image style="width: 100%; height:125px" :src="nowPitchdata.picture"
+                                        fit="contain"></el-image>
                                     <div class="changebadge">
-                                        <el-button>{{$t(`schoolManages.basicSet.badgeChange`)}}</el-button>
+                                        <el-button>{{ $t(`schoolManages.basicSet.badgeChange`) }}</el-button>
                                     </div>
                                 </el-upload>
                             </el-form-item>
@@ -151,9 +172,11 @@
                                 <el-checkbox v-model="nowPitchdata.period[3].value" label="职高"></el-checkbox>
                                 <el-checkbox v-model="nowPitchdata.period[4].value" label="大学"></el-checkbox>
                             </el-form-item> -->
-                            <el-form-item :label="$t(`schoolManages.basicSet.type`)+':'" class="school-form-grading">
-                                <el-radio v-model="nowPitchdata.type" label="1" size="large">{{$t(`schoolManages.basicSet.ordinary`)}}</el-radio>
-                                <el-radio v-model="nowPitchdata.type" label="2" size="large">{{$t(`schoolManages.basicSet.higherEducation`)}}</el-radio>
+                            <el-form-item :label="$t(`schoolManages.basicSet.type`) + ':'" class="school-form-grading">
+                                <el-radio v-model="nowPitchdata.type" label="1" size="large">
+                                    {{ $t(`schoolManages.basicSet.ordinary`) }}</el-radio>
+                                <el-radio v-model="nowPitchdata.type" label="2" size="large">
+                                    {{ $t(`schoolManages.basicSet.higherEducation`) }}</el-radio>
                             </el-form-item>
                             <!-- <el-form-item :label="$t(`schoolManages.basicSet.nowAssistant`)+':'" class="school-form-admin">
                                 <el-select v-model="adminvalue" multiple @change="assistChange" :placeholder="$t(`schoolManages.basicSet.nowAssistanthint`)">
@@ -161,13 +184,17 @@
                                     </el-option>
                                 </el-select>
                             </el-form-item> -->
-                            <el-form-item :label="$t(`schoolManages.basicSet.brevityCode`)+':'" class="school-form-code">
-                                <el-input disabled :placeholder="nowPitchdata.id" v-if="nowPitchdata.id !==null" />
-                                <el-input disabled :placeholder="$t(`schoolManages.basicSet.notCode`)" v-else="nowPitchdata.id ==null" />
+                            <el-form-item :label="$t(`schoolManages.basicSet.brevityCode`) + ':'"
+                                class="school-form-code">
+                                <el-input disabled :placeholder="nowPitchdata.id" v-if="nowPitchdata.id !== null" />
+                                <el-input disabled :placeholder="$t(`schoolManages.basicSet.notCode`)"
+                                    v-else="nowPitchdata.id ==null" />
                             </el-form-item>
                             <el-form-item label="所属学区:" class="school-form-area">
-                                <el-select v-model="areaSelect.Selectvalue" :placeholder="$t(`schoolManages.basicSet.region`)">
-                                    <el-option v-for="item in areaSelect.data" :key="item.name" :label="item.name" :value="item.id">
+                                <el-select v-model="areaSelect.Selectvalue"
+                                    :placeholder="$t(`schoolManages.basicSet.region`)">
+                                    <el-option v-for="item in areaSelect.data" :key="item.name" :label="item.name"
+                                        :value="item.id">
                                     </el-option>
                                 </el-select>
                             </el-form-item>
@@ -177,15 +204,17 @@
                             <!-- <el-form-item :label="$t(`schoolManages.basicSet.location`)+':'" class="school-form-site">
                                 <el-input disabled :placeholder="nowPitchdata.address" />
                             </el-form-item> -->
-                            <el-form-item :label="$t(`schoolManages.basicSet.spacesize`)+':'" class="school-form-size">
+                            <el-form-item :label="$t(`schoolManages.basicSet.spacesize`) + ':'"
+                                class="school-form-size">
                                 <el-input-number v-model="nowPitchdata.size" :min="1" :max="1000" />GB
                             </el-form-item>
                             <!-- <el-form-item label="学校状态:" class="school-form-state">
                     <el-switch v-model="value2" active-color="#13ce66" inactive-color="#ff4949" />
                 </el-form-item> -->
                             <el-form-item>
-                                <el-button type="primary" @click="updateSchoolinfo">{{$t(`schoolManages.basicSet.submit`)}}</el-button>
-                                <el-button @click="schoolClose">{{$t(`commonMsg.closes`)}}</el-button>
+                                <el-button type="primary" @click="updateSchoolinfo">
+                                    {{ $t(`schoolManages.basicSet.submit`) }}</el-button>
+                                <el-button @click="schoolClose">{{ $t(`commonMsg.closes`) }}</el-button>
                             </el-form-item>
                         </el-form>
                     </div>
@@ -349,8 +378,8 @@ export default {
             nowPitchdata.value.areaId = data.areaId
             data.assists.length
                 ? data.assists.forEach((element) => {
-                      adminvalue.value.push(element.tmdId)
-                  })
+                    adminvalue.value.push(element.tmdId)
+                })
                 : ''
             let token = JSON.parse(localStorage.getItem('id_token'))
             uploadHeader.value['x-auth-authtoken'] = token
@@ -530,7 +559,7 @@ export default {
         function updateSuccess() {
             loading.value = true
             setTimeout(() => {
-                ;(models.value = 'default'), (tableData.value = []), getAllschool()
+                ; (models.value = 'default'), (tableData.value = []), getAllschool()
             }, 2000)
         }
         //地区选择close btn
@@ -657,11 +686,12 @@ export default {
 }
 </script>
 <style scoped>
-.schoolbox {
+.schoolboxtad {
     width: 100%;
     margin: 0 auto;
     line-height: 80px;
 }
+
 .select-List {
     line-height: 60px;
     text-align: left;
@@ -669,18 +699,21 @@ export default {
     width: 75%;
     float: left;
 }
+
 .school-list {
     width: 96%;
     max-height: 74vh;
     margin: 0 auto;
     /* overflow-y: auto; */
 }
+
 /*编辑页面样式*/
 .redactbox {
     width: 100%;
     height: 87vh;
     background-color: #fff;
 }
+
 .backbtn {
     text-align: left;
     position: absolute;
@@ -689,28 +722,35 @@ export default {
     z-index: 999;
     line-height: 40px;
 }
+
 .school-formbox {
     width: 85%;
     margin: 0 auto;
     padding: 1%;
 }
+
 .upload-demo-redact {
     width: 100%;
     height: 125px;
 }
+
 .school-form-name {
     width: 50%;
 }
+
 .school-form-area {
     width: 35%;
 }
+
 .school-form-badge,
 .school-form-code {
     width: 24%;
 }
+
 .school-form-grading {
     width: 80%;
 }
+
 .changebadge {
     width: 100%;
     height: 125px;
@@ -719,20 +759,25 @@ export default {
     left: 0px;
     opacity: 0;
 }
+
 .school-form-site {
     width: 35%;
 }
+
 .school-form-size {
     width: 21%;
     color: #bdc3c7;
 }
+
 .school-form-admin {
     width: 35%;
     text-align: left;
 }
+
 .school-form-state {
     width: 15%;
 }
+
 .school-admin-check {
     width: 2em;
     height: 2em;
@@ -740,16 +785,19 @@ export default {
     fill: currentColor;
     overflow: hidden;
 }
+
 .province-box,
 .city-box,
 .dist-box,
 .close-box {
     display: inline-block;
 }
+
 .city-box,
 .dist-box {
     margin-left: 1%;
 }
+
 /*btn*/
 .boxselect {
     width: 20%;
@@ -757,6 +805,7 @@ export default {
     margin-top: 0.5%;
     text-align: right;
 }
+
 .created-areaicon {
     width: 1.3em;
     height: 1.3em;
@@ -765,6 +814,7 @@ export default {
     overflow: hidden;
     margin-top: -135px;
 }
+
 .closebtnIcon {
     width: 1.8em;
     height: 1.8em;
@@ -773,20 +823,25 @@ export default {
     overflow: hidden;
     margin-left: 8px;
 }
+
 .closebtnIcon:hover {
     cursor: pointer;
 }
+
 .schoolDeatils {
     position: relative;
     background: #e9eef3;
 }
+
 .changebtn {
     display: inline-block;
     /* float: right; */
 }
+
 .changebtn-title {
     font-size: 12px;
 }
+
 .changebtn-areaicon {
     width: 0.9em;
     height: 0.9em;
@@ -794,6 +849,7 @@ export default {
     fill: currentColor;
     margin-right: 3px;
 }
+
 .back-icon {
     width: 0.9em;
     height: 0.9em;
@@ -801,6 +857,7 @@ export default {
     fill: currentColor;
     margin-right: 3px;
 }
+
 .created-icon {
     width: 1.3em;
     height: 1.3em;
@@ -809,6 +866,7 @@ export default {
     overflow: hidden;
     margin-right: 5px;
 }
+
 .school-analyse {
     width: 1.8em;
     height: 1.8em;
@@ -817,6 +875,7 @@ export default {
     overflow: hidden;
     cursor: pointer;
 }
+
 .have-modules {
     display: flex;
     justify-content: space-between;
@@ -824,57 +883,71 @@ export default {
 }
 </style>
 <style>
-.schoolbox .el-cascader {
+.schoolboxtad .el-cascader {
     width: 20%;
 }
+
 .school-form-badge .el-form-item__label {
     line-height: 107px;
 }
+
 .school-form-badge .el-form-item__content {
     border: 1px solid #ccc;
     position: relative;
 }
+
 .changebadge .el-button {
     width: 100%;
     height: 100%;
     font-size: 18px;
     color: #fff;
 }
+
 .changebadge .el-button span {
     border: 1px solid #ccc;
     background-color: #409eff;
     padding: 5px;
     border-radius: 10px;
 }
+
 .changebadge:hover {
     opacity: 0.8;
 }
+
 .school-form-code .el-input__inner {
     text-align: center;
 }
+
 .school-form-admin .el-select {
     width: 100%;
 }
+
 .school-form-badge .el-image__inner {
     width: 100%;
     height: 85%;
     margin-top: 10%;
 }
+
 .school-form-grading .el-form-item__content {
     text-align: left;
 }
+
 .el-select-dropdown__item {
     padding: 0 12px 0 20px;
 }
+
 .school-formbox .el-form-item__content {
     text-align: left;
 }
+
 .school-form-area .el-select {
     width: 100%;
 }
+
 .school-list .el-table__header-wrapper {
     line-height: 60px;
 }
+
 .schoolDeatils .el-tabs__header {
     height: 45px;
     line-height: 45px;
@@ -884,16 +957,20 @@ export default {
     background-color: #fff;
     margin: 0px 0px 1px;
 }
+
 .schoolDeatils .el-tabs__content {
     padding: 0px;
 }
+
 .backbtn .changebtn {
     padding: 8px 15px;
 }
+
 .upload-demo-redact .el-upload {
     width: 100%;
     height: 125px;
 }
+
 .school-form-grading .el-radio__input.is-checked .el-radio__inner::after {
     content: '';
     width: 10px;
@@ -911,16 +988,19 @@ export default {
     border-radius: 0px;
     background: none;
 }
+
 .schoolDeatils .el-tabs__nav-wrap::after {
     width: 0%;
 }
-.el-upload-dragger {
-}
+
+.el-upload-dragger {}
+
 @media screen and (max-width: 1920px) {
     .school-formbox .school-form-badge {
         width: 17.5%;
     }
 }
+
 @media screen and (max-width: 1400px) {
     .school-formbox .school-form-badge {
         width: 24%;

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 251 - 89
TEAMModelBI/ClientApp/src/view/participation/setAbility.vue


+ 138 - 53
TEAMModelBI/ClientApp/src/view/schoolServe/school.vue

@@ -1,36 +1,45 @@
 <template>
     <!--学校列表-->
-    <div class="schoolbox" v-show="models==='default'">
+    <div class="schoolboxea" v-show="models === 'default'">
         <div class="select-List">
             <div class="province-box">
-                <span>{{$t(`areaManages.selector.provinceName`)}}:</span>
-                <el-select v-model="provinceOptions.provinceValue" :placeholder="$t(`areaManages.selector.provinceDefault`)" @change="areaSelctChange(provinceOptions.provinceValue,'province')">
-                    <el-option v-for="item in provinceOptions.optionInfo" :key="item.code" :label="item.name" :value="item.name">
+                <!-- <span>{{$t(`areaManages.selector.provinceName`)}}:</span> -->
+                <el-select v-model="provinceOptions.provinceValue"
+                    :placeholder="$t(`areaManages.selector.provinceDefault`)"
+                    @change="areaSelctChange(provinceOptions.provinceValue, 'province')">
+                    <el-option v-for="item in provinceOptions.optionInfo" :key="item.code" :label="item.name"
+                        :value="item.name">
                     </el-option>
                 </el-select>
             </div>
             <div class="city-box">
-                <span>{{$t(`areaManages.selector.cityName`)}}:</span>
-                <el-select v-model="cityOptions.cityValue" :placeholder="$t(`areaManages.selector.cityDefault`)" @change="areaSelctChange(cityOptions.cityValue,'city')">
-                    <el-option v-for="item in cityOptions.cityInfo" :key="item.code" :label="item.name" :value="item.name">
+                <!-- <span>{{$t(`areaManages.selector.cityName`)}}:</span> -->
+                <el-select v-model="cityOptions.cityValue" :placeholder="$t(`areaManages.selector.cityDefault`)"
+                    @change="areaSelctChange(cityOptions.cityValue, 'city')">
+                    <el-option v-for="item in cityOptions.cityInfo" :key="item.code" :label="item.name"
+                        :value="item.name">
                     </el-option>
                 </el-select>
             </div>
             <div class="dist-box">
-                <span>{{$t(`areaManages.selector.areaName`)}}:</span>
-                <el-select v-model="distOptions.distValue" filterable allow-create default-first-option :placeholder="$t(`areaManages.selector.areaDefault`)" @change="areaSelctChange(distOptions.distValue,'dist')">
-                    <el-option v-for="item in distOptions.distInfo" :key="item.code" :label="item.name" :value="item.name">
+                <!-- <span>{{$t(`areaManages.selector.areaName`)}}:</span> -->
+                <el-select v-model="distOptions.distValue" filterable allow-create default-first-option
+                    :placeholder="$t(`areaManages.selector.areaDefault`)"
+                    @change="areaSelctChange(distOptions.distValue, 'dist')">
+                    <el-option v-for="item in distOptions.distInfo" :key="item.code" :label="item.name"
+                        :value="item.name">
                     </el-option>
                 </el-select>
             </div>
-            <div class="close-box" v-show="provinceOptions.provinceValue || cityOptions.cityValue ||distOptions.distValue">
+            <div class="close-box"
+                v-show="provinceOptions.provinceValue || cityOptions.cityValue || distOptions.distValue">
                 <svg class="closebtnIcon" aria-hidden="true" @click="closeSelectarea">
                     <use xlink:href="#icon-quxiao"></use>
                 </svg>
             </div>
         </div>
         <div class="boxselect" v-if="PowerShow">
-            <el-button size="small" @click="createdSchoolbtn">
+            <el-button size="small" @click="createdSchoolbtn" type="primary">
                 <svg class="created-icon" aria-hidden="true">
                     <use xlink:href="#icon-chuangjianx"></use>
                 </svg>
@@ -38,8 +47,10 @@
             </el-button>
         </div>
         <div class="school-list">
-            <el-table :data="tableData" style="width: 100%" height="75vh" v-loading="loading" element-loading-text="加载中...">
-                <el-table-column prop="index" :label="$t(`schoolManages.tables.serialnum`)" type="index" sortable align="center" />
+            <el-table :data="tableData" style="width: 100%" height="75vh" v-loading="loading"
+                element-loading-text="加载中...">
+                <el-table-column prop="index" :label="$t(`schoolManages.tables.serialnum`)" type="index" sortable
+                    align="center" />
                 <el-table-column :label="$t(`schoolManages.tables.badge`)" width="150" align="center">
                     <template #default="scope">
                         <el-image style="width: 70px; height: 70px" :src="scope.row.picture" fit="fill"></el-image>
@@ -53,9 +64,14 @@
                 </el-table-column> -->
                 <el-table-column :label="$t(`schoolManages.tables.scale`)" class="school-table-edition" align="center">
                     <template #default="scope">
-                        <el-image style="width: 80px; height: 80px" :src="imgData.basics" fit="fill" v-if="scope.row.scale ===0"></el-image>
-                        <el-image style="width: 80px; height: 80px" :src="imgData.standard" fit="fill" v-else-if="scope.row.scale ===500 && scope.row.hard.length ===0 && scope.row.serial.length ===0 && scope.row.service.length ===0"></el-image>
-                        <el-image style="width: 80px; height: 80px" :src="imgData.specialty" fit="fill" v-else-if="scope.row.scale ===500 && (scope.row.hard.length !=0 || scope.row.serial.length !=0 || scope.row.service.length !=0)"></el-image>
+                        <el-image style="width: 80px; height: 80px" :src="imgData.basics" fit="fill"
+                            v-if="scope.row.scale === 0"></el-image>
+                        <el-image style="width: 80px; height: 80px" :src="imgData.standard" fit="fill"
+                            v-else-if="scope.row.scale === 500 && scope.row.hard.length === 0 && scope.row.serial.length === 0 && scope.row.service.length === 0">
+                        </el-image>
+                        <el-image style="width: 80px; height: 80px" :src="imgData.specialty" fit="fill"
+                            v-else-if="scope.row.scale === 500 && (scope.row.hard.length != 0 || scope.row.serial.length != 0 || scope.row.service.length != 0)">
+                        </el-image>
                     </template>
                 </el-table-column>
                 <el-table-column prop="id" :label="$t(`schoolManages.tables.brevityCode`)" align="center" />
@@ -65,7 +81,7 @@
                             <svg class="created-icon" aria-hidden="true">
                                 <use xlink:href="#icon-shuju"></use>
                             </svg>
-                            {{scope.row.lessonCount}}
+                            {{ scope.row.lessonCount }}
                         </div>
                         <div v-else>暂无</div>
                     </template>
@@ -76,7 +92,7 @@
                 <el-table-column prop="size" :label="$t(`schoolManages.tables.spacesize`)" align="center" />
                 <el-table-column :label="$t(`schoolManages.tables.assis`)" align="center">
                     <template #default="scope">
-                        <div v-if="scope.row.assisName">{{scope.row.assisName}}</div>
+                        <div v-if="scope.row.assisName">{{ scope.row.assisName }}</div>
                         <div v-else>暂无</div>
                     </template>
                 </el-table-column>
@@ -103,8 +119,10 @@
                 <!-- <el-table-column prop="state" label="状态" width="110" align="center" /> -->
                 <el-table-column :label="$t(`schoolManages.tables.operate`)" align="center" v-if="PowerShow">
                     <template #default="scope">
-                        <el-button type="primary" size="small" @click.prevent="deleteRow(scope.$index, scope.row)">{{$t(`schoolManages.tables.operatecontent`)}}</el-button>
-                        <el-button type="danger" size="small" @click="removeSchool(scope.row,scope.$index)">删除</el-button>
+                        <el-button type="primary" size="small" @click.prevent="deleteRow(scope.$index, scope.row)">
+                            {{ $t(`schoolManages.tables.operatecontent`) }}</el-button>
+                        <el-button type="danger" size="small" @click="removeSchool(scope.row, scope.$index)">删除
+                        </el-button>
                     </template>
                 </el-table-column>
             </el-table>
@@ -113,12 +131,13 @@
     <!--学校列表end-->
     <!--编辑学校页面-->
     <div class="schoolDeatils">
-        <div class="backbtn" v-if="models==='details' && PowerShow">
-            <el-button class="changebtn" v-if="store.state.changbtnShow && changebtns" @click="getSetschool()" size="small">
+        <div class="backbtn" v-if="models === 'details' && PowerShow">
+            <el-button class="changebtn" v-if="store.state.changbtnShow && changebtns" @click="getSetschool()"
+                size="small">
                 <svg class="changebtn-areaicon" aria-hidden="true">
                     <use xlink:href="#icon-wenjian"></use>
                 </svg>
-                <span class="changebtn-title">{{$t(`schoolManages.gradSet.save`)}}</span>
+                <span class="changebtn-title">{{ $t(`schoolManages.gradSet.save`) }}</span>
             </el-button>
             <el-button type="primary" size="small" @click="schoolClose">
                 <svg class="back-icon" aria-hidden="true">
@@ -127,20 +146,23 @@
                 返回
             </el-button>
         </div>
-        <el-tabs v-if="models==='details' && PowerShow" @tab-click="changeTabs">
+        <el-tabs v-if="models === 'details' && PowerShow" @tab-click="changeTabs">
             <!--基础设置-->
             <el-tab-pane :label="$t(`schoolManages.redactSet`)">
-                <div class="redactbox" v-show="models==='details' && PowerShow">
+                <div class="redactbox" v-show="models === 'details' && PowerShow">
                     <div class="school-formbox">
                         <el-form ref="form" :model="nowPitchdata" label-width="120px">
-                            <el-form-item :label="$t(`schoolManages.basicSet.name`)+':'" class="school-form-name">
+                            <el-form-item :label="$t(`schoolManages.basicSet.name`) + ':'" class="school-form-name">
                                 <el-input v-model="nowPitchdata.name"></el-input>
                             </el-form-item>
-                            <el-form-item :label="$t(`schoolManages.basicSet.badge`)+':'" class="school-form-badge">
-                                <el-upload class="upload-demo-redact" :headers="uploadHeader" action="/blob/upload-public" :before-upload="changeBadge" :on-success="success" :on-error="handleUpdErr">
-                                    <el-image style="width: 100%; height:125px" :src="nowPitchdata.picture" fit="contain"></el-image>
+                            <el-form-item :label="$t(`schoolManages.basicSet.badge`) + ':'" class="school-form-badge">
+                                <el-upload class="upload-demo-redact" :headers="uploadHeader"
+                                    action="/blob/upload-public" :before-upload="changeBadge" :on-success="success"
+                                    :on-error="handleUpdErr">
+                                    <el-image style="width: 100%; height:125px" :src="nowPitchdata.picture"
+                                        fit="contain"></el-image>
                                     <div class="changebadge">
-                                        <el-button>{{$t(`schoolManages.basicSet.badgeChange`)}}</el-button>
+                                        <el-button>{{ $t(`schoolManages.basicSet.badgeChange`) }}</el-button>
                                     </div>
                                 </el-upload>
                             </el-form-item>
@@ -151,13 +173,19 @@
                                 <el-checkbox v-model="nowPitchdata.period[3].value" label="职高"></el-checkbox>
                                 <el-checkbox v-model="nowPitchdata.period[4].value" label="大学"></el-checkbox>
                             </el-form-item> -->
-                            <el-form-item :label="$t(`schoolManages.basicSet.type`)+':'" class="school-form-grading">
-                                <el-radio v-model="nowPitchdata.type" label="1" size="large">{{$t(`schoolManages.basicSet.ordinary`)}}</el-radio>
-                                <el-radio v-model="nowPitchdata.type" label="2" size="large">{{$t(`schoolManages.basicSet.higherEducation`)}}</el-radio>
+                            <el-form-item :label="$t(`schoolManages.basicSet.type`) + ':'" class="school-form-grading">
+                                <el-radio v-model="nowPitchdata.type" label="1" size="large">
+                                    {{ $t(`schoolManages.basicSet.ordinary`) }}</el-radio>
+                                <el-radio v-model="nowPitchdata.type" label="2" size="large">
+                                    {{ $t(`schoolManages.basicSet.higherEducation`) }}</el-radio>
                             </el-form-item>
-                            <el-form-item :label="$t(`schoolManages.basicSet.nowAssistant`)+':'" class="school-form-admin">
-                                <el-select v-model="adminvalue" multiple @change="assistChange" :placeholder="$t(`schoolManages.basicSet.nowAssistanthint`)">
-                                    <el-option v-for="item in adminoptions" :key="item.name" :label="item.mobile+'——'+item.name" :value="item.tmdId ===null ? '':item.tmdId" :disabled="!item.tmdId">
+                            <el-form-item :label="$t(`schoolManages.basicSet.nowAssistant`) + ':'"
+                                class="school-form-admin">
+                                <el-select v-model="adminvalue" multiple @change="assistChange"
+                                    :placeholder="$t(`schoolManages.basicSet.nowAssistanthint`)">
+                                    <el-option v-for="item in adminoptions" :key="item.name"
+                                        :label="item.mobile + '——' + item.name"
+                                        :value="item.tmdId === null ? '' : item.tmdId" :disabled="!item.tmdId">
                                         <!-- <span style="float: left">{{ item.mobile }}-{{item.name}}</span>
                             <i style="float: right;color: var(--el-text-color-secondary);font-size: 13px;" v-show="item.isexist === false">
                                 <svg class="school-admin-check" aria-hidden="true">
@@ -167,31 +195,37 @@
                                     </el-option>
                                 </el-select>
                             </el-form-item>
-                            <el-form-item :label="$t(`schoolManages.basicSet.brevityCode`)+':'" class="school-form-code">
-                                <el-input disabled :placeholder="nowPitchdata.id" v-if="nowPitchdata.id !==null" />
-                                <el-input disabled :placeholder="$t(`schoolManages.basicSet.notCode`)" v-else="nowPitchdata.id ==null" />
+                            <el-form-item :label="$t(`schoolManages.basicSet.brevityCode`) + ':'"
+                                class="school-form-code">
+                                <el-input disabled :placeholder="nowPitchdata.id" v-if="nowPitchdata.id !== null" />
+                                <el-input disabled :placeholder="$t(`schoolManages.basicSet.notCode`)"
+                                    v-else="nowPitchdata.id ==null" />
                             </el-form-item>
                             <el-form-item label="所属学区:" class="school-form-area">
-                                <el-select v-model="areaSelect.Selectvalue" :placeholder="$t(`schoolManages.basicSet.region`)">
-                                    <el-option v-for="item in areaSelect.data" :key="item.name" :label="item.name" :value="item.id">
+                                <el-select v-model="areaSelect.Selectvalue"
+                                    :placeholder="$t(`schoolManages.basicSet.region`)">
+                                    <el-option v-for="item in areaSelect.data" :key="item.name" :label="item.name"
+                                        :value="item.id">
                                     </el-option>
                                 </el-select>
                             </el-form-item>
-                            <el-form-item :label="$t(`schoolManages.basicSet.scale`)+':'" class="school-form-size">
+                            <el-form-item :label="$t(`schoolManages.basicSet.scale`) + ':'" class="school-form-size">
                                 <el-input-number v-model="nowPitchdata.scale" :min="0" :step="100" />人
                             </el-form-item>
                             <!-- <el-form-item :label="$t(`schoolManages.basicSet.location`)+':'" class="school-form-site">
                                 <el-input disabled :placeholder="nowPitchdata.address" />
                             </el-form-item> -->
-                            <el-form-item :label="$t(`schoolManages.basicSet.spacesize`)+':'" class="school-form-size">
+                            <el-form-item :label="$t(`schoolManages.basicSet.spacesize`) + ':'"
+                                class="school-form-size">
                                 <el-input-number v-model="nowPitchdata.size" :min="1" :max="1000" />GB
                             </el-form-item>
                             <!-- <el-form-item label="学校状态:" class="school-form-state">
                     <el-switch v-model="value2" active-color="#13ce66" inactive-color="#ff4949" />
                 </el-form-item> -->
                             <el-form-item>
-                                <el-button type="primary" @click="updateSchoolinfo">{{$t(`schoolManages.basicSet.submit`)}}</el-button>
-                                <el-button @click="schoolClose">{{$t(`commonMsg.closes`)}}</el-button>
+                                <el-button type="primary" @click="updateSchoolinfo">
+                                    {{ $t(`schoolManages.basicSet.submit`) }}</el-button>
+                                <el-button @click="schoolClose">{{ $t(`commonMsg.closes`) }}</el-button>
                             </el-form-item>
                         </el-form>
                     </div>
@@ -376,8 +410,8 @@ export default {
             nowPitchdata.value.areaId = data.areaId
             data.assists.length
                 ? data.assists.forEach((element) => {
-                      adminvalue.value.push(element.tmdId)
-                  })
+                    adminvalue.value.push(element.tmdId)
+                })
                 : ''
             let token = JSON.parse(localStorage.getItem('id_token'))
             uploadHeader.value['x-auth-authtoken'] = token
@@ -557,7 +591,7 @@ export default {
         function updateSuccess() {
             loading.value = true
             setTimeout(() => {
-                ;(models.value = 'default'), (tableData.value = []), getAllschool()
+                ; (models.value = 'default'), (tableData.value = []), getAllschool()
             }, 2000)
         }
         //地区选择close btn
@@ -682,11 +716,12 @@ export default {
 }
 </script>
 <style scoped>
-.schoolbox {
+.schoolboxea {
     width: 100%;
     margin: 0 auto;
     line-height: 80px;
 }
+
 .select-List {
     line-height: 60px;
     text-align: left;
@@ -694,18 +729,21 @@ export default {
     width: 75%;
     float: left;
 }
+
 .school-list {
     width: 96%;
     max-height: 74vh;
     margin: 0 auto;
     /* overflow-y: auto; */
 }
+
 /*编辑页面样式*/
 .redactbox {
     width: 100%;
     height: 87vh;
     background-color: #fff;
 }
+
 .backbtn {
     text-align: left;
     position: absolute;
@@ -714,28 +752,35 @@ export default {
     z-index: 999;
     line-height: 40px;
 }
+
 .school-formbox {
     width: 85%;
     margin: 0 auto;
     padding: 1%;
 }
+
 .upload-demo-redact {
     width: 100%;
     height: 125px;
 }
+
 .school-form-name {
     width: 50%;
 }
+
 .school-form-area {
     width: 35%;
 }
+
 .school-form-badge,
 .school-form-code {
     width: 24%;
 }
+
 .school-form-grading {
     width: 80%;
 }
+
 .changebadge {
     width: 100%;
     height: 125px;
@@ -744,20 +789,25 @@ export default {
     left: 0px;
     opacity: 0;
 }
+
 .school-form-site {
     width: 35%;
 }
+
 .school-form-size {
     width: 35%;
     color: #bdc3c7;
 }
+
 .school-form-admin {
     width: 35%;
     text-align: left;
 }
+
 .school-form-state {
     width: 15%;
 }
+
 .school-admin-check {
     width: 2em;
     height: 2em;
@@ -765,16 +815,19 @@ export default {
     fill: currentColor;
     overflow: hidden;
 }
+
 .province-box,
 .city-box,
 .dist-box,
 .close-box {
     display: inline-block;
 }
+
 .city-box,
 .dist-box {
     margin-left: 1%;
 }
+
 /*btn*/
 .boxselect {
     width: 20%;
@@ -782,6 +835,7 @@ export default {
     margin-top: 0.5%;
     text-align: right;
 }
+
 .created-areaicon {
     width: 1.3em;
     height: 1.3em;
@@ -790,6 +844,7 @@ export default {
     overflow: hidden;
     margin-top: -135px;
 }
+
 .closebtnIcon {
     width: 1.8em;
     height: 1.8em;
@@ -798,20 +853,25 @@ export default {
     overflow: hidden;
     margin-left: 8px;
 }
+
 .closebtnIcon:hover {
     cursor: pointer;
 }
+
 .schoolDeatils {
     position: relative;
     background: #e9eef3;
 }
+
 .changebtn {
     display: inline-block;
     /* float: right; */
 }
+
 .changebtn-title {
     font-size: 12px;
 }
+
 .changebtn-areaicon {
     width: 0.9em;
     height: 0.9em;
@@ -819,6 +879,7 @@ export default {
     fill: currentColor;
     margin-right: 3px;
 }
+
 .back-icon {
     width: 0.9em;
     height: 0.9em;
@@ -826,6 +887,7 @@ export default {
     fill: currentColor;
     margin-right: 3px;
 }
+
 .created-icon {
     width: 1.3em;
     height: 1.3em;
@@ -834,6 +896,7 @@ export default {
     overflow: hidden;
     margin-right: 5px;
 }
+
 .school-analyse {
     width: 1.8em;
     height: 1.8em;
@@ -842,6 +905,7 @@ export default {
     overflow: hidden;
     cursor: pointer;
 }
+
 .have-modules {
     display: flex;
     justify-content: space-between;
@@ -849,57 +913,71 @@ export default {
 }
 </style>
 <style>
-.schoolbox .el-cascader {
+.schoolboxea .el-cascader {
     width: 20%;
 }
+
 .school-form-badge .el-form-item__label {
     line-height: 107px;
 }
+
 .school-form-badge .el-form-item__content {
     border: 1px solid #ccc;
     position: relative;
 }
+
 .changebadge .el-button {
     width: 100%;
     height: 100%;
     font-size: 18px;
     color: #fff;
 }
+
 .changebadge .el-button span {
     border: 1px solid #ccc;
     background-color: #409eff;
     padding: 5px;
     border-radius: 10px;
 }
+
 .changebadge:hover {
     opacity: 0.8;
 }
+
 .school-form-code .el-input__inner {
     text-align: center;
 }
+
 .school-form-admin .el-select {
     width: 100%;
 }
+
 .school-form-badge .el-image__inner {
     width: 100%;
     height: 85%;
     margin-top: 10%;
 }
+
 .school-form-grading .el-form-item__content {
     text-align: left;
 }
+
 .el-select-dropdown__item {
     padding: 0 12px 0 20px;
 }
+
 .school-formbox .el-form-item__content {
     text-align: left;
 }
+
 .school-form-area .el-select {
     width: 100%;
 }
+
 .school-list .el-table__header-wrapper {
     line-height: 60px;
 }
+
 .schoolDeatils .el-tabs__header {
     height: 45px;
     line-height: 45px;
@@ -909,16 +987,20 @@ export default {
     background-color: #fff;
     margin: 0px 0px 1px;
 }
+
 .schoolDeatils .el-tabs__content {
     padding: 0px;
 }
+
 .backbtn .changebtn {
     padding: 8px 15px;
 }
+
 .upload-demo-redact .el-upload {
     width: 100%;
     height: 125px;
 }
+
 .school-form-grading .el-radio__input.is-checked .el-radio__inner::after {
     content: '';
     width: 10px;
@@ -936,16 +1018,19 @@ export default {
     border-radius: 0px;
     background: none;
 }
+
 .schoolDeatils .el-tabs__nav-wrap::after {
     width: 0%;
 }
-.el-upload-dragger {
-}
+
+.el-upload-dragger {}
+
 @media screen and (max-width: 1920px) {
     .school-formbox .school-form-badge {
         width: 17.5%;
     }
 }
+
 @media screen and (max-width: 1400px) {
     .school-formbox .school-form-badge {
         width: 24%;

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 434 - 182
TEAMModelBI/ClientApp/src/view/schoolServe/setschool.vue


+ 47 - 13
TEAMModelBI/ClientApp/src/view/systemConfig/index.vue

@@ -3,25 +3,28 @@
         <div class="systembox-tabs">
             <el-tabs v-model="activeName" class="demo-tabs">
                 <el-tab-pane label="站点配置" name="websites">
-                    <div v-if="modelShow=='choice'">
+                    <div v-if="modelShow == 'choice'">
                         <p class="titles">选择站点:</p>
                         <div class="choicebox">
                             <div class="choicebox-frame">
                                 <div class="particularsbox" v-for="item in siteLists" @click="changeSite(item)">
                                     <div class="particularsbox-img">
-                                        <el-image style="width: 200px; height: 300px" :src="item.img" fit="fill" />
+                                        <el-image :src="item.img" fit="fill" />
+                                    </div>
+                                    <div class="particularsbox-name"><span>{{ item.nickName }}</span></div>
+                                    <div class="now-pitch" v-if="nowcurrentSysConfig.site === item.site">
+                                        <span>当前站点</span>
                                     </div>
-                                    <div class="particularsbox-name"><span>{{item.nickName}}</span></div>
-                                    <div class="now-pitch" v-if="nowcurrentSysConfig.site === item.site"><span>当前站点</span></div>
                                 </div>
                             </div>
                         </div>
                     </div>
-                    <Website v-else-if="modelShow=='details'" :siteValue="siteValue" @changemodels="backisinfo" @state="backState"></Website>
-                    <div class="addSitebtn" @click="dialogVisible=true" v-if="modelShow=='choice'">
+                    <Website v-else-if="modelShow == 'details'" :siteValue="siteValue" @changemodels="backisinfo"
+                        @state="backState"></Website>
+                    <div class="addSitebtn" @click="dialogVisible = true" v-if="modelShow == 'choice'">
                         <el-button type="success" size="small">新增站点</el-button>
                     </div>
-                    <div class="cutSitebtn" @click="cutsiteSHow=true" v-if="modelShow=='choice'">
+                    <div class="cutSitebtn" @click="cutsiteSHow = true" v-if="modelShow == 'choice'">
                         <el-button type="primary" size="small">切换站点</el-button>
                     </div>
                 </el-tab-pane>
@@ -111,16 +114,19 @@
     </div>
     <div class="cut-site">
         <el-dialog v-model="cutsiteSHow" title="切换站点" width="60%">
-            <div class="nowtitle"><span>当前站点:</span>{{nowcurrentSysConfig.site}}<span class="site-nickname">别名:</span>{{nowcurrentSysConfig.nickName}}</div>
+            <div class="nowtitle"><span>当前站点:</span>{{ nowcurrentSysConfig.site }}<span
+                    class="site-nickname">别名:</span>{{ nowcurrentSysConfig.nickName }}</div>
             <div class="choicebox">
                 <div class="cut-choicebox-frame">
-                    <div class="particularsbox" v-for="(item,index) in siteLists" @click="cutsites(item,index)">
+                    <div class="particularsbox" v-for="(item, index) in siteLists" @click="cutsites(item, index)">
                         <div class="particularsbox-img">
-                            <el-image style="width: 100px; height: 150px" :src="item.img" fit="fill" />
+                            <el-image :src="item.img" fit="fill" />
                         </div>
-                        <div class="cut-particularsbox-name"><span>{{item.nickName}}</span></div>
+                        <div class="cut-particularsbox-name"><span>{{ item.nickName }}</span></div>
                         <div class="pitchs" v-if="nowcurrentSysConfig.site === item.site"><span>当前站点</span></div>
-                        <div class="pitch-site" v-if="pitchNum===index && nowcurrentSysConfig.site !== item.site"><span>选中站点</span></div>
+                        <div class="pitch-site" v-if="pitchNum === index && nowcurrentSysConfig.site !== item.site">
+                            <span>选中站点</span>
+                        </div>
                     </div>
                 </div>
             </div>
@@ -296,9 +302,11 @@ export default {
     line-height: 20px;
     position: relative;
 }
+
 .systembox-tabs {
     width: 100%;
 }
+
 .choicebox {
     width: 100%;
     height: 100%;
@@ -309,6 +317,7 @@ export default {
     align-items: center;
     overflow-x: auto;
 }
+
 .choicebox-frame {
     width: 70%;
     height: 70vh;
@@ -317,6 +326,7 @@ export default {
     justify-content: space-around;
     align-items: center;
 }
+
 .cut-choicebox-frame {
     width: 100%;
     height: 55vh;
@@ -325,8 +335,9 @@ export default {
     justify-content: space-around;
     align-items: center;
 }
+
 .particularsbox {
-    width: 20%;
+    width: 22%;
     height: 70%;
     text-align: center;
     border: 1px solid #ccc;
@@ -336,63 +347,76 @@ export default {
     position: relative;
     overflow: hidden;
 }
+
 .particularsbox-img {
     width: 100%;
     height: 70%;
     display: block;
 }
+
 .particularsbox-img {
     margin-top: 20%;
 }
+
 .particularsbox-name {
     font-size: 16px;
     font-weight: 600;
     margin-top: 10%;
 }
+
 .cut-particularsbox-name {
     font-size: 16px;
     font-weight: 600;
     line-height: 20px;
 }
+
 .particularsbox:hover {
     transform: translateY(-15px);
     box-shadow: 0px 5px 8px #ccc;
     background: #fff;
 }
+
 .titles {
     font-size: 18px;
     font-weight: 600;
     margin-top: 1.5%;
 }
+
 .created-site {
     width: 100%;
     /* height: 50vh; */
     line-height: 20px;
     overflow: hidden;
 }
+
 .created-site-form {
     width: 95%;
     text-align: left;
 }
+
 .database-add {
     width: 100%;
     padding: 1%;
     border: 1px solid #ccc;
     border-radius: 5px;
 }
+
 .addSitebtn {
     position: absolute;
     top: 3%;
     right: 1%;
 }
+
 .cutSitebtn {
     position: absolute;
     top: 3%;
     left: 1%;
 }
+
 .cut-site {
     width: 100%;
 }
+
 .pitch-site {
     height: 20px;
     line-height: 18px;
@@ -403,6 +427,7 @@ export default {
     top: 4%;
     color: #fff;
 }
+
 .pitchs {
     height: 20px;
     line-height: 18px;
@@ -413,15 +438,18 @@ export default {
     top: 4%;
     color: #fff;
 }
+
 .nowtitle {
     font-size: 14px;
     text-align: left;
     line-height: 18px;
     padding-left: 1%;
 }
+
 .site-nickname {
     margin-left: 5%;
 }
+
 .now-pitch {
     height: 24px;
     line-height: 24px;
@@ -443,25 +471,31 @@ export default {
     margin-bottom: 5px;
     background: #fff;
 }
+
 .systembox .el-tabs__nav-wrap {
     padding-left: 15px;
 }
+
 .backbtn .el-button--small {
     height: 30px;
     padding: 5px 15px;
 }
+
 .created-site .el-dialog__header,
 .cut-site .el-dialog__header {
     line-height: 20px;
 }
+
 .created-site .el-dialog,
 .cut-site .el-dialog {
     height: 80vh;
     overflow: auto;
 }
+
 .cut-site .el-dialog__footer {
     line-height: 20px;
 }
+
 .cut-site .el-dialog {
     background-color: #e9eef3;
 }

+ 133 - 52
TEAMModelBI/ClientApp/src/view/teachermanage/school.vue

@@ -1,29 +1,38 @@
 <template>
     <!--学校列表-->
-    <div class="schoolbox" v-show="models==='default'">
+    <div class="schoolboxeu" v-show="models === 'default'">
         <div class="select-List">
             <div class="province-box">
-                <span>{{$t(`areaManages.selector.provinceName`)}}:</span>
-                <el-select v-model="provinceOptions.provinceValue" :placeholder="$t(`areaManages.selector.provinceDefault`)" @change="areaSelctChange(provinceOptions.provinceValue,'province')">
-                    <el-option v-for="item in provinceOptions.optionInfo" :key="item.code" :label="item.name" :value="item.name">
+                <span>{{ $t(`areaManages.selector.provinceName`) }}:</span>
+                <el-select v-model="provinceOptions.provinceValue"
+                    :placeholder="$t(`areaManages.selector.provinceDefault`)"
+                    @change="areaSelctChange(provinceOptions.provinceValue, 'province')">
+                    <el-option v-for="item in provinceOptions.optionInfo" :key="item.code" :label="item.name"
+                        :value="item.name">
                     </el-option>
                 </el-select>
             </div>
             <div class="city-box">
-                <span>{{$t(`areaManages.selector.cityName`)}}:</span>
-                <el-select v-model="cityOptions.cityValue" :placeholder="$t(`areaManages.selector.cityDefault`)" @change="areaSelctChange(cityOptions.cityValue,'city')">
-                    <el-option v-for="item in cityOptions.cityInfo" :key="item.code" :label="item.name" :value="item.name">
+                <span>{{ $t(`areaManages.selector.cityName`) }}:</span>
+                <el-select v-model="cityOptions.cityValue" :placeholder="$t(`areaManages.selector.cityDefault`)"
+                    @change="areaSelctChange(cityOptions.cityValue, 'city')">
+                    <el-option v-for="item in cityOptions.cityInfo" :key="item.code" :label="item.name"
+                        :value="item.name">
                     </el-option>
                 </el-select>
             </div>
             <div class="dist-box">
-                <span>{{$t(`areaManages.selector.areaName`)}}:</span>
-                <el-select v-model="distOptions.distValue" filterable allow-create default-first-option :placeholder="$t(`areaManages.selector.areaDefault`)" @change="areaSelctChange(distOptions.distValue,'dist')">
-                    <el-option v-for="item in distOptions.distInfo" :key="item.code" :label="item.name" :value="item.name">
+                <span>{{ $t(`areaManages.selector.areaName`) }}:</span>
+                <el-select v-model="distOptions.distValue" filterable allow-create default-first-option
+                    :placeholder="$t(`areaManages.selector.areaDefault`)"
+                    @change="areaSelctChange(distOptions.distValue, 'dist')">
+                    <el-option v-for="item in distOptions.distInfo" :key="item.code" :label="item.name"
+                        :value="item.name">
                     </el-option>
                 </el-select>
             </div>
-            <div class="close-box" v-show="provinceOptions.provinceValue || cityOptions.cityValue ||distOptions.distValue">
+            <div class="close-box"
+                v-show="provinceOptions.provinceValue || cityOptions.cityValue || distOptions.distValue">
                 <svg class="closebtnIcon" aria-hidden="true" @click="closeSelectarea">
                     <use xlink:href="#icon-quxiao"></use>
                 </svg>
@@ -42,12 +51,14 @@
                         </svg>
                     </span>
                 </div>
-                <span class="text">{{$t(`schoolManages.createdtitle`)}}</span>
+                <span class="text">{{ $t(`schoolManages.createdtitle`) }}</span>
             </a>
         </div>
         <div class="school-list">
-            <el-table :data="tableData" style="width: 100%" height="75vh" v-loading="loading" element-loading-text="加载中...">
-                <el-table-column prop="index" :label="$t(`schoolManages.tables.serialnum`)" type="index" sortable align="center" />
+            <el-table :data="tableData" style="width: 100%" height="75vh" v-loading="loading"
+                element-loading-text="加载中...">
+                <el-table-column prop="index" :label="$t(`schoolManages.tables.serialnum`)" type="index" sortable
+                    align="center" />
                 <el-table-column :label="$t(`schoolManages.tables.badge`)" width="150" align="center">
                     <template #default="scope">
                         <el-image style="width: 70px; height: 70px" :src="scope.row.picture" fit="fill"></el-image>
@@ -61,9 +72,14 @@
                 </el-table-column> -->
                 <el-table-column :label="$t(`schoolManages.tables.scale`)" class="school-table-edition" align="center">
                     <template #default="scope">
-                        <el-image style="width: 80px; height: 80px" :src="imgData.basics" fit="fill" v-if="scope.row.scale ===0"></el-image>
-                        <el-image style="width: 80px; height: 80px" :src="imgData.standard" fit="fill" v-else-if="scope.row.scale ===500 && scope.row.hard ===0 && scope.row.serial ===0 && scope.row.service ===0"></el-image>
-                        <el-image style="width: 80px; height: 80px" :src="imgData.specialty" fit="fill" v-else-if="scope.row.scale ===500 && (scope.row.hard !=0 || scope.row.serial !=0 || scope.row.service !=0)"></el-image>
+                        <el-image style="width: 80px; height: 80px" :src="imgData.basics" fit="fill"
+                            v-if="scope.row.scale === 0"></el-image>
+                        <el-image style="width: 80px; height: 80px" :src="imgData.standard" fit="fill"
+                            v-else-if="scope.row.scale === 500 && scope.row.hard === 0 && scope.row.serial === 0 && scope.row.service === 0">
+                        </el-image>
+                        <el-image style="width: 80px; height: 80px" :src="imgData.specialty" fit="fill"
+                            v-else-if="scope.row.scale === 500 && (scope.row.hard != 0 || scope.row.serial != 0 || scope.row.service != 0)">
+                        </el-image>
                     </template>
                 </el-table-column>
                 <el-table-column prop="id" :label="$t(`schoolManages.tables.brevityCode`)" align="center" />
@@ -73,14 +89,15 @@
                 <el-table-column prop="size" :label="$t(`schoolManages.tables.spacesize`)" align="center" />
                 <el-table-column :label="$t(`schoolManages.tables.assis`)" align="center">
                     <template #default="scope">
-                        <div v-if="scope.row.assisName">{{scope.row.assisName}}</div>
+                        <div v-if="scope.row.assisName">{{ scope.row.assisName }}</div>
                         <div v-else>暂无</div>
                     </template>
                 </el-table-column>
                 <!-- <el-table-column prop="state" label="状态" width="110" align="center" /> -->
                 <el-table-column :label="$t(`schoolManages.tables.operate`)" align="center" v-if="PowerShow">
                     <template #default="scope">
-                        <el-button type="primary" size="small" @click.prevent="deleteRow(scope.$index, scope.row)">{{$t(`schoolManages.tables.operatecontent`)}}</el-button>
+                        <el-button type="primary" size="small" @click.prevent="deleteRow(scope.$index, scope.row)">
+                            {{ $t(`schoolManages.tables.operatecontent`) }}</el-button>
                     </template>
                 </el-table-column>
             </el-table>
@@ -88,30 +105,33 @@
     </div>
     <!--学校列表end-->
     <!--编辑学校页面-->
-    <div class="backbtn" v-if="models==='details' && PowerShow">
+    <div class="backbtn" v-if="models === 'details' && PowerShow">
         <el-button type="primary" icon="el-icon-back" @click="schoolClose">返回</el-button>
         <el-button class="changebtn" v-if="store.state.changbtnShow && changebtns" @click="getSetschool()">
             <svg class="changebtn-areaicon" aria-hidden="true">
                 <use xlink:href="#icon-wenjian"></use>
             </svg>
-            <span class="changebtn-title">{{$t(`schoolManages.gradSet.save`)}}</span>
+            <span class="changebtn-title">{{ $t(`schoolManages.gradSet.save`) }}</span>
         </el-button>
     </div>
     <div class="schoolDeatils">
-        <el-tabs type="border-card" v-if="models==='details' && PowerShow" @tab-click="changeTabs">
+        <el-tabs type="border-card" v-if="models === 'details' && PowerShow" @tab-click="changeTabs">
             <!--基础设置-->
             <el-tab-pane :label="$t(`schoolManages.redactSet`)">
-                <div class="redactbox" v-show="models==='details' && PowerShow">
+                <div class="redactbox" v-show="models === 'details' && PowerShow">
                     <div class="school-formbox">
                         <el-form ref="form" :model="nowPitchdata" label-width="120px">
-                            <el-form-item :label="$t(`schoolManages.basicSet.name`)+':'" class="school-form-name">
+                            <el-form-item :label="$t(`schoolManages.basicSet.name`) + ':'" class="school-form-name">
                                 <el-input v-model="nowPitchdata.name"></el-input>
                             </el-form-item>
-                            <el-form-item :label="$t(`schoolManages.basicSet.badge`)+':'" class="school-form-badge">
-                                <el-upload class="upload-demo-redact" :headers="uploadHeader" action="/blob/upload-public" :before-upload="changeBadge" :on-success="success" :on-error="handleUpdErr">
-                                    <el-image style="width: 100%; height:125px" :src="nowPitchdata.picture" fit="contain"></el-image>
+                            <el-form-item :label="$t(`schoolManages.basicSet.badge`) + ':'" class="school-form-badge">
+                                <el-upload class="upload-demo-redact" :headers="uploadHeader"
+                                    action="/blob/upload-public" :before-upload="changeBadge" :on-success="success"
+                                    :on-error="handleUpdErr">
+                                    <el-image style="width: 100%; height:125px" :src="nowPitchdata.picture"
+                                        fit="contain"></el-image>
                                     <div class="changebadge">
-                                        <el-button>{{$t(`schoolManages.basicSet.badgeChange`)}}</el-button>
+                                        <el-button>{{ $t(`schoolManages.basicSet.badgeChange`) }}</el-button>
                                     </div>
                                 </el-upload>
                             </el-form-item>
@@ -122,13 +142,19 @@
                                 <el-checkbox v-model="nowPitchdata.period[3].value" label="职高"></el-checkbox>
                                 <el-checkbox v-model="nowPitchdata.period[4].value" label="大学"></el-checkbox>
                             </el-form-item> -->
-                            <el-form-item :label="$t(`schoolManages.basicSet.type`)+':'" class="school-form-grading">
-                                <el-radio v-model="nowPitchdata.type" label="1" size="large">{{$t(`schoolManages.basicSet.ordinary`)}}</el-radio>
-                                <el-radio v-model="nowPitchdata.type" label="2" size="large">{{$t(`schoolManages.basicSet.higherEducation`)}}</el-radio>
+                            <el-form-item :label="$t(`schoolManages.basicSet.type`) + ':'" class="school-form-grading">
+                                <el-radio v-model="nowPitchdata.type" label="1" size="large">
+                                    {{ $t(`schoolManages.basicSet.ordinary`) }}</el-radio>
+                                <el-radio v-model="nowPitchdata.type" label="2" size="large">
+                                    {{ $t(`schoolManages.basicSet.higherEducation`) }}</el-radio>
                             </el-form-item>
-                            <el-form-item :label="$t(`schoolManages.basicSet.nowAssistant`)+':'" class="school-form-admin">
-                                <el-select v-model="adminvalue" multiple @change="assistChange" :placeholder="$t(`schoolManages.basicSet.nowAssistanthint`)">
-                                    <el-option v-for="item in adminoptions" :key="item.name" :label="item.mobile+'——'+item.name" :value="item.tmdId ===null ? '':item.tmdId" :disabled="!item.tmdId">
+                            <el-form-item :label="$t(`schoolManages.basicSet.nowAssistant`) + ':'"
+                                class="school-form-admin">
+                                <el-select v-model="adminvalue" multiple @change="assistChange"
+                                    :placeholder="$t(`schoolManages.basicSet.nowAssistanthint`)">
+                                    <el-option v-for="item in adminoptions" :key="item.name"
+                                        :label="item.mobile + '——' + item.name"
+                                        :value="item.tmdId === null ? '' : item.tmdId" :disabled="!item.tmdId">
                                         <!-- <span style="float: left">{{ item.mobile }}-{{item.name}}</span>
                             <i style="float: right;color: var(--el-text-color-secondary);font-size: 13px;" v-show="item.isexist === false">
                                 <svg class="school-admin-check" aria-hidden="true">
@@ -138,31 +164,37 @@
                                     </el-option>
                                 </el-select>
                             </el-form-item>
-                            <el-form-item :label="$t(`schoolManages.basicSet.brevityCode`)+':'" class="school-form-code">
-                                <el-input disabled :placeholder="nowPitchdata.id" v-if="nowPitchdata.id !==null" />
-                                <el-input disabled :placeholder="$t(`schoolManages.basicSet.notCode`)" v-else="nowPitchdata.id ==null" />
+                            <el-form-item :label="$t(`schoolManages.basicSet.brevityCode`) + ':'"
+                                class="school-form-code">
+                                <el-input disabled :placeholder="nowPitchdata.id" v-if="nowPitchdata.id !== null" />
+                                <el-input disabled :placeholder="$t(`schoolManages.basicSet.notCode`)"
+                                    v-else="nowPitchdata.id ==null" />
                             </el-form-item>
-                            <el-form-item :label="$t(`schoolManages.basicSet.region`)+':'" class="school-form-area">
-                                <el-select v-model="areaSelect.Selectvalue" :placeholder="$t(`schoolManages.basicSet.region`)">
-                                    <el-option v-for="item in areaSelect.data" :key="item.name" :label="item.name" :value="item.id">
+                            <el-form-item :label="$t(`schoolManages.basicSet.region`) + ':'" class="school-form-area">
+                                <el-select v-model="areaSelect.Selectvalue"
+                                    :placeholder="$t(`schoolManages.basicSet.region`)">
+                                    <el-option v-for="item in areaSelect.data" :key="item.name" :label="item.name"
+                                        :value="item.id">
                                     </el-option>
                                 </el-select>
                             </el-form-item>
-                            <el-form-item :label="$t(`schoolManages.basicSet.scale`)+':'" class="school-form-size">
+                            <el-form-item :label="$t(`schoolManages.basicSet.scale`) + ':'" class="school-form-size">
                                 <el-input-number v-model="nowPitchdata.scale" :min="0" :step="100" />
                             </el-form-item>
-                            <el-form-item :label="$t(`schoolManages.basicSet.location`)+':'" class="school-form-site">
+                            <el-form-item :label="$t(`schoolManages.basicSet.location`) + ':'" class="school-form-site">
                                 <el-input disabled :placeholder="nowPitchdata.address" />
                             </el-form-item>
-                            <el-form-item :label="$t(`schoolManages.basicSet.spacesize`)+':'" class="school-form-size">
+                            <el-form-item :label="$t(`schoolManages.basicSet.spacesize`) + ':'"
+                                class="school-form-size">
                                 <el-input-number v-model="nowPitchdata.size" :min="1" :max="1000" />
                             </el-form-item>
                             <!-- <el-form-item label="学校状态:" class="school-form-state">
                     <el-switch v-model="value2" active-color="#13ce66" inactive-color="#ff4949" />
                 </el-form-item> -->
                             <el-form-item>
-                                <el-button type="primary" @click="updateSchoolinfo">{{$t(`schoolManages.basicSet.submit`)}}</el-button>
-                                <el-button @click="schoolClose">{{$t(`commonMsg.closes`)}}</el-button>
+                                <el-button type="primary" @click="updateSchoolinfo">
+                                    {{ $t(`schoolManages.basicSet.submit`) }}</el-button>
+                                <el-button @click="schoolClose">{{ $t(`commonMsg.closes`) }}</el-button>
                             </el-form-item>
                         </el-form>
                     </div>
@@ -329,8 +361,8 @@ export default {
             nowPitchdata.value.areaId = data.areaId
             data.assists.length
                 ? data.assists.forEach((element) => {
-                      adminvalue.value.push(element.tmdId)
-                  })
+                    adminvalue.value.push(element.tmdId)
+                })
                 : ''
             let token = JSON.parse(localStorage.getItem('id_token'))
             uploadHeader.value['x-auth-authtoken'] = token
@@ -510,7 +542,7 @@ export default {
         function updateSuccess() {
             loading.value = true
             setTimeout(() => {
-                ;(models.value = 'default'), (tableData.value = []), getAllschool()
+                ; (models.value = 'default'), (tableData.value = []), getAllschool()
             }, 2000)
         }
         //地区选择close btn
@@ -610,11 +642,12 @@ export default {
 }
 </script>
 <style scoped>
-.schoolbox {
+.schoolboxeu {
     width: 100%;
     margin: 0 auto;
     line-height: 80px;
 }
+
 .select-List {
     line-height: 60px;
     text-align: left;
@@ -622,43 +655,53 @@ export default {
     width: 75%;
     float: left;
 }
+
 .school-list {
     width: 96%;
     max-height: 74vh;
     margin: 0 auto;
     /* overflow-y: auto; */
 }
+
 /*编辑页面样式*/
 .redactbox {
     width: 100%;
 }
+
 .backbtn {
     width: 100%;
     text-align: left;
     line-height: 20px;
 }
+
 .school-formbox {
     width: 85%;
     margin: 0 auto;
     padding: 1%;
 }
+
 .upload-demo-redact {
     width: 100%;
     height: 125px;
 }
+
 .school-form-name {
     width: 50%;
 }
+
 .school-form-area {
     width: 35%;
 }
+
 .school-form-badge,
 .school-form-code {
     width: 24%;
 }
+
 .school-form-grading {
     width: 80%;
 }
+
 .changebadge {
     width: 100%;
     height: 125px;
@@ -667,19 +710,24 @@ export default {
     left: 0px;
     opacity: 0;
 }
+
 .school-form-site {
     width: 35%;
 }
+
 .school-form-size {
     width: 21%;
 }
+
 .school-form-admin {
     width: 35%;
     text-align: left;
 }
+
 .school-form-state {
     width: 15%;
 }
+
 .school-admin-check {
     width: 2em;
     height: 2em;
@@ -687,16 +735,19 @@ export default {
     fill: currentColor;
     overflow: hidden;
 }
+
 .province-box,
 .city-box,
 .dist-box,
 .close-box {
     display: inline-block;
 }
+
 .city-box,
 .dist-box {
     margin-left: 1%;
 }
+
 /*btn*/
 .boxselect {
     width: 60px;
@@ -705,9 +756,11 @@ export default {
     margin-top: 1%;
     margin-left: 15%;
 }
+
 .boxselect:hover {
     cursor: pointer;
 }
+
 .boxselect a {
     text-decoration: none;
     color: #fff;
@@ -742,6 +795,7 @@ export default {
     line-height: 180px;
     text-align: center;
 }
+
 .boxselect a:hover .layer span:nth-child(1) {
     opacity: 0.3;
 }
@@ -833,6 +887,7 @@ export default {
     bottom: -25px;
     opacity: 1;
 }
+
 .created-areaicon {
     width: 1.3em;
     height: 1.3em;
@@ -841,6 +896,7 @@ export default {
     overflow: hidden;
     margin-top: -135px;
 }
+
 .closebtnIcon {
     width: 1.8em;
     height: 1.8em;
@@ -849,20 +905,25 @@ export default {
     overflow: hidden;
     margin-left: 8px;
 }
+
 .closebtnIcon:hover {
     cursor: pointer;
 }
+
 .schoolDeatils {
     margin-top: 0.5%;
     position: relative;
 }
+
 .changebtn {
     display: inline-block;
     float: right;
 }
+
 .changebtn-title {
     font-size: 12px;
 }
+
 .changebtn-areaicon {
     width: 0.9em;
     height: 0.9em;
@@ -872,70 +933,88 @@ export default {
 }
 </style>
 <style>
-.schoolbox .el-cascader {
+.schoolboxeu .el-cascader {
     width: 20%;
 }
+
 .school-form-badge .el-form-item__label {
     line-height: 107px;
 }
+
 .school-form-badge .el-form-item__content {
     border: 1px solid #ccc;
     position: relative;
 }
+
 .changebadge .el-button {
     width: 100%;
     height: 100%;
     font-size: 18px;
     color: #fff;
 }
+
 .changebadge .el-button span {
     border: 1px solid #ccc;
     background-color: #409eff;
     padding: 5px;
     border-radius: 10px;
 }
+
 .changebadge:hover {
     opacity: 0.8;
 }
+
 .school-form-code .el-input__inner {
     text-align: center;
 }
+
 .school-form-admin .el-select {
     width: 100%;
 }
+
 .school-form-badge .el-image__inner {
     width: 100%;
     height: 85%;
     margin-top: 10%;
 }
+
 .school-form-grading .el-form-item__content {
     text-align: left;
 }
+
 .el-select-dropdown__item {
     padding: 0 12px 0 20px;
 }
+
 .school-formbox .el-form-item__content {
     text-align: left;
 }
+
 .school-form-area .el-select {
     width: 100%;
 }
+
 .school-list .el-table__header-wrapper {
     line-height: 60px;
 }
+
 .schoolDeatils .el-tabs__header {
     line-height: 40px;
 }
+
 .schoolDeatils .el-tabs__content {
     padding: 0px;
 }
+
 .backbtn .changebtn {
     padding: 8px 15px;
 }
+
 .upload-demo-redact .el-upload {
     width: 100%;
     height: 125px;
 }
+
 .school-form-grading .el-radio__input.is-checked .el-radio__inner::after {
     content: '';
     width: 10px;
@@ -953,13 +1032,15 @@ export default {
     border-radius: 0px;
     background: none;
 }
-.el-upload-dragger {
-}
+
+.el-upload-dragger {}
+
 @media screen and (max-width: 1920px) {
     .school-formbox .school-form-badge {
         width: 17.5%;
     }
 }
+
 @media screen and (max-width: 1400px) {
     .school-formbox .school-form-badge {
         width: 24%;

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 249 - 87
TEAMModelBI/ClientApp/src/view/teachermanage/traitmanage.vue


+ 6 - 6
TEAMModelBI/Controllers/BIAbility/AbilityMgmtController.cs

@@ -66,7 +66,7 @@ namespace TEAMModelBI.Controllers.BIAbility
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"BI,{_option.Location} /biabilitymgmt/get-abilitysbystandard  \n {ex.Message}{ex.StackTrace}", GroupNames.成都开发測試群組);
+                await _dingDing.SendBotMsg($"BI,{_option.Location} /biabilitymgmt/get-abilitysbystandard  \n {ex.Message}\n{ex.StackTrace}", GroupNames.成都开发測試群組);
                 return BadRequest();
             }
         }
@@ -90,7 +90,7 @@ namespace TEAMModelBI.Controllers.BIAbility
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"BI,{_option.Location} /biabilitymgmt/get-abulityid \n {ex.Message}{ex.StackTrace}", GroupNames.成都开发測試群組);
+                await _dingDing.SendBotMsg($"BI,{_option.Location} /biabilitymgmt/get-abulityid \n {ex.Message}\n{ex.StackTrace}", GroupNames.成都开发測試群組);
                 return BadRequest();
             }
         }
@@ -141,7 +141,7 @@ namespace TEAMModelBI.Controllers.BIAbility
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"BI,{_option.Location} /biabilitymgmt/del-ability \n  {ex.Message}{ex.StackTrace}", GroupNames.成都开发測試群組);
+                await _dingDing.SendBotMsg($"BI,{_option.Location} /biabilitymgmt/del-ability \n  {ex.Message}\n{ex.StackTrace}", GroupNames.成都开发測試群組);
                 return BadRequest();
             }
         }
@@ -218,7 +218,7 @@ namespace TEAMModelBI.Controllers.BIAbility
                     }
                     catch (Exception ex)
                     {
-                        await _dingDing.SendBotMsg($"BI,{_option.Location} /biabilitymgmt/upd-ability \n {ex.Message}{ex.StackTrace}", GroupNames.成都开发測試群組);
+                        await _dingDing.SendBotMsg($"BI,{_option.Location} /biabilitymgmt/upd-ability \n {ex.Message}\n{ex.StackTrace}", GroupNames.成都开发測試群組);
                         return BadRequest();
                     }
                 }
@@ -230,7 +230,7 @@ namespace TEAMModelBI.Controllers.BIAbility
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"BI,{_option.Location}   biabilitymgmt/upd-ability \n {ex.Message}{ex.StackTrace}", GroupNames.成都开发測試群組);
+                await _dingDing.SendBotMsg($"BI,{_option.Location}   biabilitymgmt/upd-ability \n {ex.Message}\n{ex.StackTrace}", GroupNames.成都开发測試群組);
                 return BadRequest();
             }
         }
@@ -267,7 +267,7 @@ namespace TEAMModelBI.Controllers.BIAbility
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"BI,{_option.Location}  /biabilitymgmt/upd-currency  \n  {ex.Message}{ex.StackTrace}", GroupNames.成都开发測試群組);
+                await _dingDing.SendBotMsg($"BI,{_option.Location}  /biabilitymgmt/upd-currency  \n  {ex.Message}\n{ex.StackTrace}", GroupNames.成都开发測試群組);
                 return BadRequest();
             }
         }

+ 3 - 3
TEAMModelBI/Controllers/BIAbility/AbilityTaskMgmtController.cs

@@ -107,7 +107,7 @@ namespace TEAMModelBI.Controllers.BIAbility
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"BI,{_option.Location} /biabilitytask/get-abilitytasksid \n {ex.Message}{ex.StackTrace}", GroupNames.成都开发測試群組);
+                await _dingDing.SendBotMsg($"BI,{_option.Location} /biabilitytask/get-abilitytasksid \n {ex.Message}\n{ex.StackTrace}", GroupNames.成都开发測試群組);
                 return BadRequest();
             }
         }
@@ -216,7 +216,7 @@ namespace TEAMModelBI.Controllers.BIAbility
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"BI,{_option.Location}  /biabilitytask/upd-abilitytask \n {ex.Message}{ex.StackTrace}", GroupNames.成都开发測試群組);
+                await _dingDing.SendBotMsg($"BI,{_option.Location}  /biabilitytask/upd-abilitytask \n {ex.Message}\n{ex.StackTrace}", GroupNames.成都开发測試群組);
                 return BadRequest();
             }
         }
@@ -252,7 +252,7 @@ namespace TEAMModelBI.Controllers.BIAbility
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"BI,{_option.Location}   /biabilitytask/del-abilitytask    \n  {ex.Message} {ex.StackTrace}", GroupNames.成都开发測試群組);
+                await _dingDing.SendBotMsg($"BI,{_option.Location}   /biabilitytask/del-abilitytask    \n  {ex.Message}\n{ex.StackTrace} ", GroupNames.成都开发測試群組);
                 return Ok(new { state = 404 });
             }
         }

+ 11 - 11
TEAMModelBI/Controllers/BIHome/HomeStatisController.cs

@@ -62,7 +62,7 @@ namespace TEAMModelBI.Controllers.BIHome
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"BI,{_option.Location} /homestatis/get-numberpeople \n {ex.Message}{ex.StackTrace}", GroupNames.成都开发測試群組);
+                await _dingDing.SendBotMsg($"BI,{_option.Location} /homestatis/get-numberpeople \n {ex.Message}\n{ex.StackTrace}", GroupNames.成都开发測試群組);
                 return BadRequest();
             }
         }
@@ -172,7 +172,7 @@ namespace TEAMModelBI.Controllers.BIHome
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"BI,{_option.Location} /homestatis/get-othertypes \n {ex.Message}{ex.StackTrace}", GroupNames.成都开发測試群組);
+                await _dingDing.SendBotMsg($"BI,{_option.Location} /homestatis/get-othertypes \n {ex.Message}\n{ex.StackTrace}", GroupNames.成都开发測試群組);
                 return BadRequest();
             }
         }
@@ -248,7 +248,7 @@ namespace TEAMModelBI.Controllers.BIHome
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"BI,{_option.Location}  /homestatis/get-alldiststics   \n {ex.Message}{ex.StackTrace}", GroupNames.成都开发測試群組);
+                await _dingDing.SendBotMsg($"BI,{_option.Location}  /homestatis/get-alldiststics   \n {ex.Message}\n{ex.StackTrace}", GroupNames.成都开发測試群組);
 
                 return BadRequest();
             }
@@ -300,7 +300,7 @@ namespace TEAMModelBI.Controllers.BIHome
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"BI, {_option.Location}  /homestatis/get-citystics  \n  {ex.Message}{ex.StackTrace}", GroupNames.成都开发測試群組);
+                await _dingDing.SendBotMsg($"BI, {_option.Location}  /homestatis/get-citystics  \n  {ex.Message}\n{ex.StackTrace}", GroupNames.成都开发測試群組);
                 return BadRequest();
             }
         }
@@ -405,7 +405,7 @@ namespace TEAMModelBI.Controllers.BIHome
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"BI, {_option.Location}  /homestatis/get-provincestics   \n  {ex.Message}{ex.StackTrace}", GroupNames.成都开发測試群組);
+                await _dingDing.SendBotMsg($"BI, {_option.Location}  /homestatis/get-provincestics   \n  {ex.Message}\n{ex.StackTrace}", GroupNames.成都开发測試群組);
                 return BadRequest();
             }
         }
@@ -469,7 +469,7 @@ namespace TEAMModelBI.Controllers.BIHome
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"BI, {_option.Location}   /homestatis/get-cityschool   \n {ex.Message}{ex.StackTrace}", GroupNames.成都开发測試群組);
+                await _dingDing.SendBotMsg($"BI, {_option.Location}   /homestatis/get-cityschool   \n {ex.Message}\n{ex.StackTrace}", GroupNames.成都开发測試群組);
                 return BadRequest();
             }
         }
@@ -541,7 +541,7 @@ namespace TEAMModelBI.Controllers.BIHome
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"BI, {_option.Location} /homestatis/get-districtstics  \n  {ex.Message}  {ex.StackTrace}   ", GroupNames.成都开发測試群組);
+                await _dingDing.SendBotMsg($"BI, {_option.Location} /homestatis/get-districtstics  \n  {ex.Message}\n{ex.StackTrace}     ", GroupNames.成都开发測試群組);
                 return BadRequest();
             }
             
@@ -655,7 +655,7 @@ namespace TEAMModelBI.Controllers.BIHome
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"BI, {_option.Location}   /homestatis/get-cityallstics    \n {ex.Message} {ex.StackTrace}", GroupNames.成都开发測試群組);
+                await _dingDing.SendBotMsg($"BI, {_option.Location}   /homestatis/get-cityallstics    \n {ex.Message}\n{ex.StackTrace} ", GroupNames.成都开发測試群組);
                 return BadRequest();
             }
         }
@@ -698,7 +698,7 @@ namespace TEAMModelBI.Controllers.BIHome
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"BI,{_option.Location} /homestatis/get-sticsbipower  \n {ex.Message}{ex.StackTrace}", GroupNames.成都开发測試群組);
+                await _dingDing.SendBotMsg($"BI,{_option.Location} /homestatis/get-sticsbipower  \n {ex.Message}\n{ex.StackTrace}", GroupNames.成都开发測試群組);
                 return BadRequest();
             }
         }
@@ -945,7 +945,7 @@ namespace TEAMModelBI.Controllers.BIHome
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"BI,{_option.Location}   /homestatis/get-datatypestics   \n  {ex.Message}{ex.StackTrace}", GroupNames.成都开发測試群組);
+                await _dingDing.SendBotMsg($"BI,{_option.Location}   /homestatis/get-datatypestics   \n  {ex.Message}\n{ex.StackTrace}", GroupNames.成都开发測試群組);
                 return BadRequest();
             }
         }
@@ -1008,7 +1008,7 @@ namespace TEAMModelBI.Controllers.BIHome
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"BI,{_option.Location}   /homestatis/get-datatypestics   \n  {ex.Message}{ex.StackTrace}", GroupNames.成都开发測試群組);
+                await _dingDing.SendBotMsg($"BI,{_option.Location}   /homestatis/get-datatypestics   \n  {ex.Message}\n{ex.StackTrace}", GroupNames.成都开发測試群組);
                 return BadRequest();
             }
 

+ 4 - 4
TEAMModelBI/Controllers/BINormal/AppCompanyController.cs

@@ -149,7 +149,7 @@ namespace TEAMModelBI.Controllers.BINormal
             }
             catch (Exception e)
             {
-                await _dingDing.SendBotMsg($"BI,{_option.Location} , /appcompany/set-info   \n {e.Message} \n {e.StackTrace}", GroupNames.成都开发測試群組);
+                await _dingDing.SendBotMsg($"BI,{_option.Location} , /appcompany/set-info   \n {e.Message}\n{e.StackTrace} \n ", GroupNames.成都开发測試群組);
                 return BadRequest();
             }
         }
@@ -270,7 +270,7 @@ namespace TEAMModelBI.Controllers.BINormal
             }
             catch (Exception e)
             {
-                await _dingDing.SendBotMsg($"BI,{_option.Location} , /appcompany/get-applyapi   \n {e.Message} \n {e.StackTrace}", GroupNames.成都开发測試群組);
+                await _dingDing.SendBotMsg($"BI,{_option.Location} , /appcompany/get-applyapi   \n {e.Message}\n{e.StackTrace} \n ", GroupNames.成都开发測試群組);
                 return BadRequest();
             }
         }
@@ -397,7 +397,7 @@ namespace TEAMModelBI.Controllers.BINormal
             }
             catch (Exception e)
             {
-                await _dingDing.SendBotMsg($"BI,{_option.Location} , /appcompany/get-applyapi   \n {e.Message} \n {e.StackTrace}", GroupNames.成都开发測試群組);
+                await _dingDing.SendBotMsg($"BI,{_option.Location} , /appcompany/get-applyapi   \n {e.Message}\n{e.StackTrace} \n ", GroupNames.成都开发測試群組);
                 return BadRequest();
             }
         }
@@ -523,7 +523,7 @@ namespace TEAMModelBI.Controllers.BINormal
             }
             catch (Exception e)
             {
-                await _dingDing.SendBotMsg($"BI,{_option.Location} , /appcompany/set-auditschool   \n {e.Message} \n {e.StackTrace}", GroupNames.成都开发測試群組);
+                await _dingDing.SendBotMsg($"BI,{_option.Location} , /appcompany/set-auditschool   \n {e.Message}\n{e.StackTrace}\n{e.StackTrace} \n ", GroupNames.成都开发測試群組);
                 return BadRequest();
             }
         }

+ 1 - 1
TEAMModelBI/Controllers/BINormal/BIOpenApiController.cs

@@ -129,7 +129,7 @@ namespace TEAMModelBI.Controllers.BINormal
             }
             catch (Exception e)
             {
-                await _dingDing.SendBotMsg($"BI,{_option.Location} , /openapi/set-api   \n {e.Message} \n {e.StackTrace}", GroupNames.成都开发測試群組);
+                await _dingDing.SendBotMsg($"BI,{_option.Location} , /openapi/set-api   \n {e.Message}\n{e.StackTrace} \n ", GroupNames.成都开发測試群組);
                 return BadRequest();
             }
         }

+ 1 - 1
TEAMModelBI/Controllers/BINormal/CompanyController.cs

@@ -162,7 +162,7 @@ namespace TEAMModelBI.Controllers.BINormal
             }
             catch (Exception e)
             {
-                await _dingDing.SendBotMsg($"BI,{_option.Location} , /company/set-info   \n {e.Message} \n {e.StackTrace}", GroupNames.成都开发測試群組);
+                await _dingDing.SendBotMsg($"BI,{_option.Location} , /company/set-info   \n {e.Message}\n{e.StackTrace} \n ", GroupNames.成都开发測試群組);
                 return BadRequest();
             }
         }

+ 2 - 2
TEAMModelBI/Controllers/BISchool/AreaRelevantController.cs

@@ -78,7 +78,7 @@ namespace TEAMModelBI.Controllers.BISchool
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"BI, {_option.Location} /area/get-areaschools  \n {ex.Message}{ex.StackTrace}", GroupNames.成都开发測試群組);
+                await _dingDing.SendBotMsg($"BI, {_option.Location} /area/get-areaschools  \n {ex.Message}\n{ex.StackTrace}", GroupNames.成都开发測試群組);
                 return BadRequest();
             }        
         }
@@ -115,7 +115,7 @@ namespace TEAMModelBI.Controllers.BISchool
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"BI, {_option.Location}   /area/set-areashiftschool \n  {ex.Message}{ex.StackTrace}", GroupNames.成都开发測試群組);
+                await _dingDing.SendBotMsg($"BI, {_option.Location}   /area/set-areashiftschool \n  {ex.Message}\n{ex.StackTrace}", GroupNames.成都开发測試群組);
                 return BadRequest();
             }
         }

+ 4 - 4
TEAMModelBI/Controllers/BISchool/BatchAreaController.cs

@@ -76,7 +76,7 @@ namespace TEAMModelBI.Controllers.BISchool
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"BI,{_option.Location} batcharea/get-areas \n {ex.Message}{ex.StackTrace}", GroupNames.成都开发測試群組);
+                await _dingDing.SendBotMsg($"BI,{_option.Location} batcharea/get-areas \n {ex.Message}\n{ex.StackTrace}", GroupNames.成都开发測試群組);
                 return BadRequest();
             }
         }
@@ -134,7 +134,7 @@ namespace TEAMModelBI.Controllers.BISchool
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"BI,{_option.Location} batcharea/batch-createarea \n {ex.Message}{ex.StackTrace}", GroupNames.成都开发測試群組);
+                await _dingDing.SendBotMsg($"BI,{_option.Location} batcharea/batch-createarea \n {ex.Message}\n{ex.StackTrace}", GroupNames.成都开发測試群組);
                 return BadRequest();
             }
         }
@@ -465,7 +465,7 @@ namespace TEAMModelBI.Controllers.BISchool
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"BI,{_option.Location}  /batcharea/batch-area \n {ex.Message}{ex.StackTrace}", GroupNames.成都开发測試群組);
+                await _dingDing.SendBotMsg($"BI,{_option.Location}  /batcharea/batch-area \n {ex.Message}\n{ex.StackTrace}", GroupNames.成都开发測試群組);
                 return BadRequest();
             }
         }
@@ -681,7 +681,7 @@ namespace TEAMModelBI.Controllers.BISchool
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"BI,{_option.Location}   batcharea/cut-standard \n  {ex.Message}{ex.StackTrace}", GroupNames.成都开发測試群組);
+                await _dingDing.SendBotMsg($"BI,{_option.Location}   batcharea/cut-standard \n  {ex.Message}\n{ex.StackTrace}", GroupNames.成都开发測試群組);
                 return BadRequest();
             }
         }

+ 6 - 6
TEAMModelBI/Controllers/BISchool/BatchSchoolController.cs

@@ -113,7 +113,7 @@ namespace TEAMModelBI.Controllers.BISchool
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"BI,{_option.Location},  /batchschool/get-teacherroles \n{ex.Message}{ex.StackTrace}", GroupNames.成都开发測試群組);
+                await _dingDing.SendBotMsg($"BI,{_option.Location},  /batchschool/get-teacherroles \n{ex.Message}\n{ex.StackTrace}", GroupNames.成都开发測試群組);
                 return BadRequest();
 
             }
@@ -291,7 +291,7 @@ namespace TEAMModelBI.Controllers.BISchool
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"BI,{_option.Location} /batchschool/batch-school \n {ex.Message}{ex.StackTrace}", GroupNames.成都开发測試群組);
+                await _dingDing.SendBotMsg($"BI,{_option.Location} /batchschool/batch-school \n {ex.Message}\n{ex.StackTrace}", GroupNames.成都开发測試群組);
                 return BadRequest();
             }
         }
@@ -402,7 +402,7 @@ namespace TEAMModelBI.Controllers.BISchool
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"BI,{_option.Location}  /batchschool/get-schoolsinfo  \n {ex.Message}{ex.StackTrace}", GroupNames.成都开发測試群組);
+                await _dingDing.SendBotMsg($"BI,{_option.Location}  /batchschool/get-schoolsinfo  \n {ex.Message}\n{ex.StackTrace}", GroupNames.成都开发測試群組);
                 return BadRequest();
             }
         }
@@ -534,7 +534,7 @@ namespace TEAMModelBI.Controllers.BISchool
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"BI,{_option.Location}  /batchschool/get-schools \n {ex.Message}{ex.StackTrace}", GroupNames.成都开发測試群組);
+                await _dingDing.SendBotMsg($"BI,{_option.Location}  /batchschool/get-schools \n {ex.Message}\n{ex.StackTrace}", GroupNames.成都开发測試群組);
                 return BadRequest();
             }
         }
@@ -724,7 +724,7 @@ namespace TEAMModelBI.Controllers.BISchool
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"BI,  {_option.Location}   /batchschool/upd-schoolassist   \n  {ex.Message}{ex.StackTrace}", GroupNames.成都开发測試群組);
+                await _dingDing.SendBotMsg($"BI,  {_option.Location}   /batchschool/upd-schoolassist   \n  {ex.Message}\n{ex.StackTrace}", GroupNames.成都开发測試群組);
                 return BadRequest();
             }
         }
@@ -756,7 +756,7 @@ namespace TEAMModelBI.Controllers.BISchool
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"BI,{_option.Location}   /batchschool/get-schooldist  \n  {ex.Message}{ex.StackTrace}", GroupNames.成都开发測試群組);
+                await _dingDing.SendBotMsg($"BI,{_option.Location}   /batchschool/get-schooldist  \n  {ex.Message}\n{ex.StackTrace}", GroupNames.成都开发測試群組);
                 return BadRequest();
             }
         }

+ 1 - 1
TEAMModelBI/Controllers/BISchool/RoomController.cs

@@ -81,7 +81,7 @@ namespace TEAMModelBI.Controllers.BISchool
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"BI,{_option.Location},/schoolroom/set-bind \n{ex.Message}", GroupNames.成都开发測試群組);
+                await _dingDing.SendBotMsg($"BI,{_option.Location},/schoolroom/set-bind \n{ex.Message}\n{ex.StackTrace}", GroupNames.成都开发測試群組);
                 return BadRequest();
             }
         }

+ 7 - 7
TEAMModelBI/Controllers/BISchool/SchoolController.cs

@@ -92,7 +92,7 @@ namespace TEAMModelBI.Controllers.BISchool
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"BI,{_option.Location}  /schoolcheck/get-notarea   \n    {ex.Message}{ex.StackTrace}", GroupNames.成都开发測試群組);
+                await _dingDing.SendBotMsg($"BI,{_option.Location}  /schoolcheck/get-notarea   \n    {ex.Message}\n{ex.StackTrace}", GroupNames.成都开发測試群組);
                 return BadRequest();
             }
         }
@@ -140,7 +140,7 @@ namespace TEAMModelBI.Controllers.BISchool
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"BI,{_option.Location}  /schoolcheck/set-schooljoinarea   \n    {ex.Message}{ex.StackTrace}", GroupNames.成都开发測試群組);
+                await _dingDing.SendBotMsg($"BI,{_option.Location}  /schoolcheck/set-schooljoinarea   \n    {ex.Message}\n{ex.StackTrace}", GroupNames.成都开发測試群組);
                 return BadRequest();
             }
         }
@@ -188,7 +188,7 @@ namespace TEAMModelBI.Controllers.BISchool
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"BI,{_option.Location}   /schoolcheck/get-assustschool  \n {ex.Message}{ex.StackTrace}", GroupNames.成都开发測試群組);
+                await _dingDing.SendBotMsg($"BI,{_option.Location}   /schoolcheck/get-assustschool  \n {ex.Message}\n{ex.StackTrace}", GroupNames.成都开发測試群組);
                 return BadRequest();
             }
         }
@@ -221,7 +221,7 @@ namespace TEAMModelBI.Controllers.BISchool
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"BI,{_option.Location}   /schoolcheck/get-schoolid  \n {ex.Message}{ex.StackTrace}", GroupNames.成都开发測試群組);
+                await _dingDing.SendBotMsg($"BI,{_option.Location}   /schoolcheck/get-schoolid  \n {ex.Message}\n{ex.StackTrace}", GroupNames.成都开发測試群組);
                 return BadRequest();
             }
         }
@@ -305,7 +305,7 @@ namespace TEAMModelBI.Controllers.BISchool
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"BI,{_option.Location}  /batchschool/upd-school \n {ex.Message}{ex.StackTrace}", GroupNames.成都开发測試群組);
+                await _dingDing.SendBotMsg($"BI,{_option.Location}  /batchschool/upd-school \n {ex.Message}\n{ex.StackTrace}", GroupNames.成都开发測試群組);
                 return BadRequest();
             }
         }
@@ -568,7 +568,7 @@ namespace TEAMModelBI.Controllers.BISchool
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"BI,{_option.Location}  /batchschool/set-aistschool \n {ex.Message}{ex.StackTrace}", GroupNames.成都开发測試群組);
+                await _dingDing.SendBotMsg($"BI,{_option.Location}  /batchschool/set-aistschool \n {ex.Message}\n{ex.StackTrace}", GroupNames.成都开发測試群組);
                 return BadRequest();
             }
         }
@@ -676,7 +676,7 @@ namespace TEAMModelBI.Controllers.BISchool
             catch (Exception ex)
             {
 
-                await _dingDing.SendBotMsg($"BI,{_option.Location}  /batchschool/set-schoolme \n {ex.Message}{ex.StackTrace}", GroupNames.成都开发測試群組);
+                await _dingDing.SendBotMsg($"BI,{_option.Location}  /batchschool/set-schoolme \n {ex.Message}\n{ex.StackTrace}", GroupNames.成都开发測試群組);
                 return BadRequest();
             }
 

+ 4 - 4
TEAMModelBI/Controllers/BIServer/BiServersController.cs

@@ -64,7 +64,7 @@ namespace TEAMModelBI.Controllers.BIServer
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"BI, {_option} /biservers/get-coreinfo  \n {ex.Message} {ex.StackTrace}", GroupNames.成都开发測試群組);
+                await _dingDing.SendBotMsg($"BI, {_option} /biservers/get-coreinfo  \n {ex.Message}\n{ex.StackTrace} ", GroupNames.成都开发測試群組);
                 return BadRequest();
             }
         }
@@ -103,7 +103,7 @@ namespace TEAMModelBI.Controllers.BIServer
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"BI, {_option} /biservers/get-mobileuserinfo  \n {ex.Message} {ex.StackTrace}", GroupNames.成都开发測試群組);
+                await _dingDing.SendBotMsg($"BI, {_option} /biservers/get-mobileuserinfo  \n {ex.Message}\n{ex.StackTrace} ", GroupNames.成都开发測試群組);
                 return BadRequest();
             }
         }
@@ -146,7 +146,7 @@ namespace TEAMModelBI.Controllers.BIServer
             }
             catch (Exception ex)
             {
-                return Ok(new { state = 0, message = $"发送失败!{ex.Message}" });
+                return Ok(new { state = 0, message = $"发送失败!{ex.Message}\n{ex.StackTrace}" });
             }
         }
 
@@ -199,7 +199,7 @@ namespace TEAMModelBI.Controllers.BIServer
             }
             catch (Exception ex)
             {
-                return Ok(new { state = 0, message = $"发送状态错误{ex.Message}" });
+                return Ok(new { state = 0, message = $"发送状态错误{ex.Message}\n{ex.StackTrace}" });
             }
         }
 

+ 1 - 1
TEAMModelBI/Controllers/BIStudent/StuActivityController.cs

@@ -90,7 +90,7 @@ namespace TEAMModelBI.Controllers.BIStudent
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"BI,{_option.Location} /stuactivity/get-classIds \n {ex.Message}{ex.StackTrace}", GroupNames.成都开发測試群組);
+                await _dingDing.SendBotMsg($"BI,{_option.Location} /stuactivity/get-classIds \n {ex.Message}\n{ex.StackTrace}", GroupNames.成都开发測試群組);
                 return Ok(new { state = 401 });
             }
         }

+ 2 - 2
TEAMModelBI/Controllers/BITest/TestController.cs

@@ -227,7 +227,7 @@ namespace TEAMModelBI.Controllers.BITest
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"BI,{_option.Location}   /operatelog/get-operatelogbydate  \n  {ex.Message}{ex.StackTrace}", GroupNames.成都开发測試群組);
+                await _dingDing.SendBotMsg($"BI,{_option.Location}   /operatelog/get-operatelogbydate  \n  {ex.Message}\n{ex.StackTrace}", GroupNames.成都开发測試群組);
                 return BadRequest();
             }
         }
@@ -513,7 +513,7 @@ namespace TEAMModelBI.Controllers.BITest
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"BI,{_option.Location}  /batchschool/get-schoolsinfo  \n {ex.Message}{ex.StackTrace}", GroupNames.成都开发測試群組);
+                await _dingDing.SendBotMsg($"BI,{_option.Location}  /batchschool/get-schoolsinfo  \n {ex.Message}\n{ex.StackTrace}", GroupNames.成都开发測試群組);
                 return BadRequest();
             }
         }

+ 1 - 1
TEAMModelBI/Controllers/Census/ActivitySticsController.cs

@@ -131,7 +131,7 @@ namespace TEAMModelBI.Controllers.Census
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"BI,{_option.Location} /activity/get-allactivity  \n {ex.Message}{ex.StackTrace}", GroupNames.成都开发測試群組);
+                await _dingDing.SendBotMsg($"BI,{_option.Location} /activity/get-allactivity  \n {ex.Message}\n{ex.StackTrace}", GroupNames.成都开发測試群組);
                 return BadRequest();
             }
         }

+ 2 - 2
TEAMModelBI/Controllers/Census/LessonSticsController.cs

@@ -115,7 +115,7 @@ namespace TEAMModelBI.Controllers.Census
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"BI,{_option.Location}  /lesson/get-total \n {ex.Message}{ex.StackTrace}", GroupNames.成都开发測試群組);
+                await _dingDing.SendBotMsg($"BI,{_option.Location}  /lesson/get-total \n {ex.Message}\n{ex.StackTrace}", GroupNames.成都开发測試群組);
                 return BadRequest();
             }
         }
@@ -158,7 +158,7 @@ namespace TEAMModelBI.Controllers.Census
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"BI, {_option.Location}  /lesson/get-assiist  {ex.Message}{ex.StackTrace}", GroupNames.成都开发測試群組);
+                await _dingDing.SendBotMsg($"BI, {_option.Location}  /lesson/get-assiist  {ex.Message}\n{ex.StackTrace}", GroupNames.成都开发測試群組);
                 return BadRequest();
             }
         }

+ 3 - 3
TEAMModelBI/Controllers/DingDingStruc/DDStructController.cs

@@ -229,7 +229,7 @@ namespace TEAMModelBI.Controllers.DingDingStruc
             }
             catch (Exception ex)
             {
-                return Ok(new { state = 1, message=$"查询失败!:状态:{ex.StackTrace}错误:{ex.Message}" }) ;
+                return Ok(new { state = 1, message=$"查询失败!:状态:错误:{ex.Message}\n{ex.StackTrace}" }) ;
             }
         }
 
@@ -452,7 +452,7 @@ namespace TEAMModelBI.Controllers.DingDingStruc
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"BI,{_option.Location}   dd/get-tmdandddusers  \n  {ex.Message}{ex.StackTrace}", GroupNames.成都开发測試群組);
+                await _dingDing.SendBotMsg($"BI,{_option.Location}   dd/get-tmdandddusers  \n  {ex.Message}\n{ex.StackTrace}", GroupNames.成都开发測試群組);
                 return BadRequest();
             }
         }
@@ -575,7 +575,7 @@ namespace TEAMModelBI.Controllers.DingDingStruc
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"BI,{_option.Location},dd/get-dduserinfo \n{ex.Message}{ex.StackTrace}", GroupNames.成都开发測試群組);
+                await _dingDing.SendBotMsg($"BI,{_option.Location},dd/get-dduserinfo \n{ex.Message}\n{ex.StackTrace}", GroupNames.成都开发測試群組);
                 return BadRequest();
             }
         }      

+ 2 - 2
TEAMModelBI/Controllers/DingDingStruc/SystemConfigController.cs

@@ -221,7 +221,7 @@ namespace TEAMModelBI.Controllers.DingDingStruc
                 }
                 catch (Exception ex)
                 {
-                    await _dingDing.SendBotMsg($"BI,{_option.Location} /syscfg/set-config  \n {ex.Message}{ex.StackTrace}", GroupNames.成都开发測試群組);
+                    await _dingDing.SendBotMsg($"BI,{_option.Location} /syscfg/set-config  \n {ex.Message}\n{ex.StackTrace}", GroupNames.成都开发測試群組);
                     return Ok(new { state = 403, msg = $"保存失败!" });
                 }
 
@@ -244,7 +244,7 @@ namespace TEAMModelBI.Controllers.DingDingStruc
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"BI,{_option.Location} /syscfg/set-config  \n {ex.Message}{ex.StackTrace}", GroupNames.成都开发測試群組);
+                await _dingDing.SendBotMsg($"BI,{_option.Location} /syscfg/set-config  \n {ex.Message}\n{ex.StackTrace}", GroupNames.成都开发測試群組);
                 return BadRequest();
             }
         }

+ 9 - 9
TEAMModelBI/Controllers/DingDingStruc/TableDingDingInfoController.cs

@@ -190,7 +190,7 @@ namespace TEAMModelBI.Controllers.DingDingStruc
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"BI,{_option.Location}  /tabledd/get-dingdingusers  \n {ex.Message}{ex.StackTrace}", GroupNames.成都开发測試群組);
+                await _dingDing.SendBotMsg($"BI,{_option.Location}  /tabledd/get-dingdingusers  \n {ex.Message}\n{ex.StackTrace}", GroupNames.成都开发測試群組);
                 return BadRequest();
             }
         }
@@ -306,7 +306,7 @@ namespace TEAMModelBI.Controllers.DingDingStruc
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"BI,{_option.Location} /tabledd/get-ddusers  \n {ex.Message}{ex.StackTrace}", GroupNames.成都开发測試群組);
+                await _dingDing.SendBotMsg($"BI,{_option.Location} /tabledd/get-ddusers  \n {ex.Message}\n{ex.StackTrace}", GroupNames.成都开发測試群組);
                 return BadRequest();
             }
         }
@@ -381,7 +381,7 @@ namespace TEAMModelBI.Controllers.DingDingStruc
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"BI,{_option.Location}  /tabledd/set-ddinductionuser   \n  {ex.Message}{ex.StackTrace}", GroupNames.成都开发測試群組);
+                await _dingDing.SendBotMsg($"BI,{_option.Location}  /tabledd/set-ddinductionuser   \n  {ex.Message}\n{ex.StackTrace}", GroupNames.成都开发測試群組);
                 return BadRequest();
             }
         }
@@ -443,7 +443,7 @@ namespace TEAMModelBI.Controllers.DingDingStruc
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"BI,{_option.Location}   /tabledd/del-ddquituser   \n  {ex.Message}{ex.StackTrace}", GroupNames.成都开发測試群組);
+                await _dingDing.SendBotMsg($"BI,{_option.Location}   /tabledd/del-ddquituser   \n  {ex.Message}\n{ex.StackTrace}", GroupNames.成都开发測試群組);
                 return BadRequest();
             }
         }
@@ -513,7 +513,7 @@ namespace TEAMModelBI.Controllers.DingDingStruc
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"BI,{_option.Location}  /tabledd/set-permissions   \n  {ex.Message}{ex.StackTrace} ", GroupNames.成都开发測試群組);
+                await _dingDing.SendBotMsg($"BI,{_option.Location}  /tabledd/set-permissions   \n  {ex.Message}\n{ex.StackTrace} ", GroupNames.成都开发測試群組);
                 return BadRequest();
             }
         }
@@ -657,7 +657,7 @@ namespace TEAMModelBI.Controllers.DingDingStruc
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"BI, {_option.Location}   /tabledd/get-dddeptiduser \n {ex.Message}{ex.StackTrace}", GroupNames.成都开发測試群組);
+                await _dingDing.SendBotMsg($"BI, {_option.Location}   /tabledd/get-dddeptiduser \n {ex.Message}\n{ex.StackTrace}", GroupNames.成都开发測試群組);
                 return BadRequest();
             }
         }
@@ -743,7 +743,7 @@ namespace TEAMModelBI.Controllers.DingDingStruc
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"BI, {_option.Location}   /tabledd/set-backenbind \n {ex.Message}{ex.StackTrace}", GroupNames.成都开发測試群組);
+                await _dingDing.SendBotMsg($"BI, {_option.Location}   /tabledd/set-backenbind \n {ex.Message}\n{ex.StackTrace}", GroupNames.成都开发測試群組);
                 return BadRequest();
             }        
         }
@@ -842,7 +842,7 @@ namespace TEAMModelBI.Controllers.DingDingStruc
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"BI, {_option.Location}   /tabledd/set-backend \n {ex.Message}{ex.StackTrace}", GroupNames.成都开发測試群組);
+                await _dingDing.SendBotMsg($"BI, {_option.Location}   /tabledd/set-backend \n {ex.Message}\n{ex.StackTrace}", GroupNames.成都开发測試群組);
 
                 return BadRequest();
             }
@@ -987,7 +987,7 @@ namespace TEAMModelBI.Controllers.DingDingStruc
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"BI,{_option.Location} /tabledd/set-tmdadmin  \n {ex.Message}{ex.StackTrace}", GroupNames.成都开发測試群組);
+                await _dingDing.SendBotMsg($"BI,{_option.Location} /tabledd/set-tmdadmin  \n {ex.Message}\n{ex.StackTrace}", GroupNames.成都开发測試群組);
                 return BadRequest();
             }
         }

+ 3 - 3
TEAMModelBI/Controllers/LoginController.cs

@@ -299,7 +299,7 @@ namespace TEAMModelBI.Controllers
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"BI, {_option.Location} /common/login/get-ddscancode   \n {ex.Message}{ex.StackTrace}", GroupNames.成都开发測試群組);
+                await _dingDing.SendBotMsg($"BI, {_option.Location} /common/login/get-ddscancode   \n {ex.Message}\n{ex.StackTrace}", GroupNames.成都开发測試群組);
                 return BadRequest();
             }
         }
@@ -391,7 +391,7 @@ namespace TEAMModelBI.Controllers
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"BI, {_option.Location} /common/login/set-bind   \n {ex.Message}{ex.StackTrace}", GroupNames.成都开发測試群組);
+                await _dingDing.SendBotMsg($"BI, {_option.Location} /common/login/set-bind   \n {ex.Message}\n{ex.StackTrace}", GroupNames.成都开发測試群組);
                 return BadRequest();
             }
         }
@@ -475,7 +475,7 @@ namespace TEAMModelBI.Controllers
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"BI,{_option.Location}  /common/login/get-ddinfo   \n  {ex.Message}{ex.StackTrace}", GroupNames.成都开发測試群組);
+                await _dingDing.SendBotMsg($"BI,{_option.Location}  /common/login/get-ddinfo   \n  {ex.Message}\n{ex.StackTrace}", GroupNames.成都开发測試群組);
                 return BadRequest();
             }
         }

+ 3 - 3
TEAMModelBI/Controllers/OperateRecord/OperateLogController.cs

@@ -81,7 +81,7 @@ namespace TEAMModelBI.Controllers.OperateRecord
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"BI,{_option.Location}  /operatelog/get-record \n  {ex.Message}{ex.StackTrace} ",GroupNames.成都开发測試群組);
+                await _dingDing.SendBotMsg($"BI,{_option.Location}  /operatelog/get-record \n  {ex.Message}\n{ex.StackTrace} ",GroupNames.成都开发測試群組);
                 return BadRequest();
             }
         }
@@ -130,7 +130,7 @@ namespace TEAMModelBI.Controllers.OperateRecord
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"BI, {_option.Location} /operatelog/del-record \n {ex.Message}{ex.StackTrace}", GroupNames.成都开发測試群組);
+                await _dingDing.SendBotMsg($"BI, {_option.Location} /operatelog/del-record \n {ex.Message}\n{ex.StackTrace}", GroupNames.成都开发測試群組);
                 return BadRequest();
             }
         }
@@ -161,7 +161,7 @@ namespace TEAMModelBI.Controllers.OperateRecord
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"BI, {_option.Location} /operatelog/get-logtmdid  \n {ex.Message}{ex.StackTrace}", GroupNames.成都开发測試群組);
+                await _dingDing.SendBotMsg($"BI, {_option.Location} /operatelog/get-logtmdid  \n {ex.Message}\n{ex.StackTrace}", GroupNames.成都开发測試群組);
                 return BadRequest();
             }
         }

+ 2 - 2
TEAMModelOS.FunctionV4/CosmosDB/TriggerCorrect.cs

@@ -450,11 +450,11 @@ namespace TEAMModelOS.FunctionV4
             }
             catch (CosmosException e)
             {
-                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-CosmosDB异常{e.StackTrace}{e.Message}\n{e.Status}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-CosmosDB异常{e.Message}\n{e.StackTrace}\n{e.Status}", GroupNames.醍摩豆服務運維群組);
             }
             catch (Exception e)
             {
-                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-阅卷异常{e.Message}\n{e.StackTrace}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-阅卷异常{e.Message}\n{e.StackTrace}\n", GroupNames.醍摩豆服務運維群組);
             }
             
         }

+ 7 - 7
TEAMModelOS.FunctionV4/CosmosDB/TriggerExam.cs

@@ -350,7 +350,7 @@ namespace TEAMModelOS.FunctionV4
                             }
                             catch (Exception e)
                             {
-                                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-{info.id}-评测going状态异常{e.Message}\n{e.StackTrace}", GroupNames.醍摩豆服務運維群組);
+                                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-{info.id}-评测going状态异常{e.Message}\n{e.StackTrace}\n", GroupNames.醍摩豆服務運維群組);
                             }
                             finally
                             {
@@ -431,7 +431,7 @@ namespace TEAMModelOS.FunctionV4
                             }
                             catch (Exception e)
                             {
-                                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-{info.id}-评测finish状态异常{e.Message}\n{e.StackTrace}", GroupNames.醍摩豆服務運維群組);
+                                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-{info.id}-评测finish状态异常{e.Message}\n{e.StackTrace}\n", GroupNames.醍摩豆服務運維群組);
                             }
                             break;
                     }
@@ -440,11 +440,11 @@ namespace TEAMModelOS.FunctionV4
             }
             catch (CosmosException e)
             {
-                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-CosmosDB异常{e.StackTrace}{e.Message}\n{e.Status}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-CosmosDB异常{e.Message}\n{e.StackTrace}\n{e.Status}", GroupNames.醍摩豆服務運維群組);
             }
             catch (Exception e)
             {
-                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-评测结算异常{e.Message}\n{e.StackTrace}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-评测结算异常{e.Message}\n{e.StackTrace}\n", GroupNames.醍摩豆服務運維群組);
             }
 
         }
@@ -698,7 +698,7 @@ namespace TEAMModelOS.FunctionV4
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-{info.id}-评测作答记录结算异常{ex.Message}\n{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-{info.id}-评测作答记录结算异常{ex.Message}\n{ex.StackTrace}\n", GroupNames.醍摩豆服務運維群組);
             }
         }
         public static async Task<List<RGroupList>> Activity(CoreAPIHttpService _coreAPIHttpService, ExamInfo info, List<string> classes, CosmosClient client, DingDing _dingDing, List<string> sub, List<ExamClassResult> results)
@@ -1026,7 +1026,7 @@ namespace TEAMModelOS.FunctionV4
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-{info.id}-评测知识点结算异常{ex.Message}\n{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-{info.id}-评测知识点结算异常{ex.Message}\n{ex.StackTrace}\n", GroupNames.醍摩豆服務運維群組);
                 return null;
             }
         }
@@ -1163,7 +1163,7 @@ namespace TEAMModelOS.FunctionV4
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-{info.id}-评测认知层次结算异常{ex.Message}\n{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-{info.id}-评测认知层次结算异常{ex.Message}\n{ex.StackTrace}\n", GroupNames.醍摩豆服務運維群組);
                 return null;
             }
         }

+ 2 - 2
TEAMModelOS.FunctionV4/CosmosDB/TriggerExamLite.cs

@@ -190,11 +190,11 @@ namespace TEAMModelOS.FunctionV4
             }
             catch (CosmosException e)
             {
-                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-CosmosDB异常{e.StackTrace}{e.Message}\n{e.Status}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-CosmosDB异常{e.Message}\n{e.StackTrace}\n{e.Status}", GroupNames.醍摩豆服務運維群組);
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}研修评测异常{ex.Message}{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}研修评测异常{ex.Message}\n{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
             }
 
         }

+ 2 - 2
TEAMModelOS.FunctionV4/CosmosDB/TriggerHomework.cs

@@ -142,11 +142,11 @@ namespace TEAMModelOS.FunctionV4
             }
             catch (CosmosException e)
             {
-                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-CosmosDB异常{e.StackTrace}{e.Message}\n{e.Status}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-CosmosDB异常{e.Message}\n{e.StackTrace}\n{e.Status}", GroupNames.醍摩豆服務運維群組);
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}研修作业活动异常{ex.Message}{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}研修作业活动异常{ex.Message}\n{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
             }
         }
 

+ 3 - 3
TEAMModelOS.FunctionV4/CosmosDB/TriggerStudy.cs

@@ -188,7 +188,7 @@ namespace TEAMModelOS.FunctionV4
 
                             }
                             catch (Exception ex) {
-                                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}研修活动异常-going {ex.Message}{ex.StackTrace}{tdata.ToJsonString()}{input}", GroupNames.醍摩豆服務運維群組);
+                                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}研修活动异常-going {ex.Message}\n{ex.StackTrace}{tdata.ToJsonString()}{input}", GroupNames.醍摩豆服務運維群組);
                             }
                            
                             break;
@@ -200,11 +200,11 @@ namespace TEAMModelOS.FunctionV4
             }
             catch (CosmosException e)
             {
-                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-CosmosDB异常{e.StackTrace}{e.Message}\n{e.Status}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-CosmosDB异常{e.Message}\n{e.StackTrace}\n{e.Status}", GroupNames.醍摩豆服務運維群組);
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}研修活动异常{ex.Message}{ex.StackTrace}{tdata.ToJsonString()}{input}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}研修活动异常{ex.Message}\n{ex.StackTrace}{tdata.ToJsonString()}{input}", GroupNames.醍摩豆服務運維群組);
             }
 
         }

+ 3 - 3
TEAMModelOS.FunctionV4/CosmosDB/TriggerSurvey.cs

@@ -389,7 +389,7 @@ namespace TEAMModelOS.FunctionV4
                             }
                             catch (Exception ex)
                             {
-                                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}问卷调查问题结算异常{ex.Message}\n{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
+                                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}问卷调查问题结算异常{ex.Message}\n{ex.StackTrace}\n", GroupNames.醍摩豆服務運維群組);
                             }
                             var cods = new { records = recs, userids, question = questionRecords, urecord = surveyRecords };
                             //问卷整体情况
@@ -424,11 +424,11 @@ namespace TEAMModelOS.FunctionV4
 
             catch (CosmosException e)
             {
-                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-CosmosDB异常{e.StackTrace}{e.Message}\n{e.Status}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-CosmosDB异常{e.Message}\n{e.StackTrace}\n{e.Status}", GroupNames.醍摩豆服務運維群組);
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}问卷调查{ex.Message}\n{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}问卷调查{ex.Message}\n{ex.StackTrace}\n", GroupNames.醍摩豆服務運維群組);
 
             }
         }

+ 2 - 2
TEAMModelOS.FunctionV4/CosmosDB/TriggerVote.cs

@@ -359,11 +359,11 @@ namespace TEAMModelOS.FunctionV4
             }
             catch (CosmosException e)
             {
-                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-CosmosDB异常{e.StackTrace}{e.Message}\n{e.Status}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-CosmosDB异常{e.Message}\n{e.StackTrace}\n{e.Status}", GroupNames.醍摩豆服務運維群組);
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}投票活动异常{ex.Message}{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}投票活动异常{ex.Message}\n{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
             }
 
         }

+ 8 - 8
TEAMModelOS.FunctionV4/HttpTrigger/ScsYxptApis.cs

@@ -74,7 +74,7 @@ namespace TEAMModelOS.FunctionV4.HttpTrigger
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")},IES5.ScApisService:GetProjectInfoByTrainComID\n{ex.Message}{ex.StackTrace}\n{result.ToJsonString()}\n{data}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")},IES5.ScApisService:GetProjectInfoByTrainComID\n{ex.Message}\n{ex.StackTrace}\n{result.ToJsonString()}\n{data}", GroupNames.醍摩豆服務運維群組);
                 await response.WriteAsJsonAsync(new { data = projects.ToJsonString() });
                 return response;
             }
@@ -118,7 +118,7 @@ namespace TEAMModelOS.FunctionV4.HttpTrigger
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")},IES5.ScApisService:GetProjectInfoByTrainComID\n{ex.Message}{ex.StackTrace}\n{result.ToJsonString()}\n{data}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")},IES5.ScApisService:GetProjectInfoByTrainComID\n{ex.Message}\n{ex.StackTrace}\n{result.ToJsonString()}\n{data}", GroupNames.醍摩豆服務運維群組);
                 await response.WriteAsJsonAsync(new { data = projects.ToJsonString() });
                 return response;
             }
@@ -173,7 +173,7 @@ namespace TEAMModelOS.FunctionV4.HttpTrigger
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")},IES5.ScApisService:GetSchoolList\n{ex.Message}{ex.StackTrace}\n{results.ToJsonString()}\n{data}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")},IES5.ScApisService:GetSchoolList\n{ex.Message}\n{ex.StackTrace}\n{results.ToJsonString()}\n{data}", GroupNames.醍摩豆服務運維群組);
                 await response.WriteAsJsonAsync(new { data = scSchools.ToJsonString() });
                 return response;
             }
@@ -227,7 +227,7 @@ namespace TEAMModelOS.FunctionV4.HttpTrigger
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")},IES5.ScApisService:GetTeachersListByProject\n{ex.Message}{ex.StackTrace}\n{results.ToJsonString()}\n{data}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")},IES5.ScApisService:GetTeachersListByProject\n{ex.Message}\n{ex.StackTrace}\n{results.ToJsonString()}\n{data}", GroupNames.醍摩豆服務運維群組);
                 await response.WriteAsJsonAsync(new { data = scTeachers.ToJsonString() });
                 return response;
             }
@@ -299,7 +299,7 @@ namespace TEAMModelOS.FunctionV4.HttpTrigger
             }
             catch (Exception ex)
             {
-                //await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")},IES5.ScApisService:GetSchoolDiagnosis\n{ex.Message}{ex.StackTrace}\n{results.ToJsonString()}\n{data}", GroupNames.醍摩豆服務運維群組);
+                //await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")},IES5.ScApisService:GetSchoolDiagnosis\n{ex.Message}\n{ex.StackTrace}\n{results.ToJsonString()}\n{data}", GroupNames.醍摩豆服務運維群組);
 
                 if (config.p.IsNotEmpty())
                 {
@@ -381,7 +381,7 @@ namespace TEAMModelOS.FunctionV4.HttpTrigger
                 {
                     foreach (var ps in config.p)
                     {
-                        //await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")},IES5.ScApisService:GetProjectDiagnosis\n{ex.Message}{ex.StackTrace}\n{results.ToJsonString()}\n{data}", GroupNames.醍摩豆服務運維群組);
+                        //await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")},IES5.ScApisService:GetProjectDiagnosis\n{ex.Message}\n{ex.StackTrace}\n{results.ToJsonString()}\n{data}", GroupNames.醍摩豆服務運維群組);
                         List<ScProjectDiagnosis> teacherDiagnoses = await table.FindListByDict<ScProjectDiagnosis>(new Dictionary<string, object> { { "PartitionKey", "ScProjectDiagnosis" }, { "RowKey", $"{ps.pid}" } });
                         if (teacherDiagnoses.IsNotEmpty())
                         {
@@ -452,7 +452,7 @@ namespace TEAMModelOS.FunctionV4.HttpTrigger
             }
             catch (Exception ex)
             {
-                //await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")},IES5.ScApisService:getDiagnosisListByProject_V2\n{ex.Message}{ex.StackTrace}\n{result.ToJsonString()}\n{data}", GroupNames.醍摩豆服務運維群組);
+                //await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")},IES5.ScApisService:getDiagnosisListByProject_V2\n{ex.Message}\n{ex.StackTrace}\n{result.ToJsonString()}\n{data}", GroupNames.醍摩豆服務運維群組);
 
                 List<ScTeacherDiagnosis> teacherDiagnoses = await table.FindListByDict<ScTeacherDiagnosis>(new Dictionary<string, object> { { "PartitionKey", "ScTeacherDiagnosis" }, { "RowKey", $"{pxid}" } });
                 if (teacherDiagnoses.IsNotEmpty())
@@ -506,7 +506,7 @@ namespace TEAMModelOS.FunctionV4.HttpTrigger
             }
             catch (Exception ex)
             {
-                //await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")},IES5.ScApisService:GetSingleTeacherByProject\n{ex.Message}{ex.StackTrace}\n{result.ToJsonString()}\n{data}", GroupNames.醍摩豆服務運維群組);
+                //await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")},IES5.ScApisService:GetSingleTeacherByProject\n{ex.Message}\n{ex.StackTrace}\n{result.ToJsonString()}\n{data}", GroupNames.醍摩豆服務運維群組);
                 await response.WriteAsJsonAsync(new { data = teacher });
                 return response;
             }

+ 43 - 40
TEAMModelOS.FunctionV4/ServiceBus/ActiveTaskTopic.cs

@@ -69,11 +69,11 @@ namespace TEAMModelOS.FunctionV4.ServiceBus
             }
             catch (CosmosException e)
             {
-                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-ServiceBus,ExamBus()-CosmosDB异常{e.Message}\n{e.Status}{e.StackTrace}\n{msg}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-ServiceBus,ExamBus()-CosmosDB异常{e.Message}\n{e.StackTrace}\n{e.Status}\n{msg}", GroupNames.醍摩豆服務運維群組);
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-ServiceBus,ExamBus()\n{ex.Message}\n{ex.StackTrace}\n{msg}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-ServiceBus,ExamBus()\n{ex.Message}\n{ex.StackTrace}\n\n{msg}", GroupNames.醍摩豆服務運維群組);
             }
 
         }
@@ -93,11 +93,11 @@ namespace TEAMModelOS.FunctionV4.ServiceBus
             }
             catch (CosmosException e)
             {
-                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-ServiceBus,VoteBus()-CosmosDB异常{e.Message}\n{e.Status}{e.StackTrace}\n{msg}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-ServiceBus,VoteBus()-CosmosDB异常{e.Message}\n{e.StackTrace}\n{e.Status}\n{msg}", GroupNames.醍摩豆服務運維群組);
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-ServiceBus,VoteBus()\n{ex.Message}\n{ex.StackTrace}\n{msg}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-ServiceBus,VoteBus()\n{ex.Message}\n{ex.StackTrace}\n\n{msg}", GroupNames.醍摩豆服務運維群組);
             }
 
         }
@@ -117,11 +117,11 @@ namespace TEAMModelOS.FunctionV4.ServiceBus
             }
             catch (CosmosException e)
             {
-                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-ServiceBus,Correct()-CosmosDB异常{e.Message}\n{e.Status}{e.StackTrace}\n{msg}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-ServiceBus,Correct()-CosmosDB异常{e.Message}\n{e.StackTrace}\n{e.Status}\n{msg}", GroupNames.醍摩豆服務運維群組);
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-ServiceBus,Correct()\n{ex.Message}\n{ex.StackTrace}\n{msg}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-ServiceBus,Correct()\n{ex.Message}\n{ex.StackTrace}\n\n{msg}", GroupNames.醍摩豆服務運維群組);
             }
 
         }
@@ -142,11 +142,11 @@ namespace TEAMModelOS.FunctionV4.ServiceBus
             }
             catch (CosmosException e)
             {
-                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-ServiceBus,SurveyBus()-CosmosDB异常{e.StackTrace}{e.Message}\n{e.Status}\n{msg}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-ServiceBus,SurveyBus()-CosmosDB异常{e.Message}\n{e.StackTrace}\n{e.Status}\n{msg}", GroupNames.醍摩豆服務運維群組);
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-ServiceBus,SurveyBus()\n{ex.Message}\n{ex.StackTrace}\n{msg}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-ServiceBus,SurveyBus()\n{ex.Message}\n{ex.StackTrace}\n\n{msg}", GroupNames.醍摩豆服務運維群組);
             }
         }
         [Function("Homework")]
@@ -165,11 +165,11 @@ namespace TEAMModelOS.FunctionV4.ServiceBus
             }
             catch (CosmosException e)
             {
-                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-ServiceBus,Homework()-CosmosDB异常{e.StackTrace}{e.Message}{e.StackTrace}\n{e.Status}\n{msg}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-ServiceBus,Homework()-CosmosDB异常{e.Message}\n{e.StackTrace}\n{e.Status}\n{msg}", GroupNames.醍摩豆服務運維群組);
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-ServiceBus,Homework()\n{ex.Message}\n{ex.StackTrace}\n{msg}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-ServiceBus,Homework()\n{ex.Message}\n{ex.StackTrace}\n\n{msg}", GroupNames.醍摩豆服務運維群組);
             }
 
         }
@@ -191,11 +191,11 @@ namespace TEAMModelOS.FunctionV4.ServiceBus
             }
             catch (CosmosException e)
             {
-                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-ServiceBus,Study()-CosmosDB异常{e.StackTrace}{e.Message}\n{e.Status}\n{msg}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-ServiceBus,Study()-CosmosDB异常{e.Message}\n{e.StackTrace}\n{e.Status}\n{msg}", GroupNames.醍摩豆服務運維群組);
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-ServiceBus,Study()\n{ex.Message}\n{ex.StackTrace}\n{msg}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-ServiceBus,Study()\n{ex.Message}\n{ex.StackTrace}\n\n{msg}", GroupNames.醍摩豆服務運維群組);
             }
 
         }
@@ -215,11 +215,11 @@ namespace TEAMModelOS.FunctionV4.ServiceBus
             }
             catch (CosmosException e)
             {
-                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-ServiceBus,ExamLite()-CosmosDB异常{e.StackTrace}{e.Message}\n{e.Status}\n{msg}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-ServiceBus,ExamLite()-CosmosDB异常{e.Message}\n{e.StackTrace}\n{e.Status}\n{msg}", GroupNames.醍摩豆服務運維群組);
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-ServiceBus,ExamLite()\n{ex.Message}\n{ex.StackTrace}\n{msg}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-ServiceBus,ExamLite()\n{ex.Message}\n{ex.StackTrace}\n\n{msg}", GroupNames.醍摩豆服務運維群組);
             }
 
         }
@@ -282,7 +282,7 @@ namespace TEAMModelOS.FunctionV4.ServiceBus
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-ServiceBus,Blob()\n{ex.Message}\n{ex.StackTrace}\n{msg}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-ServiceBus,Blob()\n{ex.Message}\n{ex.StackTrace}\n\n{msg}", GroupNames.醍摩豆服務運維群組);
             }
         }
 
@@ -475,11 +475,11 @@ namespace TEAMModelOS.FunctionV4.ServiceBus
             }
             catch (CosmosException ex)
             {
-                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-研修数据变更,重新统计-TeacherTrainChange\n{msg}\n{ex.Message}\n{ex.StackTrace}CosmosException{ex.Status}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-研修数据变更,重新统计-TeacherTrainChange\n{msg}\n{ex.Message}\n{ex.StackTrace}\nCosmosException{ex.Status}", GroupNames.醍摩豆服務運維群組);
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-研修数据变更,重新统计-TeacherTrainChange\n{msg}\n{ex.Message}\n{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-研修数据变更,重新统计-TeacherTrainChange\n{msg}\n{ex.Message}\n{ex.StackTrace}\n", GroupNames.醍摩豆服務運維群組);
             }
         }
 
@@ -529,7 +529,7 @@ namespace TEAMModelOS.FunctionV4.ServiceBus
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-GroupChange-GroupChange\n{ex.Message}\n{ex.StackTrace}\n{msg}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-GroupChange-GroupChange\n{ex.Message}\n{ex.StackTrace}\n\n{msg}", GroupNames.醍摩豆服務運維群組);
             }
         }
         [Function("ItemCond")]
@@ -594,11 +594,11 @@ namespace TEAMModelOS.FunctionV4.ServiceBus
             }
             catch (CosmosException ex)
             {
-                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-ServiceBus,ItemCond()\n{ex.Message}\n{ex.StackTrace}\n{msg}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-ServiceBus,ItemCond()\n{ex.Message}\n{ex.StackTrace}\n\n{msg}", GroupNames.醍摩豆服務運維群組);
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-ServiceBus,ItemCond()\n{ex.Message}\n{ex.StackTrace}\n{msg}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-ServiceBus,ItemCond()\n{ex.Message}\n{ex.StackTrace}\n\n{msg}", GroupNames.醍摩豆服務運維群組);
             }
         }
 
@@ -759,11 +759,11 @@ namespace TEAMModelOS.FunctionV4.ServiceBus
             }
             catch (CosmosException ex)
             {
-                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-ServiceBus,Product()\n{ex.Message}\n{ex.StackTrace}\n{msg}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-ServiceBus,Product()\n{ex.Message}\n{ex.StackTrace}\n\n{msg}", GroupNames.醍摩豆服務運維群組);
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-ServiceBus,Product()\n{ex.Message}\n{ex.StackTrace}\n{msg}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-ServiceBus,Product()\n{ex.Message}\n{ex.StackTrace}\n\n{msg}", GroupNames.醍摩豆服務運維群組);
             }
         }
 
@@ -807,7 +807,7 @@ namespace TEAMModelOS.FunctionV4.ServiceBus
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-Blob复制文件-CopyStandardFile\n{ex.Message}\n{ex.StackTrace}\n{msg}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-Blob复制文件-CopyStandardFile\n{ex.Message}\n{ex.StackTrace}\n\n{msg}", GroupNames.醍摩豆服務運維群組);
             }
         }
         /// <summary>
@@ -941,7 +941,7 @@ namespace TEAMModelOS.FunctionV4.ServiceBus
                                 }
                                 catch (Exception ex)
                                 {
-                                    // await _dingDing.SendBotMsg($"{_option.Location}/LessonRecordEvent/课堂记录更新课堂时长出错records/{_lessonId}/Record/.Recording.json\n{ex.Message}{ex.StackTrace}{msg}", GroupNames.醍摩豆服務運維群組);
+                                    // await _dingDing.SendBotMsg($"{_option.Location}/LessonRecordEvent/课堂记录更新课堂时长出错records/{_lessonId}/Record/.Recording.json\n{ex.Message}\n{ex.StackTrace}{msg}", GroupNames.醍摩豆服務運維群組);
                                 }
                                 isReplace = true;
                                 break;
@@ -996,6 +996,8 @@ namespace TEAMModelOS.FunctionV4.ServiceBus
                                         lessonRecord.examCount = lessonBase.summary.examCount;
                                         lessonRecord.totalInteractPoint = lessonBase.summary.totalInteractPoint;
                                     }
+                                    //有上传 base.josn.
+                                    lessonRecord.upload =1;
                                     // await _dingDing.SendBotMsg($"{_option.Location},课堂id:{_lessonId} 更新完成", GroupNames.醍摩豆服務運維群組);
 
                                     LessonService.DoAutoDeleteSchoolLessonRecord(lessonRecord, scope, client, school, tmdid,   teacher, _notificationService, _serviceBus, _azureStorage, _configuration);
@@ -1023,7 +1025,7 @@ namespace TEAMModelOS.FunctionV4.ServiceBus
                                 }
                                 catch (Exception ex)
                                 {
-                                    // await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}课程读取base.json,{_lessonId}\n{ex.Message}\n{ex.StackTrace}\n{lessonRecord.ToJsonString()}", GroupNames.醍摩豆服務運維群組);
+                                    // await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}课程读取base.json,{_lessonId}\n{ex.Message}\n{ex.StackTrace}\n\n{lessonRecord.ToJsonString()}", GroupNames.醍摩豆服務運維群組);
                                 }
                                 break;
                             //更新 时间线
@@ -1107,6 +1109,7 @@ namespace TEAMModelOS.FunctionV4.ServiceBus
                                 //处理课堂选用的课程信息
                               
                                 lessonRecord.show = teacher.lessonShow;
+                                lessonRecord.upload = 0;
                                 if (!string.IsNullOrEmpty(lessonRecord.courseId))
                                 {
                                     Course course = null;
@@ -1134,7 +1137,7 @@ namespace TEAMModelOS.FunctionV4.ServiceBus
                                     }
                                     catch (Exception ex)
                                     {
-                                        await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-查询课程-CosmosDB异常{ex.Message}\n{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
+                                        await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-查询课程-CosmosDB异常{ex.Message}\n{ex.StackTrace}\n", GroupNames.醍摩豆服務運維群組);
                                     }
                                     /*catch (CosmosException ex) when (ex.Status != 404)
                                     {
@@ -1212,7 +1215,7 @@ namespace TEAMModelOS.FunctionV4.ServiceBus
                                         }
                                         catch (Exception ex)
                                         {
-                                            await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-处理课堂记录的-年级处理异常{ex.Message}\n{ex.StackTrace}\n{lessonRecord.ToJsonString()}", GroupNames.醍摩豆服務運維群組);
+                                            await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-处理课堂记录的-年级处理异常{ex.Message}\n{ex.StackTrace}\n\n{lessonRecord.ToJsonString()}", GroupNames.醍摩豆服務運維群組);
                                         }
                                     }
                                     lessonRecord.grade = grades.ToList();
@@ -1359,7 +1362,7 @@ namespace TEAMModelOS.FunctionV4.ServiceBus
                                 }
                                 catch (Exception e)
                                 {
-                                    await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-处理课堂记录的-CosmosDB异常{e.Message}\n{e.StackTrace}\n{lessonRecord.ToJsonString()}", GroupNames.醍摩豆服務運維群組);
+                                    await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-处理课堂记录的-CosmosDB异常{e.Message}\n{e.StackTrace}\n\n{lessonRecord.ToJsonString()}", GroupNames.醍摩豆服務運維群組);
                                 }
 
                                 msgs.Add(update);
@@ -1380,11 +1383,11 @@ namespace TEAMModelOS.FunctionV4.ServiceBus
             }
             catch (CosmosException e)
             {
-                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-更新课堂记录出错-CosmosDB异常{e.Message}\n{e.StackTrace}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-更新课堂记录出错-CosmosDB异常{e.Message}\n{e.StackTrace}\n", GroupNames.醍摩豆服務運維群組);
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-更新课堂记录出错\n{ex.Message}\n{ex.StackTrace}\n{data}\n{code}\n{updates}\n", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-更新课堂记录出错\n{ex.Message}\n{ex.StackTrace}\n\n{data}\n{code}\n{updates}\n", GroupNames.醍摩豆服務運維群組);
             }
         }
         [Function("LessonRecordExpire")]
@@ -1474,7 +1477,7 @@ namespace TEAMModelOS.FunctionV4.ServiceBus
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-ServiceBus,LessonRecordExpire()\n{ex.Message}\n{ex.StackTrace}\n{msg}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-ServiceBus,LessonRecordExpire()\n{ex.Message}\n{ex.StackTrace}\n\n{msg}", GroupNames.醍摩豆服務運維群組);
             }
 
         }
@@ -1539,7 +1542,7 @@ namespace TEAMModelOS.FunctionV4.ServiceBus
                             else
                             {
 
-                                await _dingDing.SendBotMsg($"OS,{ Environment.GetEnvironmentVariable("Option:Location")},CourseServiceBus -CosmosDB异常\n{ex.Message}{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
+                                await _dingDing.SendBotMsg($"OS,{ Environment.GetEnvironmentVariable("Option:Location")},CourseServiceBus -CosmosDB异常\n{ex.Message}\n{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
                             }
                         }
                     }
@@ -1576,7 +1579,7 @@ namespace TEAMModelOS.FunctionV4.ServiceBus
                             else
                             {
 
-                                await _dingDing.SendBotMsg($"OS,{ Environment.GetEnvironmentVariable("Option:Location")},CourseServiceBus -CosmosDB异常\n{ex.Message}{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
+                                await _dingDing.SendBotMsg($"OS,{ Environment.GetEnvironmentVariable("Option:Location")},CourseServiceBus -CosmosDB异常\n{ex.Message}\n{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
                             }
                         }
                     }
@@ -1620,7 +1623,7 @@ namespace TEAMModelOS.FunctionV4.ServiceBus
                             else
                             {
 
-                                await _dingDing.SendBotMsg($"OS,{ Environment.GetEnvironmentVariable("Option:Location")},CourseServiceBus -CosmosDB异常\n{ex.Message}{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
+                                await _dingDing.SendBotMsg($"OS,{ Environment.GetEnvironmentVariable("Option:Location")},CourseServiceBus -CosmosDB异常\n{ex.Message}\n{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
                             }
                         }
                     }
@@ -1658,7 +1661,7 @@ namespace TEAMModelOS.FunctionV4.ServiceBus
                             else
                             {
 
-                                await _dingDing.SendBotMsg($"OS,{ Environment.GetEnvironmentVariable("Option:Location")},CourseServiceBus -CosmosDB异常\n{ex.Message}{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
+                                await _dingDing.SendBotMsg($"OS,{ Environment.GetEnvironmentVariable("Option:Location")},CourseServiceBus -CosmosDB异常\n{ex.Message}\n{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
                             }
                         }
                     }
@@ -1693,7 +1696,7 @@ namespace TEAMModelOS.FunctionV4.ServiceBus
                         }
                         catch (CosmosException ex)
                         {
-                            //await _dingDing.SendBotMsg($"OS,{ Environment.GetEnvironmentVariable("Option:Location")},CourseServiceBus -CosmosDB异常\n{ex.Message}{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
+                            //await _dingDing.SendBotMsg($"OS,{ Environment.GetEnvironmentVariable("Option:Location")},CourseServiceBus -CosmosDB异常\n{ex.Message}\n{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
                         }
                     }
                     foreach (var tmd in delTmdidsCls)
@@ -1720,7 +1723,7 @@ namespace TEAMModelOS.FunctionV4.ServiceBus
                         }
                         catch (CosmosException ex)
                         {
-                            await _dingDing.SendBotMsg($"OS,{ Environment.GetEnvironmentVariable("Option:Location")},CourseServiceBus -CosmosDB异常\n{ex.Message}{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
+                            await _dingDing.SendBotMsg($"OS,{ Environment.GetEnvironmentVariable("Option:Location")},CourseServiceBus -CosmosDB异常\n{ex.Message}\n{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
                         }
                     }
                 }
@@ -1753,7 +1756,7 @@ namespace TEAMModelOS.FunctionV4.ServiceBus
                         catch (CosmosException ex)
                         {
                             continue;
-                            // await _dingDing.SendBotMsg($"OS,{ Environment.GetEnvironmentVariable("Option:Location")},CourseServiceBus -CosmosDB异常\n{ex.Message}{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
+                            // await _dingDing.SendBotMsg($"OS,{ Environment.GetEnvironmentVariable("Option:Location")},CourseServiceBus -CosmosDB异常\n{ex.Message}\n{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
                         }
                     }
                     foreach (var tmd in delTmdidsCls)
@@ -1780,14 +1783,14 @@ namespace TEAMModelOS.FunctionV4.ServiceBus
                         }
                         catch (CosmosException ex)
                         {
-                            await _dingDing.SendBotMsg($"OS,{ Environment.GetEnvironmentVariable("Option:Location")},CourseServiceBus -CosmosDB异常\n{ex.Message}{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
+                            await _dingDing.SendBotMsg($"OS,{ Environment.GetEnvironmentVariable("Option:Location")},CourseServiceBus -CosmosDB异常\n{ex.Message}\n{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
                         }
                     }
                 }
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"OS,{ Environment.GetEnvironmentVariable("Option:Location")},CourseServiceBus -Course\n{ex.Message}{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"OS,{ Environment.GetEnvironmentVariable("Option:Location")},CourseServiceBus -Course\n{ex.Message}\n{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
             }
         }
     }

+ 4 - 4
TEAMModelOS.SDK/DI/AzureStorage/AzureStorageBlobExtensions.cs

@@ -223,7 +223,7 @@ namespace TEAMModelOS.SDK.DI
                         }
                         catch (RequestFailedException ex)
                         {
-                            await _dingDing.SendBotMsg($"{ex.StackTrace}/{ex.Message}", GroupNames.醍摩豆服務運維群組);
+                            await _dingDing.SendBotMsg($"/{ex.Message}\n{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
                             return true;
                         }
                         catch (Exception ex)
@@ -260,7 +260,7 @@ namespace TEAMModelOS.SDK.DI
             }
             catch(Exception ex )
             {
-                await _dingDing.SendBotMsg($"文件删除异常{ex.Message}{ex.StackTrace}{prefixs.ToJsonString()}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"文件删除异常{ex.Message}\n{ex.StackTrace}{prefixs.ToJsonString()}", GroupNames.醍摩豆服務運維群組);
                 return false;
             }
         }
@@ -314,7 +314,7 @@ namespace TEAMModelOS.SDK.DI
             }
             catch (Exception ex)
             {
-                _ = dingDing.SendBotMsg($"日志保存失败:{ex.Message},{ex.StackTrace},{log.ToJsonString()}", GroupNames.醍摩豆服務運維群組);
+                _ = dingDing.SendBotMsg($"日志保存失败:{ex.Message}\n{ex.StackTrace},,{log.ToJsonString()}", GroupNames.醍摩豆服務運維群組);
             }
         }
         /// <summary>
@@ -441,7 +441,7 @@ namespace TEAMModelOS.SDK.DI
             }
             catch (Exception ex)
             {
-                _ = dingDing.SendBotMsg($"BI日志保存失败:{ex.Message},{ex.StackTrace},{biLog.ToJsonString()}", GroupNames.醍摩豆服務運維群組);
+                _ = dingDing.SendBotMsg($"BI日志保存失败:{ex.Message}\n{ex.StackTrace},,{biLog.ToJsonString()}", GroupNames.醍摩豆服務運維群組);
             }
         }
     }

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

@@ -196,6 +196,10 @@ namespace TEAMModelOS.SDK.Models
         /// 设置强制保留的 =1 ,不会被自动清理的。但是可以被手动清理。
         /// </summary>
         public int save { get; set; } = -1;
+        /// <summary>
+        /// 默认未上传
+        /// </summary>
+        public int upload { get; set; }
     }
     public class LessonTC
     {

+ 17 - 0
TEAMModelOS.SDK/Models/Cosmos/Common/LessonStudentRecord.cs

@@ -0,0 +1,17 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace TEAMModelOS.SDK.Models.Cosmos.Common
+{    
+    /// <summary>
+    /// 课堂记录简要信息。
+    /// </summary>
+    public class LessonStudentRecord : CosmosEntity
+    {
+        // id  课例id ,
+        //code  LessonStudentRecord,
+    }
+}

+ 4 - 4
TEAMModelOS.SDK/Models/Service/ActivityService.cs

@@ -255,11 +255,11 @@ namespace TEAMModelOS.SDK
             }
             catch (CosmosException e)
             {
-                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-GroupListService-FixActivity\n{e.Message}\n{e.StackTrace}CosmosException{e.Status}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-GroupListService-FixActivity\n{e.Message}\n{e.StackTrace}\nCosmosException{e.Status}", GroupNames.醍摩豆服務運維群組);
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-GroupListService-FixActivity\n{ex.Message}{ex.StackTrace}{groupChange.ToJsonString()}{type}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-GroupListService-FixActivity\n{ex.Message}\n{ex.StackTrace}{groupChange.ToJsonString()}{type}", GroupNames.醍摩豆服務運維群組);
             }
         }
         public static async Task FixStuCourse(CosmosClient client, DingDing _dingDing, GroupChange groupChange)
@@ -578,7 +578,7 @@ namespace TEAMModelOS.SDK
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-OS,TriggerStuActivity-SaveStuActivity\n{ex.Message}\n{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-OS,TriggerStuActivity-SaveStuActivity\n{ex.Message}\n{ex.StackTrace}\n", GroupNames.醍摩豆服務運維群組);
             }
             return "";
         }
@@ -857,7 +857,7 @@ namespace TEAMModelOS.SDK
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-OS,TriggerStuActivity-DeleteStuActivity\n{ex.Message}\n{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-OS,TriggerStuActivity-DeleteStuActivity\n{ex.Message}\n{ex.StackTrace}\n", GroupNames.醍摩豆服務運維群組);
             }
             return "";
         }

+ 1 - 1
TEAMModelOS.SDK/Models/Service/BatchCopyFileService.cs

@@ -75,7 +75,7 @@ namespace TEAMModelOS.SDK.Models.Service
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-Batch-CopyFile \n {ex.Message}{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-Batch-CopyFile \n {ex.Message}\n{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
                 return -1;
             }
 

+ 1 - 1
TEAMModelOS.SDK/Models/Service/Common/ActivityStudentService.cs

@@ -203,7 +203,7 @@ namespace TEAMModelOS.SDK.Services
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"OS,{_option.Location},common/delete-activity\n{ex.Message}{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"OS,{_option.Location},common/delete-activity\n{ex.Message}\n{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
                 throw new Exception(ex.StackTrace);
             }
             if (msgid == 1 && vote != null)

+ 1 - 1
TEAMModelOS.SDK/Models/Service/Common/BlobService.cs

@@ -88,7 +88,7 @@ namespace TEAMModelOS.SDK.Services
             }
             catch (Exception ex)
             {
-                //await _dingDing.SendBotMsg($"CoreAPI2,{_option.Location},Channel/Create()\n{ex.Message}", GroupNames.醍摩豆服務運維群組);
+                //await _dingDing.SendBotMsg($"CoreAPI2,{_option.Location},Channel/Create()\n{ex.Message}\n{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
                 return result;
             }
         }

+ 1 - 1
TEAMModelOS.SDK/Models/Service/Common/TeacherService.cs

@@ -249,7 +249,7 @@ namespace TEAMModelOS.Services
             }
             catch (Exception ex)
             {
-                throw new Exception($"{ex.Message}{ex.StackTrace}");
+                throw new Exception($"{ex.Message}\n{ex.StackTrace}");
             }
             //私人課程
             List<object> courses = new List<object>();

+ 1 - 1
TEAMModelOS.SDK/Models/Service/ExamService.cs

@@ -97,7 +97,7 @@ namespace TEAMModelOS.SDK.Models.Service
             }
             catch (Exception e)
             {
-                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-ExamService-saveMore\n{e.Message}{e.StackTrace}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-ExamService-saveMore\n{e.Message}\n{e.StackTrace}", GroupNames.醍摩豆服務運維群組);
                 return "";
 
             }

+ 4 - 4
TEAMModelOS.SDK/Models/Service/FixDataService.cs

@@ -474,7 +474,7 @@ namespace TEAMModelOS.SDK.Models.Service
                                 }
                                 catch (Exception ex)
                                 {
-                                    await _dingDing.SendBotMsg($"OS,{_option.Location} /fix-data/fix-publish \n {ex.Message}{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
+                                    await _dingDing.SendBotMsg($"OS,{_option.Location} /fix-data/fix-publish \n {ex.Message}\n{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
                                 }
 
                             }
@@ -500,7 +500,7 @@ namespace TEAMModelOS.SDK.Models.Service
 
 
             } catch (Exception e) {
-                await _dingDing.SendBotMsg($"OS,{_option.Location} /fix-data/fix-publish \n {e.Message}{e.StackTrace}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"OS,{_option.Location} /fix-data/fix-publish \n {e.Message}\n{e.StackTrace}", GroupNames.醍摩豆服務運維群組);
             }
             
             /*foreach (var item in exams) {
@@ -609,7 +609,7 @@ namespace TEAMModelOS.SDK.Models.Service
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"OS,{_option.Location} /fix-data/fix-classIds \n {ex.Message}{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"OS,{_option.Location} /fix-data/fix-classIds \n {ex.Message}\n{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
             }
 
             return ids;
@@ -638,7 +638,7 @@ namespace TEAMModelOS.SDK.Models.Service
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"OS,{_option.Location} /fix-data/fix-type \n {ex.Message}{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"OS,{_option.Location} /fix-data/fix-type \n {ex.Message}\n{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
             }
             var ids = info.Select(x => x.id).ToList();
             return ids;

+ 2 - 2
TEAMModelOS.SDK/Models/Service/GroupListService.cs

@@ -1047,7 +1047,7 @@ namespace TEAMModelOS.SDK
                     }
                     catch (Exception ex)
                     {
-                        await _dingDing.SendBotMsg($"{_coreAPIHttpService.options.Get("Default").location}用户转换失败:{_coreAPIHttpService.options.Get("Default").url}{json}\n {ex.Message}{ex.StackTrace}{tmdids.Select(x => x.id).ToJsonString()}", GroupNames.醍摩豆服務運維群組);
+                        await _dingDing.SendBotMsg($"{_coreAPIHttpService.options.Get("Default").location}用户转换失败:{_coreAPIHttpService.options.Get("Default").url}{json}\n {ex.Message}\n{ex.StackTrace}{tmdids.Select(x => x.id).ToJsonString()}", GroupNames.醍摩豆服務運維群組);
                     }
                 }
                
@@ -1117,7 +1117,7 @@ namespace TEAMModelOS.SDK
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"{_coreAPIHttpService.options.Get("Default").location},GetGroupListMemberInfo()\n{ex.Message}{ex.StackTrace}\n", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"{_coreAPIHttpService.options.Get("Default").location},GetGroupListMemberInfo()\n{ex.Message}\n{ex.StackTrace}\n", GroupNames.醍摩豆服務運維群組);
             }
             return (null, null);
         }

+ 1 - 1
TEAMModelOS.SDK/Models/Service/HomeworkService.cs

@@ -61,7 +61,7 @@ namespace TEAMModelOS.SDK.Models.Service
             }
             catch (Exception e)
             {
-                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-HomeworkService-saveMore\n{e.Message}{e.StackTrace}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-HomeworkService-saveMore\n{e.Message}\n{e.StackTrace}", GroupNames.醍摩豆服務運維群組);
                 return "";
 
             }

+ 1 - 1
TEAMModelOS.SDK/Models/Service/LessonService.cs

@@ -569,7 +569,7 @@ namespace TEAMModelOS.SDK.Models.Service
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-LessonCount-FixLessonCount\n{ex.Message}{ex.StackTrace}{data.ToJsonString()}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-LessonCount-FixLessonCount\n{ex.Message}\n{ex.StackTrace}{data.ToJsonString()}", GroupNames.醍摩豆服務運維群組);
             }
         }
     }

+ 1 - 1
TEAMModelOS.SDK/Models/Service/SchoolService.cs

@@ -399,7 +399,7 @@ namespace TEAMModelOS.SDK
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"{ex.Message}\n{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"{ex.Message}\n{ex.StackTrace}\n", GroupNames.醍摩豆服務運維群組);
             }
             string a_z = "abcdefghijklmnopqrstuvwxyz";
             var data = schools.GroupBy(x => x.id).Select(x => new { key = x.Key, more = x.ToList().Count > 2, count = x.ToList().Count, list = x.ToList() }).ToList();

+ 21 - 21
TEAMModelOS.SDK/Models/Service/StudentService.cs

@@ -870,7 +870,7 @@ namespace TEAMModelOS.SDK
             catch (Exception ex)
             {
                 await _dingDing.SendBotMsg(
-                            $"IES5,{_option.Location},StudentController/upsertStudents()\nex:{ex.Message}{ex.StackTrace}",
+                            $"IES5,{_option.Location},StudentController/upsertStudents()\nex:{ex.Message}\n{ex.StackTrace}",
                             GroupNames.醍摩豆服務運維群組);
             }
             return (null, null, null);
@@ -947,7 +947,7 @@ namespace TEAMModelOS.SDK
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"IES5,{_option.Location},StudentController/createStudent()\n{ex.Message}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"IES5,{_option.Location},StudentController/createStudent()\n{ex.Message}\n{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
                 return false;
             }
         }
@@ -1016,11 +1016,11 @@ namespace TEAMModelOS.SDK
             }
             catch (CosmosException ex)
             {
-                await _dingDing.SendBotMsg($"IES5,{_option.Location},StudentController/createClassInfo()\n{ex.Message}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"IES5,{_option.Location},StudentController/createClassInfo()\n{ex.Message}\n{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"IES5,{_option.Location},StudentController/createClassInfo()\n{ex.Message}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"IES5,{_option.Location},StudentController/createClassInfo()\n{ex.Message}\n{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
             }
             return (null, null, null, null, null, 0);
         }
@@ -1162,11 +1162,11 @@ namespace TEAMModelOS.SDK
             }
             catch (CosmosException ex)
             {
-                await _dingDing.SendBotMsg($"IES5,{_option.Location},StudentController/getStudents()\n{ex.Message}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"IES5,{_option.Location},StudentController/getStudents()\n{ex.Message}\n{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"IES5,{_option.Location},StudentController/getStudents()\n{ex.Message}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"IES5,{_option.Location},StudentController/getStudents()\n{ex.Message}\n{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
             }
             return (null, null);
         }
@@ -1330,7 +1330,7 @@ namespace TEAMModelOS.SDK
 
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"IES5,{_option.Location},StudentController/getStudents()\n{ex.Message},{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"IES5,{_option.Location},StudentController/getStudents()\n{ex.Message}\n{ex.StackTrace},", GroupNames.醍摩豆服務運維群組);
             }
             return null;
         }
@@ -1368,7 +1368,7 @@ namespace TEAMModelOS.SDK
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"IES5,{_option.Location},StudentController/getClassStudentAsync()\n{ex.Message}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"IES5,{_option.Location},StudentController/getClassStudentAsync()\n{ex.Message}\n{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
             }
             return null;
         }
@@ -1453,11 +1453,11 @@ namespace TEAMModelOS.SDK
             }
             catch (CosmosException ex)
             {
-                await _dingDing.SendBotMsg($"IES5,{_option.Location},StudentController/deleteStudents()\n{ex.Message}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"IES5,{_option.Location},StudentController/deleteStudents()\n{ex.Message}\n{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"IES5,{_option.Location},StudentController/deleteStudents()\n{ex.Message}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"IES5,{_option.Location},StudentController/deleteStudents()\n{ex.Message}\n{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
             }
             return sucIds;
         }
@@ -1601,11 +1601,11 @@ namespace TEAMModelOS.SDK
             }
             catch (CosmosException ex)
             {
-                await _dingDing.SendBotMsg($"IES5,{_option.Location},StudentController/getClassInfoUseId()\n{ex.Message}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"IES5,{_option.Location},StudentController/getClassInfoUseId()\n{ex.Message}\n{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"IES5,{_option.Location},StudentController/getClassInfoUseId()\n{ex.Message}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"IES5,{_option.Location},StudentController/getClassInfoUseId()\n{ex.Message}\n{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
             }
             return null;
         }
@@ -1640,11 +1640,11 @@ namespace TEAMModelOS.SDK
             }
             catch (CosmosException ex)
             {
-                await _dingDing.SendBotMsg($"IES5,{_option.Location},StudentController/getClassInfoUseId()\n{ex.Message}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"IES5,{_option.Location},StudentController/getClassInfoUseId()\n{ex.Message}\n{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"IES5,{_option.Location},StudentController/getClassInfoUseId()\n{ex.Message}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"IES5,{_option.Location},StudentController/getClassInfoUseId()\n{ex.Message}\n{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
             }
             return null;
         }
@@ -2030,12 +2030,12 @@ namespace TEAMModelOS.SDK
                                     }
                                     catch (CosmosException ex)
                                     {
-                                        await _dingDing.SendBotMsg($"IES5,{_option.Location},StudentController/updateStudents()\n{ex.Message}{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
+                                        await _dingDing.SendBotMsg($"IES5,{_option.Location},StudentController/updateStudents()\n{ex.Message}\n{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
                                         errorIds.Add(id);
                                     }
                                     catch (Exception ex)
                                     {
-                                        await _dingDing.SendBotMsg($"IES5,{_option.Location},StudentController/updateStudents()\n{ex.Message}{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
+                                        await _dingDing.SendBotMsg($"IES5,{_option.Location},StudentController/updateStudents()\n{ex.Message}\n{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
                                         errorIds.Add(id);
                                     }
                                 }
@@ -2051,11 +2051,11 @@ namespace TEAMModelOS.SDK
             }
             catch (CosmosException ex)
             {
-                await _dingDing.SendBotMsg($"IES5,{_option.Location},StudentController/updateStudents()\n{ex.Message}{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"IES5,{_option.Location},StudentController/updateStudents()\n{ex.Message}\n{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"IES5,{_option.Location},StudentController/updateStudents()\n{ex.Message}{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"IES5,{_option.Location},StudentController/updateStudents()\n{ex.Message}\n{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
             }
             return (null, null, null, null, null, null);
         }
@@ -2095,11 +2095,11 @@ namespace TEAMModelOS.SDK
             }
             catch (AggregateException ex)
             {
-                await _dingDing.SendBotMsg($"IES5,{_option.Location},StudentController/createStudents()\n{ex.Message}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"IES5,{_option.Location},StudentController/createStudents()\n{ex.Message}\n{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"IES5,{_option.Location},StudentController/createStudents()\n{ex.Message}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"IES5,{_option.Location},StudentController/createStudents()\n{ex.Message}\n{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
             }
             return (false, existId);
         }
@@ -2185,7 +2185,7 @@ namespace TEAMModelOS.SDK
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"IES5,{_option.Location},StudentController/getGrades()\n{ex.Message}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"IES5,{_option.Location},StudentController/getGrades()\n{ex.Message}\n{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
                 return null;
             }
         }

+ 1 - 1
TEAMModelOS.SDK/Models/Service/SurveyService.cs

@@ -47,7 +47,7 @@ namespace TEAMModelOS.SDK.Models.Service
             }
             catch (Exception e)
             {
-                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-SurveyService-saveMore\n{e.Message}{e.StackTrace}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-SurveyService-saveMore\n{e.Message}\n{e.StackTrace}", GroupNames.醍摩豆服務運維群組);
                 return "";
 
             }

+ 1 - 1
TEAMModelOS.SDK/Models/Service/Third/ThirdApisService.cs

@@ -58,7 +58,7 @@ namespace TEAMModelOS.SDK
                 }
                 return scsResult;
             } catch (Exception ex ) {
-                throw new Exception($"{ex.Message}\n{ex.StackTrace}\n{data.ToJsonString()}\n{url}\n {Code}\n{PassKey}\n{privateKey}\n{response?.StatusCode}\n{response?.Content}");
+                throw new Exception($"{ex.Message}\n{ex.StackTrace}\n\n{data.ToJsonString()}\n{url}\n {Code}\n{PassKey}\n{privateKey}\n{response?.StatusCode}\n{response?.Content}");
             }
             
         }

+ 1 - 1
TEAMModelOS.SDK/Models/Service/Third/ThirdService.cs

@@ -187,7 +187,7 @@ namespace TEAMModelOS.SDK.Models
                     }
                     catch (Exception ex)
                     {
-                        await _dingDing.SendBotMsg($"OS\n自动加入学校,加入研修名单出现异常:{ex.StackTrace},{ex.Message}GetScTeacher", GroupNames.醍摩豆服務運維群組);
+                        await _dingDing.SendBotMsg($"OS\n自动加入学校,加入研修名单出现异常:,{ex.Message}\n{ex.StackTrace}GetScTeacher", GroupNames.醍摩豆服務運維群組);
                     }
                 }
             }

+ 14 - 3
TEAMModelOS/ClientApp/src/assets/student-web/component_styles/paper-test.css

@@ -431,10 +431,21 @@
 }
 .lesson-test-pop .checkAnswer {
     margin-top: 30px;
-    min-height: 600px;
+    /* min-height: 600px; */
 }
 
-
+.lesson-test-pop .ansArea .color-type {
+    display: flex;
+    align-items: center;
+    margin-right: 10px;
+}
+.lesson-test-pop .ansArea .activeBg {
+    height: 12px;
+    width: 20px;
+    border-radius: 5px;
+    display: inline-block;
+    margin-right: 5px;
+}
 
 .lesson-test-pop input[type="text"] {
   width: 100%;
@@ -611,7 +622,7 @@
     }
     .lesson-test-pop .checkAnswer {
         margin-top: 30px;
-        min-height: 300px;
+        /* min-height: 300px; */
     }
     .complete-content {
         width: 35%;

+ 7 - 2
TEAMModelOS/ClientApp/src/common/BaseCanvas.vue

@@ -73,7 +73,7 @@
 				y: "",
 				mouseFrom: {},
 				mouseTo: {},
-				drawType: '', //当前绘制图像的种类
+				drawType: 'pen', //当前绘制图像的种类
 				canvasObjectIndex: 0,
 				textbox: null,
 				rectangleLabel: "warning",
@@ -98,8 +98,9 @@
 			};
 		},
 		created() {
-			console.log(this)
+			
 		},
+
 		watch: {
 			drawType() {
 				this.canvas.selection = !this.drawType;
@@ -124,6 +125,8 @@
 							});
 							this.canvas.add(imgInstance);
 						};
+					}else{
+						this.canvas && this.clear()
 					}
 				},
 				immediate:true
@@ -643,6 +646,8 @@
 				//   opt.e.preventDefault();
 				//   opt.e.stopPropagation();
 				// });
+
+				this.drawTypeChange('pen')
 			})
 			document.onkeydown = e => {
 				// 键盘 delect删除所选元素

+ 112 - 0
TEAMModelOS/ClientApp/src/components/dashboard/art/BaseAwardPie.vue

@@ -0,0 +1,112 @@
+<template>
+  <div id="ArtAwardPie" class="art-echart"></div>
+</template>
+<script>
+export default {
+  data() {
+    return {
+      option: null,
+    }
+  },
+  methods: {
+    doRender(data) {
+      let myChart = this.$echarts.init(document.getElementById('ArtAwardPie'))
+      this.option = {
+        title: {
+          left: 20,
+          top: 20,
+          textStyle: {
+            color: '#FFFFFF',
+            fontSize: 14,
+            fontWight: 400,
+          },
+        },
+        color: ['#2479d0', '#479A4C', '#F17104'],
+        tooltip: {
+          trigger: 'item',
+        },
+        series: [
+          {
+            type: 'pie',
+            radius: '50%',
+            legend: {
+              top: '30%',
+              itemWidth: 24,
+              itemHeight: 9,
+              data: data.map(i => i.name),
+              textStyle: {
+                color: '#fff',
+                fontSize: '12',
+              }
+            },
+            center: ['50%', '50%'],
+            color: ['#FB7B8C', '#9ACB5D', '#FFCE26', '#0066ED', '#0CFDFE', '#FFFFFF'],
+            data: data,
+            labelLine: {
+              normal: {
+                show: true,
+                lineStyle: {
+                  color: '#AEC9F9',
+                  width: 1,
+                },
+              },
+            },
+            label: {
+              normal: {
+                formatter: '{c|{b}} {c}项',
+                rich: {
+                  c: {
+                    fontSize: 12,
+                    color: '#05D5FF',
+                    align: 'left',
+                  },
+                  d: {
+                    fontSize: 12,
+                    color: '#fff',
+                    align: 'left',
+                  },
+                },
+              },
+            },
+          },
+        ],
+      };
+      myChart.clear()
+      myChart.setOption(this.option)
+      window.addEventListener('resize', function () {
+        myChart.resize()
+      })
+    }
+  },
+  watch: {
+    '$store.state.dashboard.artDashboard': {
+      deep: true,
+      immediate: true,
+      handler(n, o) {
+        if (n) {
+          this.$nextTick(() => {
+            let { country, province, city, area, school } = n.awardData[0]
+            let renderData = [
+              { value: country, name: '国家级赛事' },
+              { value: province, name: '省级赛事' },
+              { value: city, name: '市级赛事' },
+              { value: area, name: '区级赛事' },
+              { value: school, name: '校级赛事' },
+            ]
+            this.doRender(renderData)
+          })
+        }
+      }
+    }
+  }
+}
+</script>
+
+<style>
+.art-echart {
+  width: 100%;
+  height: 100%;
+  margin: 0 auto;
+  display: block;
+}
+</style>

+ 261 - 0
TEAMModelOS/ClientApp/src/components/dashboard/art/BaseClassLineBar.vue

@@ -0,0 +1,261 @@
+<template>
+  <div id="ArtClassLineBar" class="art-echart"></div>
+</template>
+<script>
+export default {
+  data() {
+    return {
+      option: null,
+    }
+  },
+  methods: {
+    doRender(data) {
+      let myChart = this.$echarts.init(document.getElementById('ArtClassLineBar'))
+      this.option = {
+        title: {
+          textStyle: {
+            align: 'center',
+            color: '#fff',
+            fontSize: 20,
+          },
+          top: '5%',
+          left: 'center',
+        },
+        tooltip: {
+          trigger: 'axis',
+          axisPointer: { // 坐标轴指示器,坐标轴触发有效
+            type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
+          }
+        },
+        tooltip: {
+          trigger: 'axis',
+          axisPointer: {
+            type: 'shadow'
+          },
+          formatter: function (params) {
+            let result = params[0].name
+            for (let i = 0; i < params.length; i++) {
+              if (i === params.length - 1 || i === params.length - 2) {
+                result += '<br>' + params[i].marker + params[i].seriesName + ':' + (params[i].value) + '%'
+              } else {
+                result += '<br>' + params[i].marker + params[i].seriesName + ':' + (params[i].value)
+              }
+            }
+            return result
+          }
+        },
+        grid: {
+          left: '2%',
+          right: '4%',
+          bottom: '8%',
+          top: '16%',
+          containLabel: true
+        },
+        legend: {
+          data: ['班级平均分', '班级最高分', '优秀率', '及格率'],
+          right: 100,
+          top: 12,
+          textStyle: {
+            color: "#fff"
+          },
+          itemWidth: 12,
+          itemHeight: 10,
+        },
+        xAxis: {
+          type: 'category',
+          data: data.map(i => i.className),
+          axisLine: {
+            lineStyle: {
+              color: '#eee'
+            }
+          },
+          axisLabel: {
+            interval: 0,
+            margin: 20,
+            color: '#05D5FF',
+            textStyle: {
+              fontSize: 11,
+            },
+          },
+        },
+        yAxis: [
+          {
+            type: 'value',
+            nameTextStyle: {
+              color: '#A2A5AA',
+              fontSize: 10
+            },
+            splitLine: {
+              show: true,
+              lineStyle: {
+                color: 'rgba(255,255,255,0.3)'
+              }
+            },
+            axisLine: {
+              lineStyle: {
+                color: '#6C6F79' //改轴颜色
+              }
+            },
+            axisLabel: {}
+          },
+          {
+            type: 'value',
+            min: 0,
+            max: 100,
+            interval: 20,
+            nameTextStyle: {
+              color: '#A2A5AA',
+              fontSize: 10
+            },
+            splitLine: {
+              lineStyle: {
+                color: 'rgba(255,255,255,0.1)' //改轴颜色
+              }
+            },
+            axisTick: {
+              show: false
+            },
+            axisLine: {
+              lineStyle: {
+                color: '#6C6F79' //改轴颜色
+              }
+            },
+            axisLabel: {
+              formatter: '{value}%',
+              textStyle: {
+                color: '#A2A5AA', //改轴数值颜色
+                fontSize: 10
+              }
+            }
+          }
+        ],
+        series: [
+          {
+            name: '班级平均分',
+            type: 'bar',
+            yAxis: 0,
+            barWidth: '10%',
+            itemStyle: {
+              normal: {
+                color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+                  offset: 0,
+                  color: '#fccb05'
+                }, {
+                  offset: 1,
+                  color: '#f5804d'
+                }]),
+                barBorderRadius: 12,
+              },
+            },
+            data: data.map(i => i.average),
+          },
+          {
+            name: '班级最高分',
+            type: 'bar',
+            yAxis: 0,
+            barWidth: '10%',
+            itemStyle: {
+              normal: {
+                color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+                  offset: 0,
+                  color: '#8bd46e'
+                }, {
+                  offset: 1,
+                  color: '#09bcb7'
+                }]),
+                barBorderRadius: 11,
+              }
+            },
+            data: data.map(i => i.hScore)
+          },
+          {
+            name: '优秀率',
+            type: 'line',
+            yAxisIndex: 1,
+            symbolSize: '10',
+            zlevel: 3,
+
+            color: '#23bcca',
+            areaStyle: {
+              normal: {
+                color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+                  offset: 0,
+                  color: 'rgba(1,231,230, 0.3)'
+                }, {
+                  offset: 0.8,
+                  color: 'rgba(1,231,230, 0.3)'
+                }], false),
+                shadowColor: 'rgba(0, 0, 0, 0.1)',
+                shadowBlur: 10
+              }
+            },
+            itemStyle: {
+              normal: {
+                color: 'rgb(1,231,230)',
+                borderColor: 'rgba(1,231,230,0.2)',
+                borderWidth: 12
+
+              }
+            },
+            data: data.map(i => i.goodRate),
+          },
+          {
+            name: '及格率',
+            type: 'line',
+            yAxisIndex: 1,
+            symbolSize: '10',
+            zlevel: 3,
+            areaStyle: {
+              normal: {
+                color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+                  offset: 0,
+                  color: 'rgba(255,188,10, 0.1)'
+                }, {
+                  offset: 0.8,
+                  color: 'rgba(255,188,10, 0.2)'
+                }], false),
+                shadowColor: 'rgba(0, 0, 0, 0.1)',
+                shadowBlur: 10
+              }
+            },
+            itemStyle: {
+              normal: {
+                color: 'rgb(255,188,10)',
+                borderColor: 'rgba(255,188,10,0.17)',
+                borderWidth: 12
+              }
+            },
+            data: data.map(i => i.normalRate),
+          }]
+      };
+      myChart.clear()
+      myChart.setOption(this.option)
+      window.addEventListener('resize', function () {
+        myChart.resize()
+      })
+    }
+  },
+  watch: {
+    '$store.state.dashboard.artDashboard': {
+      deep: true,
+      immediate: true,
+      handler(n, o) {
+        if (n) {
+          this.$nextTick(() => {
+            this.doRender(n.classData)
+          })
+        }
+      }
+    }
+  }
+}
+</script>
+
+<style>
+.art-echart {
+  width: 100%;
+  height: 100%;
+  margin: 0 auto;
+  display: block;
+}
+</style>

+ 115 - 0
TEAMModelOS/ClientApp/src/components/dashboard/art/BaseKnowPie.vue

@@ -0,0 +1,115 @@
+<template>
+  <div id="ArtPointPie" class="art-pie"></div>
+</template>
+<script>
+export default {
+  data() {
+    return {
+      option: null,
+    }
+  },
+  methods: {
+    doRender(level1RenderArr, level2RenderArr) {
+      let myChart = this.$echarts.init(document.getElementById('ArtPointPie'))
+      let colorList = [
+        '#0090ff',
+        '#06d3c4',
+        '#ffbc32',
+        '#2ccc44',
+        '#ff3976',
+        '#6173d6',
+        '#914ce5',
+        '#42b1cc',
+        '#ff55ac',
+        '#0090ff',
+        '#06d3c4',
+        '#ffbc32',
+        '#2ccc44',
+        '#26c898',
+        '#6173d6',
+        '#914ce5',
+      ];
+      this.option = {
+        tooltip: {
+          trigger: 'item',
+          formatter: '{a} <br/>{b}: {c} ({d}%)'
+        },
+        series: [
+          {
+            name: '一级知识点',
+            type: 'pie',
+            selectedMode: 'single',
+            radius: [0, '30%'],
+            label: {
+              position: 'inner',
+              fontSize: 14,
+            },
+            labelLine: {
+              show: true,
+              smooth: 0.2,
+            },
+            data: level1RenderArr
+          },
+          {
+            name: '二级知识点',
+            type: 'pie',
+            radius: ['40%', '60%'],
+            itemStyle: {
+              borderRadius: 20,
+              borderColor: 'rgba(0,0,0,0)',
+              borderWidth: 2,
+              color: function (params) {
+                return colorList[params.dataIndex];
+              },
+            },
+            data: level2RenderArr
+          }
+        ]
+      };
+      myChart.clear()
+      myChart.setOption(this.option)
+      window.addEventListener('resize', function () {
+        myChart.resize()
+      })
+    }
+  },
+  watch: {
+    '$store.state.dashboard.artDashboard': {
+      deep: true,
+      immediate: true,
+      handler(n, o) {
+        if (n) {
+          this.$nextTick(() => {
+            let level1Arr = [...new Set(n.knowledges.map(i => i.level1))]
+            let level2Arr = [...new Set(n.knowledges.map(i => i.level2))]
+            let level1RenderArr = level1Arr.map(i => {
+              let matchLevel3 = n.knowledges.filter(j => j.level1 === i)
+              return {
+                name: i,
+                value: ((matchLevel3.reduce((a, b) => a + b.val, 0)) / matchLevel3.length).toFixed(2),
+              }
+            })
+            let level2RenderArr = level2Arr.map(i => {
+              let matchLevel3 = n.knowledges.filter(j => j.level2 === i)
+              return {
+                name: i,
+                value: ((matchLevel3.reduce((a, b) => a + b.val, 0)) / matchLevel3.length).toFixed(2),
+              }
+            })
+            this.doRender(level1RenderArr, level2RenderArr)
+          })
+        }
+      }
+    }
+  }
+}
+</script>
+
+<style>
+.art-pie {
+  width: 50%;
+  height: 100%;
+  margin: 0 auto;
+  display: block;
+}
+</style>

+ 187 - 0
TEAMModelOS/ClientApp/src/components/dashboard/art/BaseLessonLineBar.vue

@@ -0,0 +1,187 @@
+<template>
+  <div id="ArtLessonLineBar" class="art-echart"></div>
+</template>
+<script>
+export default {
+  data() {
+    return {
+      option: null,
+    }
+  },
+  methods: {
+    doRender(data) {
+      let myChart = this.$echarts.init(document.getElementById('ArtLessonLineBar'))
+      this.option = {
+        title: {
+          textStyle: {
+            align: 'center',
+            color: '#fff',
+            fontSize: 20,
+          },
+          top: '5%',
+          left: 'center',
+        },
+        tooltip: {
+          trigger: 'axis',
+          axisPointer: {
+            type: 'shadow'
+          },
+          formatter: function (params) {
+            return params[0].name + '<br>占比:' + params[0].value + '%'
+          }
+        },
+        grid: {
+          left: '2%',
+          right: '4%',
+          bottom: '14%',
+          top: '16%',
+          containLabel: true
+        },
+        legend: {
+          data: ['东坡小学', '青羊区'],
+          right: 100,
+          top: 12,
+          textStyle: {
+            color: "#fff"
+          },
+          itemWidth: 12,
+          itemHeight: 10,
+        },
+        xAxis: {
+          type: 'category',
+          data: data.map(i => i.key),
+          axisLine: {
+            lineStyle: {
+              color: 'rgba(255,255,255,0.1)'
+            }
+          },
+          axisLabel: {
+            interval: 0,
+            margin: 20,
+            color: '#05D5FF',
+            textStyle: {
+              fontSize: 11,
+            },
+          },
+        },
+        yAxis: [
+          {
+            type: 'value',
+            min: 0,
+            max: 100,
+            interval: 20,
+            nameTextStyle: {
+              color: '#A2A5AA',
+              fontSize: 10
+            },
+            splitLine: {
+              lineStyle: {
+                color: 'rgba(255,255,255,0.1)' //改轴颜色
+              }
+            },
+            axisTick: {
+              show: false
+            },
+            axisLine: {
+              lineStyle: {
+                color: '#6C6F79' //改轴颜色
+              }
+            },
+            axisLabel: {
+              formatter: '{value}%',
+              textStyle: {
+                color: '#A2A5AA', //改轴数值颜色
+                fontSize: 10
+              }
+            }
+          }
+        ],
+        series: [
+          {
+            name: '东坡小学',
+            type: 'line',
+            symbolSize: '10',
+            zlevel: 3,
+            color: '#23bcca',
+            areaStyle: {
+              normal: {
+                color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+                  offset: 0,
+                  color: 'rgba(1,231,230, 0.3)'
+                }, {
+                  offset: 0.8,
+                  color: 'rgba(1,231,230, 0.3)'
+                }], false),
+                shadowColor: 'rgba(0, 0, 0, 0.1)',
+                shadowBlur: 10
+              }
+            },
+            itemStyle: {
+              normal: {
+                color: 'rgb(1,231,230)',
+                borderColor: 'rgba(1,231,230,0.2)',
+                borderWidth: 12
+
+              }
+            },
+            data: data.map(i => i.schoolRate),
+          },
+          {
+            name: '青羊区',
+            type: 'line',
+            symbolSize: '10',
+            zlevel: 3,
+            areaStyle: {
+              normal: {
+                color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+                  offset: 0,
+                  color: 'rgba(255,188,10, 0.1)'
+                }, {
+                  offset: 0.8,
+                  color: 'rgba(255,188,10, 0.2)'
+                }], false),
+                shadowColor: 'rgba(0, 0, 0, 0.1)',
+                shadowBlur: 10
+              }
+            },
+            itemStyle: {
+              normal: {
+                color: 'rgb(255,188,10)',
+                borderColor: 'rgba(255,188,10,0.17)',
+                borderWidth: 12
+              }
+            },
+            data: data.map(i => i.areaRate),
+          }]
+      };
+      myChart.clear()
+      myChart.setOption(this.option)
+      window.addEventListener('resize', function () {
+        myChart.resize()
+      })
+    }
+  },
+  watch: {
+    '$store.state.dashboard.artDashboard': {
+      deep: true,
+      immediate: true,
+      handler(n, o) {
+        if (n) {
+          this.$nextTick(() => {
+            this.doRender(n.lessonData)
+          })
+        }
+      }
+    }
+  }
+}
+</script>
+
+<style>
+.art-echart {
+  width: 100%;
+  height: 100%;
+  margin: 0 auto;
+  display: block;
+}
+</style>

+ 150 - 0
TEAMModelOS/ClientApp/src/components/dashboard/art/BasePointLineBar.vue

@@ -0,0 +1,150 @@
+<template>
+  <div id="ArtPointLineBar" class="art-point-bar"></div>
+</template>
+<script>
+export default {
+  data() {
+    return {
+      option: null,
+    }
+  },
+  methods: {
+    doRender(data) {
+      let myChart = this.$echarts.init(document.getElementById('ArtPointLineBar'))
+      this.option = {
+        title: {
+          textStyle: {
+            align: 'center',
+            color: '#fff',
+            fontSize: 20,
+          },
+          top: '5%',
+          left: 'center',
+        },
+        tooltip: {
+          trigger: 'axis',
+          axisPointer: {
+            type: 'shadow'
+          },
+          formatter: function (params) {
+            return params[0].name + '<br>得分率:' + params[0].value + '%'
+          }
+        },
+        grid: {
+          left: '2%',
+          right: '4%',
+          bottom: '8%',
+          top: '10%',
+          containLabel: true
+        },
+        xAxis: {
+          type: 'category',
+          data: data.map(i => i.name),
+          axisLine: {
+            lineStyle: {
+              color: '#eee'
+            }
+          },
+          axisLabel: {
+            interval: 0,
+            margin: 20,
+            color: '#05D5FF',
+            textStyle: {
+              fontSize: 11,
+            },
+          },
+        },
+        yAxis: [
+          {
+            type: 'value',
+            nameTextStyle: {
+              color: '#A2A5AA',
+              fontSize: 10
+            },
+            splitLine: {
+              show: true,
+              lineStyle: {
+                color: 'rgba(255,255,255,0.3)'
+              }
+            },
+            axisLine: {
+              lineStyle: {
+                color: '#6C6F79' //改轴颜色
+              }
+            },
+            axisLabel: {}
+          }
+        ],
+        dataZoom: [{
+          show: true,
+          height: 10,
+          xAxisIndex: [0],
+          bottom: 10,
+          handleIcon: 'path://M306.1,413c0,2.2-1.8,4-4,4h-59.8c-2.2,0-4-1.8-4-4V200.8c0-2.2,1.8-4,4-4h59.8c2.2,0,4,1.8,4,4V413z',
+          handleSize: '110%',
+          handleStyle: {
+            color: "#5B3AAE",
+          },
+          textStyle: {
+            color: "rgba(204,187,225,0.5)",
+          },
+          fillerColor: "rgba(67,55,160,0.4)",
+          borderColor: "rgba(204,187,225,0.5)",
+
+        }, {
+          type: "inside",
+          show: true,
+          height: 15,
+          start: 1,
+          end: 35
+        }],
+        series: [
+          {
+            type: 'bar',
+            barWidth: '25%',
+            itemStyle: {
+              normal: {
+                color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+                  offset: 0,
+                  color: '#248ff7'
+                }, {
+                  offset: 1,
+                  color: '#6851f1'
+                }]),
+                barBorderRadius: 11,
+              }
+            },
+            data: data.map(i => i.val),
+          }]
+      };
+      myChart.clear()
+      myChart.setOption(this.option)
+      window.addEventListener('resize', function () {
+        myChart.resize()
+      })
+    }
+  },
+  watch: {
+    '$store.state.dashboard.artDashboard': {
+      deep: true,
+      immediate: true,
+      handler(n, o) {
+        if (n) {
+          this.$nextTick(() => {
+            this.doRender(n.knowledges)
+          })
+        }
+      }
+    }
+  }
+}
+</script>
+
+<style>
+.art-point-bar {
+  width: 60%;
+  height: 100%;
+  margin: 0 auto;
+  display: block;
+}
+</style>

+ 76 - 0
TEAMModelOS/ClientApp/src/components/dashboard/art/LeftBottom.vue

@@ -0,0 +1,76 @@
+<template>
+  <div id="bottomLeft">
+    <p class="dashboard-block-title">
+      <Icon type="md-pulse" />
+      <span>试卷整体质量分析</span>
+      <dv-decoration-1 class="dv-dec-3" />
+    </p>
+    <div class="bg-color-black">
+      <dv-scroll-board :config="config" style="width:96%;margin-left:2%" />
+    </div>
+  </div>
+</template>
+
+<script>
+import BasePointLineBar from '@/components/dashboard/art/BasePointLineBar.vue'
+export default {
+  components: {
+    BasePointLineBar
+  },
+  data() {
+    return {
+      config: null
+    }
+  },
+  watch: {
+    '$store.state.dashboard.artDashboard': {
+      deep: true,
+      immediate: true,
+      handler(n, o) {
+        if (n) {
+          this.$nextTick(() => {
+            console.error(n.paperArr)
+            this.config = {
+              header: ["名称", "满分", "试题总数", "使用人数", "有效题", "无效题", "难度"],
+              data: n.paperArr,
+              rowNum: 4, //表格行数
+              headerHeight: 35,
+              headerBGC: "#0f1325", //表头
+              oddRowBGC: "#0f1325", //奇数行
+              evenRowBGC: "#171c33", //偶数行
+              columnWidth: [250],
+            }
+          })
+        }
+      }
+    }
+  }
+}
+</script>
+
+<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;
+  .bg-color-black {
+    height: 91%;
+    padding-top: 10px;
+  }
+  .text {
+    color: #c3cbde;
+  }
+  .chart-box {
+    margin-top: 16px;
+    width: 170px;
+    height: 170px;
+    .active-ring-name {
+      padding-top: 10px;
+    }
+  }
+}
+</style>

+ 52 - 0
TEAMModelOS/ClientApp/src/components/dashboard/art/LeftCenter.vue

@@ -0,0 +1,52 @@
+<template>
+  <div id="bottomLeft">
+	  <p class="dashboard-block-title">
+	  	<Icon type="md-pulse" />
+	  	<span>知识点得分率统计</span>
+		<dv-decoration-1 class="dv-dec-3" />
+	  </p>
+    <div class="bg-color-black" style="display:flex">
+        <BaseKnowPie/>
+        <BasePointLineBar/>
+    </div>
+  </div>
+</template>
+
+<script>
+import BasePointLineBar from '@/components/dashboard/art/BasePointLineBar.vue'
+import BaseKnowPie from '@/components/dashboard/art/BaseKnowPie.vue'
+
+export default {
+  components: {
+    BasePointLineBar,
+    BaseKnowPie
+  }
+}
+</script>
+
+<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;
+  .bg-color-black {
+    height: 91%;
+	padding-top: 10px;
+  }
+  .text {
+    color: #c3cbde;
+  }
+  .chart-box {
+    margin-top: 16px;
+    width: 170px;
+    height: 170px;
+    .active-ring-name {
+      padding-top: 10px;
+    }
+  }
+}
+</style>

+ 177 - 0
TEAMModelOS/ClientApp/src/components/dashboard/art/LeftTop.vue

@@ -0,0 +1,177 @@
+<template>
+  <div id="left-top-box">
+    <!-- <p class="dashboard-block-title">
+			<Icon type="md-cube" />
+			<span>累计数据</span>
+		</p> -->
+    <div class="up">
+      <div class="bg-color-black item" v-for="(item,index) in titleItem" :key="item.title">
+        <p class="count-num">{{ item.number }} <span v-if="index === 5 || index === 6" style="font-size:14px">%</span> </p>
+        <p class="ml-3 colorBlue fw-b fs-xl">{{ item.title }}</p>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import countTo from 'vue-count-to'
+export default {
+  data(vm) {
+    return {
+      titleItem: [
+        {
+          title: '应考人数',
+          number: 263
+        },
+        {
+          title: '实考人数',
+          number: 260
+        },
+        {
+          title: '最高分',
+          number: 49.76
+        },
+        {
+          title: '最低分',
+          number: 28.42
+        },
+        {
+          title: '平均分',
+          number: 42.58
+        },
+        {
+          title: '优秀率',
+          number: '34.23%'
+        },
+        {
+          title: '及格率',
+          number: '98.85%'
+        },
+        {
+          title: '标准差',
+          number: 4.31
+        }
+      ],
+    }
+  },
+  components: {
+    countTo
+  },
+  created() {
+    // let totalJson = this.$store.state.dashboard.researchDashboard.total
+    // let allJson = this.$store.state.dashboard.researchDashboard
+    // if(totalJson){
+    // 	totalJson.forEach(i => {
+    // 		this.titleItem.find(j => j.key === i.name).number = i.value
+    // 	})
+    // 	this.titleItem[5].number = allJson.teachCount
+    // 	this.titleItem[6].number = allJson.taskCount
+    // 	this.titleItem[7].number = allJson.workCount
+    // 	this.titleItem[8].number = allJson.examQuizCount
+    // 	this.titleItem[9].number = allJson.interactCount
+    // }
+  },
+  watch: {
+    '$store.state.dashboard.artDashboard': {
+      deep: true,
+      immediate: true,
+      handler(n, o) {
+        if (n) {
+          this.$nextTick(() => {
+			let staticNums = n.staticData
+			this.titleItem[0].number = staticNums.total
+			this.titleItem[1].number = staticNums.join
+			this.titleItem[2].number = staticNums.hScore
+			this.titleItem[3].number = staticNums.lScore
+			this.titleItem[4].number = staticNums.average
+			this.titleItem[5].number = staticNums.goodRate
+			this.titleItem[6].number = staticNums.normalRate
+			this.titleItem[7].number = staticNums.standard
+          })
+        }
+      }
+    }
+  }
+}
+</script>
+
+<style lang="less" scoped>
+#left-top-box {
+  display: flex;
+  flex-direction: column;
+  justify-content: space-between;
+  height: 100%;
+  padding: 1%;
+
+  .up {
+    width: 100%;
+    height: 100%;
+    display: flex;
+    flex-wrap: wrap;
+    justify-content: space-around;
+
+    .item {
+      width: 10.7%;
+      border-radius: 6px;
+      padding: 8px;
+      margin: 0.3% 0 0.2% 0;
+      display: flex;
+      flex-direction: column;
+      align-items: center;
+
+      .count-num {
+        display: inline-block;
+        font-size: 26px;
+        font-weight: bold;
+        margin-top: 10px;
+      }
+    }
+  }
+
+  .down {
+    padding: 6px 4px;
+    padding-bottom: 0;
+    width: 100%;
+    display: flex;
+    height: 510px;
+    flex-wrap: wrap;
+    justify-content: space-between;
+
+
+    .ranking {
+      padding: 10px;
+      width: 59%;
+
+      .dv-scr-rank-board {
+        height: 225px;
+      }
+    }
+
+    .percent {
+      width: 40%;
+      display: flex;
+      flex-wrap: wrap;
+
+      .item {
+        width: 50%;
+        height: 120px;
+
+        span {
+          margin-top: 8px;
+          font-size: 14px;
+          display: flex;
+          justify-content: center;
+        }
+      }
+
+      .water {
+        width: 100%;
+
+        .dv-wa-le-po {
+          height: 120px;
+        }
+      }
+    }
+  }
+}
+</style>

+ 48 - 0
TEAMModelOS/ClientApp/src/components/dashboard/art/RightBotL.vue

@@ -0,0 +1,48 @@
+<template>
+  <div id="bottomLeft">
+	  <p class="dashboard-block-title">
+	  	<Icon type="md-pulse" />
+	  	<span>课程被挤占情况统计</span>
+		<dv-decoration-1 class="dv-dec-3" />
+	  </p>
+    <div class="bg-color-black">
+        <BaseLessonLineBar/>
+    </div>
+  </div>
+</template>
+
+<script>
+import BaseLessonLineBar from '@/components/dashboard/art/BaseLessonLineBar.vue'
+export default {
+  components: {
+    BaseLessonLineBar
+  }
+}
+</script>
+
+<style lang="less" scoped>
+@box-height: 104%;
+@box-width: 100%;
+#bottomLeft {
+  padding: 20px 16px;
+  height: @box-height;
+  width: @box-width;
+  display: flex;
+  flex-direction: column;
+  .bg-color-black {
+    height: 91%;
+	padding-top: 10px;
+  }
+  .text {
+    color: #c3cbde;
+  }
+  .chart-box {
+    margin-top: 16px;
+    width: 170px;
+    height: 170px;
+    .active-ring-name {
+      padding-top: 10px;
+    }
+  }
+}
+</style>

+ 63 - 0
TEAMModelOS/ClientApp/src/components/dashboard/art/RightBotR.vue

@@ -0,0 +1,63 @@
+<template>
+	<div id="TechBar">
+		<p class="dashboard-block-title">
+			<Icon type="md-podium" />
+			<span>获奖情况统计</span>
+			<dv-decoration-3 class="dv-dec-3" />
+		</p>
+		<div class="bg-color-black">
+			<BaseAwardPie></BaseAwardPie>
+		</div>
+	</div>
+</template>
+
+<script>
+	import BaseAwardPie from './BaseAwardPie.vue'
+	import TechBar from '@/components/echart/techBar/index.vue'
+	export default {
+		components:{
+			BaseAwardPie
+		},
+		data() {
+			return {
+				
+			}
+		},
+		mounted() {},
+		methods: {}
+	}
+</script>
+
+<style lang="less" scoped>
+	@box-height: 100%;
+	@box-width: 100%;
+
+	#TechBar {
+		padding: 16px;
+		padding-top: 20px;
+		height: @box-height;
+		width: @box-width;
+		display: flex;
+		flex-direction: column;
+		justify-content: space-between;
+		border-radius: 5px;
+
+		.bg-color-black {
+			height: 94%;
+		}
+
+		.text {
+			color: #c3cbde;
+		}
+
+		.body-box {
+			border-radius: 10px;
+			overflow: hidden;
+
+			.dv-scr-board {
+				width: 270px;
+				height: 340px;
+			}
+		}
+	}
+</style>

+ 48 - 0
TEAMModelOS/ClientApp/src/components/dashboard/art/RightTop.vue

@@ -0,0 +1,48 @@
+<template>
+  <div id="bottomLeft">
+	  <p class="dashboard-block-title">
+	  	<Icon type="md-pulse" />
+	  	<span>各班级测评情况统计</span>
+		<dv-decoration-1 class="dv-dec-3" />
+	  </p>
+    <div class="bg-color-black">
+        <BaseClassLineBar/>
+    </div>
+  </div>
+</template>
+
+<script>
+import BaseClassLineBar from '@/components/dashboard/art/BaseClassLineBar.vue'
+export default {
+  components: {
+    BaseClassLineBar
+  }
+}
+</script>
+
+<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;
+  .bg-color-black {
+    height: 91%;
+	padding-top: 10px;
+  }
+  .text {
+    color: #c3cbde;
+  }
+  .chart-box {
+    margin-top: 16px;
+    width: 170px;
+    height: 170px;
+    .active-ring-name {
+      padding-top: 10px;
+    }
+  }
+}
+</style>

+ 17 - 4
TEAMModelOS/ClientApp/src/components/student-web/EventView/EventContentTypeTemplate/PaperTest.vue

@@ -363,7 +363,20 @@
                     </div>
                     <div v-else>{{ $t("studentWeb.exam.testpop.noExam") }}</div>
                 </div>
-                
+                <div style="display: flex; margin-top: 10px;">
+                    <span class="color-type">
+                        <span class="activeBg" style="background-color: #92D2A9;"></span>
+                        {{ $t("studentWeb.exam.report.right") }}
+                    </span>
+                    <span class="color-type">
+                        <span class="activeBg" style="background-color: #D68F8F;"></span>
+                        {{ $t("studentWeb.exam.report.wrong") }}
+                    </span>
+                    <span class="color-type">
+                        <span class="activeBg" style="background-color: #B7B7B7;"></span>
+                        {{ $t("studentWeb.exam.report.noScore") }}
+                    </span>
+                </div>
             </i-col>
         </Row>
         <!--图片放大显示-->
@@ -534,7 +547,7 @@
                     names.push("select-item")
                 }
                 //错题练习
-                /* if(this.isWrong) {
+                if(this.isWrong) {
                     let status = this.status[index]
                     // 答题卡选项的颜色 0:未作答 1:正确 2:错误 3:未评分
                     switch(status) {
@@ -554,13 +567,13 @@
                     
                 }
                 // 正常作答
-                else { */
+                else {
                     if(!this.status[index]) {
                         names.push('')
                     } else {
                         names.push('has-ans')
                     }
-                // }
+                }
                 return names
 // [status[index] != 0 ? (status[index] != 4 ? (status[index] != 3 ? (status[index] == 1 ? 'has-right-ans' : 'has-wrong-ans') : 'has-no-ans') : 'has-ans') : 'ans-box', index == queNo ? 'select-item' :'', checkers[queNo] == examInfo[queNo] ? 'select-item' : '']
             },

+ 2 - 1
TEAMModelOS/ClientApp/src/components/student-web/EventView/EventContentTypeTemplate/composePaper.vue

@@ -62,6 +62,8 @@ export default {
   },
   methods: {
     async getInfo() {
+      console.error(this.markBg)
+      this.markBg = ""
       this.examInfo = []
       this.initEditor()
       console.error(this.textData)
@@ -77,7 +79,6 @@ export default {
       }
       setTimeout(() => {
         if (this.isConnector) {
-          this.markBg = ""
           this.markStuAnswer()
         }
       }, 100)

+ 1 - 1
TEAMModelOS/ClientApp/src/components/student-web/SettingView/Setting.vue

@@ -687,7 +687,7 @@ export default {
 </script>
 
 <style lang="less" scoped>
-@import "~@/assets/student-web/component_styles/setting.less";
+@import "./setting.less";
 </style>
 
 <style lang="less">

+ 150 - 0
TEAMModelOS/ClientApp/src/components/student-web/SettingView/setting.less

@@ -0,0 +1,150 @@
+@import "~@/assets/student-web/component_styles/color.less";
+
+.setting-view {
+    overflow: hidden;
+    position: relative;
+    // height: 100%;
+    // width: 80%;
+    // text-align: center;
+
+    .stu-account {
+        display: flex;
+        // justify-content: center;
+        width: 100%;
+        margin-top: 30px;
+
+        .port-head-part {
+            position: relative;
+            // height: 100%;
+            // border: 1px solid;
+            width: 40%;
+
+            &>div {
+                position: relative;
+                width: 200px;
+                height: 230px;
+                float: right;
+                margin-top: 100px;
+
+                &>p {
+                    text-align: center;
+                    line-height: 200px;
+                    border: 1px solid #ccc;
+                    border-radius: 5px;
+                    font-size: 17px;
+                }
+
+                .head-port {
+                    // width: 200px;
+                }
+
+                .upload-head {
+                    position: absolute;
+                    top: 0;
+                    left: 0;
+                    right: 0;
+                    bottom: 30px;
+                    width: 200px;
+                    display: flex;
+                    justify-content: center;
+                    align-items: center;
+                    opacity: 0;
+                    border-radius: 5px;
+
+                    &:hover {
+                        opacity: 1;
+                        background-color: rgba(204, 204, 204, 0.5);
+                    }
+                }
+            }
+
+
+        }
+
+        .account-right {
+            margin-top: 100px;
+            margin-left: 10px;
+            width: 30%;
+
+            .setting-type {
+                display: flex;
+                // align-items: center;
+                // margin-bottom: 20px;
+                font-size: 18px;
+                padding: 10px 10px;
+
+                &>p:first-child {
+                    min-width: 20%;
+                    text-align: right;
+                    margin-right: 20px;
+                }
+
+                &>p:nth-child(2) {
+                    min-width: 30%;
+                    font-weight: bold;
+                }
+
+                &:hover {
+                    background: linear-gradient(0.75turn, #fafafa, #d4ede1);
+                    border-radius: 5px;
+                }
+            }
+        }
+    }
+
+    .user-info-box {
+        margin-top: 120px;
+        margin-bottom: 60px;
+        padding: 50px 50px;
+        height: -moz-fit-content;
+        height: fit-content;
+        // color: white;
+        width: 630px;
+
+
+        .submit-btn-wrap {
+            margin-top: 20px;
+            text-align: center;
+        }
+    }
+}
+
+.modal-place {
+    margin-bottom: 10px;
+}
+
+@media screen and (max-width: 600px) {
+    .setting-view {
+
+        .stu-account {
+            flex-direction: column;
+
+            .port-head-part,
+            .account-right {
+                width: 100%;
+            }
+
+            .port-head-part {
+
+                &>div {
+                    text-align: center;
+                    margin-top: 0;
+                    width: auto;
+                    margin: 0 20%;
+                    float: none;
+
+                    .upload-head {
+                        width: auto;
+                    }
+                }
+            }
+
+            .account-right {
+                text-align: center;
+                margin-left: 0;
+                margin-top: 20px;
+            }
+        }
+
+    }
+}

+ 16 - 0
TEAMModelOS/ClientApp/src/components/student-web/achievement/MyAchievement.less

@@ -25,4 +25,20 @@
         background-color: #24B880;
         border-color: #24B880;
     }
+
+    .student-check {
+        margin-bottom: 10px;
+    }
+}
+
+@media screen and (max-width: 1024px) {
+    .achievement-report {
+        .filter-type {
+            flex-direction: column;
+        }
+
+        .report-head {
+            flex-direction: column;
+        }
+    }
 }

+ 4 - 4
TEAMModelOS/ClientApp/src/components/student-web/achievement/MyAchievement.vue

@@ -1,7 +1,7 @@
 <template>
     <div class="achievement-report">
         <Loading v-show="isLoading" bgColor="rgba(0, 0, 0, 0.3)"></Loading>
-        <Tabs value="classrecord">
+        <Tabs value="exam">
             <TabPane :label="$t('studentWeb.myAchievement.examAch')" name="exam">
                 <div class="report-head student-check">
                     <div class="filter-type">
@@ -68,7 +68,7 @@
                                     </span>
                                 </template>
                             </template>
-                            <span class="tag-style" v-if="row.type">{{ row.type }}</span>
+                            <span class="tag-style" v-if="row.type && row.type.name">{{ row.type.name }}</span>
                             <template v-if="row.class.length">
                                 <span class="tag-style" v-for="cla in row.class" :key="cla.cId">
                                     {{ cla.cname }}
@@ -129,7 +129,7 @@
                     </template>
                 </Table>
             </TabPane>
-            <TabPane :label="$t('studentWeb.myAchievement.cusAch')" name="classrecord">
+            <!-- <TabPane :label="$t('studentWeb.myAchievement.cusAch')" name="classrecord">
                 <div style="margin-left: 20px;">
                     <div class="filter-type">
                         <div>
@@ -148,7 +148,7 @@
                         <Rate v-model="row.star" />
                     </template>
                 </Table>
-            </TabPane>
+            </TabPane> -->
         </Tabs>
     </div>
 </template>

+ 5 - 0
TEAMModelOS/ClientApp/src/router/routes.js

@@ -1033,6 +1033,11 @@ export const routes = [{
 		path: '/researchDashboard',
 		component: resolve => require(['@/view/dashboard/Research.vue'], resolve)
 	},
+	{
+		name: 'artDashboard',
+		path: '/artDashboard',
+		component: resolve => require(['@/view/dashboard/Art.vue'], resolve)
+	},
 
 	//教研课例中心
 	{

+ 1 - 1
TEAMModelOS/ClientApp/src/store/module/config.js

@@ -24,7 +24,7 @@ export default {
                 },
                 {
                     station: 'rc',
-                    url: 'https://rc.teammodel.net'
+                    url: 'https://rc.teammodel.cn'
                 },
                 {
                     station: 'test',

+ 456 - 10
TEAMModelOS/ClientApp/src/store/module/dashboard.js

@@ -1,19 +1,465 @@
 import $tools from '@/utils/public.js'
 export default {
 	state: {
-		researchDashboard:{
-			total:[],
-			trend:[],
-			classify_group:[],
-			classify_grade:[],
-			classify_type:[],
-			classify_sub:[],
-			exams:[]
-		}
+		researchDashboard: {
+			total: [],
+			trend: [],
+			classify_group: [],
+			classify_grade: [],
+			classify_type: [],
+			classify_sub: [],
+			exams: []
+		},
+		artDashboard: null
 	},
 	mutations: {
-		setRearchDashboardData(state,val){
+		setRearchDashboardData(state, val) {
 			state.researchDashboard = val
+		},
+		setArtDashboardData(state, val) {
+			if(val === 'music'){
+				state.artDashboard = {
+					paperArr: [
+						['<span style="color:#32c5e9;font-weight: bold;">青羊区艺术素养测评五年级试卷一</span>', "50", "16", "86", "13", "3", "0.84"],
+						['<span style="color:#32c5e9;font-weight: bold;">青羊区艺术素养测评五年级试卷二</span>', "50", "16", "86", "15", "1", "0.83"],
+						['<span style="color:#32c5e9;font-weight: bold;">青羊区艺术素养测评五年级试卷三</span>', "50", "16", "88", "13", "3", "0.88"],
+					],
+					//音乐试卷整体质量
+					papers: [
+						{
+							name: '青羊区艺术素养测评五年级试卷一',
+							score: 50,
+							itemCount: 16,
+							useCount: 86,
+							validCount: 13,
+							invalidCount: 3,
+							difficulty: 0.84
+						},
+						{
+							name: '青羊区艺术素养测评五年级试卷二',
+							score: 50,
+							itemCount: 16,
+							useCount: 86,
+							validCount: 15,
+							invalidCount: 1,
+							difficulty: 0.83
+						},
+						{
+							name: '青羊区艺术素养测评五年级试卷三',
+							score: 50,
+							itemCount: 16,
+							useCount: 86,
+							validCount: 13,
+							invalidCount: 3,
+							difficulty: 0.88
+						}
+					],
+					// 测评总体情况
+					staticData: {
+						total: 263,
+						join: 260,
+						hScore: 49.76,
+						lScore: 28.42,
+						average: 42.58,
+						goodRate: '34.23',
+						normalRate: '98.85',
+						standard: 4.31
+					},
+					// 知识点得分率统计
+					knowledges: [
+						{
+							name: '戏曲',
+							level1: '审美感知',
+							level2: '音乐体裁与形式',
+							val: 96.51,
+						}, {
+							name: '民歌体裁',
+							level1: '审美感知',
+							level2: '音乐体裁与形式',
+							val: 82.18,
+						}, {
+							name: '情绪',
+							level1: '审美感知',
+							level2: '音乐情绪与情感',
+							val: 94.52,
+						}, {
+							name: '速度',
+							level1: '审美感知',
+							level2: '音乐表现要素及音乐音响材料',
+							val: 95,
+						}, {
+							name: '节拍',
+							level1: '审美感知',
+							level2: '音乐表现要素及音乐音响材料',
+							val: 91.98,
+						}, {
+							name: '音色',
+							level1: '审美感知',
+							level2: '音乐表现要素及音乐音响材料',
+							val: 88.05,
+						}, {
+							name: '中国音乐名家',
+							level1: '审美感知',
+							level2: '音乐风格与流派',
+							val: 93.02,
+						}, {
+							name: '中国音乐名曲',
+							level1: '审美感知',
+							level2: '音乐风格与流派',
+							val: 86.21,
+						}, {
+							name: '外国音乐名曲',
+							level1: '审美感知',
+							level2: '音乐风格与流派',
+							val: 83.72,
+						}, {
+							name: '外国音乐名家',
+							level1: '审美感知',
+							level2: '音乐风格与流派',
+							val: 71.59,
+						}, {
+							name: '中国民族文化',
+							level1: '文化理解',
+							level2: '音乐与民族、地域文化',
+							val: 87.21,
+						}, {
+							name: '音符',
+							level1: '艺术表现',
+							level2: '乐谱识读与运用',
+							val: 86.82,
+						}, {
+							name: '音乐记号',
+							level1: '艺术表现',
+							level2: '乐谱识读与运用',
+							val: 85.82,
+						}, {
+							name: '视谱跟唱模唱',
+							level1: '艺术表现',
+							level2: '乐谱识读与运用',
+							val: 81.92,
+						}, {
+							name: '演唱形式',
+							level1: '艺术表现',
+							level2: '演唱',
+							val: 69.37,
+						}, {
+							name: '演奏形式',
+							level1: '艺术表现',
+							level2: '演奏',
+							val: 4.65,
+						}
+					],
+					// 班级数据对比
+					classData: [
+						{
+							className: '1班',
+							total: 44,
+							join: 44,
+							hScore: 49.76,
+							average: 43.13,
+							goodRate: 34.09,
+							normalRate: 97.73,
+							standard: 3.95
+						},
+						{
+							className: '2班',
+							total: 43,
+							join: 43,
+							hScore: 49.50,
+							average: 41.58,
+							goodRate: 25.58,
+							normalRate: 100,
+							standard: 4.79
+						},
+						{
+							className: '3班',
+							total: 44,
+							join: 43,
+							hScore: 48.44,
+							average: 41.48,
+							goodRate: 27.91,
+							normalRate: 95.35,
+							standard: 4.60
+						},
+						{
+							className: '4班',
+							total: 44,
+							join: 42,
+							hScore: 49.68,
+							average: 43.58,
+							goodRate: 47.62,
+							normalRate: 100,
+							standard: 4.26
+						},
+						{
+							className: '5班',
+							total: 44,
+							join: 44,
+							hScore: 49.50,
+							average: 42.87,
+							goodRate: 34.09,
+							normalRate: 100,
+							standard: 3.44
+						},
+						{
+							className: '6班',
+							total: 44,
+							join: 44,
+							hScore: 49.62,
+							average: 42.87,
+							goodRate: 36.36,
+							normalRate: 100,
+							standard: 4.25
+						}
+					],
+					// 课堂挤占情况
+					lessonData: [
+						{
+							key: '经常',
+							schoolRate: 0,
+							areaRate: 0.24
+						},
+						{
+							key: '偶尔',
+							schoolRate: 0,
+							areaRate: 1.01
+						},
+						{
+							key: '很少',
+							schoolRate: 1.53,
+							areaRate: 3.95
+						},
+						{
+							key: '从来没有',
+							schoolRate: 98.47,
+							areaRate: 98.48
+						}
+					],
+					// 获奖情况统计
+					awardData: [
+						{
+							key: 'school',
+							country: 18,
+							province: 21,
+							city: 9,
+							area: 7,
+							school: 28
+						},
+						{
+							key: 'areaAverage',
+							country: 49,
+							province: 55,
+							city: 31,
+							area: 33,
+							school: 71
+						},
+						{
+							key: 'areaTotal',
+							country: 1754,
+							province: 1971,
+							city: 1098,
+							area: 1162,
+							school: 2564
+						}
+					]
+				}
+			}else{
+				state.artDashboard = {
+					paperArr: [
+						['<span style="color:#32c5e9;font-weight: bold;">青羊区艺术素养测评五年级试卷一</span>', "40", "16", "86", "13", "3", "0.94"],
+						['<span style="color:#32c5e9;font-weight: bold;">青羊区艺术素养测评五年级试卷二</span>', "40", "16", "86", "15", "1", "0.92"],
+						['<span style="color:#32c5e9;font-weight: bold;">青羊区艺术素养测评五年级试卷三</span>', "40", "16", "88", "13", "1", "0.88"],
+					],
+					//音乐试卷整体质量
+					papers: [
+						{
+							name: '青羊区艺术素养测评五年级试卷一',
+							score: 50,
+							itemCount: 16,
+							useCount: 86,
+							validCount: 13,
+							invalidCount: 3,
+							difficulty: 0.84
+						},
+						{
+							name: '青羊区艺术素养测评五年级试卷二',
+							score: 50,
+							itemCount: 16,
+							useCount: 86,
+							validCount: 15,
+							invalidCount: 1,
+							difficulty: 0.83
+						},
+						{
+							name: '青羊区艺术素养测评五年级试卷三',
+							score: 50,
+							itemCount: 16,
+							useCount: 86,
+							validCount: 13,
+							invalidCount: 3,
+							difficulty: 0.88
+						}
+					],
+					// 测评总体情况
+					staticData: {
+						total: 263,
+						join: 260,
+						hScore: 40.00,
+						lScore: 18.00,
+						average: 36.54,
+						goodRate: '72.69',
+						normalRate: '98.08',
+						standard: 3.87
+					},
+					// 知识点得分率统计
+					knowledges: [
+						{
+							name: '民族文化',
+							level1: '文化理解',
+							level2: '美术与自然、地域',
+							val: 97.29,
+						}, {
+							name: '设计应用',
+							level1: '美术表现',
+							level2: '创作实践',
+							val: 99.08,
+						}, {
+							name: '造型表现',
+							level1: '美术表现',
+							level2: '创作实践',
+							val: 89.85,
+						}, {
+							name: '图像识读',
+							level1: '美术表现',
+							level2: '视觉形象感知',
+							val: 91.50,
+						}, {
+							name: '图像类别',
+							level1: '美术表现',
+							level2: '视觉形象感知',
+							val: 91.15,
+						}, {
+							name: '图像要素',
+							level1: '美术表现',
+							level2: '视觉形象感知',
+							val: 89.21,
+						}
+					],
+					// 班级数据对比
+					classData: [
+						{
+							className: '1班',
+							total: 44,
+							join: 44,
+							hScore: 40.00,
+							average: 36.18,
+							goodRate: 70.45,
+							normalRate: 95.45,
+							standard: 4.41
+						},
+						{
+							className: '2班',
+							total: 43,
+							join: 43,
+							hScore: 40.00,
+							average: 36.14,
+							goodRate: 72.09,
+							normalRate: 100,
+							standard: 3.51
+						},
+						{
+							className: '3班',
+							total: 44,
+							join: 43,
+							hScore: 40.00,
+							average: 35.81,
+							goodRate: 67.44,
+							normalRate: 95.35,
+							standard: 4.68
+						},
+						{
+							className: '4班',
+							total: 44,
+							join: 42,
+							hScore: 40.00,
+							average: 37.48,
+							goodRate: 76.19,
+							normalRate: 100,
+							standard: 2.86
+						},
+						{
+							className: '5班',
+							total: 44,
+							join: 44,
+							hScore: 40.00,
+							average: 36.73,
+							goodRate: 70.45,
+							normalRate: 100,
+							standard: 3.14
+						},
+						{
+							className: '6班',
+							total: 44,
+							join: 44,
+							hScore: 40.00,
+							average: 36.91,
+							goodRate: 79.55,
+							normalRate: 97.73,
+							standard: 4.03
+						}
+					],
+					// 课堂挤占情况
+					lessonData: [
+						{
+							key: '经常',
+							schoolRate: 0,
+							areaRate: 0.33
+						},
+						{
+							key: '偶尔',
+							schoolRate: 1.26,
+							areaRate: 0.38
+						},
+						{
+							key: '很少',
+							schoolRate: 0,
+							areaRate: 3.77
+						},
+						{
+							key: '从来没有',
+							schoolRate: 99.62,
+							areaRate: 94.64
+						}
+					],
+					// 获奖情况统计
+					awardData: [
+						{
+							key: 'school',
+							country: 17,
+							province: 16,
+							city: 8,
+							area: 8,
+							school: 37
+						},
+						{
+							key: 'areaAverage',
+							country: 52,
+							province: 37,
+							city: 20,
+							area: 15,
+							school: 93
+						},
+						{
+							key: 'areaTotal',
+							country: 1854,
+							province: 1314,
+							city: 715,
+							area: 524,
+							school: 3331
+						}
+					]
+				}
+			}
 		}
 	},
 

+ 1 - 1
TEAMModelOS/ClientApp/src/utils/editorTools.js

@@ -691,7 +691,7 @@ export default {
 		class TextDot extends BtnMenu{
 			constructor(editor) {
 				const $elem = $(
-					`<div class="w-e-menu" style="color:red" :title="${app.$t('evaluation.editor.addTextDot')}"><i class="icon iconfont icon-heavy" style="font-size: 20px;display: inline-block;margin-top: 3px;"></i></div>`
+					`<div class="w-e-menu" style="color:red" title="${app.$t('evaluation.editor.addTextDot')}"><i class="icon iconfont icon-heavy" style="font-size: 20px;display: inline-block;margin-top: 3px;"></i></div>`
 				)
 				super($elem, editor)
 			}

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

@@ -202,7 +202,7 @@ export default {
         if (this.hasModify) {
           this.$Modal.confirm({
             title: '温馨提示',
-            content: '您存在未提交保存修改内容,是否确认离开?',
+              content: '您未确认“提交评审结果”,无法保存修改内容,是否确认离开?',
             onOk: () => {
               this.$emit('goBack', {
                 needRefresh: needFresh

+ 241 - 0
TEAMModelOS/ClientApp/src/view/dashboard/Art.less

@@ -0,0 +1,241 @@
+#artIndex {
+    color: #d3d6dd;
+    width: 100%;
+    height: 100%;
+    // transform: translate(0%, -10%);
+    // transform-origin: left top;
+    overflow: hidden;
+    position: relative;
+    
+    .tools{
+        position: absolute;
+        right: 30px;
+        top: 30px;
+        font-size: 26px;
+        font-weight: bold;
+        cursor: pointer;
+        
+        .time-text{
+            font-size: 20px;
+            margin-right: 20px;
+            font-weight: 600;
+            color: #9f9f9f;
+        }
+    }
+    .school-info{
+        position: absolute;
+        left: 30px;
+        top: 40px;
+        font-size: 20px;
+        font-weight: bold;
+        cursor: pointer;
+        display: flex;
+        align-items: center;
+        
+        &-name{
+            margin: 0 10px;
+        }
+        
+        &-period{
+            font-size: 12px;
+            background-color: #2d2d2d;
+            display: inline-block;
+            padding: 2px 10px;
+            border-radius: 4px;
+            margin-right: 5px;
+        }
+        
+        &-semester{
+            font-size: 12px;
+            background-color: #2d2d2d;
+            display: inline-block;
+            padding: 2px 10px;
+            border-radius: 4px;
+            margin-right: 5px;
+        }
+        .dashboard-menu{
+          margin-left: 20px;
+          cursor: pointer;
+
+          &-active{
+            border-bottom: 2px solid #fff;
+          }
+        }
+        
+        img{
+            border-radius: 50%;
+            width: 25px;
+        }
+    }
+    
+    .bg {
+      width: 100%;
+      height: 100%;
+      padding: 16px 16px 0 16px;
+      background-image: url("../../assets/image/pageBg.png");
+      background-size: cover;
+      background-position: center center;
+    }
+  
+    .host-body {
+      .dv-dec-10,
+      .dv-dec-10-s {
+        width: 33.3%;
+        height: 5px;
+      }
+      .dv-dec-10-s {
+        transform: rotateY(180deg);
+      }
+      .dv-dec-8 {
+        width: 200px;
+        height: 50px;
+      }
+      .title {
+        position: relative;
+        width: 500px;
+        text-align: center;
+        background-size: cover;
+        background-repeat: no-repeat;
+  
+        .title-text {
+          font-size: 24px;
+          font-weight: bold;
+          position: absolute;
+          bottom: 20px;
+          left: 50%;
+          transform: translate(-50%);
+        }
+  
+        .dv-dec-6 {
+          position: absolute;
+          bottom: 0;
+          left: 50%;
+          width: 250px;
+          height: 8px;
+          transform: translate(-50%);
+        }
+      }
+  
+      // 第二行
+      .aside-width {
+        width: 40%;
+      }
+      .react-r-s,
+      .react-l-s {
+        // background-color: #0f1325;
+      }
+  
+      // 平行四边形
+      .react-right {
+        &.react-l-s {
+          text-align: left;
+          width: 500px;
+        }
+        font-size: 18px;
+        width: 300px;
+        line-height: 50px;
+        text-align: center;
+        transform: skewX(-45deg);
+  
+        .react-after {
+          position: absolute;
+          right: -25px;
+          top: 0;
+          height: 50px;
+          width: 50px;
+          background-color: #0f1325;
+          transform: skewX(45deg);
+        }
+  
+        .text {
+          display: inline-block;
+          transform: skewX(45deg);
+        }
+      }
+  
+      .react-left {
+        &.react-l-s {
+          width: 500px;
+          text-align: left;
+        }
+        font-size: 18px;
+        width: 300px;
+        height: 50px;
+        line-height: 50px;
+        text-align: center;
+        transform: skewX(45deg);
+        background-color: #0f1325;
+  
+        .react-before {
+          position: absolute;
+          left: -25px;
+          top: 0;
+          height: 50px;
+          width: 50px;
+          background-color: #0f1325;
+          transform: skewX(-45deg);
+        }
+  
+        .text {
+          display: inline-block;
+          transform: skewX(-45deg);
+        }
+      }
+  
+      .body-box {
+        margin-top: 20px;
+        display: flex;
+        justify-content: space-between;
+  
+        //下方区域的布局
+        .left-box {
+          width: 60%;
+          height: calc(100vh - 75px);
+          display: flex;
+          flex-direction: column;
+          
+          &-top{
+              width: 100%;
+              height: 12%;
+          }
+
+          &-center{
+            width: 100%;
+            height: 50%;
+        }
+          
+          &-bottom{
+              width: 100%;
+              height: 33%;
+          }
+        }
+  
+        // 底部数据
+        .right-box {
+          width: 40%;
+          height: calc(100vh - 75px);
+         display: flex;
+         flex-direction: column;
+         
+         &-top{
+             width: 100%;
+             height: 40%;
+         }
+         
+         &-bottom{
+             width: 100%;
+             height: 55%;
+          display: flex;
+          
+          .right-bottom-single{
+              width: 50%;
+              height: 100%;
+          }
+         }
+        }
+      }
+    }
+  }
+  
+  
+  

+ 174 - 0
TEAMModelOS/ClientApp/src/view/dashboard/Art.vue

@@ -0,0 +1,174 @@
+<template>
+  <div id="artIndex" ref="appRef">
+    <div class="bg">
+      <dv-loading v-if="loading">{{ $t('researchCenter.dashboard.loading') }}</dv-loading>
+      <div v-else class="host-body">
+        <div class="tools">
+          <span class="time-text">{{ dateYear }} <span style="display: inline-block; margin: 0 5px;color: #0fa2fe;">{{ dateDay }}</span> </span>
+          <span class="icon iconfont icon-tuichuquanping" style="font-size: 22px;" :title="$t('researchCenter.dashboard.quit')" @click="goBack"></span>
+        </div>
+        <div class="school-info">
+          <img :src="schoolInfo.schoolLogo">
+          <span class="school-info-name">{{ schoolInfo.schoolName }}</span>
+          <span class="school-info-period">{{ schoolInfo.periodName }}</span>
+          <span class="school-info-semester">{{ schoolInfo.curSemester }}</span>
+          <span :class="['dashboard-menu',activeMenu === 'music' ? 'dashboard-menu-active' : '']" @click="onChangeSubject('music')">音乐</span>
+          <span :class="['dashboard-menu',activeMenu === 'paint' ? 'dashboard-menu-active' : '']" @click="onChangeSubject('paint')">美术</span>
+        </div>
+        <div class="d-flex jc-center">
+          <dv-decoration-10 class="dv-dec-10" />
+          <div class="d-flex jc-center">
+            <dv-decoration-8 class="dv-dec-8" :color="['#568aea', '#000000']" />
+            <div class="title">
+              <span class="title-text">艺术测评看板</span>
+              <dv-decoration-6 class="dv-dec-6" :reverse="true" :color="['#50e3c2', '#67a1e5']" />
+            </div>
+            <dv-decoration-8 class="dv-dec-8" :reverse="true" :color="['#568aea', '#000000']" />
+          </div>
+          <dv-decoration-10 class="dv-dec-10-s" />
+        </div>
+
+
+        <div class="body-box">
+          <div class="left-box">
+            <div class="left-box-top">
+              <dv-border-box-12>
+                <LeftTop />
+              </dv-border-box-12>
+            </div>
+            <div class="left-box-center">
+              <dv-border-box-12>
+                <LeftCenter />
+              </dv-border-box-12>
+            </div>
+            <div class="left-box-bottom">
+              <dv-border-box-12>
+                <LeftBottom />
+              </dv-border-box-12>
+            </div>
+          </div>
+
+          <div class="right-box">
+            <div class="right-box-top">
+              <dv-border-box-12>
+                <RightTop />
+              </dv-border-box-12>
+            </div>
+            <div class="right-box-bottom">
+              <div class="right-bottom-single">
+                <dv-border-box-12>
+                  <RightBotL />
+                </dv-border-box-12>
+              </div>
+              <div class="right-bottom-single">
+                <dv-border-box-12>
+                  <RightBotR />
+                </dv-border-box-12>
+              </div>
+            </div>
+          </div>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import centerLeft1 from '@/components/research-dashboard/centerLeft1'
+import centerLeft2 from '@/components/research-dashboard/centerLeft2'
+import RightBotR from '@/components/dashboard/art/RightBotR'
+import RightBotL from '@/components/dashboard/art/RightBotL'
+import LeftTop from '@/components/dashboard/art/LeftTop'
+import LeftCenter from '@/components/dashboard/art/LeftCenter'
+import LeftBottom from '@/components/dashboard/art/LeftBottom'
+import RightTop from '@/components/dashboard/art/RightTop'
+import bottomRight from '@/components/research-dashboard/bottomRight'
+export default {
+  data() {
+    return {
+      activeMenu:'music',
+      timing: null,
+      loading: true,
+      dateDay: null,
+      dateYear: null,
+      dateWeek: null,
+      weekday: ['周日', '周一', '周二', '周三', '周四', '周五', '周六']
+    }
+  },
+  components: {
+    centerLeft1,
+    centerLeft2,
+    RightBotR,
+    RightBotL,
+    LeftTop,
+    LeftCenter,
+    LeftBottom,
+    RightTop,
+    bottomRight
+  },
+  mounted() {
+    this.$tools.fullScreen(document.getElementById('artIndex'))
+    this.timeFn()
+    // this.cancelLoading()
+  },
+  beforeDestroy() {
+    clearInterval(this.timing)
+  },
+  created() {
+    this.curPeriod = this.$store.state.user.curPeriod
+    this.getDashboardData()
+    this.onChangeSubject('music')
+  },
+  methods: {
+    onChangeSubject(subject){
+      this.activeMenu = subject
+      this.$store.commit('setArtDashboardData', subject)
+    },
+    getDashboardData() {
+      let semesterRange = this.$tools.getSemesterTimeRange()
+      this.$api.lessonRecord.getDashboardData({
+        "stime": semesterRange.st,
+        "etime": semesterRange.et,
+        "code": this.$store.state.user.schoolCode,
+        "periodId": this.$store.state.user.curPeriod.id
+      }).then(res => {
+        this.$store.commit('setRearchDashboardData', res)
+        this.cancelLoading()
+      })
+    },
+    goBack() {
+      this.$tools.exitFullscreen()
+      this.$router.push('/home/Dashboard')
+    },
+    timeFn() {
+      this.timing = setInterval(() => {
+        this.dateDay = this.$tools.formatTime(new Date(), 'hh:mm:ss')
+        this.dateYear = this.$tools.formatTime(new Date(), 'yyyy-MM-dd')
+        this.dateWeek = this.weekday[new Date().getDay()]
+      }, 1000)
+    },
+    cancelLoading() {
+      setTimeout(() => {
+        this.loading = false
+      }, 1000)
+    },
+  },
+  computed: {
+    schoolInfo() {
+      let store_user = this.$store.state.user
+      let semesterRange = this.$tools.getSemesterTimeRange()
+      return {
+        schoolName: store_user.schoolProfile.school_base.name,
+        schoolLogo: store_user.schoolProfile.school_base.picture,
+        periodName: store_user.curPeriod.name,
+        curSemester: semesterRange.name
+      }
+    }
+  }
+}
+</script>
+
+<style lang="less">
+@import "Art.less";
+@import "style.less";
+</style>

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 27 - 25
TEAMModelOS/ClientApp/src/view/dashboard/Index.vue


+ 3 - 1
TEAMModelOS/ClientApp/src/view/jyzx/application.vue

@@ -480,11 +480,13 @@ export default {
       if(this.isReview && reviewRef.hasModify){
         this.$Modal.confirm({
 					title: '温馨提示',
-					content: '您存在未提交保存的修改内容,是否确认离开?',
+                    content: '您未确认“提交评审结果”,无法保存修改内容,是否确认离开?',
 					onOk: () => {
 						next();
 					}
 				});
+      }else{
+        next();
       }
 	}
 }

+ 1 - 1
TEAMModelOS/ClientApp/src/view/research-center/BaseCleanCond.vue

@@ -131,7 +131,7 @@ export default {
     }).then(res => {
       if (!res.error) {
         this.openAutoClean = res.setting.lessonSetting.openAutoClean === 1
-        this.expireDays = res.setting.lessonSetting.expireDays
+        this.expireDays = res.setting.lessonSetting.expireDays || 7
         this.condArr.map(item => {
           let findItem = res.setting.lessonSetting.conds.find(i => i.key === item.key)
           if (findItem) {

+ 3 - 0
TEAMModelOS/ClientApp/src/view/student-web/AppiView.less

@@ -1,4 +1,7 @@
 .myNav {
+    .ivu-menu {
+        z-index: 1;
+    }
     .ivu-menu-horizontal {
         height: 45px !important;
         // padding-top: 4px;

+ 2 - 2
TEAMModelOS/ClientApp/src/view/trainList/Check.vue

@@ -175,7 +175,7 @@
 				return new Promise((resolve) => {
 					this.$Modal.confirm({
 						title: this.$t('syllabus.modifyTip'),
-						content: `确认修改当前教师的教研组长身份吗?`,
+						content: `确认修改当前教师的审核人员身份吗?`,
 						onOk: () => {
 							resolve();
 						}
@@ -193,7 +193,7 @@
 					mode: "multi"
 				}).then(res => {
 					if (!res.error) {
-						this.$Message.success(isAdd ? `已添加 ${val.name} 为教研组长` : `已取消 ${val.name} 的教研组长身份!`)
+						this.$Message.success(isAdd ? `已添加 ${val.name} 为审核人员` : `已取消 ${val.name} 的审核人员身份!`)
 					}
 				})
 			},

+ 18 - 17
TEAMModelOS/Controllers/Analysis/AchievementController.cs

@@ -2063,7 +2063,7 @@ namespace TEAMModelOS.Controllers.Analysis
         //    }
         //    catch (Exception e)
         //    {
-        //        await _dingDing.SendBotMsg($"OS,{_option.Location},analysis/getAnalysis()\n{e.Message}", GroupNames.醍摩豆服務運維群組);
+        //        await _dingDing.SendBotMsg($"OS,{_option.Location},analysis/getAnalysis()\n{e.Message}\n{e.StackTrace}", GroupNames.醍摩豆服務運維群組);
         //        return BadRequest();
         //    }
         //    foreach (double sc in classAnalysis.total)
@@ -2661,7 +2661,7 @@ namespace TEAMModelOS.Controllers.Analysis
         //    }
         //    catch (Exception e)
         //    {
-        //        await _dingDing.SendBotMsg($"OS,{_option.Location},analysis/answer()\n{e.Message}", GroupNames.醍摩豆服務運維群組);
+        //        await _dingDing.SendBotMsg($"OS,{_option.Location},analysis/answer()\n{e.Message}\n{e.StackTrace}", GroupNames.醍摩豆服務運維群組);
         //        return BadRequest();
         //    }
         //}
@@ -2749,7 +2749,7 @@ namespace TEAMModelOS.Controllers.Analysis
         //    }
         //    catch (Exception e)
         //    {
-        //        await _dingDing.SendBotMsg($"OS,{_option.Location},analysis/scoring()\n{e.Message}", GroupNames.醍摩豆服務運維群組);
+        //        await _dingDing.SendBotMsg($"OS,{_option.Location},analysis/scoring()\n{e.Message}\n{e.StackTrace}", GroupNames.醍摩豆服務運維群組);
         //        return BadRequest();
         //    }
         //}
@@ -2846,7 +2846,7 @@ namespace TEAMModelOS.Controllers.Analysis
         //    }
         //    catch (Exception e)
         //    {
-        //        await _dingDing.SendBotMsg($"OS,{_option.Location},analysis/scoring()\n{e.Message}", GroupNames.醍摩豆服務運維群組);
+        //        await _dingDing.SendBotMsg($"OS,{_option.Location},analysis/scoring()\n{e.Message}\n{e.StackTrace}", GroupNames.醍摩豆服務運維群組);
         //        return BadRequest();
         //    }
         //}
@@ -2981,7 +2981,7 @@ namespace TEAMModelOS.Controllers.Analysis
         //    }
         //    catch (Exception e)
         //    {
-        //        await _dingDing.SendBotMsg($"OS,{_option.Location},analysis/importResult()\n{e.Message}", GroupNames.醍摩豆服務運維群組);
+        //        await _dingDing.SendBotMsg($"OS,{_option.Location},analysis/importResult()\n{e.Message}\n{e.StackTrace}", GroupNames.醍摩豆服務運維群組);
         //        return BadRequest();
         //    }
         //}
@@ -3484,7 +3484,7 @@ namespace TEAMModelOS.Controllers.Analysis
         //    }
         //    catch (Exception e)
         //    {
-        //        await _dingDing.SendBotMsg($"OS,{_option.Location},analysis/answer()\n{e.Message}", GroupNames.醍摩豆服務運維群組);
+        //        await _dingDing.SendBotMsg($"OS,{_option.Location},analysis/answer()\n{e.Message}\n{e.StackTrace}", GroupNames.醍摩豆服務運維群組);
         //        return BadRequest();
         //    }
         //}
@@ -3572,7 +3572,7 @@ namespace TEAMModelOS.Controllers.Analysis
         //    }
         //    catch (Exception e)
         //    {
-        //        await _dingDing.SendBotMsg($"OS,{_option.Location},analysis/scoring()\n{e.Message}", GroupNames.醍摩豆服務運維群組);
+        //        await _dingDing.SendBotMsg($"OS,{_option.Location},analysis/scoring()\n{e.Message}\n{e.StackTrace}", GroupNames.醍摩豆服務運維群組);
         //        return BadRequest();
         //    }
         //}
@@ -3615,7 +3615,7 @@ namespace TEAMModelOS.Controllers.Analysis
             }
             catch (Exception e)
             {
-                await _dingDing.SendBotMsg($"OS,{_option.Location},analysis/import()\n{e.Message}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"OS,{_option.Location},analysis/import()\n{e.Message}\n{e.StackTrace}", GroupNames.醍摩豆服務運維群組);
                 return BadRequest();
             }
         }
@@ -3800,7 +3800,7 @@ namespace TEAMModelOS.Controllers.Analysis
             }
             catch (Exception e)
             {
-                await _dingDing.SendBotMsg($"OS,{_option.Location},analysis/word()\n{e.Message}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"OS,{_option.Location},analysis/word()\n{e.Message}\n{e.StackTrace}", GroupNames.醍摩豆服務運維群組);
                 return BadRequest();
             }
 
@@ -3946,7 +3946,7 @@ namespace TEAMModelOS.Controllers.Analysis
             }
             catch (Exception e)
             {
-                await _dingDing.SendBotMsg($"OS,{_option.Location},analysis/importResult()\n{e.StackTrace}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"OS,{_option.Location},analysis/importResult()\n", GroupNames.醍摩豆服務運維群組);
                 return BadRequest();
             }
         }
@@ -3976,7 +3976,7 @@ namespace TEAMModelOS.Controllers.Analysis
             }
             catch (Exception e)
             {
-                await _dingDing.SendBotMsg($"OS,{_option.Location},analysis/getSchoolInfo()\n{e.Message}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"OS,{_option.Location},analysis/getSchoolInfo()\n{e.Message}\n{e.StackTrace}", GroupNames.醍摩豆服務運維群組);
                 return BadRequest();
             }
         }
@@ -4007,7 +4007,7 @@ namespace TEAMModelOS.Controllers.Analysis
             }
             catch (Exception e)
             {
-                await _dingDing.SendBotMsg($"OS,{_option.Location},analysis/getClassInfo()\n{e.Message}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"OS,{_option.Location},analysis/getClassInfo()\n{e.Message}\n{e.StackTrace}", GroupNames.醍摩豆服務運維群組);
                 return BadRequest();
             }
         }
@@ -4116,7 +4116,7 @@ namespace TEAMModelOS.Controllers.Analysis
             }
             catch (Exception e)
             {
-                await _dingDing.SendBotMsg($"OS,{_option.Location},analysis/getClassInfo()\n{e.Message}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"OS,{_option.Location},analysis/getClassInfo()\n{e.Message}\n{e.StackTrace}", GroupNames.醍摩豆服務運維群組);
                 return BadRequest();
             }
         }
@@ -4138,7 +4138,7 @@ namespace TEAMModelOS.Controllers.Analysis
             }
             catch (Exception e)
             {
-                await _dingDing.SendBotMsg($"OS,{_option.Location},analysis/import-exam()\n{e.Message}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"OS,{_option.Location},analysis/import-exam()\n{e.Message}\n{e.StackTrace}", GroupNames.醍摩豆服務運維群組);
                 return BadRequest();
             }
         }
@@ -4198,7 +4198,7 @@ namespace TEAMModelOS.Controllers.Analysis
             }
             catch (Exception e)
             {
-                await _dingDing.SendBotMsg($"OS,{_option.Location},analysis/import-result()\n{e.StackTrace}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"OS,{_option.Location},analysis/import-result()\n", GroupNames.醍摩豆服務運維群組);
                 return BadRequest();
             }
         }
@@ -4251,7 +4251,7 @@ namespace TEAMModelOS.Controllers.Analysis
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"OS,{_option.Location},analysis/setNo()\n{ex.Message}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"OS,{_option.Location},analysis/setNo()\n{ex.Message}\n{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
                 return BadRequest();
             }
         }
@@ -4317,7 +4317,7 @@ namespace TEAMModelOS.Controllers.Analysis
             }
             catch (Exception e)
             {
-                await _dingDing.SendBotMsg($"OS,{_option.Location},analysis/upsert-record()\n{e.Message}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"OS,{_option.Location},analysis/upsert-record()\n{e.Message}\n{e.StackTrace}", GroupNames.醍摩豆服務運維群組);
                 return BadRequest();
             }
 
@@ -4353,6 +4353,7 @@ namespace TEAMModelOS.Controllers.Analysis
                             builder.Append("ans.json");
                             result.studentAnswers[newIndex].Clear();
                             result.studentAnswers[newIndex].Add(builder.ToString());
+                            result.status[newIndex] = 0;
                             for (int i = 0; i < ans.Count; i++)
                             {
                                 if (ans[i] == null)

+ 12 - 8
TEAMModelOS/Controllers/Analysis/AnalysisController.cs

@@ -345,15 +345,19 @@ namespace TEAMModelOS.Controllers.Analysis
                     }*/
                     //处理班级
                     var classRes = classReses.Where(x => x.id == rGroup.id).FirstOrDefault();
-                    var stuCount = classRes.range[1] - classRes.range[0] + 1;                 
+                    var stuCount = classRes.range[1] - classRes.range[0] + 1;
                     List<StudentAys> classStudents = new();
-                    foreach (string sid in stuIds) {
-                        foreach (var stu in students) {
-                            if (stu.id == sid) {
+                    foreach (string sid in stuIds)
+                    {
+                        foreach (var stu in students)
+                        {
+                            if (stu.id == sid)
+                            {
                                 classStudents.Add(stu);
                             }
                         }
-                    } ;
+                    };
+
                     //var classStudents = students.GetRange(classRes.range[0], classRes.range[1] - classRes.range[0] + 1);
                     List<double> stuTotals = classStudents.Select(x => x.total).ToList();
                     stuTotals.Sort((s1, s2) => { return s2.CompareTo(s1); });
@@ -624,7 +628,7 @@ namespace TEAMModelOS.Controllers.Analysis
             }
             catch (Exception ex)
             {
-                await _dingDing.SendBotMsg($"OS,{_option.Location},analysis/process()\n{ex.Message}\n{ex.StackTrace}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"OS,{_option.Location},analysis/process()\n{ex.Message}\n{ex.StackTrace}\n", GroupNames.醍摩豆服務運維群組);
             }
 
             var sub = examResults.Select(e => new
@@ -1516,7 +1520,7 @@ namespace TEAMModelOS.Controllers.Analysis
             }
             catch (Exception e)
             {
-                await _dingDing.SendBotMsg($"OS,{_option.Location},analysis/simple()\n{e.Message}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"OS,{_option.Location},analysis/simple()\n{e.Message}\n{e.StackTrace}\n", GroupNames.醍摩豆服務運維群組);
                 return BadRequest();
             }
         }
@@ -1747,7 +1751,7 @@ namespace TEAMModelOS.Controllers.Analysis
             }
             catch (Exception e)
             {
-                await _dingDing.SendBotMsg($"OS,{_option.Location},analysis/studentAnalysis()\n{e.Message}", GroupNames.醍摩豆服務運維群組);
+                await _dingDing.SendBotMsg($"OS,{_option.Location},analysis/studentAnalysis()\n{e.Message}\n{e.StackTrace}\n", GroupNames.醍摩豆服務運維群組);
                 return BadRequest();
             }
         }

+ 0 - 0
TEAMModelOS/Controllers/Analysis/ClassAnalysisController.cs


Kaikkia tiedostoja ei voida näyttää, sillä liian monta tiedostoa muuttui tässä diffissä