|
@@ -119,18 +119,21 @@
|
|
|
:class="['total-table-item-cell', index === 0 ? 'total-table-item-title border-white' : '']"
|
|
|
v-for="(item, index) in tableData.record.data"
|
|
|
:key="index"
|
|
|
- style="padding: 8px;"
|
|
|
>
|
|
|
{{item}}
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="total-table-item" >
|
|
|
- <div class="performances-title border-white">
|
|
|
+ <div class="performances-title">
|
|
|
观察进阶
|
|
|
</div>
|
|
|
<div class="performances-item-content" >
|
|
|
<div class="performances-item-conten-card" v-for="(item, index) in tableData.performances.data" :key="index">
|
|
|
- <div :style="{height: index === 0 ? '20px' : '40px'}" :class="['total-table-item-cell-small', index === 0 ? 'border-white performances-subtitle': '']" v-for="(_, index) in item" :key="index" >
|
|
|
+ <div
|
|
|
+ :class="['total-table-item-cell-small', index === 0 ? 'border-white performances-subtitle first-cell': '']"
|
|
|
+ v-for="(_, index) in item"
|
|
|
+ :key="index"
|
|
|
+ >
|
|
|
{{_}}
|
|
|
</div>
|
|
|
</div>
|
|
@@ -150,7 +153,7 @@
|
|
|
</div>
|
|
|
|
|
|
<!-- 导出 -->
|
|
|
- <export-button @export="exportReport" />
|
|
|
+ <export-button @export="exportReport" :loading="loading" />
|
|
|
</div>
|
|
|
</template>
|
|
|
<script lang='ts' setup >
|
|
@@ -233,7 +236,13 @@ const { p } = useRoute().query;
|
|
|
},
|
|
|
xAxis: {
|
|
|
type: 'value',
|
|
|
- boundaryGap: [0, 0.01]
|
|
|
+ boundaryGap: [0, 0.01],
|
|
|
+ interval: 1,
|
|
|
+ axisLabel: {
|
|
|
+ formatter: function (value) {
|
|
|
+ return value.toFixed(0); // 保证显示整数
|
|
|
+ }
|
|
|
+ }
|
|
|
},
|
|
|
yAxis: {
|
|
|
type: 'category',
|
|
@@ -282,33 +291,37 @@ const { p } = useRoute().query;
|
|
|
|
|
|
|
|
|
|
|
|
+ const loading = ref(false)
|
|
|
|
|
|
const exportReport = () => {
|
|
|
nextTick(async () => {
|
|
|
+ loading.value = true
|
|
|
console.log('recordChart:', recordChart);
|
|
|
-
|
|
|
-
|
|
|
const $par = {
|
|
|
baseData: baseData.value,
|
|
|
clazzDomainData: clazzDomainData.value,
|
|
|
- clazzSceneData: clazzSceneData.value,
|
|
|
+ clazzSceneData: clazzSceneData.value,
|
|
|
studentDomainData: studentDomainData.value,
|
|
|
clazzDomainChart: recordChart.value.getDataURL(),
|
|
|
clazzSceneChart: observeChart.value.getDataURL(),
|
|
|
basePng: await htmlToPng(),
|
|
|
studentPng: await studentChartHtmlToPng(),
|
|
|
}
|
|
|
- exportClazzPDF($par)
|
|
|
+ exportClazzPDF($par, async (progress: number) => {
|
|
|
+ const r = (progress * 100).toFixed(0)
|
|
|
+ if (r === '100') {
|
|
|
+ loading.value = false
|
|
|
+ }
|
|
|
+ })
|
|
|
})
|
|
|
|
|
|
}
|
|
|
|
|
|
-
|
|
|
onMounted( async () => {
|
|
|
- await getAppToken()
|
|
|
- // await getTestTeachToken()
|
|
|
- const $par = JSON.parse(decodeURIComponent(atob(p)))
|
|
|
- // const $par = {"classIds":["1655822889577734146"],"gradeSemesterIds":["00","11","01","-10","-11","20","10","21"],"schoolId":"1304705665728421889","teacherIds":["1450638512771702786","1436187006844682241","1304705367924449281","1711187837184294914","1800414891962654721","1778693522847088641"]}
|
|
|
+ // await getAppToken()
|
|
|
+ await getTestTeachToken()
|
|
|
+ // const $par = JSON.parse(decodeURIComponent(atob(p)))
|
|
|
+ const $par = {"classIds":["1655822889577734146"],"gradeSemesterIds":["00","11","01","-10","-11","20","10","21"],"schoolId":"1304705665728421889","teacherIds":["1450638512771702786","1436187006844682241","1304705367924449281","1711187837184294914","1800414891962654721","1778693522847088641"]}
|
|
|
getClazzBase($par)
|
|
|
getClazzDomain($par).then(() => {
|
|
|
|
|
@@ -477,70 +490,6 @@ const { p } = useRoute().query;
|
|
|
}
|
|
|
.total-scene {
|
|
|
display: flex;
|
|
|
- .total-table {
|
|
|
- width: 100%;
|
|
|
- overflow: hidden;
|
|
|
- overflow-x: scroll;
|
|
|
- display: flex;
|
|
|
- .total-table-item {
|
|
|
- .performances-title {
|
|
|
- width: 100%;
|
|
|
- height: 20px;
|
|
|
- background-color: rgb(51, 179, 92);
|
|
|
- color: #fff;
|
|
|
- display: flex;
|
|
|
- justify-content: center;
|
|
|
- align-items: center;
|
|
|
- border-bottom: 1px solid #fff !important;
|
|
|
- }
|
|
|
- .performances-item-content {
|
|
|
- display: flex;
|
|
|
- border-top: 1px solid #fff !important;
|
|
|
- .performances-item-conten-card:last-child {
|
|
|
- .total-table-item-cell {
|
|
|
- border-right: 1px solid #a19d9d;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- .performances-subtitle {
|
|
|
- width: 100%;
|
|
|
- background-color: rgb(51, 179, 92);
|
|
|
- height: 20px !important;
|
|
|
- color: #fff;
|
|
|
- box-sizing: border-box;
|
|
|
- }
|
|
|
- .total-table-item-cell {
|
|
|
- width: 100px;
|
|
|
- height: 40px;
|
|
|
- display: flex;
|
|
|
- flex-direction: column;
|
|
|
- justify-content: center;
|
|
|
- align-items: center;
|
|
|
- border-bottom: 1px solid #a19d9d;
|
|
|
- border-left: 1px solid #a19d9d;
|
|
|
- box-sizing: border-box;
|
|
|
- margin-top: -1px;
|
|
|
- }
|
|
|
- .total-table-item-title {
|
|
|
- width: 100px;
|
|
|
- height: 40px;
|
|
|
- background-color: rgb(51, 179, 92);
|
|
|
- color: #fff;
|
|
|
- display: flex;
|
|
|
- justify-content: center;
|
|
|
- align-items: center;
|
|
|
- box-sizing: border-box;
|
|
|
- }
|
|
|
- .border-white {
|
|
|
- border-left: 1px solid #fff;
|
|
|
- border-bottom: 1px solid #fff;
|
|
|
- border-top: none;
|
|
|
- box-sizing: border-box;
|
|
|
- margin-top: 0px;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
.total-table-small {
|
|
|
width: 100%;
|
|
|
overflow: hidden;
|
|
@@ -556,22 +505,26 @@ const { p } = useRoute().query;
|
|
|
display: flex;
|
|
|
justify-content: center;
|
|
|
align-items: center;
|
|
|
+ border-bottom: 1px solid #fff;
|
|
|
+ border-left: 1px solid #fff;
|
|
|
+ box-sizing: border-box
|
|
|
}
|
|
|
.performances-item-content {
|
|
|
display: flex;
|
|
|
.performances-item-conten-card {
|
|
|
- margin-top: 1px;
|
|
|
+ .first-cell {
|
|
|
+ height: 20px !important;
|
|
|
+ }
|
|
|
.total-table-item-cell-small {
|
|
|
width: 31px;
|
|
|
- // height: 40px;
|
|
|
+ height: 40px;
|
|
|
display: flex;
|
|
|
flex-direction: column;
|
|
|
justify-content: center;
|
|
|
align-items: center;
|
|
|
border-bottom: 1px solid #a19d9d;
|
|
|
border-left: 1px solid #a19d9d;
|
|
|
- box-sizing: border-box;
|
|
|
- margin-top: -1px;
|
|
|
+ box-sizing: border-box !important;
|
|
|
text-align: center;
|
|
|
}
|
|
|
|
|
@@ -597,8 +550,8 @@ const { p } = useRoute().query;
|
|
|
align-items: center;
|
|
|
border-bottom: 1px solid #a19d9d;
|
|
|
border-left: 1px solid #a19d9d;
|
|
|
- box-sizing: border-box;
|
|
|
- margin-top: -1px;
|
|
|
+ box-sizing: border-box !important;
|
|
|
+ // margin-top: -1px;
|
|
|
text-align: center;
|
|
|
}
|
|
|
|
|
@@ -619,7 +572,6 @@ const { p } = useRoute().query;
|
|
|
border-bottom: 1px solid #fff !important;
|
|
|
border-top: none;
|
|
|
box-sizing: border-box;
|
|
|
- margin-top: 0px;
|
|
|
}
|
|
|
}
|
|
|
|