TenantInviteUserModal.vue 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. <!--邀请用户加入租户弹窗-->
  2. <template>
  3. <BasicModal @register="registerModal" :width="500" :title="title" @ok="handleSubmit">
  4. <BasicForm @register="registerForm" />
  5. </BasicModal>
  6. </template>
  7. <script lang="ts">
  8. import { BasicModal, useModalInner } from '/@/components/Modal';
  9. import { BasicForm, useForm } from '/@/components/Form/index';
  10. import { defineComponent, ref } from 'vue';
  11. export default defineComponent({
  12. name: 'TenantInviteUserModal',
  13. components: {
  14. BasicModal,
  15. BasicForm,
  16. },
  17. setup(props, { emit }) {
  18. const title = ref<string>('邀请成员');
  19. const [registerForm, { resetFields, validate }] = useForm({
  20. schemas: [
  21. {
  22. label: '邀请方式',
  23. field: 'invitedMode',
  24. component: 'RadioButtonGroup',
  25. defaultValue: 1,
  26. componentProps: {
  27. options: [
  28. { label: '手机号', value: 1 },
  29. { label: '用户账号', value: 2 },
  30. ],
  31. },
  32. },
  33. {
  34. label: '手机号',
  35. field: 'phone',
  36. component: 'Input',
  37. ifShow: ({ values }) => values.invitedMode === 1,
  38. dynamicRules: ({ values }) => {
  39. return values.invitedMode === 1
  40. ? [
  41. { required: true, message: '请填写手机号' },
  42. { pattern: /^1[3456789]\d{9}$/, message: '手机号码格式有误' },
  43. ]
  44. : [{ pattern: /^1[3456789]\d{9}$/, message: '手机号码格式有误' }];
  45. },
  46. },
  47. {
  48. field: 'user',
  49. component: 'Input',
  50. label: '用户账号',
  51. ifShow: ({ values }) => values.invitedMode === 2,
  52. dynamicRules: ({ values }) => {
  53. return values.invitedMode === 2 ? [{ required: true, message: '请输入用户账号' }] : [];
  54. },
  55. },
  56. ],
  57. showActionButtonGroup: false,
  58. });
  59. //表单赋值
  60. const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data) => {
  61. //重置表单
  62. await resetFields();
  63. setModalProps({ minHeight: 100 });
  64. });
  65. /**
  66. * 提交,返回给租户list页面
  67. */
  68. async function handleSubmit() {
  69. let values = await validate();
  70. emit('inviteOk', values.phone, values.user);
  71. closeModal();
  72. }
  73. return {
  74. title,
  75. registerModal,
  76. registerForm,
  77. handleSubmit,
  78. };
  79. },
  80. });
  81. </script>
  82. <style scoped></style>