Vowels up, consonants down
JavaScript (Node.js),  55 ... 46  45 bytes
Saved 1 byte thanks to @KevinCruijssen
s=&gt;Buffer(s).map(c=&gt;c^(c^~68174912&gt;&gt;c)&amp;32)+''

Try it online!
How?
The constant \$68174912\$ is a bitmask describing the positions of the vowels:
00000100000100000100010001000000
     v     v     v   v   v
zyxwvutsrqponmlkjihgfedcba`_^]\[

As per the ECMAScript specification, the following expression:
~68174912 &gt;&gt; c &amp; 32

is equivalent to:
~68174912 &gt;&gt; (c % 32) &amp; 32

and therefore evaluates to \$32\$ for a consonant or \$0\$ for a vowel, no matter the case of \$c\$.
Commented
s =&gt;                   // s = input string
  Buffer(s)            // turn s into a buffer
  .map(c =&gt;            // for each ASCII code c:
    c ^                //   change the case if:
      ( c              //     c is not in lower case
        ^              //     XOR
        ~68174912 &gt;&gt; c //     c is a consonant
      ) &amp; 32           //
  ) + ''               // end of map(); coerce back to a string