fast-element-plus 2.0.14 → 2.0.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +20 -0
- package/dist/components/avatar/src/avatar.mjs.map +1 -1
- package/dist/components/button/src/button.mjs +2 -2
- package/dist/components/button/src/button.mjs.map +1 -1
- package/dist/components/carNumber/src/carNumber.mjs.map +1 -1
- package/dist/components/contextMenu/index.d.ts +1 -1
- package/dist/components/contextMenu/index.mjs.map +1 -1
- package/dist/components/contextMenu/src/contextMenu.d.ts +2 -2
- package/dist/components/contextMenu/src/contextMenu.mjs +2 -2
- package/dist/components/contextMenu/src/contextMenu.mjs.map +1 -1
- package/dist/components/dialog/src/dialog.d.ts +6 -6
- package/dist/components/dialog/src/dialog.mjs +4 -4
- package/dist/components/dialog/src/dialog.mjs.map +1 -1
- package/dist/components/drawer/src/drawer.d.ts +2 -2
- package/dist/components/drawer/src/drawer.mjs +6 -6
- package/dist/components/drawer/src/drawer.mjs.map +1 -1
- package/dist/components/form/src/form.d.ts +10 -4
- package/dist/components/form/src/form.mjs.map +1 -1
- package/dist/components/form/src/formItem.d.ts +4 -4
- package/dist/components/form/src/formItem.mjs.map +1 -1
- package/dist/components/form/utils/form.d.ts +1 -1
- package/dist/components/form/utils/form.mjs +4 -8
- package/dist/components/form/utils/form.mjs.map +1 -1
- package/dist/components/image/src/image.mjs +1 -1
- package/dist/components/image/src/image.mjs.map +1 -1
- package/dist/components/inputDialogPage/src/inputDialogPage.d.ts +4 -4
- package/dist/components/inputDialogPage/src/inputDialogPage.mjs +1 -3
- package/dist/components/inputDialogPage/src/inputDialogPage.mjs.map +1 -1
- package/dist/components/layoutGrid/index.d.ts +1 -1
- package/dist/components/layoutGrid/index.mjs.map +1 -1
- package/dist/components/layoutGrid/src/layoutGrid.d.ts +3 -3
- package/dist/components/layoutGrid/src/layoutGrid.mjs +2 -2
- package/dist/components/layoutGrid/src/layoutGrid.mjs.map +1 -1
- package/dist/components/select/index.d.ts +1 -1
- package/dist/components/select/index.mjs.map +1 -1
- package/dist/components/select/src/select.d.ts +2 -2
- package/dist/components/select/src/select.mjs +2 -2
- package/dist/components/select/src/select.mjs.map +1 -1
- package/dist/components/selectPage/src/selectPage.d.ts +5 -5
- package/dist/components/selectPage/src/selectPage.mjs.map +1 -1
- package/dist/components/selectV2/src/selectV2.d.ts +2 -2
- package/dist/components/selectV2/src/selectV2.mjs +3 -3
- package/dist/components/selectV2/src/selectV2.mjs.map +1 -1
- package/dist/components/table/index.d.ts +3 -3
- package/dist/components/table/index.mjs +1 -3
- package/dist/components/table/index.mjs.map +1 -1
- package/dist/components/table/src/table.d.ts +9 -9
- package/dist/components/table/src/table.mjs +23 -24
- package/dist/components/table/src/table.mjs.map +1 -1
- package/dist/components/table/src/tableColumn.d.ts +3 -3
- package/dist/components/table/src/tableColumn.mjs +9 -16
- package/dist/components/table/src/tableColumn.mjs.map +1 -1
- package/dist/components/table/src/tableColumnSettingDialog.mjs +8 -8
- package/dist/components/table/src/tableColumnSettingDialog.mjs.map +1 -1
- package/dist/components/table/src/tableSearchForm.d.ts +3 -3
- package/dist/components/table/src/tableSearchForm.mjs +15 -21
- package/dist/components/table/src/tableSearchForm.mjs.map +1 -1
- package/dist/components/table/src/tableSearchFormItem.mjs.map +1 -1
- package/dist/components/table/src/useTable.mjs +7 -7
- package/dist/components/table/src/useTable.mjs.map +1 -1
- package/dist/components/table/utils/table.mjs +1 -1
- package/dist/components/table/utils/table.mjs.map +1 -1
- package/dist/components/tree/index.d.ts +1 -1
- package/dist/components/tree/index.mjs.map +1 -1
- package/dist/components/tree/src/tree.d.ts +3 -3
- package/dist/components/tree/src/tree.mjs +1 -1
- package/dist/components/tree/src/tree.mjs.map +1 -1
- package/dist/components/treeSelect/src/treeSelect.d.ts +8 -8
- package/dist/components/treeSelect/src/treeSelect.mjs +3 -3
- package/dist/components/treeSelect/src/treeSelect.mjs.map +1 -1
- package/dist/components/upload/src/upload.mjs +1 -1
- package/dist/components/upload/src/upload.mjs.map +1 -1
- package/dist/components/upload/src/useUpload.mjs +3 -3
- package/dist/components/upload/src/useUpload.mjs.map +1 -1
- package/dist/components/upload/utils/upload.d.ts +1 -1
- package/dist/components/upload/utils/upload.mjs.map +1 -1
- package/dist/components/uploadImage/src/uploadImage.d.ts +7 -4
- package/dist/components/uploadImage/src/uploadImage.mjs +11 -5
- package/dist/components/uploadImage/src/uploadImage.mjs.map +1 -1
- package/dist/components/uploadImages/src/uploadImages.d.ts +7 -4
- package/dist/components/uploadImages/src/uploadImages.mjs +9 -3
- package/dist/components/uploadImages/src/uploadImages.mjs.map +1 -1
- package/dist/directives/click-copy/index.d.ts +1 -1
- package/dist/directives/click-copy/index.mjs.map +1 -1
- package/dist/directives/click-debounce/index.d.ts +1 -1
- package/dist/directives/click-draggable/index.d.ts +1 -1
- package/dist/directives/click-icon-copy/index.d.ts +1 -1
- package/dist/directives/click-icon-copy/index.mjs.map +1 -1
- package/dist/directives/click-longpress/index.d.ts +1 -1
- package/dist/directives/click-throttle/index.d.ts +1 -1
- package/dist/element-plus.mjs.map +1 -1
- package/dist/hooks/use-screenFull/index.mjs.map +1 -1
- package/dist/index.global.min.js +4 -4
- package/dist/index.global.min.js.map +1 -1
- package/dist/index.mjs +1 -3
- package/dist/index.mjs.map +1 -1
- package/dist/utils/async/index.mjs +6 -4
- package/dist/utils/async/index.mjs.map +1 -1
- package/dist/utils/string/index.mjs +19 -11
- package/dist/utils/string/index.mjs.map +1 -1
- package/dist/utils/vue/install.mjs.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.mjs +1 -1
- package/dist/version.mjs.map +1 -1
- package/package.json +13 -13
- package/dist/components/table/src/page.type.mjs +0 -45
- package/dist/components/table/src/page.type.mjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tableSearchForm.mjs","names":[],"sources":["../../../../src/components/table/src/tableSearchForm.tsx"],"sourcesContent":["import { computed, defineComponent, inject, reactive, ref, watch } from \"vue\";\nimport { ArrowDown, ArrowUp, Eleme, Refresh, Search } from \"@element-plus/icons-vue\";\nimport { ElButton, ElIcon, useGlobalSize } from \"element-plus\";\nimport { Brush } from \"@fast-element-plus/icons-vue\";\nimport { definePropType, makeSlots, useRender, withDefineType } from \"../../../utils\";\nimport { FaDrawer } from \"../../drawer\";\nimport { FaLayoutGrid, FaLayoutGridItem } from \"../../layoutGrid\";\nimport { getTableDefaultSlots } from \"./table.type\";\nimport FaTableSearchFormItem from \"./tableSearchFormItem\";\nimport { tableStateKey } from \"./useTable\";\nimport type { FaDrawerInstance } from \"../../drawer\";\nimport type { FaLayoutGridBreakPoint, FaLayoutGridInstance, FaLayoutGridItemResponsive } from \"../../layoutGrid\";\nimport type { FaTableColumnCtx, FaTableDefaultSlotsResult, FaTableSearchColumnCtx } from \"./table.type\";\n\ntype FaTableSearchFormSlots = Record<\n\tstring,\n\tFaTableDefaultSlotsResult & {\n\t\tcolumn?: FaTableColumnCtx;\n\t\tsearch?: () => Promise<void>;\n\t}\n>;\n\nexport default defineComponent({\n\tname: \"FaTableSearchForm\",\n\tprops: {\n\t\t/** @description 显示 */\n\t\tshow: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true as const,\n\t\t},\n\t\t/** @description 折叠搜素 */\n\t\tcollapsedSearch: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\t/** @description 高级搜素抽屉 */\n\t\tadvancedSearchDrawer: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\t/** @description Grid布局列配置 */\n\t\tcols: {\n\t\t\ttype: definePropType<string | number | Record<FaLayoutGridBreakPoint, number>>([String, Number, Object]),\n\t\t\tdefault: () => ({ xs: 2, sm: 3, md: 4, lg: 5, xl: 6 }),\n\t\t},\n\t\t/** @description 搜索 */\n\t\tsearch: {\n\t\t\ttype: definePropType<() => Promise<void>>(Function),\n\t\t\trequired: true as const,\n\t\t},\n\t\t/** @description 重置 */\n\t\treset: {\n\t\t\ttype: definePropType<() => Promise<void>>(Function),\n\t\t\trequired: true as const,\n\t\t},\n\t},\n\tslots: makeSlots<FaTableSearchFormSlots>(),\n\tsetup(props, { slots }) {\n\t\tconst _globalSize = useGlobalSize();\n\n\t\t// 获取响应式断点\n\t\tconst gridRef = ref<FaLayoutGridInstance>();\n\n\t\tconst tableState = inject(tableStateKey);\n\t\tif (tableState === undefined) throw new Error(\"FaTableSearchForm 必须在 FaTable 内部渲染。\");\n\n\t\tconst breakPoint = computed<FaLayoutGridBreakPoint>(() => gridRef.value?.breakPoint ?? \"xl\");\n\t\tconst getColumnCount = (value: FaLayoutGridBreakPoint): number => {\n\t\t\tif (typeof props.cols === \"number\") return props.cols;\n\t\t\tif (typeof props.cols === \"object\") return props.cols[value] ?? 1;\n\t\t\treturn Number(props.cols) || 1;\n\t\t};\n\n\t\tconst state = reactive({\n\t\t\trefreshing: false,\n\t\t\theight: \"auto\",\n\t\t\t/** 折叠 */\n\t\t\tcollapsed: true,\n\t\t\t/** 显示折叠 */\n\t\t\tshowCollapsed: computed(() => {\n\t\t\t\tlet show = false;\n\t\t\t\ttableState.searchColumns.reduce((prev, current) => {\n\t\t\t\t\tconst search = current.search;\n\t\t\t\t\tif (search === undefined) return prev;\n\t\t\t\t\tprev += (search[breakPoint.value]?.span ?? search.span ?? 1) + (search[breakPoint.value]?.offset ?? search.offset ?? 0);\n\t\t\t\t\tif (prev >= getColumnCount(breakPoint.value)) show = true;\n\t\t\t\t\treturn prev;\n\t\t\t\t}, 0);\n\t\t\t\treturn show;\n\t\t\t}),\n\t\t\tsearchColumns: withDefineType<FaTableColumnCtx[]>([]),\n\t\t\tadvancedSearchColumns: withDefineType<FaTableColumnCtx[]>([]),\n\t\t\tbreakPoint: 0,\n\t\t});\n\n\t\tconst faTableSearchFormRef = ref<HTMLElement>();\n\t\tconst advancedSearchRef = ref<FaDrawerInstance>();\n\n\t\t// 获取响应式设置\n\t\tconst getResponsive = (\n\t\t\titem: FaTableSearchColumnCtx\n\t\t): { span: number; offset: number } & Partial<Record<FaLayoutGridBreakPoint, FaLayoutGridItemResponsive>> => {\n\t\t\treturn {\n\t\t\t\tspan: item.span ?? 1,\n\t\t\t\toffset: item?.offset ?? 0,\n\t\t\t\txs: item?.xs,\n\t\t\t\tsm: item?.sm,\n\t\t\t\tmd: item?.md,\n\t\t\t\tlg: item?.lg,\n\t\t\t\txl: item?.xl,\n\t\t\t};\n\t\t};\n\n\t\tconst handleBreakPointChange = ({ breakPoint }: { breakPoint: FaLayoutGridBreakPoint }): void => {\n\t\t\t// 这里 -1 是排除固定的\n\t\t\tstate.breakPoint = getColumnCount(breakPoint) - 1;\n\t\t\tstate.searchColumns = tableState.searchColumns.filter((f) => f?.show).slice(0, state.breakPoint);\n\t\t\tstate.advancedSearchColumns = tableState.searchColumns.filter((f) => f?.show).slice(state.breakPoint);\n\t\t};\n\n\t\twatch(\n\t\t\t() => tableState.searchColumns,\n\t\t\t() => {\n\t\t\t\tif (state.breakPoint) {\n\t\t\t\t\tstate.searchColumns = tableState.searchColumns.filter((f) => f?.show).slice(0, state.breakPoint);\n\t\t\t\t\tstate.advancedSearchColumns = tableState.searchColumns.filter((f) => f?.show).slice(state.breakPoint);\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\n\t\t// @ts-expect-error Element Plus 的递归 Props 在此处触发类型实例化深度限制。\n\t\tconst searchColumns = computed(() => (props.advancedSearchDrawer ? state.searchColumns : tableState.searchColumns));\n\n\t\twatch(\n\t\t\t() => props.advancedSearchDrawer,\n\t\t\t(newValue) => {\n\t\t\t\tif (newValue) {\n\t\t\t\t\t// 抽屉默认折叠\n\t\t\t\t\tstate.collapsed = true;\n\t\t\t\t} else {\n\t\t\t\t\tstate.collapsed = props.collapsedSearch;\n\t\t\t\t}\n\t\t\t\tstate.refreshing = true;\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tstate.refreshing = false;\n\t\t\t\t}, 1);\n\t\t\t}\n\t\t);\n\n\t\twatch(\n\t\t\t() => props.collapsedSearch,\n\t\t\t(newValue) => {\n\t\t\t\tif (!props.collapsedSearch) {\n\t\t\t\t\tstate.collapsed = newValue;\n\t\t\t\t} else {\n\t\t\t\t\t// 抽屉默认折叠\n\t\t\t\t\tstate.collapsed = true;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\timmediate: true,\n\t\t\t}\n\t\t);\n\n\t\tuseRender(() =>\n\t\t\ttableState.searchColumns.length > 0 ? (\n\t\t\t\t<div\n\t\t\t\t\tref={faTableSearchFormRef}\n\t\t\t\t\tclass={[\n\t\t\t\t\t\t\"el-card fa-table__search\",\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"fa-table__search-hidden\": !props.show,\n\t\t\t\t\t\t\t\"fa-table__search__disable\": tableState.loading,\n\t\t\t\t\t\t},\n\t\t\t\t\t]}\n\t\t\t\t>\n\t\t\t\t\t<form class=\"el-form el-form--default el-form--label-right\">\n\t\t\t\t\t\t{!state.refreshing && (\n\t\t\t\t\t\t\t<FaLayoutGrid\n\t\t\t\t\t\t\t\tref={gridRef}\n\t\t\t\t\t\t\t\tcollapsed={state.collapsed}\n\t\t\t\t\t\t\t\tgap={_globalSize.value === \"small\" ? [20, 0] : [20, 10]}\n\t\t\t\t\t\t\t\tcols={props.cols}\n\t\t\t\t\t\t\t\tonBreakPointChange={handleBreakPointChange}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{searchColumns.value.map((item, index) =>\n\t\t\t\t\t\t\t\t\titem.search ? (\n\t\t\t\t\t\t\t\t\t\t<FaLayoutGridItem key={item.search.key ?? item.prop} data-index={index} {...getResponsive(item.search)}>\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"el-form-item el-form-item--default el-form-item--label-right\">\n\t\t\t\t\t\t\t\t\t\t\t\t<label class=\"el-form-item__label\">{item.search.label}</label>\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"el-form-item__content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t{item.search?.slot ? (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tslots[item.search.slot]?.({\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolumn: item,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsearch: props.search,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t...getTableDefaultSlots(tableState),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<FaTableSearchFormItem column={item} search={props.search} />\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t</FaLayoutGridItem>\n\t\t\t\t\t\t\t\t\t) : null\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t<FaLayoutGridItem suffix>\n\t\t\t\t\t\t\t\t\t<div class=\"fa-table__search-operation\">\n\t\t\t\t\t\t\t\t\t\t<ElButton\n\t\t\t\t\t\t\t\t\t\t\tloading={tableState.loading}\n\t\t\t\t\t\t\t\t\t\t\tloadingIcon={Eleme}\n\t\t\t\t\t\t\t\t\t\t\ttitle=\"搜索\"\n\t\t\t\t\t\t\t\t\t\t\ttype=\"primary\"\n\t\t\t\t\t\t\t\t\t\t\tplain\n\t\t\t\t\t\t\t\t\t\t\ticon={Refresh}\n\t\t\t\t\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\t\t\t\t\tvoid props.search();\n\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t搜索\n\t\t\t\t\t\t\t\t\t\t</ElButton>\n\t\t\t\t\t\t\t\t\t\t<ElButton\n\t\t\t\t\t\t\t\t\t\t\tloading={tableState.loading}\n\t\t\t\t\t\t\t\t\t\t\tloadingIcon={Eleme}\n\t\t\t\t\t\t\t\t\t\t\ttitle=\"重置\"\n\t\t\t\t\t\t\t\t\t\t\ticon={Brush}\n\t\t\t\t\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\t\t\t\t\tvoid props.reset();\n\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t重置\n\t\t\t\t\t\t\t\t\t\t</ElButton>\n\t\t\t\t\t\t\t\t\t\t{props.advancedSearchDrawer\n\t\t\t\t\t\t\t\t\t\t\t? state.advancedSearchColumns.length > 0 && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<ElButton\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tloading={tableState.loading}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tloadingIcon={Eleme}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttitle=\"高级搜索\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"info\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tplain\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ticon={Search}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvoid advancedSearchRef.value?.open();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t高级搜索\n\t\t\t\t\t\t\t\t\t\t\t\t\t</ElButton>\n\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t: state.showCollapsed && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<ElButton\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tloading={tableState.loading}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tloadingIcon={Eleme}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttitle={state.collapsed ? \"展开\" : \"折叠\"}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlink\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"primary\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstate.collapsed = !state.collapsed;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{state.collapsed ? \"展开\" : \"折叠\"}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ElIcon>{state.collapsed ? <ArrowDown /> : <ArrowUp />}</ElIcon>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</ElButton>\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</FaLayoutGridItem>\n\t\t\t\t\t\t\t</FaLayoutGrid>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</form>\n\t\t\t\t\t{props.advancedSearchDrawer && state.advancedSearchColumns.length > 0 && (\n\t\t\t\t\t\t<FaDrawer\n\t\t\t\t\t\t\tref={advancedSearchRef}\n\t\t\t\t\t\t\tclass=\"fa-table__search-advanced\"\n\t\t\t\t\t\t\tsize=\"20%\"\n\t\t\t\t\t\t\ttitle=\"高级搜索\"\n\t\t\t\t\t\t\tappendToBody={false}\n\t\t\t\t\t\t\tshowCloseButton={false}\n\t\t\t\t\t\t\tshowConfirmButton={false}\n\t\t\t\t\t\t\tshowFullscreen={false}\n\t\t\t\t\t\t\tshowRefresh={false}\n\t\t\t\t\t\t\tonConfirmClick={() => props.search()}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<form class=\"el-form el-form--default el-form--label-top\">\n\t\t\t\t\t\t\t\t<FaLayoutGrid gap={[20, 0]} cols={{ xs: 2, sm: 3, md: 4, lg: 5, xl: 6 }}>\n\t\t\t\t\t\t\t\t\t{state.advancedSearchColumns.map((item) =>\n\t\t\t\t\t\t\t\t\t\titem.search ? (\n\t\t\t\t\t\t\t\t\t\t\t<FaLayoutGridItem key={item.prop ?? item.search.key} {...getResponsive(item.search)}>\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"el-form-item el-form-item--default el-form-item--label-top\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<label class=\"el-form-item__label\">{item.search.label}</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"el-form-item__content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{item.search.slot ? (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tslots[item.search.slot]?.({\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolumn: item,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsearch: props.search,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t...getTableDefaultSlots(tableState),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<FaTableSearchFormItem column={item} search={props.search} />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t</FaLayoutGridItem>\n\t\t\t\t\t\t\t\t\t\t) : null\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</FaLayoutGrid>\n\t\t\t\t\t\t\t</form>\n\t\t\t\t\t\t</FaDrawer>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t) : (\n\t\t\t\t<div />\n\t\t\t)\n\t\t);\n\t},\n});\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tableSearchForm.mjs","names":[],"sources":["../../../../src/components/table/src/tableSearchForm.tsx"],"sourcesContent":["import { computed, defineComponent, inject, reactive, ref, watch } from \"vue\";\nimport { ArrowDown, ArrowUp, Eleme, Refresh, Search } from \"@element-plus/icons-vue\";\nimport { ElButton, ElIcon, useGlobalSize } from \"element-plus\";\nimport { Brush } from \"@fast-element-plus/icons-vue\";\nimport { definePropType, makeSlots, useRender, withDefineType } from \"../../../utils\";\nimport { FaDrawer } from \"../../drawer\";\nimport { FaLayoutGrid, FaLayoutGridItem } from \"../../layoutGrid\";\nimport { getTableDefaultSlots } from \"./table.type\";\nimport FaTableSearchFormItem from \"./tableSearchFormItem\";\nimport { tableStateKey } from \"./useTable\";\nimport type { FaDrawerInstance } from \"../../drawer\";\nimport type { FaLayoutGridBreakPoint, FaLayoutGridInstance, FaLayoutGridItemResponsive } from \"../../layoutGrid\";\nimport type { FaTableColumnCtx, FaTableDefaultSlotsResult, FaTableSearchColumnCtx } from \"./table.type\";\n\ntype FaTableSearchFormSlots = Record<\n\tstring,\n\tFaTableDefaultSlotsResult & {\n\t\tcolumn?: FaTableColumnCtx;\n\t\tsearch?: () => Promise<void>;\n\t}\n>;\n\nexport default defineComponent({\n\tname: \"FaTableSearchForm\",\n\tprops: {\n\t\t/** @description 显示 */\n\t\tshow: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true as const,\n\t\t},\n\t\t/** @description 折叠搜素 */\n\t\tcollapsedSearch: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\t/** @description 高级搜素抽屉 */\n\t\tadvancedSearchDrawer: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\t/** @description Grid布局列配置 */\n\t\tcols: {\n\t\t\ttype: definePropType<string | number | Partial<Record<FaLayoutGridBreakPoint, number>>>([String, Number, Object]),\n\t\t\tdefault: () => ({ xs: 2, sm: 3, md: 4, lg: 5, xl: 6 }),\n\t\t},\n\t\t/** @description 搜索 */\n\t\tsearch: {\n\t\t\ttype: definePropType<() => Promise<void>>(Function),\n\t\t\trequired: true as const,\n\t\t},\n\t\t/** @description 重置 */\n\t\treset: {\n\t\t\ttype: definePropType<() => Promise<void>>(Function),\n\t\t\trequired: true as const,\n\t\t},\n\t},\n\tslots: makeSlots<FaTableSearchFormSlots>(),\n\tsetup(props, { slots }) {\n\t\tconst _globalSize = useGlobalSize();\n\n\t\t// 获取响应式断点\n\t\tconst gridRef = ref<FaLayoutGridInstance>();\n\n\t\tconst tableState = inject(tableStateKey);\n\t\tif (tableState === undefined) throw new Error(\"FaTableSearchForm 必须在 FaTable 内部渲染。\");\n\n\t\tconst breakPoint = computed<FaLayoutGridBreakPoint>(() => gridRef.value?.breakPoint ?? \"xl\");\n\t\tconst getColumnCount = (value: FaLayoutGridBreakPoint): number => {\n\t\t\tif (typeof props.cols === \"number\") return props.cols;\n\t\t\tif (typeof props.cols === \"object\") return props.cols[value] ?? 1;\n\t\t\treturn Number(props.cols) || 1;\n\t\t};\n\n\t\tconst state = reactive({\n\t\t\trefreshing: false,\n\t\t\theight: \"auto\",\n\t\t\t/** 折叠 */\n\t\t\tcollapsed: true,\n\t\t\t/** 显示折叠 */\n\t\t\tshowCollapsed: computed(() => {\n\t\t\t\tlet show = false;\n\t\t\t\ttableState.searchColumns.reduce((prev, current) => {\n\t\t\t\t\tconst search = current.search;\n\t\t\t\t\tif (search === undefined) return prev;\n\t\t\t\t\tprev += (search[breakPoint.value]?.span ?? search.span ?? 1) + (search[breakPoint.value]?.offset ?? search.offset ?? 0);\n\t\t\t\t\tif (prev >= getColumnCount(breakPoint.value)) show = true;\n\t\t\t\t\treturn prev;\n\t\t\t\t}, 0);\n\t\t\t\treturn show;\n\t\t\t}),\n\t\t\tsearchColumns: withDefineType<FaTableColumnCtx[]>([]),\n\t\t\tadvancedSearchColumns: withDefineType<FaTableColumnCtx[]>([]),\n\t\t\tbreakPoint: 0,\n\t\t});\n\n\t\tconst faTableSearchFormRef = ref<HTMLElement>();\n\t\tconst advancedSearchRef = ref<FaDrawerInstance>();\n\n\t\t// 获取响应式设置\n\t\tconst getResponsive = (\n\t\t\titem: FaTableSearchColumnCtx\n\t\t): { span: number; offset: number } & Partial<Record<FaLayoutGridBreakPoint, FaLayoutGridItemResponsive>> => {\n\t\t\treturn {\n\t\t\t\tspan: item.span ?? 1,\n\t\t\t\toffset: item.offset ?? 0,\n\t\t\t\txs: item.xs,\n\t\t\t\tsm: item.sm,\n\t\t\t\tmd: item.md,\n\t\t\t\tlg: item.lg,\n\t\t\t\txl: item.xl,\n\t\t\t};\n\t\t};\n\n\t\tconst handleBreakPointChange = ({ breakPoint }: { breakPoint: FaLayoutGridBreakPoint }): void => {\n\t\t\t// 这里 -1 是排除固定的\n\t\t\tstate.breakPoint = getColumnCount(breakPoint) - 1;\n\t\t\tstate.searchColumns = tableState.searchColumns.filter((f) => f.show).slice(0, state.breakPoint);\n\t\t\tstate.advancedSearchColumns = tableState.searchColumns.filter((f) => f.show).slice(state.breakPoint);\n\t\t};\n\n\t\twatch(\n\t\t\t() => tableState.searchColumns,\n\t\t\t() => {\n\t\t\t\tif (state.breakPoint) {\n\t\t\t\t\tstate.searchColumns = tableState.searchColumns.filter((f) => f.show).slice(0, state.breakPoint);\n\t\t\t\t\tstate.advancedSearchColumns = tableState.searchColumns.filter((f) => f.show).slice(state.breakPoint);\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\n\t\t// @ts-expect-error Element Plus 的递归 Props 在此处触发类型实例化深度限制。\n\t\tconst searchColumns = computed(() => (props.advancedSearchDrawer ? state.searchColumns : tableState.searchColumns));\n\n\t\twatch(\n\t\t\t() => props.advancedSearchDrawer,\n\t\t\t(newValue) => {\n\t\t\t\tif (newValue) {\n\t\t\t\t\t// 抽屉默认折叠\n\t\t\t\t\tstate.collapsed = true;\n\t\t\t\t} else {\n\t\t\t\t\tstate.collapsed = props.collapsedSearch;\n\t\t\t\t}\n\t\t\t\tstate.refreshing = true;\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tstate.refreshing = false;\n\t\t\t\t}, 1);\n\t\t\t}\n\t\t);\n\n\t\twatch(\n\t\t\t() => props.collapsedSearch,\n\t\t\t(newValue) => {\n\t\t\t\tif (!props.collapsedSearch) {\n\t\t\t\t\tstate.collapsed = newValue;\n\t\t\t\t} else {\n\t\t\t\t\t// 抽屉默认折叠\n\t\t\t\t\tstate.collapsed = true;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\timmediate: true,\n\t\t\t}\n\t\t);\n\n\t\tuseRender(() =>\n\t\t\ttableState.searchColumns.length > 0 ? (\n\t\t\t\t<div\n\t\t\t\t\tref={faTableSearchFormRef}\n\t\t\t\t\tclass={[\n\t\t\t\t\t\t\"el-card fa-table__search\",\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"fa-table__search-hidden\": !props.show,\n\t\t\t\t\t\t\t\"fa-table__search__disable\": tableState.loading,\n\t\t\t\t\t\t},\n\t\t\t\t\t]}\n\t\t\t\t>\n\t\t\t\t\t<form class=\"el-form el-form--default el-form--label-right\">\n\t\t\t\t\t\t{!state.refreshing && (\n\t\t\t\t\t\t\t<FaLayoutGrid\n\t\t\t\t\t\t\t\tref={gridRef}\n\t\t\t\t\t\t\t\tcollapsed={state.collapsed}\n\t\t\t\t\t\t\t\tgap={_globalSize.value === \"small\" ? [20, 0] : [20, 10]}\n\t\t\t\t\t\t\t\tcols={props.cols}\n\t\t\t\t\t\t\t\tonBreakPointChange={handleBreakPointChange}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{searchColumns.value.map((item, index) =>\n\t\t\t\t\t\t\t\t\titem.search ? (\n\t\t\t\t\t\t\t\t\t\t<FaLayoutGridItem key={item.search.key ?? item.prop} data-index={index} {...getResponsive(item.search)}>\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"el-form-item el-form-item--default el-form-item--label-right\">\n\t\t\t\t\t\t\t\t\t\t\t\t<label class=\"el-form-item__label\">{item.search.label}</label>\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"el-form-item__content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t{item.search.slot ? (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tslots[item.search.slot]?.({\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolumn: item,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsearch: props.search,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t...getTableDefaultSlots(tableState),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<FaTableSearchFormItem column={item} search={props.search} />\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t</FaLayoutGridItem>\n\t\t\t\t\t\t\t\t\t) : null\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t<FaLayoutGridItem suffix>\n\t\t\t\t\t\t\t\t\t<div class=\"fa-table__search-operation\">\n\t\t\t\t\t\t\t\t\t\t<ElButton\n\t\t\t\t\t\t\t\t\t\t\tloading={tableState.loading}\n\t\t\t\t\t\t\t\t\t\t\tloadingIcon={Eleme}\n\t\t\t\t\t\t\t\t\t\t\ttitle=\"搜索\"\n\t\t\t\t\t\t\t\t\t\t\ttype=\"primary\"\n\t\t\t\t\t\t\t\t\t\t\tplain\n\t\t\t\t\t\t\t\t\t\t\ticon={Refresh}\n\t\t\t\t\t\t\t\t\t\t\tonClick={props.search}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t搜索\n\t\t\t\t\t\t\t\t\t\t</ElButton>\n\t\t\t\t\t\t\t\t\t\t<ElButton loading={tableState.loading} loadingIcon={Eleme} title=\"重置\" icon={Brush} onClick={props.reset}>\n\t\t\t\t\t\t\t\t\t\t\t重置\n\t\t\t\t\t\t\t\t\t\t</ElButton>\n\t\t\t\t\t\t\t\t\t\t{props.advancedSearchDrawer\n\t\t\t\t\t\t\t\t\t\t\t? state.advancedSearchColumns.length > 0 && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<ElButton\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tloading={tableState.loading}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tloadingIcon={Eleme}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttitle=\"高级搜索\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"info\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tplain\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ticon={Search}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => advancedSearchRef.value?.open()}\n\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t高级搜索\n\t\t\t\t\t\t\t\t\t\t\t\t\t</ElButton>\n\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t: state.showCollapsed && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<ElButton\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tloading={tableState.loading}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tloadingIcon={Eleme}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttitle={state.collapsed ? \"展开\" : \"折叠\"}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlink\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"primary\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstate.collapsed = !state.collapsed;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{state.collapsed ? \"展开\" : \"折叠\"}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ElIcon>{state.collapsed ? <ArrowDown /> : <ArrowUp />}</ElIcon>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</ElButton>\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</FaLayoutGridItem>\n\t\t\t\t\t\t\t</FaLayoutGrid>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</form>\n\t\t\t\t\t{props.advancedSearchDrawer && state.advancedSearchColumns.length > 0 && (\n\t\t\t\t\t\t<FaDrawer\n\t\t\t\t\t\t\tref={advancedSearchRef}\n\t\t\t\t\t\t\tclass=\"fa-table__search-advanced\"\n\t\t\t\t\t\t\tsize=\"20%\"\n\t\t\t\t\t\t\ttitle=\"高级搜索\"\n\t\t\t\t\t\t\tappendToBody={false}\n\t\t\t\t\t\t\tshowCloseButton={false}\n\t\t\t\t\t\t\tshowConfirmButton={false}\n\t\t\t\t\t\t\tshowFullscreen={false}\n\t\t\t\t\t\t\tshowRefresh={false}\n\t\t\t\t\t\t\tonConfirmClick={props.search}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<form class=\"el-form el-form--default el-form--label-top\">\n\t\t\t\t\t\t\t\t<FaLayoutGrid gap={[20, 0]} cols={{ xs: 2, sm: 3, md: 4, lg: 5, xl: 6 }}>\n\t\t\t\t\t\t\t\t\t{state.advancedSearchColumns.map((item) =>\n\t\t\t\t\t\t\t\t\t\titem.search ? (\n\t\t\t\t\t\t\t\t\t\t\t<FaLayoutGridItem key={item.prop ?? item.search.key} {...getResponsive(item.search)}>\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"el-form-item el-form-item--default el-form-item--label-top\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<label class=\"el-form-item__label\">{item.search.label}</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"el-form-item__content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{item.search.slot ? (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tslots[item.search.slot]?.({\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolumn: item,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsearch: props.search,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t...getTableDefaultSlots(tableState),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<FaTableSearchFormItem column={item} search={props.search} />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t</FaLayoutGridItem>\n\t\t\t\t\t\t\t\t\t\t) : null\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</FaLayoutGrid>\n\t\t\t\t\t\t\t</form>\n\t\t\t\t\t\t</FaDrawer>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t) : (\n\t\t\t\t<div />\n\t\t\t)\n\t\t);\n\t},\n});\n"],"mappings":";;;;;;;;;;;;;;AAYwG,SAAA,QAAA,GAAA;CAAA,OAAA,OAAA,MAAA,cAAA,OAAA,UAAA,SAAA,KAAA,CAAA,MAAA,qBAAA,CAAA,QAAA,CAAA;AAAA;AAUxG,IAAA,0BAAe,gBAAgB;CAC9B,MAAM;CACN,OAAO;;EAEN,MAAM;GACL,MAAM;GACN,UAAU;EACX;;EAEA,iBAAiB;GAChB,MAAM;GACN,SAAS;EACV;;EAEA,sBAAsB;GACrB,MAAM;GACN,SAAS;EACV;;EAEA,MAAM;GACL,MAAM,eAAkF;IAAC;IAAQ;IAAQ;GAAM,CAAC;GAChH,gBAAgB;IAAE,IAAI;IAAG,IAAI;IAAG,IAAI;IAAG,IAAI;IAAG,IAAI;GAAE;EACrD;;EAEA,QAAQ;GACP,MAAM,eAAoC,QAAQ;GAClD,UAAU;EACX;;EAEA,OAAO;GACN,MAAM,eAAoC,QAAQ;GAClD,UAAU;EACX;CACD;CACA,OAAO,UAAkC;CACzC,MAAM,OAAO,EAAE,SAAS;EACvB,MAAM,cAAc,cAAc;EAGlC,MAAM,UAAU,IAA0B;EAE1C,MAAM,aAAa,OAAO,aAAa;EACvC,IAAI,eAAe,KAAA,GAAW,MAAM,IAAI,MAAM,qCAAqC;EAEnF,MAAM,aAAa,eAAuC,QAAQ,OAAO,cAAc,IAAI;EAC3F,MAAM,kBAAkB,UAA0C;GACjE,IAAI,OAAO,MAAM,SAAS,UAAU,OAAO,MAAM;GACjD,IAAI,OAAO,MAAM,SAAS,UAAU,OAAO,MAAM,KAAK,UAAU;GAChE,OAAO,OAAO,MAAM,IAAI,KAAK;EAC9B;EAEA,MAAM,QAAQ,SAAS;GACtB,YAAY;GACZ,QAAQ;;GAER,WAAW;;GAEX,eAAe,eAAe;IAC7B,IAAI,OAAO;IACX,WAAW,cAAc,QAAQ,MAAM,YAAY;KAClD,MAAM,SAAS,QAAQ;KACvB,IAAI,WAAW,KAAA,GAAW,OAAO;KACjC,SAAS,OAAO,WAAW,MAAM,EAAE,QAAQ,OAAO,QAAQ,MAAM,OAAO,WAAW,MAAM,EAAE,UAAU,OAAO,UAAU;KACrH,IAAI,QAAQ,eAAe,WAAW,KAAK,GAAG,OAAO;KACrD,OAAO;IACR,GAAG,CAAC;IACJ,OAAO;GACR,CAAC;GACD,eAAe,eAAmC,CAAA,CAAE;GACpD,uBAAuB,eAAmC,CAAA,CAAE;GAC5D,YAAY;EACb,CAAC;EAED,MAAM,uBAAuB,IAAiB;EAC9C,MAAM,oBAAoB,IAAsB;EAGhD,MAAM,iBACL,SAC4G;GAC5G,OAAO;IACN,MAAM,KAAK,QAAQ;IACnB,QAAQ,KAAK,UAAU;IACvB,IAAI,KAAK;IACT,IAAI,KAAK;IACT,IAAI,KAAK;IACT,IAAI,KAAK;IACT,IAAI,KAAK;GACV;EACD;EAEA,MAAM,0BAA0B,EAAE,iBAA+D;GAEhG,MAAM,aAAa,eAAe,UAAU,IAAI;GAChD,MAAM,gBAAgB,WAAW,cAAc,QAAQ,MAAM,EAAE,IAAI,CAAC,CAAC,MAAM,GAAG,MAAM,UAAU;GAC9F,MAAM,wBAAwB,WAAW,cAAc,QAAQ,MAAM,EAAE,IAAI,CAAC,CAAC,MAAM,MAAM,UAAU;EACpG;EAEA,YACO,WAAW,qBACX;GACL,IAAI,MAAM,YAAY;IACrB,MAAM,gBAAgB,WAAW,cAAc,QAAQ,MAAM,EAAE,IAAI,CAAC,CAAC,MAAM,GAAG,MAAM,UAAU;IAC9F,MAAM,wBAAwB,WAAW,cAAc,QAAQ,MAAM,EAAE,IAAI,CAAC,CAAC,MAAM,MAAM,UAAU;GACpG;EACD,CACD;EAGA,MAAM,gBAAgB,eAAgB,MAAM,uBAAuB,MAAM,gBAAgB,WAAW,aAAc;EAElH,YACO,MAAM,uBACX,aAAa;GACb,IAAI,UAEH,MAAM,YAAY;QAElB,MAAM,YAAY,MAAM;GAEzB,MAAM,aAAa;GACnB,iBAAiB;IAChB,MAAM,aAAa;GACpB,GAAG,CAAC;EACL,CACD;EAEA,YACO,MAAM,kBACX,aAAa;GACb,IAAI,CAAC,MAAM,iBACV,MAAM,YAAY;QAGlB,MAAM,YAAY;EAEpB,GACA,EACC,WAAW,KACZ,CACD;EAEA,gBAAU;GAAA,IAAA;GAAA,OACT,WAAW,cAAc,SAAS,IAAC,YAAA,OAAA;IAAA,OAE5B;IAAoB,SAClB,CACN,4BACA;KACC,2BAA2B,CAAC,MAAM;KAClC,6BAA6B,WAAW;IACzC,CAAC;GACD,GAAA,CAAA,YAAA,QAAA,EAAA,SAAA,gDAAA,GAAA,CAGC,CAAC,MAAM,cAAU,YAAA,cAAA;IAAA,OAEX;IAAO,aACD,MAAM;IAAS,OACrB,YAAY,UAAU,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;IAAC,QACjD,MAAM;IAAI,sBACI;GAAsB,GAAA,EAAA,eAAA,CAEzC,cAAc,MAAM,KAAK,MAAM,UAC/B,KAAK,SAAM,YAAA,kBAAA,WAAA;IAAA,OACa,KAAK,OAAO,OAAO,KAAK;IAAI,cAAc;GAAK,GAAM,cAAc,KAAK,MAAM,CAAC,GAAA,EAAA,eAAA,CAAA,YAAA,OAAA,EAAA,SAAA,+DAAA,GAAA,CAAA,YAAA,SAAA,EAAA,SAAA,sBAAA,GAAA,CAEhE,KAAK,OAAO,KAAK,CAAA,GAAA,YAAA,OAAA,EAAA,SAAA,wBAAA,GAAA,CAEnD,KAAK,OAAO,OACZ,MAAM,KAAK,OAAO,KAAK,GAAG;IACzB,QAAQ;IACR,QAAQ,MAAM;IACd,GAAG,qBAAqB,UAAU;GACnC,CAAC,IAAC,YAAA,6BAAA;IAAA,UAE6B;IAAI,UAAU,MAAM;GAAM,GAAA,IAAA,CACzD,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,IAID,IACL,GAAC,YAAA,kBAAA,EAAA,UAAA,KAAA,GAAA,EAAA,eAAA,CAAA,YAAA,OAAA,EAAA,SAAA,6BAAA,GAAA;IAAA,YAAA,UAAA;KAAA,WAIW,WAAW;KAAO,eACd;KAAK,SAAA;KAAA,QAAA;KAAA,SAAA;KAAA,QAIZ;KAAO,WACJ,MAAM;IAAM,GAAA,EAAA,eAAA,CAAA,gBAAA,IAAA,CAAA,EAAA,CAAA;IAAA,YAAA,UAAA;KAAA,WAIH,WAAW;KAAO,eAAe;KAAK,SAAA;KAAA,QAAmB;KAAK,WAAW,MAAM;IAAK,GAAA,EAAA,eAAA,CAAA,gBAAA,IAAA,CAAA,EAAA,CAAA;IAGtG,MAAM,uBACJ,MAAM,sBAAsB,SAAS,KAAC,YAAA,UAAA;KAAA,WAE5B,WAAW;KAAO,eACd;KAAK,SAAA;KAAA,QAAA;KAAA,SAAA;KAAA,QAIZ;KAAM,iBACG,kBAAkB,OAAO,KAAK;IAAC,GAAA,EAAA,eAAA,CAAA,gBAAA,MAAA,CAAA,EAAA,CAAA,IAK/C,MAAM,iBAAa,YAAA,UAAA;KAAA,WAET,WAAW;KAAO,eACd;KAAK,SACX,MAAM,YAAY,OAAO;KAAI,QAAA;KAAA,QAAA;KAAA,iBAGrB;MACd,MAAM,YAAY,CAAC,MAAM;KAC1B;IAAC,GAAA,EAAA,eAAA,CAEA,MAAM,YAAY,OAAO,MAAI,YAAA,QAAA,MAAA,EAAA,eAAA,CACrB,MAAM,YAAS,YAAA,WAAA,MAAA,IAAA,IAAA,YAAA,SAAA,MAAA,IAAA,CAA8B,EAAA,CAAA,CAAA,EAAA,CAAA;GAEvD,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAIN,CAAA,GAED,MAAM,wBAAwB,MAAM,sBAAsB,SAAS,KAAC,YAAA,UAAA;IAAA,OAE9D;IAAiB,SAAA;IAAA,QAAA;IAAA,SAAA;IAAA,gBAIR;IAAK,mBACF;IAAK,qBACH;IAAK,kBACR;IAAK,eACR;IAAK,kBACF,MAAM;GAAM,GAAA,EAAA,eAAA,CAAA,YAAA,QAAA,EAAA,SAAA,8CAAA,GAAA,CAAA,YAAA,cAAA;IAAA,OAGR,CAAC,IAAI,CAAC;IAAC,QAAQ;KAAE,IAAI;KAAG,IAAI;KAAG,IAAI;KAAG,IAAI;KAAG,IAAI;IAAE;GAAC,GAAA,QAAA,QACrE,MAAM,sBAAsB,KAAK,SACjC,KAAK,SAAM,YAAA,kBAAA,WAAA,EAAA,OACa,KAAK,QAAQ,KAAK,OAAO,IAAG,GAAM,cAAc,KAAK,MAAM,CAAC,GAAA,EAAA,eAAA,CAAA,YAAA,OAAA,EAAA,SAAA,6DAAA,GAAA,CAAA,YAAA,SAAA,EAAA,SAAA,sBAAA,GAAA,CAE7C,KAAK,OAAO,KAAK,CAAA,GAAA,YAAA,OAAA,EAAA,SAAA,wBAAA,GAAA,CAEnD,KAAK,OAAO,OACZ,MAAM,KAAK,OAAO,KAAK,GAAG;IACzB,QAAQ;IACR,QAAQ,MAAM;IACd,GAAG,qBAAqB,UAAU;GACnC,CAAC,IAAC,YAAA,6BAAA;IAAA,UAE6B;IAAI,UAAU,MAAM;GAAM,GAAA,IAAA,CACzD,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,IAID,IACL,CAAC,IAAA,QAAA,EAAA,eAAA,CAAA,KAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAIJ,CAAA,IAAA,YAAA,OAAA,MAAA,IAAA;EAIF,CACF;CACD;AACD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tableSearchFormItem.mjs","names":[],"sources":["../../../../src/components/table/src/tableSearchFormItem.tsx"],"sourcesContent":["import { Fragment, defineComponent, h, inject, reactive, resolveComponent } from \"vue\";\nimport { ElOption } from \"element-plus\";\nimport { isString } from \"lodash-unified\";\nimport {\n\tcreateDateRangeShortcuts,\n\tcreateDateShortcuts,\n\tcreateOneMonthRangeFromToday,\n\tdefinePropType,\n\tgetStartOfToday,\n\tmakeSlots,\n\tuseRender,\n\twithDefineType,\n} from \"../../../utils\";\nimport { getTableDefaultSlots } from \"./table.type\";\nimport { enumMapKey, tableStateKey } from \"./useTable\";\nimport type { FaTableColumnCtx, FaTableDefaultSlotsResult, FaTableEnumColumnCtx } from \"./table.type\";\n\n/**\n * 已知默认支持的el组件:\n * \tel-input\n * \tel-input-number\n * \tel-select\n * \tel-select-v2\n * \tel-tree-select\n * \tel-cascader\n * \tel-date-picker\n * \tel-time-picker\n * \tel-time-select,\n * \tel-switch\n * 已知组件的默认props\n * clearable:el-input,el-input-number,el-select,el-select-v2,el-tree-select,el-cascader,el-date-picker,el-time-picker,el-time-select\n * filterable:el-select,el-select-v2,el-tree-select\n * placeholder-请输入:el-input,el-input-number\n * placeholder-请选择:el-select,el-select-v2,el-tree-select,el-cascader\n * defaultTime:el-date-picker\n * shortcuts:el-date-picker\n * options:el-select-v2,el-cascader\n * data:el-tree-select\n * startPlaceholder:\n * \t\tel-date-picker type in [\"datetimerange\", \"daterange\", \"monthrange\", \"yearrange\"]\n * \t\tel-time-picker isRange is true\n * endPlaceholder:\n * \t\tel-date-picker type in [\"datetimerange\", \"daterange\", \"monthrange\", \"yearrange\"]\n * \t\tel-time-picker isRange is true\n * rangeSeparator:\n * \t\tel-date-picker type in [\"datetimerange\", \"daterange\", \"monthrange\", \"yearrange\"]\n * \t\tel-time-picker isRange is true\n * unlinkPanels:el-date-picker type in [\"datetimerange\", \"daterange\", \"monthrange\", \"yearrange\"]\n * 后缀 -select Select -page Page -cascader Cascader 结尾的\n * \tplaceholder:请选择\n * 后缀 -input Input 结尾的\n * \tplaceholder:请输入\n */\n\nconst clearableEls = [\n\t\"el-input\",\n\t\"ELInput\",\n\t\"el-input-number\",\n\t\"ELInputNumber\",\n\t\"el-select\",\n\t\"ElSelect\",\n\t\"el-select-v2\",\n\t\"ElSelectV2\",\n\t\"el-tree-select\",\n\t\"ElTreeSelect\",\n\t\"el-cascader\",\n\t\"ElCascader\",\n\t\"el-date-picker\",\n\t\"ElDatePicker\",\n\t\"el-time-picker\",\n\t\"ElTimePicker\",\n\t\"el-time-select\",\n\t\"ElTimeSelect\",\n];\n\nconst elInputEls = [\"el-input\", \"ElInput\", \"ELInput\"];\n\ntype FaTableSearchFormItemSlots = Record<\n\tstring,\n\tFaTableDefaultSlotsResult & {\n\t\tcolumn?: FaTableColumnCtx;\n\t\tsearch?: () => Promise<void>;\n\t}\n>;\n\nconst filterableEls = [\"el-select\", \"ElSelect\", \"el-select-v2\", \"ElSelectV2\", \"el-tree-select\", \"ElTreeSelect\"];\n\nconst inputPlaceholderEls = [\"el-input\", \"ELInput\", \"el-input-number\", \"ELInputNumber\"];\n\nconst selectPlaceholderEls = [\"el-select\", \"ElSelect\", \"el-select-v2\", \"ElSelectV2\", \"el-tree-select\", \"ElTreeSelect\", \"el-cascader\", \"ElCascader\"];\n\nexport default defineComponent({\n\tname: \"FaTableSearchFormItem\",\n\tprops: {\n\t\t/** @description 列配置 */\n\t\tcolumn: {\n\t\t\ttype: definePropType<FaTableColumnCtx>(Object),\n\t\t\trequired: true,\n\t\t\t/** 这里的 default 不知道为什么,不写识别不出来类型 */\n\t\t\tdefault: {},\n\t\t},\n\t\t/** @description 搜索 */\n\t\tsearch: {\n\t\t\ttype: definePropType<() => Promise<void>>(Function),\n\t\t\trequired: true,\n\t\t},\n\t},\n\tslots: makeSlots<FaTableSearchFormItemSlots>(),\n\tsetup(props, { slots }) {\n\t\tconst tableState = inject(tableStateKey);\n\t\tconst enumMap = inject(enumMapKey);\n\t\tif (tableState === undefined || enumMap === undefined) {\n\t\t\tthrow new Error(\"FaTableSearchFormItem 必须在 FaTable 内部渲染。\");\n\t\t}\n\n\t\tconst state = reactive({\n\t\t\tenumDict: withDefineType<FaTableEnumColumnCtx[]>([]),\n\t\t});\n\n\t\tconst handleUpdateModelValue = (value: unknown): void => {\n\t\t\tif (isString(value)) {\n\t\t\t\t// 如果是字符串,则去除前后空格\n\t\t\t\tvalue = value.trim();\n\t\t\t}\n\t\t\tconst searchKey = props.column.search?.key ?? props.column.prop;\n\t\t\tif (searchKey) tableState.searchParam[searchKey] = value;\n\t\t};\n\n\t\tconst handleChange = (_value: unknown): void => {\n\t\t\tvoid props.search();\n\t\t};\n\n\t\tconst handleDefaultProps = (): Record<string, unknown> => {\n\t\t\tconst search = props.column.search;\n\t\t\tconst defaultProps: Record<string, unknown> = {};\n\t\t\tif (!search) return defaultProps;\n\t\t\tif (clearableEls.includes(search.el)) {\n\t\t\t\tdefaultProps[\"clearable\"] = true;\n\t\t\t}\n\t\t\tif (filterableEls.includes(search.el)) {\n\t\t\t\tdefaultProps[\"filterable\"] = true;\n\t\t\t}\n\t\t\tif (inputPlaceholderEls.includes(search.el)) {\n\t\t\t\tdefaultProps[\"placeholder\"] = \"请输入\";\n\t\t\t}\n\t\t\tif (selectPlaceholderEls.includes(search.el)) {\n\t\t\t\tdefaultProps[\"placeholder\"] = \"请选择\";\n\t\t\t}\n\t\t\tif ([\"el-date-picker\", \"ElDatePicker\"].includes(search.el)) {\n\t\t\t\tdefaultProps[\"unlinkPanels\"] = true;\n\t\t\t\tif (\n\t\t\t\t\ttypeof search.props?.[\"type\"] === \"string\" &&\n\t\t\t\t\t[\"datetimerange\", \"daterange\", \"monthrange\", \"yearrange\"].includes(search.props[\"type\"])\n\t\t\t\t) {\n\t\t\t\t\tdefaultProps[\"defaultTime\"] = createOneMonthRangeFromToday();\n\t\t\t\t\tdefaultProps[\"shortcuts\"] = createDateRangeShortcuts();\n\t\t\t\t\tdefaultProps[\"rangeSeparator\"] = \"至\";\n\t\t\t\t\tdefaultProps[\"startPlaceholder\"] = \"开始时间\";\n\t\t\t\t\tdefaultProps[\"endPlaceholder\"] = \"结束时间\";\n\t\t\t\t} else {\n\t\t\t\t\tdefaultProps[\"defaultTime\"] = getStartOfToday();\n\t\t\t\t\tdefaultProps[\"shortcuts\"] = createDateShortcuts();\n\t\t\t\t\tdefaultProps[\"placeholder\"] = \"请选择\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ([\"el-time-picker\", \"ElTimePicker\"].includes(search.el) && search.props?.[\"isRange\"]) {\n\t\t\t\tdefaultProps[\"rangeSeparator\"] = \"至\";\n\t\t\t\tdefaultProps[\"startPlaceholder\"] = \"开始时间\";\n\t\t\t\tdefaultProps[\"endPlaceholder\"] = \"结束时间\";\n\t\t\t}\n\t\t\tif (\n\t\t\t\t[\"el-select\", \"ElSelect\", \"el-select-v2\", \"ElSelectV2\", \"el-cascader\", \"ElCascader\", \"el-tree-select\", \"ElTreeSelect\"].includes(\n\t\t\t\t\tsearch.el\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tlet enumData: FaTableEnumColumnCtx[] | undefined;\n\t\t\t\tif (props.column.enum && isString(props.column.enum)) {\n\t\t\t\t\tenumData = enumMap.get(props.column.enum);\n\t\t\t\t} else {\n\t\t\t\t\tconst enumKey = props.column.prop ?? search.key;\n\t\t\t\t\tenumData = enumKey ? enumMap.get(enumKey) : undefined;\n\t\t\t\t}\n\t\t\t\tenumData = enumData?.filter((item) => item.show !== false);\n\t\t\t\tstate.enumDict = enumData ?? [];\n\t\t\t}\n\t\t\tif ([\"el-select-v2\", \"ElSelectV2\", \"el-cascader\", \"ElCascader\"].includes(search.el)) {\n\t\t\t\tdefaultProps[\"options\"] = state.enumDict;\n\t\t\t}\n\t\t\tif ([\"el-tree-select\", \"ElTreeSelect\"].includes(search.el)) {\n\t\t\t\tdefaultProps[\"data\"] = state.enumDict;\n\t\t\t}\n\n\t\t\treturn defaultProps;\n\t\t};\n\n\t\tuseRender(() => {\n\t\t\tconst search = props.column.search;\n\t\t\tconst searchKey = search?.key ?? props.column.prop;\n\t\t\tif (!search?.el || !searchKey) return <Fragment />;\n\t\t\tconst value: unknown = tableState.searchParam[searchKey];\n\t\t\tconst inputClearable = search.props?.[\"clearable\"] !== false && value !== undefined && value !== null && value !== \"\";\n\t\t\treturn (\n\t\t\t\t<Fragment>\n\t\t\t\t\t{h(\n\t\t\t\t\t\tresolveComponent(search.el),\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t...handleDefaultProps(),\n\t\t\t\t\t\t\t...search.props,\n\t\t\t\t\t\t\t...(elInputEls.includes(search.el) ? { clearable: inputClearable } : {}),\n\t\t\t\t\t\t\tmodelValue: value,\n\t\t\t\t\t\t\t\"onUpdate:modelValue\": handleUpdateModelValue,\n\t\t\t\t\t\t\tonChange: handleChange,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tdefault: () =>\n\t\t\t\t\t\t\t\t[\"el-select\", \"ElSelect\"].includes(search.el)\n\t\t\t\t\t\t\t\t\t? state.enumDict.map((selData, index) =>\n\t\t\t\t\t\t\t\t\t\t\th(ElOption, {\n\t\t\t\t\t\t\t\t\t\t\t\tkey: index,\n\t\t\t\t\t\t\t\t\t\t\t\tlabel: selData[typeof search.props?.[\"label\"] === \"string\" ? search.props[\"label\"] : \"label\"] as\n\t\t\t\t\t\t\t\t\t\t\t\t\tstring | number,\n\t\t\t\t\t\t\t\t\t\t\t\tvalue: selData[typeof search.props?.[\"value\"] === \"string\" ? search.props[\"value\"] : \"value\"] as\n\t\t\t\t\t\t\t\t\t\t\t\t\tstring | number | boolean | object,\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled: Boolean(\n\t\t\t\t\t\t\t\t\t\t\t\t\tselData[typeof search.props?.[\"disabled\"] === \"string\" ? search.props[\"disabled\"] : \"disabled\"]\n\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t: slots[\"default\"]?.({\n\t\t\t\t\t\t\t\t\t\t\tcolumn: props.column,\n\t\t\t\t\t\t\t\t\t\t\tsearch: props.search,\n\t\t\t\t\t\t\t\t\t\t\t...getTableDefaultSlots(tableState),\n\t\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t}\n\t\t\t\t\t)}\n\t\t\t\t</Fragment>\n\t\t\t);\n\t\t});\n\t},\n});\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tableSearchFormItem.mjs","names":[],"sources":["../../../../src/components/table/src/tableSearchFormItem.tsx"],"sourcesContent":["import { Fragment, defineComponent, h, inject, reactive, resolveComponent } from \"vue\";\nimport { ElOption } from \"element-plus\";\nimport { isString } from \"lodash-unified\";\nimport {\n\tcreateDateRangeShortcuts,\n\tcreateDateShortcuts,\n\tcreateOneMonthRangeFromToday,\n\tdefinePropType,\n\tgetStartOfToday,\n\tmakeSlots,\n\tuseRender,\n\twithDefineType,\n} from \"../../../utils\";\nimport { getTableDefaultSlots } from \"./table.type\";\nimport { enumMapKey, tableStateKey } from \"./useTable\";\nimport type { FaTableColumnCtx, FaTableDefaultSlotsResult, FaTableEnumColumnCtx } from \"./table.type\";\n\n/**\n * 已知默认支持的el组件:\n * \tel-input\n * \tel-input-number\n * \tel-select\n * \tel-select-v2\n * \tel-tree-select\n * \tel-cascader\n * \tel-date-picker\n * \tel-time-picker\n * \tel-time-select,\n * \tel-switch\n * 已知组件的默认props\n * clearable:el-input,el-input-number,el-select,el-select-v2,el-tree-select,el-cascader,el-date-picker,el-time-picker,el-time-select\n * filterable:el-select,el-select-v2,el-tree-select\n * placeholder-请输入:el-input,el-input-number\n * placeholder-请选择:el-select,el-select-v2,el-tree-select,el-cascader\n * defaultTime:el-date-picker\n * shortcuts:el-date-picker\n * options:el-select-v2,el-cascader\n * data:el-tree-select\n * startPlaceholder:\n * \t\tel-date-picker type in [\"datetimerange\", \"daterange\", \"monthrange\", \"yearrange\"]\n * \t\tel-time-picker isRange is true\n * endPlaceholder:\n * \t\tel-date-picker type in [\"datetimerange\", \"daterange\", \"monthrange\", \"yearrange\"]\n * \t\tel-time-picker isRange is true\n * rangeSeparator:\n * \t\tel-date-picker type in [\"datetimerange\", \"daterange\", \"monthrange\", \"yearrange\"]\n * \t\tel-time-picker isRange is true\n * unlinkPanels:el-date-picker type in [\"datetimerange\", \"daterange\", \"monthrange\", \"yearrange\"]\n * 后缀 -select Select -page Page -cascader Cascader 结尾的\n * \tplaceholder:请选择\n * 后缀 -input Input 结尾的\n * \tplaceholder:请输入\n */\n\nconst clearableEls = [\n\t\"el-input\",\n\t\"ELInput\",\n\t\"el-input-number\",\n\t\"ELInputNumber\",\n\t\"el-select\",\n\t\"ElSelect\",\n\t\"el-select-v2\",\n\t\"ElSelectV2\",\n\t\"el-tree-select\",\n\t\"ElTreeSelect\",\n\t\"el-cascader\",\n\t\"ElCascader\",\n\t\"el-date-picker\",\n\t\"ElDatePicker\",\n\t\"el-time-picker\",\n\t\"ElTimePicker\",\n\t\"el-time-select\",\n\t\"ElTimeSelect\",\n];\n\nconst elInputEls = [\"el-input\", \"ElInput\", \"ELInput\"];\n\ntype FaTableSearchFormItemSlots = Record<\n\tstring,\n\tFaTableDefaultSlotsResult & {\n\t\tcolumn?: FaTableColumnCtx;\n\t\tsearch?: () => Promise<void>;\n\t}\n>;\n\nconst filterableEls = [\"el-select\", \"ElSelect\", \"el-select-v2\", \"ElSelectV2\", \"el-tree-select\", \"ElTreeSelect\"];\n\nconst inputPlaceholderEls = [\"el-input\", \"ELInput\", \"el-input-number\", \"ELInputNumber\"];\n\nconst selectPlaceholderEls = [\"el-select\", \"ElSelect\", \"el-select-v2\", \"ElSelectV2\", \"el-tree-select\", \"ElTreeSelect\", \"el-cascader\", \"ElCascader\"];\n\nexport default defineComponent({\n\tname: \"FaTableSearchFormItem\",\n\tprops: {\n\t\t/** @description 列配置 */\n\t\tcolumn: {\n\t\t\ttype: definePropType<FaTableColumnCtx>(Object),\n\t\t\trequired: true,\n\t\t\t/** 这里的 default 不知道为什么,不写识别不出来类型 */\n\t\t\tdefault: {},\n\t\t},\n\t\t/** @description 搜索 */\n\t\tsearch: {\n\t\t\ttype: definePropType<() => Promise<void>>(Function),\n\t\t\trequired: true,\n\t\t},\n\t},\n\tslots: makeSlots<FaTableSearchFormItemSlots>(),\n\tsetup(props, { slots }) {\n\t\tconst tableState = inject(tableStateKey);\n\t\tconst enumMap = inject(enumMapKey);\n\t\tif (tableState === undefined || enumMap === undefined) {\n\t\t\tthrow new Error(\"FaTableSearchFormItem 必须在 FaTable 内部渲染。\");\n\t\t}\n\n\t\tconst state = reactive({\n\t\t\tenumDict: withDefineType<FaTableEnumColumnCtx[]>([]),\n\t\t});\n\n\t\tconst handleUpdateModelValue = (value: unknown): void => {\n\t\t\tif (isString(value)) {\n\t\t\t\t// 如果是字符串,则去除前后空格\n\t\t\t\tvalue = value.trim();\n\t\t\t}\n\t\t\tconst searchKey = props.column.search?.key ?? props.column.prop;\n\t\t\tif (searchKey) tableState.searchParam[searchKey] = value;\n\t\t};\n\n\t\tconst handleChange = (_value: unknown): void => {\n\t\t\tprops.search();\n\t\t};\n\n\t\tconst handleDefaultProps = (): Record<string, unknown> => {\n\t\t\tconst search = props.column.search;\n\t\t\tconst defaultProps: Record<string, unknown> = {};\n\t\t\tif (!search) return defaultProps;\n\t\t\tif (clearableEls.includes(search.el)) {\n\t\t\t\tdefaultProps[\"clearable\"] = true;\n\t\t\t}\n\t\t\tif (filterableEls.includes(search.el)) {\n\t\t\t\tdefaultProps[\"filterable\"] = true;\n\t\t\t}\n\t\t\tif (inputPlaceholderEls.includes(search.el)) {\n\t\t\t\tdefaultProps[\"placeholder\"] = \"请输入\";\n\t\t\t}\n\t\t\tif (selectPlaceholderEls.includes(search.el)) {\n\t\t\t\tdefaultProps[\"placeholder\"] = \"请选择\";\n\t\t\t}\n\t\t\tif ([\"el-date-picker\", \"ElDatePicker\"].includes(search.el)) {\n\t\t\t\tdefaultProps[\"unlinkPanels\"] = true;\n\t\t\t\tif (\n\t\t\t\t\ttypeof search.props?.[\"type\"] === \"string\" &&\n\t\t\t\t\t[\"datetimerange\", \"daterange\", \"monthrange\", \"yearrange\"].includes(search.props[\"type\"])\n\t\t\t\t) {\n\t\t\t\t\tdefaultProps[\"defaultTime\"] = createOneMonthRangeFromToday();\n\t\t\t\t\tdefaultProps[\"shortcuts\"] = createDateRangeShortcuts();\n\t\t\t\t\tdefaultProps[\"rangeSeparator\"] = \"至\";\n\t\t\t\t\tdefaultProps[\"startPlaceholder\"] = \"开始时间\";\n\t\t\t\t\tdefaultProps[\"endPlaceholder\"] = \"结束时间\";\n\t\t\t\t} else {\n\t\t\t\t\tdefaultProps[\"defaultTime\"] = getStartOfToday();\n\t\t\t\t\tdefaultProps[\"shortcuts\"] = createDateShortcuts();\n\t\t\t\t\tdefaultProps[\"placeholder\"] = \"请选择\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ([\"el-time-picker\", \"ElTimePicker\"].includes(search.el) && search.props?.[\"isRange\"]) {\n\t\t\t\tdefaultProps[\"rangeSeparator\"] = \"至\";\n\t\t\t\tdefaultProps[\"startPlaceholder\"] = \"开始时间\";\n\t\t\t\tdefaultProps[\"endPlaceholder\"] = \"结束时间\";\n\t\t\t}\n\t\t\tif (\n\t\t\t\t[\"el-select\", \"ElSelect\", \"el-select-v2\", \"ElSelectV2\", \"el-cascader\", \"ElCascader\", \"el-tree-select\", \"ElTreeSelect\"].includes(\n\t\t\t\t\tsearch.el\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tlet enumData: FaTableEnumColumnCtx[] | undefined;\n\t\t\t\tif (props.column.enum && isString(props.column.enum)) {\n\t\t\t\t\tenumData = enumMap.get(props.column.enum);\n\t\t\t\t} else {\n\t\t\t\t\tconst enumKey = props.column.prop ?? search.key;\n\t\t\t\t\tenumData = enumKey ? enumMap.get(enumKey) : undefined;\n\t\t\t\t}\n\t\t\t\tenumData = enumData?.filter((item) => item.show !== false);\n\t\t\t\tstate.enumDict = enumData ?? [];\n\t\t\t}\n\t\t\tif ([\"el-select-v2\", \"ElSelectV2\", \"el-cascader\", \"ElCascader\"].includes(search.el)) {\n\t\t\t\tdefaultProps[\"options\"] = state.enumDict;\n\t\t\t}\n\t\t\tif ([\"el-tree-select\", \"ElTreeSelect\"].includes(search.el)) {\n\t\t\t\tdefaultProps[\"data\"] = state.enumDict;\n\t\t\t}\n\n\t\t\treturn defaultProps;\n\t\t};\n\n\t\tuseRender(() => {\n\t\t\tconst search = props.column.search;\n\t\t\tconst searchKey = search?.key ?? props.column.prop;\n\t\t\tif (!search?.el || !searchKey) return <Fragment />;\n\t\t\tconst value: unknown = tableState.searchParam[searchKey];\n\t\t\tconst inputClearable = search.props?.[\"clearable\"] !== false && value !== undefined && value !== null && value !== \"\";\n\t\t\treturn (\n\t\t\t\t<Fragment>\n\t\t\t\t\t{h(\n\t\t\t\t\t\tresolveComponent(search.el),\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t...handleDefaultProps(),\n\t\t\t\t\t\t\t...search.props,\n\t\t\t\t\t\t\t...(elInputEls.includes(search.el) ? { clearable: inputClearable } : {}),\n\t\t\t\t\t\t\tmodelValue: value,\n\t\t\t\t\t\t\t\"onUpdate:modelValue\": handleUpdateModelValue,\n\t\t\t\t\t\t\tonChange: handleChange,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tdefault: () =>\n\t\t\t\t\t\t\t\t[\"el-select\", \"ElSelect\"].includes(search.el)\n\t\t\t\t\t\t\t\t\t? state.enumDict.map((selData, index) =>\n\t\t\t\t\t\t\t\t\t\t\th(ElOption, {\n\t\t\t\t\t\t\t\t\t\t\t\tkey: index,\n\t\t\t\t\t\t\t\t\t\t\t\tlabel: selData[typeof search.props?.[\"label\"] === \"string\" ? search.props[\"label\"] : \"label\"] as\n\t\t\t\t\t\t\t\t\t\t\t\t\tstring | number,\n\t\t\t\t\t\t\t\t\t\t\t\tvalue: selData[typeof search.props?.[\"value\"] === \"string\" ? search.props[\"value\"] : \"value\"] as\n\t\t\t\t\t\t\t\t\t\t\t\t\tstring | number | boolean | object,\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled: Boolean(\n\t\t\t\t\t\t\t\t\t\t\t\t\tselData[typeof search.props?.[\"disabled\"] === \"string\" ? search.props[\"disabled\"] : \"disabled\"]\n\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t: slots[\"default\"]?.({\n\t\t\t\t\t\t\t\t\t\t\tcolumn: props.column,\n\t\t\t\t\t\t\t\t\t\t\tsearch: props.search,\n\t\t\t\t\t\t\t\t\t\t\t...getTableDefaultSlots(tableState),\n\t\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t}\n\t\t\t\t\t)}\n\t\t\t\t</Fragment>\n\t\t\t);\n\t\t});\n\t},\n});\n"],"mappings":"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"}
|
|
@@ -54,7 +54,7 @@ const useTable = (props, slots, emit) => {
|
|
|
54
54
|
] : []]),
|
|
55
55
|
tableData: [],
|
|
56
56
|
tableSpanData: computed(() => {
|
|
57
|
-
if (state.spanColumns
|
|
57
|
+
if (state.spanColumns.length > 0 && state.tableData.length > 0) {
|
|
58
58
|
const result = {};
|
|
59
59
|
const spanIndexes = {};
|
|
60
60
|
state.spanColumns.forEach((item) => {
|
|
@@ -116,24 +116,24 @@ const useTable = (props, slots, emit) => {
|
|
|
116
116
|
state.loadingText = "加载中...";
|
|
117
117
|
state.autoColumnWidth = [];
|
|
118
118
|
const autoWidthColumns = state.tableColumns.filter((f) => f.autoWidth);
|
|
119
|
-
if (slots
|
|
119
|
+
if (slots.operation) autoWidthColumns.push({ prop: "__table-operation" });
|
|
120
120
|
if (autoWidthColumns.length > 0) {
|
|
121
121
|
const otherWidth = _globalSize.value === "default" ? 25 : 17;
|
|
122
122
|
nextTick(() => {
|
|
123
123
|
const tableDom = document.querySelector(`.fa-table__${props.tableKey}`);
|
|
124
124
|
if (tableDom) autoWidthColumns.forEach((item) => {
|
|
125
|
-
const headerColumnDom = tableDom.querySelector(`.__fa-table__auto-width-column__cell-header__${item
|
|
126
|
-
const cellColumnDoms = tableDom.querySelectorAll(`.__fa-table__auto-width-column__cell__${item
|
|
125
|
+
const headerColumnDom = tableDom.querySelector(`.__fa-table__auto-width-column__cell-header__${item.prop}`);
|
|
126
|
+
const cellColumnDoms = tableDom.querySelectorAll(`.__fa-table__auto-width-column__cell__${item.prop}`);
|
|
127
127
|
let maxWidth = 0;
|
|
128
128
|
if (headerColumnDom) {
|
|
129
129
|
maxWidth = Math.ceil(headerColumnDom.scrollWidth) + otherWidth;
|
|
130
|
-
if (item
|
|
130
|
+
if (item.sortable) maxWidth += 24;
|
|
131
131
|
}
|
|
132
132
|
cellColumnDoms.forEach((cellDom) => {
|
|
133
133
|
const curWidth = Math.ceil(cellDom.scrollWidth) + otherWidth;
|
|
134
134
|
if (curWidth > maxWidth) maxWidth = curWidth;
|
|
135
135
|
});
|
|
136
|
-
const findInfo = state.autoColumnWidth.find((f) => f.prop === item
|
|
136
|
+
const findInfo = state.autoColumnWidth.find((f) => f.prop === item.prop);
|
|
137
137
|
if (findInfo) findInfo.width = Math.max(findInfo.width, maxWidth);
|
|
138
138
|
else if (item.prop) state.autoColumnWidth.push({
|
|
139
139
|
prop: item.prop,
|
|
@@ -354,7 +354,7 @@ const useTable = (props, slots, emit) => {
|
|
|
354
354
|
state.tablePagination.pageIndex = 1;
|
|
355
355
|
state.searchParam = {};
|
|
356
356
|
defaultSearchTime();
|
|
357
|
-
|
|
357
|
+
Object.assign(state.searchParam, state.initParam);
|
|
358
358
|
emit("reset", state.searchParam);
|
|
359
359
|
await loadData();
|
|
360
360
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTable.mjs","names":[],"sources":["../../../../src/components/table/src/useTable.ts"],"sourcesContent":["import { computed, nextTick, provide, reactive, ref, watch } from \"vue\";\nimport { dayjs, useGlobalSize } from \"element-plus\";\nimport { isArray, isFunction } from \"lodash-unified\";\nimport { callOptionalFunction, debounce } from \"../../../utils\";\nimport { tableUtil } from \"../utils/table\";\nimport { getTableDefaultSlots } from \"./table.type\";\nimport type { TableInstance } from \"element-plus\";\nimport type { ExtractPropTypes, InjectionKey, Ref, SetupContext } from \"vue\";\nimport type { makeSlots } from \"../../../utils\";\nimport type { PagedInput, PagedResult } from \"./page.type\";\nimport type { FaTableSlots, faTableEmits, faTableProps } from \"./table\";\nimport type { DefaultRow, FaTableState } from \"./table.state\";\nimport type { FaTableColumnCtx, FaTableEnumColumnCtx } from \"./table.type\";\n\n/** FaTable 状态的依赖注入键。 */\nexport const tableStateKey: InjectionKey<FaTableState> = Symbol(\"tableState\");\n/** FaTable 枚举映射的依赖注入键。 */\nexport const enumMapKey: InjectionKey<Map<string, FaTableEnumColumnCtx[]>> = Symbol(\"enumMap\");\n\ntype TableSetupContext = SetupContext<typeof faTableEmits, ReturnType<typeof makeSlots<FaTableSlots>>>;\n\ninterface TableComposable {\n\t_globalSize: ReturnType<typeof useGlobalSize>;\n\tstate: FaTableState;\n\telementRef: Ref<HTMLElement | undefined>;\n\ttableRef: Ref<TableInstance | undefined>;\n\thandleTableColumnAutoWidth: () => void;\n\tgetRequestParam: () => PagedInput;\n\tloadTableColumns: () => void;\n\thandleSizeChange: (pageSize: number) => void;\n\thandlePaginationChange: (value: number) => void;\n\tdefaultSearchTime: () => void;\n\ttableSearch: () => Promise<void>;\n\ttableReset: () => Promise<void>;\n\tdoRender: () => Promise<void>;\n\tdoLoading: (loadingFunction: () => void | Promise<void>, loadingText?: string) => Promise<void>;\n\thandleCustomCellClick: (emitName: string, context: { row: DefaultRow; column: FaTableColumnCtx; $index: number }) => void;\n}\n\n/**\n * 创建 FaTable 的状态和操作方法。\n *\n * @param props - FaTable 的 Props。\n * @param slots - FaTable 的插槽。\n * @param emit - FaTable 的事件触发器。\n * @returns FaTable 的状态、引用和操作方法。\n */\nexport const useTable = (\n\tprops: ExtractPropTypes<typeof faTableProps>,\n\tslots: TableSetupContext[\"slots\"],\n\temit: TableSetupContext[\"emit\"]\n): TableComposable => {\n\tconst _globalSize = useGlobalSize();\n\n\tconst elementRef = ref<HTMLElement>();\n\tconst tableRef = ref<TableInstance>();\n\n\t/**\n\t * 定义 enumMap 存储 enum 值(避免异步请求无法格式化单元格内容 || 无法填充搜索下拉选择)\n\t */\n\tconst enumMap = reactive(new Map<string, FaTableEnumColumnCtx[]>());\n\tprovide(enumMapKey, enumMap);\n\n\tconst state: FaTableState = reactive({\n\t\tloading: false,\n\t\tloadingText: \"加载中...\",\n\t\torgColumns: [],\n\t\ttableColumns: computed(() => state.orgColumns.filter((f) => f.prop && !f.pureSearch)),\n\t\tsearchColumns: computed(() =>\n\t\t\tstate.orgColumns\n\t\t\t\t.filter((item) => item.pureSearch === true || item.search !== undefined)\n\t\t\t\t.sort((a, b) => {\n\t\t\t\t\treturn (a.search?.order ?? 0) - (b.search?.order ?? 0);\n\t\t\t\t})\n\t\t),\n\t\tspanColumns: computed(() => [\n\t\t\t...state.orgColumns.flatMap((column) => (column.spanProp ? [{ prop: column.prop ?? \"\", spanProp: column.spanProp }] : [])),\n\t\t\t...(props.props.span\n\t\t\t\t? [\n\t\t\t\t\t\t{ prop: \"__table-index\", spanProp: props.props.span },\n\t\t\t\t\t\t{ prop: \"__table-selection\", spanProp: props.props.span },\n\t\t\t\t\t\t{ prop: \"__table-operation\", spanProp: props.props.span },\n\t\t\t\t\t]\n\t\t\t\t: []),\n\t\t]),\n\t\ttableData: [],\n\t\ttableSpanData: computed(() => {\n\t\t\tif (state.spanColumns?.length > 0 && state.tableData?.length > 0) {\n\t\t\t\tconst result: Record<string, number[]> = {};\n\t\t\t\tconst spanIndexes: Record<string, number> = {};\n\t\t\t\tstate.spanColumns.forEach((item) => {\n\t\t\t\t\tresult[item.prop] = new Array<number>(state.tableData.length).fill(1, 0, 1).fill(0, 1);\n\t\t\t\t\tspanIndexes[item.prop] = 0;\n\t\t\t\t});\n\t\t\t\tfor (let i = 1; i < state.tableData.length; i++) {\n\t\t\t\t\tstate.spanColumns.forEach((item) => {\n\t\t\t\t\t\tconst currentRow = state.tableData[i];\n\t\t\t\t\t\tconst previousRow = state.tableData[i - 1];\n\t\t\t\t\t\tconst spanValues = result[item.prop];\n\t\t\t\t\t\tconst spanIndex = spanIndexes[item.prop];\n\t\t\t\t\t\tif (currentRow === undefined || previousRow === undefined || spanValues === undefined || spanIndex === undefined) return;\n\t\t\t\t\t\tif (currentRow[item.spanProp] === previousRow[item.spanProp]) {\n\t\t\t\t\t\t\tspanValues[spanIndex] = (spanValues[spanIndex] ?? 0) + 1;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tspanIndexes[item.prop] = i;\n\t\t\t\t\t\t\tspanValues[i] = 1;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t}\n\t\t\treturn {};\n\t\t}),\n\t\ttablePagination: {\n\t\t\tpageIndex: 1,\n\t\t\tpageSize: 20,\n\t\t\ttotalRows: 0,\n\t\t},\n\t\tinitParam: {},\n\t\tsearchParam: {},\n\t\tsearchValueUpdate: \"\",\n\t\tsearchForm: props.searchForm,\n\t\tselected: false,\n\t\tselectedList: [],\n\t\tselectedListIds: computed(() =>\n\t\t\tstate.selectedList.flatMap((item) => {\n\t\t\t\tconst rowKey: unknown = isFunction(props.rowKey) ? props.rowKey(item) : tableUtil.handleRowAccordingToProp(item, props.rowKey);\n\t\t\t\treturn typeof rowKey === \"string\" || typeof rowKey === \"number\" ? [rowKey] : [];\n\t\t\t})\n\t\t),\n\t\tindeterminateSelectedListIds: [],\n\t\toperationColumnWidth: computed(() => {\n\t\t\tconst findAutoCol = state.autoColumnWidth.find((f) => f.prop === \"__table-operation\");\n\t\t\tif (findAutoCol) {\n\t\t\t\treturn `${findAutoCol.width}px`;\n\t\t\t}\n\t\t\tswitch (_globalSize.value) {\n\t\t\t\tcase \"large\":\n\t\t\t\tcase \"default\":\n\t\t\t\t\treturn \"54px\";\n\t\t\t\tcase \"small\":\n\t\t\t\t\treturn \"42px\";\n\t\t\t\tdefault:\n\t\t\t\t\treturn \"auto\";\n\t\t\t}\n\t\t}),\n\t\timagePreview: false,\n\t\tpreviewList: [],\n\t\ttableWidth: 0,\n\t\ttableHeight: 0,\n\t\tautoColumnWidth: [],\n\t});\n\tlet requestVersion = 0;\n\n\tprovide(tableStateKey, state);\n\n\tconst handleTableColumnAutoWidth = (): void => {\n\t\tstate.loading = true;\n\t\tstate.loadingText = \"加载中...\";\n\t\tstate.autoColumnWidth = [];\n\t\tconst autoWidthColumns = state.tableColumns.filter((f) => f.autoWidth);\n\t\tif (slots?.operation) {\n\t\t\t// 操作列自动宽度\n\t\t\tautoWidthColumns.push({\n\t\t\t\tprop: \"__table-operation\",\n\t\t\t});\n\t\t}\n\t\tif (autoWidthColumns.length > 0) {\n\t\t\t// padding24/16 + border1\n\t\t\tconst otherWidth = _globalSize.value === \"default\" ? 25 : 17;\n\t\t\tvoid nextTick(() => {\n\t\t\t\tconst tableDom = document.querySelector(`.fa-table__${props.tableKey}`);\n\t\t\t\tif (tableDom) {\n\t\t\t\t\tautoWidthColumns.forEach((item) => {\n\t\t\t\t\t\tconst headerColumnDom = tableDom.querySelector(`.__fa-table__auto-width-column__cell-header__${item?.prop}`);\n\t\t\t\t\t\tconst cellColumnDoms = tableDom.querySelectorAll(`.__fa-table__auto-width-column__cell__${item?.prop}`);\n\t\t\t\t\t\tlet maxWidth = 0;\n\t\t\t\t\t\tif (headerColumnDom) {\n\t\t\t\t\t\t\tmaxWidth = Math.ceil(headerColumnDom.scrollWidth) + otherWidth;\n\t\t\t\t\t\t\tif (item?.sortable) {\n\t\t\t\t\t\t\t\tmaxWidth += 24;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcellColumnDoms.forEach((cellDom) => {\n\t\t\t\t\t\t\tconst curWidth = Math.ceil(cellDom.scrollWidth) + otherWidth;\n\t\t\t\t\t\t\tif (curWidth > maxWidth) {\n\t\t\t\t\t\t\t\tmaxWidth = curWidth;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t\tconst findInfo = state.autoColumnWidth.find((f) => f.prop === item?.prop);\n\t\t\t\t\t\tif (findInfo) {\n\t\t\t\t\t\t\tfindInfo.width = Math.max(findInfo.width, maxWidth);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (item.prop) {\n\t\t\t\t\t\t\t\tstate.autoColumnWidth.push({\n\t\t\t\t\t\t\t\t\tprop: item.prop,\n\t\t\t\t\t\t\t\t\twidth: maxWidth,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}).finally(() => {\n\t\t\t\tstate.loading = false;\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tstate.loading = false;\n\t};\n\n\tconst handleTableData = (data: DefaultRow[]): DefaultRow[] => {\n\t\tif (props.treeData) {\n\t\t\tconst result: DefaultRow[] = [];\n\t\t\tdata.forEach((row) => {\n\t\t\t\tconst rowList: unknown = row[props.props.children ?? \"children\"];\n\t\t\t\tif (isArray(rowList)) {\n\t\t\t\t\t// 如果 rowList 是数组,遍历并合并每个子项\n\t\t\t\t\tconst childRows: unknown[] = rowList;\n\t\t\t\t\tchildRows.forEach((childRow) => {\n\t\t\t\t\t\tresult.push(typeof childRow === \"object\" && childRow !== null ? { ...row, ...childRow } : row);\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tresult.push(typeof rowList === \"object\" && rowList !== null ? { ...row, ...rowList } : row);\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn result;\n\t\t} else {\n\t\t\treturn data;\n\t\t}\n\t};\n\n\tconst getRequestParam = (): PagedInput => {\n\t\tconst params = { ...state.searchParam, ...(props.pagination ? state.tablePagination : {}) };\n\t\t// 删除总条数\n\t\tdelete params.totalRows;\n\t\treturn params;\n\t};\n\n\tconst loadData = async (): Promise<void> => {\n\t\tconst currentRequestVersion = ++requestVersion;\n\t\tstate.loading = true;\n\t\tstate.loadingText = \"加载中...\";\n\t\tif (props.requestApi) {\n\t\t\tconst params = getRequestParam();\n\t\t\temit(\"refresh\", params);\n\t\t\tlet pageData: DefaultRow[];\n\t\t\ttry {\n\t\t\t\tconst resData = await props.requestApi(params);\n\t\t\t\tif (currentRequestVersion !== requestVersion) return;\n\t\t\t\t// 数据回调\n\t\t\t\tprops.dataCallback?.(resData);\n\t\t\t\t// 解析 API 接口返回的分页数据(如果有分页更新分页信息)\n\t\t\t\tif (props.pagination) {\n\t\t\t\t\tif (isArray(resData)) {\n\t\t\t\t\t\tpageData = resData;\n\t\t\t\t\t\tstate.tablePagination.totalRows = resData.length;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst pageRes = resData as PagedResult;\n\t\t\t\t\t\tpageData = pageRes.rows ?? [];\n\t\t\t\t\t\tObject.assign(state.tablePagination, {\n\t\t\t\t\t\t\tpageIndex: pageRes.pageIndex ?? state.tablePagination.pageIndex,\n\t\t\t\t\t\t\tpageSize: pageRes.pageSize ?? state.tablePagination.pageSize,\n\t\t\t\t\t\t\ttotalRows: pageRes.totalRows ?? pageData.length,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tpageData = resData as DefaultRow[];\n\t\t\t\t\t// 更新分页信息\n\t\t\t\t\tObject.assign(state.tablePagination, {\n\t\t\t\t\t\tpageIndex: 1,\n\t\t\t\t\t\tpageSize: 0,\n\t\t\t\t\t\ttotalRows: pageData.length,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tstate.tableData = handleTableData(pageData);\n\t\t\t} catch (error) {\n\t\t\t\tif (currentRequestVersion !== requestVersion) return;\n\t\t\t\tstate.tableData = [];\n\t\t\t\tthrow error;\n\t\t\t} finally {\n\t\t\t\tif (currentRequestVersion === requestVersion) state.loading = false;\n\t\t\t}\n\t\t} else {\n\t\t\temit(\"refresh\", { searchValue: state.searchParam.searchValue });\n\t\t\tlet _value = handleTableData([...props.data]);\n\t\t\t_value = _value.filter((f) => {\n\t\t\t\tconst searchValue = state.searchParam.searchValue;\n\t\t\t\tif (typeof searchValue !== \"string\" || searchValue.length === 0) return true;\n\t\t\t\treturn state.tableColumns.some((col) => {\n\t\t\t\t\tconst value: unknown = tableUtil.handleRowAccordingToProp(f, col.prop ?? \"\");\n\t\t\t\t\tconst text =\n\t\t\t\t\t\ttypeof value === \"string\" || typeof value === \"number\" || typeof value === \"bigint\" || typeof value === \"boolean\"\n\t\t\t\t\t\t\t? String(value)\n\t\t\t\t\t\t\t: \"\";\n\t\t\t\t\treturn text.toLowerCase().includes(searchValue.toLowerCase());\n\t\t\t\t});\n\t\t\t});\n\t\t\tif (isArray(state.searchParam.sortList) && state.searchParam.sortList.length > 0) {\n\t\t\t\t_value = _value.sort(tableUtil.arrayDynamicSort(state.searchParam.sortList));\n\t\t\t}\n\t\t\tif (props.pagination) {\n\t\t\t\t// 更新分页信息\n\t\t\t\tObject.assign(state.tablePagination, {\n\t\t\t\t\ttotalRows: _value.length,\n\t\t\t\t});\n\t\t\t\tconst pageStart = (state.tablePagination.pageIndex - 1) * state.tablePagination.pageSize;\n\t\t\t\tconst pageEnd = pageStart + state.tablePagination.pageSize;\n\t\t\t\tstate.tableData = _value.slice(pageStart, pageEnd);\n\t\t\t} else {\n\t\t\t\tstate.tableData = _value;\n\t\t\t\t// 更新分页信息\n\t\t\t\tObject.assign(state.tablePagination, {\n\t\t\t\t\tpageIndex: 1,\n\t\t\t\t\tpageSize: 0,\n\t\t\t\t\ttotalRows: _value.length,\n\t\t\t\t});\n\t\t\t}\n\t\t\tstate.loading = false;\n\t\t}\n\t\thandleTableColumnAutoWidth();\n\t};\n\n\tconst cloneColumns = (columns: FaTableColumnCtx[]): FaTableColumnCtx[] =>\n\t\tcolumns.map((column) => ({\n\t\t\t...column,\n\t\t\t...(column.search && { search: { ...column.search, ...(column.search.props && { props: { ...column.search.props } }) } }),\n\t\t\t...(column._children && { _children: cloneColumns(column._children) }),\n\t\t}));\n\n\tconst loadTableColumns = (): void => {\n\t\tlet columns: FaTableColumnCtx[] = props.columns ? cloneColumns(props.columns) : [];\n\t\t// 默认值处理\n\t\tcolumns.forEach((col) => {\n\t\t\t// 处理搜索项的 key 和 label\n\t\t\tif (col.pureSearch || col.search) {\n\t\t\t\tcol.search ??= { el: \"\" };\n\t\t\t\tcol.search.key ??= col.prop;\n\t\t\t\tcol.search.label ??= col.label;\n\t\t\t\t// 处理默认值\n\t\t\t\tif (col.search.key && col.search.defaultValue !== undefined) {\n\t\t\t\t\tstate.searchParam[col.search.key] = col.search.defaultValue;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t// 排序\n\t\tcolumns = columns.sort((a, b) => {\n\t\t\treturn (a.order ?? 0) - (b.order ?? 0);\n\t\t});\n\n\t\t// TODO:这里的扁平化暂时没用到\n\t\tstate.orgColumns = tableUtil.flatColumns(columns, enumMap);\n\t};\n\n\tconst handleSizeChange = (pageSize: number): void => {\n\t\tstate.tablePagination.pageIndex = 1;\n\t\tstate.tablePagination.pageSize = pageSize;\n\t\temit(\"sizeChange\", pageSize);\n\t\temit(\"paginationChange\", 1, pageSize);\n\t\tvoid loadData();\n\t};\n\tconst handlePaginationChange = (val: number): void => {\n\t\tstate.tablePagination.pageIndex = val;\n\t\temit(\"paginationChange\", val, state.tablePagination.pageSize);\n\t\tvoid loadData();\n\t};\n\n\tconst updatedTotalParam = (): void => {\n\t\t// 处理查询参数,可以给查询参数加自定义前缀操作\n\t\tconst newSearchParam: Record<string, unknown> = {};\n\t\t// 防止手动清空输入框携带参数(这里可以自定义查询参数前缀)\n\t\tfor (const key in state.searchParam) {\n\t\t\t// * 某些情况下参数为 false/0 也应该携带参数\n\t\t\tif (state.searchParam[key] || state.searchParam[key] === false || state.searchParam[key] === 0) {\n\t\t\t\tnewSearchParam[key] = state.searchParam[key];\n\t\t\t}\n\t\t\t// 处理某些情况下如果为空字符串,其实是不需要传到后端的\n\t\t\telse if (!state.searchParam[key]) {\n\t\t\t\tdelete state.searchParam[key];\n\t\t\t}\n\t\t}\n\t\tObject.assign(state.searchParam, newSearchParam);\n\t};\n\n\tconst defaultSearchTime = (): void => {\n\t\tif (props.hideSearchTime) {\n\t\t\tstate.searchParam.searchTimeList = undefined;\n\t\t} else {\n\t\t\tconst end = new Date();\n\t\t\tconst start = new Date();\n\t\t\tif (props.futureSearchTime) {\n\t\t\t\tswitch (props.dataSearchRange) {\n\t\t\t\t\tcase \"Past1D\":\n\t\t\t\t\t\tend.setDate(end.getDate() + 1);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"Past3D\":\n\t\t\t\t\t\tend.setDate(end.getDate() + 3);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"Past1W\":\n\t\t\t\t\t\tend.setDate(end.getDate() + 7);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"Past1M\":\n\t\t\t\t\t\tend.setMonth(end.getMonth() + 1);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"Past3M\":\n\t\t\t\t\t\tend.setMonth(end.getMonth() + 3);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"Past6M\":\n\t\t\t\t\t\tend.setMonth(end.getMonth() + 6);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"Past1Y\":\n\t\t\t\t\t\tend.setFullYear(end.getFullYear() + 1);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"Past3Y\":\n\t\t\t\t\t\tend.setFullYear(end.getFullYear() + 3);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tswitch (props.dataSearchRange) {\n\t\t\t\t\tcase \"Past1D\":\n\t\t\t\t\t\tstart.setDate(start.getDate() - 1);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"Past3D\":\n\t\t\t\t\t\tstart.setDate(start.getDate() - 3);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"Past1W\":\n\t\t\t\t\t\tstart.setDate(start.getDate() - 7);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"Past1M\":\n\t\t\t\t\t\tstart.setMonth(start.getMonth() - 1);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"Past3M\":\n\t\t\t\t\t\tstart.setMonth(start.getMonth() - 3);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"Past6M\":\n\t\t\t\t\t\tstart.setMonth(start.getMonth() - 6);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"Past1Y\":\n\t\t\t\t\t\tstart.setFullYear(start.getFullYear() - 1);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"Past3Y\":\n\t\t\t\t\t\tstart.setFullYear(start.getFullYear() - 3);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tstate.searchParam.searchTimeList = [dayjs(start).format(\"YYYY-MM-DD 00:00:00\"), dayjs(end).format(\"YYYY-MM-DD 23:59:59\")];\n\t\t}\n\t};\n\n\tconst tableSearch = async (): Promise<void> => {\n\t\t// 重置到第一页\n\t\tstate.tablePagination.pageIndex = 1;\n\t\tupdatedTotalParam();\n\t\tawait loadData();\n\t};\n\tconst renderTable = debounce((): Promise<void> => {\n\t\tloadTableColumns();\n\t\treturn tableSearch();\n\t}, 300);\n\n\tconst tableReset = async (): Promise<void> => {\n\t\t// 重置到第一页\n\t\tstate.tablePagination.pageIndex = 1;\n\t\t// 清除搜索条件\n\t\tstate.searchParam = {};\n\t\tdefaultSearchTime();\n\t\t// 重置搜索表单的时候,如果有默认搜索参数,则重置默认的搜索参数\n\t\tif (typeof state.initParam === \"object\" && state.initParam !== null) {\n\t\t\tObject.assign(state.searchParam, state.initParam);\n\t\t}\n\t\temit(\"reset\", state.searchParam);\n\t\tawait loadData();\n\t};\n\n\tconst doRender = async (): Promise<void> => {\n\t\tstate.orgColumns = [];\n\t\tstate.autoColumnWidth = [];\n\t\tstate.tableData = [];\n\t\tawait renderTable();\n\t};\n\n\tconst doLoading = async (loadingFunction: () => void | Promise<void>, loadingText = \"加载中...\"): Promise<void> => {\n\t\tstate.loading = true;\n\t\tstate.loadingText = loadingText;\n\t\ttry {\n\t\t\tawait callOptionalFunction(loadingFunction);\n\t\t} finally {\n\t\t\tstate.loading = false;\n\t\t}\n\t};\n\n\tconst handleCustomCellClick = (\n\t\temitName: string,\n\t\t{ row, column, $index }: { row: DefaultRow; column: FaTableColumnCtx; $index: number }\n\t): void => {\n\t\temit(\"customCellClick\", emitName, { row, column, $index, ...getTableDefaultSlots(state) });\n\t};\n\n\twatch(\n\t\t() => props.tableKey,\n\t\t() => doRender()\n\t);\n\n\twatch(\n\t\t() => props.searchForm,\n\t\t(newValue) => {\n\t\t\tstate.searchForm = newValue;\n\t\t}\n\t);\n\n\treturn {\n\t\t_globalSize,\n\t\tstate,\n\t\telementRef,\n\t\ttableRef,\n\t\thandleTableColumnAutoWidth,\n\t\tgetRequestParam,\n\t\tloadTableColumns,\n\t\thandleSizeChange,\n\t\thandlePaginationChange,\n\t\tdefaultSearchTime,\n\t\ttableSearch,\n\t\ttableReset,\n\t\tdoRender,\n\t\tdoLoading,\n\t\thandleCustomCellClick,\n\t};\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useTable.mjs","names":[],"sources":["../../../../src/components/table/src/useTable.ts"],"sourcesContent":["import { computed, nextTick, provide, reactive, ref, watch } from \"vue\";\nimport { dayjs, useGlobalSize } from \"element-plus\";\nimport { isArray, isFunction } from \"lodash-unified\";\nimport { callOptionalFunction, debounce } from \"../../../utils\";\nimport { tableUtil } from \"../utils/table\";\nimport { getTableDefaultSlots } from \"./table.type\";\nimport type { TableInstance } from \"element-plus\";\nimport type { ExtractPropTypes, InjectionKey, Ref, SetupContext } from \"vue\";\nimport type { makeSlots } from \"../../../utils\";\nimport type { PagedInput, PagedResult } from \"./page.type\";\nimport type { FaTableSlots, faTableEmits, faTableProps } from \"./table\";\nimport type { DefaultRow, FaTableState } from \"./table.state\";\nimport type { FaTableColumnCtx, FaTableEnumColumnCtx } from \"./table.type\";\n\n/** FaTable 状态的依赖注入键。 */\nexport const tableStateKey: InjectionKey<FaTableState> = Symbol(\"tableState\");\n/** FaTable 枚举映射的依赖注入键。 */\nexport const enumMapKey: InjectionKey<Map<string, FaTableEnumColumnCtx[]>> = Symbol(\"enumMap\");\n\ntype TableSetupContext = SetupContext<typeof faTableEmits, ReturnType<typeof makeSlots<FaTableSlots>>>;\n\ninterface TableComposable {\n\t_globalSize: ReturnType<typeof useGlobalSize>;\n\tstate: FaTableState;\n\telementRef: Ref<HTMLElement | undefined>;\n\ttableRef: Ref<TableInstance | undefined>;\n\thandleTableColumnAutoWidth: () => void;\n\tgetRequestParam: () => PagedInput;\n\tloadTableColumns: () => void;\n\thandleSizeChange: (pageSize: number) => void;\n\thandlePaginationChange: (value: number) => void;\n\tdefaultSearchTime: () => void;\n\ttableSearch: () => Promise<void>;\n\ttableReset: () => Promise<void>;\n\tdoRender: () => Promise<void>;\n\tdoLoading: (loadingFunction: () => void | Promise<void>, loadingText?: string) => Promise<void>;\n\thandleCustomCellClick: (emitName: string, context: { row: DefaultRow; column: FaTableColumnCtx; $index: number }) => void;\n}\n\n/**\n * 创建 FaTable 的状态和操作方法。\n *\n * @param props - FaTable 的 Props。\n * @param slots - FaTable 的插槽。\n * @param emit - FaTable 的事件触发器。\n * @returns FaTable 的状态、引用和操作方法。\n */\nexport const useTable = (\n\tprops: ExtractPropTypes<typeof faTableProps>,\n\tslots: TableSetupContext[\"slots\"],\n\temit: TableSetupContext[\"emit\"]\n): TableComposable => {\n\tconst _globalSize = useGlobalSize();\n\n\tconst elementRef = ref<HTMLElement>();\n\tconst tableRef = ref<TableInstance>();\n\n\t/**\n\t * 定义 enumMap 存储 enum 值(避免异步请求无法格式化单元格内容 || 无法填充搜索下拉选择)\n\t */\n\tconst enumMap = reactive(new Map<string, FaTableEnumColumnCtx[]>());\n\tprovide(enumMapKey, enumMap);\n\n\tconst state: FaTableState = reactive({\n\t\tloading: false,\n\t\tloadingText: \"加载中...\",\n\t\torgColumns: [],\n\t\ttableColumns: computed(() => state.orgColumns.filter((f) => f.prop && !f.pureSearch)),\n\t\tsearchColumns: computed(() =>\n\t\t\tstate.orgColumns\n\t\t\t\t.filter((item) => item.pureSearch === true || item.search !== undefined)\n\t\t\t\t.sort((a, b) => {\n\t\t\t\t\treturn (a.search?.order ?? 0) - (b.search?.order ?? 0);\n\t\t\t\t})\n\t\t),\n\t\tspanColumns: computed(() => [\n\t\t\t...state.orgColumns.flatMap((column) => (column.spanProp ? [{ prop: column.prop ?? \"\", spanProp: column.spanProp }] : [])),\n\t\t\t...(props.props.span\n\t\t\t\t? [\n\t\t\t\t\t\t{ prop: \"__table-index\", spanProp: props.props.span },\n\t\t\t\t\t\t{ prop: \"__table-selection\", spanProp: props.props.span },\n\t\t\t\t\t\t{ prop: \"__table-operation\", spanProp: props.props.span },\n\t\t\t\t\t]\n\t\t\t\t: []),\n\t\t]),\n\t\ttableData: [],\n\t\ttableSpanData: computed(() => {\n\t\t\tif (state.spanColumns.length > 0 && state.tableData.length > 0) {\n\t\t\t\tconst result: Record<string, number[]> = {};\n\t\t\t\tconst spanIndexes: Record<string, number> = {};\n\t\t\t\tstate.spanColumns.forEach((item) => {\n\t\t\t\t\tresult[item.prop] = new Array<number>(state.tableData.length).fill(1, 0, 1).fill(0, 1);\n\t\t\t\t\tspanIndexes[item.prop] = 0;\n\t\t\t\t});\n\t\t\t\tfor (let i = 1; i < state.tableData.length; i++) {\n\t\t\t\t\tstate.spanColumns.forEach((item) => {\n\t\t\t\t\t\tconst currentRow = state.tableData[i];\n\t\t\t\t\t\tconst previousRow = state.tableData[i - 1];\n\t\t\t\t\t\tconst spanValues = result[item.prop];\n\t\t\t\t\t\tconst spanIndex = spanIndexes[item.prop];\n\t\t\t\t\t\tif (currentRow === undefined || previousRow === undefined || spanValues === undefined || spanIndex === undefined) return;\n\t\t\t\t\t\tif (currentRow[item.spanProp] === previousRow[item.spanProp]) {\n\t\t\t\t\t\t\tspanValues[spanIndex] = (spanValues[spanIndex] ?? 0) + 1;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tspanIndexes[item.prop] = i;\n\t\t\t\t\t\t\tspanValues[i] = 1;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t}\n\t\t\treturn {};\n\t\t}),\n\t\ttablePagination: {\n\t\t\tpageIndex: 1,\n\t\t\tpageSize: 20,\n\t\t\ttotalRows: 0,\n\t\t},\n\t\tinitParam: {},\n\t\tsearchParam: {},\n\t\tsearchValueUpdate: \"\",\n\t\tsearchForm: props.searchForm,\n\t\tselected: false,\n\t\tselectedList: [],\n\t\tselectedListIds: computed(() =>\n\t\t\tstate.selectedList.flatMap((item) => {\n\t\t\t\tconst rowKey: unknown = isFunction(props.rowKey) ? props.rowKey(item) : tableUtil.handleRowAccordingToProp(item, props.rowKey);\n\t\t\t\treturn typeof rowKey === \"string\" || typeof rowKey === \"number\" ? [rowKey] : [];\n\t\t\t})\n\t\t),\n\t\tindeterminateSelectedListIds: [],\n\t\toperationColumnWidth: computed(() => {\n\t\t\tconst findAutoCol = state.autoColumnWidth.find((f) => f.prop === \"__table-operation\");\n\t\t\tif (findAutoCol) {\n\t\t\t\treturn `${findAutoCol.width}px`;\n\t\t\t}\n\t\t\tswitch (_globalSize.value) {\n\t\t\t\tcase \"large\":\n\t\t\t\tcase \"default\":\n\t\t\t\t\treturn \"54px\";\n\t\t\t\tcase \"small\":\n\t\t\t\t\treturn \"42px\";\n\t\t\t\tcase \"\":\n\t\t\t\tdefault:\n\t\t\t\t\treturn \"auto\";\n\t\t\t}\n\t\t}),\n\t\timagePreview: false,\n\t\tpreviewList: [],\n\t\ttableWidth: 0,\n\t\ttableHeight: 0,\n\t\tautoColumnWidth: [],\n\t});\n\tlet requestVersion = 0;\n\n\tprovide(tableStateKey, state);\n\n\tconst handleTableColumnAutoWidth = (): void => {\n\t\tstate.loading = true;\n\t\tstate.loadingText = \"加载中...\";\n\t\tstate.autoColumnWidth = [];\n\t\tconst autoWidthColumns = state.tableColumns.filter((f) => f.autoWidth);\n\t\tif (slots.operation) {\n\t\t\t// 操作列自动宽度\n\t\t\tautoWidthColumns.push({\n\t\t\t\tprop: \"__table-operation\",\n\t\t\t});\n\t\t}\n\t\tif (autoWidthColumns.length > 0) {\n\t\t\t// padding24/16 + border1\n\t\t\tconst otherWidth = _globalSize.value === \"default\" ? 25 : 17;\n\t\t\tnextTick(() => {\n\t\t\t\tconst tableDom = document.querySelector(`.fa-table__${props.tableKey}`);\n\t\t\t\tif (tableDom) {\n\t\t\t\t\tautoWidthColumns.forEach((item) => {\n\t\t\t\t\t\tconst headerColumnDom = tableDom.querySelector(`.__fa-table__auto-width-column__cell-header__${item.prop}`);\n\t\t\t\t\t\tconst cellColumnDoms = tableDom.querySelectorAll(`.__fa-table__auto-width-column__cell__${item.prop}`);\n\t\t\t\t\t\tlet maxWidth = 0;\n\t\t\t\t\t\tif (headerColumnDom) {\n\t\t\t\t\t\t\tmaxWidth = Math.ceil(headerColumnDom.scrollWidth) + otherWidth;\n\t\t\t\t\t\t\tif (item.sortable) {\n\t\t\t\t\t\t\t\tmaxWidth += 24;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcellColumnDoms.forEach((cellDom) => {\n\t\t\t\t\t\t\tconst curWidth = Math.ceil(cellDom.scrollWidth) + otherWidth;\n\t\t\t\t\t\t\tif (curWidth > maxWidth) {\n\t\t\t\t\t\t\t\tmaxWidth = curWidth;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t\tconst findInfo = state.autoColumnWidth.find((f) => f.prop === item.prop);\n\t\t\t\t\t\tif (findInfo) {\n\t\t\t\t\t\t\tfindInfo.width = Math.max(findInfo.width, maxWidth);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (item.prop) {\n\t\t\t\t\t\t\t\tstate.autoColumnWidth.push({\n\t\t\t\t\t\t\t\t\tprop: item.prop,\n\t\t\t\t\t\t\t\t\twidth: maxWidth,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}).finally(() => {\n\t\t\t\tstate.loading = false;\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tstate.loading = false;\n\t};\n\n\tconst handleTableData = (data: DefaultRow[]): DefaultRow[] => {\n\t\tif (props.treeData) {\n\t\t\tconst result: DefaultRow[] = [];\n\t\t\tdata.forEach((row) => {\n\t\t\t\tconst rowList: unknown = row[props.props.children ?? \"children\"];\n\t\t\t\tif (isArray(rowList)) {\n\t\t\t\t\t// 如果 rowList 是数组,遍历并合并每个子项\n\t\t\t\t\tconst childRows: unknown[] = rowList;\n\t\t\t\t\tchildRows.forEach((childRow) => {\n\t\t\t\t\t\tresult.push(typeof childRow === \"object\" && childRow !== null ? { ...row, ...childRow } : row);\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tresult.push(typeof rowList === \"object\" && rowList !== null ? { ...row, ...rowList } : row);\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn result;\n\t\t} else {\n\t\t\treturn data;\n\t\t}\n\t};\n\n\tconst getRequestParam = (): PagedInput => {\n\t\tconst params = { ...state.searchParam, ...(props.pagination ? state.tablePagination : {}) };\n\t\t// 删除总条数\n\t\tdelete params.totalRows;\n\t\treturn params;\n\t};\n\n\tconst loadData = async (): Promise<void> => {\n\t\tconst currentRequestVersion = ++requestVersion;\n\t\tstate.loading = true;\n\t\tstate.loadingText = \"加载中...\";\n\t\tif (props.requestApi) {\n\t\t\tconst params = getRequestParam();\n\t\t\temit(\"refresh\", params);\n\t\t\tlet pageData: DefaultRow[];\n\t\t\ttry {\n\t\t\t\tconst resData = await props.requestApi(params);\n\t\t\t\tif (currentRequestVersion !== requestVersion) return;\n\t\t\t\t// 数据回调\n\t\t\t\tprops.dataCallback?.(resData);\n\t\t\t\t// 解析 API 接口返回的分页数据(如果有分页更新分页信息)\n\t\t\t\tif (props.pagination) {\n\t\t\t\t\tif (isArray(resData)) {\n\t\t\t\t\t\tpageData = resData;\n\t\t\t\t\t\tstate.tablePagination.totalRows = resData.length;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst pageRes = resData as PagedResult;\n\t\t\t\t\t\tpageData = pageRes.rows ?? [];\n\t\t\t\t\t\tObject.assign(state.tablePagination, {\n\t\t\t\t\t\t\tpageIndex: pageRes.pageIndex ?? state.tablePagination.pageIndex,\n\t\t\t\t\t\t\tpageSize: pageRes.pageSize ?? state.tablePagination.pageSize,\n\t\t\t\t\t\t\ttotalRows: pageRes.totalRows ?? pageData.length,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tpageData = resData as DefaultRow[];\n\t\t\t\t\t// 更新分页信息\n\t\t\t\t\tObject.assign(state.tablePagination, {\n\t\t\t\t\t\tpageIndex: 1,\n\t\t\t\t\t\tpageSize: 0,\n\t\t\t\t\t\ttotalRows: pageData.length,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tstate.tableData = handleTableData(pageData);\n\t\t\t} catch (error) {\n\t\t\t\tif (currentRequestVersion !== requestVersion) return;\n\t\t\t\tstate.tableData = [];\n\t\t\t\tthrow error;\n\t\t\t} finally {\n\t\t\t\tif (currentRequestVersion === requestVersion) state.loading = false;\n\t\t\t}\n\t\t} else {\n\t\t\temit(\"refresh\", { searchValue: state.searchParam.searchValue });\n\t\t\tlet _value = handleTableData([...props.data]);\n\t\t\t_value = _value.filter((f) => {\n\t\t\t\tconst searchValue = state.searchParam.searchValue;\n\t\t\t\tif (typeof searchValue !== \"string\" || searchValue.length === 0) return true;\n\t\t\t\treturn state.tableColumns.some((col) => {\n\t\t\t\t\tconst value: unknown = tableUtil.handleRowAccordingToProp(f, col.prop ?? \"\");\n\t\t\t\t\tconst text =\n\t\t\t\t\t\ttypeof value === \"string\" || typeof value === \"number\" || typeof value === \"bigint\" || typeof value === \"boolean\"\n\t\t\t\t\t\t\t? String(value)\n\t\t\t\t\t\t\t: \"\";\n\t\t\t\t\treturn text.toLowerCase().includes(searchValue.toLowerCase());\n\t\t\t\t});\n\t\t\t});\n\t\t\tif (isArray(state.searchParam.sortList) && state.searchParam.sortList.length > 0) {\n\t\t\t\t_value = _value.sort(tableUtil.arrayDynamicSort(state.searchParam.sortList));\n\t\t\t}\n\t\t\tif (props.pagination) {\n\t\t\t\t// 更新分页信息\n\t\t\t\tObject.assign(state.tablePagination, {\n\t\t\t\t\ttotalRows: _value.length,\n\t\t\t\t});\n\t\t\t\tconst pageStart = (state.tablePagination.pageIndex - 1) * state.tablePagination.pageSize;\n\t\t\t\tconst pageEnd = pageStart + state.tablePagination.pageSize;\n\t\t\t\tstate.tableData = _value.slice(pageStart, pageEnd);\n\t\t\t} else {\n\t\t\t\tstate.tableData = _value;\n\t\t\t\t// 更新分页信息\n\t\t\t\tObject.assign(state.tablePagination, {\n\t\t\t\t\tpageIndex: 1,\n\t\t\t\t\tpageSize: 0,\n\t\t\t\t\ttotalRows: _value.length,\n\t\t\t\t});\n\t\t\t}\n\t\t\tstate.loading = false;\n\t\t}\n\t\thandleTableColumnAutoWidth();\n\t};\n\n\tconst cloneColumns = (columns: FaTableColumnCtx[]): FaTableColumnCtx[] =>\n\t\tcolumns.map((column) => ({\n\t\t\t...column,\n\t\t\t...(column.search && { search: { ...column.search, ...(column.search.props && { props: { ...column.search.props } }) } }),\n\t\t\t...(column._children && { _children: cloneColumns(column._children) }),\n\t\t}));\n\n\tconst loadTableColumns = (): void => {\n\t\tlet columns: FaTableColumnCtx[] = props.columns ? cloneColumns(props.columns) : [];\n\t\t// 默认值处理\n\t\tcolumns.forEach((col) => {\n\t\t\t// 处理搜索项的 key 和 label\n\t\t\tif (col.pureSearch || col.search) {\n\t\t\t\tcol.search ??= { el: \"\" };\n\t\t\t\tcol.search.key ??= col.prop;\n\t\t\t\tcol.search.label ??= col.label;\n\t\t\t\t// 处理默认值\n\t\t\t\tif (col.search.key && col.search.defaultValue !== undefined) {\n\t\t\t\t\tstate.searchParam[col.search.key] = col.search.defaultValue;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t// 排序\n\t\tcolumns = columns.sort((a, b) => {\n\t\t\treturn (a.order ?? 0) - (b.order ?? 0);\n\t\t});\n\n\t\t// TODO:这里的扁平化暂时没用到\n\t\tstate.orgColumns = tableUtil.flatColumns(columns, enumMap);\n\t};\n\n\tconst handleSizeChange = (pageSize: number): void => {\n\t\tstate.tablePagination.pageIndex = 1;\n\t\tstate.tablePagination.pageSize = pageSize;\n\t\temit(\"sizeChange\", pageSize);\n\t\temit(\"paginationChange\", 1, pageSize);\n\t\tloadData();\n\t};\n\tconst handlePaginationChange = (val: number): void => {\n\t\tstate.tablePagination.pageIndex = val;\n\t\temit(\"paginationChange\", val, state.tablePagination.pageSize);\n\t\tloadData();\n\t};\n\n\tconst updatedTotalParam = (): void => {\n\t\t// 处理查询参数,可以给查询参数加自定义前缀操作\n\t\tconst newSearchParam: Record<string, unknown> = {};\n\t\t// 防止手动清空输入框携带参数(这里可以自定义查询参数前缀)\n\t\tfor (const key in state.searchParam) {\n\t\t\t// * 某些情况下参数为 false/0 也应该携带参数\n\t\t\tif (state.searchParam[key] || state.searchParam[key] === false || state.searchParam[key] === 0) {\n\t\t\t\tnewSearchParam[key] = state.searchParam[key];\n\t\t\t}\n\t\t\t// 处理某些情况下如果为空字符串,其实是不需要传到后端的\n\t\t\telse if (!state.searchParam[key]) {\n\t\t\t\tdelete state.searchParam[key];\n\t\t\t}\n\t\t}\n\t\tObject.assign(state.searchParam, newSearchParam);\n\t};\n\n\tconst defaultSearchTime = (): void => {\n\t\tif (props.hideSearchTime) {\n\t\t\tstate.searchParam.searchTimeList = undefined;\n\t\t} else {\n\t\t\tconst end = new Date();\n\t\t\tconst start = new Date();\n\t\t\tif (props.futureSearchTime) {\n\t\t\t\tswitch (props.dataSearchRange) {\n\t\t\t\t\tcase \"Past1D\":\n\t\t\t\t\t\tend.setDate(end.getDate() + 1);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"Past3D\":\n\t\t\t\t\t\tend.setDate(end.getDate() + 3);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"Past1W\":\n\t\t\t\t\t\tend.setDate(end.getDate() + 7);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"Past1M\":\n\t\t\t\t\t\tend.setMonth(end.getMonth() + 1);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"Past3M\":\n\t\t\t\t\t\tend.setMonth(end.getMonth() + 3);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"Past6M\":\n\t\t\t\t\t\tend.setMonth(end.getMonth() + 6);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"Past1Y\":\n\t\t\t\t\t\tend.setFullYear(end.getFullYear() + 1);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"Past3Y\":\n\t\t\t\t\t\tend.setFullYear(end.getFullYear() + 3);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tswitch (props.dataSearchRange) {\n\t\t\t\t\tcase \"Past1D\":\n\t\t\t\t\t\tstart.setDate(start.getDate() - 1);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"Past3D\":\n\t\t\t\t\t\tstart.setDate(start.getDate() - 3);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"Past1W\":\n\t\t\t\t\t\tstart.setDate(start.getDate() - 7);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"Past1M\":\n\t\t\t\t\t\tstart.setMonth(start.getMonth() - 1);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"Past3M\":\n\t\t\t\t\t\tstart.setMonth(start.getMonth() - 3);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"Past6M\":\n\t\t\t\t\t\tstart.setMonth(start.getMonth() - 6);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"Past1Y\":\n\t\t\t\t\t\tstart.setFullYear(start.getFullYear() - 1);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"Past3Y\":\n\t\t\t\t\t\tstart.setFullYear(start.getFullYear() - 3);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tstate.searchParam.searchTimeList = [dayjs(start).format(\"YYYY-MM-DD 00:00:00\"), dayjs(end).format(\"YYYY-MM-DD 23:59:59\")];\n\t\t}\n\t};\n\n\tconst tableSearch = async (): Promise<void> => {\n\t\t// 重置到第一页\n\t\tstate.tablePagination.pageIndex = 1;\n\t\tupdatedTotalParam();\n\t\tawait loadData();\n\t};\n\tconst renderTable = debounce((): Promise<void> => {\n\t\tloadTableColumns();\n\t\treturn tableSearch();\n\t}, 300);\n\n\tconst tableReset = async (): Promise<void> => {\n\t\t// 重置到第一页\n\t\tstate.tablePagination.pageIndex = 1;\n\t\t// 清除搜索条件\n\t\tstate.searchParam = {};\n\t\tdefaultSearchTime();\n\t\t// 重置搜索表单的时候,如果有默认搜索参数,则重置默认的搜索参数\n\t\tObject.assign(state.searchParam, state.initParam);\n\t\temit(\"reset\", state.searchParam);\n\t\tawait loadData();\n\t};\n\n\tconst doRender = async (): Promise<void> => {\n\t\tstate.orgColumns = [];\n\t\tstate.autoColumnWidth = [];\n\t\tstate.tableData = [];\n\t\tawait renderTable();\n\t};\n\n\tconst doLoading = async (loadingFunction: () => void | Promise<void>, loadingText = \"加载中...\"): Promise<void> => {\n\t\tstate.loading = true;\n\t\tstate.loadingText = loadingText;\n\t\ttry {\n\t\t\tawait callOptionalFunction(loadingFunction);\n\t\t} finally {\n\t\t\tstate.loading = false;\n\t\t}\n\t};\n\n\tconst handleCustomCellClick = (\n\t\temitName: string,\n\t\t{ row, column, $index }: { row: DefaultRow; column: FaTableColumnCtx; $index: number }\n\t): void => {\n\t\temit(\"customCellClick\", emitName, { row, column, $index, ...getTableDefaultSlots(state) });\n\t};\n\n\twatch(\n\t\t() => props.tableKey,\n\t\t() => doRender()\n\t);\n\n\twatch(\n\t\t() => props.searchForm,\n\t\t(newValue) => {\n\t\t\tstate.searchForm = newValue;\n\t\t}\n\t);\n\n\treturn {\n\t\t_globalSize,\n\t\tstate,\n\t\telementRef,\n\t\ttableRef,\n\t\thandleTableColumnAutoWidth,\n\t\tgetRequestParam,\n\t\tloadTableColumns,\n\t\thandleSizeChange,\n\t\thandlePaginationChange,\n\t\tdefaultSearchTime,\n\t\ttableSearch,\n\t\ttableReset,\n\t\tdoRender,\n\t\tdoLoading,\n\t\thandleCustomCellClick,\n\t};\n};\n"],"mappings":"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"}
|
|
@@ -54,7 +54,7 @@ const tableUtil = {
|
|
|
54
54
|
*/
|
|
55
55
|
arrayDynamicSort(sortList) {
|
|
56
56
|
return (a, b) => {
|
|
57
|
-
if (sortList
|
|
57
|
+
if (sortList.length > 0) for (const condition of sortList) {
|
|
58
58
|
const property = condition.enField;
|
|
59
59
|
const order = condition.mode;
|
|
60
60
|
if (!property) continue;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table.mjs","names":[],"sources":["../../../../src/components/table/utils/table.ts"],"sourcesContent":["import { isArray, isFunction, isString } from \"lodash-unified\";\nimport type { PagedSortInput } from \"../src/page.type\";\nimport type { DefaultRow } from \"../src/table.state\";\nimport type { FaTableColumnCtx, FaTableEnumColumnCtx, FaTableEnumColumnType } from \"../src/table.type\";\n\n/**\n * 表格工具类\n */\nexport const tableUtil = {\n\t/**\n\t * @description 处理无数据情况\n\t * @param {String} callValue 需要处理的值\n\t */\n\tformatValue(callValue: unknown): unknown {\n\t\t// 如果当前值为数组,使用 / 拼接(根据需求自定义)\n\t\tif (isArray(callValue)) return callValue.length ? callValue.join(` , `) : null;\n\t\treturn callValue;\n\t},\n\t/**\n\t * @description 处理 prop 为多级嵌套的情况(列如: prop:user.name)\n\t * @param {Object} row 当前行数据\n\t * @param {String} prop 当前 prop\n\t */\n\thandleRowAccordingToProp(row: DefaultRow, prop: string): unknown {\n\t\tlet value: unknown = row;\n\t\tfor (const item of prop.split(\".\")) {\n\t\t\tif (typeof value !== \"object\" || value === null) return undefined;\n\t\t\tvalue = (value as Record<string, unknown>)[item];\n\t\t}\n\t\treturn value;\n\t},\n\t/**\n\t * @description 处理 prop,当 prop 为多级嵌套时 ==> 返回最后一级 prop\n\t * @param {String} prop 当前 prop\n\t */\n\thandleProp(prop: string): string {\n\t\tconst propArr = prop.split(\".\");\n\t\tif (propArr.length === 1) return prop;\n\t\treturn propArr.at(-1) ?? prop;\n\t},\n\t/**\n\t * @description 根据枚举列表查询当需要的数据(如果指定了 label 和 value 的 key值,会自动识别格式化)\n\t * @param {String} callValue 当前单元格值\n\t * @param {Array} enumData 字典列表\n\t * @param {Array} fieldNames 指定 label && value 的 key 值\n\t * @param {String} type 过滤类型(目前只有 tag)\n\t */\n\tfilterEnum(callValue: unknown, enumData: FaTableEnumColumnCtx[], fieldNames?: { label: string; value: string }, type?: \"tag\"): unknown {\n\t\tconst value = fieldNames?.value ?? \"value\";\n\t\tconst label = fieldNames?.label ?? \"label\";\n\t\tlet filterData: FaTableEnumColumnCtx | undefined;\n\t\tif (isArray(enumData)) {\n\t\t\tfilterData = enumData.find((item) => item[value] === callValue);\n\t\t}\n\t\tif (type === \"tag\") {\n\t\t\treturn filterData?.type ?? \"info\";\n\t\t}\n\t\treturn filterData ? filterData[label] : null;\n\t},\n\t/**\n\t * 数组动态排序\n\t */\n\tarrayDynamicSort(sortList: PagedSortInput[]): (a: DefaultRow, b: DefaultRow) => number {\n\t\treturn (a, b) => {\n\t\t\tif (sortList
|
|
1
|
+
{"version":3,"file":"table.mjs","names":[],"sources":["../../../../src/components/table/utils/table.ts"],"sourcesContent":["import { isArray, isFunction, isString } from \"lodash-unified\";\nimport type { PagedSortInput } from \"../src/page.type\";\nimport type { DefaultRow } from \"../src/table.state\";\nimport type { FaTableColumnCtx, FaTableEnumColumnCtx, FaTableEnumColumnType } from \"../src/table.type\";\n\n/**\n * 表格工具类\n */\nexport const tableUtil = {\n\t/**\n\t * @description 处理无数据情况\n\t * @param {String} callValue 需要处理的值\n\t */\n\tformatValue(callValue: unknown): unknown {\n\t\t// 如果当前值为数组,使用 / 拼接(根据需求自定义)\n\t\tif (isArray(callValue)) return callValue.length ? callValue.join(` , `) : null;\n\t\treturn callValue;\n\t},\n\t/**\n\t * @description 处理 prop 为多级嵌套的情况(列如: prop:user.name)\n\t * @param {Object} row 当前行数据\n\t * @param {String} prop 当前 prop\n\t */\n\thandleRowAccordingToProp(row: DefaultRow, prop: string): unknown {\n\t\tlet value: unknown = row;\n\t\tfor (const item of prop.split(\".\")) {\n\t\t\tif (typeof value !== \"object\" || value === null) return undefined;\n\t\t\tvalue = (value as Record<string, unknown>)[item];\n\t\t}\n\t\treturn value;\n\t},\n\t/**\n\t * @description 处理 prop,当 prop 为多级嵌套时 ==> 返回最后一级 prop\n\t * @param {String} prop 当前 prop\n\t */\n\thandleProp(prop: string): string {\n\t\tconst propArr = prop.split(\".\");\n\t\tif (propArr.length === 1) return prop;\n\t\treturn propArr.at(-1) ?? prop;\n\t},\n\t/**\n\t * @description 根据枚举列表查询当需要的数据(如果指定了 label 和 value 的 key值,会自动识别格式化)\n\t * @param {String} callValue 当前单元格值\n\t * @param {Array} enumData 字典列表\n\t * @param {Array} fieldNames 指定 label && value 的 key 值\n\t * @param {String} type 过滤类型(目前只有 tag)\n\t */\n\tfilterEnum(callValue: unknown, enumData: FaTableEnumColumnCtx[], fieldNames?: { label: string; value: string }, type?: \"tag\"): unknown {\n\t\tconst value = fieldNames?.value ?? \"value\";\n\t\tconst label = fieldNames?.label ?? \"label\";\n\t\tlet filterData: FaTableEnumColumnCtx | undefined;\n\t\tif (isArray(enumData)) {\n\t\t\tfilterData = enumData.find((item) => item[value] === callValue);\n\t\t}\n\t\tif (type === \"tag\") {\n\t\t\treturn filterData?.type ?? \"info\";\n\t\t}\n\t\treturn filterData ? filterData[label] : null;\n\t},\n\t/**\n\t * 数组动态排序\n\t */\n\tarrayDynamicSort(sortList: PagedSortInput[]): (a: DefaultRow, b: DefaultRow) => number {\n\t\treturn (a, b) => {\n\t\t\tif (sortList.length > 0) {\n\t\t\t\tfor (const condition of sortList) {\n\t\t\t\t\tconst property = condition.enField;\n\t\t\t\t\tconst order = condition.mode;\n\t\t\t\t\tif (!property) continue;\n\n\t\t\t\t\tconst aValue: unknown = a[property];\n\t\t\t\t\tconst bValue: unknown = b[property];\n\n\t\t\t\t\tif (typeof aValue === \"string\" && typeof bValue === \"string\") {\n\t\t\t\t\t\tif (order === \"ascending\") {\n\t\t\t\t\t\t\tconst comparison = aValue.localeCompare(bValue, \"zh-CN\");\n\t\t\t\t\t\t\tif (comparison !== 0) {\n\t\t\t\t\t\t\t\treturn comparison;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (order === \"descending\") {\n\t\t\t\t\t\t\tconst comparison = bValue.localeCompare(aValue, \"zh-CN\");\n\t\t\t\t\t\t\tif (comparison !== 0) {\n\t\t\t\t\t\t\t\treturn comparison;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (order === \"ascending\") {\n\t\t\t\t\t\t\tif ((aValue as string) < (bValue as string)) return -1;\n\t\t\t\t\t\t\tif ((aValue as string) > (bValue as string)) return 1;\n\t\t\t\t\t\t} else if (order === \"descending\") {\n\t\t\t\t\t\t\tif ((aValue as string) > (bValue as string)) return -1;\n\t\t\t\t\t\t\tif ((aValue as string) < (bValue as string)) return 1;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn 0;\n\t\t};\n\t},\n\t/**\n\t * 设置枚举\n\t */\n\tsetEnumMap(columnEnum: FaTableEnumColumnType, prop: string, enumMap: Map<string, FaTableEnumColumnCtx[]>): void {\n\t\tif (!columnEnum) return;\n\t\tif (isFunction(columnEnum)) {\n\t\t\tenumMap.set(prop, columnEnum());\n\t\t} else if (isArray(columnEnum)) {\n\t\t\tenumMap.set(prop, columnEnum);\n\t\t}\n\t},\n\t/**\n\t * 扁平化 columns\n\t */\n\tflatColumns(columns: FaTableColumnCtx[], enumMap?: Map<string, FaTableEnumColumnCtx[]>): FaTableColumnCtx[] {\n\t\tconst flatArr: FaTableColumnCtx[] = [];\n\t\tcolumns.forEach((col) => {\n\t\t\tif (col._children?.length) {\n\t\t\t\tflatArr.push(...this.flatColumns(col._children));\n\t\t\t}\n\n\t\t\tflatArr.push(col);\n\n\t\t\t// 给每一项 column 添加 show && filterEnum 默认属性\n\t\t\tcol.show ??= true;\n\t\t\t// col.filterEnum = col.filterEnum ?? col.tag ?? false;\n\n\t\t\tlet enumKey = col.prop ?? col.search?.key;\n\n\t\t\tif (col.enum && isString(col.enum)) {\n\t\t\t\tenumKey = col.enum;\n\t\t\t}\n\n\t\t\t// 设置 enumMap\n\t\t\tif (col.enum && enumKey && enumMap) this.setEnumMap(col.enum, enumKey, enumMap);\n\t\t});\n\t\treturn flatArr.filter((item) => !item._children?.length);\n\t},\n};\n"],"mappings":";;;;;AAQA,MAAa,YAAY;;;;;CAKxB,YAAY,WAA6B;EAExC,IAAI,QAAQ,SAAS,GAAG,OAAO,UAAU,SAAS,UAAU,KAAK,KAAK,IAAI;EAC1E,OAAO;CACR;;;;;;CAMA,yBAAyB,KAAiB,MAAuB;EAChE,IAAI,QAAiB;EACrB,KAAK,MAAM,QAAQ,KAAK,MAAM,GAAG,GAAG;GACnC,IAAI,OAAO,UAAU,YAAY,UAAU,MAAM,OAAO,KAAA;GACxD,QAAS,MAAkC;EAC5C;EACA,OAAO;CACR;;;;;CAKA,WAAW,MAAsB;EAChC,MAAM,UAAU,KAAK,MAAM,GAAG;EAC9B,IAAI,QAAQ,WAAW,GAAG,OAAO;EACjC,OAAO,QAAQ,GAAG,EAAE,KAAK;CAC1B;;;;;;;;CAQA,WAAW,WAAoB,UAAkC,YAA+C,MAAuB;EACtI,MAAM,QAAQ,YAAY,SAAS;EACnC,MAAM,QAAQ,YAAY,SAAS;EACnC,IAAI;EACJ,IAAI,QAAQ,QAAQ,GACnB,aAAa,SAAS,MAAM,SAAS,KAAK,WAAW,SAAS;EAE/D,IAAI,SAAS,OACZ,OAAO,YAAY,QAAQ;EAE5B,OAAO,aAAa,WAAW,SAAS;CACzC;;;;CAIA,iBAAiB,UAAsE;EACtF,QAAQ,GAAG,MAAM;GAChB,IAAI,SAAS,SAAS,GACrB,KAAK,MAAM,aAAa,UAAU;IACjC,MAAM,WAAW,UAAU;IAC3B,MAAM,QAAQ,UAAU;IACxB,IAAI,CAAC,UAAU;IAEf,MAAM,SAAkB,EAAE;IAC1B,MAAM,SAAkB,EAAE;IAE1B,IAAI,OAAO,WAAW,YAAY,OAAO,WAAW,UAAU;KAC7D,IAAI,UAAU,aAAa;MAC1B,MAAM,aAAa,OAAO,cAAc,QAAQ,OAAO;MACvD,IAAI,eAAe,GAClB,OAAO;KAET,OAAO,IAAI,UAAU,cAAc;MAClC,MAAM,aAAa,OAAO,cAAc,QAAQ,OAAO;MACvD,IAAI,eAAe,GAClB,OAAO;KAET;IACD,OACC,IAAI,UAAU,aAAa;KAC1B,IAAK,SAAqB,QAAmB,OAAO;KACpD,IAAK,SAAqB,QAAmB,OAAO;IACrD,OAAO,IAAI,UAAU,cAAc;KAClC,IAAK,SAAqB,QAAmB,OAAO;KACpD,IAAK,SAAqB,QAAmB,OAAO;IACrD;GAEF;GAGD,OAAO;EACR;CACD;;;;CAIA,WAAW,YAAmC,MAAc,SAAoD;EAC/G,IAAI,CAAC,YAAY;EACjB,IAAI,WAAW,UAAU,GACxB,QAAQ,IAAI,MAAM,WAAW,CAAC;OACxB,IAAI,QAAQ,UAAU,GAC5B,QAAQ,IAAI,MAAM,UAAU;CAE9B;;;;CAIA,YAAY,SAA6B,SAAmE;EAC3G,MAAM,UAA8B,CAAC;EACrC,QAAQ,SAAS,QAAQ;GACxB,IAAI,IAAI,WAAW,QAClB,QAAQ,KAAK,GAAG,KAAK,YAAY,IAAI,SAAS,CAAC;GAGhD,QAAQ,KAAK,GAAG;GAGhB,IAAI,SAAS;GAGb,IAAI,UAAU,IAAI,QAAQ,IAAI,QAAQ;GAEtC,IAAI,IAAI,QAAQ,SAAS,IAAI,IAAI,GAChC,UAAU,IAAI;GAIf,IAAI,IAAI,QAAQ,WAAW,SAAS,KAAK,WAAW,IAAI,MAAM,SAAS,OAAO;EAC/E,CAAC;EACD,OAAO,QAAQ,QAAQ,SAAS,CAAC,KAAK,WAAW,MAAM;CACxD;AACD"}
|
|
@@ -6,7 +6,7 @@ export declare const FaTree: TSXWithInstall<typeof Tree>;
|
|
|
6
6
|
export default FaTree;
|
|
7
7
|
export { faTreeProps, faTreeEmits };
|
|
8
8
|
export type { FaTreeSlots } from "./src/tree";
|
|
9
|
-
export * from "./src/tree.type";
|
|
9
|
+
export type * from "./src/tree.type";
|
|
10
10
|
/** FaTree 暴露的组件实例类型。 */
|
|
11
11
|
export type FaTreeInstance = InstanceType<typeof Tree>;
|
|
12
12
|
/** FaTree 的完整 Props 类型。 */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":["Tree"],"sources":["../../../src/components/tree/index.ts"],"sourcesContent":["import { withInstall } from \"../../utils\";\nimport Tree, { faTreeEmits, faTreeProps } from \"./src/tree\";\nimport type { ExtractPropTypes } from \"vue\";\nimport type { TSXWithInstall } from \"../../utils\";\n\n/** 支持远程加载、筛选和节点操作的树组件。 */\nexport const FaTree: TSXWithInstall<typeof Tree> = withInstall(Tree);\nexport default FaTree;\n\nexport { faTreeProps, faTreeEmits };\nexport type { FaTreeSlots } from \"./src/tree\";\nexport * from \"./src/tree.type\";\n\n/** FaTree 暴露的组件实例类型。 */\nexport type FaTreeInstance = InstanceType<typeof Tree>;\n\n/** FaTree 的完整 Props 类型。 */\nexport type FaTreeProps = ExtractPropTypes<typeof faTreeProps>;\n\n/** FaTree 的 Emits 类型。 */\nexport type FaTreeEmits = typeof faTreeEmits;\n"],"mappings":";;;;AAMA,MAAa,SAAsC,YAAYA,YAAI"}
|
|
1
|
+
{"version":3,"file":"index.mjs","names":["Tree"],"sources":["../../../src/components/tree/index.ts"],"sourcesContent":["import { withInstall } from \"../../utils\";\nimport Tree, { faTreeEmits, faTreeProps } from \"./src/tree\";\nimport type { ExtractPropTypes } from \"vue\";\nimport type { TSXWithInstall } from \"../../utils\";\n\n/** 支持远程加载、筛选和节点操作的树组件。 */\nexport const FaTree: TSXWithInstall<typeof Tree> = withInstall(Tree);\nexport default FaTree;\n\nexport { faTreeProps, faTreeEmits };\nexport type { FaTreeSlots } from \"./src/tree\";\nexport type * from \"./src/tree.type\";\n\n/** FaTree 暴露的组件实例类型。 */\nexport type FaTreeInstance = InstanceType<typeof Tree>;\n\n/** FaTree 的完整 Props 类型。 */\nexport type FaTreeProps = ExtractPropTypes<typeof faTreeProps>;\n\n/** FaTree 的 Emits 类型。 */\nexport type FaTreeEmits = typeof faTreeEmits;\n"],"mappings":";;;;AAMA,MAAa,SAAsC,YAAYA,YAAI"}
|
|
@@ -73,7 +73,7 @@ export declare const faTreeProps: {
|
|
|
73
73
|
type: import("vue").PropType<(params?: string | number | PagedInput) => Promise<ElTreeOutput[]>>;
|
|
74
74
|
};
|
|
75
75
|
/** 初始化参数 */
|
|
76
|
-
initParam: import("vue").PropType<string | number | PagedInput>;
|
|
76
|
+
initParam: import("vue").PropType<string | number | PagedInput | null>;
|
|
77
77
|
emptyText: {
|
|
78
78
|
readonly type: import("vue").PropType<string>;
|
|
79
79
|
readonly required: false;
|
|
@@ -254,7 +254,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
254
254
|
type: import("vue").PropType<(params?: string | number | PagedInput) => Promise<ElTreeOutput[]>>;
|
|
255
255
|
};
|
|
256
256
|
/** 初始化参数 */
|
|
257
|
-
initParam: import("vue").PropType<string | number | PagedInput>;
|
|
257
|
+
initParam: import("vue").PropType<string | number | PagedInput | null>;
|
|
258
258
|
emptyText: {
|
|
259
259
|
readonly type: import("vue").PropType<string>;
|
|
260
260
|
readonly required: false;
|
|
@@ -462,7 +462,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
462
462
|
type: import("vue").PropType<(params?: string | number | PagedInput) => Promise<ElTreeOutput[]>>;
|
|
463
463
|
};
|
|
464
464
|
/** 初始化参数 */
|
|
465
|
-
initParam: import("vue").PropType<string | number | PagedInput>;
|
|
465
|
+
initParam: import("vue").PropType<string | number | PagedInput | null>;
|
|
466
466
|
emptyText: {
|
|
467
467
|
readonly type: import("vue").PropType<string>;
|
|
468
468
|
readonly required: false;
|
|
@@ -204,7 +204,7 @@ var tree_default = defineComponent({
|
|
|
204
204
|
if (!instance) return;
|
|
205
205
|
if (props.expandOnClickNode) {
|
|
206
206
|
if (!node.expanded) node.expand();
|
|
207
|
-
else if (
|
|
207
|
+
else if (props.collapseOnClickNode) node.collapse();
|
|
208
208
|
}
|
|
209
209
|
if (data["all"] || node.key !== void 0 && node.key !== null) {
|
|
210
210
|
const value = data["all"] ? props.allValue : node.key;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tree.mjs","names":["update:modelValue","update:label","node-click"],"sources":["../../../../src/components/tree/src/tree.tsx"],"sourcesContent":["import { useVModel } from \"@vueuse/core\";\nimport { computed, defineComponent, nextTick, onMounted, reactive, ref, watch } from \"vue\";\nimport { Expand, Fold } from \"@element-plus/icons-vue\";\nimport { ElIcon, ElInput, ElScrollbar, ElTree, treeEmits, treeProps, useGlobalSize } from \"element-plus\";\nimport { isArray, isBoolean, isEqual, isNull, isNumber, isObject, isString, isUndefined } from \"lodash-unified\";\nimport { addCssUnit, definePropType, makeSlots, useEmits, useExpose, useProps, useRender, withDefineType } from \"../../../utils\";\nimport type { FilterValue, TreeNodeData } from \"element-plus\";\nimport type { ComponentInternalInstance, VNode } from \"vue\";\nimport type { PagedInput } from \"../../table\";\nimport type { FilterNodeMethodFunction, TreeNode } from \"./tree.props\";\nimport type { ElTreeOutput } from \"./tree.type\";\n\n/** FaTree 的运行时 Props 定义。 */\nexport const faTreeProps = {\n\t...treeProps,\n\t/** 树节点筛选方法。 */\n\tfilterNodeMethod: {\n\t\ttype: definePropType<FilterNodeMethodFunction>(Function),\n\t},\n\t/** @description whether Select is disabled 重载使其支持 ElForm*/\n\tdisabled: {\n\t\ttype: Boolean,\n\t\tdefault: undefined,\n\t},\n\t/** 每个树节点用来作为唯一标识的属性,整棵树应该是唯一的 */\n\tnodeKey: {\n\t\ttype: String,\n\t\tdefault: \"value\",\n\t},\n\t/** @description 是否默认展开所有节点 */\n\tdefaultExpandAll: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** @description 是否在点击节点的时候选中节点 */\n\tcheckOnClickNode: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** @description 是否高亮当前选中节点 */\n\thighlightCurrent: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** @description 点击折叠节点,需要开启 'expandOnClickNode' */\n\tcollapseOnClickNode: Boolean,\n\t/** @description v-model绑定值 */\n\tmodelValue: {\n\t\ttype: definePropType<string | number | boolean | object | null>([String, Number, Boolean, Object]),\n\t\tdefault: undefined,\n\t},\n\t/** @description v-model:label绑定值 */\n\tlabel: String,\n\t/** @description 宽度 */\n\twidth: {\n\t\ttype: [String, Number],\n\t\tdefault: 180,\n\t},\n\t/** @description 默认选择 */\n\tdefaultSelection: [String, Number],\n\t/** @description 标题 */\n\ttitle: String,\n\t/** @description 折叠 */\n\thamburger: Boolean,\n\t/** @description 隐藏全部 */\n\thideAll: Boolean,\n\t/** @description 隐藏过滤 */\n\thideFilter: Boolean,\n\t/** @description 全部值 */\n\tallValue: {\n\t\ttype: definePropType<string | number | boolean | object | null>([String, Number, Boolean, Object]),\n\t\tdefault: undefined,\n\t},\n\t/** @description 树形数据 */\n\tdata: {\n\t\ttype: definePropType<ElTreeOutput[]>(Array),\n\t\tdefault: (): ElTreeOutput[] => [],\n\t},\n\t/** @description 请求api */\n\trequestApi: {\n\t\ttype: definePropType<(params?: string | number | PagedInput) => Promise<ElTreeOutput[]>>(Function),\n\t},\n\t/** 初始化参数 */\n\tinitParam: definePropType<string | number | PagedInput>([String, Number, Object]),\n};\n\n/** FaTree 的运行时 Emits 定义。 */\nexport const faTreeEmits = {\n\t...treeEmits,\n\t/** @description v-model 回调 */\n\t\"update:modelValue\": (value: string | number | boolean | object | null | undefined): boolean =>\n\t\tisString(value) || isNumber(value) || isBoolean(value) || isObject(value) || isNull(value) || isUndefined(value),\n\t/** @description v-model:label 回调 */\n\t\"update:label\": (value: string): boolean => isString(value) || isNull(value),\n\t/** @description 数据改变 */\n\tdataChangeCallBack: (data: ElTreeOutput[]): boolean => isArray(data),\n\t/** @description 选中数据改变 */\n\tchange: (_data: ElTreeOutput, _node: TreeNode, _instance: ComponentInternalInstance, _event: MouseEvent): boolean => true,\n\t/** @description 节点点击 */\n\t\"node-click\": (_data: ElTreeOutput, _node: TreeNode, _instance: ComponentInternalInstance | null, _event: MouseEvent): boolean => true,\n};\n\n/** FaTree 的插槽参数。 */\nexport interface FaTreeSlots extends Record<string, unknown> {\n\t/** @description 默认内容插槽 */\n\tdefault: { node: TreeNode; data: ElTreeOutput };\n\t/** @description 当数据为空时自定义的内容 */\n\tempty: never;\n\t/** @description 显示内容插槽 */\n\tlabel: { node: TreeNode; data: ElTreeOutput };\n}\n\nexport default defineComponent({\n\tname: \"FaTree\",\n\tprops: faTreeProps,\n\temits: faTreeEmits,\n\tslots: makeSlots<FaTreeSlots>(),\n\tsetup(props, { slots, emit, expose }) {\n\t\tconst selectedLabel = useVModel(props, \"label\", emit, { passive: true });\n\t\tconst _globalSize = useGlobalSize();\n\n\t\tconst state = reactive({\n\t\t\tvalue: withDefineType<string | number | boolean | object | null | undefined>(props.modelValue),\n\t\t\tloading: false,\n\t\t\tsearchValue: withDefineType<string>(),\n\t\t\torgTreeData: withDefineType<ElTreeOutput[]>([]),\n\t\t\ttreeData: withDefineType<ElTreeOutput[]>([]),\n\t\t\thamburger: props.hamburger || false,\n\t\t\twidth: computed(() => {\n\t\t\t\tif (state.hamburger) {\n\t\t\t\t\treturn \"130px\";\n\t\t\t\t} else {\n\t\t\t\t\tconst width = addCssUnit(props.width);\n\t\t\t\t\tif (_globalSize.value === \"small\") {\n\t\t\t\t\t\treturn `calc(${width} * 0.9)`;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn width;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}),\n\t\t});\n\n\t\t/** @description 只有一层节点 */\n\t\tconst fold = computed<boolean>(() => {\n\t\t\tconst childrenKey = props.props.children ?? \"children\";\n\t\t\treturn state.orgTreeData.every((item) => !Array.isArray(item[childrenKey]) || item[childrenKey].length === 0);\n\t\t});\n\n\t\tconst treeRef = ref<InstanceType<typeof ElTree>>();\n\t\tlet requestVersion = 0;\n\n\t\tconst loadData = async (): Promise<void> => {\n\t\t\tconst currentRequestVersion = ++requestVersion;\n\t\t\tlet curSelectedData: string | number | undefined;\n\t\t\tif (props.nodeKey) {\n\t\t\t\t// 记录原本选中的值\n\t\t\t\tconst currentKey = treeRef.value?.getCurrentKey();\n\t\t\t\tif (typeof currentKey === \"string\" || typeof currentKey === \"number\") curSelectedData = currentKey;\n\t\t\t}\n\t\t\tlet treeData: ElTreeOutput[];\n\t\t\t// 判断是否需要自动请求\n\t\t\tif (props.requestApi) {\n\t\t\t\tstate.loading = true;\n\t\t\t\tconst params = {\n\t\t\t\t\t...(typeof props.initParam === \"object\" && props.initParam !== null ? props.initParam : {}),\n\t\t\t\t\tsearchValue: state.searchValue,\n\t\t\t\t};\n\t\t\t\ttry {\n\t\t\t\t\tconst responseData = await props.requestApi(params);\n\t\t\t\t\ttreeData = responseData.map((item) => ({ ...item }));\n\t\t\t\t} catch (error) {\n\t\t\t\t\tif (currentRequestVersion !== requestVersion) return;\n\t\t\t\t\tthrow error;\n\t\t\t\t} finally {\n\t\t\t\t\tif (currentRequestVersion === requestVersion) state.loading = false;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\ttreeData = props.data.map((item) => ({ ...item }));\n\t\t\t}\n\t\t\tif (currentRequestVersion !== requestVersion) return;\n\t\t\tif (!props.hideAll) {\n\t\t\t\ttreeData.unshift({ [props.nodeKey]: props.allValue, label: \"全部\", value: null, all: true });\n\t\t\t}\n\t\t\tstate.orgTreeData = treeData;\n\t\t\tstate.treeData = treeData;\n\t\t\temit(\"dataChangeCallBack\", state.treeData);\n\t\t\tconst selectedKey = curSelectedData ?? props.modelValue ?? props.defaultSelection;\n\t\t\tif (props.nodeKey && (typeof selectedKey === \"string\" || typeof selectedKey === \"number\")) {\n\t\t\t\tvoid nextTick(() => {\n\t\t\t\t\t// 设置原本选中的值\n\t\t\t\t\ttreeRef.value?.setCurrentKey(selectedKey);\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\n\t\tconst handleHamburgerClick = (): void => {\n\t\t\tif (state.hamburger) {\n\t\t\t\tstate.treeData = state.orgTreeData;\n\t\t\t} else {\n\t\t\t\t// 折叠只显示一级数据\n\t\t\t\tstate.treeData = state.orgTreeData.map((item) => ({ ...item, [props.props.children ?? \"children\"]: [] }));\n\t\t\t}\n\t\t\tstate.hamburger = !state.hamburger;\n\t\t};\n\n\t\tconst handleFilterNode = (value: FilterValue, data: TreeNodeData, child: TreeNode): boolean => {\n\t\t\tif (!value) return true;\n\t\t\tconst isAll: unknown = data[\"all\"];\n\t\t\tconst dataLabel: unknown = data[\"label\"];\n\t\t\tlet parentNode = child.parent,\n\t\t\t\tlabels: unknown[] = isAll ? [dataLabel] : [child.label],\n\t\t\t\tlevel = 1;\n\t\t\twhile (level < child.level && parentNode) {\n\t\t\t\tlabels = [...labels, parentNode.label];\n\t\t\t\tparentNode = parentNode.parent;\n\t\t\t\tlevel++;\n\t\t\t}\n\t\t\tconst filterText = typeof value === \"string\" || typeof value === \"number\" ? String(value) : \"\";\n\t\t\tconst result = labels.some((label) =>\n\t\t\t\ttypeof label === \"string\" || typeof label === \"number\" ? String(label).includes(filterText) : false\n\t\t\t);\n\t\t\tif (props.filterNodeMethod) {\n\t\t\t\treturn result && props.filterNodeMethod(value, data, child);\n\t\t\t}\n\t\t\treturn result;\n\t\t};\n\n\t\tconst handleNodeClick = (data: ElTreeOutput, node: TreeNode, instance: ComponentInternalInstance | null, event: MouseEvent): void => {\n\t\t\tif (!instance) return;\n\t\t\t// 判断是否开启点击展开节点,并且节点是折叠状态,则自动展开,否则需要点击箭头图标才能折叠或开启 'collapseOnClickNode'\n\t\t\tif (props.expandOnClickNode) {\n\t\t\t\tif (!node.expanded) {\n\t\t\t\t\tnode.expand();\n\t\t\t\t} else if (node.expanded && props.collapseOnClickNode) {\n\t\t\t\t\tnode.collapse();\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (data[\"all\"] || (node.key !== undefined && node.key !== null)) {\n\t\t\t\tconst value = data[\"all\"] ? props.allValue : node.key;\n\t\t\t\tif (!isEqual(state.value, value)) {\n\t\t\t\t\tstate.value = value;\n\t\t\t\t\tselectedLabel.value = node.label;\n\t\t\t\t\temit(\"update:modelValue\", value);\n\t\t\t\t\temit(\"change\", data, node, instance, event);\n\t\t\t\t}\n\t\t\t}\n\t\t\temit(\"node-click\", data, node, instance, event);\n\t\t};\n\n\t\tonMounted(async () => {\n\t\t\tawait loadData();\n\t\t\twatch(\n\t\t\t\t() => props.data,\n\t\t\t\t() => {\n\t\t\t\t\tif (!props.requestApi) {\n\t\t\t\t\t\treturn loadData();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{ deep: true }\n\t\t\t);\n\t\t});\n\n\t\twatch(\n\t\t\t() => props.modelValue,\n\t\t\t(newValue) => {\n\t\t\t\tstate.value = newValue;\n\t\t\t\tif (typeof newValue === \"string\" || typeof newValue === \"number\") treeRef.value?.setCurrentKey(newValue);\n\t\t\t}\n\t\t);\n\n\t\tconst elTreeProps = useProps(props, treeProps, [\"data\", \"expandOnClickNode\", \"filterNodeMethod\"]);\n\t\tconst elTreeEmits = useEmits(treeEmits, emit, [\"node-click\"]);\n\n\t\tuseRender(() => (\n\t\t\t<div\n\t\t\t\tclass={[\"el-card fa-tree\", `fa-tree-${_globalSize.value}`, { \"fa-tree__fold\": state.hamburger || fold.value }]}\n\t\t\t\tstyle={{ width: state.width }}\n\t\t\t\tvLoading={state.loading}\n\t\t\t>\n\t\t\t\t{(props.title !== undefined || props.hamburger) && (\n\t\t\t\t\t<div class=\"fa-tree__title\">\n\t\t\t\t\t\t{props.title && <h4>{props.title}</h4>}\n\t\t\t\t\t\t{props.hamburger &&\n\t\t\t\t\t\t\t(state.hamburger ? (\n\t\t\t\t\t\t\t\t<ElIcon onClick={handleHamburgerClick} title=\"展开\">\n\t\t\t\t\t\t\t\t\t<Expand />\n\t\t\t\t\t\t\t\t</ElIcon>\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t<ElIcon onClick={handleHamburgerClick} title=\"折叠\">\n\t\t\t\t\t\t\t\t\t<Fold />\n\t\t\t\t\t\t\t\t</ElIcon>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t\t{!props.hideFilter && (\n\t\t\t\t\t<ElInput\n\t\t\t\t\t\tclass=\"fa-tree__search-input\"\n\t\t\t\t\t\tvModel_trim={state.searchValue}\n\t\t\t\t\t\tplaceholder={state.hamburger ? \"关键字过滤\" : \"输入关键字进行过滤\"}\n\t\t\t\t\t\tclearable={Boolean(state.searchValue)}\n\t\t\t\t\t\tonInput={(value) => treeRef.value?.filter(value)}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t\t<ElScrollbar class=\"fa-tree__scrollbar\">\n\t\t\t\t\t<ElTree\n\t\t\t\t\t\t{...elTreeProps.value}\n\t\t\t\t\t\t{...elTreeEmits.value}\n\t\t\t\t\t\tref={treeRef}\n\t\t\t\t\t\tdata={state.treeData}\n\t\t\t\t\t\texpandOnClickNode={props.checkOnClickNode ? false : props.expandOnClickNode}\n\t\t\t\t\t\tfilterNodeMethod={handleFilterNode}\n\t\t\t\t\t\tonNode-click={handleNodeClick}\n\t\t\t\t\t>\n\t\t\t\t\t\t{{\n\t\t\t\t\t\t\tdefault: ({ node, data }: { node: TreeNode; data: ElTreeOutput }) => (\n\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\tclass=\"el-tree-node__label\"\n\t\t\t\t\t\t\t\t\ttitle={data[\"all\"] ? data.label : node.label}\n\t\t\t\t\t\t\t\t\tstyle={{ paddingLeft: fold.value ? \"3px\" : \"\" }}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<div>{data[\"all\"] ? data.label : slots.label ? slots.label({ node, data }) : node.label}</div>\n\t\t\t\t\t\t\t\t\t{node.key && data.showQuantity ? <span>[{data.quantity}]</span> : null}\n\t\t\t\t\t\t\t\t\t{!data[\"all\"] && slots.default && <span>{slots.default({ node, data })}</span>}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t...(slots.empty && { empty: (): VNode[] => slots.empty?.() ?? [] }),\n\t\t\t\t\t\t}}\n\t\t\t\t\t</ElTree>\n\t\t\t\t</ElScrollbar>\n\t\t\t</div>\n\t\t));\n\n\t\treturn useExpose(expose, {\n\t\t\t/** @description 过滤所有树节点,过滤后的节点将被隐藏 */\n\t\t\tfilter: computed(() => treeRef.value?.filter),\n\t\t\t/** @description 获取节点的唯一标识。 */\n\t\t\tgetNodeKey: computed(() => treeRef.value?.getNodeKey),\n\t\t\t/** @description 获取指定节点的路径数据。 */\n\t\t\tgetNodePath: computed(() => treeRef.value?.getNodePath),\n\t\t\t/** @description 为节点设置新数据,只有当设置 node-key 属性的时候才可用 */\n\t\t\tupdateKeyChildren: computed(() => treeRef.value?.updateKeyChildren),\n\t\t\t/** @description 如果节点可以被选中,(show-checkbox 为 true), 本方法将返回当前选中节点的数组 */\n\t\t\tgetCheckedNodes: computed(() => treeRef.value?.getCheckedNodes),\n\t\t\t/** @description 设置目前勾选的节点,使用此方法必须提前设置 node-key 属性 */\n\t\t\tsetCheckedNodes: computed(() => treeRef.value?.setCheckedNodes),\n\t\t\t/** @description \t若节点可用被选中 (show-checkbox 为 true), 它将返回当前选中节点 key 的数组 */\n\t\t\tgetCheckedKeys: computed(() => treeRef.value?.getCheckedKeys),\n\t\t\t/** @description 设置目前选中的节点,使用此方法必须设置 node-key 属性 */\n\t\t\tsetCheckedKeys: computed(() => treeRef.value?.setCheckedKeys),\n\t\t\t/** @description 设置节点是否被选中, 使用此方法必须设置 node-key 属性 */\n\t\t\tsetChecked: computed(() => treeRef.value?.setChecked),\n\t\t\t/** @description 如果节点可用被选中 (show-checkbox 为 true), 它将返回当前半选中的节点组成的数组 */\n\t\t\tgetHalfCheckedNodes: computed(() => treeRef.value?.getHalfCheckedNodes),\n\t\t\t/** @description 若节点可被选中(show-checkbox 为 true),则返回目前半选中的节点的 key 所组成的数组 */\n\t\t\tgetHalfCheckedKeys: computed(() => treeRef.value?.getHalfCheckedKeys),\n\t\t\t/** @description 返回当前被选中节点的数据 (如果没有则返回 null) */\n\t\t\tgetCurrentKey: computed(() => treeRef.value?.getCurrentKey),\n\t\t\t/** @description 返回当前被选中节点的数据 (如果没有则返回 null) */\n\t\t\tgetCurrentNode: computed(() => treeRef.value?.getCurrentNode),\n\t\t\t/** @description 通过 key 设置某个节点的当前选中状态,使用此方法必须设置 node-key 属性 */\n\t\t\tsetCurrentKey: computed(() => treeRef.value?.setCurrentKey),\n\t\t\t/** @description 设置节点为选中状态,使用此方法必须设置 node-key 属性 */\n\t\t\tsetCurrentNode: computed(() => treeRef.value?.setCurrentNode),\n\t\t\t/** @description 根据 data 或者 key 拿到 Tree 组件中的 node */\n\t\t\tgetNode: computed(() => treeRef.value?.getNode),\n\t\t\t/** @description 删除 Tree 中的一个节点,使用此方法必须设置 node-key 属性 */\n\t\t\tremove: computed(() => treeRef.value?.remove),\n\t\t\t/** @description 为 Tree 中的一个节点追加一个子节点 */\n\t\t\tappend: computed(() => treeRef.value?.append),\n\t\t\t/** @description 在 Tree 中给定节点前插入一个节点 */\n\t\t\tinsertBefore: computed(() => treeRef.value?.insertBefore),\n\t\t\t/** @description 在 Tree 中给定节点后插入一个节点 */\n\t\t\tinsertAfter: computed(() => treeRef.value?.insertAfter),\n\t\t\t/** @description 加载状态 */\n\t\t\tloading: computed(() => state.loading),\n\t\t\t/** @description 刷新 */\n\t\t\trefresh: loadData,\n\t\t});\n\t},\n});\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tree.mjs","names":["update:modelValue","update:label","node-click"],"sources":["../../../../src/components/tree/src/tree.tsx"],"sourcesContent":["import { useVModel } from \"@vueuse/core\";\nimport { computed, defineComponent, nextTick, onMounted, reactive, ref, watch } from \"vue\";\nimport { Expand, Fold } from \"@element-plus/icons-vue\";\nimport { ElIcon, ElInput, ElScrollbar, ElTree, treeEmits, treeProps, useGlobalSize } from \"element-plus\";\nimport { isArray, isBoolean, isEqual, isNull, isNumber, isObject, isString, isUndefined } from \"lodash-unified\";\nimport { addCssUnit, definePropType, makeSlots, useEmits, useExpose, useProps, useRender, withDefineType } from \"../../../utils\";\nimport type { FilterValue, TreeNodeData } from \"element-plus\";\nimport type { ComponentInternalInstance, VNode } from \"vue\";\nimport type { PagedInput } from \"../../table\";\nimport type { FilterNodeMethodFunction, TreeNode } from \"./tree.props\";\nimport type { ElTreeOutput } from \"./tree.type\";\n\n/** FaTree 的运行时 Props 定义。 */\nexport const faTreeProps = {\n\t...treeProps,\n\t/** 树节点筛选方法。 */\n\tfilterNodeMethod: {\n\t\ttype: definePropType<FilterNodeMethodFunction>(Function),\n\t},\n\t/** @description whether Select is disabled 重载使其支持 ElForm*/\n\tdisabled: {\n\t\ttype: Boolean,\n\t\tdefault: undefined,\n\t},\n\t/** 每个树节点用来作为唯一标识的属性,整棵树应该是唯一的 */\n\tnodeKey: {\n\t\ttype: String,\n\t\tdefault: \"value\",\n\t},\n\t/** @description 是否默认展开所有节点 */\n\tdefaultExpandAll: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** @description 是否在点击节点的时候选中节点 */\n\tcheckOnClickNode: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** @description 是否高亮当前选中节点 */\n\thighlightCurrent: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** @description 点击折叠节点,需要开启 'expandOnClickNode' */\n\tcollapseOnClickNode: Boolean,\n\t/** @description v-model绑定值 */\n\tmodelValue: {\n\t\ttype: definePropType<string | number | boolean | object | null>([String, Number, Boolean, Object]),\n\t\tdefault: undefined,\n\t},\n\t/** @description v-model:label绑定值 */\n\tlabel: String,\n\t/** @description 宽度 */\n\twidth: {\n\t\ttype: [String, Number],\n\t\tdefault: 180,\n\t},\n\t/** @description 默认选择 */\n\tdefaultSelection: [String, Number],\n\t/** @description 标题 */\n\ttitle: String,\n\t/** @description 折叠 */\n\thamburger: Boolean,\n\t/** @description 隐藏全部 */\n\thideAll: Boolean,\n\t/** @description 隐藏过滤 */\n\thideFilter: Boolean,\n\t/** @description 全部值 */\n\tallValue: {\n\t\ttype: definePropType<string | number | boolean | object | null>([String, Number, Boolean, Object]),\n\t\tdefault: undefined,\n\t},\n\t/** @description 树形数据 */\n\tdata: {\n\t\ttype: definePropType<ElTreeOutput[]>(Array),\n\t\tdefault: (): ElTreeOutput[] => [],\n\t},\n\t/** @description 请求api */\n\trequestApi: {\n\t\ttype: definePropType<(params?: string | number | PagedInput) => Promise<ElTreeOutput[]>>(Function),\n\t},\n\t/** 初始化参数 */\n\tinitParam: definePropType<string | number | PagedInput | null>([String, Number, Object]),\n};\n\n/** FaTree 的运行时 Emits 定义。 */\nexport const faTreeEmits = {\n\t...treeEmits,\n\t/** @description v-model 回调 */\n\t\"update:modelValue\": (value: string | number | boolean | object | null | undefined): boolean =>\n\t\tisString(value) || isNumber(value) || isBoolean(value) || isObject(value) || isNull(value) || isUndefined(value),\n\t/** @description v-model:label 回调 */\n\t\"update:label\": (value: string): boolean => isString(value) || isNull(value),\n\t/** @description 数据改变 */\n\tdataChangeCallBack: (data: ElTreeOutput[]): boolean => isArray(data),\n\t/** @description 选中数据改变 */\n\tchange: (_data: ElTreeOutput, _node: TreeNode, _instance: ComponentInternalInstance, _event: MouseEvent): boolean => true,\n\t/** @description 节点点击 */\n\t\"node-click\": (_data: ElTreeOutput, _node: TreeNode, _instance: ComponentInternalInstance | null, _event: MouseEvent): boolean => true,\n};\n\n/** FaTree 的插槽参数。 */\nexport interface FaTreeSlots extends Record<string, unknown> {\n\t/** @description 默认内容插槽 */\n\tdefault: { node: TreeNode; data: ElTreeOutput };\n\t/** @description 当数据为空时自定义的内容 */\n\tempty: never;\n\t/** @description 显示内容插槽 */\n\tlabel: { node: TreeNode; data: ElTreeOutput };\n}\n\nexport default defineComponent({\n\tname: \"FaTree\",\n\tprops: faTreeProps,\n\temits: faTreeEmits,\n\tslots: makeSlots<FaTreeSlots>(),\n\tsetup(props, { slots, emit, expose }) {\n\t\tconst selectedLabel = useVModel(props, \"label\", emit, { passive: true });\n\t\tconst _globalSize = useGlobalSize();\n\n\t\tconst state = reactive({\n\t\t\tvalue: withDefineType<string | number | boolean | object | null | undefined>(props.modelValue),\n\t\t\tloading: false,\n\t\t\tsearchValue: withDefineType<string>(),\n\t\t\torgTreeData: withDefineType<ElTreeOutput[]>([]),\n\t\t\ttreeData: withDefineType<ElTreeOutput[]>([]),\n\t\t\thamburger: props.hamburger || false,\n\t\t\twidth: computed(() => {\n\t\t\t\tif (state.hamburger) {\n\t\t\t\t\treturn \"130px\";\n\t\t\t\t} else {\n\t\t\t\t\tconst width = addCssUnit(props.width);\n\t\t\t\t\tif (_globalSize.value === \"small\") {\n\t\t\t\t\t\treturn `calc(${width} * 0.9)`;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn width;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}),\n\t\t});\n\n\t\t/** @description 只有一层节点 */\n\t\tconst fold = computed<boolean>(() => {\n\t\t\tconst childrenKey = props.props.children ?? \"children\";\n\t\t\treturn state.orgTreeData.every((item) => !Array.isArray(item[childrenKey]) || item[childrenKey].length === 0);\n\t\t});\n\n\t\tconst treeRef = ref<InstanceType<typeof ElTree>>();\n\t\tlet requestVersion = 0;\n\n\t\tconst loadData = async (): Promise<void> => {\n\t\t\tconst currentRequestVersion = ++requestVersion;\n\t\t\tlet curSelectedData: string | number | undefined;\n\t\t\tif (props.nodeKey) {\n\t\t\t\t// 记录原本选中的值\n\t\t\t\tconst currentKey = treeRef.value?.getCurrentKey();\n\t\t\t\tif (typeof currentKey === \"string\" || typeof currentKey === \"number\") curSelectedData = currentKey;\n\t\t\t}\n\t\t\tlet treeData: ElTreeOutput[];\n\t\t\t// 判断是否需要自动请求\n\t\t\tif (props.requestApi) {\n\t\t\t\tstate.loading = true;\n\t\t\t\tconst params = {\n\t\t\t\t\t...(typeof props.initParam === \"object\" && props.initParam !== null ? props.initParam : {}),\n\t\t\t\t\tsearchValue: state.searchValue,\n\t\t\t\t};\n\t\t\t\ttry {\n\t\t\t\t\tconst responseData = await props.requestApi(params);\n\t\t\t\t\ttreeData = responseData.map((item) => ({ ...item }));\n\t\t\t\t} catch (error) {\n\t\t\t\t\tif (currentRequestVersion !== requestVersion) return;\n\t\t\t\t\tthrow error;\n\t\t\t\t} finally {\n\t\t\t\t\tif (currentRequestVersion === requestVersion) state.loading = false;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\ttreeData = props.data.map((item) => ({ ...item }));\n\t\t\t}\n\t\t\tif (currentRequestVersion !== requestVersion) return;\n\t\t\tif (!props.hideAll) {\n\t\t\t\ttreeData.unshift({ [props.nodeKey]: props.allValue, label: \"全部\", value: null, all: true });\n\t\t\t}\n\t\t\tstate.orgTreeData = treeData;\n\t\t\tstate.treeData = treeData;\n\t\t\temit(\"dataChangeCallBack\", state.treeData);\n\t\t\tconst selectedKey = curSelectedData ?? props.modelValue ?? props.defaultSelection;\n\t\t\tif (props.nodeKey && (typeof selectedKey === \"string\" || typeof selectedKey === \"number\")) {\n\t\t\t\tnextTick(() => {\n\t\t\t\t\t// 设置原本选中的值\n\t\t\t\t\ttreeRef.value?.setCurrentKey(selectedKey);\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\n\t\tconst handleHamburgerClick = (): void => {\n\t\t\tif (state.hamburger) {\n\t\t\t\tstate.treeData = state.orgTreeData;\n\t\t\t} else {\n\t\t\t\t// 折叠只显示一级数据\n\t\t\t\tstate.treeData = state.orgTreeData.map((item) => ({ ...item, [props.props.children ?? \"children\"]: [] }));\n\t\t\t}\n\t\t\tstate.hamburger = !state.hamburger;\n\t\t};\n\n\t\tconst handleFilterNode = (value: FilterValue, data: TreeNodeData, child: TreeNode): boolean => {\n\t\t\tif (!value) return true;\n\t\t\tconst isAll: unknown = data[\"all\"];\n\t\t\tconst dataLabel: unknown = data[\"label\"];\n\t\t\tlet parentNode = child.parent,\n\t\t\t\tlabels: unknown[] = isAll ? [dataLabel] : [child.label],\n\t\t\t\tlevel = 1;\n\t\t\twhile (level < child.level && parentNode) {\n\t\t\t\tlabels = [...labels, parentNode.label];\n\t\t\t\tparentNode = parentNode.parent;\n\t\t\t\tlevel++;\n\t\t\t}\n\t\t\tconst filterText = typeof value === \"string\" || typeof value === \"number\" ? String(value) : \"\";\n\t\t\tconst result = labels.some((label) =>\n\t\t\t\ttypeof label === \"string\" || typeof label === \"number\" ? String(label).includes(filterText) : false\n\t\t\t);\n\t\t\tif (props.filterNodeMethod) {\n\t\t\t\treturn result && props.filterNodeMethod(value, data, child);\n\t\t\t}\n\t\t\treturn result;\n\t\t};\n\n\t\tconst handleNodeClick = (data: ElTreeOutput, node: TreeNode, instance: ComponentInternalInstance | null, event: MouseEvent): void => {\n\t\t\tif (!instance) return;\n\t\t\t// 判断是否开启点击展开节点,并且节点是折叠状态,则自动展开,否则需要点击箭头图标才能折叠或开启 'collapseOnClickNode'\n\t\t\tif (props.expandOnClickNode) {\n\t\t\t\tif (!node.expanded) {\n\t\t\t\t\tnode.expand();\n\t\t\t\t} else if (props.collapseOnClickNode) {\n\t\t\t\t\tnode.collapse();\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (data[\"all\"] || (node.key !== undefined && node.key !== null)) {\n\t\t\t\tconst value = data[\"all\"] ? props.allValue : node.key;\n\t\t\t\tif (!isEqual(state.value, value)) {\n\t\t\t\t\tstate.value = value;\n\t\t\t\t\tselectedLabel.value = node.label;\n\t\t\t\t\temit(\"update:modelValue\", value);\n\t\t\t\t\temit(\"change\", data, node, instance, event);\n\t\t\t\t}\n\t\t\t}\n\t\t\temit(\"node-click\", data, node, instance, event);\n\t\t};\n\n\t\tonMounted(async () => {\n\t\t\tawait loadData();\n\t\t\twatch(\n\t\t\t\t() => props.data,\n\t\t\t\t() => {\n\t\t\t\t\tif (!props.requestApi) {\n\t\t\t\t\t\treturn loadData();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{ deep: true }\n\t\t\t);\n\t\t});\n\n\t\twatch(\n\t\t\t() => props.modelValue,\n\t\t\t(newValue) => {\n\t\t\t\tstate.value = newValue;\n\t\t\t\tif (typeof newValue === \"string\" || typeof newValue === \"number\") treeRef.value?.setCurrentKey(newValue);\n\t\t\t}\n\t\t);\n\n\t\tconst elTreeProps = useProps(props, treeProps, [\"data\", \"expandOnClickNode\", \"filterNodeMethod\"]);\n\t\tconst elTreeEmits = useEmits(treeEmits, emit, [\"node-click\"]);\n\n\t\tuseRender(() => (\n\t\t\t<div\n\t\t\t\tclass={[\"el-card fa-tree\", `fa-tree-${_globalSize.value}`, { \"fa-tree__fold\": state.hamburger || fold.value }]}\n\t\t\t\tstyle={{ width: state.width }}\n\t\t\t\tvLoading={state.loading}\n\t\t\t>\n\t\t\t\t{(props.title !== undefined || props.hamburger) && (\n\t\t\t\t\t<div class=\"fa-tree__title\">\n\t\t\t\t\t\t{props.title && <h4>{props.title}</h4>}\n\t\t\t\t\t\t{props.hamburger &&\n\t\t\t\t\t\t\t(state.hamburger ? (\n\t\t\t\t\t\t\t\t<ElIcon onClick={handleHamburgerClick} title=\"展开\">\n\t\t\t\t\t\t\t\t\t<Expand />\n\t\t\t\t\t\t\t\t</ElIcon>\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t<ElIcon onClick={handleHamburgerClick} title=\"折叠\">\n\t\t\t\t\t\t\t\t\t<Fold />\n\t\t\t\t\t\t\t\t</ElIcon>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t\t{!props.hideFilter && (\n\t\t\t\t\t<ElInput\n\t\t\t\t\t\tclass=\"fa-tree__search-input\"\n\t\t\t\t\t\tvModel_trim={state.searchValue}\n\t\t\t\t\t\tplaceholder={state.hamburger ? \"关键字过滤\" : \"输入关键字进行过滤\"}\n\t\t\t\t\t\tclearable={Boolean(state.searchValue)}\n\t\t\t\t\t\tonInput={(value) => treeRef.value?.filter(value)}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t\t<ElScrollbar class=\"fa-tree__scrollbar\">\n\t\t\t\t\t<ElTree\n\t\t\t\t\t\t{...elTreeProps.value}\n\t\t\t\t\t\t{...elTreeEmits.value}\n\t\t\t\t\t\tref={treeRef}\n\t\t\t\t\t\tdata={state.treeData}\n\t\t\t\t\t\texpandOnClickNode={props.checkOnClickNode ? false : props.expandOnClickNode}\n\t\t\t\t\t\tfilterNodeMethod={handleFilterNode}\n\t\t\t\t\t\tonNode-click={handleNodeClick}\n\t\t\t\t\t>\n\t\t\t\t\t\t{{\n\t\t\t\t\t\t\tdefault: ({ node, data }: { node: TreeNode; data: ElTreeOutput }) => (\n\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\tclass=\"el-tree-node__label\"\n\t\t\t\t\t\t\t\t\ttitle={data[\"all\"] ? data.label : node.label}\n\t\t\t\t\t\t\t\t\tstyle={{ paddingLeft: fold.value ? \"3px\" : \"\" }}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<div>{data[\"all\"] ? data.label : slots.label ? slots.label({ node, data }) : node.label}</div>\n\t\t\t\t\t\t\t\t\t{node.key && data.showQuantity ? <span>[{data.quantity}]</span> : null}\n\t\t\t\t\t\t\t\t\t{!data[\"all\"] && slots.default && <span>{slots.default({ node, data })}</span>}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t...(slots.empty && { empty: (): VNode[] => slots.empty?.() ?? [] }),\n\t\t\t\t\t\t}}\n\t\t\t\t\t</ElTree>\n\t\t\t\t</ElScrollbar>\n\t\t\t</div>\n\t\t));\n\n\t\treturn useExpose(expose, {\n\t\t\t/** @description 过滤所有树节点,过滤后的节点将被隐藏 */\n\t\t\tfilter: computed(() => treeRef.value?.filter),\n\t\t\t/** @description 获取节点的唯一标识。 */\n\t\t\tgetNodeKey: computed(() => treeRef.value?.getNodeKey),\n\t\t\t/** @description 获取指定节点的路径数据。 */\n\t\t\tgetNodePath: computed(() => treeRef.value?.getNodePath),\n\t\t\t/** @description 为节点设置新数据,只有当设置 node-key 属性的时候才可用 */\n\t\t\tupdateKeyChildren: computed(() => treeRef.value?.updateKeyChildren),\n\t\t\t/** @description 如果节点可以被选中,(show-checkbox 为 true), 本方法将返回当前选中节点的数组 */\n\t\t\tgetCheckedNodes: computed(() => treeRef.value?.getCheckedNodes),\n\t\t\t/** @description 设置目前勾选的节点,使用此方法必须提前设置 node-key 属性 */\n\t\t\tsetCheckedNodes: computed(() => treeRef.value?.setCheckedNodes),\n\t\t\t/** @description \t若节点可用被选中 (show-checkbox 为 true), 它将返回当前选中节点 key 的数组 */\n\t\t\tgetCheckedKeys: computed(() => treeRef.value?.getCheckedKeys),\n\t\t\t/** @description 设置目前选中的节点,使用此方法必须设置 node-key 属性 */\n\t\t\tsetCheckedKeys: computed(() => treeRef.value?.setCheckedKeys),\n\t\t\t/** @description 设置节点是否被选中, 使用此方法必须设置 node-key 属性 */\n\t\t\tsetChecked: computed(() => treeRef.value?.setChecked),\n\t\t\t/** @description 如果节点可用被选中 (show-checkbox 为 true), 它将返回当前半选中的节点组成的数组 */\n\t\t\tgetHalfCheckedNodes: computed(() => treeRef.value?.getHalfCheckedNodes),\n\t\t\t/** @description 若节点可被选中(show-checkbox 为 true),则返回目前半选中的节点的 key 所组成的数组 */\n\t\t\tgetHalfCheckedKeys: computed(() => treeRef.value?.getHalfCheckedKeys),\n\t\t\t/** @description 返回当前被选中节点的数据 (如果没有则返回 null) */\n\t\t\tgetCurrentKey: computed(() => treeRef.value?.getCurrentKey),\n\t\t\t/** @description 返回当前被选中节点的数据 (如果没有则返回 null) */\n\t\t\tgetCurrentNode: computed(() => treeRef.value?.getCurrentNode),\n\t\t\t/** @description 通过 key 设置某个节点的当前选中状态,使用此方法必须设置 node-key 属性 */\n\t\t\tsetCurrentKey: computed(() => treeRef.value?.setCurrentKey),\n\t\t\t/** @description 设置节点为选中状态,使用此方法必须设置 node-key 属性 */\n\t\t\tsetCurrentNode: computed(() => treeRef.value?.setCurrentNode),\n\t\t\t/** @description 根据 data 或者 key 拿到 Tree 组件中的 node */\n\t\t\tgetNode: computed(() => treeRef.value?.getNode),\n\t\t\t/** @description 删除 Tree 中的一个节点,使用此方法必须设置 node-key 属性 */\n\t\t\tremove: computed(() => treeRef.value?.remove),\n\t\t\t/** @description 为 Tree 中的一个节点追加一个子节点 */\n\t\t\tappend: computed(() => treeRef.value?.append),\n\t\t\t/** @description 在 Tree 中给定节点前插入一个节点 */\n\t\t\tinsertBefore: computed(() => treeRef.value?.insertBefore),\n\t\t\t/** @description 在 Tree 中给定节点后插入一个节点 */\n\t\t\tinsertAfter: computed(() => treeRef.value?.insertAfter),\n\t\t\t/** @description 加载状态 */\n\t\t\tloading: computed(() => state.loading),\n\t\t\t/** @description 刷新 */\n\t\t\trefresh: loadData,\n\t\t});\n\t},\n});\n"],"mappings":"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"}
|