Compare commits

...

9 Commits

4 changed files with 37 additions and 28 deletions

View File

@ -242,7 +242,7 @@ const initData = () => {
} }
// def: type active: points: , accSum // def: type active: points: , accSum
return { def: o, id: o.id, type: o.worktype, active: [], points, accSum, rightSum, children,hasAnswers,timeAnalyse,score:o.score } return { def: o, id: o.id, type: o.worktype, active: [], points, accSum, rightSum, children,hasAnswers,timeAnalyse,score:o.workScore }
}) })
if (data.length === 0) return if (data.length === 0) return
useOverview.getAllData([...data]) useOverview.getAllData([...data])

View File

@ -27,7 +27,9 @@ const tableData = ref([])
const konwledge = ref([]) const konwledge = ref([])
const hasStudents = ref([]) const hasStudents = ref([])
// //
const allScore = ref([]) const allScore = ref(0)
//
const avatarScore = ref()
// //
const getKonwledge = () => { const getKonwledge = () => {
const getScoreRate = [] const getScoreRate = []
@ -41,7 +43,7 @@ const getKonwledge = () => {
if(!ledges.includes(title.id)){ if(!ledges.includes(title.id)){
ledges.push(title.id) ledges.push(title.id)
// 0 // 0
konwledge.value.push({title:title.title,allPoint:allScore.value,id:title.id}) konwledge.value.push({title:title.title,allPoint:allScore.value,id:title.id,point:avatarScore.value})
} }
// //
if(useOverview.allData[0].hasAnswers.includes(item.studentid)) if(useOverview.allData[0].hasAnswers.includes(item.studentid))
@ -51,29 +53,12 @@ const getKonwledge = () => {
// //
konwledge.value.forEach(item => { konwledge.value.forEach(item => {
let sunRate = 0
let num = 0
if(getScoreRate.length === 0) return
getScoreRate.forEach(item2 => {
if(item.id === item2.id){
sunRate += extractedNumber(item2.rate)
num ++
}
})
const scoreRate = sunRate / num
tableData.value.push({ tableData.value.push({
scoingRate:scoreRate.toFixed(2), scoingRate:(item.point / item.allPoint * 100).toFixed(2),
...item, ...item,
point:(item.allPoint * scoreRate / 100).toFixed(2)
}) })
}) })
} }
//
const extractedNumber = (score) => {
const match = score.match(/\d+/);
return match ? parseInt(match[0], 10) : null;
}
//tableList //tableList
watch(() => useOverview.tableList,() => { watch(() => useOverview.tableList,() => {
@ -93,6 +78,12 @@ watch(() => useOverview.tableList,() => {
allScore.value = useOverview.allData.reduce((acc, cur) => { allScore.value = useOverview.allData.reduce((acc, cur) => {
return acc + Number(cur.score) return acc + Number(cur.score)
},0) },0)
//
avatarScore.value = hasStudents.value.reduce((acc, cur) => {
return acc + Number(cur.getScore)
},0) / hasStudents.value.length
//
getKonwledge() getKonwledge()
}) })
</script> </script>

View File

@ -34,7 +34,7 @@
</div> </div>
</template> </template>
<script setup> <script setup>
import { computed, defineProps, ref, reactive, watchEffect, onMounted } from 'vue' import { computed, defineProps, ref, reactive, watchEffect, onMounted} from 'vue'
import { sessionStore } from '@/utils/store' import { sessionStore } from '@/utils/store'
import homework from './homework.vue'; import homework from './homework.vue';
@ -100,10 +100,10 @@ const clickHandel = (o, e) => {
} }
emit('change', o) emit('change', o)
} }
const closeActive = () =>{ const closeActive = () =>{
isVisible.value = false isVisible.value = false
} }
defineExpose({closeActive})
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.warp{ .warp{
@ -115,7 +115,13 @@ const closeActive = () =>{
//min-height: 40vh; //min-height: 40vh;
min-width: 4em; min-width: 4em;
border-radius: 4em; border-radius: 4em;
background-color: #121212; background-color: rgba(18,18,18,0.3);
border-color: rgba(1, 1, 1, 0.1);
&:hover{
opacity: 1;
background-color: rgba(18,18,18,1);
border-color: rgba(1, 1, 1, 1);
}
.el-space{margin: 20px 0 0;} .el-space{margin: 20px 0 0;}
.c-btn{ .c-btn{
color: #d9dce3; color: #d9dce3;

View File

@ -4,7 +4,7 @@
<board-vue v-model="tabActive" v-show="isShow" ref="boardVueRef"></board-vue> <board-vue v-model="tabActive" v-show="isShow" ref="boardVueRef"></board-vue>
<!-- 侧边工具栏 --> <!-- 侧边工具栏 -->
<side-vue v-ignore @ignore-mounted="sideMouse" @change="sideChange"></side-vue> <side-vue ref="sideVueRef" v-ignore @ignore-mounted="sideMouse" @change="sideChange"></side-vue>
<!-- 点赞组件 --> <!-- 点赞组件 -->
<upvote-vue ref="upvoteRef" type="2"></upvote-vue> <upvote-vue ref="upvoteRef" type="2"></upvote-vue>
@ -13,7 +13,7 @@
<im-chat ref="imChatRef" @change="chatChange" group /> <im-chat ref="imChatRef" @change="chatChange" group />
<!-- 底部工具栏 --> <!-- 底部工具栏 -->
<div class="tool-bottom-all" <!-- <div class="tool-bottom-all"
@mouseenter="mouseChange(0)" @mouseleave="mouseChange(1)"> @mouseenter="mouseChange(0)" @mouseleave="mouseChange(1)">
<div v-drag="{handle:'.tool-bottom-all', dragtime}" <div v-drag="{handle:'.tool-bottom-all', dragtime}"
@v-drag-start="dragtime = Date.now()"> @v-drag-start="dragtime = Date.now()">
@ -34,7 +34,7 @@
</el-segmented> </el-segmented>
</div> </div>
</transition> </transition>
</div> </div> -->
</div> </div>
</template> </template>
@ -67,6 +67,7 @@ const toolStore = useToolState() // 状态管理
const boardVueRef=ref(null) // ref const boardVueRef=ref(null) // ref
const upvoteRef = ref(null) // ref const upvoteRef = ref(null) // ref
const imChatRef = ref(null) // im-chat ref const imChatRef = ref(null) // im-chat ref
const sideVueRef = ref(null) // ref
const classObj = reactive({ // const classObj = reactive({ //
id: route.query.reservId, // id id: route.query.reservId, // id
data: {} // data: {} //
@ -83,6 +84,8 @@ const btnList = [ // 工具栏按钮列表
// { label: '', value: 'focus', icon: 'icon-jujiao' }, // { label: '', value: 'focus', icon: 'icon-jujiao' },
// { label: '', value: 'more', icon: 'icon-xiazai9' }, // { label: '', value: 'more', icon: 'icon-xiazai9' },
] ]
let timingSide = null // -
// === === // === ===
onMounted(async() => { onMounted(async() => {
if (!electron) return // if (!electron) return //
@ -140,7 +143,8 @@ const logoHandle = (e,t) => {
// -穿 // -穿
const mouseChange = (bool) => { const mouseChange = (bool) => {
let resBool = false let resBool = false
if (bool == 0) return setIgnore(resBool) // 穿 console.log('mouseChange:', bool, resBool)
if (!bool) return setIgnore(resBool) // 穿
if (tabActive.value == 'select') resBool = !!bool if (tabActive.value == 'select') resBool = !!bool
else { else {
if (!isShow.value) resBool = !!bool if (!isShow.value) resBool = !!bool
@ -203,6 +207,14 @@ const sideMouse = e => {
return return
} }
mouseChange(type == 'mouseleave') mouseChange(type == 'mouseleave')
//
if (type == 'mouseleave') {
timingSide = setTimeout(() => {
sideVueRef.value.closeActive()
}, 500)
} else { //
if (!!timingSide) clearTimeout(timingSide)
}
} }
// : // :
const sideChange = async o => { const sideChange = async o => {