lsc vor 5 Monaten
Ursprung
Commit
65e099899f

+ 5 - 4
dist/index.html

@@ -18,17 +18,18 @@
             -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, .3);
             background-color: rgba(0, 0, 0, 0.1);
         }
-				@font-face {
+				/* @font-face {
 					font-family: 'Source Han Sans SC';
 					src: url('./static/SourceHanSans-Regular.otf') format('truetype');
 					font-weight: normal;
 					font-style: normal;
 				}
-        
+         */
         html,
         body {
             height: 100%;
             width: 100%;
             background: #e6eaf0;
-						font-family: 'Source Han Sans SC', sans-serif;
-        }</style><link href=./static/css/app.24eeec350a4b08d71c2d7676a5857ac4.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=./static/js/manifest.3ad1d5771e9b13dbdad2.js></script><script type=text/javascript src=./static/js/vendor.9cf3645489e7b6bb2704.js></script><script type=text/javascript src=./static/js/app.9e5f01476ea13036bb00.js></script></body></html><script>document.domain = document.domain.split(".").slice(-2).join(".");</script>
+						font-family: '黑体';
+						/* font-family: 'Source Han Sans SC', sans-serif; */
+        }</style><link href=./static/css/app.ad4870fb93955d49b88c7eb7407aa9dc.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=./static/js/manifest.3ad1d5771e9b13dbdad2.js></script><script type=text/javascript src=./static/js/vendor.9cf3645489e7b6bb2704.js></script><script type=text/javascript src=./static/js/app.dc248c2e31865ae14e0f.js></script></body></html><script>document.domain = document.domain.split(".").slice(-2).join(".");</script>

Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
dist/static/css/app.24eeec350a4b08d71c2d7676a5857ac4.css.map


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
dist/static/css/app.ad4870fb93955d49b88c7eb7407aa9dc.css


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
dist/static/css/app.ad4870fb93955d49b88c7eb7407aa9dc.css.map


BIN
dist/static/img/pzBtn.604a778.png


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
dist/static/js/app.9e5f01476ea13036bb00.js.map


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
dist/static/js/app.dc248c2e31865ae14e0f.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
dist/static/js/app.dc248c2e31865ae14e0f.js.map


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
dist/static/js/manifest.3ad1d5771e9b13dbdad2.js.map


+ 1 - 1
src/App.vue

@@ -117,7 +117,7 @@ export default {
       });
       var _isLogin = this.$cookies.get("tlogin");
       var userInfo = this.$cookies.get("teacherInfo");
-      if (_isLogin == "1" && userInfo && userInfo.userid == this.userid) {
+      if (_isLogin == "1" && userInfo ) {
         loading.close();
         this.$store.commit("update", ["isLogin", true]);
         // var info = JSON.parse(window.sessionStorage.getItem("userInfo"));

BIN
src/assets/pzBtn.png


BIN
src/assets/pzBtn2.png


+ 45 - 30
src/components/pages/disAdmin/score.vue

@@ -79,7 +79,6 @@
     <div
       class="pb_content_body"
       style="margin: 0 auto"
-      v-if="tableData.length > 0"
     >
       <div class="student_table">
         <el-table
@@ -131,6 +130,11 @@
               <div>{{ scope.row.secondPw ? scope.row.secondPw : "-" }}</div>
             </template>
           </el-table-column>
+          <el-table-column label="评委3" min-width="10" align="center">
+            <template slot-scope="scope">
+              <div>{{ scope.row.thirdPw ? scope.row.thirdPw : "-" }}</div>
+            </template>
+          </el-table-column>
           <el-table-column label="评分结果" min-width="10" align="center">
             <template slot-scope="scope">
               <div>{{ scope.row.sum ? scope.row.sum : "-" }}</div>
@@ -222,7 +226,7 @@
                   ></el-input>
                 </div>
               </div>
-              <div class="scoreDiv">
+              <div class="scoreDiv" v-if="s.scoreAll.second">
                 <div>项目成果</div>
                 <div>
                   <el-input
@@ -232,7 +236,7 @@
                   ></el-input>
                 </div>
               </div>
-              <div class="scoreDiv">
+              <div class="scoreDiv" v-if="s.scoreAll.third">
                 <div>项目评价</div>
                 <div>
                   <el-input
@@ -498,21 +502,17 @@ export default {
           var scoreList = res.data[0];
           for (var i = 0; i < scoreList.length; i++) {
             scoreList[i].info = JSON.parse(scoreList[i].info);
-            if (scoreList[i].score != null) {
-              var point = JSON.parse(scoreList[i].score);
-              var a = parseInt(point.first);
-              var b = parseInt(point.second);
-              var c = parseInt(point.third);
-              var sumScore = Math.round((a + b + c) / 3);
-              scoreList[i].sum = sumScore;
-            }
+            // if (scoreList[i].score != null) {
+            //   var point = JSON.parse(scoreList[i].score);
+            //   var a = parseInt(point.first);
+            //   var b = parseInt(point.second);
+            //   var c = parseInt(point.third);
+            //   var sumScore = Math.round((a + b + c) / 3);
+            //   scoreList[i].sum = sumScore;
+            // }
           }
-          scoreList.sort((item1, item2) => item2.sum - item1.sum);
-          const start = (this.page - 1) * 10;
-          const end = start + 10;
-          let pageData = scoreList.slice(start, end);
-          this.selectPwScore(pageData);
-          this.isLoading = false;
+
+          this.selectPwScore(scoreList);
         })
         .catch((err) => {
           console.error(err);
@@ -532,25 +532,39 @@ export default {
                 var a = parseInt(point.first);
                 var b = parseInt(point.second);
                 var c = parseInt(point.third);
-                var sumScore = Math.round((a + b + c) / 3);
+                var sumScore = 0;
+                if(!point.second && !point.third){
+                  sumScore = Math.round(a);
+                }else {
+                  sumScore = Math.round((a + b + c) / 3);
+                }
                 sum += sumScore;
                 isScore++;
                 if (!p[j].firstPw) {
                   p[j].firstPw = sumScore;
-                } else {
-                  if (!p[j].secondPw) {
+                } else if (!p[j].secondPw){
                     p[j].secondPw = sumScore;
-                  }
+                } else if (!p[j].thirdPw){
+                    p[j].thirdPw = sumScore;
                 }
               }
             }
             p[j].sum = isScore == 0 ? 0 : (sum / isScore).toFixed(2)
           }
-          this.tableData = p;
+          p.sort((item1, item2) => item2.sum - item1.sum);
+          const start = (this.page - 1) * 10;
+          const end = start + 10;
+          // let pageData = p.slice(start, end);
+          let pageData = p;
+          this.tableData = pageData;
           this.$forceUpdate();
+          this.isLoading = false;
+
         })
         .catch((err) => {
           console.error(err);
+          this.isLoading = false;
+
         });
     },
     // getAnliList(rc) {
@@ -730,13 +744,14 @@ export default {
       if (this.scoreDetail[0].scoreAll.first == "") {
         this.$message.error("请将信息填写完整");
         return;
-      } else if (this.scoreDetail[0].scoreAll.second == "") {
-        this.$message.error("请将信息填写完整");
-        return;
-      } else if (this.scoreDetail[0].scoreAll.third == "") {
-        this.$message.error("请将信息填写完整");
-        return;
-      }
+      } 
+      // else if (this.scoreDetail[0].scoreAll.second == "") {
+      //   this.$message.error("请将信息填写完整");
+      //   return;
+      // } else if (this.scoreDetail[0].scoreAll.third == "") {
+      //   this.$message.error("请将信息填写完整");
+      //   return;
+      // }
       //  else if (this.scoreDetail[0].scoreAll.fourth == "") {
       //   this.$message.error("请将信息填写完整");
       //   return;
@@ -1028,7 +1043,7 @@ export default {
 }
 
 .touLeft > div > div {
-  margin: 0 10px 0 0;
+  margin: 0 10px 10px 0;
   display: flex;
   flex-direction: row;
   align-items: center;

+ 29 - 5
src/components/pages/race/addRace.vue

@@ -1,6 +1,6 @@
 <template>
   <div style="height: 100%; width: 100%; overflow: hidden">
-    <div class="race_nav">
+    <div class="race_nav" v-show="false">
       <div class="first" @click="checkSteps(1)" :class="{ active: steps == 1 }">
         <div class="navImg">
           <img src="../../../assets/icon/anliDetail/first.png" alt="" />
@@ -84,7 +84,9 @@
           >跳过</el-button
         >
         <el-button type="primary" @click="saveRace(1)">保存</el-button>
-        <el-button type="primary" @click="lastSteps" v-if="steps != 1"
+        <el-button type="primary" @click="isAddOrUpRace(0)">确认上传</el-button
+        >
+        <!-- <el-button type="primary" @click="lastSteps" v-if="steps != 1"
           >上一步</el-button
         >
         <el-button type="primary" @click="nextSteps" v-if="steps != 6"
@@ -92,7 +94,7 @@
         >
         <el-button type="primary" @click="isAddOrUpRace(0)" v-if="steps == 6"
           >确认上传</el-button
-        >
+        > -->
       </div>
     </div>
     <el-dialog
@@ -456,11 +458,22 @@ export default {
         return;
       } else if (this.raceInfo.type.length > 0) {
         var t = 1;
+        var t2 = 1;
         var a = [
           "24d162b0-d030-11ec-8c78-005056b86db5",
           "264bd103-d030-11ec-8c78-005056b86db5",
           "28d2c456-d030-11ec-8c78-005056b86db5",
           "2ad17d24-d030-11ec-8c78-005056b86db5",
+          "247f4e75-bfca-4876-a7cf-4f16e33c09af",
+          "e4035a71-877b-4d93-ab21-f323a80838c4"
+        ];
+        var a2 = [
+          "908958ca-ad41-43f3-b0b0-fdb5d1fea4b6",
+          "27bb589c-0121-4a51-9d95-a95734986922",
+          "78d636ad-d6f4-4b6d-a20d-c40a2e01bed9",
+          "06fe8a79-d3f8-410f-ad60-0eaf3b2d5563",
+          "2dcf8016-792b-481d-990f-76c7217b61b1",
+          "78c3f46b-3fee-4264-bd8e-6080a01776ea"
         ];
         for (var i = 0; i < this.raceInfo.type.length; i++) {
           if (t == 1) {
@@ -471,10 +484,21 @@ export default {
               }
             }
           }
+          if (t2 == 1) {
+            if (this.raceInfo.type[i] != "") {
+              if (a2.indexOf(this.raceInfo.type[i]) == -1) {
+              } else {
+                t2 = 2;
+              }
+            }
+          }
         }
         if (t == 1) {
           this.$message.error("案例组别不能为空");
           return;
+        }else if(t2 == 1){
+          this.$message.error("类型不能为空");
+          return;
         } else if (t == 2) {
           this.isJump = q;
           if (this.aid == "" || this.aid == undefined) {
@@ -703,8 +727,8 @@ export default {
   display: flex;
   width: 90%;
   justify-content: center;
-  margin: 0 auto;
-  height: calc(100% - 145px);
+  margin: 20px auto 0;
+  height: calc(100% - 75px);
 }
 
 .race_btn {

+ 36 - 5
src/components/pages/race/addRace/raceDetail.vue

@@ -128,8 +128,8 @@
                           :key="index"
                         >
                           <div
-                            v-if="item.name == '案例组别'"
-                            style="position: relative; width: 120px"
+                            v-if="item.name == '案例组别' || item.name == '类型'"
+                            style="position: relative; width: 120px;margin-right: 10px;"
                           >
                             <span
                               style="
@@ -138,7 +138,6 @@
                                 top: 0;
                                 left: 0;
                               "
-                              v-if="item.name == '案例组别'"
                               >*</span
                             ><span style="width: 100px px; margin-left: 10px">{{
                               item.name
@@ -152,7 +151,7 @@
                           >
                             <el-checkbox
                               @change="updateType(item1)"
-                              v-for="item1 in CourseTypeJson[item.id]"
+                              v-for="item1 in arrayPan(CourseTypeJson[item.id], item.id)"
                               :key="item1.id"
                               :label="item1.id"
                               :class="
@@ -854,6 +853,33 @@ export default {
     window.onresize = null;
     next();
   },
+  computed: {
+    arrayPan() {
+      return function(res, pid){
+        var a = [
+          "课时项目",
+          "单元项目",
+          "作业项目",
+        ]
+        var b = [
+          "社会类项目式学习",
+          "科技类项目式学习",
+          "综合",
+        ]
+        if(pid == '428574f9-593f-4d77-929c-506ea98db35b'){
+          if(this.raceDetail.type.indexOf('247f4e75-bfca-4876-a7cf-4f16e33c09af') != -1){
+            return res.filter(el => a.indexOf(el.name) !== -1)
+          }else if(this.raceDetail.type.indexOf('e4035a71-877b-4d93-ab21-f323a80838c4') != -1){
+            return res.filter(el => b.indexOf(el.name) !== -1)
+          }else {
+            return res
+          }
+        }else {
+          return res
+        }
+      }
+    }
+  },
   watch: {
     raceInfo: {
       immediate: true,
@@ -1215,6 +1241,7 @@ export default {
       var c = [];
       var b = sid.pid;
       var d = [];
+
       // for (var i = 0; i < this.CourseType[1].length; i++) {
       //   if (this.CourseType[1][i].id == sid) {
       //     b = this.CourseType[1][i].pid;
@@ -1227,6 +1254,9 @@ export default {
         for (var j = 0; j < this.CourseTypeJson[b].length; j++) {
           d.push(this.CourseTypeJson[b][j].id);
         }
+        for (var j = 0; j < this.CourseTypeJson['428574f9-593f-4d77-929c-506ea98db35b'].length; j++) {
+          d.push(this.CourseTypeJson['428574f9-593f-4d77-929c-506ea98db35b'][j].id);
+        }
         for (var i = 0; i < a.length; i++) {
           if (d.indexOf(a[i]) == -1) {
             c.push(a[i]);
@@ -1644,6 +1674,7 @@ export default {
 }
 
 .choose > .all_choose:nth-child(2) > span,
+.choose > .all_choose:nth-child(4) > span,
 .choose > .all_choose:nth-child(3) > span {
   letter-spacing: 31px;
   margin-left: 10px;
@@ -2358,7 +2389,7 @@ export default {
   border-radius: 50% !important;
 }
 .radiusCss {
-  margin-left: 10px !important;
+  /* margin-left: 10px !important; */
 }
 .isOtherCss >>> .el-checkbox__label {
   width: auto !important;

+ 328 - 8
src/components/pages/race/eventCenter/anliDetail.vue

@@ -72,12 +72,14 @@
             style="position: absolute; right: 100px;background: rgb(34, 90, 199);color: #fff;"
             >返回</el-button
           >
-          <div class="getScore" v-if="$store.state.userInfo.type != 1">
+          <div class="getScore" v-if="false">
+            <!-- $store.state.userInfo.type != 1 -->
             <el-button @click="openScore(anliBox[0])">评分</el-button>
           </div>
         </div>
       </div>
-      <div class="navBox" :class="{ isNavBox: isNavTop >= 300 }">
+      <div class="navBox" :class="{ isNavBox: isNavTop >= 300 }" :style="{ margin: isNavTop>=300 ? '0 0' : psDialog?'0 50px':'0 auto'}">
+      <!-- <div class="navBox" :class="{ isNavBox: isNavTop >= 300 }"> -->
         <div class="navTop" @click="isShow = 0">
           <div class="navImg" style="width: 24px">
             <img src="../../../../assets/icon/anliDetail/proOver.png" alt="" />
@@ -143,7 +145,7 @@
       >
         <img src="../../../../assets/icon/race/isNoMessage.png" alt />
       </div>
-      <div class="messageBox" v-else :class="{ isMessageBox: isNavTop >= 300 }">
+      <div class="messageBox" v-else :class="{ isMessageBox: isNavTop >= 300 }" :style="{ margin: psDialog?'0 50px':'0 auto'}">
         <div
           class="leftNav"
           :class="{ isleftNav: isNavTop >= 300 }"
@@ -2124,6 +2126,89 @@
         回到顶部
       </div>
     </div>
+    <div class="pButton" @click="psDialog = !psDialog" v-if="$store.state.userInfo.type != 1">
+      <!-- 批 -->
+      <img src="../../../../assets/pzBtn2.png" style="width: 25px" alt="" />
+    </div>
+    <div v-if="psDialog == true" class="newDialogCss">
+      <div class="pzTop2">
+        <!-- <div>批注</div>
+        <div @click="pzDialog = false">
+          <img src="../assets/close1.png" alt="" />
+        </div> -->
+        <div class="checkbox">
+          <div class="check" style="font-size: 25px">评审区域</div>
+          <img
+            src="../../../../assets/pzBtn.png"
+            @click="psDialog = false"
+            alt=""
+          />
+        </div>
+      </div>
+      <div class="pzBox">
+        <div class="addPzButton">
+          <div class="scoreTitle">
+            <div>{{ scoreDetail[0].uname }}</div>
+          </div>
+          <div class="psBox">
+            <div>
+							<span>评分(总分100分)</span>
+              <el-input
+                class="number"
+								placeholder="请输入评分"
+                v-model.number="scoreDetail[0].scoreAll.first"
+                @change="addScore"
+                :controls="false"
+								:min="0"
+              ></el-input>
+            </div>
+            <div style="align-items: flex-start;">
+              <span>评审说明:</span
+              ><textarea
+                :rows="10"
+                class="tAreaCss"
+                placeholder="请输入评语。"
+                v-model="scoreDetail[0].scoreAll.content"
+                @change="addScore"
+              ></textarea>
+            </div>
+            <div class="reviewDescription">
+							<el-table
+    					  :data="reviewDescriptionData"
+								border
+								width="90%"
+								:cell-style="{borderColor:'black'}"
+                 :span-method="objectSpanMethod"
+								:header-cell-style="{borderColor:'black',textAlign:'center'}"
+    					  style="width: 90%;border:solid 1px black">
+                <el-table-column
+    					    prop="question"
+    					    label="问题"
+									align="center"
+    					    width="80">
+    					  </el-table-column>
+    					  <el-table-column
+    					    prop="class"
+    					    label="分项维度"
+									align="center"
+    					    width="80">
+    					  </el-table-column>
+    					  <el-table-column
+    					    prop="ask"
+    					    label="具体指标">
+    					  </el-table-column>
+    					  <el-table-column
+    					    prop="score"
+    					    label="分值"
+									align="center"
+									width="80">
+    					  </el-table-column>
+    					</el-table>
+            </div>
+          </div>
+        </div>
+      </div>
+    </div>
     <el-dialog
       title="查看详情"
       :visible.sync="dialogVisibleBrief"
@@ -2382,6 +2467,68 @@ export default {
       isNavTop: 0,
       isShow: 0,
       nameIndex: 0,
+      reviewDescriptionData:[
+        {
+          question: "一、期待学生理解或学会什么?",
+          class:"核心概念",
+          ask:"1.核心概念统领学习目标,与学习目标有较强的适配性;核心概念聚焦,且有概括性及可迁移性",
+          score:"10"
+        },
+        {
+          question: "一、期待学生理解或学会什么?",
+          class:"学习目标",
+          ask:"2.学习目标体现知识、技能和素养的发展;包含行为主体、行为动词、行为条件、表现程度",
+          score:"10"
+        },
+        {
+          question: "二、如何帮助学生理解并进入项目?",
+          class:"驱动性问题",
+          ask:"3.情境有驱动性,能够激发学习兴趣;有开放的问题解决空间;蕴含有指向的学习目标",
+          score:"10"
+        },
+        {
+          question: "二、如何帮助学生理解并进入项目?",
+          class:"核心任务",
+          ask:"4.核心任务基于驱动性问题设计;子任务链符合问题解决逻辑;核心任务关联学习目标",
+          score:"10"
+        },
+        {
+          question: "三、如何帮助学生经历并完成项目?",
+          class:"支持性活动",
+          ask:"5.支持性活动体现学习知识、技能与方法,促进合作等方面;关联核心任务,有效支持完成核心任务",
+          score:"10"
+        },
+        {
+          question: "三、如何帮助学生经历并完成项目?",
+          class:"学习工具",
+          ask:"6.学习工具适宜;反映对表单的创造性设计与使用;学习工具的使用激发深度实践,利于培养专家思维",
+          score:"10"
+        },
+        {
+          question: "四、如何评估学生学习真实发生?",
+          class:"表现性评价",
+          ask:"7.评价维度呼应学习目标;尺度及具体描述设置合理;评价量表结构完整,易于学生使用",
+          score:"10"
+        },
+        {
+          question: "四、如何评估学生学习真实发生?",
+          class:"体现学、教、评的一致性",
+          ask:"8.学习目标、核心任务、支持性活动、表现性评价之间密切关联",
+          score:"10"
+        },
+        {
+          question: "五、对项目式学习有哪些新理解?",
+          class:"项目实施过程中的问题意识",
+          ask:"9.实施过程中,能对产生的问题展开分析;通过分析,提出聚焦的、合理的、有价值的研究点",
+          score:"10"
+        },
+        {
+          question: "五、对项目式学习有哪些新理解?",
+          class:"项目设计与实施中的系统性",
+          ask:"10.理解项目要素;对要素间关系有合乎逻辑的理解",
+          score:"10"
+        }
+      ],
       scoreDetail: [
         {
           id: "",
@@ -2399,9 +2546,25 @@ export default {
           sumScore: 0,
         },
       ],
+      psDialog: true
     };
   },
   methods: {
+    objectSpanMethod({ row, column, rowIndex, columnIndex }) {
+      if (columnIndex === 0) {
+        if (rowIndex % 2 === 0) {
+          return {
+            rowspan: 2,
+            colspan: 1
+          };
+        } else {
+          return {
+            rowspan: 0,
+            colspan: 0
+          };
+        }
+      }
+    },
     handleClose(done) {
       done();
     },
@@ -2526,16 +2689,44 @@ export default {
         });
     },
     addScore() {
-      if (this.scoreDetail[0].scoreAll.first == "") {
-        this.$message.error("请将信息填写完整");
+      if(!this.scoreDetail[0].scoreAll.first){
+        this.$message.error("请先填写评分");
         return;
-      } else if (this.scoreDetail[0].scoreAll.second == "") {
-        this.$message.error("请将信息填写完整");
+      }
+      if (this.scoreDetail[0].scoreAll.first.includes(".")) {
+        this.$message.error("暂时不支持小数点评分");
+        return;
+      }
+      let value = /^\d+$/.test(this.scoreDetail[0].scoreAll.first);
+      // let value = e.replace(/[^d]/g, ""); // 只能输入数字
+      if (value == true) {
+        if (this.scoreDetail[0].scoreAll.first < 0) {
+          this.$message.error("请输入大于0的数值");
+          this.scoreDetail[0].scoreAll.first = "";
+          return;
+        } else if (e > 100) {
+          this.$message.error("数值不能大于100");
+          this.scoreDetail[0].scoreAll.first = "";
+          return;
+        }
+      } else {
+          this.scoreDetail[0].scoreAll.first = "";
+        this.$message.error("请输入数字");
         return;
-      } else if (this.scoreDetail[0].scoreAll.third == "") {
+      }
+
+
+      if (this.scoreDetail[0].scoreAll.first == "") {
         this.$message.error("请将信息填写完整");
         return;
       }
+      //  else if (this.scoreDetail[0].scoreAll.second == "") {
+      //   this.$message.error("请将信息填写完整");
+      //   return;
+      // } else if (this.scoreDetail[0].scoreAll.third == "") {
+      //   this.$message.error("请将信息填写完整");
+      //   return;
+      // }
       //  else if (this.scoreDetail[0].scoreAll.fourth == "") {
       //   this.$message.error("请将信息填写完整");
       //   return;
@@ -4569,4 +4760,133 @@ ol {
   border-radius: 5px;
   cursor: pointer;
 }
+
+.pButton {
+  position: fixed;
+  color: #fff;
+  text-align: center;
+  cursor: pointer;
+  z-index: 2999;
+  right: 0;
+  bottom: 600px;
+  width: 50px;
+  height: 50px;
+  background: #fff;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  box-shadow: 0px 0 8px 0px #c5c5c5;
+}
+
+.newDialogCss {
+  position: fixed;
+  right: 0;
+	bottom:0;
+	width: 450px;
+  height: 650px;
+	max-height:calc(100% - 250px);
+  z-index: 3000;
+  background: #fff;
+  border-radius: 15px;
+  border-top-right-radius: 0px;
+	overflow-x:hidden;
+  border-bottom-right-radius: 0px;
+  box-shadow: 0px 3px 6px 5px rgba(0, 0, 0, 0.1);
+}
+
+.pzTop2 .checkbox {
+  display: flex;
+  align-items: center;
+  padding: 15px 30px;
+  flex: 0 0 auto;
+  font-weight: bold;
+  border-bottom: 1px solid #eee;
+  justify-content: space-between;
+}
+
+.pzTop2 .check {
+  text-align: center;
+  cursor: pointer;
+  box-sizing: border-box;
+  display: flex;
+}
+
+.pzTop2 img {
+  width: 25px;
+  cursor: pointer;
+}
+
+.pzBox {
+  height: calc(100% - 60px);
+  /* background: #ededed; */
+  background: #fff;
+  /* border-radius: 0 0 15px 15px; */
+}
+
+.addPzButton {
+  position: relative;
+  margin-top: 3px;
+  width: 100%;
+}
+
+.addPzButton .img1 {
+  position: absolute;
+  top: 50%;
+  right: 25px;
+  transform: translateY(-50%);
+  height: 100%;
+  display: flex;
+  align-items: center;
+}
+
+.addPzButton .img1 div {
+  display: flex;
+}
+
+.addPzButton .img1 div img {
+  width: 28px;
+  margin-left: 10px;
+  cursor: pointer;
+}
+
+.addPzButton .img1 div span {
+  font-size: 14px;
+  margin: 4px 0 0 3px;
+  color: hsl(0, 0%, 69%);
+}
+
+.psBox {
+  margin-bottom: 50px;
+}
+
+.psBox > div:not(:last-child) {
+  display: flex;
+  align-items: center;
+  margin-top: 20px;
+  padding: 0px 30px;
+}
+
+.psBox > div > span:nth-child(1) {
+  width: fit-content;
+  min-width: fit-content;
+  font-size: 15px;
+  text-align: left;
+  margin-right: auto;
+}
+
+.psBox > div > .number {
+  width: 100px;
+  text-align: center;
+}
+
+.reviewDescription{
+	/* width:100%; */
+	height:auto;
+	overflow:auto;
+	display:flex;
+	justify-content:center;
+	align-items:flex-start;
+	/* box-sizing:border-box; */
+	padding:10px !important;
+}
 </style>

+ 51 - 69
src/components/pages/race/eventCenter/eventMessage.vue

@@ -25,16 +25,18 @@
       <div class="center_box" ref="box1">
         <div class="center_detail" style="margin-bottom: 20px">
           <div style="text-align: center; font-weight: bold; font-size: 18px">
-            <span> 光明区项目式学习教师挑战赛 </span>
+            <span>“相项而行·共筑光明”——光明区项目式学习教师挑战赛</span>
           </div>
           <div style="text-indent: 32px">
             <span
-              >为扎实推进深圳市光明区义务教育阶段项目式学习的实践与探索,提高光明区中小学教师项目式学习设计与实践能力,根据《光明区义务教育阶段项目式学习三年行动计划(2021-2023年)》,启动“深圳市光明区项目式学习教师挑战赛”。</span
+              >为深入贯彻落实国务院《全民科学素质行动规划纲要(2021—2035年)》《广东省基础教育课程教学改革深化行动实施方案(2024-2027年)》《光明区教育发展“十四五”规划》等文件精神,根据《光明区义务教育阶段项目式学习三年行动计划(2024-2026)》,现决定启动“光明区项目式学习教师挑战赛”。
+              </span
             >
           </div>
           <div style="text-indent: 32px">
             <span
-              >本次活动以赛代培、以赛促研,通过教师项目式案例设计、实施、研究等递进的任务驱动激发教师主动研修。采用线上、线下相结合的形式,通过线下研修、微课学习、互动指导、实践研修等多途径帮助教师理解并实践项目式学习,培养理念先进、实操能力强的项目式学习研究骨干教师团队,推动光明区项目式学习向纵深发展。</span
+              >本次活动秉持“以赛促训,以赛兴研”的理念,构建了一系列由浅入深、循序渐进的教师项目式学习案例设计、实施与研究的任务链,旨在深刻触动并加速光明区义务教育及幼儿园教与学方式的变革步伐。在此过程中,我们致力于培育一支既拥有前瞻教育理念又具备卓越实践能力的项目式学习研究骨干教师队伍,他们将成为引领光明区项目式学习向更深层次、更广领域发展的中坚力量。通过此系列活动的持续推动,光明区的教育生态将焕发新的活力,项目式学习不仅将深深植根于日常教学实践之中,更将作为推动区域教育质量整体跃升的重要引擎,开启教育创新发展的新篇章。
+              </span
             >
           </div>
         </div>
@@ -56,20 +58,17 @@
           </div>
           <div style="text-indent: 32px">
             <span
-              >1.参赛范围:光明区17所项目式学习实验校必须参赛,非实验校自愿报名参赛</span
+              >1.参赛范围:深圳市光明区所有义务教育阶段学校和幼儿园。</span
             >
           </div>
           <div style="text-indent: 32px">
             <span
-              >2.参赛形式:参赛学校须成立以校长为组长的项目式学习挑战赛工作小组,同时组成由项目式学习骨干教师参与的3-5人的参赛小组。</span
+              >2.参赛形式:参赛学校须成立以校长(或园长)为组长的项目式学习挑战赛工作小组,同时组成由项目式学习骨干教师参与的3-5人的参赛小组。</span
             >
           </div>
-          <div style="text-indent: 32px">
-            <span>3.报名方式:线上报名。</span>
-          </div>
           <div style="text-indent: 32px">
             <span
-              >4.启动仪式:召集全体参赛团队举行启动仪式并开展赛前培训。</span
+              >3.报名方式:10月8日前将报名表(附件2)发送至邮箱jkykcb@szgm.gov.cn。</span
             >
           </div>
           <div>
@@ -77,79 +76,58 @@
           </div>
           <div style="text-indent: 32px">
             <span
-              >1.微课赋能:光明区教科院将从以往项目式学习研训等活动中遴选表现优秀的教师,由这批教师针对项目式学习的本质、内涵、核心要素等问题录制讲解微课,形成光明区项目式学习微课资源库,为项目式学习挑战赛参赛团队赋能。完成微课录制后,教科院将为微课讲师颁发荣誉证书。各参赛团队完成项目式学习微课库内容的学习后,正式启动挑战赛比赛内容筹备阶段。</span
+              >1.自主学习:参赛教师需深入研读项目式学习相关理论,结合教学实践进行自主学习。
+              </span
             >
           </div>
           <div style="text-indent: 32px">
             <span
-              >2.赛前培训:光明区教科院统一组织特聘PBL教练团队(名单详见附件1)对参赛队伍进行赛前培训,个性化解决挑战赛相关问题。</span
+              >2.赛前培训:光明区教科院面向参赛教师进行两场项目式学习专题讲座,内容涵盖项目式学习的内涵、各要素理解、设计与实施的基本流程、典型案例分享等。</span
             >
           </div>
           <div style="text-indent: 32px">
-            <span>3.10月10日前完成线上报名,10月22日前完成赛前赋能。</span>
+            <span>第一场培训:面向义务教育阶段学校的参赛教师,时间为2024年10月11日8:30-17:30。
+            </span>
           </div>
-          <div>
-            <span>第二阶段:项目式学习案例设计及评选 </span>
+          <div style="text-indent: 32px">
+            <span>第二场培训:面向幼儿园的参赛教师,时间为2024年10月12日8:30-17:30。
+            </span>
           </div>
           <div>
-            <span>(一)案例设计 </span>
+            <span>第二阶段:项目式学习案例设计及评选 </span>
           </div>
           <div style="text-indent: 32px">
             <span
-              >10月下旬,正式启动项目式学习案例设计。每个项目小组教师成员不超过5人。</span
+              >1.项目选题:可结合学科特点和本校(或园)学生实际,选择适合的项目主题,如学科项目、跨学科项目或活动项目。</span
             >
           </div>
-          <div>
-            <span>(二)案例(设计)评选 </span>
-          </div>
           <div style="text-indent: 32px">
             <span
-              >1.提交材料:提交项目式学习案例设计,内容不限字数,word及pdf格式材料各一份,材料命名:<span
-                style="font-weight: bold"
-                >团队编号+学校名称+设计。</span
-              ></span
+              >2.项目组队:每个项目小组教师成员不超过5人。</span
             >
           </div>
           <div style="text-indent: 32px">
-            <span>2.提交方式:线上提交并发送至邮箱jkykcb@szgm.gov.cn。</span>
-          </div>
-          <div style="text-indent: 32px">
-            <span>3.提交时间:2023年10月31日24:00前。</span>
-          </div>
-          <div style="text-indent: 32px">
-            <span>4.评选时间:2023年11月2日。</span>
+            <span
+              >参赛材料:提交项目式学习案例设计,内容不限字数,word及pdf格式材料各一份,材料命名:<span
+                style="font-weight: bold"
+                >学校名称+项目名称+设计。</span
+                >电子版于2024年10月22日前发送至邮箱jkykcb@szgm.gov.cn。
+             </span>
           </div>
           <div>
             <span>第三阶段:项目式学习案例实践与评选 </span>
           </div>
-          <div>
-            <span>(一)案例实践 </span>
-          </div>
           <div style="text-indent: 32px">
             <span
-              >案例设计评选完成后,各参赛团队根据前期设计启动项目式学习案例实践。</span
+              >1.启动项目实践;各参赛团队根据前期设计启动项目式学习案例实践。</span
             >
           </div>
-          <div>
-            <span>(二)案例(实践)评选 </span>
-          </div>
           <div style="text-indent: 32px">
             <span
-              >1.提交材料:提交项目式学习案例实践材料,要求内容能反应团队设计研修、教师指导、学生活动过程,图文并茂,将展示材料及视频、图片原图压缩为一份压缩包文件,命名:<span
-                style="font-weight: bold"
-                >团队编号+学校名称+实践案例名称。</span
-              ></span
+              >参赛材料:提交项目式学习案例实践材料,要求内容能反映团队设计研修、教师指导、学生活动过程,图文并茂,将展示材料及视频、图片原图压缩为一份压缩包文件,命名:<span style="font-weight: bold">学校名称+项目名称+实践案例。</span>电子版于2024年11月18日前发送至邮箱jkykcb@szgm.gov.cn。
+              </span
             >
           </div>
-          <div style="text-indent: 32px">
-            <span>2.提交方式:线上提交并发送至邮箱jkykcb@szgm.gov.cn。</span>
-          </div>
-          <div style="text-indent: 32px">
-            <span>3.提交时间:2023年12月10日24:00前。</span>
-          </div>
-          <div style="text-indent: 32px">
-            <span>4.评选时间:2023年12月12日。</span>
-          </div>
           <div>
             <span>第四阶段:案例展示与颁奖 </span>
           </div>
@@ -158,7 +136,14 @@
           </div>
           <div style="text-indent: 32px">
             <span
-              >根据案例实践的评审结果和案例研究的需要挑选18份案例参加展示活动,并邀请专家现场点评。案例展示的内容可以是从案例设计开始直至案例实践后的反思,也可以是案例中某个环节精彩片段的呈现。案例展示的形式可以是说课、场景再现等多种表现形式,时间10分钟。</span
+              >1.成果展示:根据案例实践的评审结果挑选部分项目成果参加光明区项目式现场展示会。
+              </span
+            >
+          </div>
+          <div style="text-indent: 32px">
+            <span
+              >2.分享展示:根据案例实践的评审结果和案例研究的需要,挑选18份案例参加展示活动,并邀请专家现场点评。案例展示的内容可以是从案例设计开始直至案例实践后的反思,也可以是案例中某个环节精彩片段的呈现。案例展示的形式可以是说课、场景再现等多种表现形式,时间10分钟。
+              </span
             >
           </div>
           <div>
@@ -166,12 +151,9 @@
           </div>
           <div style="text-indent: 32px">
             <span
-              >案例展示结束后,教科院将根据案例设计、案例实践两个环节比赛总分排序为获奖团队颁发证书。</span
+              >教科院将根据案例设计、案例实践两个环节比赛总分排序为获奖团队颁发证书。案例展示与颁奖时间:2024年11月28日。              </span
             >
           </div>
-          <div style="text-indent: 32px">
-            <span>案例展示与颁奖时间:2023年12月28日。</span>
-          </div>
         </div>
       </div>
       <div class="center_box" ref="box2">
@@ -198,7 +180,7 @@
           </div>
           <div style="text-indent: 32px">
             <span
-              >教科院将根据挑战赛各阶段评选结果,分别评选出挑战赛团体一、二、三等奖及优秀组织奖,以及最佳案例设计奖、最佳案例实践奖。并为以上获奖团队以及参加案例展示的团队颁发荣誉证书。</span
+              >教科院将根据挑战赛各阶段评选结果,分别评选出挑战赛团体一、二、三等奖及优秀组织奖,以及案例设计奖、案例实践奖。并为以上获奖团队颁发荣誉证书。</span
             >
           </div>
         </div>
@@ -225,42 +207,42 @@
               <div
                 @click="
                   downloadFile(
-                    'https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/11697695435313.docx',
-                    '光明区特聘PBL教练团队名单'
+                    'https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/%E9%99%84%E4%BB%B61%EF%BC%9A2024%E5%B9%B4%E5%85%89%E6%98%8E%E5%8C%BA%E4%B9%89%E5%8A%A1%E6%95%99%E8%82%B2%E9%98%B6%E6%AE%B5%E5%92%8C%E5%B9%BC%E5%84%BF%E5%9B%AD%E9%A1%B9%E7%9B%AE%E5%BC%8F%E5%AD%A6%E4%B9%A0%E6%95%99%E5%B8%88%E6%8C%91%E6%88%98%E8%B5%9B%E6%B4%BB%E5%8A%A8%E6%96%B9%E6%A1%881728975470136.docx',
+                    '附件1:2024年光明区义务教育阶段和幼儿园项目式学习教师挑战赛活动方案'
                   )
                 "
               >
-                1.光明区特聘PBL教练团队名单
+                1.附件1:2024年光明区义务教育阶段和幼儿园项目式学习教师挑战赛活动方案
               </div>
               <div
                 @click="
                   downloadFile(
-                    'https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/21697695443056.docx',
-                    '光明区项目式学习实验校名单'
+                    'https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/%E9%99%84%E4%BB%B62%EF%BC%9A2024%E5%B9%B4%E5%85%89%E6%98%8E%E5%8C%BA%E9%A1%B9%E7%9B%AE%E5%BC%8F%E6%95%99%E5%B8%88%E6%8C%91%E6%88%98%E8%B5%9B%E6%8A%A5%E5%90%8D%E8%A1%A81728975473248.wps',
+                    '附件2:2024年光明区项目式教师挑战赛报名表'
                   )
                 "
               >
-                2.光明区项目式学习实验校名单
+                2.附件2:2024年光明区项目式教师挑战赛报名表
               </div>
               <div
                 @click="
                   downloadFile(
-                    'https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/31697695448414.docx',
-                    '项目式学习案例格式'
+                    'https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/%E9%99%84%E4%BB%B63%EF%BC%9A%E9%A1%B9%E7%9B%AE%E5%BC%8F%E5%AD%A6%E4%B9%A0%E6%A1%88%E4%BE%8B%E8%AE%BE%E8%AE%A1%E6%A0%BC%E5%BC%8F1728975476113.docx',
+                    '附件3:项目式学习案例设计格式'
                   )
                 "
               >
-                3.项目式学习案例格式
+                3.附件3:项目式学习案例设计格式
               </div>
               <div
                 @click="
                   downloadFile(
-                    'https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/41697695454999.docx',
-                    '项目设计评价量规'
+                    'https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/%E9%99%84%E4%BB%B64%EF%BC%9A%E9%A1%B9%E7%9B%AE%E8%AE%BE%E8%AE%A1%E8%AF%84%E4%BB%B7%E9%87%8F%E8%A7%841728975479127.docx',
+                    '附件4:项目设计评价量规'
                   )
                 "
               >
-                4.项目设计评价量规
+                4.附件4:项目设计评价量规
               </div>
             </div>
           </div>
@@ -468,7 +450,7 @@ export default {
         // elink.download = decodeURI(
         //   _url.split("https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/")[1]
         // );
-        elink.download = n + ".docx";
+        elink.download = n + "." + _url.split('.').pop();
         elink.style.display = "none";
         let blob = new Blob([content]);
         elink.href = URL.createObjectURL(blob);

Einige Dateien werden nicht angezeigt, da zu viele Dateien in diesem Diff geändert wurden.