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 +
+ Hongxinzz +
+ amifed 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 +
+ Hongxinzz +
+ amifed 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 + } }