AccountForm.vue 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. <template>
  2. <a-form :model="edit_form" auto-label-width>
  3. <a-row :gutter="24">
  4. <a-col :span="12">
  5. <a-form-item field="userName" label="用户名" :rules="[
  6. { required: true, message: '用户名必填' },
  7. { maxLength: 50, message: '长度不超过50' },
  8. ]">
  9. <a-input v-model="edit_form.userName" />
  10. </a-form-item>
  11. </a-col>
  12. <a-col :span="12">
  13. <a-form-item field="loginName" label="姓名">
  14. <a-input v-model="edit_form.loginName" />
  15. </a-form-item>
  16. </a-col>
  17. </a-row>
  18. <a-row :gutter="24">
  19. <a-col :span="12">
  20. <a-form-item field="phone" label="手机号">
  21. <a-input v-model="edit_form.phone" />
  22. </a-form-item>
  23. </a-col>
  24. <a-col :span="12">
  25. <a-form-item required field="email" label="邮箱" :rules="[
  26. { required: true, message: '邮箱必填' },
  27. { maxLength: 50, message: '长度不超过50' },
  28. ]">
  29. <a-input v-model="edit_form.email" />
  30. </a-form-item>
  31. </a-col>
  32. </a-row>
  33. <a-row :gutter="24">
  34. <!-- 编辑则不显示密码 -->
  35. <a-col v-if="!edit_mode" :span="12">
  36. <a-form-item field="pwd" label="密码">
  37. <a-input v-model="edit_form.pwd" type="pwd" />
  38. </a-form-item>
  39. </a-col>
  40. <a-col :span="12">
  41. <a-form-item field="role" label="角色">
  42. <a-select multiple v-model="edit_form.role" :options="roles" @change="roleChange">
  43. </a-select>
  44. </a-form-item>
  45. </a-col>
  46. </a-row>
  47. </a-form>
  48. </template>
  49. <script setup>
  50. import { toRefs } from 'vue';
  51. const props = defineProps({
  52. edit_form: Object,
  53. edit_mode: Boolean,
  54. roles: Array,
  55. });
  56. // 事件发射器
  57. const emit = defineEmits(['ok', 'cancel']);
  58. const { edit_form, edit_mode, roles } = toRefs(props);
  59. // 角色变化处理
  60. const roleChange = (selectedRoles) => {
  61. edit_form.role = selectedRoles;
  62. }
  63. </script>
  64. <style lang="css" scoped>
  65. /* 这里可以添加自定义样式 */
  66. </style>