Commit 5aa8f5e1 by 放生的三文鱼

增加导入导出

parent b61721b7
...@@ -152,6 +152,11 @@ export function* assetImport(payload) { ...@@ -152,6 +152,11 @@ export function* assetImport(payload) {
return yield call(service.assetImport, payload); return yield call(service.assetImport, payload);
} }
// draftImport
export function* draftImport(payload) {
return yield call(service.draftImport, payload);
}
export function* getDirectoryById(payload) { export function* getDirectoryById(payload) {
return yield call(service.getDirectoryById, payload); return yield call(service.getDirectoryById, payload);
} }
...@@ -204,6 +209,11 @@ export function* importLogs(payload) { ...@@ -204,6 +209,11 @@ export function* importLogs(payload) {
return yield call(service.importLogs, payload); return yield call(service.importLogs, payload);
} }
// importDraftLogs
export function* importDraftLogs(payload) {
return yield call(service.importDraftLogs, payload);
}
export function* recoveryFromRecycleBin(payload) { export function* recoveryFromRecycleBin(payload) {
return yield call(service.recoveryFromRecycleBin, payload); return yield call(service.recoveryFromRecycleBin, payload);
} }
......
...@@ -112,6 +112,12 @@ export function importLogs(payload) { ...@@ -112,6 +112,12 @@ export function importLogs(payload) {
return GetJSON("/dataassetmanager/dataAssetApi/listDataAssetImportLogsByPage", payload); return GetJSON("/dataassetmanager/dataAssetApi/listDataAssetImportLogsByPage", payload);
} }
// 导入草稿日志 /draftApi/listDraftImportLogsByPage
export function importDraftLogs(payload) {
return GetJSON("/dataassetmanager/draftApi/listDraftImportLogsByPage", payload);
}
export function recoveryFromRecycleBin(payload) { export function recoveryFromRecycleBin(payload) {
return PostJSON("/dataassetmanager/dataAssetApi/recoveryFromRecycleBin", payload); return PostJSON("/dataassetmanager/dataAssetApi/recoveryFromRecycleBin", payload);
} }
...@@ -184,6 +190,11 @@ export function assetImport(payload) { ...@@ -184,6 +190,11 @@ export function assetImport(payload) {
return PostFile("/dataassetmanager/dataAssetApi/import", payload); return PostFile("/dataassetmanager/dataAssetApi/import", payload);
} }
// /draftApi/batchUpdateByImport
export function draftImport(payload) {
return PostFile("/dataassetmanager/draftApi/batchUpdateByImport", payload);
}
export function getDirectoryById(payload) { export function getDirectoryById(payload) {
return GetJSON("/dataassetmanager/directoryApi/getDirectoryById", payload); return GetJSON("/dataassetmanager/directoryApi/getDirectoryById", payload);
} }
......
import React, { useCallback, createContext, useMemo } from "react"; import React, { useCallback, useState, useMemo } from "react";
import { import {
Table, Table,
Button, Button,
...@@ -12,17 +12,21 @@ import { ...@@ -12,17 +12,21 @@ import {
import { ExclamationCircleFilled } from "@ant-design/icons"; import { ExclamationCircleFilled } from "@ant-design/icons";
import { useGetAssetDraft } from "../hooks/assetData"; import { useGetAssetDraft } from "../hooks/assetData";
import { debounce } from "lodash"; import { debounce } from "lodash";
import { appId } from "../../../../App";
import AssetDetailDrawer from "../../AssetManage/Component/AssetDetailDrawer"; import AssetDetailDrawer from "../../AssetManage/Component/AssetDetailDrawer";
import ImportModal from "./ImportModal";
import LocalStorage from "local-storage";
import "./index.less"; import "./index.less";
// 主组件 // 主组件
const AssetManagementTable = () => { const AssetManagementTable = () => {
const [draftParams, setDraftParams] = React.useState({ const [draftParams, setDraftParams] = useState({
visible: false, visible: false,
dirId: "", dirId: "",
draftId: "", draftId: "",
templateType: "", templateType: "",
}); });
const [importModalVisible, setImportModalVisible] = useState(false);
const { const {
loading, loading,
templates, templates,
...@@ -42,6 +46,7 @@ const AssetManagementTable = () => { ...@@ -42,6 +46,7 @@ const AssetManagementTable = () => {
} = useGetAssetDraft({ setDraftParams }); } = useGetAssetDraft({ setDraftParams });
const [modal, contextHolder] = Modal.useModal(); const [modal, contextHolder] = Modal.useModal();
const changeTemplate = (value) => { const changeTemplate = (value) => {
LocalStorage.set(`templateType-${appId}`, value);
setCurrentTemplate(value); setCurrentTemplate(value);
}; };
...@@ -81,7 +86,7 @@ const AssetManagementTable = () => { ...@@ -81,7 +86,7 @@ const AssetManagementTable = () => {
onOk: () => { onOk: () => {
if (type === "删除") { if (type === "删除") {
batchDelete(); batchDelete();
}else if (type === "送审") { } else if (type === "送审") {
batchPublish(); batchPublish();
} }
confirmed.destroy(); confirmed.destroy();
...@@ -89,6 +94,14 @@ const AssetManagementTable = () => { ...@@ -89,6 +94,14 @@ const AssetManagementTable = () => {
}); });
}; };
const handleExportDraft = () => {
window.open(
`/api/dataassetmanager/draftApi/exportByDraftIds?dataAssetIds=${selectedRowKeys.join(
","
)}&templateType=${currentTemplate}`
);
};
const hasItems = useMemo(() => { const hasItems = useMemo(() => {
return selectedRowKeys.length === 0; return selectedRowKeys.length === 0;
}, [selectedRowKeys]); }, [selectedRowKeys]);
...@@ -113,8 +126,16 @@ const AssetManagementTable = () => { ...@@ -113,8 +126,16 @@ const AssetManagementTable = () => {
value={currentTemplate} value={currentTemplate}
onChange={changeTemplate} onChange={changeTemplate}
/> />
<Button disabled={hasItems}>批量修改</Button> <Button
<Button disabled={hasItems}>导出</Button> onClick={() => {
setImportModalVisible(true);
}}
>
批量修改
</Button>
<Button disabled={hasItems} onClick={handleExportDraft}>
导出
</Button>
<Button <Button
disabled={hasItems} disabled={hasItems}
type="primary" type="primary"
...@@ -202,6 +223,17 @@ const AssetManagementTable = () => { ...@@ -202,6 +223,17 @@ const AssetManagementTable = () => {
}); });
}} }}
/> />
<ImportModal
visible={importModalVisible}
onCancel={() => {
setImportModalVisible(false);
}}
onSuccess={() => {
getDraftData();
setImportModalVisible(false);
}}
/>
{contextHolder} {contextHolder}
</div> </div>
); );
......
import React, { useState, useEffect, useContext } from 'react'; import React, { useState, useEffect, useContext } from 'react';
import { Button, Upload, Drawer, Table, Pagination, Divider, Form, Typography } from 'antd'; import { Button, Upload, Drawer, Table, Pagination, Divider, Form, Typography } from 'antd';
import { UploadOutlined, DownloadOutlined } from '@ant-design/icons'; import { UploadOutlined, DownloadOutlined } from '@ant-design/icons';
import { dispatch } from '../../../model'; import { dispatch } from '../../../../model';
import { showMessage, formatDate } from '../../../util'; import { showMessage, formatDate } from '../../../../util';
import { AppContext } from '../../../App'; import { AppContext } from '../../../../App';
import { getTemplateType } from '../../../util/axios'; import { getTemplateType } from '../../../../util/axios';
const FC = (props) => { const FC = (props) => {
const { onCancel, onSuccess, visible, } = props; const { onCancel, onSuccess, visible} = props;
const [ fileList, setFileList ] = useState([]); const [ fileList, setFileList ] = useState([]);
const [ confirmLoading, setConfirmLoading ] = useState(false); const [ confirmLoading, setConfirmLoading ] = useState(false);
...@@ -154,8 +154,8 @@ const FC = (props) => { ...@@ -154,8 +154,8 @@ const FC = (props) => {
setConfirmLoading(true); setConfirmLoading(true);
dispatch({ dispatch({
type: 'assetmanage.draftAssetImport', type: 'assetmanage.draftImport',
payload: { fileList: fileList, params: { env: `${app?.env?.domainId}`, saveAsDraft: false } }, payload: { fileList: fileList, params: { env: `${app?.env?.domainId}`} },
callback: data => { callback: data => {
setConfirmLoading(false); setConfirmLoading(false);
setFileList([]); setFileList([]);
...@@ -178,7 +178,7 @@ const FC = (props) => { ...@@ -178,7 +178,7 @@ const FC = (props) => {
<Drawer <Drawer
forceRender forceRender
visible={ visible } visible={ visible }
title='资产目录草稿批量修改' title='资产草稿批量修改'
width={900} width={900}
placement="right" placement="right"
closable={ true } closable={ true }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment