Как не дублировать компонент с похожими данными?
const options = computed(() => {
  if (props.secondType) 
    return props.secondTypeItems.map(({ id, value}) => ({
      label: value,
      value: id 
    }));

  if (props.thirdType) 
    return props.thirdTypeEvents.map(({ desc, name }) => ({
      label: name,
      value: desc 
    }));

  // ...

  return [];
});

<el-select
      v-model="modelText"
      placeholder="Выберите предмет"
      @change="changeVal"
    >
      <el-option
        v-for="{ label, value} in options"
        :key="value"
        :label="label"
        :value="value"
      >
        {{ label }}
      </el-option>
    </el-select>
Да в общем то ни как
у вас есть предмет и активность, как я понимаю активность зависит от предмета.
Так что формулируйте четче чего хотите. 
Кстати есть такой антипаттерн когда заказчик разбирается в коде и приходит со своим решением и просит его доработать. Хотя лучшее решение это представить бизнес задачу и слушаться профи