import { defineComponent, reactive, onMounted, ref } from 'vue';
import styles from './index.module.less';
import {
NButton,
NDataTable,
NForm,
NFormItem,
NImage,
NModal,
NSpace,
useMessage
} from 'naive-ui';
import SearchInput from '@/components/searchInput';
import CSelect from '@/components/CSelect';
import Pagination from '@/components/pagination';
import { classGroupList, deleteClass, getSubject, addGroup } from './api';
import CreateClass from './modals/createClass';
import RestStudentBox from './modals/restStudentBox';
import { getgradeNumList, classArray } from './contants';
import add from '@/views/studentList/images/add.png';
import ClassGuide from '@/custom-plugins/guide-page/class-guide';
import { useRoute, useRouter } from 'vue-router';
import TheEmpty from '/src/components/TheEmpty';
import TheTooltip from '/src/components/TheTooltip';
import PreviewWindow from '../preview-window';
import ResetSubject from './modals/resetSubject';
import UpdateSubject from './modals/updateSubject';
import { getGradeLevelList, getGradeYearList } from '../home/api';
import { initCache, setCache } from '/src/hooks/use-async';
export default defineComponent({
name: 'class-classList',
setup() {
const state = reactive({
searchForm: {
keyword: null as any,
currentClass: '',
currentGradeNum: '',
subjectId: '',
gradeYear: '',
gradeLevel: ''
},
orchestraType: null,
courseTypeCode: null,
loading: false,
pagination: {
page: 1,
rows: 10,
pageTotal: 6
},
gradeNumList: [] as any,
tableList: [] as any,
studentVisible: false,
activeRow: null as any,
showaddClass: false,
goCourseVisiable: false,
removeVisiable: false,
removeRow: {} as any,
previewModal: false,
previewParams: {} as any,
lastCourse: null as any,
groupBtnLoading: false, // 按钮是否在请求中
subjectList: [] as any,
showResetClass: false,
showSubjectClass: false,
groupVisiable: false,
popSelectYearList: [] as any,
popSelectLevelList: [] as any
});
const formRef = ref();
const message = useMessage();
const router = useRouter();
const route = useRoute();
const search = () => {
state.pagination.page = 1;
getList();
setCache({ current: state.searchForm, saveKey: route.path });
};
const showGuide = ref(false);
state.gradeNumList = getgradeNumList();
const onReset = () => {
state.searchForm = {
keyword: null as any,
currentClass: '' as any,
currentGradeNum: '' as any,
subjectId: '' as any,
gradeYear: '' as any,
gradeLevel: ''
};
if (state.popSelectYearList.length > 0) {
state.searchForm.gradeYear = state.popSelectYearList[1].id;
}
getList();
setCache({ current: state.searchForm, saveKey: route.path });
};
const removeClass = async () => {
try {
await deleteClass({ ids: state.removeRow.id });
getList();
message.success(`删除成功`);
state.removeVisiable = false;
} catch (e) {
console.log(e);
}
};
const getList = async () => {
// classGroupList
state.loading = true;
try {
const res = await classGroupList({
...state.searchForm,
...state.pagination
});
state.tableList = res.data.rows;
state.pagination.pageTotal = res.data.total;
state.loading = false;
setTimeout(() => {
if (state.tableList.length > 0) {
showGuide.value = true;
}
}, 500);
} catch (e) {
state.loading = false;
console.log(e);
}
console.log('getList');
};
const getSubjectList = async () => {
const res = await getSubject({ page: 1, rows: 9999 });
state.subjectList = res.data.rows.map((item: any) => {
return {
value: item.id,
label: item.name
};
});
state.subjectList.unshift({ value: '', label: '全部声部' });
};
const columns = () => {
return [
{
title: '班级名称',
key: 'name'
},
{
title: '学年',
key: 'gradeYear'
},
{
title: '学级',
key: 'gradeLevel',
render(row: any) {
return row.gradeLevel ? `${row.gradeLevel}级` : '';
}
},
{
title: '班级声部',
key: 'subjectName'
},
{
title: '学生人数',
key: 'preStudentNum'
},
{
title: '上次学习',
key: 'lastStudy',
width: '20%',
render(row: any) {
return row.lastStudy ? (
{ // state.removeVisiable = true; // state.removeRow = row; // }}> // 删除 //
null} {row.imGroupId ? null : (确定要删除班级么? 删除班级信息将会清空。
是否创建班级群聊