| | |
| | | * @version: |
| | | * @Date: 2024-05-30 13:28:20 |
| | | * @LastEditors: Ben Lin |
| | | * @LastEditTime: 2024-07-15 22:23:07 |
| | | * @LastEditTime: 2024-07-22 01:55:07 |
| | | --> |
| | | <template> |
| | | <PageWrapper :title="pageTitle" :content="contentStr" contentBackground @back="goBack"> |
| | |
| | | <Suspense></Suspense> |
| | | </div> |
| | | </div> |
| | | <Suspense> |
| | | <CustModal |
| | | @register="registerCust" |
| | | @success="custSuccess" |
| | | :type="cType" |
| | | :detailSlots="dtlSlots" |
| | | :entityName="entityName" |
| | | > |
| | | <!-- 用插槽自定义多表单 --> |
| | | <template #[item.name] v-for="item in dtlSlots" :key="item.name"> |
| | | <BasicForm @register="useFormData[item.name][0]" v-if="useFormData[item.name]"> |
| | | <!-- 用插槽自定义弹出选择框 --> |
| | | <template #[name]="{ field }" v-for="name in item.slots" :key="name"> |
| | | <a-button |
| | | class="mt-1 ml-1" |
| | | size="small" |
| | | @click="handleCustClick(field)" |
| | | :preIcon="item.preIcons[name]" |
| | | /> |
| | | <GeneralModal |
| | | @register="useModalData[name][0]" |
| | | @success="(d, u) => handleEntSuccess(d, u, item.name)" |
| | | /> |
| | | </template> |
| | | </BasicForm> |
| | | <!-- 自定义内容 --> |
| | | </template> |
| | | </CustModal> |
| | | </Suspense> |
| | | </PageWrapper> |
| | | </template> |
| | | |
| | |
| | | import detail from './detail.vue'; |
| | | import { useI18n } from '/@/hooks/web/useI18n'; |
| | | import { useMessage } from '/@/hooks/web/useMessage'; |
| | | import GeneralModal from '/@/views/components/GeneralModal.vue'; |
| | | import CustModal from '/@/views/components/CustModal.vue'; |
| | | import { BasicForm } from '/@/components/Form/index'; |
| | | import { useGlobSetting } from '/@/hooks/setting'; |
| | | import { useModal } from '/@/components/Modal'; |
| | | |
| | | const { t } = useI18n(); |
| | | |
| | | const { createMessage } = useMessage(); |
| | | const route = useRoute(); |
| | | const objParams = ref(JSON.parse(decodeURI(route.params?.id as string))); |
| | | // 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 contentStr = ref(objParams.value.contentStr); |
| | | const firstTabName = ref(objParams.value.firstTabName); |
| | | const secondTabName = ref(objParams.value.secondTabName); |
| | | const entityName = ref(objParams.value.Name); |
| | | const entityName = ref(routeParams.value.Name); |
| | | const detailName = ref(objParams.value.detailName); |
| | | const globSetting = useGlobSetting(); |
| | | const formSchemas = ref({}); //弹出框多表单结构 |
| | | const useModalData = ref({}); //表单中插槽渲染按钮打开模态框useModal方法 |
| | | const useFormData = ref({}); |
| | | const secondColSlots = ref<any>(objParams.value.secondColSlots); //按钮插槽 |
| | | const crudColSlots = ref<any>(objParams.value.colSlots); |
| | | const cType = ref(''); |
| | | const dtlSlots = ref([] as any[]); |
| | | const selectVals = ref({}); |
| | | const keyFieldValues = ref<any>(null); |
| | | provide<Ref<any>>('objParams', objParams.value); |
| | | provide<Ref<any>>('keyFieldValues', keyFieldValues); |
| | | const [registerCust] = useModal(); |
| | | |
| | | var currentKey = ref('detailfirst'); |
| | | const { setTitle } = useTabs(); |
| | |
| | | .then((m) => { |
| | | const [{ GetHomeUrl }] = m.default(); |
| | | // 本例的效果时点击返回始终跳转到账号列表页,实际应用时可返回上一页 |
| | | go(GetHomeUrl(entityName.value)); |
| | | go(GetHomeUrl({colSlots:crudColSlots.value})); |
| | | }) |
| | | .catch(() => {}); |
| | | } catch (e) {} |
| | |
| | | }; |
| | | }; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * @description: 自定义弹出框确定返回 |
| | | * @param {*} d |
| | | * @return {*} |
| | | */ |
| | | function custSuccess(d) { |
| | | // reload(); |
| | | } |
| | | |
| | | /** |
| | | * @description: 各表单内弹出选择框选择成功后方法 |
| | | * @param {*} d |
| | | * @param {*} u |
| | | * @param {*} item |
| | | * @return {*} |
| | | */ |
| | | function handleEntSuccess(d, u, item) { |
| | | /* 动态import实体名.ts的自定义方法 */ |
| | | try { |
| | | import(`../entityts/${cType.value}.ts`).then((m) => { |
| | | const [{ GetSelectSuccess }] = m.default(); |
| | | var values = GetSelectSuccess(d, u); |
| | | selectVals.value = values; //保存弹出框选择的结果 |
| | | let _val = {}; |
| | | _val[d.returnFieldName] = values[d.returnFieldName]; |
| | | useFormData.value[item][1].setFieldsValue(_val); |
| | | }); |
| | | } catch (e) {} |
| | | } |
| | | |
| | | /** |
| | | * @description: 打开自定义模态框 |
| | | * @param {*} item |
| | | * @return {*} |
| | | */ |
| | | function handleCustClick(item) { |
| | | OpenCustModal( |
| | | useModalData.value[item][1].openModal, //带入openModal方法 |
| | | cType.value, |
| | | item, |
| | | [], |
| | | // selectVals.value['ROUTE_CODE'], |
| | | ); //[openRvModal], selectVals.value['ID']这是自定义参数,按实际需求 |
| | | } |
| | | </script> |