UNPKG

tav-ui

Version:
1 lines 28 kB
{"version":3,"file":"useProps2.mjs","sources":["../../../../../../../../packages/components/table-pro/src/hooks/useProps.ts"],"sourcesContent":["// import { deepMerge } from '@tav-ui/utils/basic'\n// import { cloneDeep, pick } from 'lodash-es'\nimport { computed, unref } from 'vue'\nimport { cloneDeep } from 'lodash-es'\nimport { isFunction, isObject } from '@tav-ui/utils/is'\nimport { PAGE_SIZE } from '../const'\nimport type { ComputedRef, Ref } from 'vue'\nimport type { TableProGridEmit, TableProInstance, TableProProps } from '../types'\nimport type { TableProApiParams, VxeQueryParams } from '../typings'\nimport type { Emitter } from '@tav-ui/utils/mitt'\n\nconst DEF = {\n data: {\n result: [],\n },\n}\n\nfunction getPropByPath(obj: Record<string, any>, path: string, strict = false) {\n let tempObj = obj\n path = path.replace(/\\[(\\w+)\\]/g, '.$1')\n path = path.replace(/^\\./, '')\n\n const keyArr = path.split('.')\n let i = 0\n for (let len = keyArr.length; i < len - 1; ++i) {\n if (!tempObj && !strict) break\n const key = keyArr[i]\n if (key in tempObj) {\n tempObj = tempObj[key]\n } else {\n if (strict) {\n console.log(`please transfer a valid prop path to form item!`)\n }\n break\n }\n }\n return {\n o: tempObj,\n k: keyArr[i],\n v: tempObj ? tempObj[keyArr[i]] : null,\n }\n}\n\nfunction deepSet(obj: any, path: string, val: any) {\n //@ts-ignore\n path = path.replaceAll('[', '.[')\n const keys = path.split('.')\n\n for (let i = 0; i < keys.length; i++) {\n let currentKey = keys[i] as any\n let nextKey = keys[i + 1] as any\n if (currentKey.includes('[')) {\n currentKey = parseInt(currentKey.substring(1, currentKey.length - 1))\n }\n if (nextKey && nextKey.includes('[')) {\n nextKey = parseInt(nextKey.substring(1, nextKey.length - 1))\n }\n\n if (typeof nextKey !== 'undefined') {\n obj[currentKey] = obj[currentKey] ? obj[currentKey] : isNaN(nextKey) ? {} : []\n } else {\n obj[currentKey] = val\n }\n\n obj = obj[currentKey]\n }\n}\n\n/**\n * 根据 props api 扩展 proxyconfig\n * @param tablePropsRef\n * @returns\n */\nfunction handleExtendProxyConfig(tablePropsRef: ComputedRef<TableProProps>) {\n const { apiSetting, proxyConfig, api } = unref(tablePropsRef)\n const hasApi = api && isFunction(api)\n if (hasApi) {\n const hasApiSetting = Object.keys(apiSetting).length > 0\n const hasProxyConfigProps = proxyConfig?.props && Object.keys(proxyConfig?.props).length > 0\n if (hasApiSetting) {\n const props = {\n list: apiSetting.listField ? `data.${apiSetting.listField}` : 'data',\n result: apiSetting.listField ? `data.${apiSetting.listField}` : 'data',\n total: apiSetting.totalField ? `data.${apiSetting.totalField}` : 'data',\n }\n if (!hasProxyConfigProps) {\n unref(tablePropsRef).proxyConfig = { props }\n }\n }\n }\n\n return tablePropsRef\n}\n\n/**\n * 根据 props api/beforeapi/afterapi 扩展 proxyconfig\n * @param tablePropsRef\n * @param emit\n * @returns\n */\nfunction handleExtendApi(\n tablePropsRef: ComputedRef<TableProProps>,\n tableRef: Ref<TableProInstance | null>,\n emit: TableProGridEmit,\n tableEmitter: Emitter\n) {\n const { api, beforeApi, afterApi, customActionConfig, apiSetting, permission, apiType } =\n unref(tablePropsRef)\n const permissionApi = (permission as any)?.apiPermissionData ?? undefined\n const permissionApiParams = (permission as any)?.apiParams ?? undefined\n const hasApi = (permissionApi && isFunction(permissionApi)) || (api && isFunction(api))\n const hasExportAllApi =\n customActionConfig && customActionConfig.export && isObject(customActionConfig.export)\n\n /** 处理 vxetable proxy */\n if (hasApi) {\n // 要使用beforequery则query必须存在\n unref(tablePropsRef).proxyConfig!['ajax'] = {\n query: () => Promise.resolve({}),\n }\n\n // 缓存api option\n let params: TableProApiParams & { [key: string]: any } = {\n filter: permissionApiParams?.body?.filter ?? {},\n model: permissionApiParams?.body?.model ?? {},\n }\n let result: Record<string, any> = {}\n\n // 挂载vxetable 导出全部接口\n if (hasExportAllApi) {\n unref(tablePropsRef).proxyConfig!['ajax']!['queryAll'] = async (refParam) => {\n const keepedApiParamKeys = (customActionConfig.export as any).keepedApiParamKeys ?? []\n const isPermissionApi = permissionApi && permissionApiParams\n let _api = api\n if (isPermissionApi) {\n _api = permissionApi\n params = {\n ...permissionApiParams,\n ...((params.body?.filter ?? params.filter) && (params.body?.model ?? params.model)\n ? {\n body:\n apiType === 'list'\n ? {\n ...(params.body?.filter ?? params.filter ?? {}),\n ...{\n ...(params.body?.model ?? params.model ?? {}),\n viewAll: true,\n modeType: refParam?.options?.modeType,\n },\n }\n : {\n filter: params.body?.filter ?? params.filter ?? {},\n model: {\n ...(params.body?.model ?? params.model ?? {}),\n viewAll: true,\n modeType: refParam?.options?.modeType,\n },\n },\n }\n : {}),\n }\n } else {\n if (apiType === 'list') {\n params = {\n ...params,\n ...(params.model\n ? {\n model: {\n ...params.model,\n viewAll: true,\n modeType: refParam?.options?.modeType,\n },\n }\n : {\n viewAll: true,\n modeType: refParam?.options?.modeType,\n }),\n }\n } else {\n params = {\n filter: params.filter ?? {},\n model: {\n ...(params.model ?? {}),\n viewAll: true,\n modeType: refParam?.options?.modeType,\n },\n }\n }\n }\n\n const allParamsFilter: Record<string, any> = {}\n const isModeTypeAll = (params.body?.model ?? params.model ?? params)!['modeType'] === 'all'\n\n if (isModeTypeAll) {\n keepedApiParamKeys.length &&\n keepedApiParamKeys.forEach((key: string) => {\n const { v } = getPropByPath(params, key)\n if (v) {\n deepSet(allParamsFilter, key, v)\n }\n })\n }\n\n let exportResult: Record<string, any> = {}\n const apiResult = await _api?.(\n isModeTypeAll\n ? params.body\n ? {\n ...allParamsFilter,\n body: {\n filter: allParamsFilter.body?.filter ?? {},\n model: params.body.model,\n },\n }\n : params.filter || params.model\n ? {\n filter: allParamsFilter.filter ?? {},\n model: params.model ?? {},\n }\n : {\n viewAll: true,\n modeType: refParam?.options?.modeType,\n }\n : params\n )\n if (apiResult.data && apiResult.success) {\n exportResult = apiResult\n\n if (\n (customActionConfig.export as any).afterApi &&\n isFunction((customActionConfig.export as any).afterApi)\n ) {\n exportResult =\n (await (customActionConfig.export as any).afterApi(apiResult)) || exportResult\n }\n\n // list 数据这里自动转换\n if (apiType === 'list') {\n exportResult = {\n data: {\n [apiSetting.listField!]: exportResult.data,\n [apiSetting.totalField!]: exportResult.data.length,\n },\n }\n }\n }\n\n return exportResult\n }\n }\n\n // 关闭自动加载,自动加载使用commit失效\n unref(tablePropsRef).proxyConfig!['autoLoad'] = false\n\n // 劫持proxy触发beforeapi修改参数\n unref(tablePropsRef).proxyConfig!['beforeQuery'] = async (\n vxeOption: VxeQueryParams,\n option: TableProApiParams\n ) => {\n const {\n page: { currentPage = 1, pageSize = PAGE_SIZE },\n } = vxeOption\n const model = {\n page: currentPage,\n limit: pageSize,\n }\n\n // model 中的值已vxetable计算的为准,其他值已传入为准,reload 传入 model 后,要对vxetable的model进行合并\n params = option\n ? option.model\n ? { ...option, ...{ model: { ...model, ...option.model } }, ...option.model }\n : { ...option, ...{ model } }\n : { ...(params?.body ?? params), ...{ model } }\n\n try {\n if (beforeApi && isFunction(beforeApi)) {\n params = (await beforeApi(params)) || params\n }\n\n let _api = api\n\n // 跟 @hyb 商量后只对 permission api 做 list 参数兼容,对于普通 api 参数还是沿用之前分页的数据结构,这样做单纯是为了兼容,因为投管/其他项目里用的地方很多改起来太费劲\n if (permissionApi && permissionApiParams) {\n _api = permissionApi\n params = {\n ...permissionApiParams,\n ...((params.filter ?? {}) && (params.model ?? {})\n ? {\n body:\n apiType === 'list'\n ? {\n ...(params.filter ?? params),\n ...(params.model ?? params),\n }\n : {\n filter: params.filter ?? {},\n model: params.model ?? {},\n },\n }\n : {}),\n }\n }\n\n if (_api && isFunction(_api)) {\n // eslint-disable-next-line no-console\n console.log('hijack table pro api 😂')\n\n const apiResult = await _api(params)\n\n if (apiResult.data && apiResult.success) {\n result = apiResult\n\n if (afterApi && isFunction(afterApi)) {\n result = (await afterApi(result)) || result\n }\n\n // list 数据这里自动转换\n if (apiType === 'list') {\n result = {\n data: {\n [apiSetting.listField!]: result.data,\n [apiSetting.totalField!]: result.data.length,\n },\n }\n }\n } else {\n result = DEF\n }\n } else {\n result = DEF\n }\n\n tableEmitter.emit('table-pro:api-success', { result })\n emit('ApiSuccess', {\n ...result,\n })\n\n // // 阻断 vue 对大数组的监听,避免 vue 绑定大数据造成短暂的卡顿, => 虚拟滚动-最大高度demo\n // unref(tableRef)?.loadData(result)\n return Promise.resolve(result)\n } catch (error) {\n emit('ApiError', error)\n return Promise.resolve(DEF)\n }\n }\n }\n\n return tablePropsRef\n}\n\n/**\n * 根据传入的 props 利用 vxetable 现有方法实现扩展的 props\n * @param tablePropsRef\n * @param tableRef\n * @param emit\n * @returns\n */\nfunction handleExtendProps(\n tablePropsRef: ComputedRef<TableProProps>,\n tableRef: Ref<TableProInstance | null>,\n emit: TableProGridEmit,\n tableEmitter: Emitter\n) {\n const handleExtendProxyConfigResult = handleExtendProxyConfig(tablePropsRef)\n const handleExtendApiResult = handleExtendApi(\n handleExtendProxyConfigResult,\n tableRef,\n emit,\n tableEmitter\n )\n return handleExtendApiResult\n}\n\n/**\n * 根据 fixedLineHeight 做行高处理\n * @param tablePropsRef \\\n */\nfunction handleRowLineHeight(tablePropsRef: ComputedRef<TableProProps>) {\n const { fixedLineHeight } = unref(tablePropsRef)\n // 因为 vxetable 虚拟滚动的要求是关闭动态行高(即行高度不允许被内容撑开)\n if (fixedLineHeight) {\n // 所以当 showTooltip 为 true 时,要设置固定行高度(即设置 showOverflow)\n unref(tablePropsRef).showOverflow = 'ellipsis'\n unref(tablePropsRef).showHeaderOverflow = 'ellipsis'\n unref(tablePropsRef).showFooterOverflow = 'ellipsis'\n unref(tablePropsRef).scrollX.enabled = true\n unref(tablePropsRef).scrollY.enabled = true\n } else {\n // 所以当 showTooltip 为 false 时,不设置固定行高度,行高度由内容撑开(虚拟滚动失效)\n unref(tablePropsRef).showOverflow = null\n unref(tablePropsRef).showHeaderOverflow = null\n unref(tablePropsRef).showFooterOverflow = null\n unref(tablePropsRef).scrollX.enabled = false\n unref(tablePropsRef).scrollY.enabled = false\n }\n\n return tablePropsRef\n}\n\n/**\n * 利用生成的默认 props 与 传入的 props 合并\n * @param defaultPropsRef\n * @param paramPropsRef\n * @returns\n */\nfunction mergePropsRef(\n defaultPropsRef: ComputedRef<Partial<TableProProps>>,\n paramPropsRef: ComputedRef<TableProProps>,\n tableRef: Ref<TableProInstance | null>,\n emit: TableProGridEmit,\n tableEmitter: Emitter\n): ComputedRef<TableProProps> {\n return computed(() => {\n for (const [key] of Object.entries(unref(paramPropsRef))) {\n //@ts-ignore\n if (unref(defaultPropsRef)[key]) {\n // 只对对象进行合并,其他类型已传入的值为准\n //@ts-ignore\n if (isObject(unref(defaultPropsRef)[key])) {\n // // 会有性能问题,暂时浅合并\n // unref(paramPropsRef)[key] = deepMerge(\n // cloneDeep(unref(defaultPropsRef)[key]),\n // cloneDeep(unref(paramPropsRef)[key])\n // )\n // 浅合并\n //@ts-ignore\n unref(paramPropsRef)[key] = {\n //@ts-ignore\n ...unref(defaultPropsRef)[key],\n //@ts-ignore\n ...unref(paramPropsRef)[key],\n }\n }\n }\n }\n const handledRowLineHeightTablePropsRef = handleRowLineHeight(paramPropsRef)\n const tablePropsRef = handleExtendProps(\n handledRowLineHeightTablePropsRef,\n tableRef,\n emit,\n tableEmitter\n )\n return { ...unref(tablePropsRef) }\n })\n}\n\n/**\n * 利用 types 中声明的 tableproprops 来生成默认props\n * @param defaultProps\n * @returns\n */\nfunction createDefaultPropsRef(defaultProps: TableProProps): ComputedRef<Partial<TableProProps>> {\n const _defaultProps: Partial<TableProProps> = {}\n\n for (const [key, value] of Object.entries(defaultProps)) {\n const defaultValue = (value as any).default\n if (defaultValue) {\n // 这里指判断了有对象默认值的情况,函数默认值需要做判断\n //@ts-ignore\n _defaultProps[key] = typeof defaultValue === 'function' ? defaultValue() : defaultValue\n }\n }\n\n return computed(() => ({ ..._defaultProps }))\n}\n\nexport function useProps(\n tableProProps: any,\n paramPropsRef: ComputedRef<TableProProps>,\n tableRef: Ref<TableProInstance | null>,\n emit: TableProGridEmit,\n tableEmitter: Emitter\n) {\n const defaultPropsRef = createDefaultPropsRef(tableProProps)\n const tablePropsRef = mergePropsRef(defaultPropsRef, paramPropsRef, tableRef, emit, tableEmitter)\n return tablePropsRef\n}\n"],"names":[],"mappings":"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"}