el-plus-powerful-table
Version:
## [DOCS](https://peng-xiao-shuai.github.io/vite-vue-admin-docs/zh-CN/component_directive/component/powerful-table-doc.html)
1 lines • 23.2 kB
Source Map (JSON)
{"version":3,"file":"powerful-table-data.mjs","sources":["../../../packages/powerful-table/src/powerful-table-data.ts"],"sourcesContent":["import { ElMessage, ElMessageBox, useGlobalConfig } from 'element-plus/es'\nimport { deepClone, isTypeProtect } from '../../index'\nimport { PowerfulTableSymbol } from '../../keys'\nimport type { ElTable } from 'element-plus/es'\nimport type { FDatePicker, FInput, FSelect } from '../../filter'\nimport type { PropType } from 'vue'\nimport type {\n ComponentEvent,\n EmitEventType,\n EmitType,\n EventType,\n InjectProps,\n PowerfulTableData,\n PowerfulTableHeader,\n PowerfulTableHeaderProps,\n PowerfulTableProps,\n PowerfulTableStatesReturn,\n SetDataType,\n StateData,\n _TYPE,\n} from '~/index'\nimport { LangKey, t } from '~/locale/lang'\n// console.log(PTFDatePicker, PTFInput, PTFSelect)\n\nexport enum EmitEnum {\n BtnPlusChange = 'btn-plus-change',\n BtnPlusRefresh = 'btn-plus-refresh',\n BtnClick = 'btn-click',\n SizeChange = 'size-change',\n ComponentEvent = 'component-event',\n SortCustom = 'sort-custom',\n BatchOperate = 'batch-operate',\n Select = 'select',\n SelectionChange = 'selection-change',\n SelectAll = 'select-all',\n CellMouseEnter = 'cell-mouse-enter',\n CellMouseLeave = 'cell-mouse-leave',\n CellClick = 'cell-click',\n CellDblclick = 'cell-dblclick',\n CellContextmenu = 'cell-contextmenu',\n RowClick = 'row-click',\n RowContextmenu = 'row-contextmenu',\n RowDblclick = 'row-dblclick',\n HeaderClick = 'header-click',\n HeaderContextmenu = 'header-contextmenu',\n FilterChange = 'filter-change',\n CurrentChange = 'current-change',\n HeaderDragend = 'header-dragend',\n ExpandChange = 'expand-change',\n}\n\ntype DefaultRow = any\ntype TranslatePair = {\n [key: string]: string | string[] | TranslatePair\n}\n\nexport type FilterComponents = import('vue').Ref<\n InstanceType<typeof FSelect | typeof FInput | typeof FDatePicker>[] | null\n>\n\n// 主组件props\nexport const powerfulTableProps = {\n // 按钮组件配置数据\n btnConfig: {\n type: Object as PropType<PowerfulTableProps<DefaultRow>['btnConfig']>,\n default: undefined,\n },\n // 组件大小\n size: {\n type: String as PropType<PowerfulTableProps<DefaultRow>['size']>,\n default: '',\n validator: (val: string) => ['', 'default', 'small', 'large'].includes(val),\n },\n // 当前数据\n list: {\n type: Array as PropType<PowerfulTableProps<DefaultRow>['list']>,\n default: () => [],\n },\n // 所有选中\n selectData: {\n type: Array as PropType<PowerfulTableProps<DefaultRow>['list']>,\n default: () => {\n return []\n },\n },\n isSelect: {\n type: Boolean as PropType<PowerfulTableProps<DefaultRow>['isSelect']>,\n default: false,\n },\n selectable: {\n type: Function as PropType<PowerfulTableProps<DefaultRow>['selectable']>,\n default: undefined,\n },\n selectCompare: {\n type: Array as PropType<PowerfulTableProps<DefaultRow>['selectCompare']>,\n default: () => ['id', 'id'],\n },\n\n header: {\n type: Array as PropType<PowerfulTableProps<DefaultRow>['header']>,\n default: () => [],\n },\n\n paginationProperty: {\n type: Object as PropType<\n PowerfulTableProps<DefaultRow>['paginationProperty']\n >,\n default: () => ({}),\n },\n\n // 批量操作\n operateData: {\n type: Object as PropType<PowerfulTableProps<DefaultRow>['operateData']>,\n default: () => [{}],\n },\n isPagination: {\n type: Boolean,\n default: true,\n },\n tree: {\n type: Object as PropType<PowerfulTableProps<DefaultRow>['tree']>,\n default: () => ({\n props: {\n children: 'children',\n hasChildren: 'hasChildren',\n },\n }),\n },\n property: {\n type: Object as PropType<PowerfulTableProps<DefaultRow>['property']>,\n default: () => ({}),\n },\n\n listRequest: {\n type: Object as PropType<PowerfulTableProps<DefaultRow>['listRequest']>,\n default: undefined,\n },\n}\n\nexport const powerfulTableComponentProp = {\n row: {\n type: Object as PropType<DefaultRow>,\n default: () => [{}],\n },\n index: {\n type: Number as PropType<number>,\n },\n aligning: {\n type: String as PropType<'left' | 'center' | 'right'>,\n default: 'center',\n },\n}\n\n// 对部分支持函数的 data 参数进行判断返回\nexport const isData = <T, R>(e: T, data?: R | ((e: T) => R)) => {\n return isTypeProtect<typeof data, R>(\n data,\n (pet) => typeof (<R>pet) != 'function'\n )\n ? data\n : data!(e || ({ row: {}, index: undefined, props: {} } as T))\n}\n\n// 对部分支持函数的 property 参数进行判断返回\nexport const isProperty = <T, R>(e: T, property?: R | ((e: T) => R)) => {\n return isTypeProtect<typeof property, R>(\n property,\n (pet) => typeof (<R>pet) != 'function'\n )\n ? property\n : property!(e || ({ row: {}, index: undefined, props: {} } as T))\n}\n\n// 附属组件自定义事件抛出\nexport const useREmit = <T extends EventType>(\n emit: (s: 'component-emit', event: ComponentEvent, ...arg: any) => void,\n componentName: EventType | 'filter',\n props: {\n row: any\n index: number\n props: PowerfulTableHeaderProps\n }\n) => {\n const REmit = (eventType: string, ...arg: any) => {\n emit(\n 'component-emit',\n {\n componentName,\n eventType,\n ...props,\n },\n ...arg\n )\n }\n\n const event = (eventType: keyof NonNullable<_TYPE[T]['on']>, ...arg: any) => {\n const data = isData(\n { row: props.row, index: props.index!, props: props.props },\n props.props.data\n ) as _TYPE[EventType]\n if (typeof data?.on == 'object') {\n ;(data?.on as { [key: string]: any })?.[eventType as string]?.(\n { ...props },\n ...arg\n )\n }\n }\n\n return {\n REmit,\n event,\n }\n}\n\nexport const usePowerfulTableStates = <L>(\n props: PowerfulTableProps<L>\n): PowerfulTableStatesReturn<L> => {\n // 全局此组件注入的数据\n const injectProps = inject(PowerfulTableSymbol, {})\n\n /* ----- 组件实例 ----- */\n const multipleTable = ref<InstanceType<typeof ElTable> | null>(null)\n const filterComponents: FilterComponents = ref(null)\n\n /* ------ 表格数据 ------ */\n const powerfulTableData: PowerfulTableData<L> = reactive({\n listLoading: true, //页面是否加载中\n develop: [], // 展开\n currentPage: 1, // 当前页\n pageSize: props.paginationProperty?.pageSizes\n ? props.paginationProperty?.pageSizes[0]\n : 10, //一页多少条\n currentSelect: [], // 当前页选中\n otherSelect: [], // 其他页选中\n // 存储 watch 返回\n watchCache: [],\n operate: {\n // 承载props的operateData\n value: undefined,\n disabled: false,\n icon: '',\n prop: 'id',\n style: undefined,\n operates: [],\n },\n\n total: props.paginationProperty?.total || 0,\n })\n\n // 组件参数\n const stateData: StateData<L> = reactive({\n tableLists: [],\n isPC: true,\n isTable: true,\n })\n\n // 为表格数据重新赋值。listApi 存在时 tableLists 由 useInitiateListRequest 函数中处理\n if (typeof props.listRequest?.listApi !== 'function') {\n powerfulTableData.watchCache.push(\n watch(\n () => props.list as L[],\n (newList) => {\n stateData.tableLists = newList || []\n },\n { immediate: true, deep: true }\n )\n )\n }\n\n onBeforeUnmount(() => {\n // 清除监听事件\n powerfulTableData.watchCache.forEach((item) => item())\n })\n\n return {\n Size: props.size || useGlobalConfig()?.value?.size || 'default',\n multipleTable,\n filterComponents,\n powerfulTableData,\n injectProps,\n stateData,\n }\n}\n\nexport const useFunction = <L>(\n emit: EmitEventType<L>,\n powerfulTableData: PowerfulTableData<L>\n) => {\n const { proxy } = getCurrentInstance() as any\n\n /**\n * 排序方法\n * @param obj https://element-plus.gitee.io/zh-CN/component/table.html#table-%E4%BA%8B%E4%BB%B6 sort-change事件\n */\n const sortChange = (obj: { column: any; prop: string; order: string }) => {\n if (Object.keys(obj.column || {}).length) {\n if (obj.column.sortable == 'custom') {\n emit(EmitEnum.SortCustom, obj)\n }\n }\n }\n\n /**\n * 批量按钮\n * @returns\n */\n const batchOperate = () => {\n // console.log(powerfulTableData.operate)\n if (\n (powerfulTableData.operate == undefined ||\n powerfulTableData.operate == null) &&\n powerfulTableData.operate !== 0\n ) {\n ElMessage.warning(t(LangKey.SelectOperateType))\n return\n }\n\n if (powerfulTableData.currentSelect.length == 0) {\n ElMessage.warning(t(LangKey.SelectOperateData))\n return\n }\n const currentItem = powerfulTableData.operate.operates.find(\n (item) => item.value == powerfulTableData.operate.value\n )\n\n ElMessageBox.confirm(\n t<(s: string) => string>(LangKey.BatchOperate)(currentItem!.label),\n t(LangKey.Hint),\n {\n confirmButtonText: t(LangKey.Confirm),\n cancelButtonText: t(LangKey.Cancel),\n type: 'warning',\n }\n )\n .then(() => {\n const ids = powerfulTableData.otherSelect\n .concat(powerfulTableData.currentSelect)\n .map((item) => {\n return (item as { [s: string]: string })[\n powerfulTableData.operate.prop || 'id'\n ]\n })\n const rows = powerfulTableData.otherSelect\n .concat(powerfulTableData.currentSelect)\n .map((item) => item)\n\n emit(EmitEnum.BatchOperate, {\n ids,\n item: currentItem,\n rows,\n })\n })\n .catch(() => {\n // console.log('取消批量操作')\n })\n }\n\n const returnEmit = (emitName: Extract<EmitType, 'btn-click'>, arg: any) => {\n switch (emitName) {\n case 'btn-click':\n emit(EmitEnum.BtnClick, arg)\n break\n }\n }\n\n /**\n * 将附属组件(components/src 目录下的文件)中el的事件抛出\n */\n const componentEmit = (e: ComponentEvent, ...arg: any) => {\n emit(EmitEnum.ComponentEvent, e, ...arg)\n }\n\n /* ------ 回调到组件上 ------ */\n const get = () => {\n const params = {\n pageNum: powerfulTableData.currentPage,\n pageSize: powerfulTableData.pageSize,\n }\n\n try {\n // 如果父组件是getList方法 无需自定义事件\n proxy.$parent._getList({\n params,\n select: powerfulTableData.otherSelect.concat(\n powerfulTableData.currentSelect\n ),\n })\n } catch {\n emit(EmitEnum.SizeChange, {\n params,\n select: powerfulTableData.otherSelect.concat(\n powerfulTableData.currentSelect\n ),\n })\n }\n }\n\n /**\n * 添加选中\n * @param e\n */\n const handleSelectionChange = (e: L[]) => {\n powerfulTableData.currentSelect = deepClone(e)\n emit(EmitEnum.SelectionChange, e)\n }\n\n /**\n * 匹配组件\n * @param {string} type 类型\n * @returns 组件名称\n */\n const matchComponents = (type: Exclude<keyof _TYPE, 'text' | 'slot'>) => {\n return {\n image: 'PTImage',\n btn: 'PTButton',\n switch: 'PTSwitch',\n input: 'PTInput',\n textarea: 'PTInput',\n iconfont: 'PTIcon',\n tag: 'PTTags',\n rate: 'PTRate',\n href: 'PTLink',\n video: 'PTVideo',\n }[type]\n }\n\n return {\n handleSelectionChange,\n returnEmit,\n componentEmit,\n sortChange,\n batchOperate,\n get,\n matchComponents,\n bindAttr(\n prop: PowerfulTableHeaderProps<L>,\n scope: { $index: number; row: L },\n item: PowerfulTableHeader<L>\n ): {\n row: L\n index: number\n prop: PowerfulTableHeaderProps<L>\n aligning: 'left' | 'center' | 'right'\n } {\n return {\n row: scope.row,\n index: scope.$index,\n prop,\n aligning:\n (item.property?.align as 'left' | 'right' | 'center') ||\n item.headerAlign ||\n 'center',\n }\n },\n }\n}\n\nexport const useInitiateListRequest = <L>(\n powerfulTableData: PowerfulTableData<L>,\n props: PowerfulTableProps<L>,\n injectProps: InjectProps,\n stateData: StateData<L>\n) => {\n const resolution = (data: object, key: string) => {\n const keys = key.split('.')\n let rtn: { [s: string]: any } = data\n keys.forEach((key) => {\n rtn = rtn[key]\n })\n\n return rtn\n }\n // 重置列表,将pageNo 改为 1,其余条件不变\n let resetList: (params?: object) => void\n\n // 发起请求\n let getListData: (params?: object) => void\n\n if (typeof props.listRequest?.listApi === 'function') {\n getListData = (params: object = {}) => {\n // 获取 key 值\n const [pageNoKey, pageSizeKey, responseKey, totalKey, listsKey] = [\n props.listRequest?.pageNoKey ||\n injectProps.listRequest?.pageNoKey ||\n 'pageNo',\n props.listRequest?.pageSizeKey ||\n injectProps.listRequest?.pageSizeKey ||\n 'pageSize',\n typeof props.listRequest?.responseKey === 'undefined'\n ? typeof injectProps.listRequest?.responseKey === 'undefined'\n ? 'data.result'\n : injectProps.listRequest?.responseKey\n : props.listRequest?.responseKey,\n props.listRequest?.totalKey ||\n injectProps.listRequest?.totalKey ||\n 'total',\n props.listRequest?.listsKey ||\n injectProps.listRequest?.listsKey ||\n 'rows',\n ]\n\n props.listRequest\n ?.listApi({\n ...(props.listRequest.listQuery || {}),\n ...params,\n [pageNoKey]: powerfulTableData.currentPage,\n [pageSizeKey]: powerfulTableData.pageSize,\n })\n .then((res: any) => {\n const response = responseKey ? resolution(res, responseKey) : res\n stateData.tableLists = response[listsKey]\n powerfulTableData.total = Number(response[totalKey])\n })\n }\n\n resetList = (params: object = {}) => {\n powerfulTableData.currentPage = 1\n\n getListData(params)\n }\n\n getListData()\n\n return {\n resetList,\n getListData,\n }\n }\n\n return {\n resetList: undefined,\n getListData: undefined,\n }\n}\n\nexport type { StateData, PowerfulTableData, PowerfulTableProps, TranslatePair }\n"],"names":["useGlobalConfig","ElMessage","ElMessageBox","isTypeProtect","deepClone","PowerfulTableSymbol","t","inject","ref","reactive","watch","onBeforeUnmount","getCurrentInstance","LangKey","EmitEnum","powerfulTableProps","val","powerfulTableComponentProp","isData","data","pet","isProperty","property","useREmit","emit","componentName","props","eventType","arg","_a","_b","usePowerfulTableStates","_c","_d","_e","_f","injectProps","multipleTable","filterComponents","powerfulTableData","stateData","newList","item","useFunction","proxy","e","emitName","obj","currentItem","ids","rows","params","type","prop","scope","useInitiateListRequest","resolution","key","keys","rtn","resetList","getListData","_g","_h","_i","_j","_k","_l","_m","pageNoKey","pageSizeKey","responseKey","totalKey","listsKey","res","response"],"mappings":"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"}