mirror of
				https://github.com/pure-admin/vue-pure-admin.git
				synced 2025-11-03 13:44:47 +08:00 
			
		
		
		
	Merge branch 'main' into gitee
This commit is contained in:
		
						commit
						e6775a1b05
					
				@ -1,3 +1,23 @@
 | 
			
		||||
# 3.9.5 (2022-12-13)
 | 
			
		||||
 | 
			
		||||
### ✔️ refactor
 | 
			
		||||
 | 
			
		||||
- completely removed `lodash` and its related libraries
 | 
			
		||||
  [Click here to see Why Removed? How to integrate it yourself? ](https://yiming_chang.gitee.io/pure-admin-doc/pages/FAQ/#%E5%B9%B3%E5%8F%B0%E5%9C%A8-v3-9-5-%E7 %89%88%E6%9C%AC%E5%AE%8C%E5%85%A8%E7%A7%BB%E9%99%A4%E4%BA%86-lodash-%E5%92%8C% E5%85%B6%E7%9B%B8%E5%85%B3%E5%BA%93-%E4%B8%BA%E4%BB%80%E4%B9%88%E7%A7%BB%E9 %99%A4-%E5%A6%82%E4%BD%95%E8%87%AA%E8%A1%8C%E9%9B%86%E6%88%90)
 | 
			
		||||
 | 
			
		||||
### 🎫 Feat
 | 
			
		||||
 | 
			
		||||
- Add `@pureadmin/table` table dynamic column example
 | 
			
		||||
 | 
			
		||||
### 🐞 Bug fixes
 | 
			
		||||
 | 
			
		||||
- Fix dynamic route `rank` issue
 | 
			
		||||
- Fix dark theme styling issues
 | 
			
		||||
 | 
			
		||||
### 🍏 Perf
 | 
			
		||||
 | 
			
		||||
- optimize the route `rank`, when `rank` does not exist, it will be created automatically according to the order, the home page route will always be the first
 | 
			
		||||
 | 
			
		||||
# 3.9.4 (2022-12-05)
 | 
			
		||||
 | 
			
		||||
### ✔️ refactor
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										20
									
								
								CHANGELOG.md
									
									
									
									
									
								
							
							
						
						
									
										20
									
								
								CHANGELOG.md
									
									
									
									
									
								
							@ -1,3 +1,23 @@
 | 
			
		||||
# 3.9.5 (2022-12-13)
 | 
			
		||||
 | 
			
		||||
### ✔️ refactor
 | 
			
		||||
 | 
			
		||||
- completely removed `lodash` and its related libraries
 | 
			
		||||
  [Click here to see Why Removed? How to integrate it yourself? ](https://yiming_chang.gitee.io/pure-admin-doc/pages/FAQ/#%E5%B9%B3%E5%8F%B0%E5%9C%A8-v3-9-5-%E7 %89%88%E6%9C%AC%E5%AE%8C%E5%85%A8%E7%A7%BB%E9%99%A4%E4%BA%86-lodash-%E5%92%8C% E5%85%B6%E7%9B%B8%E5%85%B3%E5%BA%93-%E4%B8%BA%E4%BB%80%E4%B9%88%E7%A7%BB%E9 %99%A4-%E5%A6%82%E4%BD%95%E8%87%AA%E8%A1%8C%E9%9B%86%E6%88%90)
 | 
			
		||||
 | 
			
		||||
### 🎫 Feat
 | 
			
		||||
 | 
			
		||||
- Add `@pureadmin/table` table dynamic column example
 | 
			
		||||
 | 
			
		||||
### 🐞 Bug fixes
 | 
			
		||||
 | 
			
		||||
- Fix dynamic route `rank` issue
 | 
			
		||||
- Fix dark theme styling issues
 | 
			
		||||
 | 
			
		||||
### 🍏 Perf
 | 
			
		||||
 | 
			
		||||
- optimize the route `rank`, when `rank` does not exist, it will be created automatically according to the order, the home page route will always be the first
 | 
			
		||||
 | 
			
		||||
# 3.9.4 (2022-12-05)
 | 
			
		||||
 | 
			
		||||
### ✔️ refactor
 | 
			
		||||
 | 
			
		||||
@ -1,3 +1,23 @@
 | 
			
		||||
# 3.9.5 (2022-12-13)
 | 
			
		||||
 | 
			
		||||
### ✔️ refactor
 | 
			
		||||
 | 
			
		||||
- 完全移除了 `lodash` 和其相关库
 | 
			
		||||
  [点击此处查看为什么移除?如何自行集成?](https://yiming_chang.gitee.io/pure-admin-doc/pages/FAQ/#%E5%B9%B3%E5%8F%B0%E5%9C%A8-v3-9-5-%E7%89%88%E6%9C%AC%E5%AE%8C%E5%85%A8%E7%A7%BB%E9%99%A4%E4%BA%86-lodash-%E5%92%8C%E5%85%B6%E7%9B%B8%E5%85%B3%E5%BA%93-%E4%B8%BA%E4%BB%80%E4%B9%88%E7%A7%BB%E9%99%A4-%E5%A6%82%E4%BD%95%E8%87%AA%E8%A1%8C%E9%9B%86%E6%88%90)
 | 
			
		||||
 | 
			
		||||
### 🎫 Feat
 | 
			
		||||
 | 
			
		||||
- 添加 `@pureadmin/table` 表格动态列示例
 | 
			
		||||
 | 
			
		||||
### 🐞 Bug fixes
 | 
			
		||||
 | 
			
		||||
- 修复动态路由 `rank` 问题
 | 
			
		||||
- 修复暗黑主题样式问题
 | 
			
		||||
 | 
			
		||||
### 🍏 Perf
 | 
			
		||||
 | 
			
		||||
- 优化路由 `rank` ,当 `rank` 不存在时,根据顺序自动创建,首页路由永远在第一位
 | 
			
		||||
 | 
			
		||||
# 3.9.4 (2022-12-05)
 | 
			
		||||
 | 
			
		||||
### ✔️ refactor
 | 
			
		||||
 | 
			
		||||
@ -7,7 +7,7 @@ import { Plugin as importToCDN } from "vite-plugin-cdn-import";
 | 
			
		||||
 * 注意:上面提到的仅限外网使用也不是完全肯定的,如果你们公司内网部署的有相关js、css文件,也可以将下面配置对应改一下,整一套内网版cdn
 | 
			
		||||
 */
 | 
			
		||||
export const cdn = importToCDN({
 | 
			
		||||
  //(prodUrl解释: name: 对应下面modules的name,version: 自动读取本地package.json中dependencies依赖中对应包的版本号,path: 对应下面modules的path)
 | 
			
		||||
  //(prodUrl解释: name: 对应下面modules的name,version: 自动读取本地package.json中dependencies依赖中对应包的版本号,path: 对应下面modules的path,当然也可写完整路径,会替换prodUrl)
 | 
			
		||||
  prodUrl: "https://cdn.bootcdn.net/ajax/libs/{name}/{version}/{path}",
 | 
			
		||||
  modules: [
 | 
			
		||||
    {
 | 
			
		||||
@ -56,12 +56,6 @@ export const cdn = importToCDN({
 | 
			
		||||
      name: "echarts",
 | 
			
		||||
      var: "echarts",
 | 
			
		||||
      path: "echarts.min.js"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      name: "lodash",
 | 
			
		||||
      var: "lodash",
 | 
			
		||||
      // 可写`完整路径`,会替换`prodUrl`
 | 
			
		||||
      path: "https://cdn.bootcdn.net/ajax/libs/lodash.js/4.17.21/lodash.min.js"
 | 
			
		||||
    }
 | 
			
		||||
  ]
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
@ -12,12 +12,10 @@ const include = [
 | 
			
		||||
  "axios",
 | 
			
		||||
  "pinia",
 | 
			
		||||
  "swiper",
 | 
			
		||||
  "lodash",
 | 
			
		||||
  "echarts",
 | 
			
		||||
  "intro.js",
 | 
			
		||||
  "vue-i18n",
 | 
			
		||||
  "js-cookie",
 | 
			
		||||
  "lodash-es",
 | 
			
		||||
  "cropperjs",
 | 
			
		||||
  "jsbarcode",
 | 
			
		||||
  "sortablejs",
 | 
			
		||||
@ -27,7 +25,6 @@ const include = [
 | 
			
		||||
  "vue3-danmaku",
 | 
			
		||||
  "v-contextmenu",
 | 
			
		||||
  "vue-pdf-embed",
 | 
			
		||||
  "lodash-unified",
 | 
			
		||||
  "china-area-data",
 | 
			
		||||
  "vue-json-pretty",
 | 
			
		||||
  "@logicflow/core",
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										11
									
								
								package.json
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								package.json
									
									
									
									
									
								
							@ -1,6 +1,6 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "vue-pure-admin",
 | 
			
		||||
  "version": "3.9.4",
 | 
			
		||||
  "version": "3.9.5",
 | 
			
		||||
  "private": true,
 | 
			
		||||
  "scripts": {
 | 
			
		||||
    "dev": "NODE_OPTIONS=--max-old-space-size=4096 vite",
 | 
			
		||||
@ -34,7 +34,7 @@
 | 
			
		||||
    "@logicflow/extension": "^1.1.30",
 | 
			
		||||
    "@pureadmin/descriptions": "^1.1.0",
 | 
			
		||||
    "@pureadmin/table": "^1.9.0",
 | 
			
		||||
    "@pureadmin/utils": "^1.8.2",
 | 
			
		||||
    "@pureadmin/utils": "^1.8.5",
 | 
			
		||||
    "@vueuse/core": "^9.6.0",
 | 
			
		||||
    "@vueuse/motion": "2.0.0-beta.12",
 | 
			
		||||
    "@wangeditor/editor": "^5.1.21",
 | 
			
		||||
@ -51,9 +51,6 @@
 | 
			
		||||
    "intro.js": "^6.0.0",
 | 
			
		||||
    "js-cookie": "^3.0.1",
 | 
			
		||||
    "jsbarcode": "^3.11.5",
 | 
			
		||||
    "lodash": "^4.17.21",
 | 
			
		||||
    "lodash-es": "^4.17.21",
 | 
			
		||||
    "lodash-unified": "^1.0.2",
 | 
			
		||||
    "md-editor-v3": "^2.5.0",
 | 
			
		||||
    "mitt": "^3.0.0",
 | 
			
		||||
    "mockjs": "^1.1.0",
 | 
			
		||||
@ -74,7 +71,7 @@
 | 
			
		||||
    "vue-router": "^4.1.6",
 | 
			
		||||
    "vue-types": "^4.2.1",
 | 
			
		||||
    "vue-virtual-scroller": "^2.0.0-alpha.1",
 | 
			
		||||
    "vue3-danmaku": "^1.1.0",
 | 
			
		||||
    "vue3-danmaku": "^1.2.0",
 | 
			
		||||
    "vuedraggable": "^4.1.0",
 | 
			
		||||
    "xgplayer": "^2.32.1",
 | 
			
		||||
    "xlsx": "^0.18.5"
 | 
			
		||||
@ -91,8 +88,6 @@
 | 
			
		||||
    "@types/element-resize-detector": "1.1.3",
 | 
			
		||||
    "@types/intro.js": "^5.1.0",
 | 
			
		||||
    "@types/js-cookie": "^3.0.1",
 | 
			
		||||
    "@types/lodash": "^4.14.180",
 | 
			
		||||
    "@types/lodash-es": "^4.17.6",
 | 
			
		||||
    "@types/mockjs": "^1.0.7",
 | 
			
		||||
    "@types/node": "^18.11.9",
 | 
			
		||||
    "@types/nprogress": "0.2.0",
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										953
									
								
								pnpm-lock.yaml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										953
									
								
								pnpm-lock.yaml
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@ -1,5 +1,5 @@
 | 
			
		||||
{
 | 
			
		||||
  "Version": "3.9.4",
 | 
			
		||||
  "Version": "3.9.5",
 | 
			
		||||
  "Title": "PureAdmin",
 | 
			
		||||
  "FixedHeader": true,
 | 
			
		||||
  "HiddenSideBar": false,
 | 
			
		||||
 | 
			
		||||
@ -1,5 +1,5 @@
 | 
			
		||||
<script setup lang="ts">
 | 
			
		||||
import { cloneDeep } from "lodash-unified";
 | 
			
		||||
import { cloneDeep } from "@pureadmin/utils";
 | 
			
		||||
import { IconJson } from "@/components/ReIcon/data";
 | 
			
		||||
import { ref, computed, CSSProperties, toRef, watch } from "vue";
 | 
			
		||||
type ParameterCSSProperties = (item?: string) => CSSProperties | undefined;
 | 
			
		||||
 | 
			
		||||
@ -8,10 +8,9 @@ import {
 | 
			
		||||
  defineComponent
 | 
			
		||||
} from "vue";
 | 
			
		||||
import "./index.scss";
 | 
			
		||||
import { cloneDeep } from "lodash-unified";
 | 
			
		||||
import { isString } from "@pureadmin/utils";
 | 
			
		||||
import { propTypes } from "@/utils/propTypes";
 | 
			
		||||
import { IconifyIconOffline } from "../../ReIcon";
 | 
			
		||||
import { isString, cloneDeep } from "@pureadmin/utils";
 | 
			
		||||
import QRCode, { QRCodeRenderersOptions } from "qrcode";
 | 
			
		||||
 | 
			
		||||
interface QrcodeLogo {
 | 
			
		||||
@ -97,7 +96,7 @@ export default defineComponent({
 | 
			
		||||
          width: props.width,
 | 
			
		||||
          ...options
 | 
			
		||||
        });
 | 
			
		||||
        (unref(wrapRef) as HTMLImageElement).src = url;
 | 
			
		||||
        (unref(wrapRef) as any).src = url;
 | 
			
		||||
        emit("done", url);
 | 
			
		||||
        loading.value = false;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
<script setup lang="ts">
 | 
			
		||||
import { useRouter } from "vue-router";
 | 
			
		||||
import { cloneDeep } from "lodash-unified";
 | 
			
		||||
import { cloneDeep } from "@pureadmin/utils";
 | 
			
		||||
import SearchResult from "./SearchResult.vue";
 | 
			
		||||
import SearchFooter from "./SearchFooter.vue";
 | 
			
		||||
import { deleteChildren } from "@/utils/tree";
 | 
			
		||||
 | 
			
		||||
@ -4,7 +4,7 @@ import { emitter } from "@/utils/mitt";
 | 
			
		||||
import { RouteConfigs } from "../../types";
 | 
			
		||||
import { useTags } from "../../hooks/useTag";
 | 
			
		||||
import { routerArrays } from "@/layout/types";
 | 
			
		||||
import { isEqual, isEmpty } from "lodash-unified";
 | 
			
		||||
import { isEqual, isAllEmpty } from "@pureadmin/utils";
 | 
			
		||||
import { useSettingStoreHook } from "@/store/modules/settings";
 | 
			
		||||
import { ref, watch, unref, nextTick, onBeforeMount } from "vue";
 | 
			
		||||
import { handleAliveRoute, delAliveRoutes } from "@/router/utils";
 | 
			
		||||
@ -349,7 +349,7 @@ function showMenuModel(
 | 
			
		||||
  const allRoute = multiTags.value;
 | 
			
		||||
  const routeLength = multiTags.value.length;
 | 
			
		||||
  let currentIndex = -1;
 | 
			
		||||
  if (isEmpty(query)) {
 | 
			
		||||
  if (isAllEmpty(query)) {
 | 
			
		||||
    currentIndex = allRoute.findIndex(v => v.path === currentPath);
 | 
			
		||||
  } else {
 | 
			
		||||
    currentIndex = allRoute.findIndex(v => isEqual(v.query, query));
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,5 @@
 | 
			
		||||
import { ref } from "vue";
 | 
			
		||||
import { getConfig } from "@/config";
 | 
			
		||||
import { find } from "lodash-unified";
 | 
			
		||||
import { useLayout } from "./useLayout";
 | 
			
		||||
import { themeColorsType } from "../types";
 | 
			
		||||
import { useGlobal } from "@pureadmin/utils";
 | 
			
		||||
@ -55,7 +54,7 @@ export function useDataThemeChange() {
 | 
			
		||||
    if (theme === "default" || theme === "light") {
 | 
			
		||||
      setEpThemeColor(getConfig().EpThemeColor);
 | 
			
		||||
    } else {
 | 
			
		||||
      const colors = find(themeColors.value, { themeColor: theme });
 | 
			
		||||
      const colors = themeColors.value.find(v => v.themeColor === theme);
 | 
			
		||||
      setEpThemeColor(colors.color);
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
@ -1,7 +1,6 @@
 | 
			
		||||
import "@/utils/sso";
 | 
			
		||||
import { getConfig } from "@/config";
 | 
			
		||||
import NProgress from "@/utils/progress";
 | 
			
		||||
import { findIndex } from "lodash-unified";
 | 
			
		||||
import { transformI18n } from "@/plugins/i18n";
 | 
			
		||||
import { sessionKey, type DataInfo } from "@/utils/auth";
 | 
			
		||||
import { useMultiTagsStoreHook } from "@/store/modules/multiTags";
 | 
			
		||||
@ -144,14 +143,10 @@ router.beforeEach((to: toRouteType, _from, next) => {
 | 
			
		||||
        initRouter().then((router: Router) => {
 | 
			
		||||
          if (!useMultiTagsStoreHook().getMultiTagsCache) {
 | 
			
		||||
            const { path } = to;
 | 
			
		||||
            const index = findIndex(remainingRouter, v => {
 | 
			
		||||
              return v.path == path;
 | 
			
		||||
            });
 | 
			
		||||
            const routes: any =
 | 
			
		||||
              index === -1
 | 
			
		||||
                ? router.options.routes[0].children
 | 
			
		||||
                : router.options.routes;
 | 
			
		||||
            const route = findRouteByPath(path, routes);
 | 
			
		||||
            const route = findRouteByPath(
 | 
			
		||||
              path,
 | 
			
		||||
              router.options.routes[0].children
 | 
			
		||||
            );
 | 
			
		||||
            // query、params模式路由传参数的标签页不在此处处理
 | 
			
		||||
            if (route && route.meta?.title) {
 | 
			
		||||
              useMultiTagsStoreHook().handleTags("push", {
 | 
			
		||||
 | 
			
		||||
@ -13,13 +13,14 @@ import { useTimeoutFn } from "@vueuse/core";
 | 
			
		||||
import { RouteConfigs } from "@/layout/types";
 | 
			
		||||
import {
 | 
			
		||||
  isString,
 | 
			
		||||
  cloneDeep,
 | 
			
		||||
  isAllEmpty,
 | 
			
		||||
  intersection,
 | 
			
		||||
  storageSession,
 | 
			
		||||
  isIncludeAllChildren
 | 
			
		||||
} from "@pureadmin/utils";
 | 
			
		||||
import { getConfig } from "@/config";
 | 
			
		||||
import { buildHierarchyTree } from "@/utils/tree";
 | 
			
		||||
import { cloneDeep, intersection } from "lodash-unified";
 | 
			
		||||
import { sessionKey, type DataInfo } from "@/utils/auth";
 | 
			
		||||
import { usePermissionStoreHook } from "@/store/modules/permission";
 | 
			
		||||
const IFrame = () => import("@/layout/frameView.vue");
 | 
			
		||||
 | 
			
		||||
@ -1,5 +1,5 @@
 | 
			
		||||
import REGION_DATA from "china-area-data";
 | 
			
		||||
import { cloneDeep } from "lodash-unified";
 | 
			
		||||
import { cloneDeep } from "@pureadmin/utils";
 | 
			
		||||
 | 
			
		||||
interface ProvinceData {
 | 
			
		||||
  value: string;
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user