no message
							parent
							
								
									efb8bc00f8
								
							
						
					
					
						commit
						fb50787fcd
					
				| 
						 | 
				
			
			@ -5,7 +5,7 @@
 | 
			
		|||
 * @Date:      2024-12-26 15:35:23
 | 
			
		||||
 * @Copyright  友仓
 | 
			
		||||
 */
 | 
			
		||||
import {postRequest, getRequest, getDownload2} from '/@/lib/axios';
 | 
			
		||||
import {postRequest, getRequest, postDownload2} from '/@/lib/axios';
 | 
			
		||||
 | 
			
		||||
export const addressApi = {
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -59,20 +59,11 @@ export const addressApi = {
 | 
			
		|||
        return postRequest('/address/importAddress', file);
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    createExportTask: () => {
 | 
			
		||||
        return postRequest('/address/createExportTask', {});
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    getExportProgress: (taskId: string) => {
 | 
			
		||||
        return getRequest(`/address/progress/${taskId}`, {});
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 导出  @author  hj
 | 
			
		||||
     */
 | 
			
		||||
    exportAddress: (taskId: string,signal?: AbortSignal) => {
 | 
			
		||||
        return getDownload2(`/address/exportAddress/${taskId}`, {},signal);
 | 
			
		||||
    exportAddress: (taskId: string, param: any, signal?: AbortSignal) => {
 | 
			
		||||
        return postDownload2(`/address/exportAddress/${taskId}`, param, signal);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -5,7 +5,7 @@
 | 
			
		|||
 * @Date:      2024-11-25 17:08:18
 | 
			
		||||
 * @Copyright  友仓
 | 
			
		||||
 */
 | 
			
		||||
import {postRequest, getRequest, getDownload2} from '/@/lib/axios';
 | 
			
		||||
import {postRequest, getRequest, postDownload2} from '/@/lib/axios';
 | 
			
		||||
 | 
			
		||||
export const itemApi = {
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -62,8 +62,7 @@ export const itemApi = {
 | 
			
		|||
    /**
 | 
			
		||||
     * 导出  @author  hj
 | 
			
		||||
     */
 | 
			
		||||
    exportItems: (taskId: string,signal?: AbortSignal) => {
 | 
			
		||||
        return getDownload2(`/item/exportItems/${taskId}`,{},signal);
 | 
			
		||||
    exportItems: (taskId: string, param: any, signal?: AbortSignal) => {
 | 
			
		||||
        return postDownload2(`/item/exportItems/${taskId}`, param, signal);
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,14 @@
 | 
			
		|||
import {postRequest, getRequest,} from '/@/lib/axios';
 | 
			
		||||
 | 
			
		||||
export const exportApi = {
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    createExportTask: () => {
 | 
			
		||||
        return postRequest('/export/createExportTask', {});
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    getExportProgress: (taskId: string) => {
 | 
			
		||||
        return getRequest(`/export/progress/${taskId}`, {});
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -184,6 +184,22 @@ export const postDownload = function (url, data) {
 | 
			
		|||
        });
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
export const postDownload2 = function (url: string, data: any, signal?: AbortSignal) {
 | 
			
		||||
    request({
 | 
			
		||||
        method: 'post',
 | 
			
		||||
        url,
 | 
			
		||||
        data,
 | 
			
		||||
        responseType: 'blob',
 | 
			
		||||
        signal
 | 
			
		||||
    })
 | 
			
		||||
        .then((data) => {
 | 
			
		||||
            handleDownloadData(data);
 | 
			
		||||
        })
 | 
			
		||||
        .catch((error) => {
 | 
			
		||||
            handleDownloadError(error);
 | 
			
		||||
        });
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 文件下载
 | 
			
		||||
 */
 | 
			
		||||
| 
						 | 
				
			
			@ -201,23 +217,6 @@ export const getDownload = function (url, params) {
 | 
			
		|||
            handleDownloadError(error);
 | 
			
		||||
        });
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
export const getDownload2 = function (url: string, params: any, signal?: AbortSignal) {
 | 
			
		||||
    request({
 | 
			
		||||
        method: 'get',
 | 
			
		||||
        url,
 | 
			
		||||
        params,
 | 
			
		||||
        responseType: 'blob',
 | 
			
		||||
        signal  // 注入取消信号
 | 
			
		||||
    })
 | 
			
		||||
        .then((data) => {
 | 
			
		||||
            handleDownloadData(data);
 | 
			
		||||
        })
 | 
			
		||||
        .catch((error) => {
 | 
			
		||||
            message.success('取消成功');
 | 
			
		||||
        });
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
function handleDownloadError(error) {
 | 
			
		||||
    if (error instanceof Blob) {
 | 
			
		||||
        const fileReader = new FileReader();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -197,6 +197,7 @@ import {message, Modal, UploadFile} from 'ant-design-vue';
 | 
			
		|||
import {LoadingOutlined} from '@ant-design/icons-vue';
 | 
			
		||||
import {SmartLoading} from '/@/components/framework/smart-loading';
 | 
			
		||||
import {addressApi} from '/@/api/business/wms/base/address/address-api';
 | 
			
		||||
import {exportApi} from '/@/api/business/wms/export/export-api'
 | 
			
		||||
import {PAGE_SIZE_OPTIONS} from '/@/constants/common-const';
 | 
			
		||||
import {smartSentry} from '/@/lib/smart-sentry';
 | 
			
		||||
import TableOperator from '/@/components/support/table-operator/index.vue';
 | 
			
		||||
| 
						 | 
				
			
			@ -462,12 +463,12 @@ const onExportAddress = async () => {
 | 
			
		|||
    resetProgressState(); // 重置进度状态
 | 
			
		||||
 | 
			
		||||
    // 创建导出任务
 | 
			
		||||
    const {data: taskId} = await addressApi.createExportTask();
 | 
			
		||||
    const {data: taskId} = await exportApi.createExportTask();
 | 
			
		||||
    currentTaskId.value = taskId;
 | 
			
		||||
 | 
			
		||||
    // 发起导出请求
 | 
			
		||||
    try {
 | 
			
		||||
      addressApi.exportAddress(taskId, abortController.value.signal)
 | 
			
		||||
      addressApi.exportAddress(taskId, queryForm, abortController.value.signal)
 | 
			
		||||
    } catch (error) {
 | 
			
		||||
      handleExportError();
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			@ -480,7 +481,11 @@ const onExportAddress = async () => {
 | 
			
		|||
    // 启动轮询
 | 
			
		||||
    timerId.value = setInterval(async () => {
 | 
			
		||||
      try {
 | 
			
		||||
        const {data: progress} = await addressApi.getExportProgress(currentTaskId.value);
 | 
			
		||||
        const {data: progress} = await exportApi.getExportProgress(currentTaskId.value);
 | 
			
		||||
 | 
			
		||||
        if (progress == -1) {
 | 
			
		||||
          handleExportError();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        progressPercent.value = progress;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -204,6 +204,7 @@ import {reactive, ref, onMounted} from 'vue';
 | 
			
		|||
import {message, Modal} from 'ant-design-vue';
 | 
			
		||||
import {SmartLoading} from '/@/components/framework/smart-loading';
 | 
			
		||||
import {itemApi} from '/@/api/business/wms/base/item/item-api.js';
 | 
			
		||||
import {exportApi} from '/@/api/business/wms/export/export-api'
 | 
			
		||||
import {PAGE_SIZE_OPTIONS} from '/@/constants/common-const';
 | 
			
		||||
import {smartSentry} from '/@/lib/smart-sentry';
 | 
			
		||||
import TableOperator from '/@/components/support/table-operator/index.vue';
 | 
			
		||||
| 
						 | 
				
			
			@ -213,7 +214,6 @@ import ItemSelect from "/@/views/business/wms/base/item/item-select.vue";
 | 
			
		|||
import {UploadFile} from 'ant-design-vue';
 | 
			
		||||
import {fileApi} from "/@/api/support/file-api";
 | 
			
		||||
import DictLabel from "/@/components/support/dict-label/index.vue";
 | 
			
		||||
import {addressApi} from "/@/api/business/wms/base/address/address-api";
 | 
			
		||||
import {LoadingOutlined} from "@ant-design/icons-vue";
 | 
			
		||||
// ---------------------------- 表格列 ----------------------------
 | 
			
		||||
let columns = ref([
 | 
			
		||||
| 
						 | 
				
			
			@ -517,12 +517,12 @@ const onExportItems = async () => {
 | 
			
		|||
    resetProgressState(); // 重置进度状态
 | 
			
		||||
 | 
			
		||||
    // 创建导出任务
 | 
			
		||||
    const {data: taskId} = await addressApi.createExportTask();
 | 
			
		||||
    const {data: taskId} = await exportApi.createExportTask();
 | 
			
		||||
    currentTaskId.value = taskId;
 | 
			
		||||
 | 
			
		||||
    // 发起导出请求
 | 
			
		||||
    try {
 | 
			
		||||
      itemApi.exportItems(taskId, abortController.value.signal)
 | 
			
		||||
      itemApi.exportItems(taskId, queryForm, abortController.value.signal)
 | 
			
		||||
    } catch (error) {
 | 
			
		||||
      handleExportError();
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			@ -535,7 +535,11 @@ const onExportItems = async () => {
 | 
			
		|||
    // 启动轮询
 | 
			
		||||
    timerId.value = setInterval(async () => {
 | 
			
		||||
      try {
 | 
			
		||||
        const {data: progress} = await addressApi.getExportProgress(currentTaskId.value);
 | 
			
		||||
        const {data: progress} = await exportApi.getExportProgress(currentTaskId.value);
 | 
			
		||||
 | 
			
		||||
        if (progress == -1) {
 | 
			
		||||
          handleExportError();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        progressPercent.value = progress;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue