Compare commits

...

6 Commits

Author SHA1 Message Date
xiaoxian521
5734d0391f release: update 3.8.7 2022-11-28 01:25:43 +08:00
xiaoxian521
e81fb5bb10 perf: 使用 unplugin-vue-define-options 替换 unplugin-vue-macros,打包速度提升数倍 2022-11-28 01:17:03 +08:00
xiaoxian521
0c5ecd0a4e chore: update 2022-11-28 00:48:02 +08:00
xiaoxian521
1d76946968 style: update message 2022-11-28 00:35:12 +08:00
xiaoxian521
297319f668 chore: update 2022-11-27 18:53:15 +08:00
xiaoxian521
e23971b680 docs: update 2022-11-27 18:14:44 +08:00
21 changed files with 89 additions and 305 deletions

View File

@@ -1,3 +1,9 @@
# 3.8.7 (2022-11-28)
### 🍏 Perf
- perf: Great package optimization, please be sure to upgrade! Use `unplugin-vue-define-options` to replace `unplugin-vue-macros`, the packaging speed is increased several times, use `unplugin-vue-macros` to take `mac` with moderate performance as an example, the packaging time of the full version is` 6` minutes😭, after replacing it with `unplugin-vue-define-options`, the packaging time on the same computer is `50` seconds☺
# 3.8.6 (2022-11-27)
### 🎫 Feat

View File

@@ -1,3 +1,9 @@
# 3.8.7 (2022-11-28)
### 🍏 Perf
- perf: Great package optimization, please be sure to upgrade! Use `unplugin-vue-define-options` to replace `unplugin-vue-macros`, the packaging speed is increased several times, use `unplugin-vue-macros` to take `mac` with moderate performance as an example, the packaging time of the full version is` 6` minutes😭, after replacing it with `unplugin-vue-define-options`, the packaging time on the same computer is `50` seconds☺
# 3.8.6 (2022-11-27)
### 🎫 Feat

View File

@@ -1,3 +1,9 @@
# 3.8.7 (2022-11-28)
### 🍏 Perf
- perf: 打包大优化,请务必升级!使用 `unplugin-vue-define-options` 替换 `unplugin-vue-macros` ,打包速度提升数倍,使用 `unplugin-vue-macros` 以性能中等偏上的 `mac` 为例完整版打包时长为 `6` 分钟 😭,使用 `unplugin-vue-define-options` 替换后,相同电脑下打包时长为 `50` 秒 ☺️
# 3.8.6 (2022-11-27)
### 🎫 Feat

View File

@@ -10,6 +10,13 @@
`vue-pure-admin` is an open source free and out-of-the-box middle and background management system template. Developed using the latest mainstream technologies such as `Vue3`, `Vite`, `Element-Plus`, `TypeScript`, `Pinia`, `Tailwindcss`
## Thin version (offering non-internationalized and internationalized versions)
The simplified version is based on the shelf extracted from [vue-pure-admin](https://github.com/xiaoxian521/vue-pure-admin), which contains main functions and is more suitable for actual project development. The packaged size is introduced globally [element-plus](https://element-plus.org) is still below `2.3MB`, and the full version of the code will be permanently synchronized. After enabling `brotli` compression and `cdn` to replace the local library mode, the package size is less than `350kb`
- [Click me to view the non-internationalized version](https://github.com/xiaoxian521/pure-admin-thin)
- [Click me to view Internationalization version](https://github.com/xiaoxian521/pure-admin-thin/tree/i18n)
## Supporting Video
- [Click Watch Tutorial](https://www.bilibili.com/video/BV1kg411v7QT)
@@ -20,11 +27,6 @@
- [Click me to view the domestic documentation site](https://yiming_chang.gitee.io/pure-admin-doc)
- [Click me to view foreign document site](https://xiaoxian521.github.io/pure-admin-doc)
## Thin version (offering non-internationalized and internationalized versions)
- [Click me to view the non-internationalized version](https://github.com/xiaoxian521/pure-admin-thin)
- [Click me to view Internationalization version](https://github.com/xiaoxian521/pure-admin-thin/tree/i18n)
## Tauri
- [Click Watch Tauri](https://github.com/xiaoxian521/tauri-pure-admin)

View File

@@ -10,6 +10,13 @@
`vue-pure-admin` 是一款开源免费且开箱即用的中后台管理系统模版。使用了最新的 `Vue3``Vite``Element-Plus``TypeScript``Pinia``Tailwindcss` 等主流技术开发
## 精简版(实际项目开发请用精简版,提供 `非国际化` 、`国际化` 两个版本选择)
精简版是基于 [vue-pure-admin](https://github.com/xiaoxian521/vue-pure-admin) 提炼出的架子,包含主体功能,更适合实际项目开发,打包后的大小在全局引入 [element-plus](https://element-plus.org) 的情况下仍然低于 `2.3MB`,并且会永久同步完整版的代码。开启 `brotli` 压缩和 `cdn` 替换本地库模式后,打包大小低于 `350kb`
- [点我查看非国际化精简版](https://github.com/xiaoxian521/pure-admin-thin)
- [点我查看国际化精简版](https://github.com/xiaoxian521/pure-admin-thin/tree/i18n)
## 配套视频
- [点我查看快速开发教程](https://www.bilibili.com/video/BV1kg411v7QT)
@@ -20,11 +27,6 @@
- [点我查看国内文档站](https://yiming_chang.gitee.io/pure-admin-doc)
- [点我查看国外文档站](https://xiaoxian521.github.io/pure-admin-doc)
## 精简版(实际项目开发请用精简版,提供 `非国际化` 、`国际化` 两个版本选择)
- [点我查看非国际化精简版](https://github.com/xiaoxian521/pure-admin-thin)
- [点我查看国际化精简版](https://github.com/xiaoxian521/pure-admin-thin/tree/i18n)
## `Tauri` 版
- [点我查看 Tauri 版](https://github.com/xiaoxian521/tauri-pure-admin)

View File

@@ -4,13 +4,13 @@ import vue from "@vitejs/plugin-vue";
import { viteBuildInfo } from "./info";
import svgLoader from "vite-svg-loader";
import vueJsx from "@vitejs/plugin-vue-jsx";
import VueMacros from "unplugin-vue-macros/vite";
import { viteMockServe } from "vite-plugin-mock";
import { configCompressPlugin } from "./compress";
import VueI18n from "@intlify/vite-plugin-vue-i18n";
import { visualizer } from "rollup-plugin-visualizer";
import removeConsole from "vite-plugin-remove-console";
import themePreprocessorPlugin from "@pureadmin/theme";
import DefineOptions from "unplugin-vue-define-options/vite";
import { genScssMultipleScopeVars } from "../src/layout/theme";
export function getPluginsList(
@@ -32,7 +32,7 @@ export function getPluginsList(
vueJsx(),
VITE_CDN ? cdn : null,
configCompressPlugin(VITE_COMPRESSION),
VueMacros(),
DefineOptions(),
// 线上环境删除console
removeConsole({ external: ["src/assets/iconfont/iconfont.js"] }),
viteBuildInfo(),

View File

@@ -1,6 +1,6 @@
{
"name": "vue-pure-admin",
"version": "3.8.6",
"version": "3.8.7",
"private": true,
"scripts": {
"dev": "NODE_OPTIONS=--max-old-space-size=4096 vite",
@@ -144,7 +144,7 @@
"tailwindcss": "^3.2.4",
"terser": "^5.15.1",
"typescript": "^4.9.3",
"unplugin-vue-macros": "^1.0.3",
"unplugin-vue-define-options": "^1.0.0",
"vite": "3.1.8",
"vite-plugin-cdn-import": "^0.3.5",
"vite-plugin-compression": "^0.5.1",

271
pnpm-lock.yaml generated
View File

@@ -100,7 +100,7 @@ specifiers:
terser: ^5.15.1
typeit: ^8.7.0
typescript: ^4.9.3
unplugin-vue-macros: ^1.0.3
unplugin-vue-define-options: ^1.0.0
v-contextmenu: 3.0.0
vite: 3.1.8
vite-plugin-cdn-import: ^0.3.5
@@ -240,7 +240,7 @@ devDependencies:
tailwindcss: 3.2.4_postcss@8.4.19
terser: 5.16.0
typescript: 4.9.3
unplugin-vue-macros: 1.0.3_5wosmox4cb7ovevlqdhap7knuu
unplugin-vue-define-options: 1.0.0
vite: 3.1.8_sass@1.56.1+terser@5.16.0
vite-plugin-cdn-import: 0.3.5
vite-plugin-compression: 0.5.1_vite@3.1.8
@@ -269,13 +269,6 @@ packages:
"@jridgewell/trace-mapping": 0.3.17
dev: true
/@antfu/utils/0.6.3:
resolution:
{
integrity: sha512-sEYpyyKUPOew9QsXZ8feRVMzW6DWLviwOl+/ap06UQW02A8Srbc95CPHVm4eUbiBzBgD46eyIT+przv//KSSlQ==
}
dev: true
/@babel/code-frame/7.18.6:
resolution:
{
@@ -1632,6 +1625,7 @@ packages:
{
integrity: sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==
}
dev: false
/@typescript-eslint/eslint-plugin/5.44.0_fnsv2sbzcckq65bwfk7a5xwslu:
resolution:
@@ -1930,30 +1924,6 @@ packages:
"@volar/vue-language-core": 1.0.9
dev: true
/@vue-macros/api/0.2.0:
resolution:
{
integrity: sha512-E0rhhszd3MSE8l+A78gj9ONs4lsqOLHpONNzrc7H2nlPhEDsp4ZyQt+A9rRfxX+BTeLYfq64mli2qRV0tixiaw==
}
engines: { node: ">=14.19.0" }
dependencies:
"@babel/types": 7.20.2
"@vue-macros/common": 0.13.4
dev: true
/@vue-macros/better-define/1.0.0:
resolution:
{
integrity: sha512-SVQky3fk9wRrSH153Tw1+0sP5i6OB5iiUOtAC/mceH0IN5NGbDXt2YagELEM2+6caDquXNRL6jbG0HfRH6u0cA==
}
engines: { node: ">=14.19.0" }
dependencies:
"@rollup/pluginutils": 4.2.1
"@vue-macros/api": 0.2.0
"@vue-macros/common": 0.13.4
unplugin: 1.0.0
dev: true
/@vue-macros/common/0.13.4:
resolution:
{
@@ -1966,158 +1936,6 @@ packages:
magic-string: 0.26.7
dev: true
/@vue-macros/define-model/1.0.0_@vueuse+core@9.6.0:
resolution:
{
integrity: sha512-Nyh1fidDcfCzEKAo/ljwdQbpgMOrNowdJomB/qnkz/Lx4CVEaRk87LA2o3T99qIOogRfya8af+bLM8dNOq8dAQ==
}
engines: { node: ">=14.19.0" }
peerDependencies:
"@vueuse/core": ^9.0.0
peerDependenciesMeta:
"@vueuse/core":
optional: true
dependencies:
"@rollup/pluginutils": 4.2.1
"@vue-macros/common": 0.13.4
"@vueuse/core": 9.6.0_vue@3.2.45
ast-walker-scope: 0.3.0
unplugin: 1.0.0
dev: true
/@vue-macros/define-props/0.0.3_vue@3.2.45:
resolution:
{
integrity: sha512-GAiALWSrIogwdjbIe60Hi4CSvWFmZG7KySK8JBf7lszWNgoSirj/NKzmJOaHY0/I217tfq4Ew/brbdvcEhCikg==
}
engines: { node: ">=14.19.0" }
peerDependencies:
vue: ^3.2.25
dependencies:
"@rollup/pluginutils": 4.2.1
"@vue-macros/common": 0.13.4
unplugin: 1.0.0
vue: 3.2.45
dev: true
/@vue-macros/define-render/1.0.1_vue@3.2.45:
resolution:
{
integrity: sha512-B4ttYDZkXqVuciN23WNuVnr6L8dKrxEvz74gaYTXbdybv9jLEYMagSm/nFBLin+32EGYKeZu/D393r2EGAzeNg==
}
engines: { node: ">=14.19.0" }
peerDependencies:
vue: ^2.7.0 || ^3.0.0
dependencies:
"@rollup/pluginutils": 4.2.1
"@vue-macros/common": 0.13.4
unplugin: 1.0.0
vue: 3.2.45
dev: true
/@vue-macros/define-slots/0.0.6_vue@3.2.45:
resolution:
{
integrity: sha512-pK4P/oUjcrP/Rr5clsV2eZ53OJ3QlU2fZlnn91w++L0+lio+0M06ptr/IkHNVLNQ9U9Z43MkjHkMLX8Df8BknA==
}
engines: { node: ">=14.19.0" }
peerDependencies:
vue: ^2.7.0 || ^3.0.0
dependencies:
"@rollup/pluginutils": 4.2.1
"@vue-macros/common": 0.13.4
unplugin: 1.0.0
vue: 3.2.45
dev: true
/@vue-macros/hoist-static/1.0.0:
resolution:
{
integrity: sha512-NcFVAfKM9UjChOXy+yno4vhTsSHT6qUKbmd4/I8ucoiJT8IfFyGCwFoZZ8uqgjIwlzSUDxJ/vYoDRjiziTiNKg==
}
engines: { node: ">=14.19.0" }
dependencies:
"@rollup/pluginutils": 4.2.1
"@vue-macros/common": 0.13.4
unplugin: 1.0.0
dev: true
/@vue-macros/named-template/0.0.6_vite@3.1.8+vue@3.2.45:
resolution:
{
integrity: sha512-nEoutSYbwu7QC+uWcs90rD28erP6xZ0aU4uYnrxTUnVcbga9xMchxcs3MgI/2ax6dz/EXf1f1utYXXpGgLi+Tw==
}
engines: { node: ">=14.19.0" }
dependencies:
"@rollup/pluginutils": 4.2.1
"@vitejs/plugin-vue": 3.2.0_vite@3.1.8+vue@3.2.45
"@vue-macros/common": 0.13.4
"@vue/compiler-dom": 3.2.45
unplugin: 1.0.0
unplugin-combine: 0.2.8_vite@3.1.8
transitivePeerDependencies:
- esbuild
- rollup
- vite
- vue
- webpack
dev: true
/@vue-macros/setup-block/0.0.1:
resolution:
{
integrity: sha512-Zr7yudMN7Q+8Rb/4ZuZzNewHTejeH9fbt3104sFK53XqL4uLkDCz0fIG2AD9bR71RA+12H+yqn/jQ3vP4OaKGA==
}
engines: { node: ">=14.19.0" }
dependencies:
"@rollup/pluginutils": 4.2.1
"@vue-macros/common": 0.13.4
"@vue/compiler-dom": 3.2.45
unplugin: 1.0.0
dev: true
/@vue-macros/setup-component/0.12.8_vite@3.1.8:
resolution:
{
integrity: sha512-2tRMl8l8OYMpIRYsZyAZfH0dNT7CONMTcmdGEffJb5GvK8XOmdgGk7NFUhaQg3EEnk1SUq1Kdcx+gyH/a0qE4A==
}
engines: { node: ">=14.19.0" }
dependencies:
"@rollup/pluginutils": 4.2.1
"@vue-macros/common": 0.13.4
unplugin: 1.0.0
unplugin-combine: 0.2.8_vite@3.1.8
transitivePeerDependencies:
- esbuild
- rollup
- vite
- webpack
dev: true
/@vue-macros/setup-sfc/0.12.8:
resolution:
{
integrity: sha512-eOQxlY53GD/WkJrDHpDvHecWQ70Cw9aSYwS9eT1dQ9vWJVeJ/2R96z09GfYKz6cr9T00OPeZjftU5sC1FO+3xA==
}
engines: { node: ">=14.19.0" }
dependencies:
"@rollup/pluginutils": 4.2.1
"@vue-macros/common": 0.13.4
unplugin: 1.0.0
dev: true
/@vue-macros/short-emits/1.0.1:
resolution:
{
integrity: sha512-iyCZu35uPOAUJOPrmJrc3pQdY8TswoRrF4Kfcga7xUPvE5ck0Yq4pmOIE+NKz/pGQzzOkxC1qMDc2kaoJ2qAzg==
}
engines: { node: ">=14.19.0" }
dependencies:
"@rollup/pluginutils": 4.2.1
"@vue-macros/common": 0.13.4
unplugin: 1.0.0
dev: true
/@vue/babel-helper-vue-transform-on/1.0.2:
resolution:
{
@@ -2327,6 +2145,7 @@ packages:
transitivePeerDependencies:
- "@vue/composition-api"
- vue
dev: false
/@vueuse/metadata/8.9.4:
resolution:
@@ -2340,6 +2159,7 @@ packages:
{
integrity: sha512-sIC8R+kWkIdpi5X2z2Gk8TRYzmczDwHRhEFfCu2P+XW2JdPoXrziqsGpDDsN7ykBx4ilwieS7JUIweVGhvZ93w==
}
dev: false
/@vueuse/motion/2.0.0-beta.12_vue@3.2.45:
resolution:
@@ -2390,6 +2210,7 @@ packages:
transitivePeerDependencies:
- "@vue/composition-api"
- vue
dev: false
/@wangeditor/basic-modules/1.1.7_j7icpicfeimtkldwmemjnpdjs4:
resolution:
@@ -5924,14 +5745,6 @@ packages:
wrap-ansi: 7.0.0
dev: true
/local-pkg/0.4.2:
resolution:
{
integrity: sha512-mlERgSPrbxU3BP4qBqAvvwlgW4MTg78iwJdGGnv7kibKjWcJksrG3t6LB5lXI93wXRDvG4NpUgJFmTG4T6rdrg==
}
engines: { node: ">=14" }
dev: true
/locate-path/5.0.0:
resolution:
{
@@ -8719,32 +8532,6 @@ packages:
engines: { node: ">= 0.8" }
dev: true
/unplugin-combine/0.2.8_vite@3.1.8:
resolution:
{
integrity: sha512-Z38AC/TEjXbVyZ5HjVqo+lADj0/dcfwWC0Z4y0LNhybJzJQwmcMxm+ZsqHY3faauj4YigmlRMdptR5JEW9RuLg==
}
engines: { node: ">=14.19.0" }
peerDependencies:
esbuild: ">=0.13"
rollup: ^2.50.0
vite: ^2.3.0 || ^3.0.0
webpack: 4 || 5
peerDependenciesMeta:
esbuild:
optional: true
rollup:
optional: true
vite:
optional: true
webpack:
optional: true
dependencies:
"@antfu/utils": 0.6.3
unplugin: 0.10.2
vite: 3.1.8_sass@1.56.1+terser@5.16.0
dev: true
/unplugin-vue-define-options/1.0.0:
resolution:
{
@@ -8758,51 +8545,6 @@ packages:
unplugin: 1.0.0
dev: true
/unplugin-vue-macros/1.0.3_5wosmox4cb7ovevlqdhap7knuu:
resolution:
{
integrity: sha512-QONC2iP0JNmIpbpL2jwsY89Lq6oTZf8JSbhQSVGB7xu+/iY52ZdfEB/bysai3lS5ScTH3M4y0KQHWVcyxBof7g==
}
engines: { node: ">=14.19.0" }
peerDependencies:
vue: ^2.7.0 || ^3.2.25
dependencies:
"@rollup/pluginutils": 4.2.1
"@vue-macros/better-define": 1.0.0
"@vue-macros/define-model": 1.0.0_@vueuse+core@9.6.0
"@vue-macros/define-props": 0.0.3_vue@3.2.45
"@vue-macros/define-render": 1.0.1_vue@3.2.45
"@vue-macros/define-slots": 0.0.6_vue@3.2.45
"@vue-macros/hoist-static": 1.0.0
"@vue-macros/named-template": 0.0.6_vite@3.1.8+vue@3.2.45
"@vue-macros/setup-block": 0.0.1
"@vue-macros/setup-component": 0.12.8_vite@3.1.8
"@vue-macros/setup-sfc": 0.12.8
"@vue-macros/short-emits": 1.0.1
local-pkg: 0.4.2
unplugin-combine: 0.2.8_vite@3.1.8
unplugin-vue-define-options: 1.0.0
vue: 3.2.45
transitivePeerDependencies:
- "@vueuse/core"
- esbuild
- rollup
- vite
- webpack
dev: true
/unplugin/0.10.2:
resolution:
{
integrity: sha512-6rk7GUa4ICYjae5PrAllvcDeuT8pA9+j5J5EkxbMFaV+SalHhxZ7X2dohMzu6C3XzsMT+6jwR/+pwPNR3uK9MA==
}
dependencies:
acorn: 8.8.1
chokidar: 3.5.3
webpack-sources: 3.2.3
webpack-virtual-modules: 0.4.6
dev: true
/unplugin/1.0.0:
resolution:
{
@@ -9017,6 +8759,7 @@ packages:
optional: true
dependencies:
vue: 3.2.45
dev: false
/vue-eslint-parser/9.1.0_eslint@8.28.0:
resolution:

View File

@@ -1,5 +1,5 @@
{
"Version": "3.8.6",
"Version": "3.8.7",
"Title": "PureAdmin",
"FixedHeader": true,
"HiddenSideBar": false,

View File

@@ -5,8 +5,8 @@ const home = 0, // 平台规定只有 home 路由的 rank 才能为 0 ,所以
utils = 2,
table = 3,
tree = 4,
able = 5,
components = 6,
components = 5,
able = 6,
frame = 7,
nested = 8,
result = 9,
@@ -28,8 +28,8 @@ export {
utils,
table,
tree,
able,
components,
able,
frame,
nested,
result,

View File

@@ -19,6 +19,10 @@ export default {
extraIcon: {
svg: true,
name: "team-iconxinpinrenqiwang"
},
transition: {
enterTransition: "animate__fadeInLeft",
leaveTransition: "animate__fadeOutRight"
}
}
},

View File

@@ -199,5 +199,12 @@ html.dark {
pointer-events: all !important;
background-image: initial !important;
}
& .el-message__closeBtn {
&:hover {
color: rgba(255, 255, 255, 0.85);
background-color: rgba(255, 255, 255, 0.12);
}
}
}
}

View File

@@ -86,6 +86,13 @@
}
& .el-message__closeBtn {
outline: none;
border-radius: 4px;
right: 9px !important;
transition: background-color 0.2s, color 0.2s;
&:hover {
background-color: rgba(0, 0, 0, 0.06);
}
}
}

View File

@@ -1,17 +1,12 @@
<script setup lang="ts">
import { ElMessage } from "element-plus";
import { message } from "@/utils/message";
import { debounce, throttle } from "@pureadmin/utils";
defineOptions({
name: "Debounce"
});
const handle = () => {
ElMessage({
message: "恭喜你,这是一条成功消息",
type: "success"
});
};
const handle = () => message("恭喜你,这是一条成功消息", { type: "success" });
const immediateDebounce = debounce(handle, 1000, true);

View File

@@ -1,6 +1,6 @@
<script setup lang="ts">
import { ref, unref } from "vue";
import { ElMessage } from "element-plus";
import { message } from "@/utils/message";
import ReQrcode from "@/components/ReQrcode";
defineOptions({
@@ -14,10 +14,10 @@ setTimeout(() => {
asyncTitle.value = unref(qrcodeText);
}, 3000);
const codeClick = () => {
ElMessage.info("点击事件");
message("点击事件", { type: "info" });
};
const disabledClick = () => {
ElMessage.info("失效");
message("失效", { type: "info" });
};
</script>

View File

@@ -19,7 +19,7 @@ defineOptions({
<h4 class="mb-4">element-plus 的消息提示点击弹出提示信息</h4>
<el-space>
<el-space wrap>
<el-button
type="info"
@click="message('Info类型消息', { customClass: 'el' })"
@@ -119,7 +119,7 @@ defineOptions({
原本样式使用和打包大小成本极低并适配暗黑模式
</h4>
<el-space>
<el-space wrap>
<el-button type="info" @click="message('Info类型消息')">Info</el-button>
<el-button
type="success"

View File

@@ -1,6 +1,7 @@
<script setup lang="ts">
import { ref, watch } from "vue";
import { ElMessage, FormInstance } from "element-plus";
import { message } from "@/utils/message";
import { FormInstance } from "element-plus";
const SELECT_OPTIONS = [
{ label: "网关", value: 1 },
@@ -33,7 +34,7 @@ const submitForm = async (formEl: FormInstance | undefined) => {
if (!formEl) return;
await formEl.validate(valid => {
if (valid) {
ElMessage.success("提交成功");
message("提交成功", { type: "success" });
formVisible.value = false;
resetForm(formEl);
}

View File

@@ -1,9 +1,10 @@
<script setup lang="ts">
import Card from "./components/Card.vue";
import { getCardList } from "@/api/list";
import { message } from "@/utils/message";
import { ElMessageBox } from "element-plus";
import { ref, onMounted, nextTick } from "vue";
import dialogForm from "./components/DialogForm.vue";
import { ElMessage, ElMessageBox } from "element-plus";
import { useRenderIcon } from "@/components/ReIcon/src/hooks";
defineOptions({
@@ -77,10 +78,7 @@ const handleDeleteItem = product => {
}
)
.then(() => {
ElMessage({
type: "success",
message: "删除成功"
});
message("删除成功", { type: "success" });
})
.catch(() => {});
};

View File

@@ -1,9 +1,16 @@
<script setup lang="ts">
import { ref } from "vue";
import { list } from "./base/list";
defineOptions({
name: "PureTable"
});
const selected = ref(0);
function tabClick({ index }) {
selected.value = index;
}
</script>
<template>
@@ -32,9 +39,9 @@ defineOptions({
:closable="false"
/>
<el-tabs>
<el-tabs @tab-click="tabClick">
<template v-for="(item, index) of list" :key="item.key">
<el-tab-pane>
<el-tab-pane :lazy="true">
<template #label>
<el-tooltip
:content="`(第 ${index + 1} 个示例)${item.content}`"
@@ -43,7 +50,7 @@ defineOptions({
<span>{{ item.title }}</span>
</el-tooltip>
</template>
<component :is="item.component" />
<component v-if="selected == index" :is="item.component" />
</el-tab-pane>
</template>
</el-tabs>

View File

@@ -29,7 +29,6 @@
"element-plus/global",
"@pureadmin/table/volar",
"@pureadmin/descriptions/volar",
"unplugin-vue-macros/macros-global",
"unplugin-vue-define-options/macros-global"
],
"typeRoots": ["./node_modules/@types/", "./types"]

1
types/global.d.ts vendored
View File

@@ -214,6 +214,7 @@ declare global {
/**
* @description 当前路由动画效果
* @see {@link https://next.router.vuejs.org/guide/advanced/transitions.html#transitions}
* @see animate.css {@link https://animate.style}
*/
name?: string;
/** 进场动画 */