AddModal.vue 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. <template>
  2. <BasicModal
  3. v-bind="$attrs"
  4. @register="register"
  5. title="新增子账号"
  6. @visible-change="handleVisibleChange"
  7. @ok="handleSubmit"
  8. >
  9. <div class="pt-2px pr-3px">
  10. <BasicForm @register="registerForm" :model="model" />
  11. </div>
  12. </BasicModal>
  13. </template>
  14. <script lang="ts">
  15. import { defineComponent, ref, nextTick } from 'vue';
  16. import { BasicModal, useModalInner } from '/@/components/Modal';
  17. import { BasicForm, FormSchema, useForm } from '/@/components/Form/index';
  18. import { useMessage } from '/@/hooks/web/useMessage';
  19. import { checkUserAddAble } from '/@/api/corporation/modal';
  20. const schemas: FormSchema[] = [
  21. {
  22. field: 'companyName',
  23. component: 'Input',
  24. label: '姓名',
  25. colProps: {
  26. span: 24,
  27. },
  28. },
  29. {
  30. field: 'phone',
  31. component: 'Input',
  32. label: '手机号',
  33. rules: [
  34. {
  35. required: true,
  36. // @ts-ignore
  37. validator: async (rule, value) => {
  38. var reg_tel =
  39. /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/;
  40. if (!value) {
  41. /* eslint-disable-next-line */
  42. return Promise.reject('请填写您的手机号码!');
  43. }
  44. if (!reg_tel.test(value)) {
  45. /* eslint-disable-next-line */
  46. return Promise.reject('请正确填写您的手机号码!');
  47. }
  48. return Promise.resolve();
  49. },
  50. trigger: 'change',
  51. },
  52. ],
  53. colProps: {
  54. span: 24,
  55. },
  56. },
  57. ];
  58. export default defineComponent({
  59. components: { BasicModal, BasicForm },
  60. props: {
  61. userData: { type: Object },
  62. },
  63. emits: ['register', 'update'],
  64. setup(props, { emit }) {
  65. const modelRef = ref({});
  66. const { createMessage } = useMessage();
  67. const [
  68. registerForm,
  69. {
  70. // getFieldsValue,
  71. // setFieldsValue,
  72. // setProps
  73. validate,
  74. },
  75. ] = useForm({
  76. labelWidth: 120,
  77. schemas,
  78. showActionButtonGroup: false,
  79. actionColOptions: {
  80. span: 24,
  81. },
  82. });
  83. let addListFunc = () => {};
  84. const [register, { closeModal }] = useModalInner((data) => {
  85. data && onDataReceive(data);
  86. });
  87. function onDataReceive(data) {
  88. console.log('Data Received', data);
  89. const { addList } = data;
  90. if (typeof addList === 'function') {
  91. //是函数 其中 FunName 为函数名称
  92. addListFunc = addList;
  93. }
  94. }
  95. const handleSubmit = async () => {
  96. // console.log('getFieldsValue()', getFieldsValue());
  97. // var reg_tel =
  98. // /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/;
  99. // let { phone, memoName } = getFieldsValue();
  100. // if (phone == '') {
  101. // createMessage.error('请填写您的手机号码!');
  102. // return false;
  103. // } else if (!reg_tel.test(phone)) {
  104. // createMessage.error('请正确填写您的手机号码!');
  105. // return false;
  106. // }
  107. const values = await validate();
  108. console.log('values', values);
  109. //TODO hack parameter
  110. let res = await checkUserAddAble({ phoneNum: values.phone });
  111. console.log('res', res);
  112. if (!res.data) {
  113. // addListFunc({ phone: values.phone, companyName: values.companyName });
  114. emit('update');
  115. closeModal();
  116. } else {
  117. createMessage.error('子账号已被该企业绑定');
  118. }
  119. };
  120. function handleVisibleChange(v) {
  121. v && props.userData && nextTick(() => onDataReceive(props.userData));
  122. }
  123. return {
  124. register,
  125. schemas,
  126. registerForm,
  127. model: modelRef,
  128. handleVisibleChange,
  129. handleSubmit,
  130. addListFunc,
  131. closeModal,
  132. };
  133. },
  134. });
  135. </script>