vue3 + ant desgin + form

2 篇文章 0 订阅
1 篇文章 0 订阅

<template>
  <Form name="ruleForm" ref="ruleForm" :model="formData" :rules="rules" class="form_s">
    <Form.Item label="配置名称" name="name">
      <Input v-model:value="formData.name" placeholder="请输入名称" :disabled="isDisabled" />
    </Form.Item>
    <Form.Item label="日期范围" name="date">
      <DatePicker.RangePicker
        v-model:value="formData.date"
        valueFormat="YYYY-MM-DD"
        format="YYYY-MM-DD"
        style="width: 100%"
      />
    </Form.Item>
    <Form.Item label="select" name="select">
      <Select
        allowClear
        showSearch
        :filterOption="false"
        v-model:value="formData.select"
        @search="(val) => handleFactor(val)"
        :disabled="isDisabled"
      >
        <Select.Option v-for="(item, i) in factorList" :key="i" :value="item.id">{{
          item.name
        }}</Select.Option>
      </Select>
    </Form.Item>
    <Form.Item label="num" name="num">
      <InputNumber v-model:value="formData.num" :disabled="isDisabled" />
    </Form.Item>
  </Form>
</template>
<script lang="ts" setup>
  import { ref } from 'vue';
  import { Form, Input, Select, DatePicker, InputNumber } from 'ant-design-vue';

  const isDisabled = ref(false);
  const formData = ref<any>({});
  const rules = {
    name: [{ required: true, message: '请输入name', trigger: 'blur' }],
    date: [{ required: true, message: '请选择日期范围', trigger: 'change' }],
    select: [{ required: true, message: '请选择select', trigger: 'change' }],
    num: [{ required: true, message: '请输入num', type: 'number', trigger: 'blur' }],
  };
  const factorList = ref<any>([]);
  function handleFactor(val) {}
  const ruleForm = ref<any>(null);
  async function handleSubmit() {
    try {
      await ruleForm.value.validate();
      const values = formData.value;
      console.log(values);
    } finally {
      console.log('err');
    }
  }
</script>
<style lang="scss" scoped>
  ::v-deep.form_s {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;

    .ant-form-item {
      width: 50%;
    }

    .ant-form-item-label {
      width: 110px;
    }
  }
</style>

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值