diff --git a/CHANGELOG.md b/CHANGELOG.md
index e41e0c3..6bc28ed 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,33 @@
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
+## [1.6.6](https://github.com/kailong321200875/vue-element-plus-admin/compare/v1.6.5...v1.6.6) (2022-10-09)
+
+
+### Bug Fixes
+
+* table search params ([a62929a](https://github.com/kailong321200875/vue-element-plus-admin/commit/a62929a8dac21028d3dd1cddf98189492c33b093))
+
+## [1.6.5](https://github.com/kailong321200875/vue-element-plus-admin/compare/v1.6.4...v1.6.5) (2022-10-08)
+
+
+### Bug Fixes
+
+* The attribute of option does not work ([d946920](https://github.com/kailong321200875/vue-element-plus-admin/commit/d946920e61ed81beacf9f1f8be7ee1f50505f64d))
+
+
+### Performance Improvements
+
+* perf store ([d416178](https://github.com/kailong321200875/vue-element-plus-admin/commit/d416178d69ca6100be4b635922b1a22d27629f08))
+* token test ([b320e65](https://github.com/kailong321200875/vue-element-plus-admin/commit/b320e658d1a559a6eaebdf374d63649c223c2ecd))
+
+## [1.6.4](https://github.com/kailong321200875/vue-element-plus-admin/compare/v1.6.3...v1.6.4) (2022-09-21)
+
+
+### Bug Fixes
+
+* fix bug ([da39f3b](https://github.com/kailong321200875/vue-element-plus-admin/commit/da39f3bc904ca2d80f432a31709725f9a57deb19))
+
## [1.6.3](https://github.com/kailong321200875/vue-element-plus-admin/compare/v1.6.2...v1.6.3) (2022-08-20)
diff --git a/README.md b/README.md
index f13d69e..a2c7d3e 100644
--- a/README.md
+++ b/README.md
@@ -215,6 +215,13 @@ Support modern browsers, not IE
+
+
+
+
+ Hongxinzz
+
+ |
diff --git a/README.zh-CN.md b/README.zh-CN.md
index f49a8bc..c7f1ef0 100644
--- a/README.zh-CN.md
+++ b/README.zh-CN.md
@@ -215,6 +215,13 @@ pnpm run build:pro
|
+
+
+
+
+ Hongxinzz
+
+ |
diff --git a/package.json b/package.json
index d59367c..742e8a7 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "vue-element-plus-admin",
- "version": "1.6.3",
+ "version": "1.6.6",
"description": "一套基于vue3、element-plus、typesScript、vite3的后台集成方案。",
"author": "Archer <502431556@qq.com>",
"private": false,
diff --git a/src/components/ConfigGlobal/src/ConfigGlobal.vue b/src/components/ConfigGlobal/src/ConfigGlobal.vue
index 985d5df..da6f8c7 100644
--- a/src/components/ConfigGlobal/src/ConfigGlobal.vue
+++ b/src/components/ConfigGlobal/src/ConfigGlobal.vue
@@ -7,13 +7,14 @@ import { useWindowSize } from '@vueuse/core'
import { useAppStore } from '@/store/modules/app'
import { setCssVar } from '@/utils'
import { useDesign } from '@/hooks/web/useDesign'
+import { ElementPlusSize } from '@/types/elementPlus'
const { variables } = useDesign()
const appStore = useAppStore()
const props = defineProps({
- size: propTypes.oneOf(['default', 'small', 'large']).def('default')
+ size: propTypes.oneOf(['default', 'small', 'large']).def('default')
})
provide('configGlobal', props)
diff --git a/src/components/ContextMenu/src/ContextMenu.vue b/src/components/ContextMenu/src/ContextMenu.vue
index 5007121..5e77307 100644
--- a/src/components/ContextMenu/src/ContextMenu.vue
+++ b/src/components/ContextMenu/src/ContextMenu.vue
@@ -4,7 +4,7 @@ import { PropType, ref } from 'vue'
import { useI18n } from '@/hooks/web/useI18n'
import { useDesign } from '@/hooks/web/useDesign'
import type { RouteLocationNormalizedLoaded } from 'vue-router'
-
+import { contextMenuSchema } from '../../../types/contextMenu'
const { getPrefixCls } = useDesign()
const prefixCls = getPrefixCls('context-menu')
diff --git a/src/components/Descriptions/src/Descriptions.vue b/src/components/Descriptions/src/Descriptions.vue
index c59d74a..9465466 100644
--- a/src/components/Descriptions/src/Descriptions.vue
+++ b/src/components/Descriptions/src/Descriptions.vue
@@ -4,6 +4,7 @@ import { useDesign } from '@/hooks/web/useDesign'
import { propTypes } from '@/utils/propTypes'
import { ref, unref, PropType, computed, useAttrs } from 'vue'
import { useAppStore } from '@/store/modules/app'
+import { DescriptionsSchema } from '@/types/descriptions'
const appStore = useAppStore()
diff --git a/src/components/Form/index.ts b/src/components/Form/index.ts
index a9c5efc..484c7a2 100644
--- a/src/components/Form/index.ts
+++ b/src/components/Form/index.ts
@@ -1,5 +1,6 @@
import Form from './src/Form.vue'
import { ElForm } from 'element-plus'
+import { FormSchema, FormSetPropsType } from '@/types/form'
export interface FormExpose {
setValues: (data: Recordable) => void
diff --git a/src/components/Form/src/Form.vue b/src/components/Form/src/Form.vue
index fee05df..f1d2ca6 100644
--- a/src/components/Form/src/Form.vue
+++ b/src/components/Form/src/Form.vue
@@ -20,6 +20,7 @@ import { findIndex } from '@/utils'
import { set } from 'lodash-es'
import { FormProps } from './types'
import { Icon } from '@/components/Icon'
+import { FormSchema, FormSetPropsType } from '@/types/form'
const { getPrefixCls } = useDesign()
diff --git a/src/components/Form/src/componentMap.ts b/src/components/Form/src/componentMap.ts
index 822f64d..9fdb1db 100644
--- a/src/components/Form/src/componentMap.ts
+++ b/src/components/Form/src/componentMap.ts
@@ -20,6 +20,7 @@ import {
} from 'element-plus'
import { InputPassword } from '@/components/InputPassword'
import { Editor } from '@/components/Editor'
+import { ComponentName } from '@/types/components'
const componentMap: Recordable = {
Radio: ElRadioGroup,
diff --git a/src/components/Form/src/components/useRenderCheckbox.tsx b/src/components/Form/src/components/useRenderCheckbox.tsx
index 26ac32e..fb3f1be 100644
--- a/src/components/Form/src/components/useRenderCheckbox.tsx
+++ b/src/components/Form/src/components/useRenderCheckbox.tsx
@@ -1,3 +1,4 @@
+import { FormSchema } from '@/types/form'
import { ElCheckbox, ElCheckboxButton } from 'element-plus'
import { defineComponent } from 'vue'
diff --git a/src/components/Form/src/components/useRenderRadio.tsx b/src/components/Form/src/components/useRenderRadio.tsx
index 98a4778..a5831eb 100644
--- a/src/components/Form/src/components/useRenderRadio.tsx
+++ b/src/components/Form/src/components/useRenderRadio.tsx
@@ -1,3 +1,4 @@
+import { FormSchema } from '@/types/form'
import { ElRadio, ElRadioButton } from 'element-plus'
import { defineComponent } from 'vue'
diff --git a/src/components/Form/src/components/useRenderSelect.tsx b/src/components/Form/src/components/useRenderSelect.tsx
index 43943a4..7162cd4 100644
--- a/src/components/Form/src/components/useRenderSelect.tsx
+++ b/src/components/Form/src/components/useRenderSelect.tsx
@@ -1,6 +1,8 @@
import { ElOption, ElOptionGroup } from 'element-plus'
import { getSlot } from '@/utils/tsxHelper'
import { Slots } from 'vue'
+import { FormSchema } from '@/types/form'
+import { ComponentOptions } from '@/types/components'
export const useRenderSelect = (slots: Slots) => {
// 渲染 select options
diff --git a/src/components/Form/src/helper.ts b/src/components/Form/src/helper.ts
index fbd7959..41584c6 100644
--- a/src/components/Form/src/helper.ts
+++ b/src/components/Form/src/helper.ts
@@ -2,6 +2,7 @@ import { useI18n } from '@/hooks/web/useI18n'
import type { Slots } from 'vue'
import { getSlot } from '@/utils/tsxHelper'
import { PlaceholderMoel } from './types'
+import { FormSchema } from '@/types/form'
const { t } = useI18n()
diff --git a/src/components/Form/src/types.ts b/src/components/Form/src/types.ts
index fb650ba..92a49d8 100644
--- a/src/components/Form/src/types.ts
+++ b/src/components/Form/src/types.ts
@@ -1,3 +1,5 @@
+import { FormSchema } from '@/types/form'
+
export interface PlaceholderMoel {
placeholder?: string
startPlaceholder?: string
diff --git a/src/components/Infotip/src/Infotip.vue b/src/components/Infotip/src/Infotip.vue
index 776341d..ca92f1e 100644
--- a/src/components/Infotip/src/Infotip.vue
+++ b/src/components/Infotip/src/Infotip.vue
@@ -1,8 +1,9 @@
diff --git a/src/components/Table/index.ts b/src/components/Table/index.ts
index d734e21..689f64a 100644
--- a/src/components/Table/index.ts
+++ b/src/components/Table/index.ts
@@ -1,5 +1,6 @@
import Table from './src/Table.vue'
import { ElTable } from 'element-plus'
+import { TableSetPropsType } from '@/types/table'
export interface TableExpose {
setProps: (props: Recordable) => void
diff --git a/src/components/Table/src/Table.vue b/src/components/Table/src/Table.vue
index 35905cb..9ec10c9 100644
--- a/src/components/Table/src/Table.vue
+++ b/src/components/Table/src/Table.vue
@@ -6,6 +6,7 @@ import { setIndex } from './helper'
import { getSlot } from '@/utils/tsxHelper'
import type { TableProps } from './types'
import { set } from 'lodash-es'
+import { TableColumn, TableSlotDefault, Pagination, TableSetPropsType } from '../../../types/table'
export default defineComponent({
name: 'Table',
diff --git a/src/components/Table/src/types.ts b/src/components/Table/src/types.ts
index 58ecd83..1c7ff76 100644
--- a/src/components/Table/src/types.ts
+++ b/src/components/Table/src/types.ts
@@ -1,3 +1,5 @@
+import { Pagination, TableColumn } from '@/types/table'
+
export type TableProps = {
pageSize?: number
currentPage?: number
diff --git a/src/hooks/web/useConfigGlobal.ts b/src/hooks/web/useConfigGlobal.ts
index 59007d3..bde9d78 100644
--- a/src/hooks/web/useConfigGlobal.ts
+++ b/src/hooks/web/useConfigGlobal.ts
@@ -1,3 +1,4 @@
+import { ConfigGlobalTypes } from '@/types/configGlobal'
import { inject } from 'vue'
export const useConfigGlobal = () => {
diff --git a/src/hooks/web/useCrudSchemas.ts b/src/hooks/web/useCrudSchemas.ts
index c15dd9c..1cc2025 100644
--- a/src/hooks/web/useCrudSchemas.ts
+++ b/src/hooks/web/useCrudSchemas.ts
@@ -4,6 +4,9 @@ import { findIndex } from '@/utils'
import { useDictStoreWithOut } from '@/store/modules/dict'
import { useI18n } from '@/hooks/web/useI18n'
import type { AxiosPromise } from 'axios'
+import { FormSchema } from '@/types/form'
+import { TableColumn } from '@/types/table'
+import { DescriptionsSchema } from '@/types/descriptions'
export type CrudSchema = Omit & {
search?: CrudSearchParams
diff --git a/src/hooks/web/useForm.ts b/src/hooks/web/useForm.ts
index 21d2186..0d4f688 100644
--- a/src/hooks/web/useForm.ts
+++ b/src/hooks/web/useForm.ts
@@ -2,6 +2,7 @@ import type { Form, FormExpose } from '@/components/Form'
import type { ElForm } from 'element-plus'
import { ref, unref, nextTick } from 'vue'
import type { FormProps } from '@/components/Form/src/types'
+import { FormSchema, FormSetPropsType } from '@/types/form'
export const useForm = (props?: FormProps) => {
// From实例
diff --git a/src/hooks/web/useIcon.ts b/src/hooks/web/useIcon.ts
index b9a5ccb..3500204 100644
--- a/src/hooks/web/useIcon.ts
+++ b/src/hooks/web/useIcon.ts
@@ -1,6 +1,7 @@
import { h } from 'vue'
import type { VNode } from 'vue'
import { Icon } from '@/components/Icon'
+import { IconTypes } from '@/types/icon'
export const useIcon = (props: IconTypes): VNode => {
return h(Icon, props)
diff --git a/src/hooks/web/useTable.ts b/src/hooks/web/useTable.ts
index 9a4c1b4..8ad0576 100644
--- a/src/hooks/web/useTable.ts
+++ b/src/hooks/web/useTable.ts
@@ -4,6 +4,7 @@ import { ref, reactive, watch, computed, unref, nextTick } from 'vue'
import { get } from 'lodash-es'
import type { TableProps } from '@/components/Table/src/types'
import { useI18n } from '@/hooks/web/useI18n'
+import { TableSetPropsType } from '@/types/table'
const { t } = useI18n()
diff --git a/src/store/modules/app.ts b/src/store/modules/app.ts
index 25e7181..6196f90 100644
--- a/src/store/modules/app.ts
+++ b/src/store/modules/app.ts
@@ -2,6 +2,7 @@ import { defineStore } from 'pinia'
import { store } from '../index'
import { setCssVar, humpToUnderline } from '@/utils'
import { ElMessage } from 'element-plus'
+import { ElementPlusSize } from '@/types/elementPlus'
import { useCache } from '@/hooks/web/useCache'
const { wsCache } = useCache()
@@ -169,10 +170,10 @@ export const useAppStore = defineStore('app', {
getIsDark(): boolean {
return this.isDark
},
- getCurrentSize(): ElememtPlusSize {
+ getCurrentSize(): ElementPlusSize {
return this.currentSize
},
- getSizeMap(): ElememtPlusSize[] {
+ getSizeMap(): ElementPlusSize[] {
return this.sizeMap
},
getMobile(): boolean {
@@ -254,7 +255,7 @@ export const useAppStore = defineStore('app', {
}
wsCache.set('isDark', this.isDark)
},
- setCurrentSize(currentSize: ElememtPlusSize) {
+ setCurrentSize(currentSize: ElementPlusSize) {
this.currentSize = currentSize
wsCache.set('currentSize', this.currentSize)
},
diff --git a/src/store/modules/locale.ts b/src/store/modules/locale.ts
index 90a0d55..1f7912f 100644
--- a/src/store/modules/locale.ts
+++ b/src/store/modules/locale.ts
@@ -3,6 +3,7 @@ import { store } from '../index'
import zhCn from 'element-plus/es/locale/lang/zh-cn'
import en from 'element-plus/es/locale/lang/en'
import { useCache } from '@/hooks/web/useCache'
+import { LocaleDropdownType } from '@/types/localeDropdown'
const { wsCache } = useCache()
diff --git a/src/types/components.d.ts b/src/types/components.d.ts
new file mode 100644
index 0000000..45523f9
--- /dev/null
+++ b/src/types/components.d.ts
@@ -0,0 +1,52 @@
+export type ComponentName =
+ | 'Radio'
+ | 'RadioButton'
+ | 'Checkbox'
+ | 'CheckboxButton'
+ | 'Input'
+ | 'Autocomplete'
+ | 'InputNumber'
+ | 'Select'
+ | 'Cascader'
+ | 'Switch'
+ | 'Slider'
+ | 'TimePicker'
+ | 'DatePicker'
+ | 'Rate'
+ | 'ColorPicker'
+ | 'Transfer'
+ | 'Divider'
+ | 'TimeSelect'
+ | 'SelectV2'
+ | 'InputPassword'
+ | 'Editor'
+
+export type ColProps = {
+ span?: number
+ xs?: number
+ sm?: number
+ md?: number
+ lg?: number
+ xl?: number
+ tag?: string
+}
+
+export type ComponentOptions = {
+ label?: string
+ value?: FormValueType
+ disabled?: boolean
+ key?: string | number
+ children?: ComponentOptions[]
+ options?: ComponentOptions[]
+} & Recordable
+
+export type ComponentOptionsAlias = {
+ labelField?: string
+ valueField?: string
+}
+
+export type ComponentProps = {
+ optionsAlias?: ComponentOptionsAlias
+ options?: ComponentOptions[]
+ optionsSlot?: boolean
+} & Recordable
diff --git a/src/types/configGlobal.d.ts b/src/types/configGlobal.d.ts
new file mode 100644
index 0000000..f6d7b3c
--- /dev/null
+++ b/src/types/configGlobal.d.ts
@@ -0,0 +1,4 @@
+import { ElementPlusSize } from './elementPlus'
+export interface ConfigGlobalTypes {
+ size?: ElementPlusSize
+}
diff --git a/src/types/contextMenu.d.ts b/src/types/contextMenu.d.ts
new file mode 100644
index 0000000..0738d0e
--- /dev/null
+++ b/src/types/contextMenu.d.ts
@@ -0,0 +1,7 @@
+export type contextMenuSchema = {
+ disabled?: boolean
+ divided?: boolean
+ icon?: string
+ label: string
+ command?: (item: contextMenuSchema) => void
+}
diff --git a/types/componentType/descriptions.d.ts b/src/types/descriptions.d.ts
similarity index 87%
rename from types/componentType/descriptions.d.ts
rename to src/types/descriptions.d.ts
index c695706..6fb99b0 100644
--- a/types/componentType/descriptions.d.ts
+++ b/src/types/descriptions.d.ts
@@ -1,4 +1,4 @@
-declare interface DescriptionsSchema {
+export interface DescriptionsSchema {
span?: number // 占多少分
field: string // 字段名
label?: string // label名
diff --git a/src/types/elementPlus.d.ts b/src/types/elementPlus.d.ts
new file mode 100644
index 0000000..2c6b76e
--- /dev/null
+++ b/src/types/elementPlus.d.ts
@@ -0,0 +1,3 @@
+export type ElementPlusSize = 'default' | 'small' | 'large'
+
+export type ElementPlusInfoType = 'success' | 'info' | 'warning' | 'danger'
diff --git a/src/types/form.d.ts b/src/types/form.d.ts
new file mode 100644
index 0000000..8673ec7
--- /dev/null
+++ b/src/types/form.d.ts
@@ -0,0 +1,45 @@
+import type { CSSProperties } from 'vue'
+import { ColProps, ComponentProps, ComponentName } from '@/types/components'
+import { FormValueType, FormValueType } from '@/types/form'
+import type { AxiosPromise } from 'axios'
+
+export type FormSetPropsType = {
+ field: string
+ path: string
+ value: any
+}
+
+export type FormValueType = string | number | string[] | number[] | boolean | undefined | null
+
+export type FormItemProps = {
+ labelWidth?: string | number
+ required?: boolean
+ rules?: Recordable
+ error?: string
+ showMessage?: boolean
+ inlineMessage?: boolean
+ style?: CSSProperties
+}
+
+export type FormSchema = {
+ // 唯一值
+ field: string
+ // 标题
+ label?: string
+ // 提示
+ labelMessage?: string
+ // col组件属性
+ colProps?: ColProps
+ // 表单组件属性,slots对应的是表单组件的插槽,规则:${field}-xxx,具体可以查看element-plus文档
+ componentProps?: { slots?: Recordable } & ComponentProps
+ // formItem组件属性
+ formItemProps?: FormItemProps
+ // 渲染的组件
+ component?: ComponentName
+ // 初始值
+ value?: FormValueType
+ // 是否隐藏
+ hidden?: boolean
+ // 远程加载下拉项
+ api?: () => AxiosPromise
+}
diff --git a/types/componentType/icon.d.ts b/src/types/icon.d.ts
similarity index 62%
rename from types/componentType/icon.d.ts
rename to src/types/icon.d.ts
index cc24543..d1ffcdb 100644
--- a/types/componentType/icon.d.ts
+++ b/src/types/icon.d.ts
@@ -1,4 +1,4 @@
-declare interface IconTypes {
+export interface IconTypes {
size?: number
color?: string
icon: string
diff --git a/types/componentType/infotip.d.ts b/src/types/infoTip.d.ts
similarity index 54%
rename from types/componentType/infotip.d.ts
rename to src/types/infoTip.d.ts
index 9c2338a..6eff083 100644
--- a/types/componentType/infotip.d.ts
+++ b/src/types/infoTip.d.ts
@@ -1,4 +1,4 @@
-declare interface TipSchema {
+export interface TipSchema {
label: string
keys?: string[]
}
diff --git a/types/componentType/localeDropdown.d.ts b/src/types/localeDropdown.d.ts
similarity index 58%
rename from types/componentType/localeDropdown.d.ts
rename to src/types/localeDropdown.d.ts
index bbe8510..c749dce 100644
--- a/types/componentType/localeDropdown.d.ts
+++ b/src/types/localeDropdown.d.ts
@@ -1,9 +1,9 @@
-declare interface Language {
+export interface Language {
el: Recordable
name: string
}
-declare interface LocaleDropdownType {
+export interface LocaleDropdownType {
lang: LocaleType
name?: string
elLocale?: Language
diff --git a/types/componentType/qrcode.d.ts b/src/types/qrcode.d.ts
similarity index 82%
rename from types/componentType/qrcode.d.ts
rename to src/types/qrcode.d.ts
index 369334f..86cdf0b 100644
--- a/types/componentType/qrcode.d.ts
+++ b/src/types/qrcode.d.ts
@@ -1,4 +1,4 @@
-declare interface QrcodeLogo {
+export interface QrcodeLogo {
src?: string
logoSize?: number
bgColor?: string
diff --git a/types/componentType/table.d.ts b/src/types/table.d.ts
similarity index 80%
rename from types/componentType/table.d.ts
rename to src/types/table.d.ts
index fe2100c..5adf91f 100644
--- a/types/componentType/table.d.ts
+++ b/src/types/table.d.ts
@@ -1,16 +1,16 @@
-declare type TableColumn = {
+export type TableColumn = {
field: string
label?: string
children?: TableColumn[]
} & Recordable
-declare type TableSlotDefault = {
+export type TableSlotDefault = {
row: Recordable
column: TableColumn
$index: number
} & Recordable
-declare interface Pagination {
+export interface Pagination {
small?: boolean
background?: boolean
pageSize?: number
@@ -29,7 +29,7 @@ declare interface Pagination {
hideOnSinglePage?: boolean
}
-declare interface TableSetPropsType {
+export interface TableSetPropsType {
field: string
path: string
value: any
diff --git a/src/views/Authorization/Role.vue b/src/views/Authorization/Role.vue
index 9ca4568..9d189c5 100644
--- a/src/views/Authorization/Role.vue
+++ b/src/views/Authorization/Role.vue
@@ -6,6 +6,7 @@ import { getUserListApi } from '@/api/login'
import { UserType } from '@/api/login/types'
import { ref, h } from 'vue'
import { ElButton } from 'element-plus'
+import { TableColumn, TableSlotDefault } from '@/types/table'
interface Params {
pageIndex?: number
diff --git a/src/views/Authorization/User.vue b/src/views/Authorization/User.vue
index 9ca4568..9d189c5 100644
--- a/src/views/Authorization/User.vue
+++ b/src/views/Authorization/User.vue
@@ -6,6 +6,7 @@ import { getUserListApi } from '@/api/login'
import { UserType } from '@/api/login/types'
import { ref, h } from 'vue'
import { ElButton } from 'element-plus'
+import { TableColumn, TableSlotDefault } from '@/types/table'
interface Params {
pageIndex?: number
diff --git a/src/views/Components/Descriptions.vue b/src/views/Components/Descriptions.vue
index e85408d..c4b3c69 100644
--- a/src/views/Components/Descriptions.vue
+++ b/src/views/Components/Descriptions.vue
@@ -6,6 +6,7 @@ import { Form } from '@/components/Form'
import { ElFormItem, ElInput, ElButton } from 'element-plus'
import { useValidator } from '@/hooks/web/useValidator'
import { useForm } from '@/hooks/web/useForm'
+import { DescriptionsSchema } from '@/types/descriptions'
const { required } = useValidator()
diff --git a/src/views/Components/Dialog.vue b/src/views/Components/Dialog.vue
index a5d2425..1aa0568 100644
--- a/src/views/Components/Dialog.vue
+++ b/src/views/Components/Dialog.vue
@@ -7,6 +7,7 @@ import { ref, reactive, unref } from 'vue'
import { Form, FormExpose } from '@/components/Form'
import { useValidator } from '@/hooks/web/useValidator'
import { getDictOneApi } from '@/api/common'
+import { FormSchema } from '@/types/form'
const { required } = useValidator()
diff --git a/src/views/Components/Form/DefaultForm.vue b/src/views/Components/Form/DefaultForm.vue
index 768f810..58b5fad 100644
--- a/src/views/Components/Form/DefaultForm.vue
+++ b/src/views/Components/Form/DefaultForm.vue
@@ -5,6 +5,8 @@ import { useI18n } from '@/hooks/web/useI18n'
import { useIcon } from '@/hooks/web/useIcon'
import { ContentWrap } from '@/components/ContentWrap'
import { useAppStore } from '@/store/modules/app'
+import { FormSchema } from '@/types/form'
+import { ComponentOptions } from '@/types/components'
const appStore = useAppStore()
diff --git a/src/views/Components/Form/RefForm.vue b/src/views/Components/Form/RefForm.vue
index f6e7137..20825d2 100644
--- a/src/views/Components/Form/RefForm.vue
+++ b/src/views/Components/Form/RefForm.vue
@@ -6,6 +6,7 @@ import { reactive, unref, ref } from 'vue'
import { ElButton } from 'element-plus'
import { useValidator } from '@/hooks/web/useValidator'
import { getDictOneApi } from '@/api/common'
+import { FormSchema } from '@/types/form'
const { required } = useValidator()
diff --git a/src/views/Components/Form/UseFormDemo.vue b/src/views/Components/Form/UseFormDemo.vue
index 61d87d8..84bc62e 100644
--- a/src/views/Components/Form/UseFormDemo.vue
+++ b/src/views/Components/Form/UseFormDemo.vue
@@ -7,6 +7,7 @@ import { reactive, unref, ref } from 'vue'
import { ElButton } from 'element-plus'
import { useValidator } from '@/hooks/web/useValidator'
import { getDictOneApi } from '@/api/common'
+import { FormSchema } from '@/types/form'
const { required } = useValidator()
diff --git a/src/views/Components/Search.vue b/src/views/Components/Search.vue
index 206d69e..4ecb091 100644
--- a/src/views/Components/Search.vue
+++ b/src/views/Components/Search.vue
@@ -6,6 +6,7 @@ import { reactive, ref, unref } from 'vue'
import { useValidator } from '@/hooks/web/useValidator'
import { ElButton } from 'element-plus'
import { getDictOneApi } from '@/api/common'
+import { FormSchema } from '@/types/form'
const { required } = useValidator()
diff --git a/src/views/Components/Table/DefaultTable.vue b/src/views/Components/Table/DefaultTable.vue
index e9a9217..5e58d97 100644
--- a/src/views/Components/Table/DefaultTable.vue
+++ b/src/views/Components/Table/DefaultTable.vue
@@ -6,6 +6,7 @@ import { getTableListApi } from '@/api/table'
import { TableData } from '@/api/table/types'
import { ref, h } from 'vue'
import { ElTag, ElButton } from 'element-plus'
+import { TableColumn, TableSlotDefault } from '@/types/table'
interface Params {
pageIndex?: number
diff --git a/src/views/Components/Table/RefTable.vue b/src/views/Components/Table/RefTable.vue
index 3874d49..d292f40 100644
--- a/src/views/Components/Table/RefTable.vue
+++ b/src/views/Components/Table/RefTable.vue
@@ -7,6 +7,7 @@ import { TableData } from '@/api/table/types'
import { ref, h, reactive, unref } from 'vue'
import { ElTag, ElButton } from 'element-plus'
import { useTable } from '@/hooks/web/useTable'
+import { Pagination, TableColumn, TableSlotDefault } from '@/types/table'
const { t } = useI18n()
diff --git a/src/views/Components/Table/UseTableDemo.vue b/src/views/Components/Table/UseTableDemo.vue
index 9df25f1..1cfd35c 100644
--- a/src/views/Components/Table/UseTableDemo.vue
+++ b/src/views/Components/Table/UseTableDemo.vue
@@ -7,6 +7,7 @@ import { TableData } from '@/api/table/types'
import { ref, h, reactive, unref } from 'vue'
import { ElTag, ElButton } from 'element-plus'
import { useTable } from '@/hooks/web/useTable'
+import { Pagination, TableColumn, TableSlotDefault } from '@/types/table'
const { register, tableObject, methods, elTableRef } = useTable({
getListApi: getTableListApi,
diff --git a/src/views/Example/Dialog/ExampleDialog.vue b/src/views/Example/Dialog/ExampleDialog.vue
index afc629d..b57a209 100644
--- a/src/views/Example/Dialog/ExampleDialog.vue
+++ b/src/views/Example/Dialog/ExampleDialog.vue
@@ -12,6 +12,7 @@ import { h, ref, unref, reactive } from 'vue'
import Write from './components/Write.vue'
import Detail from './components/Detail.vue'
import { CrudSchema, useCrudSchemas } from '@/hooks/web/useCrudSchemas'
+import { TableColumn } from '@/types/table'
const { register, tableObject, methods } = useTable({
getListApi: getTableListApi,
diff --git a/src/views/Example/Dialog/components/Detail.vue b/src/views/Example/Dialog/components/Detail.vue
index 0b280b7..42c5650 100644
--- a/src/views/Example/Dialog/components/Detail.vue
+++ b/src/views/Example/Dialog/components/Detail.vue
@@ -4,6 +4,7 @@ import type { TableData } from '@/api/table/types'
import { Descriptions } from '@/components/Descriptions'
import { useI18n } from '@/hooks/web/useI18n'
import { ElTag } from 'element-plus'
+import { DescriptionsSchema } from '@/types/descriptions'
const { t } = useI18n()
diff --git a/src/views/Example/Dialog/components/Write.vue b/src/views/Example/Dialog/components/Write.vue
index 6cd960b..b78e19f 100644
--- a/src/views/Example/Dialog/components/Write.vue
+++ b/src/views/Example/Dialog/components/Write.vue
@@ -4,6 +4,7 @@ import { useForm } from '@/hooks/web/useForm'
import { PropType, reactive, watch } from 'vue'
import { TableData } from '@/api/table/types'
import { useValidator } from '@/hooks/web/useValidator'
+import { FormSchema } from '@/types/form'
const { required } = useValidator()
diff --git a/src/views/Example/Page/ExamplePage.vue b/src/views/Example/Page/ExamplePage.vue
index cbe3886..899fe01 100644
--- a/src/views/Example/Page/ExamplePage.vue
+++ b/src/views/Example/Page/ExamplePage.vue
@@ -11,6 +11,7 @@ import { h, reactive, ref } from 'vue'
import { useRouter } from 'vue-router'
import { useEmitt } from '@/hooks/web/useEmitt'
import { CrudSchema, useCrudSchemas } from '@/hooks/web/useCrudSchemas'
+import { TableColumn } from '@/types/table'
defineOptions({
name: 'ExamplePage'
diff --git a/src/views/Example/Page/components/Detail.vue b/src/views/Example/Page/components/Detail.vue
index b89ed4d..4f86a92 100644
--- a/src/views/Example/Page/components/Detail.vue
+++ b/src/views/Example/Page/components/Detail.vue
@@ -4,6 +4,7 @@ import type { TableData } from '@/api/table/types'
import { Descriptions } from '@/components/Descriptions'
import { useI18n } from '@/hooks/web/useI18n'
import { ElTag } from 'element-plus'
+import { DescriptionsSchema } from '@/types/descriptions'
const { t } = useI18n()
diff --git a/src/views/Example/Page/components/Write.vue b/src/views/Example/Page/components/Write.vue
index 641d66b..65c8d69 100644
--- a/src/views/Example/Page/components/Write.vue
+++ b/src/views/Example/Page/components/Write.vue
@@ -6,6 +6,7 @@ import { TableData } from '@/api/table/types'
import { useI18n } from '@/hooks/web/useI18n'
import { useValidator } from '@/hooks/web/useValidator'
import { IDomEditor } from '@wangeditor/editor'
+import { FormSchema } from '@/types/form'
const { required } = useValidator()
diff --git a/src/views/Login/components/LoginForm.vue b/src/views/Login/components/LoginForm.vue
index 5bceb8a..fa43b2d 100644
--- a/src/views/Login/components/LoginForm.vue
+++ b/src/views/Login/components/LoginForm.vue
@@ -12,6 +12,7 @@ import { useRouter } from 'vue-router'
import type { RouteLocationNormalizedLoaded, RouteRecordRaw } from 'vue-router'
import { UserType } from '@/api/login/types'
import { useValidator } from '@/hooks/web/useValidator'
+import { FormSchema } from '@/types/form'
const { required } = useValidator()
diff --git a/src/views/Login/components/RegisterForm.vue b/src/views/Login/components/RegisterForm.vue
index 799e9b8..fc0fb78 100644
--- a/src/views/Login/components/RegisterForm.vue
+++ b/src/views/Login/components/RegisterForm.vue
@@ -5,6 +5,7 @@ import { useI18n } from '@/hooks/web/useI18n'
import { useForm } from '@/hooks/web/useForm'
import { ElButton, ElInput, FormRules } from 'element-plus'
import { useValidator } from '@/hooks/web/useValidator'
+import { FormSchema } from '@/types/form'
const emit = defineEmits(['to-login'])
diff --git a/src/views/hooks/useCrudSchemas.vue b/src/views/hooks/useCrudSchemas.vue
index afac0d7..b8f6e7a 100644
--- a/src/views/hooks/useCrudSchemas.vue
+++ b/src/views/hooks/useCrudSchemas.vue
@@ -11,6 +11,7 @@ import { h, ref, reactive } from 'vue'
import { CrudSchema, useCrudSchemas } from '@/hooks/web/useCrudSchemas'
import { useDictStore } from '@/store/modules/dict'
import { getDictOneApi } from '@/api/common'
+import { TableColumn } from '@/types/table'
const dictStore = useDictStore()
diff --git a/types/componentType/configGlobal.d.ts b/types/componentType/configGlobal.d.ts
deleted file mode 100644
index 6a0bb1a..0000000
--- a/types/componentType/configGlobal.d.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-declare interface ConfigGlobalTypes {
- size?: ElememtPlusSize
-}
diff --git a/types/componentType/contextMenu.d.ts b/types/componentType/contextMenu.d.ts
deleted file mode 100644
index 3f9cac3..0000000
--- a/types/componentType/contextMenu.d.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-declare type contextMenuSchema = {
- disabled?: boolean
- divided?: boolean
- icon?: string
- label: string
- command?: (item: contextMenuSchema) => viod
-}
diff --git a/types/componentType/form.d.ts b/types/componentType/form.d.ts
deleted file mode 100644
index b598acb..0000000
--- a/types/componentType/form.d.ts
+++ /dev/null
@@ -1,97 +0,0 @@
-import type { CSSProperties } from 'vue'
-
-declare global {
- declare type ComponentName =
- | 'Radio'
- | 'RadioButton'
- | 'Checkbox'
- | 'CheckboxButton'
- | 'Input'
- | 'Autocomplete'
- | 'InputNumber'
- | 'Select'
- | 'Cascader'
- | 'Switch'
- | 'Slider'
- | 'TimePicker'
- | 'DatePicker'
- | 'Rate'
- | 'ColorPicker'
- | 'Transfer'
- | 'Divider'
- | 'TimeSelect'
- | 'SelectV2'
- | 'InputPassword'
- | 'Editor'
-
- declare type ColProps = {
- span?: number
- xs?: number
- sm?: number
- md?: number
- lg?: number
- xl?: number
- tag?: string
- }
-
- declare type FormValueType = string | number | string[] | number[] | boolean | undefined | null
-
- declare type FormItemProps = {
- labelWidth?: string | number
- required?: boolean
- rules?: Recordable
- error?: string
- showMessage?: boolean
- inlineMessage?: boolean
- style?: CSSProperties
- }
-
- declare type ComponentOptions = {
- label?: string
- value?: FormValueType
- disabled?: boolean
- key?: string | number
- children?: ComponentOptions[]
- options?: ComponentOptions[]
- } & Recordable
-
- declare type ComponentOptionsAlias = {
- labelField?: string
- valueField?: string
- }
-
- declare type ComponentProps = {
- optionsAlias?: ComponentOptionsAlias
- options?: ComponentOptions[]
- optionsSlot?: boolean
- } & Recordable
-
- declare type FormSchema = {
- // 唯一值
- field: string
- // 标题
- label?: string
- // 提示
- labelMessage?: string
- // col组件属性
- colProps?: ColProps
- // 表单组件属性,slots对应的是表单组件的插槽,规则:${field}-xxx,具体可以查看element-plus文档
- componentProps?: { slots?: Recordable } & ComponentProps
- // formItem组件属性
- formItemProps?: FormItemProps
- // 渲染的组件
- component?: ComponentName
- // 初始值
- value?: FormValueType
- // 是否隐藏
- hidden?: boolean
- // 远程加载下拉项
- api?: () => AxiosPromise
- }
-
- declare type FormSetPropsType = {
- field: string
- path: string
- value: any
- }
-}
diff --git a/types/global.d.ts b/types/global.d.ts
index 04c753a..7314557 100644
--- a/types/global.d.ts
+++ b/types/global.d.ts
@@ -1,40 +1,39 @@
-declare interface Fn {
- (...arg: T[]): T
-}
-
-declare type Nullable = T | null
-
-declare type ElRef = Nullable
-
-declare type ElememtPlusSize = 'default' | 'small' | 'large'
-
-declare type ElementPlusInfoType = 'success' | 'info' | 'warning' | 'danger'
-
-declare type Recordable = Record
-
-declare type ComponentRef = InstanceType
-
-declare type LocaleType = 'zh-CN' | 'en'
-
-declare type AxiosHeaders =
- | 'application/json'
- | 'application/x-www-form-urlencoded'
- | 'multipart/form-data'
-
-declare type AxiosMethod = 'get' | 'post' | 'delete' | 'put'
-
-declare type AxiosResponseType = 'arraybuffer' | 'blob' | 'document' | 'json' | 'text' | 'stream'
-
-declare interface AxiosConfig {
- params?: any
- data?: any
- url?: string
- method?: AxiosMethod
- headersType?: string
- responseType?: AxiosResponseType
-}
-
-declare interface IResponse {
- code: string
- data: T extends any ? T : T & any
+import type { CSSProperties } from 'vue'
+declare global {
+ declare interface Fn {
+ (...arg: T[]): T
+ }
+
+ declare type Nullable = T | null
+
+ declare type ElRef = Nullable
+
+ declare type Recordable = Record
+
+ declare type ComponentRef = InstanceType
+
+ declare type LocaleType = 'zh-CN' | 'en'
+
+ declare type AxiosHeaders =
+ | 'application/json'
+ | 'application/x-www-form-urlencoded'
+ | 'multipart/form-data'
+
+ declare type AxiosMethod = 'get' | 'post' | 'delete' | 'put'
+
+ declare type AxiosResponseType = 'arraybuffer' | 'blob' | 'document' | 'json' | 'text' | 'stream'
+
+ declare interface AxiosConfig {
+ params?: any
+ data?: any
+ url?: string
+ method?: AxiosMethod
+ headersType?: string
+ responseType?: AxiosResponseType
+ }
+
+ declare interface IResponse {
+ code: string
+ data: T extends any ? T : T & any
+ }
}
|