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 kB
Source Map (JSON)
{"version":3,"file":"useDataRequest.cjs","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","is","get","_c","_d","useDataRequest","props$1","emit","sortableData","vue","ctx","searchByCustom","resetByCustom","changePaginationByCustom","middleFormData","isUseFormDataStorage","middlePagination","useCrudConfig","tableColumns","isShowDialog","rowData","currentMode","isShowDrawer","refreshAfterRequest","useTableColumns","getTableData","attrs","isRequest","isLoading","val","tableData","tableProps","pick","props","data","payload","params","getParams","setPaginationData","handleReset","tableRef","handleSearch","handleKeyDown","e","handlePaginationChange","pagination","handleRadioChange","selection","handleSortChange","column","prop","order","initTableData","beforeData","afterData","handleExport","exportData"],"mappings":"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"}