<!--
|
* @Description: 低代码详情呈现页面
|
* @Author: Ben Lin
|
* @version:
|
* @Date: 2024-05-30 13:28:20
|
* @LastEditors: Ben Lin
|
* @LastEditTime: 2024-07-22 01:55:07
|
-->
|
<template>
|
<PageWrapper :title="pageTitle" :content="contentStr" contentBackground @back="goBack">
|
<template #footer>
|
<a-tabs default-active-key="detail" v-model:activeKey="currentKey" @tabClick="tabClkcallback">
|
<a-tab-pane key="detailfirst" :tab="firstTabName" />
|
<a-tab-pane key="detailsecond" :tab="secondTabName" />
|
</a-tabs>
|
</template>
|
<div>
|
<div v-if="currentKey == 'detailfirst'">
|
<Suspense>
|
<detail :entityName="entityName" />
|
</Suspense>
|
</div>
|
<div v-if="currentKey == 'detailsecond'">
|
<Suspense></Suspense>
|
</div>
|
</div>
|
</PageWrapper>
|
</template>
|
|
<script lang="ts" setup>
|
import { ref, provide, Ref } from 'vue';
|
import { useRoute } from 'vue-router';
|
import { PageWrapper } from '/@/components/Page';
|
import { useTabs } from '/@/hooks/web/useTabs';
|
import { Tabs } from 'ant-design-vue';
|
import { useGo } from '/@/hooks/web/usePage';
|
import { OpenCustModal, custOnChange } from '../data';
|
import detail from './detail.vue';
|
import { useI18n } from '/@/hooks/web/useI18n';
|
import { useMessage } from '/@/hooks/web/useMessage';
|
import { useGlobSetting } from '/@/hooks/setting';
|
|
const { t } = useI18n();
|
|
const { createMessage } = useMessage();
|
const route = useRoute();
|
// const objParams = ref(JSON.parse(decodeURI(route.params?.id as string)));
|
const routeParams = ref(JSON.parse(decodeURI(route.params?.id as string)));
|
// 从sessionStorage中读取参数并转换回对象
|
const savedParams = sessionStorage.getItem(`${routeParams.value.sName}_params`);
|
const objParams = savedParams ? ref(JSON.parse(decodeURI(savedParams))) : ref({});
|
const ATabs = ref(Tabs);
|
const ATabPane = ref(Tabs.TabPane);
|
var ITEM_CODE = ref('');
|
const go = useGo();
|
const pageTitle = ref(objParams.value.pageTitle);
|
const contentStr = ref(objParams.value.contentStr);
|
const firstTabName = ref(objParams.value.firstTabName);
|
const secondTabName = ref(objParams.value.secondTabName);
|
const entityName = ref(routeParams.value.Name);
|
const detailName = ref(objParams.value.detailName);
|
const globSetting = useGlobSetting();
|
const crudColSlots = ref<any>(objParams.value.colSlots);
|
const keyFieldValues = ref<any>(null);
|
provide<Ref<any>>('objParams', objParams.value);
|
provide<Ref<any>>('keyFieldValues', keyFieldValues);
|
|
var currentKey = ref('detailfirst');
|
const { setTitle } = useTabs();
|
|
// 设置Tab的标题(不会影响页面标题)
|
setTitle(`详情:${detailName.value}`);
|
|
// 页面左侧点击返回链接时的操作
|
function goBack() {
|
/* 动态import实体名.ts的自定义方法 */
|
try {
|
import(`../entityts/${entityName.value}.ts`)
|
.then((m) => {
|
const [{ GetHomeUrl }] = m.default();
|
// 本例的效果时点击返回始终跳转到账号列表页,实际应用时可返回上一页
|
go(GetHomeUrl({colSlots:crudColSlots.value}));
|
})
|
.catch(() => {});
|
} catch (e) {}
|
}
|
const tabClkcallback = (val: string) => {
|
if (val == 'detailfirst') {
|
ITEM_CODE.value = '';
|
}
|
};
|
|
/**
|
* @description: Select 自定义onChange方法
|
* @param {*} obj
|
* @return {*}
|
*/
|
function onChangeConfig(obj: any) {
|
if (obj.component == 'Select') {
|
var options = obj.componentProps.options;
|
var onChange = obj.componentProps.onChange;
|
obj.componentProps = ({ schema, tableAction, formActionType, formModel }) => {
|
return {
|
options: options,
|
onChange: (e) => custOnChange(e, onChange, objParams.value.ID),
|
};
|
};
|
}
|
}
|
</script>
|