| | |
| | | "@vueuse/core": "9.5.0", |
| | | "animate.css": "4.1.1", |
| | | "await-to-js": "^3.0.0", |
| | | "vform3-builds": "3.0.8", |
| | | "axios": "^1.3.4", |
| | | "echarts": "5.4.0", |
| | | "element-plus": "2.2.27", |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <!-- ä»£ç æå»º --> |
| | | <script setup lang="ts"> |
| | | |
| | | import { ComponentInternalInstance } from "vue"; |
| | | |
| | | const props = defineProps({ |
| | | showBtn: { |
| | | type: Boolean, |
| | | default: false |
| | | }, |
| | | formJson: { |
| | | type: Object, |
| | | default: undefined |
| | | } |
| | | }) |
| | | const { proxy } = getCurrentInstance() as ComponentInternalInstance; |
| | | const buildRef = ref(); |
| | | const emits = defineEmits(['reJson', 'saveDesign']); |
| | | |
| | | |
| | | |
| | | //è·å表åjson |
| | | const getJson = () => { |
| | | const formJson = JSON.stringify(buildRef.value.getFormJson()) |
| | | const fieldJson = JSON.stringify(buildRef.value.getFieldWidgets()) |
| | | let data = { |
| | | formJson, fieldJson |
| | | } |
| | | emits("saveDesign", data) |
| | | } |
| | | |
| | | onMounted(() => { |
| | | if (props.formJson) { |
| | | buildRef.value.setFormJson(props.formJson) |
| | | } |
| | | }) |
| | | </script> |
| | | |
| | | <template> |
| | | <div> |
| | | <v-form-designer |
| | | class="build" |
| | | ref="buildRef" |
| | | :designer-config="{ importJsonButton: true, exportJsonButton: true, exportCodeButton: true, generateSFCButton: true, formTemplates: true }" |
| | | > |
| | | <template #customToolButtons v-if="showBtn"> |
| | | <el-button link type="primary" icon="Select" @click="getJson">ä¿å</el-button> |
| | | </template> |
| | | </v-form-designer> |
| | | </div> |
| | | </template> |
| | | |
| | | <style lang="scss"> |
| | | .build { |
| | | margin: 0 !important; |
| | | overflow-y: auto !important; |
| | | |
| | | & header.main-header { |
| | | display: none; |
| | | } |
| | | |
| | | & .right-toolbar-con { |
| | | text-align: right !important; |
| | | } |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <!-- å¨æè¡¨åæ¸²æ --> |
| | | <script setup name="Render"> |
| | | |
| | | const props = defineProps({ |
| | | formJson: { |
| | | type: [String, Object], |
| | | default: {} |
| | | }, |
| | | formData: { |
| | | type: [String, Object], |
| | | default: {} |
| | | }, |
| | | isView: { |
| | | type: Boolean, |
| | | default: false |
| | | } |
| | | }) |
| | | |
| | | const vFormRef = ref(null) |
| | | // è·åè¡¨åæ°æ®-弿¥ |
| | | const getFormData = () => { |
| | | return vFormRef.value.getFormData() |
| | | } |
| | | |
| | | /** |
| | | * 设置表åå
容 |
| | | * @param {表åé
ç½®} formConf |
| | | * formConfigï¼{ formTemplateï¼è¡¨å模æ¿ï¼formDataï¼è¡¨åæ°æ®ï¼hiddenFieldï¼éè¦éèçåæ®µå符串éåï¼disabledFieldï¼éè¦ç¦ç¨çèªè¯»å符串éå} |
| | | */ |
| | | const initForm = (formConf) => { |
| | | const { formTemplate, formData, hiddenField, disabledField } = toRaw(formConf) |
| | | if (formTemplate) { |
| | | vFormRef.value.setFormJson(formTemplate) |
| | | if (formData) { |
| | | vFormRef.value.setFormData(formData) |
| | | } |
| | | if (disabledField && disabledField.length > 0) { |
| | | setTimeout(() => { |
| | | vFormRef.value.disableWidgets(disabledField) |
| | | }, 200) |
| | | } |
| | | if (hiddenField && hiddenField.length > 0) { |
| | | setTimeout(() => { |
| | | vFormRef.value.hideWidgets(hiddenField) |
| | | }, 200) |
| | | } |
| | | if (props.isView) { |
| | | console.log(props.isView) |
| | | setTimeout(() => { |
| | | vFormRef.value.disableForm() |
| | | }, 100) |
| | | } |
| | | } |
| | | } |
| | | defineExpose({ getFormData, initForm }) |
| | | </script> |
| | | |
| | | <template> |
| | | <div class=""> |
| | | <v-form-render ref="vFormRef" :form-json="formJson" :form-data="formData" /> |
| | | </div> |
| | | </template> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | declare module 'vform3-builds' { |
| | | const content: any; |
| | | export = content; |
| | | } |