lsc 2 vuotta sitten
vanhempi
commit
68ec18e548

+ 1 - 1
dist/index.html

@@ -25,4 +25,4 @@
       height: 100%;
       width: 100%;
       background: #e6eaf0;
-    }</style><link href=./static/css/app.396b0f5542803bc797f0fa8eb752e010.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=./static/js/manifest.85f48b0184f614b2b8d9.js></script><script type=text/javascript src=./static/js/vendor.e8eb4c1cc481dbb543fc.js></script><script type=text/javascript src=./static/js/app.b36171c2fa563a4dc5fb.js></script></body></html><script>document.domain = document.domain.split(".").slice(-2).join(".");</script>
+    }</style><link href=./static/css/app.a13b10403dcced0632851f4d0b2a9808.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=./static/js/manifest.85f48b0184f614b2b8d9.js></script><script type=text/javascript src=./static/js/vendor.e8eb4c1cc481dbb543fc.js></script><script type=text/javascript src=./static/js/app.759f6671bd075ab316a5.js></script></body></html><script>document.domain = document.domain.split(".").slice(-2).join(".");</script>

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
dist/static/css/app.396b0f5542803bc797f0fa8eb752e010.css.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
dist/static/css/app.a13b10403dcced0632851f4d0b2a9808.css


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
dist/static/css/app.a13b10403dcced0632851f4d0b2a9808.css.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
dist/static/js/app.759f6671bd075ab316a5.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
dist/static/js/app.759f6671bd075ab316a5.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
dist/static/js/app.b36171c2fa563a4dc5fb.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
dist/static/js/app.b36171c2fa563a4dc5fb.js.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
dist/static/js/manifest.85f48b0184f614b2b8d9.js.map


+ 773 - 0
src/components/pages/components/a.json

@@ -0,0 +1,773 @@
+[
+    {
+        "dyName": "导入环节:发现音乐文化瑰宝",
+        "chapterInfo": [
+            {
+                "isread": false,
+                "chapterid": "0687c9b1-c8d0-0138-dfb5-ccf27d0a05b6",
+                "title": "",
+                "courseName": "",
+                "taskJson": [
+                    {
+                        "task": "了解乐器",
+                        "taskDetail": "<p><span style=\"font-size:12.0pt;font-family:宋体;mso-ascii-font-family:\n\" times=\"\" new=\"\" roman\";mso-hansi-font-family:\"times=\"\" roman\";mso-bidi-font-family:=\"\" \"times=\"\" roman\";mso-ansi-language:en-us;mso-fareast-language:zh-cn;=\"\" mso-bidi-language:ar-sa\"=\"\">游戏:观看视频《青花瓷》,说出视频中出现的乐器名称。</span><br/></p>",
+                        "chapterData": [
+                            {
+                                "name": "视频:民族乐器.mp4",
+                                "url": "https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/视频:民族乐器1653902591063.mp4",
+                                "type": 2
+                            }
+                        ],
+                        "toolText": "",
+                        "toolChoose": [
+                            {
+                                "tool": [
+                                    15
+                                ],
+                                "toolDetail": "观看视频后,点击“问答工具”,回答下列问题。",
+                                "toolType": 2,
+                                "askCount": 1,
+                                "askTitle": "",
+                                "askJson": [
+                                    {
+                                        "askstitle": "",
+                                        "askItem": 1,
+                                        "checkList": []
+                                    }
+                                ],
+                                "answerQ": "请写出你在视频中看到的乐器名称。"
+                            },
+                            {
+                                "tool": [
+                                    16
+                                ],
+                                "toolDetail": "",
+                                "toolType": 2,
+                                "askCount": 1,
+                                "askTitle": "",
+                                "askJson": [
+                                    {
+                                        "askstitle": "",
+                                        "askItem": 1,
+                                        "checkList": []
+                                    }
+                                ]
+                            },
+                            {
+                                "tool": [
+                                    40
+                                ],
+                                "toolDetail": "",
+                                "toolType": 2,
+                                "askCount": 1,
+                                "askTitle": "",
+                                "askJson": [
+                                    {
+                                        "askstitle": "",
+                                        "askItem": 1,
+                                        "checkList": []
+                                    }
+                                ],
+                                "rateJson": [
+                                    {
+                                        "detail": "评价学生的上课态度",
+                                        "score": 5,
+                                        "value": "上课态度"
+                                    },
+                                    {
+                                        "detail": "评价学生的完成作业",
+                                        "score": 5,
+                                        "value": "完成作业"
+                                    }
+                                ]
+                            },
+                            {
+                                "tool": [
+                                    41
+                                ],
+                                "toolDetail": "",
+                                "toolType": 2,
+                                "askCount": 1,
+                                "askTitle": "",
+                                "askJson": [
+                                    {
+                                        "askstitle": "",
+                                        "askItem": 1,
+                                        "checkList": []
+                                    }
+                                ],
+                                "selectJson": {
+                                    "url": "https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/%E6%BC%94%E8%AE%B2%E8%A7%86%E8%A7%9231665709763586.jpg",
+                                    "select": [
+                                        "h发广告个",
+                                        "还好就",
+                                        "林芳芳",
+                                        "还有发"
+                                    ],
+                                    "answer": [
+                                        0,
+                                        3,
+                                        2,
+                                        1
+                                    ]
+                                }
+                            },
+                            {
+                                "tool": [
+                                    4
+                                ],
+                                "toolDetail": "",
+                                "toolType": 2,
+                                "askCount": 2,
+                                "askTitle": "个看看看 个天天",
+                                "askJson": [
+                                    {
+                                        "askstitle": "叫唤好了",
+                                        "askItem": 5,
+                                        "checkList": [
+                                            "客户 科技",
+                                            "接口个还亏 ",
+                                            "开个口 ",
+                                            "好 老何",
+                                            "几个背景看"
+                                        ]
+                                    },
+                                    {
+                                        "askstitle": "一",
+                                        "askItem": 4,
+                                        "checkList": [
+                                            "1",
+                                            "5",
+                                            "%",
+                                            "9"
+                                        ]
+                                    }
+                                ]
+                            }
+                        ],
+                        "isShowTools": true,
+                        "askCount": 1,
+                        "isFold": 0,
+                        "askTitle": "",
+                        "askJson": [
+                            {
+                                "askstitle": "",
+                                "askItem": 1,
+                                "checkList": []
+                            }
+                        ],
+                        "checkJson": [
+                            {
+                                "checkCount": [],
+                                "checkPerent": []
+                            }
+                        ],
+                        "homeworkList": []
+                    },
+                    {
+                        "task": "头脑风暴:乐器具备的条件",
+                        "taskDetail": "<p><span style=\"font-size:12.0pt;font-family:宋体;mso-ascii-font-family:\n\" times=\"\" new=\"\" roman\";mso-hansi-font-family:\"times=\"\" roman\";mso-bidi-font-family:=\"\" \"times=\"\" roman\";mso-ansi-language:en-us;mso-fareast-language:zh-cn;=\"\" mso-bidi-language:ar-sa\"=\"\">小组确定要制作的乐器类型,提出有可能遇到的困难或问题,形成问题清单。</span><br/></p>",
+                        "chapterData": [],
+                        "toolText": "",
+                        "toolChoose": [
+                            {
+                                "tool": [
+                                    3
+                                ],
+                                "toolDetail": "运用“思维导图”完成问题的拆解与分析,并截图上传项目的问题清单。",
+                                "toolType": 1,
+                                "askCount": 1,
+                                "askTitle": "",
+                                "askJson": [
+                                    {
+                                        "askstitle": "",
+                                        "askItem": 1,
+                                        "checkList": []
+                                    }
+                                ]
+                            }
+                        ],
+                        "isShowTools": false,
+                        "askCount": 1,
+                        "isFold": 0,
+                        "askTitle": "",
+                        "askJson": [
+                            {
+                                "askstitle": "",
+                                "askItem": 1,
+                                "checkList": []
+                            }
+                        ],
+                        "checkJson": [
+                            {
+                                "checkCount": [],
+                                "checkPerent": []
+                            }
+                        ],
+                        "homeworkList": [],
+                        "eList": [
+                            {
+                                "value": "严谨性",
+                                "detail": "对于项目中的关键问题以及可能遇到的困难等考虑是否全面",
+                                "score": 5,
+                                "target": [
+                                    {
+                                        "name": "严谨1",
+                                        "per": 0.5
+                                    },
+                                    {
+                                        "name": "严谨2",
+                                        "per": 0.5
+                                    }
+                                ]
+                            },
+                            {
+                                "value": "逻辑性",
+                                "detail": "问题梳理是否清晰有条理",
+                                "score": 5,
+                                "target": [
+                                    {
+                                        "name": "逻辑性1",
+                                        "per": 0.5
+                                    },
+                                    {
+                                        "name": "逻辑性2",
+                                        "per": 0.5
+                                    }
+                                ]
+                            }
+                        ]
+                    }
+                ],
+                "itemCount": 1,
+                "fileList1": [],
+                "video": [],
+                "testData": [],
+                "pData": [],
+                "templateArray": []
+            }
+        ]
+    },
+    {
+        "dyName": "设计方案:乐器设计师",
+        "chapterInfo": [
+            {
+                "isread": false,
+                "chapterid": "953c9660-5b67-174c-e5f3-c1a5ab930ac7",
+                "title": "",
+                "courseName": "",
+                "taskJson": [
+                    {
+                        "task": "方案规划",
+                        "taskDetail": "<p><span style=\"font-size:12.0pt;font-family:宋体;mso-ascii-font-family:\n\" times=\"\" new=\"\" roman\";mso-hansi-font-family:\"times=\"\" roman\";mso-bidi-font-family:=\"\" \"times=\"\" roman\";mso-ansi-language:en-us;mso-fareast-language:zh-cn;=\"\" mso-bidi-language:ar-sa\"=\"\">了解设计方案的步骤及过程,并完成方案规划。<br/></span><span style=\"font-family: 宋体; font-size: 12pt;\">课后学生需要根据方案进行材料、工具的购买与收集。</span><br/></p>",
+                        "chapterData": [
+                            {
+                                "name": "设计方案流程",
+                                "url": "<p><img src=\"https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/%E8%AE%BE%E8%AE%A1%E6%96%B9%E6%A1%88%E6%B5%81%E7%A8%8B1659436789590.png\" style=\"max-width:100%;\"/><br/></p>",
+                                "type": 6
+                            }
+                        ],
+                        "toolText": "",
+                        "toolChoose": [
+                            {
+                                "tool": [
+                                    16
+                                ],
+                                "toolDetail": "",
+                                "toolType": 2,
+                                "askCount": 1,
+                                "askTitle": "",
+                                "askJson": [
+                                    {
+                                        "askstitle": "",
+                                        "askItem": 1,
+                                        "checkList": []
+                                    }
+                                ]
+                            },
+                            {
+                                "tool": [
+                                    23
+                                ],
+                                "toolDetail": "",
+                                "toolType": 3,
+                                "askCount": 1,
+                                "askTitle": "",
+                                "askJson": [
+                                    {
+                                        "askstitle": "",
+                                        "askItem": 1,
+                                        "checkList": []
+                                    }
+                                ]
+                            },
+                            {
+                                "tool": [
+                                    40
+                                ],
+                                "toolDetail": "",
+                                "toolType": 2,
+                                "askCount": 1,
+                                "askTitle": "",
+                                "askJson": [
+                                    {
+                                        "askstitle": "",
+                                        "askItem": 1,
+                                        "checkList": []
+                                    }
+                                ],
+                                "rateJson": [
+                                    {
+                                        "detail": "111二人",
+                                        "score": 5,
+                                        "value": "学习内容"
+                                    },
+                                    {
+                                        "detail": "11二人",
+                                        "score": 5,
+                                        "value": "学习内容"
+                                    }
+                                ]
+                            }
+                        ],
+                        "isShowTools": false,
+                        "askCount": 1,
+                        "isFold": 0,
+                        "askTitle": "",
+                        "askJson": [
+                            {
+                                "askstitle": "",
+                                "askItem": 1,
+                                "checkList": []
+                            }
+                        ],
+                        "checkJson": [
+                            {
+                                "checkCount": [],
+                                "checkPerent": []
+                            }
+                        ],
+                        "homeworkList": [],
+                        "eList": [
+                            {
+                                "value": "方案规划的合理性",
+                                "detail": "步骤流程是否合理",
+                                "score": 5,
+                                "target": [
+                                    {
+                                        "name": "合理性1",
+                                        "per": 0.5
+                                    },
+                                    {
+                                        "name": "合理性2",
+                                        "per": 0.5
+                                    }
+                                ]
+                            },
+                            {
+                                "value": "方案规划的可行性",
+                                "detail": "技术上是否可行",
+                                "score": 5,
+                                "target": [
+                                    {
+                                        "name": "可行性1",
+                                        "per": 0.5
+                                    },
+                                    {
+                                        "name": "可行性2",
+                                        "per": 0.5
+                                    }
+                                ]
+                            }
+                        ]
+                    },
+                    {
+                        "task": "方案设计",
+                        "taskDetail": "<p><span style=\"font-size:12.0pt;font-family:宋体;mso-ascii-font-family:\n\" times=\"\" new=\"\" roman\";mso-hansi-font-family:\"times=\"\" roman\";mso-bidi-font-family:=\"\" \"times=\"\" roman\";mso-ansi-language:en-us;mso-fareast-language:zh-cn;=\"\" mso-bidi-language:ar-sa\"=\"\">撰写乐器设计方案是本环节的一个重点内容,教师提供方案设计的流程图</span><br/></p>",
+                        "chapterData": [
+                            {
+                                "name": "电子乐器制作与演奏 (edu).pdf",
+                                "url": "https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/%E7%94%B5%E5%AD%90%E4%B9%90%E5%99%A8%E5%88%B6%E4%BD%9C%E4%B8%8E%E6%BC%94%E5%A5%8F%20%28edu%291659439923497.pdf",
+                                "type": 3
+                            }
+                        ],
+                        "toolText": "",
+                        "toolChoose": [
+                            {
+                                "tool": [
+                                    7
+                                ],
+                                "toolDetail": "运用“思维网格”进行方案设计的思维发散。",
+                                "toolType": 1,
+                                "askCount": 1,
+                                "askTitle": "",
+                                "askJson": [
+                                    {
+                                        "askstitle": "",
+                                        "askItem": 1,
+                                        "checkList": []
+                                    }
+                                ]
+                            },
+                            {
+                                "tool": [
+                                    1
+                                ],
+                                "toolDetail": "运用“电子白板”绘制方案草图。",
+                                "toolType": 1,
+                                "askCount": 1,
+                                "askTitle": "",
+                                "askJson": [
+                                    {
+                                        "askstitle": "",
+                                        "askItem": 1,
+                                        "checkList": []
+                                    }
+                                ]
+                            }
+                        ],
+                        "isShowTools": false,
+                        "askCount": 1,
+                        "isFold": 0,
+                        "askTitle": "",
+                        "askJson": [
+                            {
+                                "askstitle": "",
+                                "askItem": 1,
+                                "checkList": []
+                            }
+                        ],
+                        "checkJson": [
+                            {
+                                "checkCount": [],
+                                "checkPerent": []
+                            }
+                        ],
+                        "homeworkList": [],
+                        "eList": [
+                            {
+                                "value": "方案设计的合理性",
+                                "detail": "结构设计、系统功能是否合理",
+                                "score": 5,
+                                "target": [
+                                    {
+                                        "name": "合理1",
+                                        "per": 0.5
+                                    },
+                                    {
+                                        "name": "合理2",
+                                        "per": 0.5
+                                    }
+                                ]
+                            },
+                            {
+                                "value": "方案设计的可行性",
+                                "detail": "技术是否可行、现实条件的资源运用是否能够条用等",
+                                "score": 5,
+                                "target": [
+                                    {
+                                        "name": "可行1",
+                                        "per": 0.5
+                                    },
+                                    {
+                                        "name": "可行2",
+                                        "per": 0.5
+                                    }
+                                ]
+                            },
+                            {
+                                "value": "方案设计的创新性",
+                                "detail": "是否存在比较个性化的表达、有趣的交互等",
+                                "score": 5,
+                                "target": [
+                                    {
+                                        "name": "创新1",
+                                        "per": 0.5
+                                    },
+                                    {
+                                        "name": "创新2",
+                                        "per": 0.5
+                                    }
+                                ]
+                            }
+                        ]
+                    }
+                ],
+                "itemCount": 1,
+                "fileList1": [],
+                "video": [],
+                "testData": [],
+                "pData": [],
+                "templateArray": []
+            }
+        ]
+    },
+    {
+        "dyName": "实施方案及优化调试环节:乐器工坊",
+        "chapterInfo": [
+            {
+                "isread": false,
+                "chapterid": "953c9660-5b67-174c-e5f3-c1a5ab930ac7",
+                "title": "",
+                "courseName": "",
+                "taskJson": [
+                    {
+                        "task": "工具学习",
+                        "taskDetail": "<p><span style=\"font-size:12.0pt;font-family:宋体;mso-ascii-font-family:\n\" times=\"\" new=\"\" roman\";mso-hansi-font-family:\"times=\"\" roman\";mso-bidi-font-family:=\"\" \"times=\"\" roman\";mso-ansi-language:en-us;mso-fareast-language:zh-cn;=\"\" mso-bidi-language:ar-sa\"=\"\">了解各种工具的用途、使用方法,提醒安全事项。</span><br/></p>",
+                        "chapterData": [
+                            {
+                                "name": "快速原型结构设计工作坊.pdf",
+                                "url": "https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/%E5%BF%AB%E9%80%9F%E5%8E%9F%E5%9E%8B%E7%BB%93%E6%9E%84%E8%AE%BE%E8%AE%A1%E5%B7%A5%E4%BD%9C%E5%9D%8A1659438368474.pdf",
+                                "type": 3
+                            }
+                        ],
+                        "toolText": "",
+                        "toolChoose": [
+                            {
+                                "tool": [
+                                    4
+                                ],
+                                "toolDetail": "点击“问卷调查”回答相关问题,看看你对这些工具了解多少吧!",
+                                "toolType": 2,
+                                "askCount": 3,
+                                "askTitle": "工具知识测试",
+                                "askJson": [
+                                    {
+                                        "askstitle": "如果想要快速表达产品模块之间的体块关系,可以用什么材料?",
+                                        "askItem": 2,
+                                        "checkList": [
+                                            "高密度泡沫板",
+                                            "瓦楞纸"
+                                        ]
+                                    },
+                                    {
+                                        "askstitle": "如果想要表达温馨的产品风格,选择哪种材料最佳?",
+                                        "askItem": 3,
+                                        "checkList": [
+                                            "木材",
+                                            "塑料",
+                                            "金属"
+                                        ]
+                                    },
+                                    {
+                                        "askstitle": "如果给医院做相关设备,什么颜色适合作为主色调?",
+                                        "askItem": 3,
+                                        "checkList": [
+                                            "红色",
+                                            "蓝色",
+                                            "黄色"
+                                        ]
+                                    }
+                                ]
+                            }
+                        ],
+                        "isShowTools": false,
+                        "askCount": 1,
+                        "isFold": 0,
+                        "askTitle": "",
+                        "askJson": [
+                            {
+                                "askstitle": "",
+                                "askItem": 1,
+                                "checkList": []
+                            }
+                        ],
+                        "checkJson": [
+                            {
+                                "checkCount": [],
+                                "checkPerent": []
+                            }
+                        ],
+                        "homeworkList": []
+                    },
+                    {
+                        "task": "制作原型",
+                        "taskDetail": "<p style=\"text-indent:24.0pt;mso-char-indent-count:2.0;\nline-height:150%\"><span style=\"font-size:12.0pt;line-height:150%;font-family:\n宋体;mso-ascii-font-family:\" times=\"\" new=\"\" roman\";mso-hansi-font-family:\"times=\"\" roman\";=\"\" color:black\"=\"\">按照设计方案及实际情况进行制作,并及时对设计方案进行修正或改进,记录制作过程。</span><span style=\"font-size: 12pt; line-height: 150%;\"></span></p>",
+                        "chapterData": [
+                            {
+                                "name": "电子乐器制作与演奏 (edu).pdf",
+                                "url": "https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/%E7%94%B5%E5%AD%90%E4%B9%90%E5%99%A8%E5%88%B6%E4%BD%9C%E4%B8%8E%E6%BC%94%E5%A5%8F%20%28edu%291659438813590.pdf",
+                                "type": 3
+                            }
+                        ],
+                        "toolText": "",
+                        "toolChoose": [
+                            {
+                                "tool": [
+                                    18
+                                ],
+                                "toolDetail": "模型训练与测试优化",
+                                "toolType": 3,
+                                "askCount": 1,
+                                "askTitle": "",
+                                "askJson": [
+                                    {
+                                        "askstitle": "",
+                                        "askItem": 1,
+                                        "checkList": []
+                                    }
+                                ]
+                            },
+                            {
+                                "tool": [
+                                    21
+                                ],
+                                "toolDetail": "程序设计并测试优化",
+                                "toolType": 3,
+                                "askCount": 1,
+                                "askTitle": "",
+                                "askJson": [
+                                    {
+                                        "askstitle": "",
+                                        "askItem": 1,
+                                        "checkList": []
+                                    }
+                                ]
+                            },
+                            {
+                                "tool": [
+                                    16
+                                ],
+                                "toolDetail": "完成原型制作,并拍照上传",
+                                "toolType": 2,
+                                "askCount": 1,
+                                "askTitle": "",
+                                "askJson": [
+                                    {
+                                        "askstitle": "",
+                                        "askItem": 1,
+                                        "checkList": []
+                                    }
+                                ]
+                            }
+                        ],
+                        "isShowTools": false,
+                        "askCount": 1,
+                        "isFold": 0,
+                        "askTitle": "",
+                        "askJson": [
+                            {
+                                "askstitle": "",
+                                "askItem": 1,
+                                "checkList": []
+                            }
+                        ],
+                        "checkJson": [
+                            {
+                                "checkCount": [],
+                                "checkPerent": []
+                            }
+                        ],
+                        "homeworkList": [],
+                        "eList": [
+                            {
+                                "value": "完成度",
+                                "detail": "产品是否完成",
+                                "score": 5
+                            },
+                            {
+                                "value": "创新性",
+                                "detail": "产品创新性与交互性是否有趣生动",
+                                "score": 5
+                            },
+                            {
+                                "value": "美观性",
+                                "detail": "外观造型是否美观",
+                                "score": 5
+                            }
+                        ]
+                    }
+                ],
+                "itemCount": 1,
+                "fileList1": [],
+                "video": [],
+                "testData": [],
+                "pData": [],
+                "templateArray": []
+            }
+        ]
+    },
+    {
+        "dyName": "展示交流与反思环节",
+        "chapterInfo": [
+            {
+                "isread": false,
+                "chapterid": "953c9660-5b67-174c-e5f3-c1a5ab930ac7",
+                "title": "",
+                "courseName": "",
+                "taskJson": [
+                    {
+                        "taskDetail": "<p style=\"line-height:150%\"><span style=\"font-size:12.0pt;\nline-height:150%;font-family:宋体;mso-ascii-font-family:\" times=\"\" new=\"\" roman\";=\"\" mso-hansi-font-family:\"times=\"\" roman\"\"=\"\">分组介绍自制乐器并用其演奏《小星星》。</span></p>",
+                        "task": "我们的演奏会",
+                        "chapterData": [],
+                        "toolText": "",
+                        "toolChoose": [
+                            {
+                                "tool": [
+                                    16
+                                ],
+                                "toolDetail": "提交相关汇报材料。",
+                                "toolType": 2,
+                                "askCount": 1,
+                                "askTitle": "",
+                                "askJson": [
+                                    {
+                                        "askstitle": "",
+                                        "askItem": 1,
+                                        "checkList": []
+                                    }
+                                ]
+                            }
+                        ],
+                        "isShowTools": false,
+                        "askCount": 1,
+                        "isFold": 0,
+                        "askTitle": "",
+                        "askJson": [
+                            {
+                                "askstitle": "",
+                                "askItem": 1,
+                                "checkList": []
+                            }
+                        ],
+                        "checkJson": [
+                            {
+                                "checkCount": [],
+                                "checkPerent": []
+                            }
+                        ],
+                        "homeworkList": [],
+                        "eList": [
+                            {
+                                "value": "科学探究能力",
+                                "detail": "作品过程中是否对于某个问题进行探究以及解决",
+                                "score": 5
+                            },
+                            {
+                                "value": "实践创新能力",
+                                "detail": "实践过程中遇到问题解决方法是否能够另辟蹊径",
+                                "score": 5
+                            },
+                            {
+                                "value": "学习反思能力",
+                                "detail": "对于学习过程是否能够及时发现项目中的问题并及时调整",
+                                "score": 5
+                            },
+                            {
+                                "value": "工程思维能力",
+                                "detail": "思考与解决问题的逻辑是否清晰",
+                                "score": 5
+                            }
+                        ]
+                    }
+                ],
+                "itemCount": 1,
+                "fileList1": [],
+                "video": [],
+                "testData": [],
+                "pData": [],
+                "templateArray": []
+            }
+        ]
+    }
+]

+ 79 - 48
src/components/pages/components/report/courseInfo.vue

@@ -8,31 +8,23 @@
         <span>创建人:</span><span>{{ courseInfo.name }}</span>
       </div>
       <div class="ci_info_box">
-        <span>协同人员:</span
-        ><span>{{ teacher ? teacher : "无协同人员" }}</span>
+        <span>协同人员:</span><span>{{ teacher ? teacher : "无协同人员" }}</span>
       </div>
       <div class="ci_info_box2">
         <div>
-          阶段<span>{{ tool.stage }}</span
-          >个
+          阶段<span>{{ tool.stage }}</span>个
         </div>
         <div>
-          任务<span>{{ tool.task }}</span
-          >个
+          任务<span>{{ tool.task }}</span>个
         </div>
         <div>
-          工具<span>{{ tool.tool }}</span
-          >个
+          工具<span>{{ tool.tool }}</span>个
         </div>
       </div>
     </div>
     <div style="width: 90%; height: calc(100% - 130px); margin: 10px auto 0">
       <!-- <img src="../../assets/dataimage/1.png" style="width:90%" /> -->
-      <div
-        id="charts_canvas"
-        class="echart"
-        style="width: 100%; height: 100%"
-      ></div>
+      <div id="charts_canvas" class="echart" style="width: 100%; height: 100%"></div>
     </div>
   </div>
 </template>
@@ -42,6 +34,7 @@ export default {
   props: ["courseid"],
   data() {
     return {
+      chartJson: {},
       courseInfo: {},
       teacher: "",
       chartObj: null,
@@ -51,42 +44,37 @@ export default {
         tool: 0,
       },
       option: {
-        title: {
-          text: "项目汇总",
-          textStyle: {
-            fontSize: 13,
-            fontWeight: 0,
-          },
-        },
-        tooltip: {
-          trigger: "axis",
-          axisPointer: {
-            type: "shadow",
-          },
-        },
-        grid: {
-          left: "10%",
-          right: "5%",
-          bottom: "10%",
-          top: "12%",
-        },
-        xAxis: {
-          type: "value",
-          boundaryGap: [0, 0.01],
+        legend: {
+          top: "bottom",
         },
-        yAxis: {
-          type: "category",
-          data: ["图片", "互动", "问答", "问卷", "视频"],
+        toolbox: {
+          show: true,
         },
+        grid: {},
         series: [
           {
-            name: "个数",
-            type: "bar",
-            data: [10, 12, 5, 6, 7],
-            barWidth: "40%",
+            bottom: "20%",
+            name: "学习活动时间分配图",
+            type: "pie",
+            radius: [10, "80%"],
+            center: ["50%", "50%"],
+            roseType: "area",
+            itemStyle: {
+              borderRadius: 8,
+            },
             label: {
               show: true,
+              position: "inside",
+              formatter: "{b}\n{d}%",
             },
+            data: [
+              { value: 0, name: "思维网格" },
+              { value: 0, name: "思维导图" },
+              { value: 0, name: "电子白板" },
+              { value: 0, name: "选择题" },
+              // { value: 0, name: "自主学习" },
+              { value: 0, name: "其他" },
+            ],
           },
         ],
       },
@@ -128,6 +116,12 @@ export default {
           let chapters = JSON.parse(res.data[0][0].chapters);
           var task = 0;
           var tool = 0;
+
+          var wang = 0;//7
+          var si = 0;//3
+          var dian = 0;//1
+          var xuan = 0;//4
+          var other = 0;
           for (var i = 0; i < chapters.length; i++) {
             task += chapters[i].chapterInfo[0].taskJson.length;
             for (
@@ -135,9 +129,32 @@ export default {
               j < chapters[i].chapterInfo[0].taskJson.length;
               j++
             ) {
+              if (chapters[i].chapterInfo[0].taskJson[j].toolChoose.length) {
+                for (var k = 0; k < chapters[i].chapterInfo[0].taskJson[j].toolChoose.length; k++) {
+                  if (chapters[i].chapterInfo[0].taskJson[j].toolChoose[k].tool.indexOf(7) != -1) {
+                    wang++
+                  } else if (chapters[i].chapterInfo[0].taskJson[j].toolChoose[k].tool.indexOf(3) != -1) {
+                    si++
+                  } else if (chapters[i].chapterInfo[0].taskJson[j].toolChoose[k].tool.indexOf(1) != -1) {
+                    dian++
+                  } else if (chapters[i].chapterInfo[0].taskJson[j].toolChoose[k].tool.indexOf(4) != -1) {
+                    xuan++
+                  } else {
+                    other++
+                  }
+                }
+              }
+
               tool += chapters[i].chapterInfo[0].taskJson[j].toolChoose.length;
             }
           }
+          this.chartJson = {
+            wang,
+            si,
+            dian,
+            xuan,
+            other
+          }
           this.tool.stage = chapters.length;
           this.tool.task = task;
           this.tool.tool = tool;
@@ -162,10 +179,17 @@ export default {
           //   document.getElementById("#charts_canvas")
         );
         let _array = [];
-        for (var i = 0; i < 5; i++) {
-          _array.push(this.randomNum(0, 15));
-        }
-        this.option.series[0].data = _array;
+        // for (var i = 0; i < 5; i++) {
+        //   this.option.series[0].data[i].value = this.randomNum(30, 80);
+        //   // _array.push(this.randomNum(0, 80));
+        // }
+        this.option.series[0].data[0].value = this.chartJson.wang
+        this.option.series[0].data[1].value = this.chartJson.si
+        this.option.series[0].data[2].value = this.chartJson.dian
+        this.option.series[0].data[3].value = this.chartJson.xuan
+        this.option.series[0].data[4].value = this.chartJson.other
+
+        // this.option.series[0].data[0].value = _array;
         // 初始化雷达图
         this.chartObj = chartObj;
         this.chartObj.setOption(this.option);
@@ -193,22 +217,27 @@ export default {
 .ci_info {
   font-size: 14px;
 }
+
 .ci_info_box {
   width: 90%;
   margin: 0 auto;
   display: flex;
 }
+
 .ci_info_box span {
   white-space: nowrap;
 }
-.ci_info_box span + span {
+
+.ci_info_box span+span {
   width: 100%;
   overflow: hidden;
   text-overflow: ellipsis;
 }
-.ci_info_box + .ci_info_box {
+
+.ci_info_box+.ci_info_box {
   margin-top: 10px;
 }
+
 .ci_info_box2 {
   width: 90%;
   margin: 0 auto;
@@ -219,10 +248,12 @@ export default {
   color: rgb(15, 120, 187);
   align-items: center;
 }
+
 .ci_info_box2 div {
   display: flex;
   align-items: center;
 }
+
 .ci_info_box2 span {
   color: rgb(234, 146, 59);
   width: 30px;

+ 227 - 24
src/components/pages/components/report/coursePie.vue

@@ -1,21 +1,71 @@
 <template>
   <div>
-    <div style="width: 95%; height: calc(100%)">
+    <div style="width: 95%; height: calc(100% - 40px); margin: 20px auto;">
       <!-- <img src="../../assets/dataimage/1.png" style="width:90%" /> -->
-      <div
+      <!-- <div
         id="charts_canvas"
         class="echart"
         style="width: 100%; height: 100%"
-      ></div>
+      ></div> -->
+      <div id="charts_canvas3" class="echart" ref="table">
+        <!-- <div style="font-size: 13px; font-weight: 600">
+          项目综合评估:各个阶段评价平均分
+        </div> -->
+        <el-table class="table" :data="tdata" :height="tableHeight" :fit="true" style="width: 100%" :header-cell-style="{
+          background: '#fff',
+          fontSize: '12px',
+          fontWeight: 'unset',
+          padding: '0',
+          border: 'unset',
+        }" :row-class-name="tableRowClassName" header-row-class-name="header_row_class">
+          <el-table-column label="排名" min-width="29px" align="center">
+            <template slot-scope="scope">
+              <div style="font-weight: 600">{{ scope.$index + 1 }}</div>
+            </template>
+          </el-table-column>
+          <el-table-column prop="name" label="名称" min-width="39px" align="center">
+            <template slot-scope="scope">
+              <div style="color: rgb(96, 96, 96); font-weight: 600">
+                {{ scope.row.name }}
+              </div>
+            </template>
+          </el-table-column>
+          <el-table-column prop="rate" label="完成度" min-width="39px" align="center"><template slot-scope="scope">
+              <div style="color: rgb(35, 91, 188); font-weight: 600">
+                {{ scope.row.rate }}
+              </div>
+            </template></el-table-column>
+          <el-table-column prop="rate1" label="活跃度" min-width="39px" align="center"><template slot-scope="scope">
+              <div style="color: rgb(35, 91, 188); font-weight: 600">
+                {{ scope.row.rate1 }}
+              </div>
+            </template></el-table-column>
+          <el-table-column prop="rate2" label="参与度" min-width="39px" align="center"><template slot-scope="scope">
+              <div style="color: rgb(35, 91, 188); font-weight: 600">
+                {{ scope.row.rate2 }}
+              </div>
+            </template></el-table-column>
+          <el-table-column prop="rate3" label="综合表现" min-width="49px" align="center"><template slot-scope="scope">
+              <div style="color: rgb(233, 140, 148);font-weight: 600">{{ scope.row.rate3 }}</div>
+            </template></el-table-column>
+          <!-- <el-table-column prop="ratez" label="综合" min-width="29px" align="center"><template slot-scope="scope">
+              <div style="color: rgb(233, 140, 148);font-weight: 600">{{ scope.row.ratez }}</div>
+            </template></el-table-column> -->
+        </el-table>
+      </div>
     </div>
   </div>
 </template>
 
 <script>
 export default {
+  props: ["userid", "courseid"],
   data() {
     return {
+      workJson: [],
       chartObj: null,
+      tdata: [],
+      tableHeight: 0,
       option: {
         legend: {
           top: "bottom",
@@ -54,6 +104,13 @@ export default {
     };
   },
   methods: {
+    tableRowClassName({ row, rowIndex }) {
+      if ((rowIndex + 1) % 2 === 0) {
+        return "even_row row_class";
+      } else {
+        return "row_class";
+      }
+    },
     randomNum(minNum, maxNum) {
       switch (arguments.length) {
         case 1:
@@ -67,6 +124,91 @@ export default {
           break;
       }
     },
+    getInfo() {
+      let params = {
+        uid: this.userid,
+        cid: this.courseid,
+      };
+      console.log(this.userid);
+      if (!this.userid) {
+        return;
+      }
+      this.ajax
+        .get(this.$store.state.api + "getUserInfo", params)
+        .then((res) => {
+          let chapters = JSON.parse(res.data[2][0].chapters);
+          var tool = 0;
+          let workJson = []
+          let _pWork = res.data[3];
+          let _allWork = res.data[4];
+          let _allComment = res.data[5];
+
+          for (var i = 0; i < chapters.length; i++) {
+            workJson[i] = { tool: 0, ptool: 0, work: 0, ishuo: 0, isCan: 0 }
+            for (
+              var j = 0;
+              j < chapters[i].chapterInfo[0].taskJson.length;
+              j++
+            ) {
+              // 1、电子白板,3、思维导图,6协同文档,7思维网格 16、作业提交,40.项目-学生互评 41.项目-下拉选择题 42.项目-录音功能
+              let _toolsAarry = [1, 3, 6, 7, 16, 15, 4, 40, 41, 42];
+              for (
+                var k = 0;
+                k < chapters[i].chapterInfo[0].taskJson[j].toolChoose.length;
+                k++
+              ) {
+                if (
+                  _toolsAarry.indexOf(
+                    chapters[i].chapterInfo[0].taskJson[j].toolChoose[k].tool[0]
+                  ) != -1
+                ) {
+                  tool++;
+                  workJson[i].tool++
+                }
+              }
+            }
+
+            for (var k = 0; k < _pWork.length; k++) {
+              if (_pWork[k].stage == i) {
+                workJson[i].ptool++
+              }
+            }
+            for (var k = 0; k < _allComment.length; k++) {
+              if (_allComment[k].stage == i) {
+                workJson[i].ishuo++
+              }
+            }
+
+
+          }
+          this.userinfo = res.data[0][0];
+          this.ccount = tool;
+          this.islearn = tool - parseInt(res.data[1][0].vcount);
+
+          this.iscount = res.data[1][0].vcount;
+          this.vcount = 0;
+
+          for (var i = 0; i < workJson.length; i++) {
+            if (workJson[i].ptool > workJson[i].tool) {
+              workJson[i].work = 5
+            } else if( workJson[i].tool === 0){
+              workJson[i].work = 5
+            }else{
+              workJson[i].work = Math.round(workJson[i].ptool / workJson[i].tool * 100 / 20)
+            }
+            if (workJson[i].ptool) {
+              workJson[i].isCan = 1
+            }
+          }
+          this.workJson = workJson
+
+          console.log(workJson);
+          this.setChart();
+        })
+        .catch((err) => {
+          console.error(err);
+        });
+    },
     setChart() {
       // 雷达图显示的标签
       let newPromise = new Promise((resolve) => {
@@ -74,36 +216,97 @@ export default {
       });
       //然后异步执行echarts的初始化函数
       newPromise.then(() => {
-        const chartObj = this.$echarts.init(
-          //劳动课程
-          this.$el.querySelector("#charts_canvas")
-          //   document.getElementById("#charts_canvas")
-        );
-        let _array = [];
-        for (var i = 0; i < 6; i++) {
-          this.option.series[0].data[i].value = this.randomNum(30, 80);
-          // _array.push(this.randomNum(0, 80));
-        }
-        // this.option.series[0].data[0].value = _array;
-        // 初始化雷达图
-        this.chartObj = chartObj;
-        this.chartObj.setOption(this.option);
-      });
-      let _this = this;
-      window.addEventListener("resize", () => {
-        if (_this.chartObj) {
-          _this.chartObj.resize();
+        // const chartObj = this.$echarts.init(
+        //   //劳动课程
+        //   this.$el.querySelector("#charts_canvas")
+        //   //   document.getElementById("#charts_canvas")
+        // );
+        // let _array = [];
+        // for (var i = 0; i < 6; i++) {
+        //   this.option.series[0].data[i].value = this.randomNum(30, 80);
+        //   // _array.push(this.randomNum(0, 80));
+        // }
+        // // this.option.series[0].data[0].value = _array;
+        // // 初始化雷达图
+        // this.chartObj = chartObj;
+        // this.chartObj.setOption(this.option);
+
+        this.tdata = [];
+        for (var i = 0; i < this.workJson.length; i++) {
+          var _rate = this.workJson[i].work < 3 ? 3 : this.workJson[i].work;
+          var _rate1 = this.workJson[i].ishuo ? 5 : 3;
+          var _rate2 = this.workJson[i].isCan ? 5 : 3;
+          var _rate3 = (_rate + _rate1 + _rate2) / 3;
+          var _ratez = (_rate + _rate1 + _rate2 + _rate3) / 4;
+          this.tdata.push({
+            name: "阶段" + (i + 1),
+            rate: _rate.toFixed(1),
+            rate1: _rate1.toFixed(1),
+            rate2: _rate2.toFixed(1),
+            rate3: _rate3.toFixed(1),
+            ratez: _ratez.toFixed(1),
+          });
         }
+        this.tdata.sort(this.sortId);
+        this.$nextTick(() => {
+          this.setTableHeight();
+        });
       });
+      // let _this = this;
+      // window.addEventListener("resize", () => {
+      //   if (_this.chartObj) {
+      //     _this.chartObj.resize();
+      //   }
+      // });
+    },
+    sortId(a, b) {
+      return b.ratez - a.ratez;
+    },
+    setTableHeight() {
+      this.tableHeight =
+        window.innerHeight - this.$refs.table.offsetHeight - 600;
+      // 监听窗口大小变化
+    },
+  },
+  watch: {
+    userid(newValue, oldValue) {
+      this.getInfo();
     },
   },
   mounted() {
     this.$nextTick(() => {
-      this.setChart();
+      this.getInfo();
     });
   },
 };
 </script>
 
-<style>
+<style scoped>
+.el-table>>>.even_row {
+  background-color: rgb(238, 243, 250) !important;
+}
+
+.el-table>>>.row_class td {
+  padding: 8px 0;
+  border: unset;
+}
+
+.el-table>>>.row_class {
+  background: rgb(249, 249, 249);
+}
+
+.el-table>>>.row_class .cell {
+  padding: 0;
+  white-space: nowrap;
+  font-size: 12px;
+}
+
+.el-table>>>.header_row_class .cell {
+  padding: 0;
+  white-space: nowrap;
+}
+
+.el-table::before {
+  height: 0;
+}
 </style>

+ 151 - 81
src/components/pages/components/report/courseRadar.vue

@@ -1,105 +1,75 @@
 <template>
   <div>
-    <div style="width: 95%; height: calc(100%)">
+    <div style="width: 95%; height: calc(100%);margin: 0 auto;">
       <!-- <img src="../../assets/dataimage/1.png" style="width:90%" /> -->
-      <div
-        id="charts_canvas"
-        class="echart"
-        style="width: 100%; height: 100%"
-      ></div>
+      <div id="charts_canvas" class="echart" style="width: 100%; height: 100%"></div>
     </div>
   </div>
 </template>
 
 <script>
 export default {
+  props: ["userid", "courseid"],
   data() {
     return {
+      workJson: [],
       chartObj: null,
       option: {
-        splitNumber: 5,
+        // title: {
+        //   text: "项目完成度:各个阶段完成情况",
+        //   textStyle: {
+        //     fontSize: 13,
+        //   },
+        // },
         tooltip: {
-          triggerOn: "mousemove",
-          //雷达图的tooltip不会超出div,也可以设置position属性,position定位的tooltip 不会随着鼠标移动而位置变化,不友好
-          confine: true,
-          enterable: true, //鼠标是否可以移动到tooltip区域内
-          backgroundColor: "rgba(255,255,255,0.7)",
-          textStyle: {
-            // 文字样式
-            align: "left",
+          trigger: "axis",
+          axisPointer: {
+            type: "cross",
+            label: {
+              backgroundColor: "#6a7985",
+            },
           },
-          left: "right",
+        },
+        legend: {
+          data: ["个人完成度", "班级平均完成度"],
           top: "bottom",
+          icon: "circle",
         },
-        radar: {
-          radius: ["0%", "60%"],
-          //   shape: "circle",
-          center: ["50%", "50%"],
-          axisName: {
-            textStyle: {
-              // 文字样式
-              color: "#58a5e6",
-            },
-            formatter: function (value, indicator) {
-              value = value.replace(/\S{2}/g, function (match) {
-                return match + "\n";
-              });
-              return value;
-            },
-          },
-          indicator: [
-            { name: "项目完成度" },
-            { name: "项目参与度" },
-            { name: "项目活跃度" },
-            { name: "项目综合效果" },
-            { name: "项目调控度" },
-            // 雷达图的指示器,用来指定雷达图中的多个变量(维度)
-          ],
+        grid: {
+          left: "15%",
+          right: "5%",
+          bottom: "20%",
+          top: "15%",
         },
-        // 雷达图背景的颜色,在这儿随便设置了一个颜色,完全不透明度为0,就实现了透明背景
-        splitArea: {
-          show: true,
-          areaStyle: {
-            color: "rgba(255,0,0,0)", // 图表背景的颜色
+        xAxis: [
+          {
+            type: "category",
+            data: [],
           },
-        },
-        splitLine: {
-          show: true,
-          lineStyle: {
-            width: 1,
-            color: "rgba(131,141,158,.1)", // 设置网格的颜色
+        ],
+        yAxis: [
+          {
+            type: "value",
           },
-        },
+        ],
         series: [
           {
-            name: "项目概况", // tooltip中的标题
-            type: "radar", // 表示是雷达图
-            symbol: "circle", // 拐点的样式,还可以取值'rect','angle'等
-            symbolSize: 8, // 拐点的大小
-            areaStyle: {
-              normal: {
-                width: 1,
-                opacity: 0.2,
-              },
+            name: "个人完成度",
+            type: "line",
+            areaStyle: {},
+            data: [],
+            label: {
+              show: true,
             },
+          },
+          {
+            name: "班级平均完成度",
+            type: "line",
+            areaStyle: {},
+            data: [],
             label: {
               show: true,
             },
-            data: [
-              {
-                // 设置各个指标原始值
-                value: [],
-                // 设置区域边框和区域的颜色
-                itemStyle: {
-                  normal: {
-                    color: "#58a5e6",
-                    lineStyle: {
-                      color: "#58a5e6",
-                    },
-                  },
-                },
-              },
-            ],
           },
         ],
       },
@@ -119,6 +89,94 @@ export default {
           break;
       }
     },
+    getInfo() {
+      let params = {
+        uid: this.userid,
+        cid: this.courseid,
+      };
+      console.log(this.userid);
+      if (!this.userid) {
+        return;
+      }
+      this.ajax
+        .get(this.$store.state.api + "getUserInfo", params)
+        .then((res) => {
+          let chapters = JSON.parse(res.data[2][0].chapters);
+          var tool = 0;
+          let workJson = []
+          let _pWork = res.data[3];
+          let _allWork = res.data[4];
+
+          for (var i = 0; i < chapters.length; i++) {
+            workJson[i] = { tool: 0, ptool: 0, work: 0, allTool: 0, allWork: 0 }
+            for (
+              var j = 0;
+              j < chapters[i].chapterInfo[0].taskJson.length;
+              j++
+            ) {
+              // 1、电子白板,3、思维导图,6协同文档,7思维网格 16、作业提交,40.项目-学生互评 41.项目-下拉选择题 42.项目-录音功能
+              let _toolsAarry = [1, 3, 6, 7, 16, 15, 4, 40, 41, 42];
+              for (
+                var k = 0;
+                k < chapters[i].chapterInfo[0].taskJson[j].toolChoose.length;
+                k++
+              ) {
+                if (
+                  _toolsAarry.indexOf(
+                    chapters[i].chapterInfo[0].taskJson[j].toolChoose[k].tool[0]
+                  ) != -1
+                ) {
+                  tool++;
+                  workJson[i].tool++
+                }
+              }
+            }
+
+            for (var k = 0; k < _pWork.length; k++) {
+              if (_pWork[k].stage == i) {
+                workJson[i].ptool++
+              }
+            }
+            for (var k = 0; k < _allWork.length; k++) {
+              if (_allWork[k].stage == i) {
+                workJson[i].allTool++
+              }
+            }
+
+          }
+          this.userinfo = res.data[0][0];
+          this.ccount = tool;
+          this.islearn = tool - parseInt(res.data[1][0].vcount);
+
+          this.iscount = res.data[1][0].vcount;
+          this.vcount = 0;
+
+          for (var i = 0; i < workJson.length; i++) {
+            if (workJson[i].ptool > workJson[i].tool) {
+              workJson[i].work = 100
+            } else if( workJson[i].tool === 0){
+              workJson[i].work = 100
+            } else {
+              workJson[i].work = Math.round(workJson[i].ptool / workJson[i].tool * 100)
+            }
+
+            if ((workJson[i].allTool / res.data[1][0].workCount) > workJson[i].tool) {
+              workJson[i].allWork = 100
+            } else {
+              workJson[i].allWork = Math.round((workJson[i].allTool / res.data[1][0].workCount) / workJson[i].tool * 100)
+            }
+          }
+          this.workJson = workJson
+
+
+
+          console.log(workJson);
+          this.setChart();
+        })
+        .catch((err) => {
+          console.error(err);
+        });
+    },
     setChart() {
       // 雷达图显示的标签
       let newPromise = new Promise((resolve) => {
@@ -131,12 +189,18 @@ export default {
           this.$el.querySelector("#charts_canvas")
           //   document.getElementById("#charts_canvas")
         );
-        let _array = [];
-        for (var i = 0; i < 5; i++) {
+        let _array1 = [];
+        let _array2 = [];
+        let _xarray = [];
+        for (var i = 0; i < this.workJson.length; i++) {
           //   this.option.series[0].data[i].value = this.randomNum(30, 80);
-          _array.push(this.randomNum(0, 80));
+          _array1.push(this.workJson[i].work);
+          _array2.push(this.workJson[i].allWork);
+          _xarray.push("阶段" + (i + 1))
         }
-        this.option.series[0].data[0].value = _array;
+        this.option.series[0].data = _array1;
+        this.option.xAxis[0].data = _xarray;
+        this.option.series[1].data = _array2;
         // 初始化雷达图
         this.chartObj = chartObj;
         this.chartObj.setOption(this.option);
@@ -149,13 +213,19 @@ export default {
       });
     },
   },
+  watch: {
+    userid(newValue, oldValue) {
+      this.getInfo();
+    },
+  },
   mounted() {
     this.$nextTick(() => {
-      this.setChart();
+      this.getInfo();
     });
   },
 };
 </script>
 
 <style>
+
 </style>

+ 593 - 207
src/components/pages/components/report/studentAbility.vue

@@ -2,32 +2,57 @@
   <div>
     <div style="background: #fff; padding: 10px 0; height: 100%">
       <div class="sd_person_button">
-        <span @click="setType(1)" :class="{ active: type == 1 }">全部</span>
-        <span @click="setType(2)" :class="{ active: type == 2 }">本项目</span>
-        <span @click="setType(3)" :class="{ active: type == 3 }">其他项目</span>
+        <span @click="setType(1)" :class="{ active: type == 1 }">项目目标设置</span>
+        <span @click="setType(2)" :class="{ active: type == 2 }">班级项目评价得分占比</span>
+        <!-- <span @click="setType(3)" :class="{ active: type == 3 }">其他项目</span> -->
       </div>
       <div style="display: flex; width: 100%; height: calc(100% - 50px)">
-        <div
-          id="person_canvas1"
-          class="echart"
-          style="width: 50%; height: 100%"
-        ></div>
-        <div
-          id="person_canvas2"
-          class="echart"
-          style="width: 50%; height: 100%; margin: 0 0 0 1rem"
-        ></div>
+        <div id="person_canvas1" class="echart" v-if="type == 1"
+          style="width: 100%; height: 100%;display: flex;align-items: center;justify-content: center;">
+          <span v-if="!eJson">暂无数据</span>
+        </div>
+        <div id="person_canvas2" class="echart" v-if="type == 2" style="width: 100%; height: 100%;display: flex;align-items: center;justify-content: center;">
+          <div class="box2" v-if="work.length">
+            <div v-for="(item,index) in work" :key="index" class="target_box">
+              <div class="target_task">
+                <span>第{{item.stage+1}}阶段</span>
+                <span>任务{{item.task+1}}</span>
+              </div>
+              <div class="target_content_box">
+                <div v-for="(target,k) in item.work" :key="index+'-'+k"
+                  :style="{width:(target.count / item.count * 100)+'%',backgroundColor:color[k]}">
+
+                  <el-tooltip :content="target.name+' '+target.count">
+                    <span class="targetA">{{target.count}}</span>
+                  </el-tooltip>
+                </div>
+
+              </div>
+
+            </div>
+          </div>
+          <span v-if="!work.length">暂无数据</span>
+
+        </div>
       </div>
     </div>
   </div>
 </template>
 
 <script>
+import { L } from 'caniuse-lite/data/browserVersions';
+
+
 export default {
+  props: ["userid", "courseid"],
   data() {
     return {
       chartObj2: null,
       chartObj3: null,
+      color: [],
+      workW: [],
+      work: [],
+      eJson: "",
       type: 1,
       option2: {
         //color:colors,
@@ -41,7 +66,7 @@ export default {
         series: {
           type: "sunburst",
           data: [],
-          radius: [20, "100%"],
+          radius: [20, "80%"],
           itemStyle: {
             borderRadius: 7,
             borderWidth: 2,
@@ -53,51 +78,95 @@ export default {
         },
       },
       option3: {
-        xAxis: {
-          type: "category",
-          data: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"],
-          boundaryGap: false,
-          splitLine: {
-            show: true,
-          },
-          axisLine: {
-            show: false,
+        // title: {
+        //   text: "项目活跃度:不同任务的学习时间占比",
+        //   textStyle: {
+        //     fontSize: 13,
+        //   },
+        // },
+        tooltip: {
+          trigger: "axis",
+          axisPointer: {
+            // Use axis to trigger tooltip
+            type: "shadow", // 'shadow' as default; can also be 'line' or 'shadow'
           },
         },
+        grid: {
+          left: "15%",
+          right: "15%",
+          bottom: "15%",
+          top: "15%",
+        },
+        xAxis: {
+          type: "value",
+        },
         yAxis: {
           type: "category",
-          data: [
-            "信息应用意识",
-            "信息安全意识",
-            "信息感知意识",
-            "信息社会责任",
-            "信息法律法规",
-            "信息应用技能",
-            "信息科学知识",
-            "信息思维",
-            "信息行为",
-          ],
-          axisLine: {
-            show: false,
-          },
+          data: ["阶段1", "阶段2", "阶段3", "阶段4", "阶段5"],
         },
-        grid: {
-          left: '20%',
-          bottom: '10%',
-          right: '10%',
-          top: '10%',
+        legend: {
+          show: false
         },
         series: [
           {
-            name: "Punch Card",
-            type: "scatter",
-            symbolSize: function (val) {
-              return val[2] * 2;
+            name: "任务1",
+            type: "bar",
+            stack: "total",
+            label: {
+              show: true,
+            },
+            emphasis: {
+              focus: "series",
+            },
+            data: [0, 0, 0, 0, 0],
+          },
+          {
+            name: "任务2",
+            type: "bar",
+            stack: "total",
+            label: {
+              show: true,
+            },
+            emphasis: {
+              focus: "series",
+            },
+            data: [0, 0, 0, 0, 0],
+          },
+          {
+            name: "任务3",
+            type: "bar",
+            stack: "total",
+            label: {
+              show: true,
             },
-            data: [],
-            animationDelay: function (idx) {
-              return idx * 5;
+            emphasis: {
+              focus: "series",
             },
+            data: [0, 0, 0, 0, 0],
+          },
+          {
+            name: "任务4",
+            type: "bar",
+            stack: "total",
+            label: {
+              show: true,
+            },
+            emphasis: {
+              focus: "series",
+            },
+            data: [0, 0, 0, 0, 0],
+          },
+          {
+            name: "任务5",
+            type: "bar",
+            stack: "total",
+            label: {
+              show: true,
+            },
+            emphasis: {
+              focus: "series",
+            },
+            data: [0, 0, 0, 0, 0],
           },
         ],
       },
@@ -111,97 +180,163 @@ export default {
       });
       //然后异步执行echarts的初始化函数
       newPromise.then(() => {
-        const chartObj2 = this.$echarts.init(
-          //劳动课程
-          this.$el.querySelector("#person_canvas1")
-        );
-        this.option2.series.data = [
-          {
-            name: "信息意识",
-            value: 15,
-            children: [
-              {
-                name: "信息应用意识",
-                value: this.randomNum(1, 5),
-              },
-              {
-                name: "信息安全意识",
-                value: this.randomNum(1, 5),
-              },
-              {
-                name: "信息感知意识",
-                value: this.randomNum(1, 5),
-              },
-            ],
-          },
-          {
-            name: "信息社会责任",
-            value: 15,
-            children: [
-              {
-                name: "信息伦理道德",
-                value: this.randomNum(1, 5),
-              },
-              {
-                name: "信息法律法规",
-                value: this.randomNum(1, 10),
-              },
-            ],
-          },
-          {
-            name: "信息知识与技能",
-            value: 15,
-            children: [
-              {
-                name: "信息应用技能",
-                value: 5,
-              },
-              {
-                name: "信息科学知识",
-                value: 10,
-              },
-            ],
-          },
-          {
-            name: "信息思维与行为",
-            value: 15,
-            children: [
-              {
-                name: "信息思维",
-                value: this.randomNum(1, 10),
-              },
-              {
-                name: "信息行为",
-                value: this.randomNum(1, 5),
-              },
-            ],
-          },
-        ];
-        const chartObj3 = this.$echarts.init(
-          //劳动课程
-          this.$el.querySelector("#person_canvas2")
-        );
-        let data = [];
-        for (var i = 1; i < 10; i++) {
-          for (var j = 0; j < 9; j++) {
-            var x = i;
-            var y = j;
-            var z = this.randomNum(0, 10);
-            data.push([x, y, z]);
+        if (this.type == 1 && this.eJson) {
+          const chartObj2 = this.$echarts.init(
+            //劳动课程
+            this.$el.querySelector("#person_canvas1")
+          );
+          // this.option2.series.data = [
+          //   {
+          //     name: "信息意识",
+          //     value: 15,
+          //     children: [
+          //       {
+          //         name: "信息应用意识",
+          //         value: this.randomNum(1, 5),
+          //       },
+          //       {
+          //         name: "信息安全意识",
+          //         value: this.randomNum(1, 5),
+          //       },
+          //       {
+          //         name: "信息感知意识",
+          //         value: this.randomNum(1, 5),
+          //       },
+          //     ],
+          //   },
+          //   {
+          //     name: "信息社会责任",
+          //     value: 15,
+          //     children: [
+          //       {
+          //         name: "信息伦理道德",
+          //         value: this.randomNum(1, 5),
+          //       },
+          //       {
+          //         name: "信息法律法规",
+          //         value: this.randomNum(1, 10),
+          //       },
+          //     ],
+          //   },
+          //   {
+          //     name: "信息知识与技能",
+          //     value: 15,
+          //     children: [
+          //       {
+          //         name: "信息应用技能",
+          //         value: 5,
+          //       },
+          //       {
+          //         name: "信息科学知识",
+          //         value: 10,
+          //       },
+          //     ],
+          //   },
+          //   {
+          //     name: "信息思维与行为",
+          //     value: 15,
+          //     children: [
+          //       {
+          //         name: "信息思维",
+          //         value: this.randomNum(1, 10),
+          //       },
+          //       {
+          //         name: "信息行为",
+          //         value: this.randomNum(1, 5),
+          //       },
+          //     ],
+          //   },
+          // ];
+          var res = this.eJson;
+          var _array = [];
+          let i = 0;
+          for (var item in res) {
+            let num = Object.keys(res);
+            let count = 10 / num.length;
+            let _item = res[item];
+            _array.push({ name: _item.name, value: count, children: [] });
+            let j = 0;
+            for (var item2 in _item.child) {
+              let num2 = Object.keys(res);
+              let count2 = count / num2.length;
+              let _item2 = _item.child[item2];
+              _array[i].children.push({
+                name: _item2.name,
+                value: count2,
+                children: [],
+              });
+              for (var item3 in _item2.child) {
+                let num3 = Object.keys(res);
+                let count3 = count2 / num3.length;
+                let _item3 = _item2.child[item3];
+                _array[i].children[j].children.push({
+                  name: _item3.name,
+                  value: count3,
+                });
+              }
+              j++;
+            }
+            i++;
+            console.log(item);
+          }
+          this.option2.series.data = _array
+          // 初始化雷达图
+          this.chartObj2 = chartObj2;
+          this.chartObj2.setOption(this.option2);
+        } else if (this.type == 2) {
+          // const chartObj3 = this.$echarts.init(
+          //   //劳动课程
+          //   this.$el.querySelector("#person_canvas2")
+          // );
+          // let _array21 = [];
+          // let _array22 = [];
+          // let _array23 = [];
+          // let _array24 = [];
+          // let _array25 = [];
+          // for (var i = 0; i < 5; i++) {
+          //   //   this.option.series[0].data[i].value = this.randomNum(30, 80);
+          //   _array21.push(this.randomNum(2, 20));
+          //   _array22.push(this.randomNum(2, 20));
+          //   _array23.push(this.randomNum(2, 20));
+          //   _array24.push(this.randomNum(2, 20));
+          //   _array25.push(this.randomNum(2, 20));
+          // }
+          // this.option3.series[0].data = _array21;
+          // this.option3.series[1].data = _array22;
+          // this.option3.series[2].data = _array23;
+          // this.option3.series[3].data = _array24;
+          // this.option3.series[4].data = _array25;
+
+          // this.chartObj3 = chartObj3;
+          // this.chartObj3.setOption(this.option3);
+          var _work = []
+
+          for (var i = 0; i < this.workW.length; i++) {
+            _work[i] = { stage: this.workW[i].stage, task: this.workW[i].task, work: [], count: 0 }
+            for (var j = 0; j < this.workW[i].work.length; j++) {
+              for (var k = 0; k < this.workW[i].work[j].target.length; k++) {
+                this.color.push(this.color16())
+                _work[i].work.push(this.workW[i].work[j].target[k])
+                _work[i].count += this.workW[i].work[j].target[k].count
+              }
+            }
           }
+          this.work = _work;
+          console.log(_work);
         }
-        this.option3.series[0].data = data;
-        // console.log(this.option.series[0].data);
-        // 初始化雷达图
-        this.chartObj2 = chartObj2;
-        this.chartObj3 = chartObj3;
-        this.chartObj2.setOption(this.option2);
-        this.chartObj3.setOption(this.option3);
       });
       let _this = this;
       window.addEventListener("resize", () => {
+        // if (_this.chartObj2) {
+        //   _this.chartObj2.resize();
+        //   _this.chartObj3.resize();
+        // }
+
         if (_this.chartObj2) {
           _this.chartObj2.resize();
+
+        }
+        if (_this.chartObj3) {
           _this.chartObj3.resize();
         }
       });
@@ -219,87 +354,289 @@ export default {
           break;
       }
     },
+    getInfo() {
+      let params = {
+        uid: this.userid,
+        cid: this.courseid,
+      };
+      console.log(this.userid);
+      if (!this.userid) {
+        return;
+      }
+      this.ajax
+        .get(this.$store.state.api + "getUserInfo", params)
+        .then((res) => {
+          let chapters = JSON.parse(res.data[2][0].chapters);
+          var tool = 0;
+          let workJson = []
+          let _pWork = res.data[3];
+          let _allWork = res.data[4];
+          let _allComment = res.data[5];
+          let _isWorks = res.data[6];
+
+          this.eJson = res.data[2][0].content ? JSON.parse(res.data[2][0].content) : "";
+
+          for (var i = 0; i < chapters.length; i++) {
+            workJson[i] = { tool: 0, ptool: 0, work: 0, ishuo: 0, isCan: 0 }
+            for (
+              var j = 0;
+              j < chapters[i].chapterInfo[0].taskJson.length;
+              j++
+            ) {
+              // 1、电子白板,3、思维导图,6协同文档,7思维网格 16、作业提交,40.项目-学生互评 41.项目-下拉选择题 42.项目-录音功能
+              let _toolsAarry = [1, 3, 6, 7, 16, 15, 4, 40, 41, 42];
+              for (
+                var k = 0;
+                k < chapters[i].chapterInfo[0].taskJson[j].toolChoose.length;
+                k++
+              ) {
+                if (
+                  _toolsAarry.indexOf(
+                    chapters[i].chapterInfo[0].taskJson[j].toolChoose[k].tool[0]
+                  ) != -1
+                ) {
+                  tool++;
+                  workJson[i].tool++
+                }
+              }
+            }
+
+            for (var k = 0; k < _pWork.length; k++) {
+              if (_pWork[k].stage == i) {
+                workJson[i].ptool++
+              }
+            }
+            for (var k = 0; k < _allComment.length; k++) {
+              if (_allComment[k].stage == i) {
+                workJson[i].ishuo++
+              }
+            }
+
+
+          }
+          this.userinfo = res.data[0][0];
+          this.ccount = tool;
+          this.islearn = tool - parseInt(res.data[1][0].vcount);
+
+          this.iscount = res.data[1][0].vcount;
+          this.vcount = 0;
+
+          for (var i = 0; i < workJson.length; i++) {
+            if (workJson[i].ptool > workJson[i].tool) {
+              workJson[i].work = 5
+            } else if (workJson[i].tool === 0) {
+              workJson[i].work = 5
+            } else {
+              workJson[i].work = Math.round(workJson[i].ptool / workJson[i].tool * 100 / 20)
+            }
+            if (workJson[i].ptool) {
+              workJson[i].isCan = 1
+            }
+          }
+          this.workJson = workJson
+
+          console.log(workJson);
+          this.setChart();
+          let _workW = []
+          for (var i = 0; i < _isWorks.length; i++) {
+            if (chapters[_isWorks[i].stage].chapterInfo[0].taskJson[_isWorks[i].task].eList) {
+              _workW.push({ stage: _isWorks[i].stage, task: _isWorks[i].task, rate: JSON.parse(_isWorks[i].rate), elist: chapters[_isWorks[i].stage].chapterInfo[0].taskJson[_isWorks[i].task].eList })
+            } else {
+              let elist = [
+                {
+                  "value": "意识能力",
+                  "score": 5,
+                  "target": [
+                    {
+                      "name": "意识能力1",
+                      "per": 0.5
+                    },
+                    {
+                      "name": "意识能力2",
+                      "per": 0.5
+                    }
+                  ]
+                },
+                {
+                  "value": "科学探究能力",
+                  "score": 5,
+                  "target": [
+                    {
+                      "name": "科学探究能力1",
+                      "per": 0.5
+                    },
+                    {
+                      "name": "科学探究能力2",
+                      "per": 0.5
+                    }
+                  ]
+                },
+                {
+                  "value": "实践创新能力",
+                  "score": 5,
+                  "target": [
+                    {
+                      "name": "实践创新能力1",
+                      "per": 0.5
+                    },
+                    {
+                      "name": "实践创新能力2",
+                      "per": 0.5
+                    }
+                  ]
+                },
+                {
+                  "value": "学习反思能力",
+                  "score": 5,
+                  "target": [
+                    {
+                      "name": "学习反思能力1",
+                      "per": 0.5
+                    },
+                    {
+                      "name": "学习反思能力2",
+                      "per": 0.5
+                    }
+                  ]
+                },
+                {
+                  "value": "工程思维能力",
+                  "score": 5,
+                  "target": [
+                    {
+                      "name": "工程思维能力1",
+                      "per": 0.5
+                    },
+                    {
+                      "name": "工程思维能力2",
+                      "per": 0.5
+                    }
+                  ]
+                }
+              ]
+              _workW.push({ stage: _isWorks[i].stage, task: _isWorks[i].task, rate: JSON.parse(_isWorks[i].rate), elist: elist })
+            }
+          }
+          for (var i = 0; i < _workW.length; i++) {
+            _workW[i].work = []
+            for (var j = 0; j < _workW[i].elist.length; j++) {
+              for (var k = 0; k < _workW[i].elist[j].target.length; k++) {
+                _workW[i].elist[j].target[k].count = _workW[i].rate[_workW[i].elist[j].value] * _workW[i].elist[j].target[k].per
+              }
+              _workW[i].work.push({ name: _workW[i].elist[j].value, target: _workW[i].elist[j].target })
+              _workW[i].work[_workW[i].work.length - 1][_workW[i].elist[j].value] = _workW[i].rate[_workW[i].elist[j].value]
+            }
+          }
+          console.log('chapter=-----', chapters);
+          console.log('_workW=-----', _workW);
+          this.workW = _workW
+        })
+        .catch((err) => {
+          console.error(err);
+        });
+    },
     setType(type) {
       this.type = type;
-      this.option2.series.data = [
-        {
-          name: "信息意识",
-          value: 15,
-          children: [
-            {
-              name: "信息应用意识",
-              value: this.randomNum(1, 5),
-            },
-            {
-              name: "信息安全意识",
-              value: this.randomNum(1, 5),
-            },
-            {
-              name: "信息感知意识",
-              value: this.randomNum(1, 5),
-            },
-          ],
-        },
-        {
-          name: "信息社会责任",
-          value: 15,
-          children: [
-            {
-              name: "信息伦理道德",
-              value: this.randomNum(1, 5),
-            },
-            {
-              name: "信息法律法规",
-              value: this.randomNum(1, 10),
-            },
-          ],
-        },
-        {
-          name: "信息知识与技能",
-          value: 15,
-          children: [
-            {
-              name: "信息应用技能",
-              value: 5,
-            },
-            {
-              name: "信息科学知识",
-              value: 10,
-            },
-          ],
-        },
-        {
-          name: "信息思维与行为2",
-          value: 15,
-          children: [
-            {
-              name: "信息思维",
-              value: this.randomNum(1, 10),
-            },
-            {
-              name: "信息行为",
-              value: this.randomNum(1, 5),
-            },
-          ],
-        },
-      ];
-      this.chartObj2.setOption(this.option2);
-      let data = [];
-      for (var i = 1; i < 10; i++) {
-        for (var j = 0; j < 9; j++) {
-          var x = i;
-          var y = j;
-          var z = this.randomNum(0, 10);
-          data.push([x, y, z]);
-        }
+      if (this.chartObj2) {
+        this.chartObj2.dispose();
+
       }
-      this.option3.series[0].data = data;
-      this.chartObj3.setOption(this.option3);
+      if (this.chartObj3) {
+        this.chartObj3.dispose();
+
+      }
+      this.getInfo();
+      // this.option2.series.data = [
+      //   {
+      //     name: "信息意识",
+      //     value: 15,
+      //     children: [
+      //       {
+      //         name: "信息应用意识",
+      //         value: this.randomNum(1, 5),
+      //       },
+      //       {
+      //         name: "信息安全意识",
+      //         value: this.randomNum(1, 5),
+      //       },
+      //       {
+      //         name: "信息感知意识",
+      //         value: this.randomNum(1, 5),
+      //       },
+      //     ],
+      //   },
+      //   {
+      //     name: "信息社会责任",
+      //     value: 15,
+      //     children: [
+      //       {
+      //         name: "信息伦理道德",
+      //         value: this.randomNum(1, 5),
+      //       },
+      //       {
+      //         name: "信息法律法规",
+      //         value: this.randomNum(1, 10),
+      //       },
+      //     ],
+      //   },
+      //   {
+      //     name: "信息知识与技能",
+      //     value: 15,
+      //     children: [
+      //       {
+      //         name: "信息应用技能",
+      //         value: 5,
+      //       },
+      //       {
+      //         name: "信息科学知识",
+      //         value: 10,
+      //       },
+      //     ],
+      //   },
+      //   {
+      //     name: "信息思维与行为2",
+      //     value: 15,
+      //     children: [
+      //       {
+      //         name: "信息思维",
+      //         value: this.randomNum(1, 10),
+      //       },
+      //       {
+      //         name: "信息行为",
+      //         value: this.randomNum(1, 5),
+      //       },
+      //     ],
+      //   },
+      // ];
+      // this.chartObj2.setOption(this.option2);
+      // let data = [];
+      // for (var i = 1; i < 10; i++) {
+      //   for (var j = 0; j < 9; j++) {
+      //     var x = i;
+      //     var y = j;
+      //     var z = this.randomNum(0, 10);
+      //     data.push([x, y, z]);
+      //   }
+      // }
+      // this.option3.series[0].data = data;
+      // this.chartObj3.setOption(this.option3);
+    },
+    color16() {//十六进制颜色随机
+      var r = Math.floor(Math.random() * 256);
+      var g = Math.floor(Math.random() * 256);
+      var b = Math.floor(Math.random() * 256);
+      var color = '#' + r.toString(16) + g.toString(16) + b.toString(16);
+      return color;
+    }
+  },
+  watch: {
+    userid(newValue, oldValue) {
+      this.getInfo();
     },
   },
   mounted() {
     this.$nextTick(() => {
-      this.setChart();
+      this.getInfo();
     });
   },
 };
@@ -322,4 +659,53 @@ export default {
   border-bottom: 2px solid rgb(30, 146, 255);
   color: rgb(30, 146, 255);
 }
+
+
+.target_box {
+  display: flex;
+  align-items: center;
+  width: 80%;
+  margin: 0 auto;
+}
+
+.target_box+.target_box {
+  margin-top: 10px;
+}
+
+.target_task {
+  width: 100px;
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  color: rgb(91, 91, 91);
+}
+
+.target_content_box {
+  display: flex;
+  align-items: center;
+  width: calc(100% - 100px);
+}
+
+.target_content_box div {
+  height: 50px;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  cursor: pointer;
+}
+
+.box2 {
+  margin-top: 40px;
+  height: 80%;
+  width: 100%;
+  overflow: auto;
+}
+
+.targetA {
+  width: 100%;
+  height: 100%;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+}
 </style>

+ 18 - 10
src/components/pages/components/report/studentInfo.vue

@@ -7,9 +7,8 @@
           <span>姓名:</span><span>{{ userinfo.name }}</span>
         </div>
         <div>
-          <span>班级:</span
-          ><span>{{
-            userinfo.classname ? userinfo.classname : "暂无班级"
+          <span>班级:</span><span>{{
+          userinfo.classname ? userinfo.classname : "暂无班级"
           }}</span>
         </div>
         <div>
@@ -28,10 +27,10 @@
           <div>{{ iscount }}</div>
           <div>已完成</div>
         </div>
-        <div class="si_course_box">
+        <!-- <div class="si_course_box">
           <div>{{ vcount }}</div>
           <div>进行中</div>
-        </div>
+        </div> -->
         <div class="si_course_box">
           <div>{{ islearn }}</div>
           <div>待学习</div>
@@ -42,7 +41,6 @@
 </template>
 
 <script>
-import { F } from "caniuse-lite/data/browserVersions";
 
 export default {
   props: ["userid", "courseid"],
@@ -89,8 +87,8 @@ export default {
               j < chapters[i].chapterInfo[0].taskJson.length;
               j++
             ) {
-              // 1、电子白板,3、思维导图,6协同文档,7思维网格 16、作业提交
-              let _toolsAarry = [1, 3, 6, 7, 16, 15, 4];
+              // 1、电子白板,3、思维导图,6协同文档,7思维网格 16、作业提交,40.项目-学生互评 41.项目-下拉选择题 42.项目-录音功能
+              let _toolsAarry = [1, 3, 6, 7, 16, 15, 4, 40, 41, 42];
               for (
                 var k = 0;
                 k < chapters[i].chapterInfo[0].taskJson[j].toolChoose.length;
@@ -138,47 +136,57 @@ export default {
   align-items: center;
   justify-content: center;
 }
+
 .si_img {
   width: 90px;
   height: 90px;
 }
+
 .si_content {
   width: calc(100% - 150px);
   margin-left: 15px;
   font-size: 14px;
 }
-.si_content div + div {
+
+.si_content div+div {
   margin-top: 10px;
 }
+
 .si_content div {
   display: flex;
 }
-.si_content span + span {
+
+.si_content span+span {
   margin-left: 10px;
   white-space: nowrap;
   overflow: hidden;
   text-overflow: ellipsis;
   width: calc(100% - 50px);
 }
+
 .si_course {
   width: calc(100% - 60px);
   margin: 0 auto;
   margin-top: 20px;
 }
+
 .si_course_head {
   margin-bottom: 10px;
 }
+
 .si_course_content {
   display: flex;
   width: 100%;
   justify-content: space-between;
 }
+
 .si_course_box div:nth-child(1) {
   font-size: 22px;
   text-align: center;
   font-weight: 700;
   color: rgb(47 70 136);
 }
+
 .si_course_box div:nth-child(2) {
   font-size: 14px;
   width: 60px;

+ 15 - 14
src/components/pages/components/studentReport.vue

@@ -16,21 +16,21 @@
         <div class="sr_second">
           <div class="first">
             <div class="sub_title"><span>学生综合能力评估</span></div>
-            <StudentAbility class="r_box"></StudentAbility>
+            <StudentAbility class="r_box"  :userid="userid" :courseid="courseid"></StudentAbility>
           </div>
-          <div class="second">
+          <!-- <div class="second">
             <div class="sub_title"><span>项目详细报告</span></div>
             <CourseDetailReport class="r_box"></CourseDetailReport>
-          </div>
+          </div> -->
         </div>
         <div class="sr_third">
           <div class="first">
-            <div class="sub_title"><span>项目概况</span></div>
-            <CourseRadar class="r_box"></CourseRadar>
+            <div class="sub_title"><span>阶段完成情况</span></div>
+            <CourseRadar class="r_box" :userid="userid" :courseid="courseid"></CourseRadar>
           </div>
           <div class="second">
-            <div class="sub_title"><span>学习活动分配图</span></div>
-            <CoursePie class="r_box"></CoursePie>
+            <div class="sub_title"><span>阶段评价平均分</span></div>
+            <CoursePie class="r_box" :userid="userid" :courseid="courseid"></CoursePie>
           </div>
         </div>
       </div>
@@ -136,26 +136,27 @@ export default {
   overflow: hidden;
 }
 .sr_first .first {
-  height: calc(100% / 2.25);
+  height: calc(100% / 3 * 1.1);
   margin-bottom: 20px;
 }
 .sr_first .second {
-  height: calc(100% / 2.25 * 1.25);
+  height: calc(100% / 3 * 1.9);
 }
 
 .sr_second .first {
-  height: calc(100% / 3.5 * 2);
-  margin-bottom: 20px;
+  /* height: calc(100% / 3.5 * 2); */
+  height: calc(100%);
+  /* margin-bottom: 20px; */
 }
 .sr_second .second {
-  height: calc(100% / 3.5 * 1.5);
+  /* height: calc(100% / 3.5 * 1.5); */
 }
 .sr_third .first {
-  height: calc(100% / 2);
+  height: calc(100% / 2.25 * 1.25);
   margin-bottom: 20px;
 }
 .sr_third .second {
-  height: calc(100% / 2);
+  height: calc(100% / 2.25);
 }
 .sub_title {
   display: flex;

+ 1 - 1
src/components/pages/components/worksDetail3.vue

@@ -2021,7 +2021,7 @@ export default {
 }
 
 .zyBoxC {
-  background: #ededed;
+  /* background: #ededed; */
   display: flex;
   align-items: flex-start;
   justify-content: center;

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