perf: add aotu components

This commit is contained in:
xingyu4j 2022-11-17 14:52:31 +08:00
parent cbb6a37924
commit 3e1ce8b76a
14 changed files with 170 additions and 61 deletions

View File

@ -38,8 +38,8 @@
"echarts-wordcloud": "^2.0.0",
"element-plus": "2.2.21",
"intro.js": "^6.0.0",
"jsencrypt": "^3.3.1",
"js-cookie": "^3.0.1",
"jsencrypt": "^3.3.1",
"lodash-es": "^4.17.21",
"mitt": "^3.0.0",
"nprogress": "^0.2.0",
@ -94,6 +94,7 @@
"stylelint-config-standard": "^29.0.0",
"stylelint-order": "^5.0.0",
"typescript": "4.8.4",
"unplugin-vue-components": "^0.22.9",
"unplugin-vue-macros": "^0.16.3",
"vite": "3.2.4",
"vite-plugin-compression": "^0.5.1",

View File

@ -59,6 +59,7 @@ specifiers:
stylelint-config-standard: ^29.0.0
stylelint-order: ^5.0.0
typescript: 4.8.4
unplugin-vue-components: ^0.22.9
unplugin-vue-macros: ^0.16.3
url: ^0.11.0
vite: 3.2.4
@ -150,6 +151,7 @@ devDependencies:
stylelint-config-standard: 29.0.0_stylelint@14.15.0
stylelint-order: 5.0.0_stylelint@14.15.0
typescript: 4.8.4
unplugin-vue-components: 0.22.9_rollup@3.3.0+vue@3.2.45
unplugin-vue-macros: 0.16.3_drqowttw7xgwfzqyhu6wuedde4
vite: 3.2.4_mp5lu76ee5qtwstsyca37sdhqi
vite-plugin-compression: 0.5.1_vite@3.2.4
@ -963,6 +965,21 @@ packages:
picomatch: 2.3.1
dev: true
/@rollup/pluginutils/5.0.2_rollup@3.3.0:
resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==}
engines: {node: '>=14.0.0'}
peerDependencies:
rollup: ^1.20.0||^2.0.0||^3.0.0
peerDependenciesMeta:
rollup:
optional: true
dependencies:
'@types/estree': 1.0.0
estree-walker: 2.0.2
picomatch: 2.3.1
rollup: 3.3.0
dev: true
/@sxzz/popperjs-es/2.11.7:
resolution: {integrity: sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==}
dev: false
@ -6829,6 +6846,32 @@ packages:
vite: 3.2.4_mp5lu76ee5qtwstsyca37sdhqi
dev: true
/unplugin-vue-components/0.22.9_rollup@3.3.0+vue@3.2.45:
resolution: {integrity: sha512-qBvooq3EgpjtYicxeccRUGUBBQCCw9rJ0kHPZPOSJd8TBZViSv86vuKLTRDHPyjWtclwOIkVStZJfPdJFhYUMw==}
engines: {node: '>=14'}
peerDependencies:
'@babel/parser': ^7.15.8
vue: 2 || 3
peerDependenciesMeta:
'@babel/parser':
optional: true
dependencies:
'@antfu/utils': 0.6.0
'@rollup/pluginutils': 5.0.2_rollup@3.3.0
chokidar: 3.5.3
debug: 4.3.4
fast-glob: 3.2.12
local-pkg: 0.4.2
magic-string: 0.26.7
minimatch: 5.1.0
resolve: 1.22.1
unplugin: 0.10.2
vue: 3.2.45
transitivePeerDependencies:
- rollup
- supports-color
dev: true
/unplugin-vue-define-options/0.12.7:
resolution: {integrity: sha512-relFORVPLDs4dd3ogEti5YyAqQ62XEieRgLu/OrDIRZdSZQ942pydf9ilfLFiFwCUt+EES/2Xl4EERtgP1T/og==}
engines: {node: '>=14.19.0'}

View File

@ -0,0 +1,83 @@
// generated by unplugin-vue-components
// We suggest you to commit this file into source control
// Read more: https://github.com/vuejs/core/pull/3399
import '@vue/runtime-core'
export {}
declare module '@vue/runtime-core' {
export interface GlobalComponents {
Backtop: typeof import('./components/Backtop/src/Backtop.vue')['default']
Breadcrumb: typeof import('./components/Breadcrumb/src/Breadcrumb.vue')['default']
Collapse: typeof import('./components/Collapse/src/Collapse.vue')['default']
ColorRadioPicker: typeof import('./components/Setting/src/components/ColorRadioPicker.vue')['default']
ConfigGlobal: typeof import('./components/ConfigGlobal/src/ConfigGlobal.vue')['default']
ContentDetailWrap: typeof import('./components/ContentDetailWrap/src/ContentDetailWrap.vue')['default']
ContentWrap: typeof import('./components/ContentWrap/src/ContentWrap.vue')['default']
ContextMenu: typeof import('./components/ContextMenu/src/ContextMenu.vue')['default']
CountTo: typeof import('./components/CountTo/src/CountTo.vue')['default']
Crontab: typeof import('./components/Crontab/src/Crontab.vue')['default']
Descriptions: typeof import('./components/Descriptions/src/Descriptions.vue')['default']
Dialog: typeof import('./components/Dialog/src/Dialog.vue')['default']
DictTag: typeof import('./components/DictTag/src/DictTag.vue')['default']
Echart: typeof import('./components/Echart/src/Echart.vue')['default']
Editor: typeof import('./components/Editor/src/Editor.vue')['default']
ElButton: typeof import('element-plus/es')['ElButton']
ElCard: typeof import('element-plus/es')['ElCard']
ElCheckbox: typeof import('element-plus/es')['ElCheckbox']
ElCol: typeof import('element-plus/es')['ElCol']
ElForm: typeof import('element-plus/es')['ElForm']
ElFormItem: typeof import('element-plus/es')['ElFormItem']
ElInput: typeof import('element-plus/es')['ElInput']
ElInputNumber: typeof import('element-plus/es')['ElInputNumber']
ElOption: typeof import('element-plus/es')['ElOption']
ElRadioButton: typeof import('element-plus/es')['ElRadioButton']
ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup']
ElRow: typeof import('element-plus/es')['ElRow']
ElSelect: typeof import('element-plus/es')['ElSelect']
ElSwitch: typeof import('element-plus/es')['ElSwitch']
ElTag: typeof import('element-plus/es')['ElTag']
ElTransfer: typeof import('element-plus/es')['ElTransfer']
ElTree: typeof import('element-plus/es')['ElTree']
ElTreeSelect: typeof import('element-plus/es')['ElTreeSelect']
ElUpload: typeof import('element-plus/es')['ElUpload']
Error: typeof import('./components/Error/src/Error.vue')['default']
Footer: typeof import('./components/Footer/src/Footer.vue')['default']
Form: typeof import('./components/Form/src/Form.vue')['default']
Highlight: typeof import('./components/Highlight/src/Highlight.vue')['default']
Icon: typeof import('./components/Icon/src/Icon.vue')['default']
IconSelect: typeof import('./components/Icon/src/IconSelect.vue')['default']
IFrame: typeof import('./components/IFrame/src/IFrame.vue')['default']
ImageViewer: typeof import('./components/ImageViewer/src/ImageViewer.vue')['default']
Infotip: typeof import('./components/Infotip/src/Infotip.vue')['default']
InputPassword: typeof import('./components/InputPassword/src/InputPassword.vue')['default']
InterfaceDisplay: typeof import('./components/Setting/src/components/InterfaceDisplay.vue')['default']
LayoutRadioPicker: typeof import('./components/Setting/src/components/LayoutRadioPicker.vue')['default']
LocaleDropdown: typeof import('./components/LocaleDropdown/src/LocaleDropdown.vue')['default']
Logo: typeof import('./components/Logo/src/Logo.vue')['default']
Menu: typeof import('./components/Menu/src/Menu.vue')['default']
Qrcode: typeof import('./components/Qrcode/src/Qrcode.vue')['default']
RouterLink: typeof import('vue-router')['RouterLink']
RouterView: typeof import('vue-router')['RouterView']
Screenfull: typeof import('./components/Screenfull/src/Screenfull.vue')['default']
Search: typeof import('./components/Search/src/Search.vue')['default']
Setting: typeof import('./components/Setting/src/Setting.vue')['default']
SizeDropdown: typeof import('./components/SizeDropdown/src/SizeDropdown.vue')['default']
Sticky: typeof import('./components/Sticky/src/Sticky.vue')['default']
Table: typeof import('./components/Table/src/Table.vue')['default']
TabMenu: typeof import('./components/TabMenu/src/TabMenu.vue')['default']
TagsView: typeof import('./components/TagsView/src/TagsView.vue')['default']
ThemeSwitch: typeof import('./components/ThemeSwitch/src/ThemeSwitch.vue')['default']
Tooltip: typeof import('./components/Tooltip/src/Tooltip.vue')['default']
UserInfo: typeof import('./components/UserInfo/src/UserInfo.vue')['default']
Verify: typeof import('./components/Verifition/src/Verify.vue')['default']
VerifyPoints: typeof import('./components/Verifition/src/Verify/VerifyPoints.vue')['default']
VerifySlide: typeof import('./components/Verifition/src/Verify/VerifySlide.vue')['default']
XButton: typeof import('./components/XButton/src/XButton.vue')['default']
XModal: typeof import('./components/XModal/src/XModal.vue')['default']
XTextButton: typeof import('./components/XButton/src/XTextButton.vue')['default']
}
export interface ComponentCustomProperties {
vLoading: typeof import('element-plus/es')['ElLoadingDirective']
}
}

View File

@ -103,11 +103,10 @@
</template>
<script setup lang="ts">
import { useI18n } from '@/hooks/web/useI18n'
import { ElInput, ElCard, ElTree, ElTreeSelect, ElSelect, ElOption } from 'element-plus'
import { handleTree } from '@/utils/tree'
import { onMounted, ref, unref, watch } from 'vue'
import * as DeptApi from '@/api/system/dept'
import { Form, FormExpose } from '@/components/Form'
import { FormExpose } from '@/components/Form'
import { modelSchema, rules } from './dept.data'
import { DeptVO } from '@/api/system/dept/types'
import { useMessage } from '@/hooks/web/useMessage'

View File

@ -159,11 +159,9 @@ import { ref, unref, onMounted } from 'vue'
import { DICT_TYPE } from '@/utils/dict'
import { useI18n } from '@/hooks/web/useI18n'
import { FormExpose } from '@/components/Form'
import { ElInput, ElTag } from 'element-plus'
import * as DictTypeSchemas from './dict.type'
import * as DictDataSchemas from './dict.data'
import { useTable } from '@/hooks/web/useTable'
import { ElCard, ElMessage } from 'element-plus'
import * as DictTypeApi from '@/api/system/dict/dict.type'
import * as DictDataApi from '@/api/system/dict/dict.data'
import { DictDataVO, DictTypeVO } from '@/api/system/dict/types'

View File

@ -247,20 +247,7 @@
import { onMounted, reactive, ref } from 'vue'
import { useI18n } from '@/hooks/web/useI18n'
import { useMessage } from '@/hooks/web/useMessage'
import {
ElRow,
ElCol,
ElForm,
ElFormItem,
ElInput,
ElInputNumber,
ElSelect,
ElTreeSelect,
ElOption,
ElRadioGroup,
ElRadioButton,
FormInstance
} from 'element-plus'
import { FormInstance } from 'element-plus'
import { Tooltip } from '@/components/Tooltip'
import { IconSelect } from '@/components/Icon'
import { VxeTableInstance } from 'vxe-table'

View File

@ -143,25 +143,16 @@
</template>
<script setup lang="ts">
import { onMounted, reactive, ref, unref } from 'vue'
import {
ElForm,
ElFormItem,
ElSelect,
ElOption,
ElTree,
ElCard,
ElSwitch,
ElTag
} from 'element-plus'
import { DICT_TYPE, getDictOptions } from '@/utils/dict'
import { ElTree } from 'element-plus'
import { useI18n } from '@/hooks/web/useI18n'
import { useMessage } from '@/hooks/web/useMessage'
import { useVxeGrid } from '@/hooks/web/useVxeGrid'
import { FormExpose } from '@/components/Form'
import { rules, allSchemas } from './role.data'
import { VxeGridInstance } from 'vxe-table'
import { handleTree } from '@/utils/tree'
import { SystemDataScopeEnum } from '@/utils/constants'
import { useVxeGrid } from '@/hooks/web/useVxeGrid'
import { VxeGridInstance } from 'vxe-table'
import { DICT_TYPE, getDictOptions } from '@/utils/dict'
import { rules, allSchemas } from './role.data'
import * as RoleApi from '@/api/system/role'
import { listSimpleMenusApi } from '@/api/system/menu'
import { listSimpleDeptApi } from '@/api/system/dept'
@ -170,6 +161,7 @@ import type {
PermissionAssignRoleDataScopeReqVO,
PermissionAssignRoleMenuReqVO
} from '@/api/system/permission/types'
const { t } = useI18n() //
const message = useMessage() //
//

View File

@ -114,7 +114,7 @@
<script setup lang="ts">
import { onMounted, ref, unref } from 'vue'
import dayjs from 'dayjs'
import { ElMessage, ElTag, ElSelect, ElOption } from 'element-plus'
import { useMessage } from '@/hooks/web/useMessage'
import { DICT_TYPE } from '@/utils/dict'
import { useTable } from '@/hooks/web/useTable'
import { useI18n } from '@/hooks/web/useI18n'
@ -122,7 +122,9 @@ import { FormExpose } from '@/components/Form'
import type { SensitiveWordVO } from '@/api/system/sensitiveWord/types'
import { rules, allSchemas } from './sensitiveWord.data'
import * as SensitiveWordApi from '@/api/system/sensitiveWord'
const { t } = useI18n() //
const message = useMessage() //
// ========== ==========
const { register, tableObject, methods } = useTable<SensitiveWordVO>({
@ -180,10 +182,10 @@ const submitForm = async () => {
data.tags = tags.value
if (actionType.value === 'create') {
await SensitiveWordApi.createSensitiveWordApi(data)
ElMessage.success(t('common.createSuccess'))
message.success(t('common.createSuccess'))
} else {
await SensitiveWordApi.updateSensitiveWordApi(data)
ElMessage.success(t('common.updateSuccess'))
message.success(t('common.updateSuccess'))
}
//
dialogVisible.value = false

View File

@ -118,7 +118,6 @@ import { useMessage } from '@/hooks/web/useMessage'
import { useVxeGrid } from '@/hooks/web/useVxeGrid'
import { VxeGridInstance } from 'vxe-table'
import { FormExpose } from '@/components/Form'
import { ElForm, ElFormItem, ElInput } from 'element-plus'
// import
import * as SmsTemplateApi from '@/api/system/sms/smsTemplate'
import { rules, allSchemas } from './sms.template.data'

View File

@ -124,17 +124,19 @@
<script setup lang="ts">
import { ref, unref, onMounted } from 'vue'
import dayjs from 'dayjs'
import { ElMessage, ElTag, ElSelect, ElOption } from 'element-plus'
import { DICT_TYPE } from '@/utils/dict'
import { useTable } from '@/hooks/web/useTable'
import { useI18n } from '@/hooks/web/useI18n'
import { useMessage } from '@/hooks/web/useMessage'
import { FormExpose } from '@/components/Form'
import type { TenantVO } from '@/api/system/tenant/types'
import { rules, allSchemas } from './tenant.data'
import * as TenantApi from '@/api/system/tenant'
import { getTenantPackageList } from '@/api/system/tenantPackage'
import { TenantPackageVO } from '@/api/system/tenantPackage/types'
const { t } = useI18n() //
const message = useMessage() //
// ========== ==========
const { register, tableObject, methods } = useTable<TenantVO>({
@ -205,11 +207,11 @@ const submitForm = async () => {
if (actionType.value === 'create') {
data.expireTime = dayjs(data.expireTime).valueOf().toString()
await TenantApi.createTenantApi(data)
ElMessage.success(t('common.createSuccess'))
message.success(t('common.createSuccess'))
} else {
data.expireTime = dayjs(data.expireTime).valueOf().toString()
await TenantApi.updateTenantApi(data)
ElMessage.success(t('common.updateSuccess'))
message.success(t('common.updateSuccess'))
}
//
dialogVisible.value = false

View File

@ -94,13 +94,16 @@ import { handleTree } from '@/utils/tree'
import { DICT_TYPE } from '@/utils/dict'
import { useTable } from '@/hooks/web/useTable'
import { useI18n } from '@/hooks/web/useI18n'
import { useMessage } from '@/hooks/web/useMessage'
import { FormExpose } from '@/components/Form'
import { TenantPackageVO } from '@/api/system/tenantPackage/types'
import { ElMessage, ElCard, ElSwitch, ElTree } from 'element-plus'
import { rules, allSchemas } from './tenantPackage.data'
import * as TenantPackageApi from '@/api/system/tenantPackage'
import { listSimpleMenusApi } from '@/api/system/menu'
import { ElTree } from 'element-plus'
const { t } = useI18n() //
const message = useMessage() //
const defaultProps = {
children: 'children',
@ -174,10 +177,10 @@ const submitForm = async () => {
data.menuIds = treeRef.value!.getCheckedKeys(false) as string[]
if (actionType.value === 'create') {
await TenantPackageApi.createTenantPackageTypeApi(data)
ElMessage.success(t('common.createSuccess'))
message.success(t('common.createSuccess'))
} else {
await TenantPackageApi.updateTenantPackageTypeApi(data)
ElMessage.success(t('common.updateSuccess'))
message.success(t('common.updateSuccess'))
}
//
dialogVisible.value = false

View File

@ -237,23 +237,6 @@
</template>
<script setup lang="ts">
import { nextTick, onMounted, reactive, ref, unref, watch } from 'vue'
import {
ElTag,
ElInput,
ElCard,
ElTree,
ElTreeSelect,
ElSelect,
ElOption,
ElTransfer,
ElForm,
ElFormItem,
ElUpload,
ElSwitch,
ElCheckbox,
UploadInstance,
UploadRawFile
} from 'element-plus'
import { handleTree } from '@/utils/tree'
import { useI18n } from '@/hooks/web/useI18n'
import { FormExpose } from '@/components/Form'
@ -272,6 +255,7 @@ import { getAccessToken, getTenantId } from '@/utils/auth'
import { useMessage } from '@/hooks/web/useMessage'
import { VxeGridInstance } from 'vxe-table'
import { useVxeGrid } from '@/hooks/web/useVxeGrid'
import { ElTree, UploadInstance, UploadRawFile } from 'element-plus'
const { t } = useI18n() //
const message = useMessage() //

View File

@ -34,6 +34,6 @@
],
"typeRoots": ["./node_modules/@types/", "./types"]
},
"include": ["src/**/*", "types/**/*.d.ts"],
"include": ["src/**/*", "types/**/*.d.ts", "src/auto-components.d.ts"],
"exclude": ["dist", "node_modules"]
}

View File

@ -6,6 +6,8 @@ import WindiCSS from 'vite-plugin-windicss'
import VueJsx from '@vitejs/plugin-vue-jsx'
import EslintPlugin from 'vite-plugin-eslint'
import VueI18n from '@intlify/vite-plugin-vue-i18n'
import Components from 'unplugin-vue-components/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
import { createStyleImportPlugin, ElementPlusResolve, VxeTableResolve } from 'vite-plugin-style-import'
import { createSvgIconsPlugin } from 'vite-plugin-svg-icons'
import PurgeIcons from 'vite-plugin-purge-icons'
@ -70,6 +72,20 @@ export default ({ command, mode }: ConfigEnv): UserConfig => {
return `vxe-table/es/${name}/style.css`
}
}]
}),
Components({
// 要搜索组件的目录的相对路径
dirs: ['src/components'],
// 组件的有效文件扩展名
extensions: ['vue', 'md'],
// 搜索子目录
deep: true,
include: [/\.vue$/, /\.vue\?vue/],
// 生成自定义 `auto-components.d.ts` 全局声明
dts: 'src/auto-components.d.ts',
// 自定义组件的解析器
resolvers: [ElementPlusResolver()],
exclude: [/[\\/]node_modules[\\/]/]
}),
EslintPlugin({
cache: false,