DownModal.vue 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. <template>
  2. <BasicModal
  3. v-bind="$attrs"
  4. @register="register"
  5. :title="t('routes.equity.addDowm')"
  6. height="500"
  7. @visible-change="handleVisibleChange"
  8. @cancel="resetFields"
  9. @ok="handleSubmit"
  10. >
  11. <div class="pt-2px pr-3px">
  12. <BasicForm @register="registerForm">
  13. <template #text="{ model, field }">
  14. {{ model[field] }}
  15. </template>
  16. <template #img="{ model }">
  17. <TableImg v-if="model.invoiceUrl" :size="200" :adaptations="true" :simpleShow="true" :imgList="[model.invoiceUrl]" />
  18. </template>
  19. </BasicForm>
  20. </div>
  21. </BasicModal>
  22. </template>
  23. <script lang="ts">
  24. import { defineComponent, nextTick, onMounted, reactive, computed } from 'vue';
  25. import { BasicModal, useModalInner } from '/@/components/Modal';
  26. import { BasicForm, FormSchema, useForm } from '/@/components/Form/index';
  27. import { TableImg } from '/@/components/Table';
  28. import { useMessage } from '/@/hooks/web/useMessage';
  29. import { InvoiceRegister, InvoiceDetail } from '/@/api/order';
  30. import { useI18n } from '/@/hooks/web/useI18n';
  31. import { uploadApi } from '/@/api/product/index';
  32. import { ResultEnum } from '/@/enums/httpEnum';
  33. import dayjs from 'dayjs';
  34. import { checkUserName, addDowm } from '/@/api/equity'
  35. import { useUserStore } from '/@/store/modules/user';
  36. const { t } = useI18n();
  37. export default defineComponent({
  38. components: { BasicModal, BasicForm, TableImg },
  39. props: {
  40. userData: { type: Object },
  41. },
  42. emits: ['update', 'register'],
  43. setup(props, { emit }) {
  44. const fileFlow = reactive({
  45. file:null,
  46. type:2,//2-普通发票,3-专用发票
  47. })
  48. const userStore = useUserStore();
  49. const agent = computed(() => userStore.getAgent);
  50. const { createMessage } = useMessage();
  51. const schemas: FormSchema[] = [
  52. {
  53. field: 'userName',
  54. component: 'Input',
  55. label: t('routes.equity.userName'),
  56. required: true,
  57. componentProps: {
  58. autoComplete:'off',
  59. // readonly:preventAutoFill.value
  60. },
  61. rules: [
  62. {
  63. required: true,
  64. // @ts-ignore
  65. validator: async (rule, value) => {
  66. console.log('value',value)
  67. const regEmail = /^(.+)@(.+)$/
  68. const regPos = /^1([38][0-9]|4[579]|5[0-3,5-9]|6[6]|7[0135678]|9[89])\d{8}$/; // 非中文
  69. if (!value) {
  70. return Promise.reject(t('routes.equity.rules.userName'));
  71. }
  72. if (!(regPos.test(value) || regEmail.test(value))) {
  73. /* eslint-disable-next-line */
  74. return Promise.reject(t('routes.equity.rules.userName1'));
  75. }
  76. let res = await checkUserName({userName:value})
  77. if(!res){
  78. return Promise.reject(t('routes.equity.rules.userName2'));
  79. }
  80. return Promise.resolve();
  81. },
  82. trigger: 'change',
  83. },
  84. ],
  85. colProps: {
  86. span: 16,
  87. },
  88. },{
  89. field: 'count',
  90. component: 'InputNumber',
  91. label: t('routes.equity.addcount'),
  92. required: true,
  93. suffix:`${t('routes.equity.syks')} ${agent.value.downSubNum} ${t('routes.equity.unit.2')}`,
  94. // defaultValue:1,
  95. componentProps:{
  96. max:agent.value.downSubNum,
  97. min:1,
  98. },
  99. colProps: {
  100. span: 22,
  101. },
  102. },
  103. ];
  104. const [registerForm, { validate, resetFields, updateSchema }] = useForm({
  105. labelWidth: 120,
  106. schemas:schemas,
  107. showActionButtonGroup: false,
  108. actionColOptions: {
  109. span: 24,
  110. },
  111. });
  112. onMounted(() => {});
  113. let addListFunc = () => {};
  114. const [register, { closeModal }] = useModalInner((data) => {
  115. resetFields();
  116. updateSchema([
  117. {field: 'count',suffix:`${t('routes.equity.syks')} ${agent.value.downSubNum} ${t('routes.equity.unit.2')}`,
  118. componentProps:{
  119. max:agent.value.downSubNum,
  120. min:1,
  121. },}
  122. ])
  123. // data && onDataReceive(data);
  124. });
  125. async function onDataReceive() {
  126. resetFields();
  127. }
  128. const handleSubmit = async () => {
  129. const values = await validate();
  130. const res = await addDowm(values)
  131. console.log('res',res)
  132. closeModal();
  133. emit('update',true);
  134. };
  135. function handleVisibleChange(v) {
  136. v && props.userData && nextTick(() => onDataReceive(props.userData));
  137. }
  138. return {
  139. register,
  140. registerForm,
  141. fileFlow,
  142. handleVisibleChange,
  143. handleSubmit,
  144. addListFunc,
  145. resetFields,
  146. t,
  147. };
  148. },
  149. });
  150. </script>