el-plus2 0.0.0
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/dist/index.full.js +2204 -0
- package/dist/index.full.min.js +2 -0
- package/dist/index.full.min.js.map +1 -0
- package/dist/index.full.min.mjs +2 -0
- package/dist/index.full.min.mjs.map +1 -0
- package/dist/index.full.mjs +2176 -0
- package/env.d.ts +17 -0
- package/es/components/buttons/index.d.ts +359 -0
- package/es/components/buttons/index.mjs +8 -0
- package/es/components/buttons/index.mjs.map +1 -0
- package/es/components/buttons/src/buttons-vue.d.ts +142 -0
- package/es/components/buttons/src/buttons-vue.mjs +70 -0
- package/es/components/buttons/src/buttons-vue.mjs.map +1 -0
- package/es/components/buttons/src/buttons.d.ts +57 -0
- package/es/components/buttons/src/buttons.mjs +23 -0
- package/es/components/buttons/src/buttons.mjs.map +1 -0
- package/es/components/form/index.d.ts +291 -0
- package/es/components/form/index.mjs +10 -0
- package/es/components/form/index.mjs.map +1 -0
- package/es/components/form/src/form-item-vue.d.ts +135 -0
- package/es/components/form/src/form-item-vue.mjs +40 -0
- package/es/components/form/src/form-item-vue.mjs.map +1 -0
- package/es/components/form/src/form-item.d.ts +68 -0
- package/es/components/form/src/form-item.mjs +33 -0
- package/es/components/form/src/form-item.mjs.map +1 -0
- package/es/components/form/src/form.d.ts +66 -0
- package/es/components/form/src/form.mjs +50 -0
- package/es/components/form/src/form.mjs.map +1 -0
- package/es/components/form/src/form.vue.d.ts +161 -0
- package/es/components/form/src/form.vue.mjs +6 -0
- package/es/components/form/src/form.vue.mjs.map +1 -0
- package/es/components/form/src/form.vue2.mjs +124 -0
- package/es/components/form/src/form.vue2.mjs.map +1 -0
- package/es/components/form/src/hooks/use-form-item.d.ts +12 -0
- package/es/components/form/src/hooks/use-form-item.mjs +97 -0
- package/es/components/form/src/hooks/use-form-item.mjs.map +1 -0
- package/es/components/form/src/hooks/use-form.d.ts +25 -0
- package/es/components/form/src/hooks/use-form.mjs +53 -0
- package/es/components/form/src/hooks/use-form.mjs.map +1 -0
- package/es/components/index.d.ts +6 -0
- package/es/components/index.mjs +9 -0
- package/es/components/index.mjs.map +1 -0
- package/es/components/input/index.d.ts +468 -0
- package/es/components/input/index.mjs +8 -0
- package/es/components/input/index.mjs.map +1 -0
- package/es/components/input/src/input.d.ts +122 -0
- package/es/components/input/src/input.mjs +28 -0
- package/es/components/input/src/input.mjs.map +1 -0
- package/es/components/input/src/input.vue.d.ts +268 -0
- package/es/components/input/src/input.vue.mjs +6 -0
- package/es/components/input/src/input.vue.mjs.map +1 -0
- package/es/components/input/src/input.vue2.mjs +144 -0
- package/es/components/input/src/input.vue2.mjs.map +1 -0
- package/es/components/searchListPage/index.d.ts +8583 -0
- package/es/components/searchListPage/index.mjs +8 -0
- package/es/components/searchListPage/index.mjs.map +1 -0
- package/es/components/searchListPage/src/searchListPage.d.ts +64 -0
- package/es/components/searchListPage/src/searchListPage.mjs +61 -0
- package/es/components/searchListPage/src/searchListPage.mjs.map +1 -0
- package/es/components/searchListPage/src/searchListPage.vue.d.ts +2760 -0
- package/es/components/searchListPage/src/searchListPage.vue.mjs +6 -0
- package/es/components/searchListPage/src/searchListPage.vue.mjs.map +1 -0
- package/es/components/searchListPage/src/searchListPage.vue2.mjs +99 -0
- package/es/components/searchListPage/src/searchListPage.vue2.mjs.map +1 -0
- package/es/components/searchListPage/src/use-search-list-page.d.ts +2671 -0
- package/es/components/searchListPage/src/use-search-list-page.mjs +177 -0
- package/es/components/searchListPage/src/use-search-list-page.mjs.map +1 -0
- package/es/components/select/index.d.ts +664 -0
- package/es/components/select/index.mjs +8 -0
- package/es/components/select/index.mjs.map +1 -0
- package/es/components/select/src/select.d.ts +283 -0
- package/es/components/select/src/select.mjs +47 -0
- package/es/components/select/src/select.mjs.map +1 -0
- package/es/components/select/src/select.vue.d.ts +384 -0
- package/es/components/select/src/select.vue.mjs +6 -0
- package/es/components/select/src/select.vue.mjs.map +1 -0
- package/es/components/select/src/select.vue2.mjs +113 -0
- package/es/components/select/src/select.vue2.mjs.map +1 -0
- package/es/components/select/src/use-select.d.ts +12 -0
- package/es/components/select/src/use-select.mjs +87 -0
- package/es/components/select/src/use-select.mjs.map +1 -0
- package/es/components/table/index.d.ts +2975 -0
- package/es/components/table/index.mjs +8 -0
- package/es/components/table/index.mjs.map +1 -0
- package/es/components/table/src/table.d.ts +781 -0
- package/es/components/table/src/table.mjs +81 -0
- package/es/components/table/src/table.mjs.map +1 -0
- package/es/components/table/src/table.vue.d.ts +1708 -0
- package/es/components/table/src/table.vue.mjs +6 -0
- package/es/components/table/src/table.vue.mjs.map +1 -0
- package/es/components/table/src/table.vue2.mjs +204 -0
- package/es/components/table/src/table.vue2.mjs.map +1 -0
- package/es/components/table/src/use-table.d.ts +241 -0
- package/es/components/table/src/use-table.mjs +260 -0
- package/es/components/table/src/use-table.mjs.map +1 -0
- package/es/components.d.ts +3 -0
- package/es/components.mjs +11 -0
- package/es/components.mjs.map +1 -0
- package/es/directives/index.d.ts +2 -0
- package/es/directives/index.mjs +3 -0
- package/es/directives/index.mjs.map +1 -0
- package/es/directives/permission/index.d.ts +6 -0
- package/es/directives/permission/index.mjs +55 -0
- package/es/directives/permission/index.mjs.map +1 -0
- package/es/directives/repeat-click/index.d.ts +16 -0
- package/es/directives/repeat-click/index.mjs +68 -0
- package/es/directives/repeat-click/index.mjs.map +1 -0
- package/es/directives/vite.config.d.ts +2 -0
- package/es/hooks/index.d.ts +1 -0
- package/es/hooks/index.mjs +2 -0
- package/es/hooks/index.mjs.map +1 -0
- package/es/hooks/use-request.d.ts +20 -0
- package/es/hooks/use-request.mjs +82 -0
- package/es/hooks/use-request.mjs.map +1 -0
- package/es/index.d.ts +9 -0
- package/es/index.mjs +24 -0
- package/es/index.mjs.map +1 -0
- package/es/package.json.mjs +4 -0
- package/es/package.json.mjs.map +1 -0
- package/es/theme-chalk/gulpfile.d.ts +0 -0
- package/es/theme-chalk/gulpfile.mjs +2 -0
- package/es/theme-chalk/gulpfile.mjs.map +1 -0
- package/es/types/env.d.mjs +2 -0
- package/es/types/env.d.mjs.map +1 -0
- package/es/types/global.d.mjs +2 -0
- package/es/types/global.d.mjs.map +1 -0
- package/es/types/vue-shim.d.mjs +2 -0
- package/es/types/vue-shim.d.mjs.map +1 -0
- package/es/utils/bem.d.ts +10 -0
- package/es/utils/bem.mjs +31 -0
- package/es/utils/bem.mjs.map +1 -0
- package/es/utils/cookie.d.ts +7 -0
- package/es/utils/cookie.mjs +29 -0
- package/es/utils/cookie.mjs.map +1 -0
- package/es/utils/env.d.ts +3 -0
- package/es/utils/env.mjs +27 -0
- package/es/utils/env.mjs.map +1 -0
- package/es/utils/props.d.ts +37 -0
- package/es/utils/props.mjs +66 -0
- package/es/utils/props.mjs.map +1 -0
- package/es/utils/request.d.ts +6 -0
- package/es/utils/request.mjs +157 -0
- package/es/utils/request.mjs.map +1 -0
- package/es/utils/type.d.ts +15 -0
- package/es/utils/type.mjs +2 -0
- package/es/utils/type.mjs.map +1 -0
- package/es/utils/with-install.d.ts +4 -0
- package/es/utils/with-install.mjs +9 -0
- package/es/utils/with-install.mjs.map +1 -0
- package/es/version.d.ts +1 -0
- package/es/version.mjs +4 -0
- package/es/version.mjs.map +1 -0
- package/global.d.ts +13 -0
- package/lib/components/buttons/index.d.ts +359 -0
- package/lib/components/buttons/index.js +13 -0
- package/lib/components/buttons/index.js.map +1 -0
- package/lib/components/buttons/src/buttons-vue.d.ts +142 -0
- package/lib/components/buttons/src/buttons-vue.js +74 -0
- package/lib/components/buttons/src/buttons-vue.js.map +1 -0
- package/lib/components/buttons/src/buttons.d.ts +57 -0
- package/lib/components/buttons/src/buttons.js +25 -0
- package/lib/components/buttons/src/buttons.js.map +1 -0
- package/lib/components/form/index.d.ts +291 -0
- package/lib/components/form/index.js +21 -0
- package/lib/components/form/index.js.map +1 -0
- package/lib/components/form/src/form-item-vue.d.ts +135 -0
- package/lib/components/form/src/form-item-vue.js +44 -0
- package/lib/components/form/src/form-item-vue.js.map +1 -0
- package/lib/components/form/src/form-item.d.ts +68 -0
- package/lib/components/form/src/form-item.js +36 -0
- package/lib/components/form/src/form-item.js.map +1 -0
- package/lib/components/form/src/form.d.ts +66 -0
- package/lib/components/form/src/form.js +55 -0
- package/lib/components/form/src/form.js.map +1 -0
- package/lib/components/form/src/form.vue.d.ts +161 -0
- package/lib/components/form/src/form.vue.js +10 -0
- package/lib/components/form/src/form.vue.js.map +1 -0
- package/lib/components/form/src/form.vue2.js +128 -0
- package/lib/components/form/src/form.vue2.js.map +1 -0
- package/lib/components/form/src/hooks/use-form-item.d.ts +12 -0
- package/lib/components/form/src/hooks/use-form-item.js +101 -0
- package/lib/components/form/src/hooks/use-form-item.js.map +1 -0
- package/lib/components/form/src/hooks/use-form.d.ts +25 -0
- package/lib/components/form/src/hooks/use-form.js +56 -0
- package/lib/components/form/src/hooks/use-form.js.map +1 -0
- package/lib/components/index.d.ts +6 -0
- package/lib/components/index.js +35 -0
- package/lib/components/index.js.map +1 -0
- package/lib/components/input/index.d.ts +468 -0
- package/lib/components/input/index.js +15 -0
- package/lib/components/input/index.js.map +1 -0
- package/lib/components/input/src/input.d.ts +122 -0
- package/lib/components/input/src/input.js +32 -0
- package/lib/components/input/src/input.js.map +1 -0
- package/lib/components/input/src/input.vue.d.ts +268 -0
- package/lib/components/input/src/input.vue.js +10 -0
- package/lib/components/input/src/input.vue.js.map +1 -0
- package/lib/components/input/src/input.vue2.js +148 -0
- package/lib/components/input/src/input.vue2.js.map +1 -0
- package/lib/components/searchListPage/index.d.ts +8583 -0
- package/lib/components/searchListPage/index.js +13 -0
- package/lib/components/searchListPage/index.js.map +1 -0
- package/lib/components/searchListPage/src/searchListPage.d.ts +64 -0
- package/lib/components/searchListPage/src/searchListPage.js +63 -0
- package/lib/components/searchListPage/src/searchListPage.js.map +1 -0
- package/lib/components/searchListPage/src/searchListPage.vue.d.ts +2760 -0
- package/lib/components/searchListPage/src/searchListPage.vue.js +10 -0
- package/lib/components/searchListPage/src/searchListPage.vue.js.map +1 -0
- package/lib/components/searchListPage/src/searchListPage.vue2.js +103 -0
- package/lib/components/searchListPage/src/searchListPage.vue2.js.map +1 -0
- package/lib/components/searchListPage/src/use-search-list-page.d.ts +2671 -0
- package/lib/components/searchListPage/src/use-search-list-page.js +179 -0
- package/lib/components/searchListPage/src/use-search-list-page.js.map +1 -0
- package/lib/components/select/index.d.ts +664 -0
- package/lib/components/select/index.js +17 -0
- package/lib/components/select/index.js.map +1 -0
- package/lib/components/select/src/select.d.ts +283 -0
- package/lib/components/select/src/select.js +53 -0
- package/lib/components/select/src/select.js.map +1 -0
- package/lib/components/select/src/select.vue.d.ts +384 -0
- package/lib/components/select/src/select.vue.js +10 -0
- package/lib/components/select/src/select.vue.js.map +1 -0
- package/lib/components/select/src/select.vue2.js +117 -0
- package/lib/components/select/src/select.vue2.js.map +1 -0
- package/lib/components/select/src/use-select.d.ts +12 -0
- package/lib/components/select/src/use-select.js +89 -0
- package/lib/components/select/src/use-select.js.map +1 -0
- package/lib/components/table/index.d.ts +2975 -0
- package/lib/components/table/index.js +16 -0
- package/lib/components/table/index.js.map +1 -0
- package/lib/components/table/src/table.d.ts +781 -0
- package/lib/components/table/src/table.js +86 -0
- package/lib/components/table/src/table.js.map +1 -0
- package/lib/components/table/src/table.vue.d.ts +1708 -0
- package/lib/components/table/src/table.vue.js +10 -0
- package/lib/components/table/src/table.vue.js.map +1 -0
- package/lib/components/table/src/table.vue2.js +208 -0
- package/lib/components/table/src/table.vue2.js.map +1 -0
- package/lib/components/table/src/use-table.d.ts +241 -0
- package/lib/components/table/src/use-table.js +264 -0
- package/lib/components/table/src/use-table.js.map +1 -0
- package/lib/components.d.ts +3 -0
- package/lib/components.js +15 -0
- package/lib/components.js.map +1 -0
- package/lib/directives/index.d.ts +2 -0
- package/lib/directives/index.js +10 -0
- package/lib/directives/index.js.map +1 -0
- package/lib/directives/permission/index.d.ts +6 -0
- package/lib/directives/permission/index.js +60 -0
- package/lib/directives/permission/index.js.map +1 -0
- package/lib/directives/repeat-click/index.d.ts +16 -0
- package/lib/directives/repeat-click/index.js +72 -0
- package/lib/directives/repeat-click/index.js.map +1 -0
- package/lib/directives/vite.config.d.ts +2 -0
- package/lib/hooks/index.d.ts +1 -0
- package/lib/hooks/index.js +8 -0
- package/lib/hooks/index.js.map +1 -0
- package/lib/hooks/use-request.d.ts +20 -0
- package/lib/hooks/use-request.js +84 -0
- package/lib/hooks/use-request.js.map +1 -0
- package/lib/index.d.ts +9 -0
- package/lib/index.js +53 -0
- package/lib/index.js.map +1 -0
- package/lib/package.json.js +6 -0
- package/lib/package.json.js.map +1 -0
- package/lib/theme-chalk/gulpfile.d.ts +0 -0
- package/lib/theme-chalk/gulpfile.js +3 -0
- package/lib/theme-chalk/gulpfile.js.map +1 -0
- package/lib/types/env.d.js +3 -0
- package/lib/types/env.d.js.map +1 -0
- package/lib/types/global.d.js +3 -0
- package/lib/types/global.d.js.map +1 -0
- package/lib/types/vue-shim.d.js +3 -0
- package/lib/types/vue-shim.d.js.map +1 -0
- package/lib/utils/bem.d.ts +10 -0
- package/lib/utils/bem.js +33 -0
- package/lib/utils/bem.js.map +1 -0
- package/lib/utils/cookie.d.ts +7 -0
- package/lib/utils/cookie.js +33 -0
- package/lib/utils/cookie.js.map +1 -0
- package/lib/utils/env.d.ts +3 -0
- package/lib/utils/env.js +30 -0
- package/lib/utils/env.js.map +1 -0
- package/lib/utils/props.d.ts +37 -0
- package/lib/utils/props.js +73 -0
- package/lib/utils/props.js.map +1 -0
- package/lib/utils/request.d.ts +6 -0
- package/lib/utils/request.js +162 -0
- package/lib/utils/request.js.map +1 -0
- package/lib/utils/type.d.ts +15 -0
- package/lib/utils/type.js +3 -0
- package/lib/utils/type.js.map +1 -0
- package/lib/utils/with-install.d.ts +4 -0
- package/lib/utils/with-install.js +11 -0
- package/lib/utils/with-install.js.map +1 -0
- package/lib/version.d.ts +1 -0
- package/lib/version.js +6 -0
- package/lib/version.js.map +1 -0
- package/package.json +27 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.full.min.mjs","sources":["../../../packages/components/buttons/src/buttons.ts","../../../packages/utils/bem.ts","../../../packages/utils/props.ts","../../../packages/directives/repeat-click/index.ts","../../../packages/utils/env.ts","../../../packages/utils/cookie.ts","../../../packages/utils/request.ts","../../../packages/directives/permission/index.ts","../../../packages/components/buttons/src/buttons-vue.tsx","../../../packages/utils/with-install.ts","../../../packages/components/buttons/index.ts","../../../packages/components/form/src/form.ts","../../../packages/components/form/src/hooks/use-form.ts","../../../packages/components/form/src/hooks/use-form-item.tsx","../../../packages/components/form/src/form-item.ts","../../../packages/components/form/src/form-item-vue.tsx","../../../packages/components/form/src/form.vue","../../../packages/components/form/index.ts","../../../packages/components/input/src/input.ts","../../../packages/components/input/src/input.vue","../../../packages/components/input/index.ts","../../../packages/components/table/src/table.ts","../../../packages/hooks/use-request.ts","../../../packages/components/table/src/use-table.tsx","../../../packages/components/table/src/table.vue","../../../packages/components/table/index.ts","../../../packages/components/searchListPage/src/searchListPage.ts","../../../packages/components/searchListPage/src/use-search-list-page.ts","../../../packages/components/searchListPage/src/searchListPage.vue","../../../packages/components/searchListPage/index.ts","../../../packages/components/select/src/select.ts","../../../packages/components/select/src/use-select.ts","../../../packages/components/select/src/select.vue","../../../packages/components/select/index.ts","../../../packages/el-plus/components.ts","../../../packages/el-plus/index.ts"],"sourcesContent":["import type { PropType, ExtractPublicPropTypes, VNode } from 'vue'\nimport {\n buttonProps as elButtonProps,\n // buttonEmits as elButtonEmits,\n type ButtonProps as ElButtonProps,\n} from 'element-plus'\nimport type { VisibleProps } from '@el-plus/utils/props'\nimport type { TableScope } from '@el-plus/components/table'\n\nexport type ButtonProps = Partial<\n ElButtonProps & {\n name: string\n prop: string // 唯一标识\n permission: string // 权限\n onClick: (e: MouseEvent | TableScope) => void\n scopedSlots: Record<string, () => VNode>\n confirm: boolean\n confirmText: string\n } & VisibleProps\n>\nexport const buttonsProps = {\n ...elButtonProps,\n disabled: {\n type: [Boolean, Function] as PropType<\n boolean | ((...args: any[]) => boolean)\n >,\n },\n list: {\n type: Array as PropType<ButtonProps[]>,\n default: () => [],\n },\n size: {\n ...elButtonProps.size,\n default: 'small',\n },\n type: {\n ...elButtonProps.type,\n default: 'default',\n },\n}\nexport type ButtonsProps = ExtractPublicPropTypes<typeof buttonsProps>\n// export const buttonsEmits = {\n// ...elButtonEmits,\n// }\n// export type ButtonsEmits = typeof buttonsEmits\n// export const buttonsEmitsKeys = Object.keys(buttonsEmits)\n","// block-代码块 ep-button\n// element-元素 ep-button__icon\n// modifier-修饰符 ep-button__icon--active\n// state-状态 is-checked\n\nfunction _bem(\n prefix: string,\n block: string,\n element: string,\n modifier: string,\n) {\n if (block) {\n prefix += '-' + block\n }\n if (element) {\n prefix += '__' + element\n }\n if (modifier) {\n prefix += '--' + modifier\n }\n return prefix\n}\nfunction createBEM(prefix: string) {\n return {\n b: (block: string = '') => _bem(prefix, block, '', ''),\n e: (element: string = '') => (element ? _bem(prefix, '', element, '') : ''),\n m: (modifier: string = '') =>\n modifier ? _bem(prefix, '', '', modifier) : '',\n be: (block: string = '', element: string = '') =>\n block && element ? _bem(prefix, block, element, '') : '',\n bm: (block: string = '', modifier: string = '') =>\n block && modifier ? _bem(prefix, block, '', modifier) : '',\n em: (element: string = '', modifier: string = '') =>\n element && modifier ? _bem(prefix, '', element, modifier) : '',\n bem: (block: string = '', element: string = '', modifier: string) =>\n block && element && modifier\n ? _bem(prefix, block, element, modifier)\n : '',\n is: (name: string = '', state: boolean) => (state ? `is-${name}` : ''),\n }\n}\n\nexport function createNameSpace(name) {\n const prefix = `ep-${name}`\n return createBEM(prefix)\n}\n","import type { Api, ReqBefore, ReqAfter, Method } from './type'\nimport type { PropType, SetupContext, MaybeRef, ExtractPropTypes } from 'vue'\nimport { useAttrs } from 'vue'\nexport const apiProps = {\n api: {\n type: [String, Function] as PropType<Api>,\n },\n method: {\n type: String as PropType<Method>,\n },\n reqData: {\n type: Object,\n },\n reqParams: {\n type: Object,\n },\n reqBefore: {\n type: Function as PropType<ReqBefore>,\n },\n reqAfter: {\n type: Function as PropType<ReqAfter>,\n },\n}\ntype IVisible = boolean | ((T: unknown) => boolean)\nexport const visibleProps = {\n show: {\n type: [Boolean, Function] as PropType<IVisible>,\n },\n hide: {\n type: [Boolean, Function] as PropType<IVisible>,\n },\n}\nexport type VisibleProps = ExtractPropTypes<typeof visibleProps>\nexport const prepareProps = <T extends Record<string, any>>( // eslint-disable-line @typescript-eslint/no-explicit-any\n props: T,\n excludeKeys: string[] = [],\n): Partial<T> => {\n return Object.keys(props).reduce((acc, key) => {\n if (!excludeKeys.includes(key)) {\n acc[key as keyof T] = props[key]\n }\n return acc\n }, {} as Partial<T>)\n}\nexport const prepareEvents = <T extends Record<string, unknown> | string[]>(\n emit: SetupContext<T>['emit'],\n eventKeys: string[],\n // (keyof T & string)[] = [],\n) => {\n return eventKeys.reduce(\n (acc, key) => {\n // 转换on+事件名\n let eventName\n if (key.startsWith('on')) {\n eventName = key\n } else {\n if (key.includes('-')) {\n eventName =\n 'on' +\n key\n .split('-')\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join('')\n } else {\n eventName = `on${key.charAt(0).toUpperCase()}${key.slice(1)}`\n }\n }\n acc[eventName] = (...args: unknown[]) => emit(key, ...args)\n return acc\n },\n {} as Record<string, unknown>,\n )\n}\n\nexport const prepareClassNames = () => {\n return useAttrs().class || ''\n}\nexport const prepareStyles = () => {\n return useAttrs().style || {}\n}\n","import type { Directive } from 'vue'\nconst SCOPE = '_RepeatClick'\nexport interface RepeatClickEl extends HTMLElement {\n [SCOPE]: null | {\n start?: (evt: MouseEvent) => void\n }\n}\nexport interface RepeatClickOptions {\n immediate?: boolean\n delay?: number\n handler: (...args: unknown[]) => unknown\n}\nconst vRepeatClick: Directive<RepeatClickEl, RepeatClickOptions> & {\n name: string\n} = {\n name: 'repeatClick',\n // 在绑定元素的 attribute 前\n // 或事件监听器应用前调用\n // created(el, binding, vnode) {\n // // el.style.display = 'none'\n // // 下面会介绍各个参数的细节\n // console.log('created', el, binding, vnode)\n // },\n\n // 在元素被插入到 DOM 前调用\n beforeMount(el, binding) {\n const { delay = 300, immediate } =\n typeof binding.value === 'object' ? binding.value : {}\n const handler =\n typeof binding.value === 'object' ? binding.value.handler : binding.value\n let isPending = false\n let timer: ReturnType<typeof setTimeout>\n const start = (e: MouseEvent) => {\n if (e.button !== 0) return // 只处理左键点击\n timer && clearTimeout(timer)\n timer = setTimeout(() => {\n if (immediate) {\n isPending = false\n } else {\n handler?.(e)\n }\n }, delay)\n if (immediate) {\n if (isPending) {\n return\n }\n isPending = true\n handler?.(e)\n }\n }\n el[SCOPE] = { start }\n el.addEventListener('click', start)\n },\n // // 在绑定元素的父组件\n // // 及他自己的所有子节点都挂载完成后调用\n // mounted(el, binding, vnode) {\n // console.log('mounted', el, binding, vnode)\n // },\n // // 绑定元素的父组件更新前调用\n // beforeUpdate(el, binding, vnode, prevVnode) {\n // console.log('beforeUpdate', el, binding, vnode, prevVnode)\n // },\n // // 在绑定元素的父组件\n // // 及他自己的所有子节点都更新后调用\n // updated(el, binding, vnode, prevVnode) {\n // console.log('updated', el, binding, vnode, prevVnode)\n // },\n // // 绑定元素的父组件卸载前调用\n // beforeUnmount(el, binding, vnode) {\n // console.log('beforeUnmount', el, binding, vnode)\n // },\n // 绑定元素的父组件卸载后调用\n unmounted(el) {\n if (!el[SCOPE]) return\n const { start } = el[SCOPE]\n\n if (start) {\n el.removeEventListener('mousedown', start)\n }\n el[SCOPE] = null\n },\n}\nexport default vRepeatClick\n","const getEnv = (mark = 'hxjf', hostname = window.location.hostname) => {\n const tag = hostname.match(new RegExp(`.*(?=${mark})`))\n if (hostname === 'hxdv-ui.hongxinshop.com') {\n return 'production'\n }\n if (!tag) {\n return 'local'\n }\n return tag[0] ? tag[0].replace('-', '') : 'production'\n}\n\nconst getBaseUrl = (env = 'sit', isOpenApi?: boolean) => {\n let url = ''\n if (getEnv() === 'local') {\n const query: {\n devProxy?: string\n [propName: string]: string | undefined\n } = {}\n // for (const key in new URLSearchParams(location.search.slice(1))) {\n // query[key] = location.search.slice(1)[key]\n // }\n query.devProxy =\n location.search.slice(1).split('=')[1] ||\n location.hash.slice(1).split('=')[1]\n // const query = querystring.parse(location.search.slice(1));\n const devProxy = query.devProxy || `${env}-api`\n url = `${devProxy}${isOpenApi ? '/vue-openapi' : ''}`\n } else if (isOpenApi) {\n url = '/vue-openapi'\n } else {\n url = '/vue-api'\n }\n return url\n}\n\nexport { getEnv, getBaseUrl }\n","const setCookie = (\n name: string,\n value: string,\n expiresHours: number,\n path: string = '',\n) => {\n let cookieString = `${name}=${escape(value)}`\n if (expiresHours === Infinity) {\n cookieString = `${cookieString}; expires=Fri, 31 Dec 9999 23:59:59 GMT`\n }\n // 判断是否设置过期时间\n else if (expiresHours > 0) {\n // debugger;\n const date = new Date()\n date.setTime(date.getTime() + expiresHours * 60 * 60 * 1000)\n cookieString = `${cookieString}; expires=\" + date.toGMTString()`\n }\n\n document.cookie = `${cookieString};path=${path}`\n}\n\nconst getCookie = (name: string) => {\n const reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)')\n const arr = document.cookie.match(reg)\n if (arr) {\n return decodeURIComponent(arr[2])\n }\n return null\n}\n\nconst delCookie = ({ name, path = '' }: { name: string; path: string }) => {\n if (path === 'all') {\n document.cookie = name + '=; expires=Thu, 01-Jan-70 00:00:01 GMT;path=/'\n } else {\n document.cookie =\n name + '=; expires=Thu, 01-Jan-70 00:00:01 GMT;path=' + path\n }\n}\n\nexport { setCookie, getCookie, delCookie }\n","import axios from 'axios'\nimport { getBaseUrl } from './env'\nimport { getCookie } from './cookie'\nimport { ElMessage, ElLoading } from 'element-plus'\nimport 'element-plus/es/components/message/style/css'\nimport 'element-plus/es/components/loading/style/css'\n\n// 创建一个axios实例\nconst instance = axios.create({\n method: 'post',\n timeout: 20000,\n baseURL: getBaseUrl(),\n headers: {\n 'Content-Type': 'application/json',\n },\n})\nlet reqNum = 0\nlet loading = { close: () => {} }\nfunction startLoading() {\n if (reqNum === 0) {\n loading = ElLoading.service({\n fullscreen: true,\n lock: true,\n text: '请稍等,正在加载中...',\n spinner: 'el-icon-loading',\n background: 'rgba(0,0,0,0.7)',\n })\n }\n\n reqNum++\n}\n\nfunction closeLoading() {\n if (reqNum <= 0) {\n return\n }\n\n reqNum--\n\n if (reqNum === 0) {\n loading.close()\n }\n}\n\nfunction endLoading() {\n closeLoading()\n}\ninstance.interceptors.request.use(\n async (config) => {\n const token = getCookie('access_token')\n if (token) {\n config.headers['Authorization'] = `Bearer ${token}`\n }\n if (config.loading) {\n startLoading()\n }\n config.headers = {\n ...config.headers,\n ...(window.hx &&\n window.hx.getSignHeaders({\n // 只有openapi接口需要传sign\n sign: config.sign || window.ELPLUSSIGN,\n config,\n })),\n }\n const cancelRequest = config.cancelRequest\n config.cancelToken = new axios.CancelToken(function (cancel) {\n cancelRequest && cancelRequest(cancel)\n })\n return config\n },\n (error) => {\n console.log(error)\n return Promise.reject(error)\n },\n)\ninstance.interceptors.response.use(\n (response) => {\n const config = response.config\n if (config.loading) {\n endLoading()\n }\n const responseCode = response.data.code\n const { hideToast, hideToastCode = {} } = response.config.headers\n // 由于数组会被axios自动转换成对象,所以将其先转换成伪数组然后转换成数组\n hideToastCode.length = Object.keys(hideToastCode).length\n if (responseCode === 200) {\n return Promise.resolve(response.data)\n } else if (\n hideToast ||\n Array.prototype.slice.call(hideToastCode).indexOf(responseCode) > -1\n ) {\n return Promise.reject(response.data)\n } else {\n setTimeout(() => {\n ElMessage.error({\n message: `<pre>${response.data.msg}</pre>`,\n type: 'error',\n duration: 2000,\n dangerouslyUseHTMLString: true,\n })\n }, 300)\n return Promise.reject(response.data)\n }\n },\n (error) => {\n const { config = {}, message } = error\n const { url } = config\n if (config.loading) {\n endLoading()\n }\n\n if (error && error.response) {\n const { status } = error.response\n switch (status) {\n case 400:\n error.message = error.response.data.message || error.response.data.msg\n break\n case 403:\n error.message = '拒绝访问(403)'\n break\n case 404:\n error.message = '请求出错(404)'\n break\n case 408:\n error.message = '请求超时(408)'\n break\n case 500:\n error.message = '服务器错误(500)'\n break\n case 501:\n error.message = '服务未实现(501)'\n break\n case 502:\n error.message = '网络错误(502)'\n break\n case 503:\n error.message = '服务不可用(503)'\n break\n case 504:\n error.message = '网络超时(504)'\n break\n case 505:\n error.message = 'HTTP版本不受支持(505)'\n break\n default:\n error.message = `连接出错(${error.response.status})!`\n }\n } else {\n // 请求超时状态\n if (error.message.includes('timeout')) {\n error.message = `请求${url ? url : ''}超时,请检查网络是否连接正常`\n } else {\n error.message = `请求${url ? url : ''}失败,请检查网络是否已连接`\n }\n }\n if (!axios.isCancel(error) || !config.noErrorMsg) {\n ElMessage.error({\n message: error.message,\n type: 'error',\n duration: 2000,\n dangerouslyUseHTMLString: true,\n })\n }\n\n return Promise.reject(error)\n },\n)\nconst fetch = instance.request\nexport { instance }\nexport default fetch\n","import type { Directive } from 'vue'\nimport request from '@el-plus/utils/request'\n\n// v-permisson:CGXQD:QXSP\nconst vPermisson: Directive<HTMLElement> & { name: string } = {\n name: 'permission',\n mounted(el, binding) {\n const { arg, value } = binding.value\n if (!arg && !value) {\n return\n }\n el.style.display = 'none'\n const permission = `${arg}:${value}`\n checkPermission(permission, el)\n },\n updated(el, binding) {\n const { arg, value } = binding.value\n if (!arg && !value) {\n if (el.style.display === 'none') {\n el.style.display = ''\n }\n return\n }\n const permission = `${arg}:${value}`\n checkPermission(permission, el)\n },\n}\n\nexport async function checkPermission(permission: string, el: HTMLElement) {\n const { data: roles = [] } = await queryRoles()\n const hasPermission = roles.indexOf(permission) > -1\n if (!hasPermission) {\n el && el.parentNode && el.parentNode.removeChild(el)\n } else {\n el.style.display = ''\n }\n return hasPermission\n}\ntype RequestPromise = Promise<{ data: string[] }>\nlet requestPromise: RequestPromise | null = null\nasync function queryRoles(): RequestPromise {\n try {\n if (requestPromise) {\n return requestPromise\n }\n requestPromise = request({\n url: '/api-u/api/saas/user/appButtonRoleList',\n loading: true,\n noErrorMsg: true,\n })\n return requestPromise\n } catch (error) {\n console.error(error)\n return { data: [] }\n }\n}\n\nexport default vPermisson\n","import { defineComponent, computed } from 'vue'\nimport { buttonsProps } from './buttons'\nimport { createNameSpace } from '@el-plus/utils/bem'\nimport {\n prepareProps,\n prepareEvents,\n prepareClassNames,\n prepareStyles,\n} from '@el-plus/utils/props'\nimport { vRepeatClick, vPermission } from '@el-plus/directives'\nimport { ElMessageBox } from 'element-plus'\nconst bem = createNameSpace('button')\n\nexport default defineComponent({\n name: 'EpButtons',\n directives: {\n [vRepeatClick.name]: vRepeatClick,\n [vPermission.name]: vPermission,\n },\n inheritAttrs: false,\n props: buttonsProps,\n setup(props, { emit }) {\n const { list, ...buttonProps } = props\n const customList = computed(() => {\n return list.filter((button) => {\n if ('show' in button) {\n return typeof button.show === 'function'\n ? button.show(button)\n : button.show\n } else if ('hide' in button) {\n return typeof button.hide === 'function'\n ? !button.hide(button)\n : !button.hide\n }\n return true\n })\n })\n const clickFn = async (item) => {\n if (item.confirm) {\n const confirmText = item.confirmText || `确定要${item.name}吗?`\n await ElMessageBox.confirm(confirmText, 'Warning', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning',\n })\n }\n item.onClick()\n }\n\n return () => (\n <>\n {customList.value.map((item) => {\n const permissionArr = item.permission?.split(':') || []\n return (\n <el-button\n class={[bem.b(), prepareClassNames()]}\n style={prepareStyles()}\n key={item.prop || item.name}\n v-slots={{\n default: () => item.name,\n ...item.scopedSlots,\n }}\n {...{\n ...prepareProps(buttonProps),\n ...prepareProps(item, ['scopedSlots', 'name', 'onClick']),\n }}\n v-repeat-click={\n typeof item.onClick === 'function'\n ? {\n handler: () => clickFn(item),\n immediate: true,\n }\n : () => clickFn(item)\n }\n v-permission={{\n arg: permissionArr[0],\n value: permissionArr[1],\n }}\n ></el-button>\n )\n })}\n </>\n )\n },\n})\n","import type { Plugin, App, Component } from 'vue'\n\n// 绑定install,使得可以app.use注册为全局组件\ntype SFCWithInstall<T> = T & Plugin\nexport function withInstall<T extends Component>(comp: T) {\n ;(comp as SFCWithInstall<T>).install = (app: App) => {\n app.component((comp as { name: string }).name, comp)\n }\n return comp as SFCWithInstall<T>\n}\n","import Buttons from './src/buttons-vue'\nimport { withInstall } from '@el-plus/utils/with-install'\n\nexport default withInstall(Buttons)\nexport * from './src/buttons'\n","import type { ExtractPropTypes, PropType, ExtractPublicPropTypes } from 'vue'\nimport {\n formProps as elFormProps,\n formEmits as elFormEmits,\n} from 'element-plus'\nimport type { FormItemProps } from './form-item'\nconst expandFormProps = {\n // 表单列表\n formItemList: {\n type: Array as PropType<FormItemProps[]>,\n default: () => [] as FormItemProps[],\n },\n // 是否显示折叠\n isShowFold: Boolean,\n\n // 最大显示的表单数\n showFieldCount: {\n type: Number,\n default: 8,\n },\n // 每行的列数\n col: {\n type: Number,\n default: 4,\n },\n}\nexport const formProps = {\n ...elFormProps,\n ...expandFormProps,\n size: {\n ...elFormProps.size,\n default: 'small',\n },\n // 标签的长度\n labelWidth: {\n ...elFormProps.labelWidth,\n default: 120,\n },\n scrollIntoViewOptions: {\n ...elFormProps.scrollIntoViewOptions,\n default: () => {\n return { inline: 'center' }\n },\n },\n}\nexport type FormProps = ExtractPropTypes<typeof formProps>\nexport const expandFormPropsKeys = Object.keys(expandFormProps)\n/* eslint-disable @typescript-eslint/no-unused-vars */\nexport const formEmits = {\n ...elFormEmits,\n toggleStatus: (status: boolean) => true, // 折叠状态切换时触发\n}\n/* eslint-enable @typescript-eslint/no-unused-vars */\n\nexport type FormEmits = typeof formEmits\nexport const formEmitsKeys = Object.keys(formEmits)\n","import { ref, computed, useTemplateRef, type SetupContext } from 'vue'\nimport type { FormItemProps } from '../form-item'\nimport type { FormProps, FormEmits } from '../form'\nimport type { FormInstance, FormItemProp } from 'element-plus'\n\ninterface UseCollapseParams {\n isShowFold: boolean\n showFieldCount: number\n filterFormItemList: { value: FormItemProps[] }\n}\nexport const useCollapse = (\n { isShowFold, showFieldCount, filterFormItemList }: UseCollapseParams,\n emit: SetupContext<FormEmits>['emit'],\n) => {\n const open = ref(false)\n const toggleStatus = () => {\n open.value = !open.value\n emit('toggleStatus', open.value)\n }\n // 是否显示折叠按钮\n const isShowFoldBtn = computed(() => {\n return isShowFold && filterFormItemList.value.length > showFieldCount\n })\n // 展开收起隐藏formItem逻辑\n const isShowFormItem = (index: number) => {\n return index < showFieldCount || open.value || !isShowFoldBtn.value\n }\n return {\n open,\n toggleStatus,\n isShowFoldBtn,\n isShowFormItem,\n }\n}\n\nexport const useForm = (props: FormProps) => {\n const elFormRef = useTemplateRef<FormInstance>('elFormRef')\n const filterFormItemList = computed(() => {\n return props.formItemList.filter((item: FormItemProps) => {\n if ('show' in item) {\n return typeof item.show === 'function' ? item.show(item) : item.show\n } else if ('hide' in item) {\n return typeof item.hide === 'function' ? !item.hide(item) : !item.hide\n }\n return true\n })\n })\n // 校验\n const validate = () => {\n return elFormRef.value!.validate()\n }\n // 重置校验\n const resetFields = (props: FormItemProp) => {\n return elFormRef.value!.resetFields(props)\n }\n // 清理某个字段的表单验证信息\n const clearValidate = (props: FormItemProp) => {\n return elFormRef.value!.clearValidate(props)\n }\n\n return {\n filterFormItemList,\n elFormRef,\n validate,\n resetFields,\n clearValidate,\n }\n}\n","import { h, resolveComponent, useAttrs } from 'vue'\nimport type { FormItemProps } from '../form-item'\nimport type { FormItemRule } from 'element-plus'\nexport const useFormItem = () => {\n return {}\n}\nexport const useFormItemSlots = (props: FormItemProps) => {\n const attrs = useAttrs()\n const { type, label, render, required, labelRender } = props\n const prop = props.tableProp || props.prop\n const { scopedSlots: renderScopedSlots, ...renderProps } = props.props || {}\n const events: Record<string, (...args: any[]) => void> = {}\n for (const key in attrs) {\n if (key.startsWith('on')) {\n events[key] = attrs[key] as (...args: any[]) => void\n }\n }\n\n const formData = attrs['form-data'] as Record<string, unknown>\n const scopedSlots = {\n default: () => {\n return type\n ? h(\n resolveComponent(type),\n {\n modelValue: formData[prop as string],\n 'onUpdate:modelValue': (value: unknown) => {\n formData[prop as string] = value\n },\n ...renderProps,\n ...events,\n },\n renderScopedSlots,\n )\n : formData[prop as string]\n },\n label: () => {\n return (\n <el-tooltip\n placement=\"top\"\n effect=\"light\"\n content={label}\n disabled={!props.isShowLabel}\n >\n <span>\n {!props.hideRequiredAsterisk && required ? (\n <span style=\"color: var(--el-color-danger);\">*</span>\n ) : null}\n {props.isShowLabel ? <span>{label}</span> : ''}\n </span>\n </el-tooltip>\n )\n },\n }\n\n if (labelRender) {\n scopedSlots.label = () => labelRender({ label })\n }\n if (render) {\n scopedSlots.default = render\n }\n return {\n scopedSlots,\n }\n}\nexport const useFormItemRules = (props: FormItemProps) => {\n const { required, rules, label } = props\n let mergeRules: FormItemRule[] = []\n if (required) {\n const requiredDefault = { required: true }\n mergeRules.push(requiredDefault)\n }\n if (rules) {\n if (Array.isArray(rules)) {\n mergeRules = mergeRules.concat(rules)\n }\n\n if (Object.prototype.toString.call(rules) === '[object Object]') {\n mergeRules.push(rules as FormItemRule)\n }\n }\n\n if (mergeRules) {\n mergeRules.forEach((r) => {\n if (r.required && typeof r.message === 'undefined') {\n r.message = `${label || ''}不能为空`\n }\n })\n }\n return { rules: mergeRules }\n}\n","import { formItemProps as elFormItemProps } from 'element-plus'\nimport { visibleProps } from '@el-plus/utils/props'\nimport { CSSProperties } from 'vue'\nimport type {\n VNode,\n PropType,\n ExtractPropTypes,\n ExtractPublicPropTypes,\n} from 'vue'\nconst expandFormItemProps = {\n type: {\n type: String,\n // default: 'EpInput',\n },\n col: Number,\n render: Function as PropType<() => VNode>,\n labelRender: Function as PropType<\n ({ label }: { label: string | undefined }) => VNode\n >,\n props: Object,\n ...visibleProps,\n class: String,\n style: {\n type: [String, Object] as PropType<string | CSSProperties>,\n },\n isShowLabel: {\n type: Boolean,\n default: true,\n },\n hideRequiredAsterisk: Boolean,\n tableProp: String, // 用于table里的表单需要绑定的prop\n}\nexport const formItemProps = {\n ...elFormItemProps,\n ...expandFormItemProps,\n}\nexport type FormItemProps = ExtractPublicPropTypes<typeof formItemProps>\nexport const expandFormItemPropsKeys = Object.keys(expandFormItemProps)\n","import { defineComponent, useAttrs } from 'vue'\nimport { createNameSpace } from '@el-plus/utils/bem'\nimport { useFormItemRules, useFormItemSlots } from './hooks/use-form-item'\nimport { formItemProps, expandFormItemPropsKeys } from './form-item'\nimport {\n prepareProps,\n prepareEvents,\n prepareClassNames,\n prepareStyles,\n} from '@el-plus/utils/props'\nconst bem = createNameSpace('form-item')\nexport default defineComponent({\n name: 'EpFormItem',\n inheritAttrs: false,\n props: formItemProps,\n setup(props, { emit }) {\n // const {} = useFormItem(props)\n const attrs = useAttrs()\n const { scopedSlots } = useFormItemSlots(props)\n const { rules } = useFormItemRules(props)\n const { props: childProps, ...formItemProps } = props // eslint-disable-line\n return () => {\n return (\n <el-form-item\n class={[bem.b(), prepareClassNames()]}\n style={prepareStyles()}\n v-slots={scopedSlots}\n {...{\n ...prepareProps(formItemProps, [...expandFormItemPropsKeys]),\n rules,\n 'label-width': attrs['form-label-width'],\n }}\n // scopedSlots={scopedSlots}\n // label={label}\n // prop={prop}\n // rules={mergeRules}\n // {...{ props: formItemProps }}\n />\n )\n }\n },\n})\n","<template>\n <div\n :class=\"[\n bem.b(),\n prepareClassNames(),\n bem.is('open', open),\n bem.is('fold', isShowFoldBtn),\n ]\"\n :style=\"{\n ...prepareStyles(),\n }\"\n >\n <el-form ref=\"elFormRef\" :model=\"formData\" v-bind=\"customAttrs\">\n <slot>\n <el-row>\n <el-col\n v-for=\"(item, index) in filterFormItemList\"\n v-show=\"isShowFormItem(index)\"\n :key=\"item.prop || index\"\n :class=\"bem.e('col')\"\n :span=\"item.col || 24 / col\"\n >\n <FormItem\n :form-data=\"formData\"\n :form-label-width=\"labelWidth\"\n v-bind=\"item\"\n />\n </el-col>\n </el-row>\n </slot>\n </el-form>\n <div v-if=\"isShowFoldBtn\" :class=\"bem.e('fold')\" @click=\"toggleStatus\">\n {{ open ? '收起' : '更多' }}\n </div>\n </div>\n</template>\n<script setup lang=\"ts\">\nimport { computed, reactive, ref, useTemplateRef } from 'vue'\nimport { createNameSpace } from '@el-plus/utils/bem'\nimport {\n formProps,\n formEmits,\n formEmitsKeys,\n expandFormPropsKeys,\n} from './form'\nimport type { FormEmits } from './form'\nimport {\n prepareProps,\n prepareEvents,\n prepareClassNames,\n prepareStyles,\n} from '@el-plus/utils/props'\nimport { useCollapse, useForm } from './hooks/use-form'\nimport FormItem from './form-item-vue'\ndefineOptions({\n name: 'EpForm',\n inheritAttrs: false,\n})\nconst bem = createNameSpace('form')\nconst props = defineProps(formProps)\nconst emit = defineEmits(formEmits)\nconst customAttrs = computed(() => {\n return {\n ...prepareProps(props, ['modelValue', 'model', ...expandFormPropsKeys]),\n hideRequiredAsterisk: true, // 隐藏必填星号, 使用自己的*\n scrollToError: true,\n ...prepareEvents<FormEmits>(emit, formEmitsKeys),\n }\n})\nconst formData = defineModel<Record<string, unknown>>({\n default: () => reactive({}),\n})\n\nconst { filterFormItemList, elFormRef, validate, resetFields, clearValidate } =\n useForm(props)\n\nconst { open, toggleStatus, isShowFoldBtn, isShowFormItem } = useCollapse(\n {\n filterFormItemList,\n isShowFold: props.isShowFold,\n showFieldCount: props.showFieldCount,\n },\n emit,\n)\n\ndefineExpose({\n elFormRef,\n validate,\n resetFields,\n clearValidate,\n})\n</script>\n","import Form from './src/form.vue'\nimport FormItem from './src/form-item-vue'\nimport { withInstall } from '@el-plus/utils/with-install'\nexport default withInstall(Form)\nexport * from './src/form'\nexport * from './src/form-item'\nexport { FormItem as EpFormItem }\nexport type FormInstance = InstanceType<typeof Form>\nexport type FormItemInstance = InstanceType<typeof FormItem>\n\n","import type { ExtractPropTypes } from 'vue'\nimport {\n inputProps as elInputProps,\n inputEmits as elInputEmits,\n} from 'element-plus'\n\nexport const inputProps = {\n ...elInputProps,\n max: Number,\n min: Number,\n radix: Number,\n nonzero: Boolean,\n placeholder: {\n type: String,\n default: '请输入',\n },\n thousand: {\n type: Boolean,\n default: true,\n },\n clearable: {\n ...elInputProps.clearable,\n default: true,\n },\n}\nexport type InputProps = ExtractPropTypes<typeof inputProps>\nexport const inputEmits = {\n ...elInputEmits,\n}\nexport type InputEmits = typeof inputEmits\nexport const inputEmitsKeys = Object.keys(inputEmits)\n\n// max: Number,\n// min: Number,\n// nonzero: Boolean,\n// format: Function,\n// radix: {\n// type: [String, Number],\n// default: 5,\n// },\n// thousand: {\n// type: Boolean,\n// default: false,\n// },\n","<template>\n <el-input\n ref=\"inputRef\"\n v-model=\"value\"\n :class=\"`${bem.b()} ${prepareClassNames()}`\"\n :style=\"{\n ...prepareStyles(),\n }\"\n v-bind=\"customAttrs\"\n :type=\"type === 'number' ? 'text' : type\"\n >\n <template v-for=\"name in slots\" #[name]=\"scope\">\n <slot :name=\"name\" v-bind=\"scope\" />\n </template>\n </el-input>\n</template>\n<script setup lang=\"ts\">\nimport { computed, useSlots, watch, ref, onMounted } from 'vue'\nimport { createNameSpace } from '@el-plus/utils/bem'\nimport { inputProps, inputEmits, inputEmitsKeys } from './input'\nimport type { InputProps, InputEmits } from './input'\nimport {\n prepareProps,\n prepareEvents,\n prepareClassNames,\n prepareStyles,\n} from '@el-plus/utils/props'\ndefineOptions({\n name: 'EpInput',\n inheritAttrs: false,\n})\nconst bem = createNameSpace('input')\nconst props = defineProps(inputProps)\nconst emit = defineEmits(inputEmits)\nconst slots = computed(() => {\n return Object.keys(useSlots())\n})\nlet isBluring = false\nlet isFocusing = false\nconst customAttrs = computed(() => {\n return {\n ...prepareProps(props, ['modelValue']),\n ...prepareEvents<InputEmits>(emit, inputEmitsKeys),\n placeholder: props.disabled ? '' : props.placeholder,\n onFocus: (e: FocusEvent) => {\n isFocusing = true\n if (props.thousand) {\n ;(e.target as HTMLInputElement).value = value.value\n ? String(value.value)\n : ''\n }\n emit('focus', e)\n },\n onBlur: (e: FocusEvent) => {\n if (props.type === 'number') {\n let val = value.value as string\n if (props.nonzero && +val === 0) {\n val = ''\n }\n if (val && val[val.length - 1] === '.') {\n val = String(val).slice(0, -1)\n }\n\n if (val && val === '-') {\n val = ''\n }\n value.value = val ? +val : val\n ;(e.target as HTMLInputElement).value = toThousand(value.value)\n }\n isBluring = true\n isFocusing = false\n emit('blur', e)\n },\n }\n})\nconst value = defineModel<InputProps['modelValue']>()\nconst inputRef = ref()\nconst toThousand = (val: string | number) => {\n if (props.thousand) {\n return val ? window.hx.thousand(val) : val\n }\n return val\n}\nwatch(\n () => value.value,\n (val) => {\n if (props.type === 'number') {\n onMounted(() => {\n inputRef.value.input.value = toThousand(val as number)\n })\n }\n if (isBluring) {\n isBluring = false\n return\n }\n if (!isFocusing) {\n return\n }\n if (props.type === 'number') {\n if (typeof val === 'number') {\n val = '' + val\n }\n if (typeof val === 'string') {\n // 校验一次是否0+数字开头,这种情况直接把0去除\n const zeroReg = new RegExp('^[-+]?0[0-9]\\\\d*')\n if (zeroReg.test(val)) {\n val = val.replace('0', '')\n }\n const reg = new RegExp('^([-+])?\\\\d*(\\\\.?\\\\d*)', 'g')\n val = val.match(reg) ? val.match(reg)![0] : ''\n\n // 限制小数位数\n if (props.radix || props.radix === 0) {\n const reg =\n props.radix === 0\n ? new RegExp('^([-+])?\\\\d*', 'g')\n : new RegExp(`^([-+])?\\\\d*(\\\\.?\\\\d{0,${props.radix}})`, 'g')\n val = val.match(reg) ? val.match(reg)![0] : ''\n }\n if ((props.max || props.max === 0) && +val > props.max) {\n val = props.max\n }\n // 最大最小值\n if (\n (props.min || props.min === 0) &&\n (val || val === 0) &&\n +val < props.min\n ) {\n val = props.min\n }\n }\n } else if (props.type === 'text') {\n val = (val as string).trim()\n }\n value.value = val\n },\n {\n immediate: true,\n },\n)\n</script>\n","import Input from './src/input.vue'\nimport { withInstall } from '@el-plus/utils/with-install'\n\nexport default withInstall(Input)\nexport * from './src/input'\n\n// GlobalComponents是vue3自带,用于扩展接口,给用户自定义全局组件补充类型提示\ndeclare module 'vue' {\n export interface GlobalComponents {\n // 接口自动合并\n EpInput: typeof Input\n }\n}\n","import type { PropType, ExtractPublicPropTypes } from 'vue'\nimport elTableProps from 'element-plus/es/components/table/src/table/defaults'\nimport { ElTable } from 'element-plus'\nimport { apiProps, type VisibleProps } from '@el-plus/utils/props'\nimport type { WithOnPrefixAndCamelCase } from '@el-plus/utils/type'\nimport type {\n TableColumnCtx,\n PaginationProps,\n PaginationEmits,\n} from 'element-plus'\nimport type { ButtonProps } from '@el-plus/components/buttons'\nconst inheritTableProps = {\n ...elTableProps,\n // Table 的尺寸\n size: {\n ...elTableProps.size,\n default: 'default',\n },\n // 是否带有纵向边框\n border: {\n ...elTableProps.border,\n default: true,\n },\n // 表头样式\n headerCellStyle: {\n ...elTableProps.headerCellStyle,\n default: () => ({\n background: '#EEEFF3',\n // textAlign: 'center',\n fontSize: '14px',\n color: '#505050',\n }),\n },\n}\nexport type TableColumn = Partial<\n TableColumnCtx & {\n required: boolean | (() => boolean)\n cellRequired: (scope: TableScope) => boolean\n headerRender: TableColumnCtx['renderHeader']\n disabled: boolean | ((scope: TableScope) => boolean)\n props: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n filter: boolean // 是否显示筛选\n [key: string]: any\n } & VisibleProps\n>\nexport type TableScope<\n T extends Record<string, unknown> = Record<string, unknown>,\n> = {\n column: TableColumnCtx<T>\n row: T\n $index: number\n store: unknown\n _self: unknown\n}\nconst expandTableProps = {\n ...apiProps,\n columns: {\n type: Array as PropType<TableColumn[]>,\n default: () => [],\n },\n // 是否显示勾选列\n showSelectionCol: Boolean,\n // 是否显示序号列\n showIndexCol: {\n type: Boolean,\n default: true,\n },\n // 对齐方式\n align: {\n type: String as PropType<'left' | 'center' | 'right'>,\n default: 'center',\n },\n // 序号列自定义\n indexFormatter: {\n type: [Number, Function] as PropType<TableColumnCtx['index']>,\n },\n disabled: Boolean,\n reserveSelection: Boolean,\n selectable: {\n type: Function as PropType<TableColumnCtx['selectable']>,\n },\n paginationProps: {\n type: Object as PropType<\n Partial<PaginationProps & WithOnPrefixAndCamelCase<PaginationEmits>>\n >,\n default: () => ({}),\n },\n showPagination: Boolean,\n isFrontPage: Boolean,\n // 操作列\n actionButtons: {\n type: Array as PropType<ButtonProps[]>,\n default: () => [],\n },\n // 链接列\n linkProps: {\n type: Array as PropType<ButtonProps[]>,\n default: () => [],\n },\n}\n\nexport const tableProps = {\n ...inheritTableProps,\n ...expandTableProps,\n}\nexport type TableProps = ExtractPublicPropTypes<typeof tableProps>\nexport const expandTablePropsKeys = Object.keys(expandTableProps)\n\nexport const tableEmits = ElTable.emits\n\nexport type TableEmits = typeof tableEmits\nexport const tableEmitsKeys = tableEmits\n","import { ref } from 'vue'\nimport { type Ref } from 'vue'\nimport type { Api, ReqAfter, ReqBefore, Method } from '@el-plus/utils/type'\nimport type { Canceler } from 'axios'\n\nimport request from '@el-plus/utils/request'\ntype UseRequest = (config: {\n api?: Api\n method?: Method\n reqData?: Record<string, unknown>\n reqParams?: Record<string, unknown>\n reqBefore?: ReqBefore\n reqAfter?: ReqAfter\n cancelToken?: boolean\n hooks?: {\n success?: (data: unknown) => void\n fail?: (error: unknown) => void\n }\n}) => {\n loading?: Ref<boolean>\n requestFn?: (data?: Record<string, unknown>) => Promise<void>\n}\n\nexport const useRequest: UseRequest = ({\n api,\n method,\n reqData,\n reqParams,\n reqBefore,\n reqAfter,\n cancelToken,\n hooks,\n}) => {\n if (!api) return {}\n const loading = ref(false)\n let cancelRequest: Canceler\n let apiFn\n if (typeof api === 'string') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const config: Record<string, any> = {\n url: api,\n method,\n }\n if (cancelToken) {\n config.cancelRequest = (cancel: Canceler) => {\n cancelRequest = cancel\n }\n }\n\n apiFn = (data: Record<string, any> = {}, params?: Record<string, any>) => {\n if (config.method === 'get') {\n config.params = data\n } else {\n config.data = data\n config.params = params\n }\n config.data = {\n ...reqData,\n ...config.data,\n }\n config.params = {\n ...reqParams,\n ...config.params,\n }\n // 替换$query为$searchValue\n if (data.$query) {\n config.data[data.$query] = data.$searchValue\n delete data.$searchValue\n }\n\n if (reqBefore) {\n reqBefore(config)\n }\n return request(config)\n }\n } else {\n apiFn = api\n }\n const requestFn = async (data: Record<string, unknown> = {}) => {\n if (loading.value && !cancelToken) return\n loading.value = true\n try {\n cancelRequest && cancelRequest()\n const res = await apiFn(data)\n if (reqAfter) {\n reqAfter(res)\n }\n if (hooks?.success) {\n hooks.success(res.data)\n }\n } catch (error) {\n if (hooks?.fail) {\n hooks.fail(error)\n }\n } finally {\n loading.value = false\n }\n }\n return {\n loading,\n requestFn,\n }\n}\n","import type { FormInstance, TableInstance, FormItemProp } from 'element-plus'\nimport { ref, computed, type Ref, reactive, useTemplateRef } from 'vue'\nimport { useRequest } from '@el-plus/hooks/use-request'\nimport type { TableColumn, TableProps, TableScope } from './table'\nimport type { ButtonProps } from '@el-plus/components/buttons'\nimport {\n prepareProps,\n prepareEvents,\n prepareClassNames,\n prepareStyles,\n} from '@el-plus/utils/props'\nexport type ISearch = (init: boolean, isPagination?: boolean) => void\nexport const useTable = (props: TableProps) => {\n const elFormRef = useTemplateRef<FormInstance>('elFormRef')\n const elTableRef = useTemplateRef<TableInstance>('elTableRef')\n const customData = ref<Record<string, unknown>[]>([])\n const { loading, requestFn } = useRequest({\n api: props.api,\n method: props.method,\n reqData: props.reqData,\n reqParams: props.reqParams,\n reqBefore: props.reqBefore,\n reqAfter: props.reqAfter,\n cancelToken: true,\n hooks: {\n success(data) {\n if (Array.isArray(data)) {\n customData.value = data\n } else if (data && typeof data === 'object') {\n const rawData = data as Record<string, any>\n customData.value = rawData?.list || rawData?.data || []\n } else {\n customData.value = []\n }\n if (props.showPagination) {\n pagination.total =\n (props.isFrontPage\n ? customData.value.length\n : (data as { total: number }).total) || 0\n }\n },\n fail(error) {\n console.error(error)\n },\n },\n })\n // 加载下拉列表\n const search: ISearch = (init = false, isPagination = false) => {\n if (init) {\n pagination.pageNo = 1\n }\n // 前端分页\n if (isPagination && props.isFrontPage) {\n const { pageNo, pageSize } = pagination\n const data = customData.value.filter((item, index) => {\n return index < pageNo * pageSize && index >= (pageNo - 1) * pageSize\n })\n customData.value = data\n } else {\n if (props.api) {\n requestFn!({\n pageNo: pagination.pageNo,\n pageSize: pagination.pageSize,\n })\n } else if (props.data?.length) {\n customData.value = props.data\n }\n }\n }\n const { pagination, paginationProps } = usePagination(props, search)\n search(true)\n // 校验\n const validate = () => {\n return elFormRef.value!.validate()\n }\n // 重置校验\n const resetFields = (props: FormItemProp) => {\n return elFormRef.value!.resetFields(props)\n }\n // 清理某个字段的表单验证信息\n const clearValidate = (props: FormItemProp) => {\n return elFormRef.value!.clearValidate(props)\n }\n // 格式化操作按钮\n const formatActionButtons = (list: ButtonProps[], scope: TableScope) => {\n return list.map((item) => {\n if (item.onClick) {\n item.onClick = item.onClick.bind(null, scope)\n }\n return item\n })\n }\n\n return {\n loading,\n data: customData,\n search,\n pagination,\n paginationProps,\n validate,\n resetFields,\n clearValidate,\n elFormRef,\n elTableRef,\n formatActionButtons,\n }\n}\nconst usePagination = function (props: TableProps, search: ISearch) {\n const pageSizes = [20, 50, 100, 200]\n const pagination = reactive({\n total: 0,\n pageNo: 1,\n pageSize: pageSizes[0],\n })\n const paginationProps = computed(() => {\n const defaultPaginationProps = props.paginationProps || {}\n const onSizeChange = defaultPaginationProps.onSizeChange\n const onCurrentChange = defaultPaginationProps.onCurrentChange\n return {\n ...defaultPaginationProps,\n pageSizes,\n layout: 'total, sizes, prev, pager, next, jumper',\n onSizeChange: (value: number) => {\n onSizeChange && onSizeChange(value)\n search(true, true)\n },\n onCurrentChange: (value: number) => {\n onCurrentChange && onCurrentChange(value)\n search(false, true)\n },\n }\n })\n return {\n pagination,\n paginationProps,\n }\n}\n\nexport const useTableColumn = (\n props: TableProps,\n tableData: Ref<TableProps['data']>,\n) => {\n const columnProps = (column: TableColumn) => {\n const attrs = {\n align: column.align || props.align,\n // ...prepareEvents<TableEmits>(emit, tableEmits),\n } as TableColumn\n // console.log(attrs)\n\n if (!column.renderHeader) {\n let required = column.required\n if (typeof column.required === 'function') {\n required = column.required()\n }\n if (required) {\n attrs['renderHeader'] = (data) => {\n const { column } = data\n return (\n <span>\n <span style=\"color:var(--el-color-danger)\"> * </span>\n {column.label}\n </span>\n )\n }\n }\n }\n if (column.headerRender) {\n attrs.renderHeader = column.headerRender\n }\n if (column.filter) {\n const arr = tableData.value!.map((item) => item[column.prop!])\n attrs.filters = [...new Set(arr)].map((item) => {\n return {\n text: item,\n value: item,\n }\n })\n attrs.filterMethod = (value, row) => {\n return row[column.prop!] === value\n }\n }\n return {\n ...attrs,\n ...prepareProps(column),\n }\n }\n const columnList = computed(() => {\n return props.columns!.filter((column: TableColumn) => {\n if (props.linkProps!.length) {\n const linkColumn = props.linkProps!.find(\n (item) => item.prop === column.prop,\n )\n if (linkColumn) {\n column.type = 'EpButtons'\n column.className = 'table-column-link'\n column.props = {\n list: [linkColumn],\n type: 'text',\n ...column.props,\n }\n }\n }\n if ('show' in column) {\n return typeof column.show === 'function'\n ? column.show(column)\n : column.show\n } else if ('hide' in column) {\n return typeof column.hide === 'function'\n ? !column.hide(column)\n : !column.hide\n }\n return true\n })\n })\n return {\n columnProps,\n columnList,\n }\n}\n\nexport const useTableFormItem = (props: TableProps) => {\n const formItemProps = (scope: TableScope, item: TableColumn) => {\n let required = item.required\n if (typeof required === 'function') {\n required = required()\n }\n if (item.cellRequired) {\n required = item.cellRequired(scope)\n }\n let disabled = props.disabled\n if ('disabled' in item) {\n if (typeof item.disabled === 'function') {\n disabled = item.disabled(scope)\n } else {\n disabled = item.disabled || false\n }\n }\n if (item.type === 'EpSelect' && item.props) {\n if ('options' in item.props && typeof item.props.options === 'function') {\n item.props.options = item.props.options(scope)\n }\n if (\n 'disabledOption' in item.props &&\n typeof item.props.disabledOption === 'function'\n ) {\n const disabledOption = item.props.disabledOption\n item.props.disabledOption = (...args: unknown[]) =>\n disabledOption(...args, scope)\n }\n }\n\n if (item.type === 'EpButtons' && item.props) {\n item.props.list.forEach((btnItem: ButtonProps) => {\n if (btnItem.prop) {\n btnItem.name = scope.row[btnItem.prop] as string\n }\n if (btnItem.onClick) {\n btnItem.onClick = btnItem.onClick.bind(null, scope)\n }\n })\n }\n for (const key in item) {\n if (key.startsWith('on') && typeof item[key] === 'function') {\n const fn = item[key]\n item[key] = (...args: unknown[]) => fn(...args, scope)\n }\n }\n return {\n ...prepareProps(item),\n isShowLabel: false,\n required,\n hideRequiredAsterisk: 'cellRequired' in item ? false : required,\n prop: `table.${scope.$index}.${item.prop}`,\n tableProp: item.prop, // table里的表单需要绑定的prop\n props: {\n ...item.props,\n disabled,\n },\n }\n }\n return {\n formItemProps,\n }\n}\n","<template>\n <div\n :class=\"`${bem.b()} ${prepareClassNames()}`\"\n :style=\"{\n ...prepareStyles(),\n }\"\n >\n <el-form\n ref=\"elFormRef\"\n :model=\"{ table: data }\"\n size=\"small\"\n hide-required-asterisk\n scroll-to-error\n :scroll-into-view-options=\"{ inline: 'center' }\"\n class=\"ep-form\"\n >\n <el-table ref=\"elTableRef\" v-loading=\"loading\" v-bind=\"customAttrs\">\n <el-table-column\n v-if=\"showSelectionCol\"\n type=\"selection\"\n width=\"55\"\n :align\n :selectable\n fixed\n />\n <el-table-column\n v-if=\"showIndexCol\"\n type=\"index\"\n width=\"56\"\n :align\n label=\"序号\"\n fixed\n :index=\"indexFormatter\"\n />\n\n <el-table-column\n v-if=\"actionButtons.length\"\n label=\"操作\"\n :align\n fixed\n width=\"200\"\n >\n <template #default=\"scope\">\n <span :class=\"bem.e('action-buttons')\">\n <EpButtons\n :list=\"formatActionButtons(actionButtons, scope)\"\n type=\"text\"\n />\n </span>\n </template>\n </el-table-column>\n <el-table-column\n v-for=\"(item, index) in columnList\"\n :key=\"index\"\n v-bind=\"columnProps(item)\"\n >\n <template #default=\"scope\">\n <EpFormItem\n v-if=\"item.type\"\n :form-data=\"scope.row\"\n v-bind=\"formItemProps(scope, item)\"\n />\n <template v-else>\n {{ scope.row[item.prop] }}\n </template>\n </template>\n </el-table-column>\n <template v-for=\"name in slots\" #[name]=\"scope\">\n <slot :name=\"name\" v-bind=\"scope\" />\n </template>\n </el-table>\n </el-form>\n <el-pagination\n v-if=\"showPagination\"\n v-model:current-page=\"pagination.pageNo\"\n v-model:page-size=\"pagination.pageSize\"\n :total=\"pagination.total\"\n v-bind=\"paginationProps\"\n />\n </div>\n</template>\n<script setup lang=\"tsx\">\nimport { computed, useSlots, ref } from 'vue'\nimport { createNameSpace } from '@el-plus/utils/bem'\nimport {\n tableProps,\n tableEmits,\n expandTablePropsKeys,\n tableEmitsKeys,\n} from './table'\nimport type { TableEmits } from './table'\nimport {\n prepareProps,\n prepareEvents,\n prepareClassNames,\n prepareStyles,\n} from '@el-plus/utils/props'\nimport { EpFormItem } from '@el-plus/components/form'\nimport { useTable, useTableColumn, useTableFormItem } from './use-table'\nimport { linkProps } from 'element-plus'\n\ndefineOptions({\n name: 'EpTable',\n inheritAttrs: false,\n})\nconst bem = createNameSpace('table')\nconst props = defineProps(tableProps)\nconst emit = defineEmits(tableEmits!)\n\nconst slots = computed(() => {\n return Object.keys(useSlots())\n // .filter((item) => item !== 'default')\n})\nconst customAttrs = computed(() => {\n return {\n ...prepareProps(props, ['modelValue', ...expandTablePropsKeys]),\n size: 'small',\n data: data.value,\n ...prepareEvents<NonNullable<TableEmits>>(emit, tableEmitsKeys!),\n }\n})\nconst {\n pagination,\n paginationProps,\n data,\n validate,\n resetFields,\n clearValidate,\n loading,\n search,\n elFormRef,\n elTableRef,\n formatActionButtons,\n} = useTable(props)\nconst { columnProps, columnList } = useTableColumn(props, data)\nconst { formItemProps } = useTableFormItem(props)\n\ndefineExpose({\n elFormRef,\n elTableRef,\n validate,\n resetFields,\n clearValidate,\n search,\n})\n// const value = defineModel<TableProps['modelValue']>()\n</script>\n","import Table from './src/table.vue'\nimport { withInstall } from '@el-plus/utils/with-install'\n\nexport default withInstall(Table)\nexport * from './src/table'\nexport type TableInstance = InstanceType<typeof Table>\n// GlobalComponents是vue3自带,用于扩展接口,给用户自定义全局组件补充类型提示\ndeclare module 'vue' {\n export interface GlobalComponents {\n // 接口自动合并\n EpTable: typeof Table\n }\n}\n","import type { PropType, ExtractPublicPropTypes } from 'vue'\nimport { apiProps } from '@el-plus/utils/props'\nimport { formProps } from '@el-plus/components/form'\nimport { buttonsProps } from '@el-plus/components/buttons'\nimport { tableProps } from '@el-plus/components/table'\nconsole.log(formProps.formItemList)\n\nexport const searchListPageProps = {\n ...apiProps,\n customColumnModule: Number, // 自定义列模块\n showOperationColumn: Boolean, // 是否显示操作列\n // 表单列表\n formItemList: {\n ...formProps.formItemList,\n },\n // 左侧按钮\n leftButtons: {\n ...buttonsProps.list,\n },\n // 表格列\n columns: {\n ...tableProps.columns,\n },\n // 操作列\n actionButtons: {\n ...tableProps.actionButtons,\n },\n // 链接列\n linkProps: {\n ...tableProps.linkProps,\n },\n showSelectionCol: Boolean,\n showIndexCol: {\n type: Boolean,\n default: true,\n },\n add: Function, // 新增\n templateDownloadApi: String, // 模板下载\n importApi: String, // 导入\n exportApi: String, // 导出\n // 表格额外距离\n offsetTop: {\n type: Number,\n default: 0,\n },\n formData: {\n type: Object,\n default: () => ({}),\n },\n tableProps: Object,\n formProps: Object,\n buttonsProps: Object,\n}\nexport type SearchListPageProps = ExtractPublicPropTypes<\n typeof searchListPageProps\n>\n","import { ref, onMounted, computed, useTemplateRef } from 'vue'\nimport type { SearchListPageProps } from './searchListPage'\nimport type { ButtonsProps } from '@el-plus/components/buttons'\nimport type { FormInstance } from '@el-plus/components/form'\nimport type { TableInstance } from '@el-plus/components/table'\nimport type { FormItemProp } from 'element-plus'\nexport const useSearchListPage = (props: SearchListPageProps) => {\n const { calcTableHeight, tableProps, tableRef } = useTable(props)\n const { formProps, validate, resetFields, formRef } = useForm(props, {\n calcTableHeight,\n })\n const { buttonsProps, searchButtons, search, reset } = useButtons(props, {\n validate,\n resetFields,\n tableRef,\n })\n return {\n formProps,\n tableProps,\n buttonsProps,\n searchButtons,\n search,\n reset,\n tableRef,\n formRef,\n }\n}\nconst useTable = (props: SearchListPageProps) => {\n const instanceName = 'tableRef'\n const tableRef = useTemplateRef<TableInstance>(instanceName)\n const tableHeight = ref(window.innerHeight)\n const tableProps = computed(() => {\n return {\n ref: instanceName,\n columns: props.columns,\n showPagination: true,\n height: tableHeight.value,\n showIndexCol: props.showIndexCol,\n showSelectionCol: props.showSelectionCol,\n actionButtons: props.actionButtons,\n linkProps: props.linkProps,\n api: props.api,\n reqData: props.formData,\n ...props.tableProps,\n }\n })\n const calcTableHeight = () => {\n const topHeight = (document.getElementById('top') as HTMLElement)\n .offsetHeight\n const middleHeight = (document.getElementById('middle') as HTMLElement)\n .offsetHeight\n let paginationHeight = 0\n if (tableProps.value.showPagination) {\n paginationHeight =\n (document.querySelector('.el-pagination') as HTMLElement).offsetHeight +\n 12\n }\n const frameDistance = 40\n tableHeight.value =\n window.innerHeight -\n topHeight -\n middleHeight -\n paginationHeight -\n frameDistance -\n props.offsetTop!\n }\n\n onMounted(calcTableHeight)\n return {\n tableRef,\n tableProps,\n calcTableHeight,\n }\n}\nconst useForm = (props: SearchListPageProps, { calcTableHeight }) => {\n const instanceName = 'formRef'\n const formRef = useTemplateRef<FormInstance>(instanceName)\n const formProps = computed(() => {\n return {\n ref: instanceName,\n formItemList: props.formItemList,\n isShowFold: true,\n modelValue: props.formData,\n ...props.formProps,\n onToggleStatus: () => {\n setTimeout(() => {\n calcTableHeight()\n }, 0) // 等展开后计算表格高度\n },\n }\n })\n // 校验\n const validate = () => {\n return formRef.value!.validate()\n }\n // 重置校验\n const resetFields = (props: FormItemProp) => {\n return formRef.value!.resetFields(props)\n }\n // 清理某个字段的表单验证信息\n const clearValidate = (props: FormItemProp) => {\n return formRef.value!.clearValidate(props)\n }\n return {\n formProps,\n formRef,\n validate,\n resetFields,\n clearValidate,\n }\n}\nconst useButtons = (\n props: SearchListPageProps,\n { validate, resetFields, tableRef },\n) => {\n const defaultButtons: ButtonsProps['list'] = [\n {\n name: '新增',\n prop: 'add',\n show: () => {\n return !!props.add\n },\n onClick: () => {\n props.add?.()\n },\n },\n {\n name: '模版下载',\n prop: 'templateDownload',\n show: !!props.templateDownloadApi,\n },\n {\n name: '导入',\n prop: 'import',\n show: !!props.importApi,\n },\n {\n name: '导出',\n prop: 'export',\n show: !!props.exportApi,\n },\n ]\n props.leftButtons?.forEach((item) => {\n const defaultIndex = defaultButtons.findIndex(\n (item1) => item1.prop === item.prop,\n )\n if (defaultIndex !== -1) {\n defaultButtons[defaultIndex] = {\n ...defaultButtons[defaultIndex],\n ...item,\n }\n }\n })\n const list = defaultButtons.concat(props.leftButtons!)\n list.forEach((item) => {\n if (item.onClick) {\n const clickFn = item.onClick\n item.onClick = () => {\n // 增加选中项\n const rows = tableRef.value.elTableRef.getSelectionRows()\n clickFn(rows)\n }\n }\n })\n\n const buttonsProps = computed(() => {\n return {\n list,\n ...props.buttonsProps,\n }\n })\n // 搜索\n const search = async () => {\n await validate()\n tableRef.value.search(true)\n }\n // 清空\n const reset = async () => {\n resetFields()\n search()\n }\n const searchButtons: ButtonsProps['list'] = [\n {\n name: '搜索',\n type: 'primary',\n onClick: search,\n },\n {\n name: '清空',\n onClick: reset,\n },\n ]\n return {\n buttonsProps,\n searchButtons,\n search,\n reset,\n }\n}\n","<template>\n <div\n :class=\"[bem.b(), prepareClassNames()]\"\n :style=\"{\n ...prepareStyles(),\n }\"\n >\n <div id=\"top\">\n <EpForm v-bind=\"formProps\" />\n </div>\n <div id=\"middle\">\n <div :class=\"bem.e('middle-left')\">\n <EpButtons v-bind=\"buttonsProps\" />\n </div>\n <div :class=\"bem.e('middle-right')\">\n <EpButtons :list=\"searchButtons\" />\n </div>\n </div>\n <slot name=\"tableBefore\"></slot>\n <EpTable v-bind=\"tableProps\" />\n </div>\n</template>\n<script setup lang=\"ts\">\nimport EpForm from '@el-plus/components/form'\nimport EpTable from '@el-plus/components/table'\nimport { createNameSpace } from '@el-plus/utils/bem'\nimport {\n prepareProps,\n prepareEvents,\n prepareClassNames,\n prepareStyles,\n} from '@el-plus/utils/props'\nimport { searchListPageProps } from './searchListPage'\nimport { useSearchListPage } from './use-search-list-page'\nimport { computed } from 'vue'\ndefineOptions({ name: 'EpSearchListPage' })\nconst bem = createNameSpace('search-list-page')\nconst props = defineProps(searchListPageProps)\n\nconst {\n formProps,\n buttonsProps,\n searchButtons,\n search,\n reset,\n tableRef,\n formRef,\n tableProps,\n} = useSearchListPage(props)\n\ndefineExpose({\n search,\n reset,\n tableRef,\n formRef,\n})\n</script>\n","import SearchListPage from './src/searchListPage.vue'\nimport { withInstall } from '@el-plus/utils/with-install'\n\nexport default withInstall(SearchListPage)\nexport * from './src/searchListPage'\n\n// GlobalComponents是vue3自带,用于扩展接口,给用户自定义全局组件补充类型提示\ndeclare module 'vue' {\n export interface GlobalComponents {\n // 接口自动合并\n EpSearchListPage: typeof SearchListPage\n }\n}\n","import type { ExtractPropTypes, PropType, ExtractPublicPropTypes } from 'vue'\nimport {\n selectProps as elSelectProps,\n selectEmits as elSelectEmits,\n type SelectProps as ElSelectProps,\n} from 'element-plus'\nimport { apiProps } from '@el-plus/utils/props'\n\nexport type SelectOption = NonNullable<ElSelectProps['options']>[number]\nexport const inheritSelectProps = {\n ...elSelectProps,\n clearable: {\n ...elSelectProps.clearable,\n default: true,\n },\n} as const\nconst expandSelectProps = {\n ...apiProps,\n disabledOption: {\n type: Function as PropType<(item: SelectOption) => boolean>,\n default: () => false,\n },\n labelKey: {\n type: String,\n default: 'label',\n },\n valueKey: {\n type: String,\n default: 'value',\n },\n formatLabel: {\n type: Function as PropType<(item: SelectOption) => string>,\n },\n // api模式生效\n lazy: Boolean,\n // option是否同时展示code label, 默认值展示label, 传string展示指定字段\n codeInLabel: {\n type: [String, Boolean] as PropType<boolean | string>,\n },\n}\nexport const selectProps = {\n ...inheritSelectProps,\n ...expandSelectProps,\n}\nexport const expandSelectPropsKeys = Object.keys(expandSelectProps)\n\nexport type SelectProps = ExtractPropTypes<typeof selectProps>\nexport type SelectPropsPublic = ExtractPublicPropTypes<typeof selectProps>\n\n/* eslint-disable @typescript-eslint/no-unused-vars */\nexport const selectEmits = {\n ...elSelectEmits,\n change: (\n value: SelectProps['modelValue'],\n item?: SelectOption | SelectOption[],\n ) => true,\n}\n/* eslint-enable @typescript-eslint/no-unused-vars */\nexport type SelectEmits = typeof selectEmits\nexport const selectEmitsKeys = Object.keys(selectEmits)\n","import { ref } from 'vue'\nimport type { SetupContext } from 'vue'\nimport { useRequest } from '@el-plus/hooks/use-request'\nimport type { SelectProps, SelectOption, SelectEmits } from './select'\nexport function useSelect(\n props: SelectProps,\n emit: SetupContext<SelectEmits>['emit'],\n) {\n let hasLoaded = false\n const { loading, requestFn } = useRequest({\n api: props.api,\n method: props.method,\n reqData: props.reqData,\n reqParams: props.reqParams,\n reqBefore: props.reqBefore,\n reqAfter: props.reqAfter,\n cancelToken: props.remote,\n hooks: {\n success(data) {\n type OptionArr = SelectOption[]\n interface OptionObj {\n list?: OptionArr\n data?: OptionArr\n }\n if (Array.isArray(data)) {\n customOptions.value = data as OptionArr\n } else if (data && typeof data === 'object') {\n const rawData = data as OptionObj\n customOptions.value = rawData?.list || rawData?.data || []\n } else {\n customOptions.value = []\n }\n hasLoaded = true\n },\n fail(error) {\n console.error(error)\n },\n },\n })\n // 下拉列表\n const customOptions = ref<SelectOption[]>([]) // 下拉列表\n // 加载下拉列表\n const loadOptions = (\n value: SelectProps['modelValue'],\n desc: string | undefined,\n ) => {\n if ((value || value === 0) && desc) {\n customOptions.value = [\n {\n [props.labelKey]: desc,\n [props.valueKey]: value,\n },\n ]\n }\n if (props.api) {\n if (!props.lazy && !props.remote) {\n requestFn!()\n }\n } else if (props.options?.length) {\n customOptions.value = props.options\n }\n }\n // 获取选中项\n const getSelectItem = (value: SelectProps['modelValue']) => {\n if (Array.isArray(value)) {\n if (!props.options) return []\n return props.options.filter((item: SelectOption) => {\n return value.indexOf(item[props.valueKey]) > -1\n })\n }\n if (!props.options) return {}\n return (\n props.options.find((item: SelectOption) => {\n return item[props.valueKey] === value\n }) || {}\n )\n }\n const expandAttrs = {\n loading: props.loading || loading?.value,\n remoteMethod: (query: string) => {\n if (!query) return\n requestFn!({\n $searchValue: query,\n })\n },\n onChange(value: SelectProps['modelValue']) {\n emit('change', value, getSelectItem(value))\n },\n onVisibleChange(visible: boolean) {\n if (props.api && props.lazy && visible && !hasLoaded && !props.remote) {\n requestFn!()\n }\n emit('visible-change', visible)\n },\n }\n return {\n customOptions,\n loadOptions,\n expandAttrs,\n }\n}\n","<template>\n <el-select\n v-model=\"value\"\n :class=\"`${bem.b()} ${prepareClassNames()}`\"\n v-bind=\"customAttrs\"\n :style=\"{\n ...prepareStyles(),\n }\"\n >\n <el-option\n v-for=\"item in customOptions\"\n :key=\"item[valueKey]\"\n :class=\"bem.e('option')\"\n :label=\"\n item.formatLabel\n ? item.formatLabel(item)\n : formatLabel\n ? formatLabel(item)\n : item[labelKey]\n \"\n :value=\"item[valueKey]\"\n :disabled=\"disabledOption(item)\"\n >\n <slot name=\"option\" :item=\"item\">\n <template v-if=\"codeInLabel || codeInLabel === ''\">\n <span style=\"float: left\">{{ item[labelKey] }}</span>\n <span\n style=\"\n float: right;\n color: var(--el-text-color-secondary);\n font-size: 13px;\n \"\n >\n {{\n item[\n typeof codeInLabel === 'string' && codeInLabel\n ? codeInLabel\n : valueKey\n ]\n }}\n </span>\n </template>\n </slot>\n </el-option>\n <template v-for=\"name in slots\" #[name]=\"scope\">\n <slot :name=\"name\" v-bind=\"scope\" />\n </template>\n </el-select>\n</template>\n<script setup lang=\"ts\">\nimport { computed, useSlots } from 'vue'\nimport {\n selectProps,\n selectEmits,\n expandSelectPropsKeys,\n selectEmitsKeys,\n} from './select'\nimport type { SelectProps, SelectEmits } from './select'\nimport {\n prepareProps,\n prepareEvents,\n prepareClassNames,\n prepareStyles,\n} from '@el-plus/utils/props'\nimport { useSelect } from './use-select'\nimport { createNameSpace } from '@el-plus/utils/bem'\ndefineOptions({\n name: 'EpSelect',\n inheritAttrs: false,\n})\nconst bem = createNameSpace('select')\nconst props = defineProps(selectProps)\nconst emit = defineEmits(selectEmits)\nconst slots = computed(() => {\n return Object.keys(useSlots())\n})\n\nconst { customOptions, loadOptions, expandAttrs } = useSelect(props, emit)\nconst value = defineModel<SelectProps['modelValue']>()\nconst desc = defineModel<string>('desc')\nconst customAttrs = computed(() => {\n return {\n ...prepareProps(props, ['modelValue', 'desc', ...expandSelectPropsKeys]),\n ...prepareEvents<SelectEmits>(emit, selectEmitsKeys),\n ...expandAttrs,\n }\n})\nloadOptions(value.value, desc.value)\n</script>\n","import Select from './src/select.vue'\nimport { withInstall } from '@el-plus/utils/with-install'\n\nexport default withInstall(Select)\nexport * from './src/select'\n\ndeclare module 'vue' {\n export interface GlobalComponents {\n EpSelect: typeof Select\n }\n}\n","import type { Plugin } from 'vue'\nimport Buttons from '@el-plus/components/buttons'\nimport Form from '@el-plus/components/form'\nimport Input from '@el-plus/components/input'\nimport SearchListPage from '@el-plus/components/searchListPage'\nimport Select from '@el-plus/components/select'\nimport Table from '@el-plus/components/table'\n\nexport default [Buttons, Form, Input, SearchListPage, Select, Table] as Plugin[]\n","import type { App, Plugin } from 'vue'\nimport components from './components'\nimport { version } from './package.json'\nexport const install = (app: App, options?: Record<string, any>) => {\n components.forEach((c) => app.use(c))\n if (options) {\n }\n}\n\nconst plugin: Plugin & { version: string } = {\n install,\n version,\n}\nexport default plugin\nexport * from '@el-plus/components'\nexport * from '@el-plus/hooks'\nexport * from '@el-plus/directives'\n"],"names":["buttonsProps","elButtonProps","_bem","prefix","block","element","modifier","createBEM","name","state","createNameSpace","apiProps","visibleProps","prepareProps","props","excludeKeys","acc","key","prepareEvents","emit","eventKeys","eventName","word","args","prepareClassNames","useAttrs","prepareStyles","SCOPE","vRepeatClick","el","binding","delay","immediate","handler","isPending","timer","start","e","getEnv","mark","hostname","tag","getBaseUrl","env","isOpenApi","url","query","getCookie","reg","arr","instance","axios","reqNum","loading","startLoading","ElLoading","closeLoading","endLoading","config","token","cancelRequest","cancel","error","response","responseCode","hideToast","hideToastCode","ElMessage","message","status","fetch","vPermisson","arg","value","permission","checkPermission","roles","queryRoles","hasPermission","requestPromise","request","bem","Buttons$1","directives","vPermission","inheritAttrs","setup","list","buttonProps","customList","computed","filter","button","show","hide","clickFn","item","confirm","confirmText","ElMessageBox","confirmButtonText","cancelButtonText","type","onClick","_createVNode","_Fragment","map","permissionArr","split","_withDirectives","_resolveComponent","_mergeProps","b","prop","default","scopedSlots","_resolveDirective","withInstall","comp","app","Buttons","expandFormProps","formProps","elFormProps","expandFormPropsKeys","formEmits","elFormEmits","formEmitsKeys","useCollapse","isShowFold","showFieldCount","filterFormItemList","open","ref","toggleStatus","isShowFoldBtn","index","useForm","elFormRef","useTemplateRef","useFormItemSlots","attrs","label","render","required","labelRender","tableProp","renderScopedSlots","renderProps","events","startsWith","formData","h","resolveComponent","modelValue","isShowLabel","hideRequiredAsterisk","_createTextVNode","useFormItemRules","rules","mergeRules","requiredDefault","push","Array","isArray","concat","Object","prototype","toString","call","forEach","r","expandFormItemProps","formItemProps","elFormItemProps","expandFormItemPropsKeys","EpFormItem","childProps","__props","__emit","customAttrs","_useModel","validate","resetFields","clearValidate","isShowFormItem","__expose","_createElementBlock","_normalizeClass","_unref","_normalizeStyle","_component_el_form","_renderSlot","_ctx","_component_el_row","_openBlock","_renderList","_createBlock","_component_el_col","col","labelWidth","_vShow","Form","inputProps","elInputProps","inputEmits","elInputEmits","inputEmitsKeys","slots","useSlots","isBluring","isFocusing","val","toThousand","inputRef","watch","onMounted","_component_el_input","$event","_withCtx","scope","_normalizeProps","_guardReactiveProps","Input","inheritTableProps","elTableProps","expandTableProps","tableProps","expandTablePropsKeys","tableEmits","ElTable","tableEmitsKeys","useRequest","api","method","reqData","reqParams","reqBefore","reqAfter","cancelToken","hooks","apiFn","data","params","res","useTable","elTableRef","customData","requestFn","success","rawData","showPagination","pagination","total","isFrontPage","length","fail","console","search","init","isPagination","pageNo","pageSize","paginationProps","usePagination","formatActionButtons","bind","pageSizes","reactive","defaultPaginationProps","onSizeChange","onCurrentChange","layout","useTableColumn","tableData","columnProps","column","align","renderHeader","headerRender","filters","Set","text","filterMethod","row","columnList","columns","linkProps","linkColumn","find","className","useTableFormItem","cellRequired","disabled","options","disabledOption","btnItem","fn","$index","keys","size","class","style","model","inline","_component_el_table","_createSlots","showSelectionCol","_component_el_table_column","width","selectable","fixed","showIndexCol","indexFormatter","actionButtons","_createElementVNode","_component_EpButtons","ref_for","_toDisplayString","$slots","_component_el_pagination","Table","searchListPageProps","useSearchListPage","calcTableHeight","tableRef","formRef","searchButtons","reset","useButtons","instanceName","tableHeight","topHeight","middleHeight","paginationHeight","frameDistance","defaultButtons","defaultIndex","item1","rows","SearchListPage","inheritSelectProps","elSelectProps","expandSelectProps","selectProps","expandSelectPropsKeys","selectEmits","elSelectEmits","selectEmitsKeys","useSelect","hasLoaded","customOptions","loadOptions","desc","getSelectItem","expandAttrs","visible","_component_el_select","_component_el_option","valueKey","formatLabel","labelKey","codeInLabel","Select","components","install","c","plugin","version"],"mappings":"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"}
|