batchPutModal.vue 4.4 KB

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