OutflowModal.vue 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. <template>
  2. <BasicModal
  3. v-bind="$attrs"
  4. @register="register"
  5. title="批量出库"
  6. @visible-change="handleVisibleChange"
  7. @cancel="resetFields"
  8. @ok="handleSubmit"
  9. :min-height="0"
  10. >
  11. <div class="pt-2px pr-3px">
  12. <BasicForm @register="registerForm" :model="model">
  13. <template #text="{ model, field }">
  14. {{ model[field] }}
  15. </template>
  16. </BasicForm>
  17. <a @click="getTemplate" style="padding: 20px 0 0 80px">下载批量出库模板</a>
  18. </div>
  19. </BasicModal>
  20. </template>
  21. <script lang="ts">
  22. import { defineComponent, ref, nextTick, onMounted, reactive } from 'vue';
  23. import { BasicModal, useModalInner } from '/@/components/Modal';
  24. import { BasicForm, FormSchema, useForm } from '/@/components/Form/index';
  25. import { useMessage } from '/@/hooks/web/useMessage';
  26. import { downloadByData } from '/@/utils/file/download'
  27. // import { sceneMove } from '/@/api/operate';
  28. import { companyUploadExcel, downTemplate } from '/@/api/customer';
  29. import { useI18n } from '/@/hooks/web/useI18n';
  30. import { uploadApi, AddAndUpload } from '/@/api/product/index';
  31. const { t } = useI18n();
  32. export default defineComponent({
  33. components: { BasicModal, BasicForm },
  34. props: {
  35. userData: { type: Object },
  36. },
  37. emits: ['update', 'register'],
  38. setup(props, { emit }) {
  39. const modelRef = ref({});
  40. const fileFlow = reactive({
  41. file: null,
  42. });
  43. const { createMessage } = useMessage();
  44. const schemas: FormSchema[] = [
  45. {
  46. field: 'file',
  47. component: 'Upload',
  48. label: t('sys.errorLog.tableColumnFile'),
  49. required: true,
  50. rules: [{ required: true, message: t('common.uploadMessge') }],
  51. // helpMessage: t('routes.corporation.uploadHelp'),
  52. itemProps: {
  53. validateTrigger: 'onBlur',
  54. },
  55. componentProps: {
  56. api: uploadApi,
  57. maxNumber: 1,
  58. maxSize: 5,
  59. fileFlow: true,
  60. accept: ['xls', 'xlsx'],
  61. afterFetch: function (data) {
  62. // console.log('uploadApi', data);
  63. // Reflect.set(data, 'url', data.file);
  64. fileFlow.file = data.file;
  65. console.log(fileFlow.file);
  66. return data;
  67. },
  68. },
  69. colProps: {
  70. span: 22,
  71. },
  72. },
  73. ];
  74. const [registerForm, { validate, resetFields, setFieldsValue }] = useForm({
  75. labelWidth: 120,
  76. schemas,
  77. showActionButtonGroup: false,
  78. actionColOptions: {
  79. span: 24,
  80. },
  81. });
  82. onMounted(() => {});
  83. let addListFunc = () => {};
  84. const [register, { closeModal }] = useModalInner((data) => {
  85. // console.log(data);
  86. data && onDataReceive(data);
  87. });
  88. function onDataReceive(data) {
  89. modelRef.value = data;
  90. resetFields();
  91. setFieldsValue({
  92. type: data.sceneName,
  93. });
  94. }
  95. const handleSubmit = async () => {
  96. try {
  97. const params = await validate();
  98. const apiData = {
  99. file: fileFlow.file,
  100. data:{
  101. type: 1,
  102. }
  103. };
  104. const res = await companyUploadExcel(apiData);
  105. console.log('res', res);
  106. closeModal();
  107. resetFields();
  108. createMessage.success(res || '导出成功');
  109. } catch (error) {
  110. console.log('not passing', error);
  111. }
  112. };
  113. function handleVisibleChange(v) {
  114. // console.log(v);
  115. // v && props.userData && nextTick(() => onDataReceive(props.userData));
  116. }
  117. async function getTemplate() {
  118. try {
  119. const res:BlobPart = await downTemplate({ type: 1 });
  120. downloadByData(res.data,'出库模板.xlsx')
  121. } catch (error) {
  122. console.log('not passing', error);
  123. }
  124. }
  125. return {
  126. register,
  127. schemas,
  128. registerForm,
  129. model: modelRef,
  130. fileFlow,
  131. handleVisibleChange,
  132. handleSubmit,
  133. addListFunc,
  134. resetFields,
  135. t,
  136. getTemplate,
  137. };
  138. },
  139. });
  140. </script>