Добавляете selected каждому элементу items, используете его в v-model, также отслеживаете переключение списка в родителе и сбрасываете selected всех элементов, кроме переключенного. Как-то
так.
UPD. В комментариях было высказано мнение, будто бы предлагаемое решение является хаком, потому что...
...это делается за пределами компонента. Плюс надо добавить selected для каждой карточки. Их может быть много. Нужно как то событиями реализовать.
1) За пределами компонента - а как иначе-то? Ведь изменение одного экземпляра компонента должно затронуть другие.
2) Добавление selected - не проблема. Делайте map массива items, закидывая в каждый элемент этот selected. Типа
так. Или можете устанавливать значения selected с помощью $set в методе onCardChanged, типа
так (а вот это уже действительно хак).
3) "Событиями реализовывать" - но ведь так и сделано. У вас была реализована генерация события input, обработку которого я и добавил.
UPD. Хотя можно оставить selected свойством компонента (дефолтное значение только объектом сделать), пусть хранит id элемента items и выбранный пункт выпадающего списка:
<vue-select
:value="selected.id === item.id ? selected.option : null"
:options="item.versions"
@input="selected = { id: item.id, option: $event }"
></vue-select>