lyc-dev #45
|
@ -57,5 +57,12 @@ export default defineConfig({
|
|||
},
|
||||
plugins: [vue(), WindiCSS()],
|
||||
assetsInclude:('**/*.woff', '**/*.woff2', '**/*.ttf'),
|
||||
css: {
|
||||
preprocessorOptions: {
|
||||
scss: {
|
||||
silenceDeprecations: ['legacy-js-api']
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
@font-face {
|
||||
font-family: "iconfont"; /* Project id 4723712 */
|
||||
src: url('iconfont.woff2?t=1731393731097') format('woff2'),
|
||||
url('iconfont.woff?t=1731393731097') format('woff'),
|
||||
url('iconfont.ttf?t=1731393731097') format('truetype');
|
||||
src: url('iconfont.woff2?t=1731913617367') format('woff2'),
|
||||
url('iconfont.woff?t=1731913617367') format('woff'),
|
||||
url('iconfont.ttf?t=1731913617367') format('truetype');
|
||||
}
|
||||
|
||||
.iconfont {
|
||||
|
@ -13,6 +13,10 @@
|
|||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
||||
|
||||
.icon-baocun:before {
|
||||
content: "\e60e";
|
||||
}
|
||||
|
||||
.icon-tihuan:before {
|
||||
content: "\e7ab";
|
||||
}
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -5,6 +5,13 @@
|
|||
"css_prefix_text": "icon-",
|
||||
"description": "",
|
||||
"glyphs": [
|
||||
{
|
||||
"icon_id": "11467388",
|
||||
"name": "保存",
|
||||
"font_class": "baocun",
|
||||
"unicode": "e60e",
|
||||
"unicode_decimal": 58894
|
||||
},
|
||||
{
|
||||
"icon_id": "12730938",
|
||||
"name": "替换",
|
||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -1,5 +1,5 @@
|
|||
<template>
|
||||
<div class="whiteboart-container" :style="{ height: height + 'px' }">
|
||||
<div class="whiteboart-container">
|
||||
<div class="canvasBox" ref="box"></div>
|
||||
|
||||
<div class="footerLeft" @click.stop
|
||||
|
|
|
@ -61,20 +61,12 @@ export const constantRoutes = [
|
|||
component: () => import('@/views/job-management/index.vue'),
|
||||
name: 'job-management',
|
||||
meta: { title: '作业管理' },
|
||||
// children: [
|
||||
// {
|
||||
// path: 'details',
|
||||
// component: () => import('@/views/job-management/Details/index.vue'),
|
||||
// name: 'details',
|
||||
// meta: { title: '详情' }
|
||||
// },
|
||||
// {
|
||||
// path: 'right',
|
||||
// component: () => import('@/views/job-management/Right/index.vue'),
|
||||
// name: 'right',
|
||||
// meta: { title: '主页' }
|
||||
// },
|
||||
// ]
|
||||
},
|
||||
{
|
||||
path: 'design',
|
||||
component: () => import('@/views/teachingDesign/index.vue'),
|
||||
name: 'teaching-design',
|
||||
meta: { title: '教学框架设计' },
|
||||
},
|
||||
]
|
||||
},
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
<template>
|
||||
<!-- <whiteboard/> -->
|
||||
<div> 1</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import whiteboard from '@/components/whiteboard/whiteboard.vue';
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
|
||||
</style>
|
|
@ -40,6 +40,7 @@
|
|||
<script setup>
|
||||
import { ref,defineProps ,defineEmits,nextTick , onMounted,shallowRef } from 'vue'
|
||||
import ClassroomPresentation from './classroomPresentation/index.vue'
|
||||
import ClassPresentation from './classPresentation/index.vue'
|
||||
import selfSearchQuestions from './selfSearchQuestions/index.vue'
|
||||
const props = defineProps({
|
||||
parameter: Object
|
||||
|
@ -65,6 +66,8 @@ const rightComponets = (str) => {
|
|||
return ClassroomPresentation
|
||||
case 'selfSearchQuestions':
|
||||
return selfSearchQuestions
|
||||
case 'classPresentation':
|
||||
return ClassPresentation
|
||||
default:
|
||||
return null
|
||||
}
|
||||
|
|
|
@ -76,7 +76,7 @@ const items = ref([
|
|||
label:'智能推荐',
|
||||
},
|
||||
] },
|
||||
{ title: '课堂展示', description: '555555', icon: markRaw(Document), type: 'primary', text: '课堂展示',components:'selfSearchQuestions',titleList:[
|
||||
{ title: '课堂展示', description: '555555', icon: markRaw(Document), type: 'primary', text: '课堂展示',components:'classPresentation',titleList:[
|
||||
{
|
||||
id:1,
|
||||
label:'课堂展示',
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
<el-button type="primary" @click="onchange('/model/curriculum')">课标研读</el-button>
|
||||
<el-button type="primary" @click="onchange('/model/management')">作业管理</el-button>
|
||||
<el-button type="success" @click="onchange('/model/teaching')">教材研读</el-button>
|
||||
<el-button type="info" @click="onchange('/model/design')">教学框架设计</el-button>
|
||||
<!-- <el-button type="info" @click="onchange('/model/examination')">考试分析</el-button> -->
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -0,0 +1,118 @@
|
|||
<template>
|
||||
<div class="container-left flex">
|
||||
<div class="left-header flex">教学模式</div>
|
||||
<div class="left-con" v-loading="loading">
|
||||
<div class="con-item" v-for="item in tempList" :key="item.id">
|
||||
<div class="item-header flex">
|
||||
<span>{{ item.name }}</span>
|
||||
<el-button type="primary" link>选择模式</el-button>
|
||||
</div>
|
||||
<el-scrollbar>
|
||||
<div class="item-list flex">
|
||||
<el-card class="item-card" shadow="never" v-for="el in item.child" :key="el.id">
|
||||
<p class="card-name">{{ el.name }}</p>
|
||||
<div class="card-text">
|
||||
<el-text line-clamp="2">
|
||||
{{ el.prompt }}
|
||||
</el-text>
|
||||
</div>
|
||||
</el-card>
|
||||
</div>
|
||||
</el-scrollbar>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref, onMounted } from 'vue';
|
||||
import { modelList } from '@/api/mode/index'
|
||||
|
||||
// 获取模板
|
||||
let list = []
|
||||
const getTemplate = () => {
|
||||
modelList({ model: 1, type: 1, ex3: 1 }).then(res => {
|
||||
list = res.rows
|
||||
getChildTemp()
|
||||
})
|
||||
}
|
||||
|
||||
// 获取子模板
|
||||
const loading = ref(false)
|
||||
const tempList = ref([])
|
||||
const getChildTemp = async () => {
|
||||
loading.value = true
|
||||
for (let item of list) {
|
||||
try {
|
||||
const { rows } = await modelList({ model: 1, type: 2, parentId: item.id })
|
||||
tempList.value.push({
|
||||
id: item.id,
|
||||
name: item.name,
|
||||
child: rows
|
||||
})
|
||||
} finally {
|
||||
loading.value = false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
getTemplate()
|
||||
})
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.container-left {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
flex-direction: column;
|
||||
|
||||
.left-header {
|
||||
height: 45px;
|
||||
background: #F6F6F6;
|
||||
border-radius: 5px 0 0 0;
|
||||
align-items: center;
|
||||
font-size: 14px;
|
||||
font-weight: bold;
|
||||
text-indent: 2em;
|
||||
}
|
||||
|
||||
.left-con {
|
||||
flex: 1;
|
||||
background: #fff;
|
||||
border-radius: 0 0 0 5px;
|
||||
padding: 15px;
|
||||
box-sizing: border-box;
|
||||
font-size: 14px;
|
||||
|
||||
.item-header {
|
||||
justify-content: space-between;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
.con-item {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.item-card {
|
||||
width: 130px;
|
||||
font-size: 13px;
|
||||
padding: 10px;
|
||||
margin-right: 20px;
|
||||
|
||||
:deep(.el-card__body) {
|
||||
padding: 0 !important;
|
||||
}
|
||||
|
||||
.card-name {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.card-text {
|
||||
text-align: left;
|
||||
font-size: 12px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
|
@ -0,0 +1,64 @@
|
|||
<template>
|
||||
<div class="container-right flex">
|
||||
<div class="right-header flex">
|
||||
<div class="header-left">
|
||||
<el-button type="primary" link>
|
||||
<i class="iconfont icon-jiahao"></i>新活动
|
||||
</el-button>
|
||||
<el-button type="primary" link>
|
||||
<i class="iconfont icon-baocun"></i>保存为教学模式
|
||||
</el-button>
|
||||
</div>
|
||||
<div class="header-right">
|
||||
<el-button type="primary">生成大纲</el-button>
|
||||
<el-button type="danger">生成PPT</el-button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="right-con flex">
|
||||
<div class="con-item flex">
|
||||
<div class="item-top flex">
|
||||
<span>设置情景</span>
|
||||
<div>
|
||||
<i class="iconfont icon-xiazai9"></i>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item-bom"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.container-right {
|
||||
flex-direction: column;
|
||||
height: 100%;
|
||||
.right-header {
|
||||
height: 45px;
|
||||
background: #fff;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
padding: 0 20px;
|
||||
border-radius: 0 5px 0 0;
|
||||
}
|
||||
|
||||
.right-con {
|
||||
flex: 1;
|
||||
background: #F6F6F6;
|
||||
padding: 15px;
|
||||
.con-item{
|
||||
flex-direction: column;
|
||||
.item-top{
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
}
|
||||
.item-bom{
|
||||
background: #fff;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
|
@ -0,0 +1,30 @@
|
|||
<template>
|
||||
<div class="page-design flex">
|
||||
<div class="page-left">
|
||||
<left />
|
||||
</div>
|
||||
<div class="page-right">
|
||||
<right />
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import left from './container/left.vue';
|
||||
import right from './container/right.vue';
|
||||
import { ref } from 'vue'
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.page-design {
|
||||
height: 100%;
|
||||
.page-left{
|
||||
width: 50%;
|
||||
}
|
||||
.page-right{
|
||||
width: 50%;
|
||||
}
|
||||
}
|
||||
</style>
|
Loading…
Reference in New Issue