| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- <template>
- <el-row
- :class="{
- [element.options.customClass]: element.options.customClass?true: false
- }"
- :type="element.options.flex ? 'flex' : ''"
- :gutter="element.options.gutter || 0"
- :justify="element.options.justify"
- :align="element.options.align"
- v-if="display[element.model]"
- >
- <el-col v-for="(item, index) in element.columns" :key="index"
- :xs="element.options.responsive ? item.xs || 0 : item.span || 0"
- :sm="element.options.responsive ? item.sm || 0 : item.span || 0"
- :md="element.options.responsive ? item.md || 0 : item.span || 0"
- :lg="element.options.responsive ? item.lg || 0 : item.span || 0"
- :xl="element.options.responsive ? item.xl || 0 : item.span || 0"
- >
- <template v-for="col in item.list">
- <generate-col-item
- v-if="col.type == 'grid'"
- :key="col.key"
- :model.sync="dataModels"
- :rules="rules"
- :element="col"
- :remote="remote"
- :blanks="blanks"
- :display="display"
- @input-change="onInputChange"
- :edit="edit"
- :remote-option="remoteOption"
- >
- <template v-slot:[blank.name]="scope" v-for="blank in blanks">
- <slot :name="blank.name" :model="scope.model"></slot>
- </template>
- </generate-col-item>
- <generate-tab-item
- v-else-if="col.type == 'tabs'"
- :key="col.key"
- :model.sync="dataModels"
- :rules="rules"
- :element="col"
- :remote="remote"
- :blanks="blanks"
- :display="display"
- @input-change="onInputChange"
- :edit="edit"
- :remote-option="remoteOption"
- >
- <template v-slot:[blank.name]="scope" v-for="blank in blanks">
- <slot :name="blank.name" :model="scope.model"></slot>
- </template>
- </generate-tab-item>
- <generate-form-item
- v-else
- :key="col.key"
- :models.sync="dataModels"
- :rules="rules"
- :widget="col"
- :remote="remote"
- :blanks="blanks"
- :display="display"
- @input-change="onInputChange"
- :edit="edit"
- :remote-option="remoteOption"
- >
- <template v-slot:[blank.name]="scope" v-for="blank in blanks">
- <slot :name="blank.name" :model="scope.model"></slot>
- </template>
- </generate-form-item>
- </template>
- </el-col>
- </el-row>
- </template>
- <script>
- import GenerateFormItem from './GenerateFormItem'
- import GenerateTabItem from './GenerateTabItem'
- export default {
- name: 'generate-col-item',
- components: {
- GenerateFormItem,
- GenerateTabItem
- },
- props: ['element', 'model', 'rules', 'remote', 'blanks', 'display', 'edit', 'remoteOption'],
- data () {
- return {
- dataModels: this.model
- }
- },
- methods: {
- onInputChange (value, field) {
- this.$emit('input-change', value, field)
- }
- },
- watch: {
- model: {
- deep: true,
- handler (val) {
- this.dataModels = this.model
- }
- },
- dataModels: {
- deep: true,
- handler (val) {
- this.$emit('update:model', val)
- }
- }
- }
- }
- </script>
|