Browse Source

chore: Optimizing Microservices

master
wangxiang 2 years ago
parent
commit
23de374d38
No known key found for this signature in database
GPG Key ID: 1BA7946AB6B232E4
  1. 82
      src/views/workflow/task/WorkflowPreviewForm.vue

82
src/views/workflow/task/WorkflowPreviewForm.vue

@ -2,7 +2,7 @@
<div id="formPreview" v-loading="state.loading"/> <div id="formPreview" v-loading="state.loading"/>
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import { PropType, reactive, onDeactivated } from 'vue'; import { PropType, reactive, onBeforeUnmount, watch } from 'vue';
import { loadMicroApp, MicroApp } from 'qiankun'; import { loadMicroApp, MicroApp } from 'qiankun';
import { getSubDefineProps } from '/@/qiankun/state'; import { getSubDefineProps } from '/@/qiankun/state';
import { GlStateEnum } from '/@/enums/microAppEnum'; import { GlStateEnum } from '/@/enums/microAppEnum';
@ -34,13 +34,19 @@
formData: Recordable; formData: Recordable;
options: Recordable; options: Recordable;
loading: boolean; loading: boolean;
disableIds: string[];
showIds: string[];
formRef: Recordable;
} }
const state = reactive<WindowState>({ const state = reactive<WindowState>({
formDesignApp: undefined!, formDesignApp: undefined!,
loading: false, loading: false,
formData: {}, formData: {},
options: {} options: {},
disableIds: [],
showIds: [],
formRef: undefined!,
}); });
const formDesignProps = { const formDesignProps = {
style: { 'min-height': '50px' }, style: { 'min-height': '50px' },
@ -48,36 +54,47 @@
disabled: props.disabled, disabled: props.disabled,
readonly: props.readonly, readonly: props.readonly,
value: state.formData, value: state.formData,
handleValueChange: (formData: Recordable) => handleValueChange: (formData: Recordable) => formDesignProps.value = state.formData = formData
formDesignProps.value = state.formData = formData
}; };
const microAppStore = useMicroAppStore(); const microAppStore = useMicroAppStore();
const { createMessage } = useMessage(); const { createMessage } = useMessage();
watch(() => props.taskFormData, (taskFormData: Recordable[]) => {
taskFormData.forEach((item) => {
if (item.value !== undefined) {
state.formData[item.id] = item.value;
}
if (item.readable === true) {
state.showIds.push(item.id);
}
if (item.writable === false) {
state.disableIds.push(item.id);
}
});
formDesignProps.value = state.formData;
if (state.formRef) {
state.formRef.setShowIds(state.showIds);
state.formRef.setDisableIds(state.disableIds);
}
});
watch(() => props.disabled, (disabled: boolean) => {
formDesignProps.disabled = disabled;
});
watch(() => props.readonly, (readonly: boolean) => {
formDesignProps.readonly = readonly;
});
async function init(formJsonId: string) { async function init(formJsonId: string) {
if (formJsonId) { if (formJsonId) {
state.loading = true;
state.formData = {}; state.formData = {};
// json // json
try { const data = await getFormDefinitionJson(formJsonId);
const data = await getFormDefinitionJson(formJsonId); if (!data.json) return createMessage.error('当前数据没有json结构体');
if (!data.json) throw Error('当前数据没有json结构体'); formDesignProps.options = eval('(' + data.json + ')');
formDesignProps.options = eval('(' + data.json + ')'); if (!state.formDesignApp || state.formDesignApp.getStatus() === 'NOT_MOUNTED') {
const disableIds: string[] = [], showIds: string[] = []; state.loading = true;
props.taskFormData.forEach((item) => {
if (item.value !== undefined) {
state.formData[item.id] = item.value;
}
if (item.readable === true) {
showIds.push(item.id);
}
if (item.writable === false) {
disableIds.push(item.id);
}
});
// todo:
formDesignProps.value = state.formData;
state.formDesignApp?.unmount();
state.formDesignApp = loadMicroApp(Object.assign({} , apps.find(item => item.name == 'form-design'), { state.formDesignApp = loadMicroApp(Object.assign({} , apps.find(item => item.name == 'form-design'), {
container: '#formPreview', container: '#formPreview',
props: { props: {
@ -86,23 +103,20 @@
// props // props
[GlStateEnum.FORM_DESIGN_APP_PROPS_KEY]: formDesignProps [GlStateEnum.FORM_DESIGN_APP_PROPS_KEY]: formDesignProps
} }
}), { sandbox: { experimentalStyleIsolation: true }}); }), { sandbox: { experimentalStyleIsolation: true } });
state.formDesignApp.mountPromise.then(() => { state.formDesignApp.mountPromise.then(() => {
const formPreviewApp: Recordable = microAppStore.getFormDesignApp(FORM_DESIGN_APP_COMPONENTS.PREVIEW), const formPreviewApp: Recordable = microAppStore.getFormDesignApp(FORM_DESIGN_APP_COMPONENTS.PREVIEW);
formRef: Recordable = formPreviewApp.getRef().$refs['form-preview']; state.formRef = formPreviewApp.getRef().$refs['form-preview'];
formRef.setShowIds(showIds); state.formRef.setShowIds(state.showIds);
formRef.setDisableIds(disableIds); state.formRef.setDisableIds(state.disableIds);
state.loading = false; state.loading = false;
}); });
} catch(e: any) {
createMessage.error(e);
state.loading = false;
} }
} else createMessage.info('没有关联流程表单!'); } else createMessage.info('没有关联流程表单!');
} }
onDeactivated(() => { onBeforeUnmount(() => {
state.formDesignApp?.unmount(); state.formDesignApp?.getStatus() === 'MOUNTED' && state.formDesignApp.unmount();
}); });
async function startFormProcessDefinition(data: Partial<Workflow>, callback: Fn) { async function startFormProcessDefinition(data: Partial<Workflow>, callback: Fn) {

Loading…
Cancel
Save