| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- <template>
- <view
- v-if="formDefine.type === 'group'"
- :class="`form-group ${formDefine.props.type}`"
- >
- <text class="form-group-title" v-if="formDefineParentLabel">
- {{ formDefineParentLabel }}
- </text>
- <DynamicFormCateInner
- :formDefine="formDefine"
- :formModel="formModel"
- :groupType="formDefine.props.type"
- />
- </view>
- <DynamicFormCateInner
- v-else
- :formDefine="formDefine"
- :formModel="formModel"
- />
- </template>
- <script setup lang="ts">
- import type { PropType } from 'vue';
- import type { FormDefine } from '.';
- import DynamicFormCateInner from './DynamicFormCateInner.vue';
- export interface FormGroupProps {
- type: 'row' | 'column' | 'block';
- }
- const props = defineProps({
- formDefineParentLabel: {
- type: null,
- default: ''
- },
- formDefineParentKey: {
- type: String,
- default: ''
- },
- formModel: {
- type: Object,
- default: () => ({})
- },
- formDefine: {
- type: Object as PropType<FormDefine>,
- default: () => ({})
- },
- })
- </script>
- <style lang="scss">
- .form-group {
- display: flex;
- flex-direction: column;
- &.block {
- margin-bottom: 32rpx;
- padding: 24rpx 0;
- background: #fff;
- border-radius: 10rpx;
- .form-group-title {
- display: block;
- font-size: 28rpx;
- color: #333;
- margin-bottom: 16rpx;
- }
- }
- .form-group-title {
- display: block;
- flex-shrink: 0;
- font-size: 28rpx;
- color: #333;
- margin-bottom: 16rpx;
- margin-left: 26rpx;
- }
- &.row {
- flex-direction: row;
- justify-content: space-between;
- align-items: center;
- .form-group-title {
- display: inline-block;
- margin-left: 30rpx;
- }
- }
- }
- </style>
|