Как сделать проверку в vuelidate, где одно из двух полей должно быть обязательным?

В Vuelidate, библиотеке для валидации данных во Vue.js, можно легко реализовать проверку, при которой одно из двух полей должно быть обязательным. Для этого можно воспользоваться методом withParams, который позволяет создавать кастомные правила валидации.

Ниже приведен пример того, как создать правило валидации для ситуации, когда одно из двух полей должно быть обязательным:

import { withParams } from 'vuelidate/lib/validators/common';

const customRequired = (field1, field2) => {
  return withParams({ type: 'customRequired' }, function(value, parentVm) {
    const field1Value = parentVm[field1];
    const field2Value = parentVm[field2];

    if (!field1Value && !field2Value) {
      return false;
    }

    return true;
  });
};

export default {
  data() {
    return {
      field1: '',
      field2: ''
    };
  },
  validations: {
    field1: { customRequired: customRequired('field1', 'field2') },
    field2: { customRequired: customRequired('field1', 'field2') }
  }
};

В данном примере мы создаем кастомное правило customRequired, которое принимает имена двух полей. Правило проверяет, что хотя бы одно из полей должно быть заполнено. Затем мы применяем это правило к обоим полям field1 и field2 с помощью validations.

Теперь ваши поля field1 и field2 будут валидироваться согласно созданному правилу, и при попытке отправить форму, если оба поля останутся пустыми, то будет выдана ошибка валидации.

Такой подход позволяет легко добавить сложные правила валидации к вашим данным в Vue.js с помощью Vuelidate.