Merge branch 'dev' of github.com:jetlinks/jetlinks-ui-vue into dev

This commit is contained in:
leiqiaochu 2023-03-30 11:32:46 +08:00
commit 77d8044cf2
6 changed files with 63 additions and 7 deletions

View File

@ -13,7 +13,7 @@ export const delApply_api = (id: string) => server.remove(`/application/${id}`)
// 获取组织列表 // 获取组织列表
export const getDepartmentList_api = (params: any) => server.get(`/organization/_all/tree`, params); export const getDepartmentList_api = (params: any) => server.get(`/organization/_all/tree`, params);
// 获取应用详情 // 获取应用详情
export const getAppInfo_api = (id: string) => server.get(`/application/${id}`); export const getAppInfo_api = (id: string) => server.get<any>(`/application/${id}`);
// 新增应用 // 新增应用
export const addApp_api = (data: object) => server.post(`/application`, data); export const addApp_api = (data: object) => server.post(`/application`, data);
// 更新应用 // 更新应用

View File

@ -265,7 +265,7 @@ const unBind = (id: string) => {
}; };
const clickBind = (id: string) => { const clickBind = (id: string) => {
window.open( window.open(
`${location.host}${BASE_API_PATH}/application/sso/${id}/login?autoCreateUser=false`, `${BASE_API_PATH}/application/sso/${id}/login?autoCreateUser=false`,
); );
localStorage.setItem('onBind', 'false'); localStorage.setItem('onBind', 'false');
localStorage.setItem('onLogin', 'yes'); localStorage.setItem('onLogin', 'yes');

View File

@ -6,7 +6,7 @@
<span>精简模式下参数只支持输入框的方式录入</span> <span>精简模式下参数只支持输入框的方式录入</span>
</j-space> </j-space>
</div> </div>
<j-tabs v-model="activeKey" tab-position="left"> <j-tabs v-model="activeKey" tab-position="left" @change="onTabChange" :destroyInactiveTabPane="true">
<j-tab-pane v-for="func in newFunctions" :key="func.id"> <j-tab-pane v-for="func in newFunctions" :key="func.id">
<template #tab> <template #tab>
<Ellipsis style="width: 100px; text-align: left"> <Ellipsis style="width: 100px; text-align: left">
@ -95,7 +95,7 @@
:ref="`result${func.id}Ref`" :ref="`result${func.id}Ref`"
class="execute-result" class="execute-result"
> >
{{ func.executeResult }} {{ executeResult || '' }}
</span> </span>
</j-col> </j-col>
</j-row> </j-row>
@ -135,6 +135,8 @@ const columns = ref([
}, },
]); ]);
const executeResult = ref('')
// //
const newFunctions = computed(() => { const newFunctions = computed(() => {
const result: any = []; const result: any = [];
@ -205,7 +207,7 @@ const handleExecute = async (func: any) => {
); );
if (!success) return; if (!success) return;
message.success('操作成功'); message.success('操作成功');
func.executeResult = result instanceof Array ? result[0] : result; executeResult.value = result instanceof Array ? result[0] : result;
proxy?.$forceUpdate(); proxy?.$forceUpdate();
}) })
.catch((err: any) => { .catch((err: any) => {
@ -216,8 +218,13 @@ const handleExecute = async (func: any) => {
* 清空 * 清空
*/ */
const handleClear = (func: any) => { const handleClear = (func: any) => {
executeResult.value = ''
proxy?.$refs[`${func.id}Ref`][0].resetFields(); proxy?.$refs[`${func.id}Ref`][0].resetFields();
}; };
const onTabChange = (_key: string) => {
executeResult.value = ''
}
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>

View File

@ -220,7 +220,7 @@
</template> </template>
<template #createTime="slotProps"> <template #createTime="slotProps">
<span>{{ <span>{{
dayjs(slotProps.createTime).format('YYYY-MM-DD HH:mm:ss') slotProps?.createTime ? dayjs(slotProps.createTime).format('YYYY-MM-DD HH:mm:ss') : ''
}}</span> }}</span>
</template> </template>
<template #action="slotProps"> <template #action="slotProps">

View File

@ -47,7 +47,7 @@
</template> </template>
<template #registerTime="slotProps"> <template #registerTime="slotProps">
<span>{{ <span>{{
dayjs(slotProps.registerTime).format('YYYY-MM-DD HH:mm:ss') slotProps?.registerTime ? dayjs(slotProps.registerTime).format('YYYY-MM-DD HH:mm:ss') : ''
}}</span> }}</span>
</template> </template>
</JProTable> </JProTable>

View File

@ -0,0 +1,49 @@
<template>
<page-container>
<iframe
:src="iframeUrl"
frameBorder="0"
style="width: 100%; height: calc(100vh - 140px)"
></iframe>
</page-container>
</template>
<script setup lang="ts">
import { TOKEN_KEY } from '@/utils/variable';
import { LocalStore } from '@/utils/comm';
import { getAppInfo_api } from '@/api/system/apply';
const iframeUrl = ref<string>('');
const handle = async (appId: string, url: string) => {
const res = await getAppInfo_api(appId);
let menuUrl: any = url;
if (res.status === 200) {
// console.log(res.result);
if (res.result.page.routeType === 'hash') {
menuUrl = `${url}`;
}
if (res.result.provider === 'internal-standalone') {
//{baseUrl}/api/application/sso/{appId}/login?redirect={menuUrl}
const urlStandalone = `${res.result.page.baseUrl}/api/application/sso/${appId}/login?redirect=${menuUrl}?layout=false`;
iframeUrl.value = urlStandalone;
// console.log(urlStandalone);
} else if (res.result.provider === 'internal-integrated') {
const tokenUrl = `${
res.result.page.baseUrl
}?X-Access-Token=${LocalStore.get(TOKEN_KEY)}`;
iframeUrl.value = tokenUrl;
} else {
const urlOther = `${res.result.page.baseUrl}/${menuUrl}`;
iframeUrl.value = urlOther;
}
}
};
watchEffect(() => {
const params = location.pathname.split('/')?.[1];
const url = location.pathname.split('/').slice(2).join('/');
// console.log(params, url);
handle(params, url);
});
</script>