|
|
|
@ -5,18 +5,16 @@
@@ -5,18 +5,16 @@
|
|
|
|
|
cancelText="关闭" |
|
|
|
|
:showOkBtn="false" |
|
|
|
|
@register="registerModal" |
|
|
|
|
@visible-change="handleVisibleChange" |
|
|
|
|
> |
|
|
|
|
<div id="formPreview"/> |
|
|
|
|
</BasicModal> |
|
|
|
|
</template> |
|
|
|
|
<script lang="ts" setup> |
|
|
|
|
import { reactive } from 'vue'; |
|
|
|
|
import { onBeforeUnmount, reactive } from 'vue'; |
|
|
|
|
import { BasicModal, ModalProps, useModalInner } from '/@/components/Modal'; |
|
|
|
|
import { loadMicroApp, MicroApp } from 'qiankun'; |
|
|
|
|
import { getSubDefineProps } from '/@/qiankun/state'; |
|
|
|
|
import { GlStateEnum } from '/@/enums/microAppEnum'; |
|
|
|
|
import { useMicroAppStore } from '/@/store/modules/microApp'; |
|
|
|
|
import { apps } from '/@/qiankun/apps'; |
|
|
|
|
import { FORM_DESIGN_APP_COMPONENTS } from '/@/enums/microAppEnum'; |
|
|
|
|
|
|
|
|
@ -27,39 +25,41 @@
@@ -27,39 +25,41 @@
|
|
|
|
|
const state = reactive<TableState>({ |
|
|
|
|
formDesignApp: undefined!, |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
const formPreviewProps = { |
|
|
|
|
style: { height: 'calc(100vh - 160px)' }, |
|
|
|
|
options: {}, |
|
|
|
|
disabled: false, |
|
|
|
|
readonly: false, |
|
|
|
|
readonly: true, |
|
|
|
|
formSubmitSuccess: () => {}, |
|
|
|
|
formSubmitError: () => {}, |
|
|
|
|
formResetChange: () => {} |
|
|
|
|
}; |
|
|
|
|
const emit = defineEmits(['success', 'register']); |
|
|
|
|
const microAppStore = useMicroAppStore(); |
|
|
|
|
const [registerModal, { setModalProps, closeModal, changeLoading }] = useModalInner(async (data: BoxPayload = { _tag: '' }) => { |
|
|
|
|
changeLoading(); |
|
|
|
|
state.formDesignApp = loadMicroApp(Object.assign({} , apps.find(item => item.name == 'form-design'), { |
|
|
|
|
container: '#formPreview', |
|
|
|
|
props: { |
|
|
|
|
...getSubDefineProps(), |
|
|
|
|
// 表单设计器props |
|
|
|
|
[GlStateEnum.FORM_DESIGN_APP_PROPS_KEY]: formPreviewProps, |
|
|
|
|
mountApp: FORM_DESIGN_APP_COMPONENTS.PREVIEW |
|
|
|
|
} |
|
|
|
|
}), { sandbox: { experimentalStyleIsolation: true }}); |
|
|
|
|
state.formDesignApp.mountPromise.then(() => { |
|
|
|
|
changeLoading(false); |
|
|
|
|
}); |
|
|
|
|
data?.json && (formPreviewProps.options = eval('(' + data.json + ')') ); |
|
|
|
|
const props: Partial<ModalProps> = { confirmLoading: false }; |
|
|
|
|
props.title = '预览流程表单'; |
|
|
|
|
setModalProps(props); |
|
|
|
|
if (!state.formDesignApp || state.formDesignApp.getStatus() === 'NOT_MOUNTED') { |
|
|
|
|
changeLoading(); |
|
|
|
|
state.formDesignApp = loadMicroApp(Object.assign({} , apps.find(item => item.name == 'form-design'), { |
|
|
|
|
container: '#formPreview', |
|
|
|
|
props: { |
|
|
|
|
...getSubDefineProps(), |
|
|
|
|
mountApp: FORM_DESIGN_APP_COMPONENTS.PREVIEW, |
|
|
|
|
// 表单设计器props |
|
|
|
|
[GlStateEnum.FORM_DESIGN_APP_PROPS_KEY]: formPreviewProps, |
|
|
|
|
} |
|
|
|
|
}), { sandbox: { experimentalStyleIsolation: true }}); |
|
|
|
|
state.formDesignApp.mountPromise.then(() => { |
|
|
|
|
changeLoading(false); |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
function handleVisibleChange(visible: boolean) { |
|
|
|
|
!visible && state.formDesignApp.unmount(); |
|
|
|
|
} |
|
|
|
|
onBeforeUnmount(() => { |
|
|
|
|
state.formDesignApp?.getStatus() === 'MOUNTED' && state.formDesignApp.unmount(); |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
</script> |
|
|
|
|