您的位置:首页 > 科技 > 能源 > 电子商务网站制作_河北邯郸永利ktv视频_江阴企业网站制作_北京网站推广机构

电子商务网站制作_河北邯郸永利ktv视频_江阴企业网站制作_北京网站推广机构

2025/3/20 13:37:08 来源:https://blog.csdn.net/m0_63542260/article/details/146373849  浏览:    关键词:电子商务网站制作_河北邯郸永利ktv视频_江阴企业网站制作_北京网站推广机构
电子商务网站制作_河北邯郸永利ktv视频_江阴企业网站制作_北京网站推广机构

<template>

  <div class="from-table">

    <el-form :model="form" label-width="auto" style="width:100%; display: flex; flex-wrap: wrap;">

      <el-form-item style="margin-right: 40px;"

       v-for="item in FormLable" :key="item.key"

       :label="item.label"

       :style="{'width': item.width ? item.width : '180px' }">

        <div class="input-label" :class="{'nameStyle': item.nameStyle}">{{ item.name }}</div>

        <el-input v-if="item.type == 'input'" v-model="form[item.key]" :placeholder="item.placeholder || ''" />

        <el-select style="width: 100%;" v-if="item.type == 'select'" v-model="form[item.key]" :placeholder="item.placeholder || ''">

          <el-option label="Zone one" value="shanghai" />

          <el-option label="Zone two" value="beijing" />

        </el-select>

        <el-date-picker

        v-if="item.type == 'date'"

          v-model="form[item.key]"

          type="date"

          :placeholder="item.placeholder || ''"

        />

      </el-form-item>

    </el-form>

  </div>

</template>

<script lang="ts" setup>

import { computed, PropType  } from 'vue';

// 定义表单项标签配置类型

interface FormLabelItem {

  label?: string;

  name?: string; // 对应表单字段名(如 'username')

  placeholder?: string

  key: string

  type: string

  width?: string

  nameStyle?: boolean

}

// 定义表单数据对象类型

interface FormData {

  [key: string]: any; // 动态字段(如 name: string)

}

const props = defineProps({

  modelValue: {

    type: Object as PropType<FormData>,

    default: ()=> {

      return {}

    }

  },

  FormLable: {

    type: Array as PropType<FormLabelItem[]>,

    default: ()=> {

      return []

    }

  }

})

const emit = defineEmits([

  'update:modelValue'

])

const form = computed({

  get () {

    return props.modelValue

    },

  set (value) {

    emit('update:modelValue', value)

  }

})

</script>


 

<style lang="scss" scoped>

.from-table {

  :deep(.el-input__wrapper) {

    border-bottom: 1px solid #DDDDDD !important;

  }

  .input-label {

    width: 100%;

    font-size: 12px;

    color: #777777 !important;

  }

  .nameStyle {

    font-size: 16px !important;

    color: #000 !important;

  }

}

</style>

调用时

<Form v-model="serviceData" :FormLable="serviceLable"></Form>

const serviceData = ref({})

const serviceLable:any = [

{

   name: '',

    key: '',

    label: '',

    placeholder: '请选择',

    type: 'select',

}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com