I would create a configuration file with the fields to display for each role.
Then in the form, I would add the disabled attribute to each field with a condition.
For example :
<input type="text" name="name" id="name" :disabled="! fieldsToDisplay.contains('name')" />
Assuming that fieldsToDisplay is an array declared in a configuration file.
return [
'admin' => [
'name',
'merchant',
...
],
'merchant' => [
'name',
...
],
];
UPDATED => Sorry, disabling a field doesn't remove it from the form. You need to use v-if instead of disabled.
<input type="text" name="name" id="name" v-if="fieldsToDisplay.contains('name')" />