import { defineComponent, nextTick, onMounted, reactive, ref } from 'vue';
import styles from '../index.module.less';
import {
NButton,
NDataTable,
NForm,
NFormItem,
NGi,
NGrid,
NImage,
NModal,
NNumberAnimation,
NSelect,
NSpace,
NTooltip
} from 'naive-ui';
import SearchInput from '@/components/searchInput';
import CSelect from '@/components/CSelect';
import Pagination from '@/components/pagination';
import add from './images/add.png';
import {
getNowDateAndMonday,
getNowDateAndSunday,
getTimes,
getMinutes,
getSecend,
formateSeconds,
getHours,
getLastMinutes
} from '/src/utils/dateFormat';
import { getTestList, getTrainingStat } from '../api';
import CDatePicker from '/src/components/CDatePicker';
import { useRoute, useRouter } from 'vue-router';
import TheEmpty from '/src/components/TheEmpty';
import { initCache, setCache } from '/src/hooks/use-async';
import iconSortDefault from '@/common/images/icon-sort-default.png';
import iconSortDesc from '@/common/images/icon-sort-desc.png';
import iconSortAsc from '@/common/images/icon-sort-asc.png';
export default defineComponent({
name: 'student-studentList',
setup(props, { emit }) {
const state = reactive({
searchForm: {
ase: 0,
sortType: 1,
keyword: '',
trainingStatus: null as any,
vipFlag: '' as any
},
searchWord: '',
orchestraType: null,
courseTypeCode: null,
subjectId: null,
classId: null,
studentType: null,
loading: false,
pagination: {
page: 1,
rows: 10,
pageTotal: 4
},
tableList: [] as any,
memberNumber: 0,
testInfo: {
practiceDurationAvg: 0,
vipUserCount: 0,
practiceUserCount: 0
},
activeRow: null
});
const route = useRoute();
const router = useRouter();
const search = () => {
state.pagination.page = 1;
getInfo();
getList();
setCache({
current: { ...state.searchForm, timer: timer.value },
saveKey: 'classDetailTestRecord'
});
};
const timer = ref<[number, number]>([
getNowDateAndMonday(new Date().getTime()),
getNowDateAndSunday(new Date().getTime())
]);
const onReset = () => {
timer.value = [
getNowDateAndMonday(new Date().getTime()),
getNowDateAndSunday(new Date().getTime())
];
state.searchForm = {
ase: 0,
sortType: 1,
keyword: '',
trainingStatus: null as any,
vipFlag: ''
};
search();
setCache({
current: { ...state.searchForm, timer: timer.value },
saveKey: 'classDetailTestRecord'
});
};
initCache({
current: { ...state.searchForm, timer: timer.value },
saveKey: 'classDetailTestRecord',
callBack: (active: any) => {
state.searchForm = active;
timer.value = active.timer;
}
});
const getList = async () => {
state.loading = true;
try {
const res = await getTestList({
classGroupId: route.query.id,
...state.searchForm,
...state.pagination,
...getTimes(timer.value, ['startTime', 'endTime'], 'YYYY-MM-DD')
});
state.tableList = res.data.rows;
state.pagination.pageTotal = res.data.total;
state.loading = false;
} catch (e) {
state.loading = false;
console.log(e);
}
};
const getInfo = async () => {
try {
const res = await getTrainingStat({
classGroupId: route.query.id,
...getTimes(timer.value, ['startTime', 'endTime'], 'YYYY-MM-DD')
});
state.testInfo.practiceDurationAvg = res.data.practiceDurationAvg;
state.testInfo.practiceUserCount = res.data.practiceUserCount;
state.testInfo.vipUserCount = res.data.vipUserCount;
} catch (e) {
console.log(e);
}
};
onMounted(() => {
getInfo();
getList();
// nextTick(() => {
// // 把默认的排序删除
// const dom = document.querySelectorAll('.n-data-table-sorter');
// dom.forEach((item: any) => {
// item.style.display = 'none';
// });
// });
});
const gotoStudentDetail = (row: any) => {
router.push({
path: '/classStudentRecode',
query: {
...route.query,
studentId: row.studentId,
studentName: row.studentName
}
});
};
const practiceDaysRef = reactive({
title() {
return (
练习人数
会员人数
{getHours(state.testInfo.practiceDurationAvg) > 0 ? (
平均每天练习时长