Newer
Older
dxCard-admin / src / components / jeecg / JVxeTable / src / hooks / useData.ts
YFJ on 23 Sep 3 KB 项目推送
import { ref, reactive, provide, resolveComponent } from 'vue';
import { useDesign } from '/@/hooks/web/useDesign';
import { JVxeDataProps, JVxeRefs, JVxeTableProps } from '../types';
import { VxeGridInstance } from 'vxe-table';
import { randomString } from '/@/utils/common/compUtils';

export function useData(props: JVxeTableProps): JVxeDataProps {
  const { prefixCls } = useDesign('j-vxe-table');
  provide('prefixCls', prefixCls);
  return {
    prefixCls: prefixCls,
    caseId: `j-vxe-${randomString(8)}`,
    vxeDataSource: ref([]),
    scroll: reactive({ top: 0, left: 0 }),
    scrolling: ref(false),
    defaultVxeProps: reactive({
      // update-begin--author:liaozhiyang---date:20240607---for:【TV360X-327】vxetable警告
      // rowId: props.rowKey,
      rowConfig: {
        keyField: props.rowKey,
        // 高亮hover的行
        isHover: true,
      },
      // update-end--author:liaozhiyang---date:20240607---for:【TV360X-327】vxetable警告

      // --- 【issues/209】自带的tooltip会错位,所以替换成原生的title ---
      // 溢出隐藏并显示tooltip
      showOverflow: "title",
      // 表头溢出隐藏并显示tooltip
      showHeaderOverflow: "title",
      // --- 【issues/209】自带的tooltip会错位,所以替换成原生的title ---

      showFooterOverflow: true,
      // 可编辑配置
      editConfig: {
        trigger: 'click',
        mode: 'cell',
        // update-begin--author:liaozhiyang---date:20231013---for:【QQYUN-5133】JVxeTable 行编辑升级
        //activeMethod: () => !props.disabled,
        beforeEditMethod: () => !props.disabled,
        // update-end--author:liaozhiyang---date:20231013---for:【QQYUN-5133】JVxeTable 行编辑升级
      },
      expandConfig: {
        iconClose: 'vxe-icon-arrow-right',
        iconOpen: 'vxe-icon-arrow-down',
        ...props.expandConfig,
      },
      // 虚拟滚动配置,y轴大于xx条数据时启用虚拟滚动
      scrollY: {
        gt: 30,
      },
      scrollX: {
        gt: 20,
        // 暂时关闭左右虚拟滚动
        enabled: false,
      },
      radioConfig: {
        // 保留勾选状态
        reserve: true,
        highlight: true,
      },
      checkboxConfig: {
        // 保留勾选状态
        reserve: true,
        highlight: true,
      },
      mouseConfig: { selected: false },
      keyboardConfig: {
        // 删除键功能
        isDel: false,
        // Esc键关闭编辑功能
        isEsc: true,
        // Tab 键功能
        isTab: true,
        // 任意键进入编辑(功能键除外)
        isEdit: true,
        // 方向键功能
        isArrow: true,
        // 回车键功能
        isEnter: true,
        // 如果功能被支持,用于 column.type=checkbox|radio,开启空格键切换复选框或单选框状态功能
        isChecked: true,
      },
    }),
    selectedRows: ref<any[]>([]),
    selectedRowIds: ref<string[]>([]),
    disabledRowIds: [],
    statistics: reactive({
      has: false,
      sum: [],
      average: [],
    }),
    authsMap: ref(null),
    innerEditRules: {},
    innerLinkageConfig: new Map<string, any>(),
    reloadEffectRowKeysMap: reactive({}),
  };
}

export function useRefs(): JVxeRefs {
  return {
    gridRef: ref<VxeGridInstance>(),
    subPopoverRef: ref<any>(),
    detailsModalRef: ref<any>(),
  };
}

export function useResolveComponent(...t: any[]): any {
  // @ts-ignore
  return resolveComponent(...t);
}