Pārlūkot izejas kodu

chore(BasicTable): resolve BasicTable component ts type error

invalid w 1 gadu atpakaļ
vecāks
revīzija
7b87d6d29e

+ 5 - 5
src/components/Table/src/BasicTable.vue

@@ -21,7 +21,7 @@
       :rowClassName="getRowClassName"
       v-show="getEmptyDataIsShowTable"
       @change="handleTableChange"
-      @resizeColumn="setColumnWidth"
+      @resize-column="setColumnWidth"
     >
       <template #[item]="data" v-for="item in Object.keys($slots)" :key="item">
         <slot :name="item" v-bind="data || {}"></slot>
@@ -177,12 +177,12 @@
         emit,
       );
 
-      function handleTableChange(...args) {
-        onTableChange.call(undefined, ...args);
-        emit('change', ...args);
+      function handleTableChange(pagination: any, filters: any, sorter: any, extra: any) {
+        onTableChange(pagination, filters, sorter);
+        emit('change', pagination, filters, sorter);
         // 解决通过useTable注册onChange时不起作用的问题
         const { onChange } = unref(getProps);
-        onChange && isFunction(onChange) && onChange.call(undefined, ...args);
+        onChange && isFunction(onChange) && onChange(pagination, filters, sorter, extra);
       }
 
       const {

+ 7 - 6
src/components/Table/src/components/HeaderCell.vue

@@ -5,6 +5,7 @@
   import BasicHelp from '/@/components/Basic/src/BasicHelp.vue';
   import EditTableHeaderCell from './EditTableHeaderIcon.vue';
   import { useDesign } from '/@/hooks/web/useDesign';
+  import { ColumnType } from 'ant-design-vue/lib/table/interface';
 
   export default defineComponent({
     name: 'TableHeaderCell',
@@ -14,22 +15,22 @@
     },
     props: {
       column: {
-        type: Object as PropType<BasicColumn>,
+        type: Object as PropType<ColumnType<any>>,
         default: () => ({}),
       },
     },
     setup(props) {
       const { prefixCls } = useDesign('basic-table-header-cell');
 
-      const getIsEdit = computed(() => !!props.column?.edit);
+      const getIsEdit = computed(() => !!(props.column as BasicColumn)?.edit);
       const getTitle = computed(() => {
-        const column = props.column;
+        const column = props.column as BasicColumn;
         if (typeof column.customHeaderRender === 'function') {
-          return column.customHeaderRender(props.column);
+          return column.customHeaderRender(column);
         }
-        return props.column?.customTitle || props.column?.title;
+        return column?.customTitle || props.column?.title;
       });
-      const getHelpMessage = computed(() => props.column?.helpMessage);
+      const getHelpMessage = computed(() => (props.column as BasicColumn)?.helpMessage);
 
       return () => {
         return (

+ 2 - 1
src/components/Table/src/hooks/useColumns.ts

@@ -9,6 +9,7 @@ import { isArray, isBoolean, isFunction, isMap, isString } from '/@/utils/is';
 import { cloneDeep, isEqual } from 'lodash-es';
 import { formatToDate } from '/@/utils/dateUtil';
 import { ACTION_COLUMN_FLAG, DEFAULT_ALIGN, INDEX_COLUMN_FLAG, PAGE_SIZE } from '../const';
+import { ColumnType } from 'ant-design-vue/es/table';
 
 function handleItem(item: BasicColumn, ellipsis: boolean) {
   const { key, dataIndex, children } = item;
@@ -265,7 +266,7 @@ export function useColumns(
   /**
    * 拖拽列宽修改列的宽度
    */
-  function setColumnWidth(w: number, col: BasicColumn) {
+  function setColumnWidth(w: number, col: ColumnType<BasicColumn>) {
     col.width = w;
   }