}
*/
const errorHandler = (error: any) => {
-
+
if (error.response) {
const data = error.response.data
const status = error.response.status
@@ -257,4 +257,4 @@ export default {
remove,
getStream,
postStream
-}
\ No newline at end of file
+}
diff --git a/src/views/iframe/index.vue b/src/views/iframe/index.vue
index 677825d7..54b16259 100644
--- a/src/views/iframe/index.vue
+++ b/src/views/iframe/index.vue
@@ -20,19 +20,29 @@ const handle = async (appId: string, url: string) => {
const res = await getAppInfo_api(appId);
let menuUrl: any = url;
if (res.status === 200) {
- if (res.result.page.routeType === 'hash') {
- menuUrl = `#${url}`;
+ const result = res.result
+ if (result.page.routeType === 'hash') {
+ menuUrl = url.startsWith('/') ? `#${url}` : `#/${url}`;
}
- if (res.result.provider === 'internal-standalone') {
- const urlStandalone = `${res.result.page.baseUrl}/api/application/sso/${appId}/login?redirect=${menuUrl}?layout=false`;
+
+ if (result.page.parameters) {
+ const params = new URLSearchParams()
+ result.page.parameters.forEach((item: any) => {
+ params.set(item.key,item.value)
+ })
+ menuUrl += `?${params.toString()}`
+ }
+
+ if (result.provider === 'internal-standalone') {
+ const urlStandalone = `${result.page.baseUrl}/api/application/sso/${appId}/login?redirect=${menuUrl}?layout=false`;
iframeUrl.value = urlStandalone;
- } else if (res.result.provider === 'internal-integrated') {
+ } else if (result.provider === 'internal-integrated') {
const tokenUrl = `${
- res.result.page.baseUrl
+ result.page.baseUrl
}/${menuUrl}?layout=false&X-Access-Token=${LocalStore.get(TOKEN_KEY)}`;
iframeUrl.value = tokenUrl;
} else {
- const urlOther = `${res.result.page.baseUrl}/${menuUrl}`;
+ const urlOther = `${result.page.baseUrl}/${menuUrl}`;
iframeUrl.value = urlOther;
}
}
diff --git a/src/views/system/Apply/Save/components/EditForm.vue b/src/views/system/Apply/Save/components/EditForm.vue
index 7d47f61d..7d3ca1bf 100644
--- a/src/views/system/Apply/Save/components/EditForm.vue
+++ b/src/views/system/Apply/Save/components/EditForm.vue
@@ -144,12 +144,7 @@
@@ -1397,12 +1392,20 @@
+
@@ -1420,6 +1423,7 @@ import {
import FormLabel from './FormLabel.vue';
import RequestTable from './RequestTable.vue';
import MenuDialog from '../../componenets/MenuDialog.vue';
+import ThirdMenu from '../../componenets/ThirdMenu.vue';
import { getImage, onlyMessage } from '@/utils/comm';
import type { formType, dictType, optionsType, applyType } from '../typing';
import { getRoleList_api } from '@/api/system/user';
@@ -1573,7 +1577,7 @@ const getType = async () => {
typeOptions.value = arr;
}
}
-
+
onMounted(async () => {
await getType();
getRoleIdList();
diff --git a/src/views/system/Apply/componenets/ThirdMenu.vue b/src/views/system/Apply/componenets/ThirdMenu.vue
new file mode 100644
index 00000000..31993ef6
--- /dev/null
+++ b/src/views/system/Apply/componenets/ThirdMenu.vue
@@ -0,0 +1,150 @@
+
+
+
+ 当前集成菜单
+
+
+
+
+
+
+
+
+
diff --git a/src/views/system/Apply/componenets/util.ts b/src/views/system/Apply/componenets/util.ts
new file mode 100644
index 00000000..fa561e8c
--- /dev/null
+++ b/src/views/system/Apply/componenets/util.ts
@@ -0,0 +1,27 @@
+export const getCheckByTree = (data: any[]): string[] => {
+ let keys: string[] = []
+ if (data.length) {
+ data.forEach(item => {
+ if (item.children) {
+ keys = [...getCheckByTree(item.children), ...keys]
+ } else {
+ keys.push(item.code)
+ }
+ })
+ }
+ return keys
+}
+
+export const filterTree = (data: any[], ids: string[]) => {
+ return data?.filter(item => {
+ delete item.id
+ item.options = {show: true}
+ if (ids.includes(item.code)) {
+ return true
+ } else if (item.children) {
+ item.children = filterTree(item.children, ids)
+ return item.children.length >0
+ }
+ return false
+ }) || []
+}
diff --git a/src/views/system/Apply/index.vue b/src/views/system/Apply/index.vue
index bff39a0c..486a395c 100644
--- a/src/views/system/Apply/index.vue
+++ b/src/views/system/Apply/index.vue
@@ -183,12 +183,19 @@
+ { dialogVisible = false; table.refresh}"
+ />
@@ -197,6 +204,7 @@