From 1606dbd76f64bb1dd2ea3e8876341528293c7ea5 Mon Sep 17 00:00:00 2001
From: 疯狂的狮子Li <15040126243@163.com>
Date: 星期一, 26 八月 2024 11:45:16 +0800
Subject: [PATCH] !141 发布 vue 版本 5.2.2 与 cloud 版本 2.2.1 Merge pull request !141 from 疯狂的狮子Li/dev
---
src/views/index.vue | 4
src/views/system/role/index.vue | 2
src/views/workflow/leave/index.vue | 1
src/layout/components/Navbar.vue | 2
src/store/modules/tagsView.ts | 22 +-
src/api/login.ts | 4
src/layout/index.vue | 5
src/views/system/user/authRole.vue | 4
src/views/system/oss/index.vue | 2
src/permission.ts | 1
.env.development | 4
/dev/null | 63 ---------
src/views/system/user/index.vue | 3
vite.config.ts | 56 -------
src/store/modules/permission.ts | 6
package.json | 8
src/utils/websocket.ts | 168 +++++------------------
.env.production | 4
src/plugins/tab.ts | 4
src/utils/sse.ts | 45 ++++++
src/router/index.ts | 2
src/views/system/tenantPackage/index.vue | 2
22 files changed, 132 insertions(+), 280 deletions(-)
diff --git a/.env.development b/.env.development
index 52553ff..05d6778 100644
--- a/.env.development
+++ b/.env.development
@@ -28,5 +28,5 @@
# 瀹㈡埛绔痠d
VITE_APP_CLIENT_ID = 'e5cd7e4891bf95d1d19206ce24a7b32e'
-# websocket 寮�鍏�
-VITE_APP_WEBSOCKET = true
+# websocket 寮�鍏� 榛樿浣跨敤sse鎺ㄩ��
+VITE_APP_WEBSOCKET = false
diff --git a/.env.production b/.env.production
index bf9e644..c6b1f85 100644
--- a/.env.production
+++ b/.env.production
@@ -31,5 +31,5 @@
# 瀹㈡埛绔痠d
VITE_APP_CLIENT_ID = 'e5cd7e4891bf95d1d19206ce24a7b32e'
-# websocket 寮�鍏�
-VITE_APP_WEBSOCKET = true
+# websocket 寮�鍏� 榛樿浣跨敤sse鎺ㄩ��
+VITE_APP_WEBSOCKET = false
diff --git a/package.json b/package.json
index f1c8084..48b1571 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "ruoyi-vue-plus",
- "version": "5.2.1",
+ "version": "5.2.2",
"description": "RuoYi-Vue-Plus澶氱鎴风鐞嗙郴缁�",
"author": "LionLi",
"license": "MIT",
@@ -30,7 +30,7 @@
"diagram-js": "12.3.0",
"didi": "9.0.2",
"echarts": "5.5.0",
- "element-plus": "2.7.5",
+ "element-plus": "2.7.8",
"file-saver": "2.0.5",
"fuse.js": "7.0.0",
"highlight.js": "11.9.0",
@@ -40,7 +40,7 @@
"nprogress": "0.2.0",
"pinia": "2.1.7",
"screenfull": "6.0.2",
- "vue": "3.4.25",
+ "vue": "3.4.34",
"vue-cropper": "1.1.1",
"vue-i18n": "9.10.2",
"vue-router": "4.3.2",
@@ -81,7 +81,7 @@
"unplugin-icons": "0.18.5",
"unplugin-vue-components": "0.26.0",
"unplugin-vue-setup-extend-plus": "1.0.1",
- "vite": "5.2.10",
+ "vite": "5.2.12",
"vite-plugin-compression": "0.5.1",
"vite-plugin-svg-icons": "2.0.1",
"vitest": "1.5.0",
diff --git a/src/api/login.ts b/src/api/login.ts
index b6955de..c7c291e 100644
--- a/src/api/login.ts
+++ b/src/api/login.ts
@@ -51,6 +51,10 @@
* 娉ㄩ攢
*/
export function logout() {
+ request({
+ url: '/resource/sse/close',
+ method: 'get'
+ });
return request({
url: '/auth/logout',
method: 'post'
diff --git a/src/api/workflow/nodeConfig/index.ts b/src/api/workflow/nodeConfig/index.ts
deleted file mode 100644
index 3270c17..0000000
--- a/src/api/workflow/nodeConfig/index.ts
+++ /dev/null
@@ -1,63 +0,0 @@
-import request from '@/utils/request';
-import { AxiosPromise } from 'axios';
-import { NodeConfigVO, NodeConfigForm, NodeConfigQuery } from '@/api/workflow/nodeConfig/types';
-
-/**
- * 鏌ヨ鑺傜偣閰嶇疆鍒楄〃
- * @param query
- * @returns {*}
- */
-
-export const listNodeConfig = (query?: NodeConfigQuery): AxiosPromise<NodeConfigVO[]> => {
- return request({
- url: '/workflow/nodeConfig/list',
- method: 'get',
- params: query
- });
-};
-
-/**
- * 鏌ヨ鑺傜偣閰嶇疆璇︾粏
- * @param id
- */
-export const getNodeConfig = (id: string | number): AxiosPromise<NodeConfigVO> => {
- return request({
- url: '/workflow/nodeConfig/' + id,
- method: 'get'
- });
-};
-
-/**
- * 鏂板鑺傜偣閰嶇疆
- * @param data
- */
-export const addNodeConfig = (data: NodeConfigForm) => {
- return request({
- url: '/workflow/nodeConfig',
- method: 'post',
- data: data
- });
-};
-
-/**
- * 淇敼鑺傜偣閰嶇疆
- * @param data
- */
-export const updateNodeConfig = (data: NodeConfigForm) => {
- return request({
- url: '/workflow/nodeConfig',
- method: 'put',
- data: data
- });
-};
-
-/**
- * 鍒犻櫎鑺傜偣閰嶇疆
- * @param id
- */
-export const delNodeConfig = (id: string | number | Array<string | number>) => {
- return request({
- url: '/workflow/nodeConfig/' + id,
- method: 'delete'
- });
-};
diff --git a/src/layout/components/Navbar.vue b/src/layout/components/Navbar.vue
index fd4eb8c..c2ed0b6 100644
--- a/src/layout/components/Navbar.vue
+++ b/src/layout/components/Navbar.vue
@@ -128,6 +128,7 @@
dynamic.value = true;
proxy?.$tab.closeAllPage();
proxy?.$router.push('/');
+ proxy?.$tab.refreshPage();
}
};
@@ -136,6 +137,7 @@
dynamic.value = false;
proxy?.$tab.closeAllPage();
proxy?.$router.push('/');
+ proxy?.$tab.refreshPage();
};
/** 绉熸埛鍒楄〃 */
diff --git a/src/layout/index.vue b/src/layout/index.vue
index 29fb5ff..0919aad 100644
--- a/src/layout/index.vue
+++ b/src/layout/index.vue
@@ -27,6 +27,7 @@
import useAppStore from '@/store/modules/app';
import useSettingsStore from '@/store/modules/settings';
import { initWebSocket } from '@/utils/websocket';
+import { initSSE } from "@/utils/sse";
const settingsStore = useSettingsStore();
const theme = computed(() => settingsStore.theme);
@@ -71,6 +72,10 @@
initWebSocket(protocol + window.location.host + import.meta.env.VITE_APP_BASE_API + '/resource/websocket');
});
+onMounted(() => {
+ initSSE(import.meta.env.VITE_APP_BASE_API + '/resource/sse')
+});
+
const handleClickOutside = () => {
useAppStore().closeSideBar({ withoutAnimation: false });
};
diff --git a/src/permission.ts b/src/permission.ts
index 6771f8c..125438b 100644
--- a/src/permission.ts
+++ b/src/permission.ts
@@ -40,6 +40,7 @@
router.addRoute(route); // 鍔ㄦ�佹坊鍔犲彲璁块棶璺敱琛�
}
});
+ // @ts-ignore
next({ path: to.path, replace: true, params: to.params, query: to.query, hash: to.hash, name: to.name as string }); // hack鏂规硶 纭繚addRoutes宸插畬鎴�
}
} else {
diff --git a/src/plugins/tab.ts b/src/plugins/tab.ts
index dd240cd..86421a8 100644
--- a/src/plugins/tab.ts
+++ b/src/plugins/tab.ts
@@ -1,5 +1,5 @@
import router from '@/router';
-import { RouteLocationMatched, RouteLocationNormalized } from 'vue-router';
+import {RouteLocationMatched, RouteLocationNormalized, RouteLocationRaw} from 'vue-router';
import useTagsViewStore from '@/store/modules/tagsView';
export default {
@@ -41,7 +41,7 @@
});
},
// 鍏抽棴褰撳墠tab椤电锛屾墦寮�鏂伴〉绛�
- closeOpenPage(obj: RouteLocationNormalized): void {
+ closeOpenPage(obj: RouteLocationRaw): void {
useTagsViewStore().delView(router.currentRoute.value);
if (obj !== undefined) {
router.push(obj);
diff --git a/src/router/index.ts b/src/router/index.ts
index 438708f..86e0092 100644
--- a/src/router/index.ts
+++ b/src/router/index.ts
@@ -159,7 +159,7 @@
path: 'index/:tableId(\\d+)',
component: () => import('@/views/tool/gen/editTable.vue'),
name: 'GenEdit',
- meta: { title: '淇敼鐢熸垚閰嶇疆', activeMenu: '/tool/gen', icon: '' }
+ meta: { title: '淇敼鐢熸垚閰嶇疆', activeMenu: '/tool/gen', icon: '', noCache: true }
}
]
},
diff --git a/src/store/modules/permission.ts b/src/store/modules/permission.ts
index 2e719ba..e90df4c 100644
--- a/src/store/modules/permission.ts
+++ b/src/store/modules/permission.ts
@@ -21,13 +21,13 @@
const sidebarRouters = ref<RouteRecordRaw[]>([]);
const getRoutes = (): RouteRecordRaw[] => {
- return routes.value;
+ return routes.value as RouteRecordRaw[];
};
const getSidebarRoutes = (): RouteRecordRaw[] => {
- return sidebarRouters.value;
+ return sidebarRouters.value as RouteRecordRaw[];
};
const getTopbarRoutes = (): RouteRecordRaw[] => {
- return topbarRouters.value;
+ return topbarRouters.value as RouteRecordRaw[];
};
const setRoutes = (newRoutes: RouteRecordRaw[]): void => {
diff --git a/src/store/modules/tagsView.ts b/src/store/modules/tagsView.ts
index b9502eb..9756ac2 100644
--- a/src/store/modules/tagsView.ts
+++ b/src/store/modules/tagsView.ts
@@ -6,10 +6,10 @@
const iframeViews = ref<RouteLocationNormalized[]>([]);
const getVisitedViews = (): RouteLocationNormalized[] => {
- return visitedViews.value;
+ return visitedViews.value as RouteLocationNormalized[];
};
const getIframeViews = (): RouteLocationNormalized[] => {
- return iframeViews.value;
+ return iframeViews.value as RouteLocationNormalized[];
};
const getCachedViews = (): string[] => {
return cachedViews.value;
@@ -31,7 +31,7 @@
const delIframeView = (view: RouteLocationNormalized): Promise<RouteLocationNormalized[]> => {
return new Promise((resolve) => {
iframeViews.value = iframeViews.value.filter((item: RouteLocationNormalized) => item.path !== view.path);
- resolve([...iframeViews.value]);
+ resolve([...iframeViews.value as RouteLocationNormalized[]]);
});
};
const addVisitedView = (view: RouteLocationNormalized): void => {
@@ -54,7 +54,7 @@
delCachedView(view);
}
resolve({
- visitedViews: [...visitedViews.value],
+ visitedViews: [...visitedViews.value as RouteLocationNormalized[]],
cachedViews: [...cachedViews.value]
});
});
@@ -68,7 +68,7 @@
break;
}
}
- resolve([...visitedViews.value]);
+ resolve([...visitedViews.value as RouteLocationNormalized[]]);
});
};
const delCachedView = (view?: RouteLocationNormalized): Promise<string[]> => {
@@ -92,7 +92,7 @@
delOthersVisitedViews(view);
delOthersCachedViews(view);
resolve({
- visitedViews: [...visitedViews.value],
+ visitedViews: [...visitedViews.value as RouteLocationNormalized[]],
cachedViews: [...cachedViews.value]
});
});
@@ -103,7 +103,7 @@
visitedViews.value = visitedViews.value.filter((v: RouteLocationNormalized) => {
return v.meta?.affix || v.path === view.path;
});
- resolve([...visitedViews.value]);
+ resolve([...visitedViews.value as RouteLocationNormalized[]]);
});
};
const delOthersCachedViews = (view: RouteLocationNormalized): Promise<string[]> => {
@@ -124,7 +124,7 @@
delAllVisitedViews();
delAllCachedViews();
resolve({
- visitedViews: [...visitedViews.value],
+ visitedViews: [...visitedViews.value as RouteLocationNormalized[]],
cachedViews: [...cachedViews.value]
});
});
@@ -132,7 +132,7 @@
const delAllVisitedViews = (): Promise<RouteLocationNormalized[]> => {
return new Promise((resolve) => {
visitedViews.value = visitedViews.value.filter((tag: RouteLocationNormalized) => tag.meta?.affix);
- resolve([...visitedViews.value]);
+ resolve([...visitedViews.value as RouteLocationNormalized[]]);
});
};
@@ -167,7 +167,7 @@
}
return false;
});
- resolve([...visitedViews.value]);
+ resolve([...visitedViews.value as RouteLocationNormalized[]]);
});
};
const delLeftTags = (view: RouteLocationNormalized): Promise<RouteLocationNormalized[]> => {
@@ -186,7 +186,7 @@
}
return false;
});
- resolve([...visitedViews.value]);
+ resolve([...visitedViews.value as RouteLocationNormalized[]]);
});
};
diff --git a/src/utils/sse.ts b/src/utils/sse.ts
new file mode 100644
index 0000000..a08f282
--- /dev/null
+++ b/src/utils/sse.ts
@@ -0,0 +1,45 @@
+import { getToken } from '@/utils/auth';
+import { ElNotification } from 'element-plus';
+import useNoticeStore from '@/store/modules/notice';
+
+let message = '';
+
+// 鍒濆鍖�
+export const initSSE = (url: any) => {
+ url = url + '?Authorization=Bearer ' + getToken() + '&clientid=' + import.meta.env.VITE_APP_CLIENT_ID
+ const {
+ data,
+ error
+ } = useEventSource(url, [], {
+ autoReconnect: {
+ retries: 10,
+ delay: 3000,
+ onFailed() {
+ console.log('Failed to connect after 10 retries')
+ },
+ }
+ });
+
+ watch(error, () => {
+ console.log('SSE connection error:', error.value)
+ error.value = null;
+ });
+
+ watch(data, () => {
+ if (!data.value) return;
+ useNoticeStore().addNotice({
+ message: data.value,
+ read: false,
+ time: new Date().toLocaleString()
+ });
+ ElNotification({
+ title: '娑堟伅',
+ message: data.value,
+ type: 'success',
+ duration: 3000
+ });
+ data.value = null;
+ });
+};
+
+
diff --git a/src/utils/websocket.ts b/src/utils/websocket.ts
index d4dd8a8..ade13ef 100644
--- a/src/utils/websocket.ts
+++ b/src/utils/websocket.ts
@@ -1,139 +1,51 @@
-/**
- * @module initWebSocket 鍒濆鍖�
- * @module websocketonopen 杩炴帴鎴愬姛
- * @module websocketonerror 杩炴帴澶辫触
- * @module websocketclose 鏂紑杩炴帴
- * @module resetHeart 閲嶇疆蹇冭烦
- * @module sendSocketHeart 蹇冭烦鍙戦��
- * @module reconnect 閲嶈繛
- * @module sendMsg 鍙戦�佹暟鎹�
- * @module websocketonmessage 鎺ユ敹鏁版嵁
- * @module test 娴嬭瘯鏀跺埌娑堟伅浼犻��
- * @description socket 閫氫俊
- * @param {any} url socket鍦板潃
- * @param {any} websocket websocket 瀹炰緥
- * @param {any} heartTime 蹇冭烦瀹氭椂鍣ㄥ疄渚�
- * @param {number} socketHeart 蹇冭烦娆℃暟
- * @param {number} HeartTimeOut 蹇冭烦瓒呮椂鏃堕棿
- * @param {number} socketError 閿欒娆℃暟
- */
-
import { getToken } from '@/utils/auth';
import { ElNotification } from 'element-plus';
import useNoticeStore from '@/store/modules/notice';
-
-let socketUrl: any = ''; // socket鍦板潃
-let websocket: any = null; // websocket 瀹炰緥
-let heartTime: any = null; // 蹇冭烦瀹氭椂鍣ㄥ疄渚�
-let socketHeart = 0 as number; // 蹇冭烦娆℃暟
-const HeartTimeOut = 10000; // 蹇冭烦瓒呮椂鏃堕棿 10000 = 10s
-let socketError = 0 as number; // 閿欒娆℃暟
// 鍒濆鍖杝ocket
export const initWebSocket = (url: any) => {
if (import.meta.env.VITE_APP_WEBSOCKET === 'false') {
return;
}
- socketUrl = url;
- // 鍒濆鍖� websocket
- websocket = new WebSocket(url + '?Authorization=Bearer ' + getToken() + '&clientid=' + import.meta.env.VITE_APP_CLIENT_ID);
- websocketonopen();
- websocketonmessage();
- websocketonerror();
- websocketclose();
- sendSocketHeart();
- return websocket;
-};
-
-// socket 杩炴帴鎴愬姛
-export const websocketonopen = () => {
- websocket.onopen = function () {
- console.log('杩炴帴 websocket 鎴愬姛');
- resetHeart();
- };
-};
-
-// socket 杩炴帴澶辫触
-export const websocketonerror = () => {
- websocket.onerror = function (e: any) {
- console.log('杩炴帴 websocket 澶辫触', e);
- };
-};
-
-// socket 鏂紑閾炬帴
-export const websocketclose = () => {
- websocket.onclose = function (e: any) {
- console.log('鏂紑杩炴帴', e);
- };
-};
-
-// socket 閲嶇疆蹇冭烦
-export const resetHeart = () => {
- socketHeart = 0;
- socketError = 0;
- clearInterval(heartTime);
- sendSocketHeart();
-};
-
-// socket蹇冭烦鍙戦��
-export const sendSocketHeart = () => {
- heartTime = setInterval(() => {
- // 濡傛灉杩炴帴姝e父鍒欏彂閫佸績璺�
- if (websocket.readyState == 1) {
- // if (socketHeart <= 30) {
- websocket.send(
- JSON.stringify({
- type: 'ping'
- })
- );
- socketHeart = socketHeart + 1;
- } else {
- // 閲嶈繛
- reconnect();
+ url = url + '?Authorization=Bearer ' + getToken() + '&clientid=' + import.meta.env.VITE_APP_CLIENT_ID
+ useWebSocket(url, {
+ autoReconnect: {
+ // 閲嶈繛鏈�澶ф鏁�
+ retries: 3,
+ // 閲嶈繛闂撮殧
+ delay: 1000,
+ onFailed() {
+ console.log('websocket閲嶈繛澶辫触');
+ },
+ },
+ heartbeat: {
+ message: JSON.stringify({type: 'ping'}),
+ // 鍙戦�佸績璺崇殑闂撮殧
+ interval: 10000,
+ // 鎺ユ敹鍒板績璺硆esponse鐨勮秴鏃舵椂闂�
+ pongTimeout: 2000,
+ },
+ onConnected() {
+ console.log('websocket宸茬粡杩炴帴');
+ },
+ onDisconnected() {
+ console.log('websocket宸茬粡鏂紑');
+ },
+ onMessage: (_, e) => {
+ if (e.data.indexOf('ping') > 0) {
+ return;
+ }
+ useNoticeStore().addNotice({
+ message: e.data,
+ read: false,
+ time: new Date().toLocaleString()
+ });
+ ElNotification({
+ title: '娑堟伅',
+ message: e.data,
+ type: 'success',
+ duration: 3000
+ });
}
- }, HeartTimeOut);
-};
-
-// socket閲嶈繛
-export const reconnect = () => {
- if (socketError <= 2) {
- clearInterval(heartTime);
- initWebSocket(socketUrl);
- socketError = socketError + 1;
- // eslint-disable-next-line prettier/prettier
- console.log('socket閲嶈繛', socketError);
- } else {
- // eslint-disable-next-line prettier/prettier
- console.log('閲嶈瘯娆℃暟宸茬敤瀹�');
- clearInterval(heartTime);
- }
-};
-
-// socket 鍙戦�佹暟鎹�
-export const sendMsg = (data: any) => {
- websocket.send(data);
-};
-
-// socket 鎺ユ敹鏁版嵁
-export const websocketonmessage = () => {
- websocket.onmessage = function (e: any) {
- if (e.data.indexOf('heartbeat') > 0) {
- resetHeart();
- }
- if (e.data.indexOf('ping') > 0) {
- return;
- }
- useNoticeStore().addNotice({
- message: e.data,
- read: false,
- time: new Date().toLocaleString()
- });
- ElNotification({
- title: '娑堟伅',
- message: e.data,
- type: 'success',
- duration: 3000
- });
- return e.data;
- };
+ });
};
diff --git a/src/views/index.vue b/src/views/index.vue
index aa60a9b..7bd19e4 100644
--- a/src/views/index.vue
+++ b/src/views/index.vue
@@ -33,7 +33,7 @@
* 閮ㄧ讲鏂瑰紡 Docker 瀹瑰櫒缂栨帓 涓�閿儴缃蹭笟鍔¢泦缇�<br />
* 鍥介檯鍖� SpringMessage Spring鏍囧噯鍥介檯鍖栨柟妗�<br />
</p>
- <p><b>褰撳墠鐗堟湰:</b> <span>v5.2.1</span></p>
+ <p><b>褰撳墠鐗堟湰:</b> <span>v5.2.2</span></p>
<p>
<el-tag type="danger">¥鍏嶈垂寮�婧�</el-tag>
</p>
@@ -77,7 +77,7 @@
* 鍒嗗竷寮忕洃鎺� Prometheus銆丟rafana 鍏ㄦ柟浣嶆�ц兘鐩戞帶<br />
* 鍏朵綑涓� Vue 鐗堟湰涓�鑷�<br />
</p>
- <p><b>褰撳墠鐗堟湰:</b> <span>v2.2.0</span></p>
+ <p><b>褰撳墠鐗堟湰:</b> <span>v2.2.1</span></p>
<p>
<el-tag type="danger">¥鍏嶈垂寮�婧�</el-tag>
</p>
diff --git a/src/views/system/oss/index.vue b/src/views/system/oss/index.vue
index a6e60e8..d057c23 100644
--- a/src/views/system/oss/index.vue
+++ b/src/views/system/oss/index.vue
@@ -60,7 +60,7 @@
>
</el-col>
<el-col :span="1.5">
- <el-button v-hasPermi="['system:oss:list']" type="info" plain icon="Operation" @click="handleOssConfig">閰嶇疆绠$悊</el-button>
+ <el-button v-hasPermi="['system:ossConfig:list']" type="info" plain icon="Operation" @click="handleOssConfig">閰嶇疆绠$悊</el-button>
</el-col>
<right-toolbar v-model:showSearch="showSearch" @query-table="getList"></right-toolbar>
</el-row>
diff --git a/src/views/system/role/index.vue b/src/views/system/role/index.vue
index 0b6ba00..f2299d7 100644
--- a/src/views/system/role/index.vue
+++ b/src/views/system/role/index.vue
@@ -18,7 +18,7 @@
<el-form-item label="鍒涘缓鏃堕棿" style="width: 308px">
<el-date-picker
v-model="dateRange"
- value-format="YYYY-MM-DD"
+ value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
range-separator="-"
start-placeholder="寮�濮嬫棩鏈�"
diff --git a/src/views/system/tenantPackage/index.vue b/src/views/system/tenantPackage/index.vue
index 55cc7d7..30c9455 100644
--- a/src/views/system/tenantPackage/index.vue
+++ b/src/views/system/tenantPackage/index.vue
@@ -321,7 +321,7 @@
/** 瀵煎嚭鎸夐挳鎿嶄綔 */
const handleExport = () => {
proxy?.download(
- 'system/tenantPackage/export',
+ 'system/package/export',
{
...queryParams.value
},
diff --git a/src/views/system/user/authRole.vue b/src/views/system/user/authRole.vue
index 87d2334..fe119ae 100644
--- a/src/views/system/user/authRole.vue
+++ b/src/views/system/user/authRole.vue
@@ -80,8 +80,8 @@
/** 鍗曞嚮閫変腑琛屾暟鎹� */
const clickRow = (row: RoleVO) => {
- // ele鐨勬柟娉曟湁闂锛宻elected搴旇涓哄彲閫夊弬鏁�
- tableRef.value?.toggleRowSelection(row, false);
+ row.flag = !row.flag
+ tableRef.value?.toggleRowSelection(row, row.flag);
};
/** 澶氶�夋閫変腑鏁版嵁 */
const handleSelectionChange = (selection: RoleVO[]) => {
diff --git a/src/views/system/user/index.vue b/src/views/system/user/index.vue
index c1bdcf9..46bffd2 100644
--- a/src/views/system/user/index.vue
+++ b/src/views/system/user/index.vue
@@ -39,11 +39,12 @@
<el-form-item label="鍒涘缓鏃堕棿" style="width: 308px">
<el-date-picker
v-model="dateRange"
- value-format="YYYY-MM-DD"
+ value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
range-separator="-"
start-placeholder="寮�濮嬫棩鏈�"
end-placeholder="缁撴潫鏃ユ湡"
+ :default-time="[new Date(2000, 1, 1, 0, 0, 0), new Date(2000, 1, 1, 23, 59, 59)]"
></el-date-picker>
</el-form-item>
<el-form-item>
diff --git a/src/views/workflow/leave/index.vue b/src/views/workflow/leave/index.vue
index d9c50c4..f413136 100644
--- a/src/views/workflow/leave/index.vue
+++ b/src/views/workflow/leave/index.vue
@@ -176,7 +176,6 @@
/** 鏂板鎸夐挳鎿嶄綔 */
const handleAdd = () => {
proxy.$tab.closePage(proxy.$route);
- proxy.$router.push(`/workflow/leaveEdit/index/add/add`);
proxy.$router.push({
path: `/workflow/leaveEdit/index`,
query: {
diff --git a/vite.config.ts b/vite.config.ts
index f8b1200..97c8d9d 100644
--- a/vite.config.ts
+++ b/vite.config.ts
@@ -75,61 +75,7 @@
'diagram-js/lib/draw/BaseRenderer',
'tiny-svg',
'image-conversion',
-
- 'element-plus/es/components/text/style/css',
- 'element-plus/es/components/collapse-item/style/css',
- 'element-plus/es/components/collapse/style/css',
- 'element-plus/es/components/space/style/css',
- 'element-plus/es/components/container/style/css',
- 'element-plus/es/components/aside/style/css',
- 'element-plus/es/components/main/style/css',
- 'element-plus/es/components/header/style/css',
- 'element-plus/es/components/button-group/style/css',
- 'element-plus/es/components/radio-button/style/css',
- 'element-plus/es/components/checkbox-group/style/css',
- 'element-plus/es/components/form/style/css',
- 'element-plus/es/components/form-item/style/css',
- 'element-plus/es/components/button/style/css',
- 'element-plus/es/components/input/style/css',
- 'element-plus/es/components/input-number/style/css',
- 'element-plus/es/components/switch/style/css',
- 'element-plus/es/components/upload/style/css',
- 'element-plus/es/components/menu/style/css',
- 'element-plus/es/components/col/style/css',
- 'element-plus/es/components/icon/style/css',
- 'element-plus/es/components/row/style/css',
- 'element-plus/es/components/tag/style/css',
- 'element-plus/es/components/dialog/style/css',
- 'element-plus/es/components/loading/style/css',
- 'element-plus/es/components/radio/style/css',
- 'element-plus/es/components/radio-group/style/css',
- 'element-plus/es/components/popover/style/css',
- 'element-plus/es/components/scrollbar/style/css',
- 'element-plus/es/components/tooltip/style/css',
- 'element-plus/es/components/dropdown/style/css',
- 'element-plus/es/components/dropdown-menu/style/css',
- 'element-plus/es/components/dropdown-item/style/css',
- 'element-plus/es/components/sub-menu/style/css',
- 'element-plus/es/components/menu-item/style/css',
- 'element-plus/es/components/divider/style/css',
- 'element-plus/es/components/card/style/css',
- 'element-plus/es/components/link/style/css',
- 'element-plus/es/components/breadcrumb/style/css',
- 'element-plus/es/components/breadcrumb-item/style/css',
- 'element-plus/es/components/table/style/css',
- 'element-plus/es/components/tree-select/style/css',
- 'element-plus/es/components/table-column/style/css',
- 'element-plus/es/components/select/style/css',
- 'element-plus/es/components/option/style/css',
- 'element-plus/es/components/pagination/style/css',
- 'element-plus/es/components/tree/style/css',
- 'element-plus/es/components/alert/style/css',
- 'element-plus/es/components/checkbox/style/css',
- 'element-plus/es/components/date-picker/style/css',
- 'element-plus/es/components/transfer/style/css',
- 'element-plus/es/components/tabs/style/css',
- 'element-plus/es/components/image/style/css',
- 'element-plus/es/components/tab-pane/style/css'
+ 'element-plus/es/components/**/css'
]
}
};
--
Gitblit v1.9.3