diff --git a/apps/web-antd/src/adapter/style.css b/apps/web-antd/src/adapter/style.css index d2f32dc7c..01368a928 100644 --- a/apps/web-antd/src/adapter/style.css +++ b/apps/web-antd/src/adapter/style.css @@ -1,4 +1,4 @@ -/* 来自 @vben/plugins/vxe-table style.css TODO @puhui999:可以写下目的哈; */ +/* 来自 @vben/plugins/vxe-table style.css,覆盖 vxe-table 原有的样式定义,使用 vben 的样式主题 */ :root { --vxe-ui-font-color: hsl(var(--foreground)); --vxe-ui-font-primary-color: hsl(var(--primary)); diff --git a/apps/web-antd/src/api/infra/codegen/index.ts b/apps/web-antd/src/api/infra/codegen/index.ts index c59347d71..d8fea0453 100644 --- a/apps/web-antd/src/api/infra/codegen/index.ts +++ b/apps/web-antd/src/api/infra/codegen/index.ts @@ -21,8 +21,6 @@ export namespace InfraCodegenApi { createTime: Date; updateTime: Date; templateType: number; - // TODO @puhui999:使用后端统一配置。因为一般需要批量的团队,会一直需要。不需要的,一般一直不需要哈。 - deleteBatch: boolean; parentMenuId: number; } diff --git a/apps/web-antd/src/api/infra/demo/demo01/index.ts b/apps/web-antd/src/api/infra/demo/demo01/index.ts index 94fb6330c..423520397 100644 --- a/apps/web-antd/src/api/infra/demo/demo01/index.ts +++ b/apps/web-antd/src/api/infra/demo/demo01/index.ts @@ -46,11 +46,10 @@ export function deleteDemo01Contact(id: number) { return requestClient.delete(`/infra/demo01-contact/delete?id=${id}`); } -// 批量删除示例联系人 -// TODO @puhui999:注释风格哈。 +/** 批量删除示例联系人 */ export function deleteDemo01ContactByIds(ids: number[]) { return requestClient.delete( - `/infra/demo01-contact/delete-batch?ids=${ids.join(',')}`, + `/infra/demo01-contact/delete-list?ids=${ids.join(',')}`, ); } diff --git a/apps/web-antd/src/api/infra/demo/demo03/erp/index.ts b/apps/web-antd/src/api/infra/demo/demo03/erp/index.ts index 8998589d5..e21c6f00e 100644 --- a/apps/web-antd/src/api/infra/demo/demo03/erp/index.ts +++ b/apps/web-antd/src/api/infra/demo/demo03/erp/index.ts @@ -61,10 +61,10 @@ export function deleteDemo03Student(id: number) { return requestClient.delete(`/infra/demo03-student-erp/delete?id=${id}`); } -// 批量删除学生 +/** 批量删除学生 */ export function deleteDemo03StudentByIds(ids: number[]) { return requestClient.delete( - `/infra/demo03-student-erp/delete-batch?ids=${ids.join(',')}`, + `/infra/demo03-student-erp/delete-list?ids=${ids.join(',')}`, ); } @@ -108,10 +108,10 @@ export function deleteDemo03Course(id: number) { ); } -// 批量删除学生课程 +/** 批量删除学生课程 */ export function deleteDemo03CourseByIds(ids: number[]) { return requestClient.delete( - `/infra/demo03-student-erp/demo03-course/delete-batch?ids=${ids.join(',')}`, + `/infra/demo03-student-erp/demo03-course/delete-list?ids=${ids.join(',')}`, ); } @@ -154,10 +154,10 @@ export function deleteDemo03Grade(id: number) { ); } -// 批量删除学生班级 +/** 批量删除学生班级 */ export function deleteDemo03GradeByIds(ids: number[]) { return requestClient.delete( - `/infra/demo03-student-erp/demo03-grade/delete-batch?ids=${ids.join(',')}`, + `/infra/demo03-student-erp/demo03-grade/delete-list?ids=${ids.join(',')}`, ); } diff --git a/apps/web-antd/src/api/infra/demo/demo03/inner/index.ts b/apps/web-antd/src/api/infra/demo/demo03/inner/index.ts index ebf306abe..ce3dda32f 100644 --- a/apps/web-antd/src/api/infra/demo/demo03/inner/index.ts +++ b/apps/web-antd/src/api/infra/demo/demo03/inner/index.ts @@ -63,10 +63,10 @@ export function deleteDemo03Student(id: number) { return requestClient.delete(`/infra/demo03-student-inner/delete?id=${id}`); } -// 批量删除学生 +/** 批量删除学生 */ export function deleteDemo03StudentByIds(ids: number[]) { return requestClient.delete( - `/infra/demo03-student-inner/delete-batch?ids=${ids.join(',')}`, + `/infra/demo03-student-inner/delete-list?ids=${ids.join(',')}`, ); } diff --git a/apps/web-antd/src/api/infra/demo/demo03/normal/index.ts b/apps/web-antd/src/api/infra/demo/demo03/normal/index.ts index 4d620725f..0f5bfd2e5 100644 --- a/apps/web-antd/src/api/infra/demo/demo03/normal/index.ts +++ b/apps/web-antd/src/api/infra/demo/demo03/normal/index.ts @@ -63,10 +63,10 @@ export function deleteDemo03Student(id: number) { return requestClient.delete(`/infra/demo03-student-normal/delete?id=${id}`); } -// 批量删除学生 +/** 批量删除学生 */ export function deleteDemo03StudentByIds(ids: number[]) { return requestClient.delete( - `/infra/demo03-student-normal/delete-batch?ids=${ids.join(',')}`, + `/infra/demo03-student-normal/delete-list?ids=${ids.join(',')}`, ); } diff --git a/apps/web-antd/src/hooks/use-table-toolbar.ts b/apps/web-antd/src/hooks/use-table-toolbar.ts index 187cb9d30..0eb52e17f 100644 --- a/apps/web-antd/src/hooks/use-table-toolbar.ts +++ b/apps/web-antd/src/hooks/use-table-toolbar.ts @@ -3,7 +3,10 @@ import type { TableToolbar } from '#/components/table-toolbar'; import { ref, watch } from 'vue'; -// TODO @puhui999:这里的注释、目的写下; +/** + * vxe 原生工具栏挂载封装 + * 解决每个组件使用 vxe-table 组件时都需要写一遍的问题 + */ export function useTableToolbar() { const hiddenSearchBar = ref(false); // 隐藏搜索栏 const tableToolbarRef = ref>(); @@ -15,7 +18,7 @@ export function useTableToolbar() { const table = tableRef.value; const tableToolbar = tableToolbarRef.value; if (table && tableToolbar) { - // TODO @puhui999:通过 nexttick 可以解决么? + // TODO @puhui999:通过 nexttick 可以解决么?试过不得行🤣刚好列表组件出现后延迟一秒挂载很稳 setTimeout(async () => { const toolbar = tableToolbar.getToolbarRef(); if (!toolbar) { @@ -29,10 +32,9 @@ export function useTableToolbar() { watch( () => tableRef.value, - (val) => { + async (val) => { if (!val || isBound.value) return; - // TODO @puhui999:这里要处理下 promise 的告警么? - bindTableToolbar(); + await bindTableToolbar(); }, { immediate: true }, ); diff --git a/apps/web-antd/src/utils/dict.ts b/apps/web-antd/src/utils/dict.ts index ded8ea473..3393f9fa7 100644 --- a/apps/web-antd/src/utils/dict.ts +++ b/apps/web-antd/src/utils/dict.ts @@ -1,4 +1,3 @@ -import type { DefaultOptionType } from 'ant-design-vue/es/select'; // TODO @芋艿:后续再优化 // TODO @芋艿:可以共享么? @@ -14,11 +13,11 @@ import { useDictStore } from '#/store'; type ColorType = 'error' | 'info' | 'success' | 'warning'; export interface DictDataType { - dictType: string; + dictType?: string; label: string; value: boolean | number | string; - colorType: ColorType; - cssClass: string; + colorType?: ColorType; + cssClass?: string; } export interface NumberDictDataType extends DictDataType { @@ -62,14 +61,13 @@ function getDictObj(dictType: string, value: any) { * @param valueType 字典值类型,默认 string 类型 * @returns 字典数组 */ -// TODO @puhui999:貌似可以定义一个类型?不使用 any[] function getDictOptions( dictType: string, valueType: 'boolean' | 'number' | 'string' = 'string', -): any[] { +): DictDataType[] { const dictStore = useDictStore(); const dictOpts = dictStore.getDictOptions(dictType); - const dictOptions: DefaultOptionType = []; + const dictOptions: DictDataType[] = []; if (dictOpts.length > 0) { let dictValue: boolean | number | string = ''; dictOpts.forEach((d) => { diff --git a/apps/web-antd/src/views/infra/codegen/data.ts b/apps/web-antd/src/views/infra/codegen/data.ts index ccc2c9dea..45c0adb3c 100644 --- a/apps/web-antd/src/views/infra/codegen/data.ts +++ b/apps/web-antd/src/views/infra/codegen/data.ts @@ -11,7 +11,6 @@ import { useAccess } from '@vben/access'; import { IconifyIcon } from '@vben/icons'; import { handleTree } from '@vben/utils'; -import { z } from '#/adapter/form'; import { getDataSourceConfigList } from '#/api/infra/data-source-config'; import { getMenuList } from '#/api/system/menu'; import { $t } from '#/locales'; @@ -158,18 +157,6 @@ export function useGenerationInfoBaseFormSchema(): VbenFormSchema[] { }, rules: 'selectRequired', }, - { - // TODO @puhui999:使用后端统一配置。因为一般需要批量的团队,会一直需要。不需要的,一般一直不需要哈。 - component: 'RadioGroup', - fieldName: 'deleteBatch', - label: '批量删除?', - help: '是否生成批量删除接口', - componentProps: { - options: getDictOptions(DICT_TYPE.INFRA_BOOLEAN_STRING, 'boolean'), - class: 'w-full', - }, - rules: z.boolean().default(false), - }, { fieldName: 'parentMenuId', label: '上级菜单', diff --git a/apps/web-antd/src/views/infra/demo/demo01/data.ts b/apps/web-antd/src/views/infra/demo/demo01/data.ts index 8c5351685..ead46dd7d 100644 --- a/apps/web-antd/src/views/infra/demo/demo01/data.ts +++ b/apps/web-antd/src/views/infra/demo/demo01/data.ts @@ -151,8 +151,6 @@ export function useGridColumns( minWidth: 200, align: 'center', fixed: 'right', - // TODO @puhui999:headerAlign 要使用 headerAlign: 'center' 么?看着现在分成了 align 和 headerAlign 两种 - headerAlign: 'center', showOverflow: false, cellRender: { attrs: { diff --git a/apps/web-antd/src/views/infra/demo/demo01/index.vue b/apps/web-antd/src/views/infra/demo/demo01/index.vue index 29301a7a4..fd311279e 100644 --- a/apps/web-antd/src/views/infra/demo/demo01/index.vue +++ b/apps/web-antd/src/views/infra/demo/demo01/index.vue @@ -5,7 +5,7 @@ import type { } from '#/adapter/vxe-table'; import type { Demo01ContactApi } from '#/api/infra/demo/demo01'; -import { computed, h, ref } from 'vue'; +import { h, ref } from 'vue'; import { Page, useVbenModal } from '@vben/common-ui'; import { Download, Plus, Trash2 } from '@vben/icons'; @@ -61,16 +61,6 @@ async function onDelete(row: Demo01ContactApi.Demo01Contact) { } } -// TODO @puhui999::1)/** 批量删除示例联系人 */ 是不是放在 deleteIds 上面;2)showDeleteBatchBtn 是不是直接 disabled 哪里判断哈; -const deleteIds = ref([]); // 待删除示例联系人 ID -const showDeleteBatchBtn = computed(() => isEmpty(deleteIds.value)); -function setDeleteIds({ - records, -}: { - records: Demo01ContactApi.Demo01Contact[]; -}) { - deleteIds.value = records.map((item) => item.id); -} /** 批量删除示例联系人 */ async function onDeleteBatch() { const hideLoading = message.loading({ @@ -87,6 +77,15 @@ async function onDeleteBatch() { } } +const deleteIds = ref([]); // 待删除示例联系人 ID +function setDeleteIds({ + records, +}: { + records: Demo01ContactApi.Demo01Contact[]; +}) { + deleteIds.value = records.map((item) => item.id); +} + /** 导出表格 */ async function onExport() { const data = await exportDemo01Contact(await gridApi.formApi.getValues()); @@ -175,7 +174,7 @@ const [Grid, gridApi] = useVbenVxeGrid({ type="primary" danger class="ml-2" - :disabled="showDeleteBatchBtn" + :disabled="isEmpty(deleteIds)" @click="onDeleteBatch" v-access:code="['infra:demo01-contact:delete']" > diff --git a/apps/web-antd/src/views/infra/demo/demo02/data.ts b/apps/web-antd/src/views/infra/demo/demo02/data.ts index 1830d4aeb..064a7e2e9 100644 --- a/apps/web-antd/src/views/infra/demo/demo02/data.ts +++ b/apps/web-antd/src/views/infra/demo/demo02/data.ts @@ -121,7 +121,6 @@ export function useGridColumns( minWidth: 200, align: 'center', fixed: 'right', - headerAlign: 'center', showOverflow: false, cellRender: { attrs: { diff --git a/apps/web-antd/src/views/infra/demo/demo03/erp/data.ts b/apps/web-antd/src/views/infra/demo/demo03/erp/data.ts index 4122efdee..e734550e0 100644 --- a/apps/web-antd/src/views/infra/demo/demo03/erp/data.ts +++ b/apps/web-antd/src/views/infra/demo/demo03/erp/data.ts @@ -150,7 +150,6 @@ export function useGridColumns( minWidth: 200, align: 'center', fixed: 'right', - headerAlign: 'center', showOverflow: false, cellRender: { attrs: { @@ -288,7 +287,7 @@ export function useDemo03CourseGridColumns( minWidth: 200, align: 'center', fixed: 'right', - headerAlign: 'center', + showOverflow: false, cellRender: { attrs: { @@ -426,7 +425,7 @@ export function useDemo03GradeGridColumns( minWidth: 200, align: 'center', fixed: 'right', - headerAlign: 'center', + showOverflow: false, cellRender: { attrs: { diff --git a/apps/web-antd/src/views/infra/demo/demo03/erp/index.vue b/apps/web-antd/src/views/infra/demo/demo03/erp/index.vue index e605774d5..ed2a2c566 100644 --- a/apps/web-antd/src/views/infra/demo/demo03/erp/index.vue +++ b/apps/web-antd/src/views/infra/demo/demo03/erp/index.vue @@ -5,7 +5,7 @@ import type { } from '#/adapter/vxe-table'; import type { Demo03StudentApi } from '#/api/infra/demo/demo03/erp'; -import { computed, h, ref } from 'vue'; +import { h, ref } from 'vue'; import { Page, useVbenModal } from '@vben/common-ui'; import { Download, Plus, Trash2 } from '@vben/icons'; @@ -67,8 +67,6 @@ async function onDelete(row: Demo03StudentApi.Demo03Student) { } } -const deleteIds = ref([]); // 待删除学生 ID -const showDeleteBatchBtn = computed(() => isEmpty(deleteIds.value)); /** 批量删除学生 */ async function onDeleteBatch() { const hideLoading = message.loading({ @@ -85,6 +83,15 @@ async function onDeleteBatch() { } } +const deleteIds = ref([]); // 待删除学生 ID +function setDeleteIds({ + records, +}: { + records: Demo03StudentApi.Demo03Grade[]; +}) { + deleteIds.value = records.map((item) => item.id); +} + /** 导出表格 */ async function onExport() { const data = await exportDemo03Student(await gridApi.formApi.getValues()); @@ -143,20 +150,8 @@ const [Grid, gridApi] = useVbenVxeGrid({ cellClick: ({ row }: { row: Demo03StudentApi.Demo03Student }) => { selectDemo03Student.value = row; }, - checkboxAll: ({ - records, - }: { - records: Demo03StudentApi.Demo03Student[]; - }) => { - deleteIds.value = records.map((item) => item.id); - }, - checkboxChange: ({ - records, - }: { - records: Demo03StudentApi.Demo03Student[]; - }) => { - deleteIds.value = records.map((item) => item.id); - }, + checkboxAll: setDeleteIds, + checkboxChange: setDeleteIds, }, }); @@ -190,7 +185,7 @@ const [Grid, gridApi] = useVbenVxeGrid({ type="primary" danger class="ml-2" - :disabled="showDeleteBatchBtn" + :disabled="isEmpty(deleteIds)" @click="onDeleteBatch" v-access:code="['infra:demo03-student:delete']" > diff --git a/apps/web-antd/src/views/infra/demo/demo03/erp/modules/demo03-course-list.vue b/apps/web-antd/src/views/infra/demo/demo03/erp/modules/demo03-course-list.vue index 3d6eb4a18..1121d8ec1 100644 --- a/apps/web-antd/src/views/infra/demo/demo03/erp/modules/demo03-course-list.vue +++ b/apps/web-antd/src/views/infra/demo/demo03/erp/modules/demo03-course-list.vue @@ -5,7 +5,7 @@ import type { } from '#/adapter/vxe-table'; import type { Demo03StudentApi } from '#/api/infra/demo/demo03/erp'; -import { computed, h, nextTick, ref, watch } from 'vue'; +import { h, nextTick, ref, watch } from 'vue'; import { useVbenModal } from '@vben/common-ui'; import { Plus, Trash2 } from '@vben/icons'; @@ -66,15 +66,6 @@ async function onDelete(row: Demo03StudentApi.Demo03Course) { } } -const deleteIds = ref([]); // 待删除学生课程 ID -const showDeleteBatchBtn = computed(() => isEmpty(deleteIds.value)); -function setDeleteIds({ - records, -}: { - records: Demo03StudentApi.Demo03Course[]; -}) { - deleteIds.value = records.map((item) => item.id); -} /** 批量删除学生课程 */ async function onDeleteBatch() { const hideLoading = message.loading({ @@ -91,6 +82,15 @@ async function onDeleteBatch() { } } +const deleteIds = ref([]); // 待删除学生课程 ID +function setDeleteIds({ + records, +}: { + records: Demo03StudentApi.Demo03Course[]; +}) { + deleteIds.value = records.map((item) => item.id); +} + /** 表格操作按钮的回调函数 */ function onActionClick({ code, @@ -184,7 +184,7 @@ watch( type="primary" danger class="ml-2" - :disabled="showDeleteBatchBtn" + :disabled="isEmpty(deleteIds)" @click="onDeleteBatch" v-access:code="['infra:demo03-student:delete']" > diff --git a/apps/web-antd/src/views/infra/demo/demo03/erp/modules/demo03-grade-list.vue b/apps/web-antd/src/views/infra/demo/demo03/erp/modules/demo03-grade-list.vue index bf044b3db..cd4fd1428 100644 --- a/apps/web-antd/src/views/infra/demo/demo03/erp/modules/demo03-grade-list.vue +++ b/apps/web-antd/src/views/infra/demo/demo03/erp/modules/demo03-grade-list.vue @@ -5,7 +5,7 @@ import type { } from '#/adapter/vxe-table'; import type { Demo03StudentApi } from '#/api/infra/demo/demo03/erp'; -import { computed, h, nextTick, ref, watch } from 'vue'; +import { h, nextTick, ref, watch } from 'vue'; import { useVbenModal } from '@vben/common-ui'; import { Plus, Trash2 } from '@vben/icons'; @@ -66,15 +66,6 @@ async function onDelete(row: Demo03StudentApi.Demo03Grade) { } } -const deleteIds = ref([]); // 待删除学生班级 ID -const showDeleteBatchBtn = computed(() => isEmpty(deleteIds.value)); -function setDeleteIds({ - records, -}: { - records: Demo03StudentApi.Demo03Grade[]; -}) { - deleteIds.value = records.map((item) => item.id); -} /** 批量删除学生班级 */ async function onDeleteBatch() { const hideLoading = message.loading({ @@ -91,6 +82,15 @@ async function onDeleteBatch() { } } +const deleteIds = ref([]); // 待删除学生班级 ID +function setDeleteIds({ + records, +}: { + records: Demo03StudentApi.Demo03Grade[]; +}) { + deleteIds.value = records.map((item) => item.id); +} + /** 表格操作按钮的回调函数 */ function onActionClick({ code, @@ -184,7 +184,7 @@ watch( type="primary" danger class="ml-2" - :disabled="showDeleteBatchBtn" + :disabled="isEmpty(deleteIds)" @click="onDeleteBatch" v-access:code="['infra:demo03-student:delete']" > diff --git a/apps/web-antd/src/views/infra/demo/demo03/inner/data.ts b/apps/web-antd/src/views/infra/demo/demo03/inner/data.ts index 1c4077973..83096f607 100644 --- a/apps/web-antd/src/views/infra/demo/demo03/inner/data.ts +++ b/apps/web-antd/src/views/infra/demo/demo03/inner/data.ts @@ -151,7 +151,6 @@ export function useGridColumns( minWidth: 200, align: 'center', fixed: 'right', - headerAlign: 'center', showOverflow: false, cellRender: { attrs: { @@ -200,7 +199,7 @@ export function useDemo03CourseGridEditColumns( minWidth: 60, align: 'center', fixed: 'right', - headerAlign: 'center', + showOverflow: false, cellRender: { attrs: { diff --git a/apps/web-antd/src/views/infra/demo/demo03/inner/index.vue b/apps/web-antd/src/views/infra/demo/demo03/inner/index.vue index b8199fb6c..4e44b5834 100644 --- a/apps/web-antd/src/views/infra/demo/demo03/inner/index.vue +++ b/apps/web-antd/src/views/infra/demo/demo03/inner/index.vue @@ -5,7 +5,7 @@ import type { } from '#/adapter/vxe-table'; import type { Demo03StudentApi } from '#/api/infra/demo/demo03/inner'; -import { computed, h, ref } from 'vue'; +import { h, ref } from 'vue'; import { Page, useVbenModal } from '@vben/common-ui'; import { Download, Plus, Trash2 } from '@vben/icons'; @@ -66,15 +66,6 @@ async function onDelete(row: Demo03StudentApi.Demo03Student) { } } -const deleteIds = ref([]); // 待删除学生 ID -const showDeleteBatchBtn = computed(() => isEmpty(deleteIds.value)); -function setDeleteIds({ - records, -}: { - records: Demo03StudentApi.Demo03Student[]; -}) { - deleteIds.value = records.map((item) => item.id); -} /** 批量删除学生 */ async function onDeleteBatch() { const hideLoading = message.loading({ @@ -91,6 +82,15 @@ async function onDeleteBatch() { } } +const deleteIds = ref([]); // 待删除学生 ID +function setDeleteIds({ + records, +}: { + records: Demo03StudentApi.Demo03Student[]; +}) { + deleteIds.value = records.map((item) => item.id); +} + /** 导出表格 */ async function onExport() { const data = await exportDemo03Student(await gridApi.formApi.getValues()); @@ -190,7 +190,7 @@ const [Grid, gridApi] = useVbenVxeGrid({ type="primary" danger class="ml-2" - :disabled="showDeleteBatchBtn" + :disabled="isEmpty(deleteIds)" @click="onDeleteBatch" v-access:code="['infra:demo03-student:delete']" > diff --git a/apps/web-antd/src/views/infra/demo/demo03/normal/data.ts b/apps/web-antd/src/views/infra/demo/demo03/normal/data.ts index 532029bf5..fe2d4b7e1 100644 --- a/apps/web-antd/src/views/infra/demo/demo03/normal/data.ts +++ b/apps/web-antd/src/views/infra/demo/demo03/normal/data.ts @@ -150,7 +150,6 @@ export function useGridColumns( minWidth: 200, align: 'center', fixed: 'right', - headerAlign: 'center', showOverflow: false, cellRender: { attrs: { @@ -199,7 +198,7 @@ export function useDemo03CourseGridEditColumns( minWidth: 60, align: 'center', fixed: 'right', - headerAlign: 'center', + showOverflow: false, cellRender: { attrs: { diff --git a/apps/web-antd/src/views/infra/demo/demo03/normal/index.vue b/apps/web-antd/src/views/infra/demo/demo03/normal/index.vue index f4e2975c7..4696bf309 100644 --- a/apps/web-antd/src/views/infra/demo/demo03/normal/index.vue +++ b/apps/web-antd/src/views/infra/demo/demo03/normal/index.vue @@ -5,7 +5,7 @@ import type { } from '#/adapter/vxe-table'; import type { Demo03StudentApi } from '#/api/infra/demo/demo03/normal'; -import { computed, h, ref } from 'vue'; +import { h, ref } from 'vue'; import { Page, useVbenModal } from '@vben/common-ui'; import { Download, Plus, Trash2 } from '@vben/icons'; @@ -62,7 +62,6 @@ async function onDelete(row: Demo03StudentApi.Demo03Student) { } const deleteIds = ref([]); // 待删除学生 ID -const showDeleteBatchBtn = computed(() => isEmpty(deleteIds.value)); function setDeleteIds({ records, }: { @@ -174,7 +173,7 @@ const [Grid, gridApi] = useVbenVxeGrid({ type="primary" danger class="ml-2" - :disabled="showDeleteBatchBtn" + :disabled="isEmpty(deleteIds)" @click="onDeleteBatch" v-access:code="['infra:demo03-student:delete']" > diff --git a/apps/web-antd/src/views/system/social/user/index.vue b/apps/web-antd/src/views/system/social/user/index.vue index a81c93886..cf5337513 100644 --- a/apps/web-antd/src/views/system/social/user/index.vue +++ b/apps/web-antd/src/views/system/social/user/index.vue @@ -3,6 +3,7 @@ import type { VxeTableGridOptions } from '#/adapter/vxe-table'; import type { SystemSocialUserApi } from '#/api/system/social/user'; import { Page, useVbenModal } from '@vben/common-ui'; +import { $t } from '@vben/locales'; import { ACTION_ICON, TableAction, useVbenVxeGrid } from '#/adapter/vxe-table'; import { getSocialUserPage } from '#/api/system/social/user'; diff --git a/apps/web-ele/src/utils/dict.ts b/apps/web-ele/src/utils/dict.ts index ded8ea473..42cebd3d5 100644 --- a/apps/web-ele/src/utils/dict.ts +++ b/apps/web-ele/src/utils/dict.ts @@ -14,11 +14,11 @@ import { useDictStore } from '#/store'; type ColorType = 'error' | 'info' | 'success' | 'warning'; export interface DictDataType { - dictType: string; + dictType?: string; label: string; value: boolean | number | string; - colorType: ColorType; - cssClass: string; + colorType?: ColorType; + cssClass?: string; } export interface NumberDictDataType extends DictDataType { @@ -62,11 +62,10 @@ function getDictObj(dictType: string, value: any) { * @param valueType 字典值类型,默认 string 类型 * @returns 字典数组 */ -// TODO @puhui999:貌似可以定义一个类型?不使用 any[] function getDictOptions( dictType: string, valueType: 'boolean' | 'number' | 'string' = 'string', -): any[] { +): DictDataType[] { const dictStore = useDictStore(); const dictOpts = dictStore.getDictOptions(dictType); const dictOptions: DefaultOptionType = [];