mirror of
https://github.com/pure-admin/vue-pure-admin.git
synced 2025-06-30 09:24:46 +08:00
Merge branch 'main' into gitee
This commit is contained in:
commit
b3983df384
@ -1,3 +1,33 @@
|
||||
# 5.4.0 (2024-04-18)
|
||||
|
||||
### 🎫 Feat
|
||||
|
||||
- Add global disabled attribute `disabled` to `ReSegmented` component
|
||||
- Added mind map examples
|
||||
- Functional pop-up box `ReDialog` adds `Popconfirm` bubble confirmation box
|
||||
- `pure-table` adds `headerSlot` custom header slot usage example
|
||||
- The route adds a configurable `fixedTag` attribute, which determines whether the current menu name is fixedly displayed on the tab and cannot be closed.
|
||||
- Added account setting function page and compatible with mobile terminals
|
||||
- Upgrade `eslint9` and related compatibility processing
|
||||
- Added global configuration `MaxTagsLevel` property to set the maximum number of open tabs
|
||||
- Full coverage of the internationalization of the core code of the framework (only the internationalization of the business code needs to be processed)
|
||||
|
||||
### 🐞 Bug fixes
|
||||
|
||||
- Fixed the issue where columns cannot be dragged normally when there are multiple `RePureTableBar` components on a page
|
||||
- Fixed the problem of icon display style after the third-level menu is folded to the left
|
||||
- Fixed the issue where the font color does not take effect after refreshing the account settings page
|
||||
- Fixed the issue where the `refreshToken` parameter is empty when calling the refresh `token` interface
|
||||
|
||||
### 🍏 Perf
|
||||
|
||||
- Optimize login interface
|
||||
- Optimize the logic of obtaining the top menu
|
||||
- Optimize request whitelist logic and be compatible with more scenarios
|
||||
- Simplified export and import usage in `store` files
|
||||
- Removed unnecessary `cloc` tool dependency package, which uses the `GPL` open source license and is controversial
|
||||
- Optimize the types of `post` and `get` utility functions in `src/utils/http` files
|
||||
|
||||
# 5.3.0 (2024-03-28)
|
||||
|
||||
### ✔️ refactor
|
||||
|
30
CHANGELOG.md
30
CHANGELOG.md
@ -1,3 +1,33 @@
|
||||
# 5.4.0 (2024-04-18)
|
||||
|
||||
### 🎫 Feat
|
||||
|
||||
- Add global disabled attribute `disabled` to `ReSegmented` component
|
||||
- Added mind map examples
|
||||
- Functional pop-up box `ReDialog` adds `Popconfirm` bubble confirmation box
|
||||
- `pure-table` adds `headerSlot` custom header slot usage example
|
||||
- The route adds a configurable `fixedTag` attribute, which determines whether the current menu name is fixedly displayed on the tab and cannot be closed.
|
||||
- Added account setting function page and compatible with mobile terminals
|
||||
- Upgrade `eslint9` and related compatibility processing
|
||||
- Added global configuration `MaxTagsLevel` property to set the maximum number of open tabs
|
||||
- Full coverage of the internationalization of the core code of the framework (only the internationalization of the business code needs to be processed)
|
||||
|
||||
### 🐞 Bug fixes
|
||||
|
||||
- Fixed the issue where columns cannot be dragged normally when there are multiple `RePureTableBar` components on a page
|
||||
- Fixed the problem of icon display style after the third-level menu is folded to the left
|
||||
- Fixed the issue where the font color does not take effect after refreshing the account settings page
|
||||
- Fixed the issue where the `refreshToken` parameter is empty when calling the refresh `token` interface
|
||||
|
||||
### 🍏 Perf
|
||||
|
||||
- Optimize login interface
|
||||
- Optimize the logic of obtaining the top menu
|
||||
- Optimize request whitelist logic and be compatible with more scenarios
|
||||
- Simplified export and import usage in `store` files
|
||||
- Removed unnecessary `cloc` tool dependency package, which uses the `GPL` open source license and is controversial
|
||||
- Optimize the types of `post` and `get` utility functions in `src/utils/http` files
|
||||
|
||||
# 5.3.0 (2024-03-28)
|
||||
|
||||
### ✔️ refactor
|
||||
|
@ -1,3 +1,33 @@
|
||||
# 5.4.0 (2024-04-18)
|
||||
|
||||
### 🎫 Feat
|
||||
|
||||
- 分段控制器组件添加全局禁用属性`disabled`
|
||||
- 添加思维导图示例
|
||||
- 函数式弹框`ReDialog`添加`Popconfirm`气泡确认框
|
||||
- `pure-table`添加`headerSlot`自定义表头插槽用法示例
|
||||
- 路由添加可配置的`fixedTag`属性,作用为当前菜单名称是否固定显示在标签页且不可关闭
|
||||
- 添加账户设置功能页面且兼容移动端
|
||||
- 升级`eslint9`,相关兼容处理
|
||||
- 添加全局配置`MaxTagsLevel`属性,可设置打开标签页最大数
|
||||
- 框架核心代码国际化全量覆盖(仅需处理业务代码国际化即可)
|
||||
|
||||
### 🐞 Bug fixes
|
||||
|
||||
- 修复当一个页面存在多个`RePureTableBar`组件,列无法正常拖动问题
|
||||
- 修复三级菜单向左折叠后图标显示样式问题
|
||||
- 修复账户设置页面,刷新后字体颜色未生效的问题
|
||||
- 修复调用刷新`token`接口时,`refreshToken`参数为空的问题
|
||||
|
||||
### 🍏 Perf
|
||||
|
||||
- 优化登录接口
|
||||
- 优化获取顶级菜单逻辑
|
||||
- 优化请求白名单逻辑,兼容更多场景
|
||||
- 简化`store`文件中导出和导入用法
|
||||
- 移除非必要的`cloc`工具依赖包,它使用`GPL`开源许可证具有争议性
|
||||
- 优化`src/utils/http`文件中`post`和`get`工具函数的类型
|
||||
|
||||
# 5.3.0 (2024-03-28)
|
||||
|
||||
### ✔️ refactor
|
||||
|
@ -36,8 +36,6 @@ const include = [
|
||||
"vue-json-pretty",
|
||||
"@logicflow/core",
|
||||
"@pureadmin/utils",
|
||||
"@vue-office/docx",
|
||||
"@vue-office/excel",
|
||||
"@wangeditor/editor",
|
||||
"responsive-storage",
|
||||
"plus-pro-components",
|
||||
|
@ -166,8 +166,6 @@ menus:
|
||||
pureSwiper: Swiper Plugin
|
||||
pureVirtualList: Virtual List
|
||||
purePdf: PDF Preview
|
||||
pureWord: Word Preview
|
||||
pureExcels: Excel Preview
|
||||
pureExcel: Export Excel
|
||||
pureInfiniteScroll: Table Infinite Scroll
|
||||
pureSensitive: Sensitive Filter
|
||||
|
@ -166,8 +166,6 @@ menus:
|
||||
pureSwiper: Swiper插件
|
||||
pureVirtualList: 虚拟列表
|
||||
purePdf: PDF预览
|
||||
pureWord: Word预览
|
||||
pureExcels: Excel预览
|
||||
pureExcel: 导出Excel
|
||||
pureInfiniteScroll: 表格无限滚动
|
||||
pureSensitive: 敏感词过滤
|
||||
|
30
package.json
30
package.json
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "vue-pure-admin",
|
||||
"version": "5.3.0",
|
||||
"version": "5.4.0",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
@ -57,8 +57,6 @@
|
||||
"@pureadmin/utils": "^2.4.7",
|
||||
"@vue-flow/background": "^1.3.0",
|
||||
"@vue-flow/core": "^1.33.5",
|
||||
"@vue-office/docx": "^1.6.0",
|
||||
"@vue-office/excel": "^1.7.6",
|
||||
"@vueuse/core": "^10.9.0",
|
||||
"@vueuse/motion": "^2.1.0",
|
||||
"@wangeditor/editor": "^5.1.23",
|
||||
@ -67,11 +65,11 @@
|
||||
"animate.css": "^4.1.1",
|
||||
"axios": "^1.6.8",
|
||||
"china-area-data": "^5.0.1",
|
||||
"cropperjs": "^1.6.1",
|
||||
"cropperjs": "^1.6.2",
|
||||
"dayjs": "^1.11.10",
|
||||
"echarts": "^5.5.0",
|
||||
"el-table-infinite-scroll": "^3.0.3",
|
||||
"element-plus": "2.6.3",
|
||||
"element-plus": "^2.7.1",
|
||||
"intro.js": "^7.2.0",
|
||||
"js-cookie": "^3.0.5",
|
||||
"jsbarcode": "^3.11.6",
|
||||
@ -82,7 +80,7 @@
|
||||
"nprogress": "^0.2.0",
|
||||
"path": "^0.12.7",
|
||||
"pinia": "^2.1.7",
|
||||
"pinyin-pro": "^3.20.1",
|
||||
"pinyin-pro": "^3.20.2",
|
||||
"plus-pro-components": "^0.0.11",
|
||||
"qrcode": "^1.5.3",
|
||||
"qs": "^6.12.1",
|
||||
@ -93,11 +91,11 @@
|
||||
"v-contextmenu": "^3.2.0",
|
||||
"v3-infinite-loading": "^1.3.1",
|
||||
"version-rocket": "^1.7.1",
|
||||
"vue": "^3.4.23",
|
||||
"vue-i18n": "^9.12.1",
|
||||
"vue": "^3.4.24",
|
||||
"vue-i18n": "^9.13.1",
|
||||
"vue-json-pretty": "^2.4.0",
|
||||
"vue-pdf-embed": "^2.0.3",
|
||||
"vue-router": "^4.3.1",
|
||||
"vue-router": "^4.3.2",
|
||||
"vue-tippy": "^6.4.1",
|
||||
"vue-types": "^5.1.1",
|
||||
"vue-virtual-scroller": "2.0.0-beta.8",
|
||||
@ -105,7 +103,7 @@
|
||||
"vue3-danmaku": "^1.6.0",
|
||||
"vue3-puzzle-vcode": "^1.1.7",
|
||||
"vuedraggable": "^4.1.0",
|
||||
"vxe-table": "^4.5.22",
|
||||
"vxe-table": "^4.6.0",
|
||||
"wavesurfer.js": "^7.7.11",
|
||||
"xgplayer": "^3.0.16",
|
||||
"xlsx": "^0.18.5"
|
||||
@ -114,11 +112,11 @@
|
||||
"@commitlint/cli": "^19.2.2",
|
||||
"@commitlint/config-conventional": "^19.2.2",
|
||||
"@commitlint/types": "^19.0.3",
|
||||
"@eslint/js": "^9.0.0",
|
||||
"@eslint/js": "^9.1.1",
|
||||
"@faker-js/faker": "^8.4.1",
|
||||
"@iconify-icons/ep": "^1.2.12",
|
||||
"@iconify-icons/ri": "^1.2.10",
|
||||
"@iconify/vue": "^4.1.1",
|
||||
"@iconify/vue": "^4.1.2",
|
||||
"@intlify/unplugin-vue-i18n": "^4.0.0",
|
||||
"@pureadmin/theme": "^3.2.0",
|
||||
"@types/dagre": "^0.7.52",
|
||||
@ -130,15 +128,15 @@
|
||||
"@types/qrcode": "^1.5.5",
|
||||
"@types/qs": "^6.9.15",
|
||||
"@types/sortablejs": "^1.15.8",
|
||||
"@typescript-eslint/eslint-plugin": "^7.7.0",
|
||||
"@typescript-eslint/parser": "^7.7.0",
|
||||
"@typescript-eslint/eslint-plugin": "^7.7.1",
|
||||
"@typescript-eslint/parser": "^7.7.1",
|
||||
"@vitejs/plugin-vue": "^5.0.4",
|
||||
"@vitejs/plugin-vue-jsx": "^3.1.0",
|
||||
"autoprefixer": "^10.4.19",
|
||||
"boxen": "^7.1.1",
|
||||
"cssnano": "^6.1.2",
|
||||
"dagre": "^0.8.5",
|
||||
"eslint": "^9.0.0",
|
||||
"eslint": "^9.1.1",
|
||||
"eslint-config-prettier": "^9.1.0",
|
||||
"eslint-define-config": "^2.1.0",
|
||||
"eslint-plugin-prettier": "^5.1.3",
|
||||
@ -162,7 +160,7 @@
|
||||
"svgo": "^3.2.0",
|
||||
"tailwindcss": "^3.4.3",
|
||||
"typescript": "^5.4.5",
|
||||
"vite": "^5.2.9",
|
||||
"vite": "^5.2.10",
|
||||
"vite-plugin-cdn-import": "^0.3.5",
|
||||
"vite-plugin-compression": "^0.5.1",
|
||||
"vite-plugin-fake-server": "^2.1.1",
|
||||
|
832
pnpm-lock.yaml
generated
832
pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load Diff
@ -1,5 +1,5 @@
|
||||
{
|
||||
"Version": "5.3.0",
|
||||
"Version": "5.4.0",
|
||||
"Title": "PureAdmin",
|
||||
"FixedHeader": true,
|
||||
"HiddenSideBar": false,
|
||||
|
@ -3,8 +3,12 @@ import { http } from "@/utils/http";
|
||||
export type UserResult = {
|
||||
success: boolean;
|
||||
data: {
|
||||
/** 头像 */
|
||||
avatar: string;
|
||||
/** 用户名 */
|
||||
username: string;
|
||||
/** 昵称 */
|
||||
nickname: string;
|
||||
/** 当前登录用户的角色 */
|
||||
roles: Array<string>;
|
||||
/** `token` */
|
||||
|
@ -16,6 +16,7 @@ import {
|
||||
// Export,
|
||||
// Keyboard,
|
||||
// Validator,
|
||||
Custom,
|
||||
// 可选组件
|
||||
Icon,
|
||||
Column,
|
||||
@ -64,14 +65,15 @@ VXETable.config({
|
||||
|
||||
export function useVxeTable(app: App) {
|
||||
// 表格功能
|
||||
// app.use(Filter)
|
||||
// .use(Edit)
|
||||
// .use(Menu)
|
||||
// .use(Export)
|
||||
// .use(Keyboard)
|
||||
// .use(Validator)
|
||||
// 可选组件
|
||||
app
|
||||
// .use(Filter)
|
||||
// .use(Edit)
|
||||
// .use(Menu)
|
||||
// .use(Export)
|
||||
// .use(Keyboard)
|
||||
// .use(Validator)
|
||||
.use(Custom)
|
||||
// 可选组件
|
||||
.use(Icon)
|
||||
.use(Column)
|
||||
// .use(Colgroup)
|
||||
|
@ -95,22 +95,6 @@ export default {
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
path: "/able/word",
|
||||
name: "Word",
|
||||
component: () => import("@/views/able/word.vue"),
|
||||
meta: {
|
||||
title: $t("menus.pureWord")
|
||||
}
|
||||
},
|
||||
{
|
||||
path: "/able/excels",
|
||||
name: "Excels",
|
||||
component: () => import("@/views/able/excels.vue"),
|
||||
meta: {
|
||||
title: $t("menus.pureExcels")
|
||||
}
|
||||
},
|
||||
{
|
||||
path: "/able/pdf",
|
||||
name: "Pdf",
|
||||
|
@ -1,8 +1,8 @@
|
||||
import { defineStore } from "pinia";
|
||||
import {
|
||||
type appType,
|
||||
store,
|
||||
getConfig,
|
||||
defineStore,
|
||||
storageLocal,
|
||||
deviceDetection,
|
||||
responsiveStorageNameSpace
|
||||
|
@ -1,7 +1,7 @@
|
||||
import { defineStore } from "pinia";
|
||||
import {
|
||||
store,
|
||||
getConfig,
|
||||
defineStore,
|
||||
storageLocal,
|
||||
responsiveStorageNameSpace
|
||||
} from "../utils";
|
||||
|
@ -1,3 +1,4 @@
|
||||
import { defineStore } from "pinia";
|
||||
import {
|
||||
type multiType,
|
||||
type positionType,
|
||||
@ -7,7 +8,6 @@ import {
|
||||
isNumber,
|
||||
isBoolean,
|
||||
getConfig,
|
||||
defineStore,
|
||||
routerArrays,
|
||||
storageLocal,
|
||||
responsiveStorageNameSpace
|
||||
|
@ -1,3 +1,4 @@
|
||||
import { defineStore } from "pinia";
|
||||
import {
|
||||
type cacheType,
|
||||
store,
|
||||
@ -5,7 +6,6 @@ import {
|
||||
ascending,
|
||||
getKeyList,
|
||||
filterTree,
|
||||
defineStore,
|
||||
constantMenus,
|
||||
filterNoPermissionTree,
|
||||
formatFlatteningRoutes
|
||||
|
@ -1,4 +1,5 @@
|
||||
import { type setType, store, defineStore, getConfig } from "../utils";
|
||||
import { defineStore } from "pinia";
|
||||
import { type setType, store, getConfig } from "../utils";
|
||||
|
||||
export const useSettingStore = defineStore({
|
||||
id: "pure-setting",
|
||||
|
@ -1,8 +1,8 @@
|
||||
import { defineStore } from "pinia";
|
||||
import {
|
||||
type userType,
|
||||
store,
|
||||
router,
|
||||
defineStore,
|
||||
resetRouter,
|
||||
routerArrays,
|
||||
storageLocal
|
||||
|
@ -1,5 +1,4 @@
|
||||
export { store } from "@/store";
|
||||
export { defineStore } from "pinia";
|
||||
export { routerArrays } from "@/layout/types";
|
||||
export { router, resetRouter, constantMenus } from "@/router";
|
||||
export { getConfig, responsiveStorageNameSpace } from "@/config";
|
||||
|
@ -86,7 +86,8 @@ html.dark {
|
||||
background: var(--el-bg-color) !important;
|
||||
}
|
||||
|
||||
.app-main {
|
||||
.app-main,
|
||||
.app-main-nofixed-header {
|
||||
background: #020409 !important;
|
||||
}
|
||||
|
||||
|
@ -1,27 +0,0 @@
|
||||
<script setup lang="ts">
|
||||
import "@vue-office/excel/lib/index.css";
|
||||
import VueOfficeExcel from "@vue-office/excel";
|
||||
|
||||
defineOptions({
|
||||
name: "Excels"
|
||||
});
|
||||
|
||||
const excel = "https://xiaoxian521.github.io/hyperlink/other/excel.xlsx";
|
||||
|
||||
function renderedHandler() {
|
||||
console.log("渲染完成");
|
||||
}
|
||||
|
||||
function errorHandler() {
|
||||
console.log("渲染失败");
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<vue-office-excel
|
||||
:src="excel"
|
||||
style="height: 100vh"
|
||||
@rendered="renderedHandler"
|
||||
@error="errorHandler"
|
||||
/>
|
||||
</template>
|
@ -1,18 +0,0 @@
|
||||
<script setup lang="ts">
|
||||
import "@vue-office/docx/lib/index.css";
|
||||
import VueOfficeDocx from "@vue-office/docx";
|
||||
|
||||
defineOptions({
|
||||
name: "Word"
|
||||
});
|
||||
|
||||
const docx = "https://xiaoxian521.github.io/hyperlink/other/word.docx";
|
||||
|
||||
function rendered() {
|
||||
console.log("渲染完成");
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<vue-office-docx :src="docx" @rendered="rendered" />
|
||||
</template>
|
@ -13,7 +13,7 @@ defineOptions({
|
||||
});
|
||||
|
||||
const imgSrc = ref("");
|
||||
const cropperInfo = ref();
|
||||
const cropperBlob = ref();
|
||||
const cropRef = ref();
|
||||
const uploadRef = ref();
|
||||
const isShow = ref(false);
|
||||
@ -66,11 +66,11 @@ const handleClose = () => {
|
||||
isShow.value = false;
|
||||
};
|
||||
|
||||
const onCropper = info => (cropperInfo.value = info);
|
||||
const onCropper = ({ blob }) => (cropperBlob.value = blob);
|
||||
|
||||
const handleSubmitImage = () => {
|
||||
const formData = createFormData({
|
||||
files: new File([cropperInfo.value], "avatar")
|
||||
files: new File([cropperBlob.value], "avatar")
|
||||
});
|
||||
formUpload(formData)
|
||||
.then(({ success, data }) => {
|
||||
|
Loading…
x
Reference in New Issue
Block a user