Merge branch 'main' into gitee

This commit is contained in:
xiaoxian521 2024-04-24 10:40:12 +08:00
commit b3983df384
23 changed files with 528 additions and 536 deletions

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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",

View File

@ -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

View File

@ -166,8 +166,6 @@ menus:
pureSwiper: Swiper插件
pureVirtualList: 虚拟列表
purePdf: PDF预览
pureWord: Word预览
pureExcels: Excel预览
pureExcel: 导出Excel
pureInfiniteScroll: 表格无限滚动
pureSensitive: 敏感词过滤

View File

@ -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

File diff suppressed because it is too large Load Diff

View File

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

View File

@ -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` */

View File

@ -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)

View File

@ -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",

View File

@ -1,8 +1,8 @@
import { defineStore } from "pinia";
import {
type appType,
store,
getConfig,
defineStore,
storageLocal,
deviceDetection,
responsiveStorageNameSpace

View File

@ -1,7 +1,7 @@
import { defineStore } from "pinia";
import {
store,
getConfig,
defineStore,
storageLocal,
responsiveStorageNameSpace
} from "../utils";

View File

@ -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

View File

@ -1,3 +1,4 @@
import { defineStore } from "pinia";
import {
type cacheType,
store,
@ -5,7 +6,6 @@ import {
ascending,
getKeyList,
filterTree,
defineStore,
constantMenus,
filterNoPermissionTree,
formatFlatteningRoutes

View File

@ -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",

View File

@ -1,8 +1,8 @@
import { defineStore } from "pinia";
import {
type userType,
store,
router,
defineStore,
resetRouter,
routerArrays,
storageLocal

View File

@ -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";

View File

@ -86,7 +86,8 @@ html.dark {
background: var(--el-bg-color) !important;
}
.app-main {
.app-main,
.app-main-nofixed-header {
background: #020409 !important;
}

View File

@ -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>

View File

@ -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>

View File

@ -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 }) => {