import { reactive } from 'vue'
import axios from '@/axios/index'
export default function getclassRoomDatas() {
interface ItemType {
// 专用教室数
count: number | string
// 区域/学校
name: number | string
// 空间利用率
spaceProportion: number
// 日均使用率
useProportion: number
}
const SourceClass = reactive<{
ClassRoom: ItemType[]
}>({
ClassRoom: []
})
type MyType = number | string
const getclassRoomData = (
acadyear: MyType, //学年
gradeCode: MyType, //年级
regionCode: MyType, //区域
schoold: MyType //学校
) => {
axios({
method: 'get',
url: '/szxyTeachAffairs/classroom/resource/analysis',
params: {
acadyear,
gradeCode,
regionCode,
schoold
}
}).then((res) => {
console.log(res)
SourceClass.ClassRoom = res.data
console.log(SourceClass) // 这个有数据
})
}
return {
SourceClass,
getclassRoomData
}
}
为什么请求在这边获取不到数据呢?
watch(
() => [selectedAcadyear.value, selectedGrade.value, selectedRegion.value, selectedSchool.value],
() => {
if ((selectedAcadyear.value, selectedGrade.value, selectedRegion.value, selectedSchool.value)) {
getclassRoomData(
selectedAcadyear.value,
selectedGrade.value,
selectedRegion.value,
selectedSchool.value
)
}
console.log(SourceClass.ClassRoom, 111) // 获取不到数据
},
{ immediate: true, deep: true }
)
<a-table :data-source="dataSource" :columns="SourceClass.ClassRoom" :pagination="false" />
造成表格无法渲染
const getclassRoomData = (
acadyear: MyType, //学年
gradeCode: MyType, //年级
regionCode: MyType, //区域
schoold: MyType //学校
) => {
return axios({
method: 'get',
url: '/szxyTeachAffairs/classroom/resource/analysis',
params: {
acadyear,
gradeCode,
regionCode,
schoold
}
}).then((res) => {
console.log(res)
SourceClass.ClassRoom = res.data
console.log(SourceClass) // 这个有数据
})
}
() => {
if ((selectedAcadyear.value, selectedGrade.value, selectedRegion.value, selectedSchool.value)) {
getclassRoomData(
selectedAcadyear.value,
selectedGrade.value,
selectedRegion.value,
selectedSchool.value
).then(()=>{
console.log(SourceClass.ClassRoom, 111)
})
}
}
如果数据能打印出来了,但是渲染不到图表上,可以试试在这个组件上加一个标记位,使组件默认不渲染。等你 SourceClass.ClassRoom = res.data 赋值过后,再将这个组件的标记为赋值为 true。