Compare commits
13 Commits
8863e05a1a
...
af60c5cc17
Author | SHA1 | Date |
---|---|---|
“zouyf” | af60c5cc17 | |
“zouyf” | e67756192a | |
zouyf | a2591c60bc | |
“zouyf” | da8d6c4b32 | |
“zouyf” | 73d4ee03ba | |
朱浩 | 795c4d82c7 | |
朱浩 | 8e0b9f72d5 | |
白了个白 | 4ad59a8b4e | |
白了个白 | 3de2ddb094 | |
zouyf | 6dbd140f80 | |
“zouyf” | 7bca2fdc2d | |
lyc | ee96250af2 | |
lyc | 54be3cad4f |
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "aix-win-ws",
|
"name": "aix-win-ws",
|
||||||
"version": "2.5.6",
|
"version": "2.5.7",
|
||||||
"description": "",
|
"description": "",
|
||||||
"main": "./out/main/index.js",
|
"main": "./out/main/index.js",
|
||||||
"author": "上海交大重庆人工智能研究院",
|
"author": "上海交大重庆人工智能研究院",
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
http-equiv="Content-Security-Policy"
|
http-equiv="Content-Security-Policy"
|
||||||
content="default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data:"
|
content="default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data:"
|
||||||
/> -->
|
/> -->
|
||||||
<meta http-equiv="Content-Security-Policy" content="connect-src * blob: data:; default-src 'self' https://wzyzoss.eos-chongqing-3.cmecloud.cn/; script-src 'self' 'unsafe-eval' http://www.wiris.net 'unsafe-inline'; style-src 'self' 'unsafe-inline' http://www.wiris.net; media-src * blob:;img-src * 'self' data: blob:;font-src 'self' http://www.wiris.net;" />
|
<meta http-equiv="Content-Security-Policy" content="connect-src * blob: data:; frame-src 'self' *; default-src 'self' https://wzyzoss.eos-chongqing-3.cmecloud.cn/; script-src 'self' 'unsafe-eval' http://www.wiris.net 'unsafe-inline'; style-src 'self' 'unsafe-inline' http://www.wiris.net; media-src * blob:;img-src * 'self' data: blob:;font-src 'self' http://www.wiris.net;" />
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,16 @@
|
||||||
|
<!--
|
||||||
|
依赖: vuedraggable、v-viewer
|
||||||
|
属性: showToolbar //是否显示工具栏 默认:false
|
||||||
|
工具栏 添加图片:默认6个测试图片,不输入框添加则添加默认,输入图片链接,展示图片链接的图片
|
||||||
|
清空图片:清空图片
|
||||||
|
事件: clear 清空时触发
|
||||||
|
outIndex 超出九个图片时触发
|
||||||
|
方法: addPic //添加图片
|
||||||
|
参数: src 图片链接
|
||||||
|
clearPic //清空图片
|
||||||
|
参数: 无
|
||||||
|
使用方法: 加载组件后,通过ref调用addPic方法添加图片即可
|
||||||
|
-->
|
||||||
<template>
|
<template>
|
||||||
<div style="position: relative;height: 100%;width: 100%;">
|
<div style="position: relative;height: 100%;width: 100%;">
|
||||||
<draggable handle=".header-btn" :draggable="false" item-key="backgroundColor" v-model="gridPicList" class="grid-pic-wrap" :style="getGrid">
|
<draggable handle=".header-btn" :draggable="false" item-key="backgroundColor" v-model="gridPicList" class="grid-pic-wrap" :style="getGrid">
|
||||||
|
@ -9,16 +22,21 @@
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</draggable>
|
</draggable>
|
||||||
<el-input style="position:fixed;bottom: 20px;right: 180px;width: 1000px" v-model="inputValue" type="text" />
|
<div v-if="showToolbar" class="grid-pic-toolbar">
|
||||||
<el-button class="add-btn" @click="addPic">
|
<el-input style="width: 500px" v-model="inputValue" type="text" />
|
||||||
|
<el-button class="add-btn" @click="pushPic">
|
||||||
添加
|
添加
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button style="position:fixed;bottom: 20px;right: 80px;" @click="startPencil">
|
<el-button class="add-btn" @click="clearPic">
|
||||||
画笔
|
清空
|
||||||
</el-button>
|
</el-button>
|
||||||
<div class="modal-mode">
|
|
||||||
<canvas id="canvas_pic_001" style="position: absolute;top: 0;left: 0;width: 100%;height: 100%;"></canvas>
|
|
||||||
</div>
|
</div>
|
||||||
|
<!-- <el-button style="position:fixed;bottom: 20px;right: 80px;" @click="startPencil">
|
||||||
|
画笔
|
||||||
|
</el-button>-->
|
||||||
|
<!-- <div class="modal-mode">
|
||||||
|
<canvas id="canvas_pic_001" style="position: absolute;top: 0;left: 0;width: 100%;height: 100%;"></canvas>
|
||||||
|
</div>-->
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
@ -26,10 +44,18 @@
|
||||||
import {ref, computed, onMounted} from 'vue'
|
import {ref, computed, onMounted} from 'vue'
|
||||||
import Draggable from 'vuedraggable'
|
import Draggable from 'vuedraggable'
|
||||||
import ViewerItem from "./viewer-item.vue";
|
import ViewerItem from "./viewer-item.vue";
|
||||||
import Fabric from 'fabric';
|
// import Fabric from 'fabric';
|
||||||
const gridPicList = ref([])
|
const gridPicList = ref([])
|
||||||
const inputValue = ref('')
|
const inputValue = ref('')
|
||||||
const isShow = ref(false)
|
const isShow = ref(false)
|
||||||
|
const emits = defineEmits(['clear','outIndex']);
|
||||||
|
|
||||||
|
const props = defineProps({
|
||||||
|
showToolbar: {
|
||||||
|
type: Boolean,
|
||||||
|
default: true
|
||||||
|
}
|
||||||
|
})
|
||||||
// 获取图片样式
|
// 获取图片样式
|
||||||
const getWH = (item,index)=>{
|
const getWH = (item,index)=>{
|
||||||
return {
|
return {
|
||||||
|
@ -118,13 +144,19 @@
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
const pushPic = () => {
|
||||||
|
let src = inputValue.value||picList[gridPicList.value.length]
|
||||||
|
addPic(src)
|
||||||
|
}
|
||||||
// 添加图片
|
// 添加图片
|
||||||
const addPic = () => {
|
const addPic = (src) => {
|
||||||
if (gridPicList.value.length >= 9) {
|
if (gridPicList.value.length >= 9) {
|
||||||
|
console.log("超出九个图片")
|
||||||
|
emits('outIndex')
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
let src = inputValue.value||picList[gridPicList.value.length]
|
|
||||||
if (!src) {
|
if (!src) {
|
||||||
|
console.log("图片链接不能为空")
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
gridPicList.value.push({
|
gridPicList.value.push({
|
||||||
|
@ -133,6 +165,11 @@
|
||||||
})
|
})
|
||||||
inputValue.value = ''
|
inputValue.value = ''
|
||||||
}
|
}
|
||||||
|
// 清空图片
|
||||||
|
const clearPic = () => {
|
||||||
|
gridPicList.value = []
|
||||||
|
emits('clear')
|
||||||
|
}
|
||||||
//开始画笔
|
//开始画笔
|
||||||
const startPencil = () => {
|
const startPencil = () => {
|
||||||
isShow.value = !isShow.value
|
isShow.value = !isShow.value
|
||||||
|
@ -148,7 +185,7 @@
|
||||||
b = b.length === 1? '0' + b : b;
|
b = b.length === 1? '0' + b : b;
|
||||||
return `#${r}${g}${b}`;
|
return `#${r}${g}${b}`;
|
||||||
}
|
}
|
||||||
//初始化画笔
|
/* //初始化画笔
|
||||||
const initPend = () => {
|
const initPend = () => {
|
||||||
let canvas = new Fabric.fabric.Canvas('canvas_pic_001',{
|
let canvas = new Fabric.fabric.Canvas('canvas_pic_001',{
|
||||||
interactive: false,
|
interactive: false,
|
||||||
|
@ -162,10 +199,11 @@
|
||||||
canvas.freeDrawingBrush = new Fabric.fabric.PencilBrush(canvas)
|
canvas.freeDrawingBrush = new Fabric.fabric.PencilBrush(canvas)
|
||||||
canvas.freeDrawingBrush.width = 1//设置画笔粗细
|
canvas.freeDrawingBrush.width = 1//设置画笔粗细
|
||||||
canvas.freeDrawingBrush.color = "red"//设置画笔颜色
|
canvas.freeDrawingBrush.color = "red"//设置画笔颜色
|
||||||
}
|
}*/
|
||||||
onMounted(() => {
|
/*onMounted(() => {
|
||||||
initPend()
|
initPend()
|
||||||
})
|
})*/
|
||||||
|
defineExpose({addPic,clearPic})
|
||||||
</script>
|
</script>
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
.modal-mode{
|
.modal-mode{
|
||||||
|
@ -204,10 +242,13 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.add-btn{
|
.grid-pic-toolbar{
|
||||||
position: fixed;
|
position: fixed;
|
||||||
right: 20px;
|
right: 20px;
|
||||||
bottom: 20px;
|
bottom: 20px;
|
||||||
|
display: flex;
|
||||||
|
.add-btn{
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@keyframes fadeIn {
|
@keyframes fadeIn {
|
||||||
from {
|
from {
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
<script setup>
|
<script setup>
|
||||||
import {ref, watch, nextTick, onMounted} from "vue";
|
import {ref, watch, nextTick, onMounted} from "vue";
|
||||||
import { component as Viewer } from 'v-viewer'
|
import { component as Viewer } from 'v-viewer'
|
||||||
import Fabric from 'fabric';
|
// import Fabric from 'fabric';
|
||||||
import 'viewerjs/dist/viewer.css'
|
import 'viewerjs/dist/viewer.css'
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
images: {
|
images: {
|
||||||
|
@ -36,16 +36,13 @@ const inited = (viewer) => {
|
||||||
}
|
}
|
||||||
//缩放时
|
//缩放时
|
||||||
const zoomed = (e) => {
|
const zoomed = (e) => {
|
||||||
setImgStyle()
|
// setImgStyle()
|
||||||
// console.log('zoomed', e)
|
|
||||||
}
|
}
|
||||||
//移动时
|
//移动时
|
||||||
const moved = (e) => {
|
const moved = (e) => {
|
||||||
setImgStyle()
|
// setImgStyle()
|
||||||
// console.log('moved',e)
|
|
||||||
}
|
}
|
||||||
const move = (e) => {
|
const move = (e) => {
|
||||||
// console.log('move', e)
|
|
||||||
}
|
}
|
||||||
const appendCanvasToShow = () => {
|
const appendCanvasToShow = () => {
|
||||||
initImgStyle()
|
initImgStyle()
|
||||||
|
@ -92,7 +89,7 @@ const optins = ref({
|
||||||
"tooltip": true,
|
"tooltip": true,
|
||||||
"zoomable": true,
|
"zoomable": true,
|
||||||
"rotatable": true,
|
"rotatable": true,
|
||||||
"movable": false,
|
"movable": true,
|
||||||
"scalable": true,
|
"scalable": true,
|
||||||
"transition": true,
|
"transition": true,
|
||||||
"fullscreen": true,
|
"fullscreen": true,
|
||||||
|
@ -100,9 +97,9 @@ const optins = ref({
|
||||||
})
|
})
|
||||||
const initViewers = () => {
|
const initViewers = () => {
|
||||||
refs.value['viewerRef'+props.index]?.rebuildViewer()
|
refs.value['viewerRef'+props.index]?.rebuildViewer()
|
||||||
setTimeout(()=>{
|
/*setTimeout(()=>{
|
||||||
initImgStyle()
|
initImgStyle()
|
||||||
},300)
|
},300)*/
|
||||||
}
|
}
|
||||||
//初始化画笔
|
//初始化画笔
|
||||||
const initPend = () => {
|
const initPend = () => {
|
||||||
|
@ -133,11 +130,11 @@ watch(props.images, (newValue, oldValue) => {
|
||||||
});
|
});
|
||||||
*/
|
*/
|
||||||
|
|
||||||
onMounted(()=>{
|
/*onMounted(()=>{
|
||||||
setTimeout(()=>{
|
setTimeout(()=>{
|
||||||
appendCanvasToShow()
|
appendCanvasToShow()
|
||||||
}, 300)
|
}, 300)
|
||||||
})
|
})*/
|
||||||
</script>
|
</script>
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
.viewer-item-wrap{
|
.viewer-item-wrap{
|
||||||
|
|
|
@ -32,7 +32,7 @@ export const editListItem = (row, courseObj) => {
|
||||||
worktype: '', // 设计中的作业类型
|
worktype: '', // 设计中的作业类型
|
||||||
quizlist: [], // 设计中的试题列表
|
quizlist: [], // 设计中的试题列表
|
||||||
chooseWorkLists: [],// 设计中的框架梳理list
|
chooseWorkLists: [],// 设计中的框架梳理list
|
||||||
fileHomeworkList: [],// 设计中的常规作业list
|
fileHomeworkList: [],//TODO 暂时共用这个字段(新增了 科学实验) 设计中的常规作业list
|
||||||
whiteboardObj: '',// 设计中的课堂展示对象
|
whiteboardObj: '',// 设计中的课堂展示对象
|
||||||
question: '', // 设计中的[课堂展示]的问题
|
question: '', // 设计中的[课堂展示]的问题
|
||||||
};
|
};
|
||||||
|
@ -112,6 +112,14 @@ export const editListItem = (row, courseObj) => {
|
||||||
return resolve(classtaskObj);
|
return resolve(classtaskObj);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (row.worktype == '科学实验') {
|
||||||
|
if(isJson(row.workcodes)){
|
||||||
|
classtaskObj.fileHomeworkList = JSON.parse(row.workcodes);
|
||||||
|
//
|
||||||
|
// console.log('科学实验', classtaskObj);
|
||||||
|
return resolve(classtaskObj);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -84,7 +84,7 @@ const isStadium = () => {
|
||||||
|
|
||||||
const headerMenus = isStadium() ?[{
|
const headerMenus = isStadium() ?[{
|
||||||
name: '教学实践',
|
name: '教学实践',
|
||||||
id: 4,
|
id: 6,
|
||||||
icon: 'icon-jiaoxueshijian',
|
icon: 'icon-jiaoxueshijian',
|
||||||
path: '/prepare'
|
path: '/prepare'
|
||||||
},]:[
|
},]:[
|
||||||
|
@ -94,12 +94,12 @@ const headerMenus = isStadium() ?[{
|
||||||
icon: 'icon-shouye',
|
icon: 'icon-shouye',
|
||||||
path: '/model/index'
|
path: '/model/index'
|
||||||
},
|
},
|
||||||
{
|
// {
|
||||||
name: '教学工作台',
|
// name: '教学工作台',
|
||||||
id: 2,
|
// id: 2,
|
||||||
icon: 'icon-gongzuotai',
|
// icon: 'icon-gongzuotai',
|
||||||
path: '/desktop'
|
// path: '/desktop'
|
||||||
},
|
// },
|
||||||
{
|
{
|
||||||
name: '教学实践',
|
name: '教学实践',
|
||||||
id: 4,
|
id: 4,
|
||||||
|
|
|
@ -0,0 +1,734 @@
|
||||||
|
{
|
||||||
|
"title": "实验",
|
||||||
|
"data": {
|
||||||
|
"primary":[
|
||||||
|
{
|
||||||
|
"label": "数量比较",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/number-compare/latest/number-compare_zh_CN.html",
|
||||||
|
"subject": "math"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "数字游戏",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/number-play/latest/number-play_zh_CN.html",
|
||||||
|
"subject": "math"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "数轴:距离",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/number-line-distance/latest/number-line-distance_zh_CN.html",
|
||||||
|
"subject": "math"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "比率和比例",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/ratio-and-proportion/latest/ratio-and-proportion_zh_CN.html",
|
||||||
|
"subject": "math"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "数轴:运算",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/number-line-operations/latest/number-line-operations_zh_CN.html",
|
||||||
|
"subject": "math"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "数轴:整数",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/number-line-integers/latest/number-line-integers_zh_CN.html",
|
||||||
|
"subject": "math"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "向量的和:等式",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/vector-addition-equations/latest/vector-addition-equations_zh_CN.html",
|
||||||
|
"subject": "math"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "向量相加",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/vector-addition/latest/vector-addition_zh_CN.html",
|
||||||
|
"subject": "math"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "曲线拟合",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/curve-fitting/latest/curve-fitting_zh_CN.html",
|
||||||
|
"subject": "math"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "分数:带分数",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/fractions-mixed-numbers/latest/fractions-mixed-numbers_zh_CN.html",
|
||||||
|
"subject": "math"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "分数:入门",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/fractions-intro/latest/fractions-intro_zh_CN.html",
|
||||||
|
"subject": "math"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "构建一个分数",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/build-a-fraction/latest/build-a-fraction_zh_CN.html",
|
||||||
|
"subject": "math"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "分数:等式",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/fractions-equality/latest/fractions-equality_zh_CN.html",
|
||||||
|
"subject": "math"
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
{
|
||||||
|
"label": "单位价格",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/unit-rates/latest/unit-rates_zh_CN.html",
|
||||||
|
"subject": "math"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "获得一个10",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/make-a-ten/latest/make-a-ten_zh_CN.html",
|
||||||
|
"subject": "math"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "木棒的计算问题",
|
||||||
|
"fileurl": "https://www.netpad.net.cn/resource_web/course/?pack_id=6dc2ab05-cb06-4716-92ca-e00fb89ad1e6#/20808",
|
||||||
|
"subject": "math"
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
{
|
||||||
|
"label": "几何光学",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/geometric-optics/latest/geometric-optics_zh_CN.html",
|
||||||
|
"subject": "physics"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "密度",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/density/latest/density_zh_CN.html",
|
||||||
|
"subject": "physics"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "能量滑板竞技场: 基础",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/energy-skate-park-basics/latest/energy-skate-park-basics_zh_CN.html",
|
||||||
|
"subject": "physics"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "法拉第定律",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/faradays-law/latest/faradays-law_zh_CN.html",
|
||||||
|
"subject": "physics"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "绳波",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/wave-on-a-string/latest/wave-on-a-string_zh_CN.html",
|
||||||
|
"subject": "physics"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "光的混合",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/color-vision/latest/color-vision_zh_CN.html",
|
||||||
|
"subject": "physics"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "平衡探究实验",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/balancing-act/latest/balancing-act_zh_CN.html",
|
||||||
|
"subject": "physics"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "受到压力",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/under-pressure/latest/under-pressure_zh_CN.html",
|
||||||
|
"subject": "physics"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "摩擦力",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/friction/latest/friction_zh_CN.html",
|
||||||
|
"subject": "physics"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "力和运动:基础",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/forces-and-motion-basics/latest/forces-and-motion-basics_zh_CN.html",
|
||||||
|
"subject": "physics"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "静电电压",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/john-travoltage/latest/john-travoltage_zh_CN.html",
|
||||||
|
"subject": "physics"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "万有引力实验",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/gravity-force-lab/latest/gravity-force-lab_zh_CN.html",
|
||||||
|
"subject": "physics"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "气球和静电(摩擦起电)",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/balloons-and-static-electricity/latest/balloons-and-static-electricity_zh_CN.html",
|
||||||
|
"subject": "physics"
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
{
|
||||||
|
"label": "密度",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/density/latest/density_zh_CN.html",
|
||||||
|
"subject": "biology"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "基因表达基础",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/gene-expression-essentials/latest/gene-expression-essentials_zh_CN.html",
|
||||||
|
"subject": "biology"
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
{
|
||||||
|
"label": "密度",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/density/latest/density_zh_CN.html",
|
||||||
|
"subject": "sciences"
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"label": "PH值",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/ph-scale/latest/ph-scale_zh_CN.html",
|
||||||
|
"subject": "sciences"
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
{
|
||||||
|
"label": "密度",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/density/latest/density_zh_CN.html",
|
||||||
|
"subject": "chemistry"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "创造一个分子",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/build-a-molecule/latest/build-a-molecule_zh_CN.html",
|
||||||
|
"subject": "chemistry"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "扩散",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/diffusion/latest/diffusion_zh_CN.html",
|
||||||
|
"subject": "chemistry"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"junior": [
|
||||||
|
{
|
||||||
|
"label": "二项分布弹珠台几率",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/plinko-probability/latest/plinko-probability_zh_CN.html",
|
||||||
|
"subject": "math"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "建立方程",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/function-builder/latest/function-builder_zh_CN.html",
|
||||||
|
"subject": "math"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "三角函数之旅",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/trig-tour/latest/trig-tour_zh_CN.html",
|
||||||
|
"subject": "math"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "四则运算",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/arithmetic/latest/arithmetic_zh_CN.html",
|
||||||
|
"subject": "math"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "二次函数图像",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/graphing-quadratics/latest/graphing-quadratics_zh_CN.html",
|
||||||
|
"subject": "math"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "质量和弹簧",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/masses-and-springs/latest/masses-and-springs_zh_CN.html",
|
||||||
|
"subject": "math"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "等式探索:两个变量",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/equality-explorer-two-variables/latest/equality-explorer-two-variables_zh_CN.html",
|
||||||
|
"subject": "math"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "等式探索:基础",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/equality-explorer-basics/latest/equality-explorer-basics_zh_CN.html",
|
||||||
|
"subject": "math"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "等式探索",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/equality-explorer/latest/equality-explorer_zh_CN.html",
|
||||||
|
"subject": "math"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "面积模型代数",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/area-model-algebra/latest/area-model-algebra_zh_CN.html",
|
||||||
|
"subject": "math"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "面积模型:小数",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/area-model-decimals/latest/area-model-decimals_zh_CN.html",
|
||||||
|
"subject": "math"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "面积模型乘法",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/area-model-multiplication/latest/area-model-multiplication_zh_CN.html",
|
||||||
|
"subject": "math"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "面积模型入门",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/area-model-introduction/latest/area-model-introduction_zh_CN.html",
|
||||||
|
"subject": "math"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "钟摆实验",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/pendulum-lab/latest/pendulum-lab_zh_CN.html",
|
||||||
|
"subject": "math"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "斜抛运动",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/projectile-motion/latest/projectile-motion_zh_CN.html",
|
||||||
|
"subject": "math"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "表达式变换",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/expression-exchange/latest/expression-exchange_zh_CN.html",
|
||||||
|
"subject": "math"
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"label": "电路建设工具包:交流",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/circuit-construction-kit-ac/latest/circuit-construction-kit-ac_zh_CN.html",
|
||||||
|
"subject": "physics"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "交流虚拟实验室",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/circuit-construction-kit-ac-virtual-lab/latest/circuit-construction-kit-ac-virtual-lab_zh_CN.html",
|
||||||
|
"subject": "physics"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "碰撞实验室",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/collision-lab/latest/collision-lab_zh_CN.html",
|
||||||
|
"subject": "physics"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "能量滑板竞技场",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/energy-skate-park/latest/energy-skate-park_zh_CN.html",
|
||||||
|
"subject": "physics"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "向量相加",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/vector-addition/latest/vector-addition_zh_CN.html",
|
||||||
|
"subject": "physics"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "曲线拟合",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/curve-fitting/latest/curve-fitting_zh_CN.html",
|
||||||
|
"subject": "physics"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "引力实验室:基础",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/gravity-force-lab-basics/latest/gravity-force-lab-basics_zh_CN.html",
|
||||||
|
"subject": "physics"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "波动入门",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/waves-intro/latest/waves-intro_zh_CN.html",
|
||||||
|
"subject": "physics"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "扩散",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/diffusion/latest/diffusion_zh_CN.html",
|
||||||
|
"subject": "physics"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "气体基础",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/gases-intro/latest/gases-intro_zh_CN.html",
|
||||||
|
"subject": "physics"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "气体性质",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/gas-properties/latest/gas-properties_zh_CN.html",
|
||||||
|
"subject": "physics"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "质量与弹簧:基础",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/masses-and-springs-basics/latest/masses-and-springs-basics_zh_CN.html",
|
||||||
|
"subject": "physics"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "黑体辐射",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/blackbody-spectrum/latest/blackbody-spectrum_zh_CN.html",
|
||||||
|
"subject": "physics"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "能量的形式和转换",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/energy-forms-and-changes/latest/energy-forms-and-changes_zh_CN.html",
|
||||||
|
"subject": "physics"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "波的干涉",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/wave-interference/latest/wave-interference_zh_CN.html",
|
||||||
|
"subject": "physics"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "库仑定律",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/coulombs-law/latest/coulombs-law_zh_CN.html",
|
||||||
|
"subject": "physics"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "质量和弹簧",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/masses-and-springs/latest/masses-and-springs_zh_CN.html",
|
||||||
|
"subject": "physics"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "电容器实验:基础",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/capacitor-lab-basics/latest/capacitor-lab-basics_zh_CN.html",
|
||||||
|
"subject": "physics"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "电路组建实验:直流虚拟实验室",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/circuit-construction-kit-dc-virtual-lab/latest/circuit-construction-kit-dc-virtual-lab_zh_CN.html",
|
||||||
|
"subject": "physics"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "电路组建实验:直流",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/circuit-construction-kit-dc/latest/circuit-construction-kit-dc_zh_CN.html",
|
||||||
|
"subject": "physics"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "钟摆实验",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/pendulum-lab/latest/pendulum-lab_zh_CN.html",
|
||||||
|
"subject": "physics"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "斜抛运动",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/projectile-motion/latest/projectile-motion_zh_CN.html",
|
||||||
|
"subject": "physics"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "物质状态:基础",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/states-of-matter-basics/latest/states-of-matter-basics_zh_CN.html",
|
||||||
|
"subject": "physics"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "物质状态",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/states-of-matter/latest/states-of-matter_zh_CN.html",
|
||||||
|
"subject": "physics"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "重力和轨道",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/gravity-and-orbits/latest/gravity-and-orbits_zh_CN.html",
|
||||||
|
"subject": "physics"
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"label": "分子与光",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/molecules-and-light/latest/molecules-and-light_zh_CN.html",
|
||||||
|
"subject": "physics"
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"label": "PH值",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/ph-scale/latest/ph-scale_zh_CN.html",
|
||||||
|
"subject": "biology"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "光的混合",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/color-vision/latest/color-vision_zh_CN.html",
|
||||||
|
"subject": "biology"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "自然选择",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/natural-selection/latest/natural-selection_zh_CN.html",
|
||||||
|
"subject": "biology"
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"label": "受到压力",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/under-pressure/latest/under-pressure_zh_CN.html",
|
||||||
|
"subject": "sciences"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "万有引力实验",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/gravity-force-lab/latest/gravity-force-lab_zh_CN.html",
|
||||||
|
"subject": "sciences"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "气球和静电(摩擦起电)",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/balloons-and-static-electricity/latest/balloons-and-static-electricity_zh_CN.html",
|
||||||
|
"subject": "sciences"
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"label": "气体基础",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/gases-intro/latest/gases-intro_zh_CN.html",
|
||||||
|
"subject": "chemistry"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "气体性质",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/gas-properties/latest/gas-properties_zh_CN.html",
|
||||||
|
"subject": "chemistry"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "黑体辐射",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/blackbody-spectrum/latest/blackbody-spectrum_zh_CN.html",
|
||||||
|
"subject": "chemistry"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "能量的形式和转换",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/energy-forms-and-changes/latest/energy-forms-and-changes_zh_CN.html",
|
||||||
|
"subject": "chemistry"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "库仑定律",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/coulombs-law/latest/coulombs-law_zh_CN.html",
|
||||||
|
"subject": "chemistry"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "分子极性",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/molecule-polarity/latest/molecule-polarity_zh_CN.html",
|
||||||
|
"subject": "chemistry"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "物质状态:基础",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/states-of-matter-basics/latest/states-of-matter-basics_zh_CN.html",
|
||||||
|
"subject": "chemistry"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "物质状态",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/states-of-matter/latest/states-of-matter_zh_CN.html",
|
||||||
|
"subject": "chemistry"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "原子的相互作用",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/atomic-interactions/latest/atomic-interactions_zh_CN.html",
|
||||||
|
"subject": "chemistry"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "卢瑟福散射",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/rutherford-scattering/latest/rutherford-scattering_zh_CN.html",
|
||||||
|
"subject": "chemistry"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "原子的相互作用",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/atomic-interactions/latest/atomic-interactions_zh_CN.html",
|
||||||
|
"subject": "chemistry"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"senior": [
|
||||||
|
|
||||||
|
{
|
||||||
|
"label": "一次线性函数的拟合",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/least-squares-regression/latest/least-squares-regression_zh_CN.html",
|
||||||
|
"subject": "math"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "区域建造者",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/area-builder/latest/area-builder_zh_CN.html",
|
||||||
|
"subject": "math"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "绳波",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/wave-on-a-string/latest/wave-on-a-string_zh_CN.html",
|
||||||
|
"subject": "math"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "直线图形",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/graphing-lines/latest/graphing-lines_zh_CN.html",
|
||||||
|
"subject": "math"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "分数配对",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/fraction-matcher/latest/fraction-matcher_zh_CN.html",
|
||||||
|
"subject": "math"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "平衡探究实验",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/balancing-act/latest/balancing-act_zh_CN.html",
|
||||||
|
"subject": "math"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "绘图:斜率与截距",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/graphing-slope-intercept/latest/graphing-slope-intercept_zh_CN.html",
|
||||||
|
"subject": "math"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "函数构造器:基础",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/function-builder-basics/latest/function-builder-basics_zh_CN.html",
|
||||||
|
"subject": "math"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "比例游乐场",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/proportion-playground/latest/proportion-playground_zh_CN.html",
|
||||||
|
"subject": "math"
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"label": "二项分布弹珠台几率",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/plinko-probability/latest/plinko-probability_zh_CN.html",
|
||||||
|
"subject": "physics"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "原子的相互作用",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/atomic-interactions/latest/atomic-interactions_zh_CN.html",
|
||||||
|
"subject": "physics"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "电荷与电场",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/charges-and-fields/latest/charges-and-fields_zh_CN.html",
|
||||||
|
"subject": "physics"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "卢瑟福散射",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/rutherford-scattering/latest/rutherford-scattering_zh_CN.html",
|
||||||
|
"subject": "physics"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "光的折射",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/bending-light/latest/bending-light_zh_CN.html",
|
||||||
|
"subject": "physics"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "胡克定律",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/hookes-law/latest/hookes-law_zh_CN.html",
|
||||||
|
"subject": "physics"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "部分电路欧姆定律",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/ohms-law/latest/ohms-law_zh_CN.html",
|
||||||
|
"subject": "physics"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "电线的电阻",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/resistance-in-a-wire/latest/resistance-in-a-wire_zh_CN.html",
|
||||||
|
"subject": "physics"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "原子模型",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/build-an-atom/latest/build-an-atom_zh_CN.html",
|
||||||
|
"subject": "physics"
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"label": "分子极性",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/molecule-polarity/latest/molecule-polarity_zh_CN.html",
|
||||||
|
"subject": "biology"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "神经元",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/neuron/latest/neuron_zh_CN.html",
|
||||||
|
"subject": "biology"
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"label": "引力实验室:基础",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/gravity-force-lab-basics/latest/gravity-force-lab-basics_zh_CN.html",
|
||||||
|
"subject": "sciences"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "波动入门",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/waves-intro/latest/waves-intro_zh_CN.html",
|
||||||
|
"subject": "sciences"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "扩散",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/diffusion/latest/diffusion_zh_CN.html",
|
||||||
|
"subject": "sciences"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "气体基础",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/gases-intro/latest/gases-intro_zh_CN.html",
|
||||||
|
"subject": "sciences"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "气体性质",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/gas-properties/latest/gas-properties_zh_CN.html",
|
||||||
|
"subject": "sciences"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "分子与光",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/molecules-and-light/latest/molecules-and-light_zh_CN.html",
|
||||||
|
"subject": "sciences"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "绳波",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/wave-on-a-string/latest/wave-on-a-string_zh_CN.html",
|
||||||
|
"subject": "sciences"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "黑体辐射",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/blackbody-spectrum/latest/blackbody-spectrum_zh_CN.html",
|
||||||
|
"subject": "sciences"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "波的干涉",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/wave-interference/latest/wave-interference_zh_CN.html",
|
||||||
|
"subject": "sciences"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "重力和轨道",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/gravity-and-orbits/latest/gravity-and-orbits_zh_CN.html",
|
||||||
|
"subject": "sciences"
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"label": "同位素和原子的质量",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/isotopes-and-atomic-mass/latest/isotopes-and-atomic-mass_zh_CN.html",
|
||||||
|
"subject": "chemistry"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "分子与光",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/molecules-and-light/latest/molecules-and-light_zh_CN.html",
|
||||||
|
"subject": "chemistry"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "分子形状",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/molecule-shapes/latest/molecule-shapes_zh_CN.html",
|
||||||
|
"subject": "chemistry"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "分子形状:基础",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/molecule-shapes-basics/latest/molecule-shapes-basics_zh_CN.html",
|
||||||
|
"subject": "chemistry"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "反应物,生成物及未反应物",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/reactants-products-and-leftovers/latest/reactants-products-and-leftovers_zh_CN.html",
|
||||||
|
"subject": "chemistry"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "pH值:基础",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/ph-scale-basics/latest/ph-scale-basics_zh_CN.html",
|
||||||
|
"subject": "chemistry"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "绳波",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/wave-on-a-string/latest/wave-on-a-string_zh_CN.html",
|
||||||
|
"subject": "chemistry"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "PH值",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/ph-scale/latest/ph-scale_zh_CN.html",
|
||||||
|
"subject": "chemistry"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "配平化学方程式",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/balancing-chemical-equations/latest/balancing-chemical-equations_zh_CN.html",
|
||||||
|
"subject": "chemistry"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "酸碱溶度",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/acid-base-solutions/latest/acid-base-solutions_zh_CN.html",
|
||||||
|
"subject": "chemistry"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "浓度",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/concentration/latest/concentration_zh_CN.html",
|
||||||
|
"subject": "chemistry"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "气球和静电(摩擦起电)",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/balloons-and-static-electricity/latest/balloons-and-static-electricity_zh_CN.html",
|
||||||
|
"subject": "chemistry"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "比尔定律实验",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/beers-law-lab/latest/beers-law-lab_zh_CN.html",
|
||||||
|
"subject": "chemistry"
|
||||||
|
},{
|
||||||
|
"label": "摩尔浓度",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/molarity/latest/molarity_zh_CN.html",
|
||||||
|
"subject": "chemistry"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "原子模型",
|
||||||
|
"fileurl": "https://phet.colorado.edu/sims/html/build-an-atom/latest/build-an-atom_zh_CN.html",
|
||||||
|
"subject": "chemistry"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
|
@ -141,7 +141,8 @@
|
||||||
v-if="
|
v-if="
|
||||||
dialogProps.studentObj.worktype == '常规作业' ||
|
dialogProps.studentObj.worktype == '常规作业' ||
|
||||||
dialogProps.studentObj.worktype == '课堂展示' ||
|
dialogProps.studentObj.worktype == '课堂展示' ||
|
||||||
dialogProps.studentObj.worktype == '框架梳理'
|
dialogProps.studentObj.worktype == '框架梳理' ||
|
||||||
|
dialogProps.studentObj.worktype == '科学实验'
|
||||||
"
|
"
|
||||||
>
|
>
|
||||||
<div v-for="(stuItem, sIndex) in dialogProps.studentQuizAllList" :key="stuItem.id">
|
<div v-for="(stuItem, sIndex) in dialogProps.studentQuizAllList" :key="stuItem.id">
|
||||||
|
@ -157,7 +158,8 @@
|
||||||
v-if="
|
v-if="
|
||||||
dialogProps.studentObj.worktype == '常规作业' ||
|
dialogProps.studentObj.worktype == '常规作业' ||
|
||||||
dialogProps.studentObj.worktype == '课堂展示' ||
|
dialogProps.studentObj.worktype == '课堂展示' ||
|
||||||
dialogProps.studentObj.worktype == '框架梳理'
|
dialogProps.studentObj.worktype == '框架梳理' ||
|
||||||
|
dialogProps.studentObj.worktype == '科学实验'
|
||||||
"
|
"
|
||||||
>
|
>
|
||||||
<!-- 文件内容格式:mp3/mp4/doc/docx/excel/pdf/ppt/pptx/jpg/jpeg/gif/png/txt ->
|
<!-- 文件内容格式:mp3/mp4/doc/docx/excel/pdf/ppt/pptx/jpg/jpeg/gif/png/txt ->
|
||||||
|
@ -210,7 +212,13 @@
|
||||||
|
|
||||||
<!-- 学生答题展示 -->
|
<!-- 学生答题展示 -->
|
||||||
<div v-if="feedContentList.length > 0">
|
<div v-if="feedContentList.length > 0">
|
||||||
<div v-if="dialogProps.studentObj.worktype == '常规作业' && stuItem.rightanswer != ''&& stuItem.rightanswer != null">
|
<div
|
||||||
|
v-if="
|
||||||
|
(dialogProps.studentObj.worktype == '常规作业' || dialogProps.studentObj.worktype == '科学实验') &&
|
||||||
|
stuItem.rightanswer != '' &&
|
||||||
|
stuItem.rightanswer != null
|
||||||
|
"
|
||||||
|
>
|
||||||
<!-- 常规作业:学生有的会答复 -->
|
<!-- 常规作业:学生有的会答复 -->
|
||||||
<p style="padding: 10px 0;text-align: left;">学生答复内容</p>
|
<p style="padding: 10px 0;text-align: left;">学生答复内容</p>
|
||||||
<div style="padding: 0 20px;text-align: left;">{{stuItem.rightanswer}}</div>
|
<div style="padding: 0 20px;text-align: left;">{{stuItem.rightanswer}}</div>
|
||||||
|
@ -700,7 +708,7 @@ const acceptParams = async (params) => {
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
// 学生回答
|
// 学生回答
|
||||||
if (params.studentObj.worktype == '常规作业') {
|
if (params.studentObj.worktype == '常规作业' || params.studentObj.worktype == '科学实验') {
|
||||||
try {
|
try {
|
||||||
// 老师布置的附件 datacontent TODO:常规作业、其他类型还未接入
|
// 老师布置的附件 datacontent TODO:常规作业、其他类型还未接入
|
||||||
const res = await getClassworkdata(params.studentObj.id);
|
const res = await getClassworkdata(params.studentObj.id);
|
||||||
|
|
|
@ -37,6 +37,7 @@ const items = shallowRef([
|
||||||
{ title: '常规作业', description: '推送pdf、视频、音频、图片,学生可以拍照上传。', icon: '#icon-zhaoxiangji',type:'danger' },
|
{ title: '常规作业', description: '推送pdf、视频、音频、图片,学生可以拍照上传。', icon: '#icon-zhaoxiangji',type:'danger' },
|
||||||
// { title: 'AI设计作业', description: '通过AI助手,根据课标、教材、考试等分析结果,智能创建作业。', icon: '#icon-jiqiren_o',type:'danger' },
|
// { title: 'AI设计作业', description: '通过AI助手,根据课标、教材、考试等分析结果,智能创建作业。', icon: '#icon-jiqiren_o',type:'danger' },
|
||||||
{ title: '习题上传', description: '自己上传个人题库。', icon: '#icon-shangchuan',type:'danger' },
|
{ title: '习题上传', description: '自己上传个人题库。', icon: '#icon-shangchuan',type:'danger' },
|
||||||
|
{ title: '科学实验', description: '学生完成虚拟仿真实验,并提交实验结果。', icon: '#icon-shangchuan',type:'danger' },
|
||||||
]);
|
]);
|
||||||
|
|
||||||
const handleClick = (item) => {
|
const handleClick = (item) => {
|
||||||
|
|
|
@ -0,0 +1,52 @@
|
||||||
|
<template>
|
||||||
|
<div style="display: flex;">
|
||||||
|
<el-select
|
||||||
|
v-model="value"
|
||||||
|
placeholder="请选择实验课程"
|
||||||
|
size="large"
|
||||||
|
style="width: 240px"
|
||||||
|
@change="onSelectOption"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in props.list"
|
||||||
|
:key="item.value"
|
||||||
|
:label="item.label"
|
||||||
|
:value="item.label"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import useUserStore from '@/store/modules/user'
|
||||||
|
import {ArrowDown} from '@element-plus/icons-vue'
|
||||||
|
import { onMounted,ref } from 'vue';
|
||||||
|
const userStore = useUserStore().user
|
||||||
|
const subjectList = ref([])
|
||||||
|
|
||||||
|
// 定义要发送的emit事件
|
||||||
|
let emit = defineEmits(['selectItem'])
|
||||||
|
const props = defineProps({
|
||||||
|
list: {
|
||||||
|
type: Array,
|
||||||
|
default: () => ([])
|
||||||
|
},
|
||||||
|
})
|
||||||
|
const value = ref('')
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
})
|
||||||
|
|
||||||
|
const onSelectOption = (option) => {
|
||||||
|
console.log(option,'选择的实验课-------')
|
||||||
|
emit('selectItem', props.list.filter(item => item.label === option)[0])
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
<style scoped>
|
||||||
|
|
||||||
|
</style>
|
||||||
|
|
|
@ -0,0 +1,162 @@
|
||||||
|
<template>
|
||||||
|
<div style="display: flex;">
|
||||||
|
<div style="margin-left: 15px">
|
||||||
|
<el-dropdown @command="handleUserEduStage">
|
||||||
|
<span class="el-dropdown-link">
|
||||||
|
<el-button class="custom-button" type="default" round >{{ userStore.edustage }}
|
||||||
|
<el-icon><ArrowDown /></el-icon>
|
||||||
|
</el-button>
|
||||||
|
</span>
|
||||||
|
<template #dropdown>
|
||||||
|
<el-dropdown-menu>
|
||||||
|
<!-- <el-dropdown-item command="幼儿园">幼儿园</el-dropdown-item> -->
|
||||||
|
<el-dropdown-item command="小学">小学</el-dropdown-item>
|
||||||
|
<el-dropdown-item command="初中">初中</el-dropdown-item>
|
||||||
|
<el-dropdown-item command="高中">高中</el-dropdown-item>
|
||||||
|
</el-dropdown-menu>
|
||||||
|
</template>
|
||||||
|
</el-dropdown>
|
||||||
|
</div>
|
||||||
|
<div style="margin-left: 15px">
|
||||||
|
<el-dropdown @command="handleUserEduSubject">
|
||||||
|
<span class="el-dropdown-link">
|
||||||
|
<el-button class="custom-button" type="default" round>{{ userStore.edusubject }}
|
||||||
|
<el-icon><ArrowDown /></el-icon>
|
||||||
|
</el-button>
|
||||||
|
</span>
|
||||||
|
<template #dropdown>
|
||||||
|
<el-dropdown-menu>
|
||||||
|
<template v-for="(item, index) in subjectList">
|
||||||
|
<el-dropdown-item v-if="item.edustage == userStore.edustage" :command="item.itemtitle">{{
|
||||||
|
item.itemtitle }}</el-dropdown-item>
|
||||||
|
</template>
|
||||||
|
</el-dropdown-menu>
|
||||||
|
</template>
|
||||||
|
</el-dropdown>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import useUserStore from '@/store/modules/user'
|
||||||
|
import {ArrowDown} from '@element-plus/icons-vue'
|
||||||
|
import { onMounted,ref } from 'vue';
|
||||||
|
import { listEvaluation } from '@/api/subject/index'
|
||||||
|
import jsonData from "@/utils/phetData.json";
|
||||||
|
const userStore = useUserStore().user
|
||||||
|
|
||||||
|
// 定义要发送的emit事件
|
||||||
|
let emit = defineEmits(['experlist'])
|
||||||
|
|
||||||
|
const subjectList = ref([])
|
||||||
|
const chooseGrade= ref({})
|
||||||
|
const expList = ref([]) // 当前年级的所有课程
|
||||||
|
const checkList = ref([])// 当前年级对应学科的课程,
|
||||||
|
|
||||||
|
|
||||||
|
// 获取基础的学科
|
||||||
|
const getSubject = () => {
|
||||||
|
//没有学科则不进行下面的步骤
|
||||||
|
if(!userStore.subject) return
|
||||||
|
listEvaluation({ itemkey: 'subject', pageSize: 500 }).then((res) => {
|
||||||
|
const arr = userStore.subject.split(',')
|
||||||
|
subjectList.value = res.rows.filter(item => arr.includes(String(item.id))).map(items => items)
|
||||||
|
console.log(subjectList,'subjectList');
|
||||||
|
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 选择学段
|
||||||
|
const handleUserEduStage = (item) => {
|
||||||
|
userStore.edustage = item
|
||||||
|
// sessionStore.set('edustageSelf',item)
|
||||||
|
// if(item === '幼儿园'){
|
||||||
|
// // 默认语文
|
||||||
|
// userStore.edusubject = '语文'
|
||||||
|
// // sessionStore.set('edusubjectSelf','语文')
|
||||||
|
// }
|
||||||
|
// else
|
||||||
|
if(item === '高中' && userStore.edusubject === "道德与法治"){
|
||||||
|
// 默认语文
|
||||||
|
userStore.edusubject = '政治'
|
||||||
|
// sessionStore.set('edusubjectSelf','政治')
|
||||||
|
}
|
||||||
|
else if(item != '高中' && userStore.edusubject === "政治"){
|
||||||
|
// 默认语文
|
||||||
|
userStore.edusubject = '道德与法治'
|
||||||
|
// sessionStore.set('edusubjectSelf','道德与法治')
|
||||||
|
}
|
||||||
|
|
||||||
|
// 在此处处理筛选年级实验的逻辑
|
||||||
|
//清空操作
|
||||||
|
expList.value = []
|
||||||
|
if(item === '小学'){
|
||||||
|
chooseGrade.value = jsonData.data.primary
|
||||||
|
}else if(item === '初中'){
|
||||||
|
chooseGrade.value = jsonData.data.junior
|
||||||
|
}else if(item === '高中'){
|
||||||
|
chooseGrade.value = jsonData.data.senior
|
||||||
|
}
|
||||||
|
for(let i in chooseGrade.value){
|
||||||
|
expList.value.push(chooseGrade.value[i])
|
||||||
|
}
|
||||||
|
console.log(expList.value,'expList.value')
|
||||||
|
// const queryGrages = this.subjectList.filter(itemSubject => itemSubject.edustage === item)
|
||||||
|
// selectSubject(item, subjectList.value)
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
// 选择学科
|
||||||
|
const handleUserEduSubject = (item) => {
|
||||||
|
userStore.edusubject = item;
|
||||||
|
// sessionStore.set('edusubjectSelf',item)
|
||||||
|
console.log(item,'选择的学科-------')
|
||||||
|
//更改学科
|
||||||
|
// this.chooseSubject = item
|
||||||
|
checkList.value = []
|
||||||
|
// const queryGrages = expList.value.filter(itemSubject => itemSubject.edustage === item) || []
|
||||||
|
//这里是年级切换的时候,判断一下下一个年级是否有这一门课程,如果有继续执行,没有就清空
|
||||||
|
// const subjectNameList = queryGrages.map(itemSubName => {
|
||||||
|
// return itemSubName.edusubject
|
||||||
|
// })
|
||||||
|
// if(!subjectNameList.includes(item)) return
|
||||||
|
switch (item){
|
||||||
|
case '数学':
|
||||||
|
checkList.value = expList.value.filter(item => item.subject === 'math')
|
||||||
|
break;
|
||||||
|
case '物理':
|
||||||
|
checkList.value = expList.value.filter(item => item.subject === 'physics')
|
||||||
|
break;
|
||||||
|
case '化学':
|
||||||
|
checkList.value = expList.value.filter(item => item.subject === 'chemistry')
|
||||||
|
break;
|
||||||
|
case '生物':
|
||||||
|
checkList.value = expList.value.filter(item => item.subject === 'biology')
|
||||||
|
break;
|
||||||
|
case '科学':
|
||||||
|
checkList.value = expList.value.filter(item => item.subject === 'sciences')
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
console.log(checkList.value,'checkList')
|
||||||
|
emit('experlist',checkList.value)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
getSubject()
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
<style scoped>
|
||||||
|
.custom-button {
|
||||||
|
width: auto;
|
||||||
|
border: 1px solid rgb(59, 130, 246);
|
||||||
|
outline: none;
|
||||||
|
outline-offset: none;
|
||||||
|
padding: 0 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.custom-button i {
|
||||||
|
margin-left: 8px; /* 调整图标与文字之间的间距 */
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,115 @@
|
||||||
|
<template>
|
||||||
|
<div class="experiment-page">
|
||||||
|
<div class="activeExp-header">
|
||||||
|
<div class="infomation" v-if="isStadium() !== true" >
|
||||||
|
<selectClass v-if="!isSubject" @experlist="getExperimentList" />
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<selectExperiment :list="experimentList" @selectItem="getExperimentListItem" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div ref="mainDiv" class="activeExp-main" style="overflow: auto">
|
||||||
|
<iframe :src="activeExp.fileurl" ref="myuunity" width="100%" height="100%" scrolling="no" frameborder="0"></iframe>
|
||||||
|
<!-- <phet/>-->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script setup>
|
||||||
|
import { Search } from '@element-plus/icons-vue'
|
||||||
|
//import html2canvas from 'html2canvas';
|
||||||
|
import { onMounted, ref,watch, reactive, getCurrentInstance,nextTick } from 'vue'
|
||||||
|
|
||||||
|
|
||||||
|
import { getBindlist } from '@/api/education/knowledgePoint'
|
||||||
|
import examDetailsDrawer from '@/components/exam-question/examDetailsDrawer.vue'
|
||||||
|
import { processList } from '@/hooks/useProcessList'
|
||||||
|
import { useGetHomework } from '@/hooks/useGetHomework'
|
||||||
|
import { sessionStore } from '@/utils/store'
|
||||||
|
import {throttle,debounce } from '@/utils/comm'
|
||||||
|
import useUserStore from '@/store/modules/user'
|
||||||
|
import useClassTaskStore from '@/store/modules/classTask'
|
||||||
|
|
||||||
|
//选择学校和班级
|
||||||
|
import selectClass from './components/selectClass.vue'
|
||||||
|
// 选择的 学科实验
|
||||||
|
import selectExperiment from './components/experimentList.vue'
|
||||||
|
|
||||||
|
|
||||||
|
// 定义要发送的emit事件
|
||||||
|
let emit = defineEmits(['clickExpObj'])
|
||||||
|
const { proxy } = getCurrentInstance()
|
||||||
|
const userStore = useUserStore().user
|
||||||
|
|
||||||
|
const props = defineProps({
|
||||||
|
bookobj: {
|
||||||
|
type: Object,
|
||||||
|
default: () => ({})
|
||||||
|
},
|
||||||
|
expObj: {
|
||||||
|
type: Object,
|
||||||
|
default: () => ({})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
// 学科的 实验列
|
||||||
|
const experimentList = ref([]);
|
||||||
|
const activeExp = ref({});
|
||||||
|
|
||||||
|
const isStadium = () => {
|
||||||
|
let roles = userStore.roles
|
||||||
|
return roles.some(item => item.roleKey === 'stadium')
|
||||||
|
}
|
||||||
|
|
||||||
|
// const mainLeftBarHeight = ref(0);
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
// var mainLeftBar = document.getElementById("mainLeftBar");
|
||||||
|
// mainLeftBarHeight.value = document.documentElement.clientHeight-50-mainLeftBar.offsetParent.offsetTop - 10;
|
||||||
|
|
||||||
|
// getDivHeight()
|
||||||
|
// window.addEventListener('resize', getDivHeight)
|
||||||
|
})
|
||||||
|
// const getDivHeight = () => {
|
||||||
|
// const screenheight = window.innerHeight;
|
||||||
|
// proxy.$refs.mainDiv.style.height = screenheight-140 > 320 ? screenheight-140+'px' : 320+'px';
|
||||||
|
// console.log("height", proxy.$refs.mainDiv.style.height);
|
||||||
|
// // 704 为 头部组件高度 + 底部组件高度
|
||||||
|
// // mainDiv 为需控制高度自适应盒子,通过 ref="mainDiv" 绑定
|
||||||
|
// }
|
||||||
|
|
||||||
|
// 选择的学科 获取实验课程信息
|
||||||
|
const getExperimentList = (val) => {
|
||||||
|
console.log(val,'选择的学科,获取实验课程list信息')
|
||||||
|
experimentList.value = val;
|
||||||
|
}
|
||||||
|
// 选择的实验课
|
||||||
|
const getExperimentListItem = (val) => {
|
||||||
|
console.log(val,'选择的实验课程信息')
|
||||||
|
activeExp.value = val;
|
||||||
|
emit('clickExpObj', val)
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log(props.expObj,'科学props.expObj实验科目')
|
||||||
|
watch(() => props.expObj.fileurl, (newVal, oldVal) => {
|
||||||
|
console.log(newVal,'科学实验科目')
|
||||||
|
activeExp.value = props.expObj;
|
||||||
|
})
|
||||||
|
|
||||||
|
</script>
|
||||||
|
<style scoped lang="scss">
|
||||||
|
.experiment-page {
|
||||||
|
height: 100%;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
|
||||||
|
.activeExp-header {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
}
|
||||||
|
|
||||||
|
.activeExp-main{
|
||||||
|
flex: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
|
@ -77,6 +77,11 @@
|
||||||
<FileUpload v-model="classWorkForm.fileHomeworkList" :fileSize="800" :fileType="['mp3','mp4','doc','docx','xlsx','xls','pdf','ppt','pptx','jpg','jpeg','gif','png','txt']"/>
|
<FileUpload v-model="classWorkForm.fileHomeworkList" :fileSize="800" :fileType="['mp3','mp4','doc','docx','xlsx','xls','pdf','ppt','pptx','jpg','jpeg','gif','png','txt']"/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div v-if="(currentRow.worktype == '科学实验' || classWorkForm.worktype == '科学实验')&& currentRow.id>0" class="page-center">
|
||||||
|
<div class="experiment-homework">
|
||||||
|
<ExperimentQuestion :expObj="classWorkForm.fileHomeworkList&&classWorkForm.fileHomeworkList[0]" @clickExpObj="getExpObj" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div v-if="currentRow.id>0 " class="page-right">
|
<div v-if="currentRow.id>0 " class="page-right">
|
||||||
<div class="prepare-top" >
|
<div class="prepare-top" >
|
||||||
|
@ -140,6 +145,7 @@ import { editListItem } from '@/hooks/useClassTask'
|
||||||
import MyQuestion from '@/views/classTask/newClassTaskAssign/myQuestion/index.vue'
|
import MyQuestion from '@/views/classTask/newClassTaskAssign/myQuestion/index.vue'
|
||||||
import SchoolQuestion from '@/views/classTask/newClassTaskAssign/schoolQuestion/index.vue'
|
import SchoolQuestion from '@/views/classTask/newClassTaskAssign/schoolQuestion/index.vue'
|
||||||
import SearchQuestion from '@/views/classTask/newClassTaskAssign/searchQuestion/index.vue'
|
import SearchQuestion from '@/views/classTask/newClassTaskAssign/searchQuestion/index.vue'
|
||||||
|
import ExperimentQuestion from "@/views/classTask/newClassTaskAssign/experimentQuestion/index.vue";
|
||||||
import whiteboard from '@/components/whiteboard/whiteboard.vue'
|
import whiteboard from '@/components/whiteboard/whiteboard.vue'
|
||||||
import FileUpload from "@/components/FileUpload/index.vue";
|
import FileUpload from "@/components/FileUpload/index.vue";
|
||||||
import Right from './Right/index.vue'
|
import Right from './Right/index.vue'
|
||||||
|
@ -258,6 +264,16 @@ watch(() => props.currentCourse, (newVal, oldVal) => {
|
||||||
}
|
}
|
||||||
console.log(newVal,'newval');
|
console.log(newVal,'newval');
|
||||||
},{deep:true})
|
},{deep:true})
|
||||||
|
|
||||||
|
// ------------科学实验
|
||||||
|
const getExpObj = (obj)=>{
|
||||||
|
// obj:{
|
||||||
|
// fileurl: "https://phet.colorado.edu/sims/html/number-compare/latest/number-compare_zh_CN.html"
|
||||||
|
// label: "数量比较"
|
||||||
|
// subject: "math"
|
||||||
|
// }
|
||||||
|
classWorkForm.fileHomeworkList = [obj];
|
||||||
|
}
|
||||||
//---------作业设计---
|
//---------作业设计---
|
||||||
const handleItemClick = (itemName) => {
|
const handleItemClick = (itemName) => {
|
||||||
console.log('itemName', itemName);
|
console.log('itemName', itemName);
|
||||||
|
@ -582,6 +598,32 @@ const handleClassWorkFormQuizRemove = (index) =>{
|
||||||
fileLoading.value = false
|
fileLoading.value = false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if(classWorkForm.worktype === "科学实验"){
|
||||||
|
if (classWorkForm.fileHomeworkList.length == 0) return ElMessage({ type: 'warning', message: '请选择科学实验的课程!'});
|
||||||
|
cform.workcodes = JSON.stringify(classWorkForm.fileHomeworkList);
|
||||||
|
cform.entpcourseworklist = JSON.stringify([{'id':-3, 'score': '10'}]);
|
||||||
|
try {
|
||||||
|
console.log(cform,'科学实验')
|
||||||
|
addClassworkReturnId(cform).then((res) => {
|
||||||
|
ElMessage({ type: 'success', message: '作业设计成功!'});
|
||||||
|
// 重置提交表单
|
||||||
|
classWorkForm.worktype = "常规作业";
|
||||||
|
classWorkForm.uniquekey = ''; // props.propsformobj.uniquekey, // 作业唯一标识 作业名称
|
||||||
|
classWorkForm.title = "";
|
||||||
|
classWorkForm.quizlist = [], // 作业习题列表内容
|
||||||
|
|
||||||
|
// 情况选择的资源缓存
|
||||||
|
classWorkForm.chooseWorkLists = []; // 框架梳理list
|
||||||
|
classWorkForm.whiteboardObj = ''; // ? // 清空白板
|
||||||
|
classWorkForm.fileHomeworkList = []; // 常规作业list
|
||||||
|
classWorkForm.id = res
|
||||||
|
// emits('getData',classWorkForm)
|
||||||
|
// TODO 科学实验 待完善
|
||||||
|
})
|
||||||
|
} finally{
|
||||||
|
//
|
||||||
|
}
|
||||||
|
}
|
||||||
else {
|
else {
|
||||||
// 正常新任务
|
// 正常新任务
|
||||||
var ll = [];
|
var ll = [];
|
||||||
|
@ -667,7 +709,10 @@ const editWork = async (cform) =>{
|
||||||
}else{
|
}else{
|
||||||
if (classWorkForm.fileHomeworkList.length == 0) return ElMessage({ type: 'warning', message: '请上传常规作业附件!'});
|
if (classWorkForm.fileHomeworkList.length == 0) return ElMessage({ type: 'warning', message: '请上传常规作业附件!'});
|
||||||
}
|
}
|
||||||
}else {
|
}else if( classWorkForm.worktype == '科学实验') {
|
||||||
|
if (classWorkForm.fileHomeworkList.length == 0) return ElMessage({ type: 'warning', message: '请选择科学实验科目!'});
|
||||||
|
}
|
||||||
|
else {
|
||||||
if (classWorkForm.chooseWorkLists.length == 0) {
|
if (classWorkForm.chooseWorkLists.length == 0) {
|
||||||
// 框架梳理
|
// 框架梳理
|
||||||
ElMessage.error('请先添加作业资源!');
|
ElMessage.error('请先添加作业资源!');
|
||||||
|
@ -759,6 +804,10 @@ const editWork = async (cform) =>{
|
||||||
// 1.更新作业任务下的课堂展示内容 (这里未做校验, 直接将当前文件对象更新过去)
|
// 1.更新作业任务下的课堂展示内容 (这里未做校验, 直接将当前文件对象更新过去)
|
||||||
cform.workcodes = JSON.stringify(classWorkForm.fileHomeworkList);
|
cform.workcodes = JSON.stringify(classWorkForm.fileHomeworkList);
|
||||||
}
|
}
|
||||||
|
else if (classWorkForm.worktype=='科学实验') { //TODO 注意,fileHomeworkList字段与常规作业共用
|
||||||
|
// 1.更新作业任务下的课堂展示内容 (这里未做校验, 直接将当前文件对象更新过去)
|
||||||
|
cform.workcodes = JSON.stringify(classWorkForm.fileHomeworkList);
|
||||||
|
}
|
||||||
|
|
||||||
// 3.更新作业任务本身
|
// 3.更新作业任务本身
|
||||||
let res = await updateClasswork(cform);
|
let res = await updateClasswork(cform);
|
||||||
|
@ -865,6 +914,11 @@ const editWork = async (cform) =>{
|
||||||
padding: 20px;
|
padding: 20px;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.experiment-homework{
|
||||||
|
padding: 15px;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
.page-right {
|
.page-right {
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
<el-dropdown-menu>
|
<el-dropdown-menu>
|
||||||
<el-dropdown-item @click="createAIPPT">新建文枢课件</el-dropdown-item>
|
<el-dropdown-item @click="createAIPPT">新建文枢课件</el-dropdown-item>
|
||||||
<el-dropdown-item @click="aiTOPPT">AI一键生成</el-dropdown-item>
|
<el-dropdown-item @click="aiTOPPT">AI一键生成</el-dropdown-item>
|
||||||
<!-- <el-dropdown-item @click="openGridPic">打开宫格</el-dropdown-item>-->
|
<el-dropdown-item @click="openGridPic">打开宫格</el-dropdown-item>
|
||||||
<el-dropdown-item @click="openFilePicker">导入PPT</el-dropdown-item>
|
<el-dropdown-item @click="openFilePicker">导入PPT</el-dropdown-item>
|
||||||
<input type="file" ref="fileInput" style="display: none;" @change="handleFileChange" accept="application/vnd.ms-powerpoint,application/vnd.openxmlformats-officedocument.presentationml.presentation">
|
<input type="file" ref="fileInput" style="display: none;" @change="handleFileChange" accept="application/vnd.ms-powerpoint,application/vnd.openxmlformats-officedocument.presentationml.presentation">
|
||||||
</el-dropdown-menu>
|
</el-dropdown-menu>
|
||||||
|
|
Loading…
Reference in New Issue