DownModal.vue 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. <template>
  2. <BasicModal
  3. v-bind="$attrs"
  4. @register="register"
  5. title="新增下载"
  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: '用户账号',
  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 regPos = /^1([38][0-9]|4[579]|5[0-3,5-9]|6[6]|7[0135678]|9[89])\d{8}$/; // 非中文
  68. if (!value) {
  69. return Promise.reject(t('routes.equity.rules.userName'));
  70. }
  71. if (!regPos.test(value)) {
  72. /* eslint-disable-next-line */
  73. return Promise.reject(t('routes.equity.rules.userName1'));
  74. }
  75. let res = await checkUserName({userName:value})
  76. if(!res){
  77. return Promise.reject(t('routes.equity.rules.userName2'));
  78. }
  79. return Promise.resolve();
  80. },
  81. trigger: 'change',
  82. },
  83. ],
  84. colProps: {
  85. span: 22,
  86. },
  87. },{
  88. field: 'count',
  89. component: 'InputNumber',
  90. label: ' 新增次数',
  91. required: true,
  92. suffix:`剩余可售 ${agent.value.downSubNum} 个`,
  93. componentProps:{
  94. max:agent.value.downSubNum,
  95. min:1,
  96. },
  97. colProps: {
  98. span: 19,
  99. },
  100. },
  101. ];
  102. const [registerForm, { validate, resetFields, updateSchema }] = useForm({
  103. labelWidth: 120,
  104. schemas:schemas,
  105. showActionButtonGroup: false,
  106. actionColOptions: {
  107. span: 24,
  108. },
  109. });
  110. onMounted(() => {});
  111. let addListFunc = () => {};
  112. const [register, { closeModal }] = useModalInner((data) => {
  113. resetFields();
  114. updateSchema([
  115. {field: 'count',suffix:`剩余可售 ${agent.value.downSubNum} 个`,
  116. componentProps:{
  117. max:agent.value.downSubNum,
  118. min:1,
  119. },}
  120. ])
  121. // data && onDataReceive(data);
  122. });
  123. async function onDataReceive() {
  124. resetFields();
  125. }
  126. const handleSubmit = async () => {
  127. const values = await validate();
  128. const res = await addDowm(values)
  129. console.log('res',res)
  130. closeModal();
  131. emit('update',true);
  132. };
  133. function handleVisibleChange(v) {
  134. v && props.userData && nextTick(() => onDataReceive(props.userData));
  135. }
  136. return {
  137. register,
  138. registerForm,
  139. fileFlow,
  140. handleVisibleChange,
  141. handleSubmit,
  142. addListFunc,
  143. resetFields,
  144. t,
  145. };
  146. },
  147. });
  148. </script>