AddModal.vue 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. <template>
  2. <BasicModal
  3. v-bind="$attrs"
  4. @register="register"
  5. :title="t('routes.corporation.addSubId')"
  6. @visible-change="handleVisibleChange"
  7. @ok="handleSubmit"
  8. @cancel="handleClose"
  9. >
  10. <div class="pt-2px pr-3px">
  11. <BasicForm @register="registerForm" :model="model" />
  12. </div>
  13. </BasicModal>
  14. </template>
  15. <script lang="ts">
  16. import { defineComponent, ref, nextTick } from 'vue';
  17. import { BasicModal, useModalInner } from '/@/components/Modal';
  18. import { BasicForm, FormSchema, useForm } from '/@/components/Form/index';
  19. import { useMessage } from '/@/hooks/web/useMessage';
  20. import { checkUserAddAble } from '/@/api/corporation/modal';
  21. import { useI18n } from '/@/hooks/web/useI18n';
  22. const { t } = useI18n();
  23. const schemas: FormSchema[] = [
  24. {
  25. field: 'companyName',
  26. component: 'Input',
  27. label: t('common.fullName'),
  28. labelWidth: 100,
  29. colProps: {
  30. span: 20,
  31. },
  32. componentProps: {
  33. maxLength: 25,
  34. },
  35. },
  36. {
  37. field: 'managerPhone',
  38. component: 'Input',
  39. labelWidth: 100,
  40. label: t('sys.login.email'),
  41. rules: [
  42. {
  43. required: true,
  44. // @ts-ignore
  45. validator: async (rule, value) => {
  46. // var reg_tel =
  47. // /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/;
  48. var reg = /\S+@\S+\.\S+/;
  49. if (!value) {
  50. /* eslint-disable-next-line */
  51. return Promise.reject(t('sys.login.fillMail'));
  52. }
  53. if (!reg.test(value)) {
  54. /* eslint-disable-next-line */
  55. return Promise.reject(t('sys.login.fillMailCorrect'));
  56. }
  57. return Promise.resolve();
  58. },
  59. trigger: 'change',
  60. },
  61. ],
  62. colProps: {
  63. span: 20,
  64. },
  65. },
  66. ];
  67. export default defineComponent({
  68. components: { BasicModal, BasicForm },
  69. props: {
  70. userData: { type: Object },
  71. },
  72. emits: ['register', 'submit', 'tablelist'],
  73. setup(props, { emit }) {
  74. const modelRef = ref({});
  75. const { createMessage } = useMessage();
  76. const [
  77. registerForm,
  78. {
  79. // getFieldsValue,
  80. // setFieldsValue,
  81. // setProps
  82. resetFields,
  83. validate,
  84. },
  85. ] = useForm({
  86. labelWidth: 120,
  87. schemas,
  88. showActionButtonGroup: false,
  89. actionColOptions: {
  90. span: 24,
  91. },
  92. });
  93. let addListFunc = () => {};
  94. const [register, { closeModal }] = useModalInner((data) => {
  95. data && onDataReceive(data);
  96. });
  97. function onDataReceive(data) {
  98. console.log('Data Received', data);
  99. }
  100. const handleSubmit = async () => {
  101. // console.log('getFieldsValue()', getFieldsValue());
  102. // var reg_tel =
  103. // /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/;
  104. // let { phone, memoName } = getFieldsValue();
  105. // if (phone == '') {
  106. // createMessage.error('请填写您的手机号码!');
  107. // return false;
  108. // } else if (!reg_tel.test(phone)) {
  109. // createMessage.error('请正确填写您的手机号码!');
  110. // return false;
  111. // }
  112. const values = await validate();
  113. let addTips = false;
  114. emit('tablelist', (list) => {
  115. addTips = list.some((ele) => ele.userName == values.managerPhone);
  116. });
  117. if (addTips) {
  118. return createMessage.error(t('routes.corporation.addError'));
  119. }
  120. //TODO hack parameter
  121. let res = await checkUserAddAble({ phoneNum: values.managerPhone });
  122. console.log('checkUserAddAble', res);
  123. if (res == false) {
  124. // addListFunc({ phone: values.phone, companyName: values.companyName });
  125. emit('submit', {
  126. managerPhone: values.managerPhone,
  127. companyName: values.companyName,
  128. });
  129. resetFields();
  130. closeModal();
  131. } else {
  132. createMessage.error(t('routes.corporation.addError'));
  133. }
  134. };
  135. function handleVisibleChange(v) {
  136. v && props.userData && nextTick(() => onDataReceive(props.userData));
  137. }
  138. function handleClose() {
  139. resetFields();
  140. }
  141. return {
  142. t,
  143. register,
  144. schemas,
  145. registerForm,
  146. model: modelRef,
  147. handleVisibleChange,
  148. handleSubmit,
  149. addListFunc,
  150. closeModal,
  151. handleClose,
  152. // nextTick,
  153. };
  154. },
  155. });
  156. </script>