ideaz-element
Version:
<p align="center"> <a href="" target="_blank" rel="noopener noreferrer"> <img src="./docs/public/logo.svg" alt="Ideaz Element" width="180" style="width: 180px;" /> </a> </p>
1 lines • 12.4 kB
Source Map (JSON)
{"version":3,"file":"useDataRequest.mjs","sources":["../../../../../../packages/element/crud/src/hooks/useDataRequest.ts"],"sourcesContent":["import { get, pick } from 'lodash-unified'\nimport { isFunction, isObject, isString } from '@ideaz/utils'\nimport type { ElTable } from 'element-plus'\nimport type { ComponentInternalInstance } from 'vue'\nimport { FILTER_TABLE_KEYS, tableKeys } from '../props'\nimport type { CrudProps, RequestConfig } from '../props'\nimport type { Pagination } from '../../../types'\nimport { useCrudConfig } from './useCrudConfig'\nimport { useTableColumns } from './useTableColumns'\n\nexport function stringifyObject(obj: any) {\n const keyValuePairs = []\n\n for (const key in obj) {\n if (Object.hasOwnProperty.call(obj, key)) {\n const value = encodeURIComponent(obj[key])\n const pair = `${key}=${value}`\n keyValuePairs.push(pair)\n }\n }\n\n return keyValuePairs.join('&')\n}\n\nfunction getAliasData(res: any, req: RequestConfig) {\n const list = req?.alias?.list\n const total = req?.alias?.total\n return {\n list: isFunction(list) ? list(res) : isString(list) ? get(res, list) : res?.data?.list,\n total: isFunction(total) ? total(res) : isString(total) ? get(res, total) : res?.data?.total,\n }\n}\n\nexport function useDataRequest(props: CrudProps, emit: any) {\n const sortableData = ref<any>({})\n const { proxy: ctx } = getCurrentInstance() as ComponentInternalInstance\n const {\n handleSearch: searchByCustom,\n handleReset: resetByCustom,\n handlePaginationChange: changePaginationByCustom,\n middleFormData,\n isUseFormDataStorage,\n middlePagination,\n } = useCrudConfig(props, emit)\n const { tableColumns, isShowDialog, rowData, currentMode, isShowDrawer, refreshAfterRequest } = useTableColumns(props, emit, getTableData)\n const attrs = useAttrs()\n\n const isRequest = () => {\n return (\n isObject(props.request)\n || isString(props.request)\n || isFunction(props.request)\n )\n }\n\n const isLoading = computed({\n get() {\n return props.loading || false\n },\n set(val) {\n emit('update:loading', val)\n },\n })\n\n const tableData = computed<any>({\n get() {\n return props.data\n },\n set(val) {\n emit('update:data', val)\n },\n })\n\n const tableProps = computed<any>(() => {\n return {\n ...pick(props, tableKeys.filter(key => !FILTER_TABLE_KEYS.includes(key))),\n 'columns': tableColumns.value,\n ...attrs,\n 'fullScreenElement': () => ctx?.$refs.crudRef,\n 'pagination': middlePagination.value,\n 'data': tableData.value,\n 'loading': isLoading.value,\n 'onUpdate:data': (data: any) => tableData.value = data,\n }\n })\n\n async function getTableData(payload?: { column: any, prop: string, order: string }) {\n const req = props.request || {}\n const params = getParams(payload)\n if (isObject(req) && isFunction(req.searchFunc)) {\n req.searchFunc({ params })\n return\n }\n isLoading.value = true\n try {\n let res = null\n if (isFunction(req))\n res = await req(params)\n\n if (isObject(req) && isFunction(req.searchApi))\n res = await req.searchApi(params)\n\n tableData.value = isFunction(req.tableData) ? req.tableData(getAliasData(res, req).list) : getAliasData(res, req).list\n\n if (props.pagination !== false)\n setPaginationData({ total: Number(getAliasData(res, req).total) })\n\n isLoading.value = false\n return res\n }\n catch (error) {\n isLoading.value = false\n }\n }\n\n function getParams(payload?: { column: any, prop: string, order: string }) {\n const params = {\n ...props.formData,\n ...payload,\n ...sortableData.value,\n }\n if (props.pagination !== false) {\n params.page = middlePagination.value.page\n params.pageSize = middlePagination.value.pageSize\n }\n return params\n }\n\n function handleReset() {\n resetByCustom()\n if (isRequest()) {\n const tableRef = ctx!.$refs.zTableRef as typeof ElTable\n tableRef.clearSelection()\n tableRef.clearSort()\n tableRef.clearFilter()\n setPaginationData({ page: 1 })\n getTableData()\n }\n }\n\n const handleSearch = () => {\n searchByCustom()\n if (isRequest()) {\n setPaginationData({ page: 1 })\n getTableData()\n }\n }\n\n const handleKeyDown = (e: KeyboardEvent) => {\n e.preventDefault()\n handleSearch()\n }\n\n const handlePaginationChange = (val: { page: number, pageSize: number }) => {\n changePaginationByCustom(val)\n if (isRequest()) {\n setPaginationData(val)\n getTableData()\n }\n }\n\n function setPaginationData(data: Pagination) {\n const pagination: Pagination = { ...middlePagination.value }\n Object.keys(data).forEach((key) => {\n if (Object.hasOwnProperty.call(middlePagination.value, key))\n (pagination[key as keyof typeof pagination] as Pagination) = data[key as keyof typeof pagination] as Pagination\n })\n middlePagination.value = pagination\n // if (isUsePaginationStorage.value)\n // updateTableProPagination(middlePagination.value)\n\n return { ...middlePagination.value }\n }\n\n const handleRadioChange = (selection: any) => {\n emit('radio-change', selection)\n }\n\n const handleSortChange = ({ column, prop, order }: { column: any, prop: string, order: string }) => {\n if (order)\n sortableData.value = { sort: { column, prop, order } }\n\n else\n sortableData.value = {}\n\n emit('sort-change', { column, prop, order })\n if (isRequest())\n getTableData(sortableData.value)\n }\n\n const initTableData = async () => {\n try {\n const beforeData = props.request?.beforeData\n const afterData = props.request?.afterData\n if (isFunction(beforeData))\n await beforeData()\n\n const res = await getTableData()\n if (isFunction(afterData))\n await afterData(res)\n }\n catch (error) {\n\n }\n }\n\n const handleExport = () => {\n const exportData = props.export\n const params = stringifyObject(getParams())\n if (isString(exportData))\n window.location.href = `${exportData}?${params}`\n\n if (isFunction(exportData))\n window.location.href = exportData(getParams())\n }\n\n if (!isUseFormDataStorage.value && isRequest())\n initTableData()\n\n onMounted(async () => {\n await nextTick()\n if (isUseFormDataStorage.value && isRequest())\n initTableData()\n })\n\n return {\n handleSearch,\n tableProps,\n handleReset,\n handleKeyDown,\n handlePaginationChange,\n handleSortChange,\n middleFormData,\n isUseFormDataStorage,\n handleRadioChange,\n handleExport,\n getTableData,\n isShowDialog,\n rowData,\n currentMode,\n isShowDrawer,\n refreshAfterRequest,\n }\n}\n"],"names":["stringifyObject","obj","keyValuePairs","key","value","pair","getAliasData","res","req","list","_a","total","_b","isFunction","isString","get","_c","_d","useDataRequest","props","emit","sortableData","ref","ctx","getCurrentInstance","searchByCustom","resetByCustom","changePaginationByCustom","middleFormData","isUseFormDataStorage","middlePagination","useCrudConfig","tableColumns","isShowDialog","rowData","currentMode","isShowDrawer","refreshAfterRequest","useTableColumns","getTableData","attrs","useAttrs","isRequest","isObject","isLoading","computed","val","tableData","tableProps","pick","tableKeys","FILTER_TABLE_KEYS","data","payload","params","getParams","setPaginationData","handleReset","tableRef","handleSearch","handleKeyDown","e","handlePaginationChange","pagination","handleRadioChange","selection","handleSortChange","column","prop","order","initTableData","beforeData","afterData","handleExport","exportData","onMounted","nextTick"],"mappings":"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"}