12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- <template>
- <div class="h-full bg-white">
- <fs-crud v-if="!pageType" ref="crudRef" v-bind="crudBinding" />
- <div v-if="pageType" class="wh-full flex-col-center">
- <n-card style="width: 1200px" title="编辑班级学员" :bordered="false" size="huge" role="dialog" aria-modal="true">
- <n-transfer ref="transfer" v-model:value="classStuList" :options="studentsAll" virtual-scroll />
- <n-button-group style="margin-top: 1rem; float: right">
- <n-button type="primary" @click="submitGroupStudent">提交</n-button>
- <n-button type="primary" @click="pageType = !pageType">取消</n-button>
- </n-button-group>
- </n-card>
- </div>
- </div>
- </template>
- <script setup lang="ts">
- import { onMounted, ref } from 'vue';
- import { useRouter } from 'vue-router';
- import type { Option, OptionValue } from 'naive-ui/es/transfer/src/interface';
- import { useFs } from '@fast-crud/fast-crud';
- import createCrudOptions from './crud';
- import { queryClassStudentById, getAll, submitGroupStudentForm } from './api';
- const pageType = ref<boolean>(false);
- const classStuList = ref<number[] | undefined>([]);
- const studentsAll = ref<Option[]>();
- const groupId = ref<number>(0);
- const router = useRouter();
- async function submitGroupStudent() {
- await submitGroupStudentForm(groupId.value, classStuList.value);
- window.$message?.success('操作成功!');
- pageType.value = !pageType.value;
- }
- const context: any = {
- goToSchedule: (classId: number) => {
- router.push({
- path: '/lesson/schedule',
- query: {
- classId
- }
- });
- },
- openModel: async (classId: number) => {
- groupId.value = classId;
- const classStudent = await queryClassStudentById(classId);
- const studentAll = await getAll();
- classStuList.value = classStudent.data?.map(r => r.studentId);
- studentsAll.value = studentAll.data?.map(r => {
- return {
- label: r.studentName ? r.studentName + r.phone : '',
- value: (r.id ?? 0) as OptionValue,
- disabled: false
- };
- });
- pageType.value = true;
- }
- };
- const { crudRef, crudBinding, crudExpose } = useFs({ createCrudOptions, context });
- onMounted(() => {
- crudExpose.doRefresh();
- });
- </script>
- <style scoped></style>
|