fix: codegen demo
							parent
							
								
									5f5fb9e544
								
							
						
					
					
						commit
						2c5557aa30
					
				|  | @ -1,5 +1,4 @@ | ||||||
| <script lang="ts" setup> | <script lang="ts" setup> | ||||||
| import type { OnActionClickParams } from '#/adapter/vxe-table'; |  | ||||||
| import type { Demo03StudentApi } from '#/api/infra/demo/demo03/inner'; | import type { Demo03StudentApi } from '#/api/infra/demo/demo03/inner'; | ||||||
| 
 | 
 | ||||||
| import { nextTick, watch } from 'vue'; | import { nextTick, watch } from 'vue'; | ||||||
|  | @ -8,7 +7,7 @@ import { Plus } from '@vben/icons'; | ||||||
| 
 | 
 | ||||||
| import { ElButton, ElInput } from 'element-plus'; | import { ElButton, ElInput } from 'element-plus'; | ||||||
| 
 | 
 | ||||||
| import { useVbenVxeGrid } from '#/adapter/vxe-table'; | import { ACTION_ICON, TableAction, useVbenVxeGrid } from '#/adapter/vxe-table'; | ||||||
| import { getDemo03CourseListByStudentId } from '#/api/infra/demo/demo03/inner'; | import { getDemo03CourseListByStudentId } from '#/api/infra/demo/demo03/inner'; | ||||||
| import { $t } from '#/locales'; | import { $t } from '#/locales'; | ||||||
| 
 | 
 | ||||||
|  | @ -18,22 +17,9 @@ const props = defineProps<{ | ||||||
|   studentId?: number; // 学生编号(主表的关联字段) |   studentId?: number; // 学生编号(主表的关联字段) | ||||||
| }>(); | }>(); | ||||||
| 
 | 
 | ||||||
| /** 表格操作按钮的回调函数 */ |  | ||||||
| function onActionClick({ |  | ||||||
|   code, |  | ||||||
|   row, |  | ||||||
| }: OnActionClickParams<Demo03StudentApi.Demo03Course>) { |  | ||||||
|   switch (code) { |  | ||||||
|     case 'delete': { |  | ||||||
|       onDelete(row); |  | ||||||
|       break; |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| const [Grid, gridApi] = useVbenVxeGrid({ | const [Grid, gridApi] = useVbenVxeGrid({ | ||||||
|   gridOptions: { |   gridOptions: { | ||||||
|     columns: useDemo03CourseGridEditColumns(onActionClick), |     columns: useDemo03CourseGridEditColumns(), | ||||||
|     border: true, |     border: true, | ||||||
|     showOverflow: true, |     showOverflow: true, | ||||||
|     autoResize: true, |     autoResize: true, | ||||||
|  | @ -51,14 +37,14 @@ const [Grid, gridApi] = useVbenVxeGrid({ | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
| /** 添加学生课程 */ | /** 添加学生课程 */ | ||||||
| const onAdd = async () => { | async function handleAdd() { | ||||||
|   await gridApi.grid.insertAt({} as Demo03StudentApi.Demo03Course, -1); |   await gridApi.grid.insertAt({} as Demo03StudentApi.Demo03Course, -1); | ||||||
| }; | } | ||||||
| 
 | 
 | ||||||
| /** 删除学生课程 */ | /** 删除学生课程 */ | ||||||
| const onDelete = async (row: Demo03StudentApi.Demo03Course) => { | async function handleDelete(row: Demo03StudentApi.Demo03Course) { | ||||||
|   await gridApi.grid.remove(row); |   await gridApi.grid.remove(row); | ||||||
| }; | } | ||||||
| 
 | 
 | ||||||
| /** 提供获取表格数据的方法供父组件调用 */ | /** 提供获取表格数据的方法供父组件调用 */ | ||||||
| defineExpose({ | defineExpose({ | ||||||
|  | @ -101,13 +87,29 @@ watch( | ||||||
|     <template #score="{ row }"> |     <template #score="{ row }"> | ||||||
|       <ElInput v-model="row.score" /> |       <ElInput v-model="row.score" /> | ||||||
|     </template> |     </template> | ||||||
|  |     <template #actions="{ row }"> | ||||||
|  |       <TableAction | ||||||
|  |         :actions="[ | ||||||
|  |           { | ||||||
|  |             label: $t('common.delete'), | ||||||
|  |             type: 'danger', | ||||||
|  |             icon: ACTION_ICON.DELETE, | ||||||
|  |             auth: ['infra:demo03-student:delete'], | ||||||
|  |             popConfirm: { | ||||||
|  |               title: $t('ui.actionMessage.deleteConfirm', [row.id]), | ||||||
|  |               confirm: handleDelete.bind(null, row), | ||||||
|  |             }, | ||||||
|  |           }, | ||||||
|  |         ]" | ||||||
|  |       /> | ||||||
|  |     </template> | ||||||
|   </Grid> |   </Grid> | ||||||
|   <div class="-mt-4 flex justify-center"> |   <div class="-mt-4 flex justify-center"> | ||||||
|     <ElButton |     <ElButton | ||||||
|       :icon="Plus" |       :icon="Plus" | ||||||
|       type="primary" |       type="primary" | ||||||
|       plain |       plain | ||||||
|       @click="onAdd" |       @click="handleAdd" | ||||||
|       v-access:code="['infra:demo03-student:create']" |       v-access:code="['infra:demo03-student:create']" | ||||||
|     > |     > | ||||||
|       {{ $t('ui.actionTitle.create', ['学生课程']) }} |       {{ $t('ui.actionTitle.create', ['学生课程']) }} | ||||||
|  |  | ||||||
|  | @ -61,8 +61,8 @@ const [Modal, modalApi] = useVbenModal({ | ||||||
|     // 提交表单 |     // 提交表单 | ||||||
|     const data = (await formApi.getValues()) as Demo03StudentApi.Demo03Student; |     const data = (await formApi.getValues()) as Demo03StudentApi.Demo03Student; | ||||||
|     // 拼接子表的数据 |     // 拼接子表的数据 | ||||||
|     data.demo03Courses = demo03CourseFormRef.value?.getData(); |     data.demo03courses = demo03CourseFormRef.value?.getData(); | ||||||
|     data.demo03Grade = await demo03GradeFormRef.value?.getValues(); |     data.demo03grade = await demo03GradeFormRef.value?.getValues(); | ||||||
|     try { |     try { | ||||||
|       await (formData.value?.id |       await (formData.value?.id | ||||||
|         ? updateDemo03Student(data) |         ? updateDemo03Student(data) | ||||||
|  |  | ||||||
|  | @ -1,5 +1,4 @@ | ||||||
| <script lang="ts" setup> | <script lang="ts" setup> | ||||||
| import type { OnActionClickParams } from '#/adapter/vxe-table'; |  | ||||||
| import type { Demo03StudentApi } from '#/api/infra/demo/demo03/normal'; | import type { Demo03StudentApi } from '#/api/infra/demo/demo03/normal'; | ||||||
| 
 | 
 | ||||||
| import { nextTick, watch } from 'vue'; | import { nextTick, watch } from 'vue'; | ||||||
|  | @ -8,7 +7,7 @@ import { Plus } from '@vben/icons'; | ||||||
| 
 | 
 | ||||||
| import { ElButton, ElInput } from 'element-plus'; | import { ElButton, ElInput } from 'element-plus'; | ||||||
| 
 | 
 | ||||||
| import { useVbenVxeGrid } from '#/adapter/vxe-table'; | import { ACTION_ICON, TableAction, useVbenVxeGrid } from '#/adapter/vxe-table'; | ||||||
| import { getDemo03CourseListByStudentId } from '#/api/infra/demo/demo03/normal'; | import { getDemo03CourseListByStudentId } from '#/api/infra/demo/demo03/normal'; | ||||||
| import { $t } from '#/locales'; | import { $t } from '#/locales'; | ||||||
| 
 | 
 | ||||||
|  | @ -18,22 +17,9 @@ const props = defineProps<{ | ||||||
|   studentId?: number; // 学生编号(主表的关联字段) |   studentId?: number; // 学生编号(主表的关联字段) | ||||||
| }>(); | }>(); | ||||||
| 
 | 
 | ||||||
| /** 表格操作按钮的回调函数 */ |  | ||||||
| function onActionClick({ |  | ||||||
|   code, |  | ||||||
|   row, |  | ||||||
| }: OnActionClickParams<Demo03StudentApi.Demo03Course>) { |  | ||||||
|   switch (code) { |  | ||||||
|     case 'delete': { |  | ||||||
|       onDelete(row); |  | ||||||
|       break; |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| const [Grid, gridApi] = useVbenVxeGrid({ | const [Grid, gridApi] = useVbenVxeGrid({ | ||||||
|   gridOptions: { |   gridOptions: { | ||||||
|     columns: useDemo03CourseGridEditColumns(onActionClick), |     columns: useDemo03CourseGridEditColumns(), | ||||||
|     border: true, |     border: true, | ||||||
|     showOverflow: true, |     showOverflow: true, | ||||||
|     autoResize: true, |     autoResize: true, | ||||||
|  | @ -51,14 +37,14 @@ const [Grid, gridApi] = useVbenVxeGrid({ | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
| /** 添加学生课程 */ | /** 添加学生课程 */ | ||||||
| const onAdd = async () => { | async function handleAdd() { | ||||||
|   await gridApi.grid.insertAt({} as Demo03StudentApi.Demo03Course, -1); |   await gridApi.grid.insertAt({} as Demo03StudentApi.Demo03Course, -1); | ||||||
| }; | } | ||||||
| 
 | 
 | ||||||
| /** 删除学生课程 */ | /** 删除学生课程 */ | ||||||
| const onDelete = async (row: Demo03StudentApi.Demo03Course) => { | async function handleDelete(row: Demo03StudentApi.Demo03Course) { | ||||||
|   await gridApi.grid.remove(row); |   await gridApi.grid.remove(row); | ||||||
| }; | } | ||||||
| 
 | 
 | ||||||
| /** 提供获取表格数据的方法供父组件调用 */ | /** 提供获取表格数据的方法供父组件调用 */ | ||||||
| defineExpose({ | defineExpose({ | ||||||
|  | @ -101,13 +87,29 @@ watch( | ||||||
|     <template #score="{ row }"> |     <template #score="{ row }"> | ||||||
|       <ElInput v-model="row.score" /> |       <ElInput v-model="row.score" /> | ||||||
|     </template> |     </template> | ||||||
|  |     <template #actions="{ row }"> | ||||||
|  |       <TableAction | ||||||
|  |         :actions="[ | ||||||
|  |           { | ||||||
|  |             label: $t('common.delete'), | ||||||
|  |             type: 'danger', | ||||||
|  |             icon: ACTION_ICON.DELETE, | ||||||
|  |             auth: ['infra:demo03-student:delete'], | ||||||
|  |             popConfirm: { | ||||||
|  |               title: $t('ui.actionMessage.deleteConfirm', [row.id]), | ||||||
|  |               confirm: handleDelete.bind(null, row), | ||||||
|  |             }, | ||||||
|  |           }, | ||||||
|  |         ]" | ||||||
|  |       /> | ||||||
|  |     </template> | ||||||
|   </Grid> |   </Grid> | ||||||
|   <div class="-mt-4 flex justify-center"> |   <div class="-mt-4 flex justify-center"> | ||||||
|     <ElButton |     <ElButton | ||||||
|       :icon="Plus" |       :icon="Plus" | ||||||
|       type="primary" |       type="primary" | ||||||
|       plain |       plain | ||||||
|       @click="onAdd" |       @click="handleAdd" | ||||||
|       v-access:code="['infra:demo03-student:create']" |       v-access:code="['infra:demo03-student:create']" | ||||||
|     > |     > | ||||||
|       {{ $t('ui.actionTitle.create', ['学生课程']) }} |       {{ $t('ui.actionTitle.create', ['学生课程']) }} | ||||||
|  |  | ||||||
|  | @ -61,8 +61,8 @@ const [Modal, modalApi] = useVbenModal({ | ||||||
|     // 提交表单 |     // 提交表单 | ||||||
|     const data = (await formApi.getValues()) as Demo03StudentApi.Demo03Student; |     const data = (await formApi.getValues()) as Demo03StudentApi.Demo03Student; | ||||||
|     // 拼接子表的数据 |     // 拼接子表的数据 | ||||||
|     data.demo03Courses = demo03CourseFormRef.value?.getData(); |     data.demo03courses = demo03CourseFormRef.value?.getData(); | ||||||
|     data.demo03Grade = await demo03GradeFormRef.value?.getValues(); |     data.demo03grade = await demo03GradeFormRef.value?.getValues(); | ||||||
|     try { |     try { | ||||||
|       await (formData.value?.id |       await (formData.value?.id | ||||||
|         ? updateDemo03Student(data) |         ? updateDemo03Student(data) | ||||||
|  |  | ||||||
|  | @ -7,6 +7,7 @@ import { Page, useVbenModal } from '@vben/common-ui'; | ||||||
| import { DICT_TYPE } from '@vben/constants'; | import { DICT_TYPE } from '@vben/constants'; | ||||||
| import { getDictOptions } from '@vben/hooks'; | import { getDictOptions } from '@vben/hooks'; | ||||||
| import { Download, Plus, Trash2 } from '@vben/icons'; | import { Download, Plus, Trash2 } from '@vben/icons'; | ||||||
|  | import { useTableToolbar, VbenVxeTableToolbar } from '@vben/plugins/vxe-table'; | ||||||
| import { | import { | ||||||
|   cloneDeep, |   cloneDeep, | ||||||
|   downloadFileFromBlobPart, |   downloadFileFromBlobPart, | ||||||
|  | @ -36,8 +37,6 @@ import { | ||||||
| } from '#/api/infra/demo/demo01'; | } from '#/api/infra/demo/demo01'; | ||||||
| import { ContentWrap } from '#/components/content-wrap'; | import { ContentWrap } from '#/components/content-wrap'; | ||||||
| import { DictTag } from '#/components/dict-tag'; | import { DictTag } from '#/components/dict-tag'; | ||||||
| import { TableToolbar } from '#/components/table-toolbar'; |  | ||||||
| import { useTableToolbar } from '#/hooks'; |  | ||||||
| import { $t } from '#/locales'; | import { $t } from '#/locales'; | ||||||
| 
 | 
 | ||||||
| import Demo01ContactForm from './modules/form.vue'; | import Demo01ContactForm from './modules/form.vue'; | ||||||
|  | @ -57,7 +56,7 @@ const queryFormRef = ref(); // 搜索的表单 | ||||||
| const exportLoading = ref(false); // 导出的加载中 | const exportLoading = ref(false); // 导出的加载中 | ||||||
| 
 | 
 | ||||||
| /** 查询列表 */ | /** 查询列表 */ | ||||||
| const getList = async () => { | async function getList() { | ||||||
|   loading.value = true; |   loading.value = true; | ||||||
|   try { |   try { | ||||||
|     const params = cloneDeep(queryParams) as any; |     const params = cloneDeep(queryParams) as any; | ||||||
|  | @ -70,19 +69,19 @@ const getList = async () => { | ||||||
|   } finally { |   } finally { | ||||||
|     loading.value = false; |     loading.value = false; | ||||||
|   } |   } | ||||||
| }; | } | ||||||
| 
 | 
 | ||||||
| /** 搜索按钮操作 */ | /** 搜索按钮操作 */ | ||||||
| const handleQuery = () => { | function handleQuery() { | ||||||
|   queryParams.pageNo = 1; |   queryParams.pageNo = 1; | ||||||
|   getList(); |   getList(); | ||||||
| }; | } | ||||||
| 
 | 
 | ||||||
| /** 重置按钮操作 */ | /** 重置按钮操作 */ | ||||||
| const resetQuery = () => { | function resetQuery() { | ||||||
|   queryFormRef.value.resetFields(); |   queryFormRef.value.resetFields(); | ||||||
|   handleQuery(); |   handleQuery(); | ||||||
| }; | } | ||||||
| 
 | 
 | ||||||
| const [FormModal, formModalApi] = useVbenModal({ | const [FormModal, formModalApi] = useVbenModal({ | ||||||
|   connectedComponent: Demo01ContactForm, |   connectedComponent: Demo01ContactForm, | ||||||
|  | @ -140,7 +139,7 @@ function handleRowCheckboxChange({ | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /** 导出表格 */ | /** 导出表格 */ | ||||||
| async function onExport() { | async function handleExport() { | ||||||
|   try { |   try { | ||||||
|     exportLoading.value = true; |     exportLoading.value = true; | ||||||
|     const data = await exportDemo01Contact(queryParams); |     const data = await exportDemo01Contact(queryParams); | ||||||
|  | @ -214,7 +213,7 @@ onMounted(() => { | ||||||
|     <!-- 列表 --> |     <!-- 列表 --> | ||||||
|     <ContentWrap title="示例联系人"> |     <ContentWrap title="示例联系人"> | ||||||
|       <template #extra> |       <template #extra> | ||||||
|         <TableToolbar |         <VbenVxeTableToolbar | ||||||
|           ref="tableToolbarRef" |           ref="tableToolbarRef" | ||||||
|           v-model:hidden-search="hiddenSearchBar" |           v-model:hidden-search="hiddenSearchBar" | ||||||
|         > |         > | ||||||
|  | @ -232,7 +231,7 @@ onMounted(() => { | ||||||
|             type="primary" |             type="primary" | ||||||
|             class="ml-2" |             class="ml-2" | ||||||
|             :loading="exportLoading" |             :loading="exportLoading" | ||||||
|             @click="onExport" |             @click="handleExport" | ||||||
|             v-access:code="['infra:demo01-contact:export']" |             v-access:code="['infra:demo01-contact:export']" | ||||||
|           > |           > | ||||||
|             {{ $t('ui.actionTitle.export') }} |             {{ $t('ui.actionTitle.export') }} | ||||||
|  | @ -247,7 +246,7 @@ onMounted(() => { | ||||||
|           > |           > | ||||||
|             批量删除 |             批量删除 | ||||||
|           </ElButton> |           </ElButton> | ||||||
|         </TableToolbar> |         </VbenVxeTableToolbar> | ||||||
|       </template> |       </template> | ||||||
|       <VxeTable |       <VxeTable | ||||||
|         ref="tableRef" |         ref="tableRef" | ||||||
|  |  | ||||||
|  | @ -5,6 +5,7 @@ import { h, onMounted, reactive, ref } from 'vue'; | ||||||
| 
 | 
 | ||||||
| import { Page, useVbenModal } from '@vben/common-ui'; | import { Page, useVbenModal } from '@vben/common-ui'; | ||||||
| import { Download, Plus } from '@vben/icons'; | import { Download, Plus } from '@vben/icons'; | ||||||
|  | import { useTableToolbar, VbenVxeTableToolbar } from '@vben/plugins/vxe-table'; | ||||||
| import { | import { | ||||||
|   cloneDeep, |   cloneDeep, | ||||||
|   downloadFileFromBlobPart, |   downloadFileFromBlobPart, | ||||||
|  | @ -29,8 +30,6 @@ import { | ||||||
|   getDemo02CategoryList, |   getDemo02CategoryList, | ||||||
| } from '#/api/infra/demo/demo02'; | } from '#/api/infra/demo/demo02'; | ||||||
| import { ContentWrap } from '#/components/content-wrap'; | import { ContentWrap } from '#/components/content-wrap'; | ||||||
| import { TableToolbar } from '#/components/table-toolbar'; |  | ||||||
| import { useTableToolbar } from '#/hooks'; |  | ||||||
| import { $t } from '#/locales'; | import { $t } from '#/locales'; | ||||||
| 
 | 
 | ||||||
| import Demo02CategoryForm from './modules/form.vue'; | import Demo02CategoryForm from './modules/form.vue'; | ||||||
|  | @ -47,7 +46,7 @@ const queryFormRef = ref(); // 搜索的表单 | ||||||
| const exportLoading = ref(false); // 导出的加载中 | const exportLoading = ref(false); // 导出的加载中 | ||||||
| 
 | 
 | ||||||
| /** 查询列表 */ | /** 查询列表 */ | ||||||
| const getList = async () => { | async function getList() { | ||||||
|   loading.value = true; |   loading.value = true; | ||||||
|   try { |   try { | ||||||
|     const params = cloneDeep(queryParams) as any; |     const params = cloneDeep(queryParams) as any; | ||||||
|  | @ -58,18 +57,18 @@ const getList = async () => { | ||||||
|   } finally { |   } finally { | ||||||
|     loading.value = false; |     loading.value = false; | ||||||
|   } |   } | ||||||
| }; | } | ||||||
| 
 | 
 | ||||||
| /** 搜索按钮操作 */ | /** 搜索按钮操作 */ | ||||||
| const handleQuery = () => { | function handleQuery() { | ||||||
|   getList(); |   getList(); | ||||||
| }; | } | ||||||
| 
 | 
 | ||||||
| /** 重置按钮操作 */ | /** 重置按钮操作 */ | ||||||
| const resetQuery = () => { | function resetQuery() { | ||||||
|   queryFormRef.value.resetFields(); |   queryFormRef.value.resetFields(); | ||||||
|   handleQuery(); |   handleQuery(); | ||||||
| }; | } | ||||||
| 
 | 
 | ||||||
| const [FormModal, formModalApi] = useVbenModal({ | const [FormModal, formModalApi] = useVbenModal({ | ||||||
|   connectedComponent: Demo02CategoryForm, |   connectedComponent: Demo02CategoryForm, | ||||||
|  | @ -107,7 +106,7 @@ async function handleDelete(row: Demo02CategoryApi.Demo02Category) { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /** 导出表格 */ | /** 导出表格 */ | ||||||
| async function onExport() { | async function handleExport() { | ||||||
|   try { |   try { | ||||||
|     exportLoading.value = true; |     exportLoading.value = true; | ||||||
|     const data = await exportDemo02Category(queryParams); |     const data = await exportDemo02Category(queryParams); | ||||||
|  | @ -179,7 +178,7 @@ onMounted(() => { | ||||||
|     <!-- 列表 --> |     <!-- 列表 --> | ||||||
|     <ContentWrap title="示例分类"> |     <ContentWrap title="示例分类"> | ||||||
|       <template #extra> |       <template #extra> | ||||||
|         <TableToolbar |         <VbenVxeTableToolbar | ||||||
|           ref="tableToolbarRef" |           ref="tableToolbarRef" | ||||||
|           v-model:hidden-search="hiddenSearchBar" |           v-model:hidden-search="hiddenSearchBar" | ||||||
|         > |         > | ||||||
|  | @ -200,12 +199,12 @@ onMounted(() => { | ||||||
|             type="primary" |             type="primary" | ||||||
|             class="ml-2" |             class="ml-2" | ||||||
|             :loading="exportLoading" |             :loading="exportLoading" | ||||||
|             @click="onExport" |             @click="handleExport" | ||||||
|             v-access:code="['infra:demo02-category:export']" |             v-access:code="['infra:demo02-category:export']" | ||||||
|           > |           > | ||||||
|             {{ $t('ui.actionTitle.export') }} |             {{ $t('ui.actionTitle.export') }} | ||||||
|           </ElButton> |           </ElButton> | ||||||
|         </TableToolbar> |         </VbenVxeTableToolbar> | ||||||
|       </template> |       </template> | ||||||
|       <VxeTable |       <VxeTable | ||||||
|         ref="tableRef" |         ref="tableRef" | ||||||
|  |  | ||||||
|  | @ -7,6 +7,7 @@ import { Page, useVbenModal } from '@vben/common-ui'; | ||||||
| import { DICT_TYPE } from '@vben/constants'; | import { DICT_TYPE } from '@vben/constants'; | ||||||
| import { getDictOptions } from '@vben/hooks'; | import { getDictOptions } from '@vben/hooks'; | ||||||
| import { Download, Plus, Trash2 } from '@vben/icons'; | import { Download, Plus, Trash2 } from '@vben/icons'; | ||||||
|  | import { useTableToolbar, VbenVxeTableToolbar } from '@vben/plugins/vxe-table'; | ||||||
| import { | import { | ||||||
|   cloneDeep, |   cloneDeep, | ||||||
|   downloadFileFromBlobPart, |   downloadFileFromBlobPart, | ||||||
|  | @ -38,8 +39,6 @@ import { | ||||||
| } from '#/api/infra/demo/demo03/erp'; | } from '#/api/infra/demo/demo03/erp'; | ||||||
| import { ContentWrap } from '#/components/content-wrap'; | import { ContentWrap } from '#/components/content-wrap'; | ||||||
| import { DictTag } from '#/components/dict-tag'; | import { DictTag } from '#/components/dict-tag'; | ||||||
| import { TableToolbar } from '#/components/table-toolbar'; |  | ||||||
| import { useTableToolbar } from '#/hooks'; |  | ||||||
| import { $t } from '#/locales'; | import { $t } from '#/locales'; | ||||||
| 
 | 
 | ||||||
| import Demo03CourseList from './modules/demo03-course-list.vue'; | import Demo03CourseList from './modules/demo03-course-list.vue'; | ||||||
|  | @ -69,7 +68,7 @@ const queryFormRef = ref(); // 搜索的表单 | ||||||
| const exportLoading = ref(false); // 导出的加载中 | const exportLoading = ref(false); // 导出的加载中 | ||||||
| 
 | 
 | ||||||
| /** 查询列表 */ | /** 查询列表 */ | ||||||
| const getList = async () => { | async function getList() { | ||||||
|   loading.value = true; |   loading.value = true; | ||||||
|   try { |   try { | ||||||
|     const params = cloneDeep(queryParams) as any; |     const params = cloneDeep(queryParams) as any; | ||||||
|  | @ -82,19 +81,19 @@ const getList = async () => { | ||||||
|   } finally { |   } finally { | ||||||
|     loading.value = false; |     loading.value = false; | ||||||
|   } |   } | ||||||
| }; | } | ||||||
| 
 | 
 | ||||||
| /** 搜索按钮操作 */ | /** 搜索按钮操作 */ | ||||||
| const handleQuery = () => { | function handleQuery() { | ||||||
|   queryParams.pageNo = 1; |   queryParams.pageNo = 1; | ||||||
|   getList(); |   getList(); | ||||||
| }; | } | ||||||
| 
 | 
 | ||||||
| /** 重置按钮操作 */ | /** 重置按钮操作 */ | ||||||
| const resetQuery = () => { | function resetQuery() { | ||||||
|   queryFormRef.value.resetFields(); |   queryFormRef.value.resetFields(); | ||||||
|   handleQuery(); |   handleQuery(); | ||||||
| }; | } | ||||||
| 
 | 
 | ||||||
| const [FormModal, formModalApi] = useVbenModal({ | const [FormModal, formModalApi] = useVbenModal({ | ||||||
|   connectedComponent: Demo03StudentForm, |   connectedComponent: Demo03StudentForm, | ||||||
|  | @ -152,7 +151,7 @@ function handleRowCheckboxChange({ | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /** 导出表格 */ | /** 导出表格 */ | ||||||
| async function onExport() { | async function handleExport() { | ||||||
|   try { |   try { | ||||||
|     exportLoading.value = true; |     exportLoading.value = true; | ||||||
|     const data = await exportDemo03Student(queryParams); |     const data = await exportDemo03Student(queryParams); | ||||||
|  | @ -226,7 +225,7 @@ onMounted(() => { | ||||||
|     <!-- 列表 --> |     <!-- 列表 --> | ||||||
|     <ContentWrap title="学生"> |     <ContentWrap title="学生"> | ||||||
|       <template #extra> |       <template #extra> | ||||||
|         <TableToolbar |         <VbenVxeTableToolbar | ||||||
|           ref="tableToolbarRef" |           ref="tableToolbarRef" | ||||||
|           v-model:hidden-search="hiddenSearchBar" |           v-model:hidden-search="hiddenSearchBar" | ||||||
|         > |         > | ||||||
|  | @ -244,7 +243,7 @@ onMounted(() => { | ||||||
|             type="primary" |             type="primary" | ||||||
|             class="ml-2" |             class="ml-2" | ||||||
|             :loading="exportLoading" |             :loading="exportLoading" | ||||||
|             @click="onExport" |             @click="handleExport" | ||||||
|             v-access:code="['infra:demo03-student:export']" |             v-access:code="['infra:demo03-student:export']" | ||||||
|           > |           > | ||||||
|             {{ $t('ui.actionTitle.export') }} |             {{ $t('ui.actionTitle.export') }} | ||||||
|  | @ -259,7 +258,7 @@ onMounted(() => { | ||||||
|           > |           > | ||||||
|             批量删除 |             批量删除 | ||||||
|           </ElButton> |           </ElButton> | ||||||
|         </TableToolbar> |         </VbenVxeTableToolbar> | ||||||
|       </template> |       </template> | ||||||
|       <VxeTable |       <VxeTable | ||||||
|         ref="tableRef" |         ref="tableRef" | ||||||
|  |  | ||||||
|  | @ -5,6 +5,7 @@ import { h, nextTick, onMounted, reactive, ref, watch } from 'vue'; | ||||||
| 
 | 
 | ||||||
| import { useVbenModal } from '@vben/common-ui'; | import { useVbenModal } from '@vben/common-ui'; | ||||||
| import { Plus, Trash2 } from '@vben/icons'; | import { Plus, Trash2 } from '@vben/icons'; | ||||||
|  | import { useTableToolbar, VbenVxeTableToolbar } from '@vben/plugins/vxe-table'; | ||||||
| import { cloneDeep, formatDateTime, isEmpty } from '@vben/utils'; | import { cloneDeep, formatDateTime, isEmpty } from '@vben/utils'; | ||||||
| 
 | 
 | ||||||
| import { | import { | ||||||
|  | @ -25,8 +26,6 @@ import { | ||||||
|   getDemo03CoursePage, |   getDemo03CoursePage, | ||||||
| } from '#/api/infra/demo/demo03/erp'; | } from '#/api/infra/demo/demo03/erp'; | ||||||
| import { ContentWrap } from '#/components/content-wrap'; | import { ContentWrap } from '#/components/content-wrap'; | ||||||
| import { TableToolbar } from '#/components/table-toolbar'; |  | ||||||
| import { useTableToolbar } from '#/hooks'; |  | ||||||
| import { $t } from '#/locales'; | import { $t } from '#/locales'; | ||||||
| 
 | 
 | ||||||
| import Demo03CourseForm from './demo03-course-form.vue'; | import Demo03CourseForm from './demo03-course-form.vue'; | ||||||
|  | @ -108,18 +107,18 @@ const queryParams = reactive({ | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
| /** 搜索按钮操作 */ | /** 搜索按钮操作 */ | ||||||
| const handleQuery = () => { | function handleQuery() { | ||||||
|   queryParams.pageNo = 1; |   queryParams.pageNo = 1; | ||||||
|   getList(); |   getList(); | ||||||
| }; | } | ||||||
| 
 | 
 | ||||||
| /** 重置按钮操作 */ | /** 重置按钮操作 */ | ||||||
| const resetQuery = () => { | function resetQuery() { | ||||||
|   queryFormRef.value.resetFields(); |   queryFormRef.value.resetFields(); | ||||||
|   handleQuery(); |   handleQuery(); | ||||||
| }; | } | ||||||
| /** 查询列表 */ | /** 查询列表 */ | ||||||
| const getList = async () => { | async function getList() { | ||||||
|   loading.value = true; |   loading.value = true; | ||||||
|   try { |   try { | ||||||
|     if (!props.studentId) { |     if (!props.studentId) { | ||||||
|  | @ -136,7 +135,7 @@ const getList = async () => { | ||||||
|   } finally { |   } finally { | ||||||
|     loading.value = false; |     loading.value = false; | ||||||
|   } |   } | ||||||
| }; | } | ||||||
| 
 | 
 | ||||||
| /** 监听主表的关联字段的变化,加载对应的子表数据 */ | /** 监听主表的关联字段的变化,加载对应的子表数据 */ | ||||||
| watch( | watch( | ||||||
|  | @ -214,7 +213,7 @@ onMounted(() => { | ||||||
|     <!-- 列表 --> |     <!-- 列表 --> | ||||||
|     <ContentWrap title="学生"> |     <ContentWrap title="学生"> | ||||||
|       <template #extra> |       <template #extra> | ||||||
|         <TableToolbar |         <VbenVxeTableToolbar | ||||||
|           ref="tableToolbarRef" |           ref="tableToolbarRef" | ||||||
|           v-model:hidden-search="hiddenSearchBar" |           v-model:hidden-search="hiddenSearchBar" | ||||||
|         > |         > | ||||||
|  | @ -237,7 +236,7 @@ onMounted(() => { | ||||||
|           > |           > | ||||||
|             批量删除 |             批量删除 | ||||||
|           </ElButton> |           </ElButton> | ||||||
|         </TableToolbar> |         </VbenVxeTableToolbar> | ||||||
|       </template> |       </template> | ||||||
|       <VxeTable |       <VxeTable | ||||||
|         ref="tableRef" |         ref="tableRef" | ||||||
|  |  | ||||||
|  | @ -5,6 +5,7 @@ import { h, nextTick, onMounted, reactive, ref, watch } from 'vue'; | ||||||
| 
 | 
 | ||||||
| import { useVbenModal } from '@vben/common-ui'; | import { useVbenModal } from '@vben/common-ui'; | ||||||
| import { Plus, Trash2 } from '@vben/icons'; | import { Plus, Trash2 } from '@vben/icons'; | ||||||
|  | import { useTableToolbar, VbenVxeTableToolbar } from '@vben/plugins/vxe-table'; | ||||||
| import { cloneDeep, formatDateTime, isEmpty } from '@vben/utils'; | import { cloneDeep, formatDateTime, isEmpty } from '@vben/utils'; | ||||||
| 
 | 
 | ||||||
| import { | import { | ||||||
|  | @ -25,8 +26,6 @@ import { | ||||||
|   getDemo03GradePage, |   getDemo03GradePage, | ||||||
| } from '#/api/infra/demo/demo03/erp'; | } from '#/api/infra/demo/demo03/erp'; | ||||||
| import { ContentWrap } from '#/components/content-wrap'; | import { ContentWrap } from '#/components/content-wrap'; | ||||||
| import { TableToolbar } from '#/components/table-toolbar'; |  | ||||||
| import { useTableToolbar } from '#/hooks'; |  | ||||||
| import { $t } from '#/locales'; | import { $t } from '#/locales'; | ||||||
| 
 | 
 | ||||||
| import Demo03GradeForm from './demo03-grade-form.vue'; | import Demo03GradeForm from './demo03-grade-form.vue'; | ||||||
|  | @ -108,18 +107,18 @@ const queryParams = reactive({ | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
| /** 搜索按钮操作 */ | /** 搜索按钮操作 */ | ||||||
| const handleQuery = () => { | function handleQuery() { | ||||||
|   queryParams.pageNo = 1; |   queryParams.pageNo = 1; | ||||||
|   getList(); |   getList(); | ||||||
| }; | } | ||||||
| 
 | 
 | ||||||
| /** 重置按钮操作 */ | /** 重置按钮操作 */ | ||||||
| const resetQuery = () => { | function resetQuery() { | ||||||
|   queryFormRef.value.resetFields(); |   queryFormRef.value.resetFields(); | ||||||
|   handleQuery(); |   handleQuery(); | ||||||
| }; | } | ||||||
| /** 查询列表 */ | /** 查询列表 */ | ||||||
| const getList = async () => { | async function getList() { | ||||||
|   loading.value = true; |   loading.value = true; | ||||||
|   try { |   try { | ||||||
|     if (!props.studentId) { |     if (!props.studentId) { | ||||||
|  | @ -136,7 +135,7 @@ const getList = async () => { | ||||||
|   } finally { |   } finally { | ||||||
|     loading.value = false; |     loading.value = false; | ||||||
|   } |   } | ||||||
| }; | } | ||||||
| 
 | 
 | ||||||
| /** 监听主表的关联字段的变化,加载对应的子表数据 */ | /** 监听主表的关联字段的变化,加载对应的子表数据 */ | ||||||
| watch( | watch( | ||||||
|  | @ -214,7 +213,7 @@ onMounted(() => { | ||||||
|     <!-- 列表 --> |     <!-- 列表 --> | ||||||
|     <ContentWrap title="学生"> |     <ContentWrap title="学生"> | ||||||
|       <template #extra> |       <template #extra> | ||||||
|         <TableToolbar |         <VbenVxeTableToolbar | ||||||
|           ref="tableToolbarRef" |           ref="tableToolbarRef" | ||||||
|           v-model:hidden-search="hiddenSearchBar" |           v-model:hidden-search="hiddenSearchBar" | ||||||
|         > |         > | ||||||
|  | @ -237,7 +236,7 @@ onMounted(() => { | ||||||
|           > |           > | ||||||
|             批量删除 |             批量删除 | ||||||
|           </ElButton> |           </ElButton> | ||||||
|         </TableToolbar> |         </VbenVxeTableToolbar> | ||||||
|       </template> |       </template> | ||||||
|       <VxeTable |       <VxeTable | ||||||
|         ref="tableRef" |         ref="tableRef" | ||||||
|  |  | ||||||
|  | @ -7,6 +7,7 @@ import { Page, useVbenModal } from '@vben/common-ui'; | ||||||
| import { DICT_TYPE } from '@vben/constants'; | import { DICT_TYPE } from '@vben/constants'; | ||||||
| import { getDictOptions } from '@vben/hooks'; | import { getDictOptions } from '@vben/hooks'; | ||||||
| import { Download, Plus, Trash2 } from '@vben/icons'; | import { Download, Plus, Trash2 } from '@vben/icons'; | ||||||
|  | import { useTableToolbar, VbenVxeTableToolbar } from '@vben/plugins/vxe-table'; | ||||||
| import { | import { | ||||||
|   cloneDeep, |   cloneDeep, | ||||||
|   downloadFileFromBlobPart, |   downloadFileFromBlobPart, | ||||||
|  | @ -38,8 +39,6 @@ import { | ||||||
| } from '#/api/infra/demo/demo03/inner'; | } from '#/api/infra/demo/demo03/inner'; | ||||||
| import { ContentWrap } from '#/components/content-wrap'; | import { ContentWrap } from '#/components/content-wrap'; | ||||||
| import { DictTag } from '#/components/dict-tag'; | import { DictTag } from '#/components/dict-tag'; | ||||||
| import { TableToolbar } from '#/components/table-toolbar'; |  | ||||||
| import { useTableToolbar } from '#/hooks'; |  | ||||||
| import { $t } from '#/locales'; | import { $t } from '#/locales'; | ||||||
| 
 | 
 | ||||||
| import Demo03CourseList from './modules/demo03-course-list.vue'; | import Demo03CourseList from './modules/demo03-course-list.vue'; | ||||||
|  | @ -65,7 +64,7 @@ const queryFormRef = ref(); // 搜索的表单 | ||||||
| const exportLoading = ref(false); // 导出的加载中 | const exportLoading = ref(false); // 导出的加载中 | ||||||
| 
 | 
 | ||||||
| /** 查询列表 */ | /** 查询列表 */ | ||||||
| const getList = async () => { | async function getList() { | ||||||
|   loading.value = true; |   loading.value = true; | ||||||
|   try { |   try { | ||||||
|     const params = cloneDeep(queryParams) as any; |     const params = cloneDeep(queryParams) as any; | ||||||
|  | @ -78,19 +77,19 @@ const getList = async () => { | ||||||
|   } finally { |   } finally { | ||||||
|     loading.value = false; |     loading.value = false; | ||||||
|   } |   } | ||||||
| }; | } | ||||||
| 
 | 
 | ||||||
| /** 搜索按钮操作 */ | /** 搜索按钮操作 */ | ||||||
| const handleQuery = () => { | function handleQuery() { | ||||||
|   queryParams.pageNo = 1; |   queryParams.pageNo = 1; | ||||||
|   getList(); |   getList(); | ||||||
| }; | } | ||||||
| 
 | 
 | ||||||
| /** 重置按钮操作 */ | /** 重置按钮操作 */ | ||||||
| const resetQuery = () => { | function resetQuery() { | ||||||
|   queryFormRef.value.resetFields(); |   queryFormRef.value.resetFields(); | ||||||
|   handleQuery(); |   handleQuery(); | ||||||
| }; | } | ||||||
| 
 | 
 | ||||||
| const [FormModal, formModalApi] = useVbenModal({ | const [FormModal, formModalApi] = useVbenModal({ | ||||||
|   connectedComponent: Demo03StudentForm, |   connectedComponent: Demo03StudentForm, | ||||||
|  | @ -148,7 +147,7 @@ function handleRowCheckboxChange({ | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /** 导出表格 */ | /** 导出表格 */ | ||||||
| async function onExport() { | async function handleExport() { | ||||||
|   try { |   try { | ||||||
|     exportLoading.value = true; |     exportLoading.value = true; | ||||||
|     const data = await exportDemo03Student(queryParams); |     const data = await exportDemo03Student(queryParams); | ||||||
|  | @ -222,7 +221,7 @@ onMounted(() => { | ||||||
|     <!-- 列表 --> |     <!-- 列表 --> | ||||||
|     <ContentWrap title="学生"> |     <ContentWrap title="学生"> | ||||||
|       <template #extra> |       <template #extra> | ||||||
|         <TableToolbar |         <VbenVxeTableToolbar | ||||||
|           ref="tableToolbarRef" |           ref="tableToolbarRef" | ||||||
|           v-model:hidden-search="hiddenSearchBar" |           v-model:hidden-search="hiddenSearchBar" | ||||||
|         > |         > | ||||||
|  | @ -240,7 +239,7 @@ onMounted(() => { | ||||||
|             type="primary" |             type="primary" | ||||||
|             class="ml-2" |             class="ml-2" | ||||||
|             :loading="exportLoading" |             :loading="exportLoading" | ||||||
|             @click="onExport" |             @click="handleExport" | ||||||
|             v-access:code="['infra:demo03-student:export']" |             v-access:code="['infra:demo03-student:export']" | ||||||
|           > |           > | ||||||
|             {{ $t('ui.actionTitle.export') }} |             {{ $t('ui.actionTitle.export') }} | ||||||
|  | @ -255,7 +254,7 @@ onMounted(() => { | ||||||
|           > |           > | ||||||
|             批量删除 |             批量删除 | ||||||
|           </ElButton> |           </ElButton> | ||||||
|         </TableToolbar> |         </VbenVxeTableToolbar> | ||||||
|       </template> |       </template> | ||||||
|       <VxeTable |       <VxeTable | ||||||
|         ref="tableRef" |         ref="tableRef" | ||||||
|  |  | ||||||
|  | @ -16,7 +16,7 @@ const props = defineProps<{ | ||||||
| const loading = ref(true); // 列表的加载中 | const loading = ref(true); // 列表的加载中 | ||||||
| const list = ref<Demo03StudentApi.Demo03Course[]>([]); // 列表的数据 | const list = ref<Demo03StudentApi.Demo03Course[]>([]); // 列表的数据 | ||||||
| /** 查询列表 */ | /** 查询列表 */ | ||||||
| const getList = async () => { | async function getList() { | ||||||
|   loading.value = true; |   loading.value = true; | ||||||
|   try { |   try { | ||||||
|     if (!props.studentId) { |     if (!props.studentId) { | ||||||
|  | @ -26,7 +26,7 @@ const getList = async () => { | ||||||
|   } finally { |   } finally { | ||||||
|     loading.value = false; |     loading.value = false; | ||||||
|   } |   } | ||||||
| }; | } | ||||||
| 
 | 
 | ||||||
| /** 监听主表的关联字段的变化,加载对应的子表数据 */ | /** 监听主表的关联字段的变化,加载对应的子表数据 */ | ||||||
| watch( | watch( | ||||||
|  |  | ||||||
|  | @ -16,7 +16,7 @@ const props = defineProps<{ | ||||||
| const loading = ref(true); // 列表的加载中 | const loading = ref(true); // 列表的加载中 | ||||||
| const list = ref<Demo03StudentApi.Demo03Grade[]>([]); // 列表的数据 | const list = ref<Demo03StudentApi.Demo03Grade[]>([]); // 列表的数据 | ||||||
| /** 查询列表 */ | /** 查询列表 */ | ||||||
| const getList = async () => { | async function getList() { | ||||||
|   loading.value = true; |   loading.value = true; | ||||||
|   try { |   try { | ||||||
|     if (!props.studentId) { |     if (!props.studentId) { | ||||||
|  | @ -26,7 +26,7 @@ const getList = async () => { | ||||||
|   } finally { |   } finally { | ||||||
|     loading.value = false; |     loading.value = false; | ||||||
|   } |   } | ||||||
| }; | } | ||||||
| 
 | 
 | ||||||
| /** 监听主表的关联字段的变化,加载对应的子表数据 */ | /** 监听主表的关联字段的变化,加载对应的子表数据 */ | ||||||
| watch( | watch( | ||||||
|  |  | ||||||
|  | @ -7,6 +7,7 @@ import { Page, useVbenModal } from '@vben/common-ui'; | ||||||
| import { DICT_TYPE } from '@vben/constants'; | import { DICT_TYPE } from '@vben/constants'; | ||||||
| import { getDictOptions } from '@vben/hooks'; | import { getDictOptions } from '@vben/hooks'; | ||||||
| import { Download, Plus, Trash2 } from '@vben/icons'; | import { Download, Plus, Trash2 } from '@vben/icons'; | ||||||
|  | import { useTableToolbar, VbenVxeTableToolbar } from '@vben/plugins/vxe-table'; | ||||||
| import { | import { | ||||||
|   cloneDeep, |   cloneDeep, | ||||||
|   downloadFileFromBlobPart, |   downloadFileFromBlobPart, | ||||||
|  | @ -36,8 +37,6 @@ import { | ||||||
| } from '#/api/infra/demo/demo03/normal'; | } from '#/api/infra/demo/demo03/normal'; | ||||||
| import { ContentWrap } from '#/components/content-wrap'; | import { ContentWrap } from '#/components/content-wrap'; | ||||||
| import { DictTag } from '#/components/dict-tag'; | import { DictTag } from '#/components/dict-tag'; | ||||||
| import { TableToolbar } from '#/components/table-toolbar'; |  | ||||||
| import { useTableToolbar } from '#/hooks'; |  | ||||||
| import { $t } from '#/locales'; | import { $t } from '#/locales'; | ||||||
| 
 | 
 | ||||||
| import Demo03StudentForm from './modules/form.vue'; | import Demo03StudentForm from './modules/form.vue'; | ||||||
|  | @ -58,7 +57,7 @@ const queryFormRef = ref(); // 搜索的表单 | ||||||
| const exportLoading = ref(false); // 导出的加载中 | const exportLoading = ref(false); // 导出的加载中 | ||||||
| 
 | 
 | ||||||
| /** 查询列表 */ | /** 查询列表 */ | ||||||
| const getList = async () => { | async function getList() { | ||||||
|   loading.value = true; |   loading.value = true; | ||||||
|   try { |   try { | ||||||
|     const params = cloneDeep(queryParams) as any; |     const params = cloneDeep(queryParams) as any; | ||||||
|  | @ -71,19 +70,19 @@ const getList = async () => { | ||||||
|   } finally { |   } finally { | ||||||
|     loading.value = false; |     loading.value = false; | ||||||
|   } |   } | ||||||
| }; | } | ||||||
| 
 | 
 | ||||||
| /** 搜索按钮操作 */ | /** 搜索按钮操作 */ | ||||||
| const handleQuery = () => { | function handleQuery() { | ||||||
|   queryParams.pageNo = 1; |   queryParams.pageNo = 1; | ||||||
|   getList(); |   getList(); | ||||||
| }; | } | ||||||
| 
 | 
 | ||||||
| /** 重置按钮操作 */ | /** 重置按钮操作 */ | ||||||
| const resetQuery = () => { | function resetQuery() { | ||||||
|   queryFormRef.value.resetFields(); |   queryFormRef.value.resetFields(); | ||||||
|   handleQuery(); |   handleQuery(); | ||||||
| }; | } | ||||||
| 
 | 
 | ||||||
| const [FormModal, formModalApi] = useVbenModal({ | const [FormModal, formModalApi] = useVbenModal({ | ||||||
|   connectedComponent: Demo03StudentForm, |   connectedComponent: Demo03StudentForm, | ||||||
|  | @ -141,7 +140,7 @@ function handleRowCheckboxChange({ | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /** 导出表格 */ | /** 导出表格 */ | ||||||
| async function onExport() { | async function handleExport() { | ||||||
|   try { |   try { | ||||||
|     exportLoading.value = true; |     exportLoading.value = true; | ||||||
|     const data = await exportDemo03Student(queryParams); |     const data = await exportDemo03Student(queryParams); | ||||||
|  | @ -215,7 +214,7 @@ onMounted(() => { | ||||||
|     <!-- 列表 --> |     <!-- 列表 --> | ||||||
|     <ContentWrap title="学生"> |     <ContentWrap title="学生"> | ||||||
|       <template #extra> |       <template #extra> | ||||||
|         <TableToolbar |         <VbenVxeTableToolbar | ||||||
|           ref="tableToolbarRef" |           ref="tableToolbarRef" | ||||||
|           v-model:hidden-search="hiddenSearchBar" |           v-model:hidden-search="hiddenSearchBar" | ||||||
|         > |         > | ||||||
|  | @ -233,7 +232,7 @@ onMounted(() => { | ||||||
|             type="primary" |             type="primary" | ||||||
|             class="ml-2" |             class="ml-2" | ||||||
|             :loading="exportLoading" |             :loading="exportLoading" | ||||||
|             @click="onExport" |             @click="handleExport" | ||||||
|             v-access:code="['infra:demo03-student:export']" |             v-access:code="['infra:demo03-student:export']" | ||||||
|           > |           > | ||||||
|             {{ $t('ui.actionTitle.export') }} |             {{ $t('ui.actionTitle.export') }} | ||||||
|  | @ -248,7 +247,7 @@ onMounted(() => { | ||||||
|           > |           > | ||||||
|             批量删除 |             批量删除 | ||||||
|           </ElButton> |           </ElButton> | ||||||
|         </TableToolbar> |         </VbenVxeTableToolbar> | ||||||
|       </template> |       </template> | ||||||
|       <VxeTable |       <VxeTable | ||||||
|         ref="tableRef" |         ref="tableRef" | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	 xingyu4j
						xingyu4j