EditModal.vue 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. <template>
  2. <BasicModal
  3. v-bind="$attrs"
  4. @register="register"
  5. title="开票详情"
  6. height="500"
  7. :showOkBtn="false"
  8. :showCancelBtn="false"
  9. @visible-change="handleVisibleChange"
  10. @cancel="resetFields"
  11. @ok="handleSubmit"
  12. >
  13. <div class="pt-2px pr-3px">
  14. <BasicForm @register="registerForm">
  15. <template #text="{ model, field }">
  16. {{ model[field] }}
  17. </template>
  18. <template #img="{ model }">
  19. <TableImg v-if="model.invoiceUrl" :size="200" :adaptations="true" :simpleShow="true" :imgList="[model.invoiceUrl]" />
  20. </template>
  21. </BasicForm>
  22. </div>
  23. </BasicModal>
  24. </template>
  25. <script lang="ts">
  26. import { defineComponent, nextTick, onMounted, reactive } from 'vue';
  27. import { BasicModal, useModalInner } from '/@/components/Modal';
  28. import { BasicForm, FormSchema, useForm } from '/@/components/Form/index';
  29. import { TableImg } from '/@/components/Table';
  30. import { useMessage } from '/@/hooks/web/useMessage';
  31. import { InvoiceRegister, InvoiceDetail } from '/@/api/order';
  32. import { useI18n } from '/@/hooks/web/useI18n';
  33. import { uploadApi } from '/@/api/product/index';
  34. import { ResultEnum } from '/@/enums/httpEnum';
  35. const { t } = useI18n();
  36. export default defineComponent({
  37. components: { BasicModal, BasicForm, TableImg },
  38. props: {
  39. userData: { type: Object },
  40. },
  41. emits: ['update', 'register'],
  42. setup(props, { emit }) {
  43. const fileFlow = reactive({
  44. file:null,
  45. type:2,//2-普通发票,3-专用发票
  46. })
  47. const { createMessage } = useMessage();
  48. const schemas: FormSchema[] = [
  49. {
  50. field: 'id',
  51. component: 'Input',
  52. show:false,
  53. label: '发票编号',
  54. required: true,
  55. },
  56. {
  57. field: 'email',
  58. component: 'Input',
  59. label: '邮箱',
  60. slot: 'text',
  61. ifShow:fileFlow.type == 2,
  62. colProps: {
  63. span: 24,
  64. },
  65. },{
  66. field: 'invoiceNum',
  67. component: 'Input',
  68. label: '发票编号',
  69. slot: 'text',
  70. required: true,
  71. colProps: {
  72. span: 24,
  73. },
  74. },{
  75. field: 'invoiceUrl',
  76. component: 'Upload',
  77. label: '电子发票',
  78. ifShow:fileFlow.type == 2,
  79. required: true,
  80. slot: 'img',
  81. colProps: {
  82. span: 22,
  83. },
  84. },{
  85. field: 'invoiceNum',
  86. component: 'Input',
  87. label: '发票编号',
  88. required: true,
  89. slot: 'text',
  90. colProps: {
  91. span: 24,
  92. },
  93. },{
  94. field: 'shipNum',
  95. component: 'Input',
  96. ifShow:fileFlow.type == 3,
  97. slot: 'text',
  98. label: '快递单号',
  99. required: true,
  100. colProps: {
  101. span: 24,
  102. },
  103. },
  104. ];
  105. const [registerForm, { validate, resetFields, setFieldsValue, updateSchema }] = useForm({
  106. labelWidth: 120,
  107. schemas:schemas,
  108. showActionButtonGroup: false,
  109. actionColOptions: {
  110. span: 24,
  111. },
  112. });
  113. onMounted(() => {});
  114. let addListFunc = () => {};
  115. const [register, { closeModal }] = useModalInner((data) => {
  116. data && onDataReceive(data);
  117. });
  118. async function onDataReceive(data) {
  119. resetFields();
  120. let detail = await InvoiceDetail({id:data.id})
  121. fileFlow.type = data.type
  122. setFieldsValue({
  123. ...data,
  124. ...detail,
  125. });
  126. updateSchema([
  127. {field: 'shipNum',ifShow:fileFlow.type == 3,},
  128. {field: 'email',ifShow:fileFlow.type == 2,},
  129. {field: 'invoiceUrl',ifShow:fileFlow.type == 2,},
  130. ])
  131. }
  132. const handleSubmit = async () => {
  133. closeModal();
  134. emit('update');
  135. };
  136. function handleVisibleChange(v) {
  137. v && props.userData && nextTick(() => onDataReceive(props.userData));
  138. }
  139. return {
  140. register,
  141. registerForm,
  142. fileFlow,
  143. handleVisibleChange,
  144. handleSubmit,
  145. addListFunc,
  146. resetFields,
  147. t,
  148. };
  149. },
  150. });
  151. </script>