🐞 fix:初始化 form-create 配置,修复“字段 ID”不可修改问题。

pull/564/head
preschooler 2024-10-10 16:14:07 +08:00
parent fe21db3704
commit 2ff9904f63
2 changed files with 95 additions and 20 deletions

View File

@ -1,14 +1,18 @@
<template> <template>
<ContentWrap> <ContentWrap :body-style="{ padding: '0px' }" class="!mb-0">
<!-- 表单设计器 --> <!-- 表单设计器 -->
<FcDesigner ref="designer" height="780px"> <div
<template #handle> class="h-[calc(100vh-var(--top-tool-height)-var(--tags-view-height)-var(--app-content-padding)-var(--app-content-padding)-2px)]"
<el-button round size="small" type="primary" @click="handleSave"> >
<Icon class="mr-5px" icon="ep:plus" /> <fc-designer class="my-designer" ref="designer" :config="designerConfig">
保存 <template #handle>
</el-button> <el-button size="small" type="success" plain @click="handleSave">
</template> <Icon class="mr-5px" icon="ep:plus" />
</FcDesigner> 保存
</el-button>
</template>
</fc-designer>
</div>
</ContentWrap> </ContentWrap>
<!-- 表单保存的弹窗 --> <!-- 表单保存的弹窗 -->
@ -55,6 +59,31 @@ const { push, currentRoute } = useRouter() // 路由
const { query } = useRoute() // const { query } = useRoute() //
const { delView } = useTagsViewStore() // const { delView } = useTagsViewStore() //
//
const designerConfig = ref({
switchType: [], // ,
autoActive: true, //
useTemplate: false, // vue2
formOptions: {}, //
fieldReadonly: false, // field
hiddenDragMenu: false, //
hiddenDragBtn: false, //
hiddenMenu: [], //
hiddenItem: [], //
hiddenItemConfig: {}, //
disabledItemConfig: {}, //
showSaveBtn: false, //
showConfig: true, //
showBaseForm: true, //
showControl: true, //
showPropsForm: true, //
showEventForm: true, //
showValidateForm: true, //
showFormConfig: true, //
showInputData: true, //
showDevice: true, //
appendConfigData: [] // formData
})
const designer = ref() // const designer = ref() //
useFormCreateDesigner(designer) // useFormCreateDesigner(designer) //
const dialogVisible = ref(false) // const dialogVisible = ref(false) //
@ -119,3 +148,13 @@ onMounted(async () => {
setConfAndFields(designer, data.conf, data.fields) setConfAndFields(designer, data.conf, data.fields)
}) })
</script> </script>
<style>
.my-designer {
._fc-l,
._fc-m,
._fc-r {
border-top: none;
}
}
</style>

View File

@ -1,16 +1,17 @@
<template> <template>
<ContentWrap> <ContentWrap :body-style="{ padding: '0px' }" class="!mb-0">
<el-row>
<el-col>
<div class="float-right mb-2">
<el-button size="small" type="primary" @click="showJson"> JSON</el-button>
<el-button size="small" type="success" @click="showOption"> Options</el-button>
<el-button size="small" type="danger" @click="showTemplate"></el-button>
</div>
</el-col>
</el-row>
<!-- 表单设计器 --> <!-- 表单设计器 -->
<FcDesigner ref="designer" height="780px" /> <div
class="h-[calc(100vh-var(--top-tool-height)-var(--tags-view-height)-var(--app-content-padding)-var(--app-content-padding)-2px)]"
>
<fc-designer class="my-designer" ref="designer" :config="designerConfig">
<template #handle>
<el-button size="small" type="primary" plain @click="showJson">JSON</el-button>
<el-button size="small" type="success" plain @click="showOption">Options</el-button>
<el-button size="small" type="danger" plain @click="showTemplate"></el-button>
</template>
</fc-designer>
</div>
</ContentWrap> </ContentWrap>
<!-- 弹窗表单预览 --> <!-- 弹窗表单预览 -->
@ -43,6 +44,31 @@ defineOptions({ name: 'InfraBuild' })
const { t } = useI18n() // const { t } = useI18n() //
const message = useMessage() // const message = useMessage() //
//
const designerConfig = ref({
switchType: [], // ,
autoActive: true, //
useTemplate: false, // vue2
formOptions: {}, //
fieldReadonly: false, // field
hiddenDragMenu: false, //
hiddenDragBtn: false, //
hiddenMenu: [], //
hiddenItem: [], //
hiddenItemConfig: {}, //
disabledItemConfig: {}, //
showSaveBtn: false, //
showConfig: true, //
showBaseForm: true, //
showControl: true, //
showPropsForm: true, //
showEventForm: true, //
showValidateForm: true, //
showFormConfig: true, //
showInputData: true, //
showDevice: true, //
appendConfigData: [] // formData
})
const designer = ref() // const designer = ref() //
const dialogVisible = ref(false) // const dialogVisible = ref(false) //
const dialogTitle = ref('') // const dialogTitle = ref('') //
@ -140,3 +166,13 @@ onMounted(async () => {
hljs.registerLanguage('json', json) hljs.registerLanguage('json', json)
}) })
</script> </script>
<style>
.my-designer {
._fc-l,
._fc-m,
._fc-r {
border-top: none;
}
}
</style>