123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- <template>
- <left-skeleton @save="save" @deleteFunc="deleteFunc">
- <el-form :model="form" v-if="defaultForm">
- <el-form-item label="组件名称">
- <el-input v-model="form.label" />
- </el-form-item>
- <el-form-item label="默认提示">
- <el-input v-model="form.placeholder" />
- </el-form-item>
- <el-form-item label="是否必填">
- <el-switch v-model="form.isRequired" />
- </el-form-item>
- <el-form-item label="参数key值">
- <el-input v-model="form.key" />
- </el-form-item>
- </el-form>
- <div v-else>
- <el-form :model="form">
- <el-form-item label="组件名称">
- <el-input v-model="form.label" />
- </el-form-item>
- <el-form-item label="是否必填">
- <el-switch v-model="form.isRequired" />
- </el-form-item>
- <el-form-item label="参数key值">
- <el-input v-model="form.key" />
- </el-form-item>
- </el-form>
- <component
- v-for="(item, index) in form.child_list"
- :key="index"
- :is="H5EditorObj[item.type]"
- :item="item"
- :index="index + ''"
- @change="seacechange"
- ></component>
- </div>
- </left-skeleton>
- </template>
- <script setup>
- import { defineProps, inject, ref } from 'vue';
- import leftSkeleton from '../H5Editor/leftSkeleton.vue';
- import vanRadioGroup from './van_radio_group';
- import vanUploader from './van_uploader';
- const H5EditorObj = {
- 'van-radio-group': vanRadioGroup,
- 'van-uploader': vanUploader,
- };
- const saveComponents = inject('saveComponents');
- const deleteItemComponents = inject('deleteItemComponents');
- const props = defineProps({
- item: Object,
- index: String,
- });
- const item = JSON.parse(JSON.stringify(props.item.item));
- const defaultForm = ref(false);
- const formSele = {};
- if (!item.child_list || !item.child_list.length) {
- defaultForm.value = true;
- formSele.label = item.attr.label;
- formSele.placeholder = item.attr.placeholder;
- formSele.isRequired = item.attr.isRequired;
- } else {
- defaultForm.value = false;
- formSele.child_list = item.child_list;
- formSele.label = item.attr.label;
- formSele.isRequired = item.attr.isRequired;
- }
- const form = ref(formSele);
- // 获取子组件内更新的数据
- const seacechange = (item, index) => {
- console.log(item, index, form.value.child_list);
- form.value.child_list[index] = item;
- };
- const save = () => {
- if (defaultForm.value) {
- item.attr.label = form.value.label;
- item.attr.placeholder = form.value.placeholder;
- item.attr.isRequired = form.value.isRequired;
- } else {
- item.child_list = form.value.child_list;
- item.attr.label = form.value.label;
- item.attr.isRequired = form.value.isRequired;
- }
- saveComponents({ item, index: props.index });
- };
- const deleteFunc = () => {
- /**
- * 1.删除本地
- * 2.删除远程
- */
- deleteItemComponents(props.index);
- };
- </script>
- <style scoped></style>
|