Commit 157e6de2 by 放生的三文鱼

完成草稿

parent 57d2e62e
...@@ -355,3 +355,12 @@ export function* listDraftDataAssetsByPage(payload) { ...@@ -355,3 +355,12 @@ export function* listDraftDataAssetsByPage(payload) {
export function* checkIsNeedSaveAsDraft(payload) { export function* checkIsNeedSaveAsDraft(payload) {
return yield call(service.checkIsNeedSaveAsDraft, payload) return yield call(service.checkIsNeedSaveAsDraft, payload)
} }
// checkIsNeedSaveAsDraftDataAsset
export function* checkIsNeedSaveAsDraftDataAsset(payload) {
return yield call(service.checkIsNeedSaveAsDraftDataAsset, payload)
}
// saveAsDraftDataAsset
export function* saveAsDraftDataAsset(payload) {
return yield call(service.saveAsDraftDataAsset, payload)
}
import { PostJSON, GetJSON, PostFile, Post, Get, callFetchRaw } from "../util/axios" import { PostJSON, GetJSON, PostFile, Post, Get, callFetchRaw } from "../util/axios"
import qs from "qs";
export function listDataAssets(payload) {
}
export function importElement(payload) { export function importElement(payload) {
return PostFile("/dataassetmanager/elementApi/import", payload); return PostFile("/dataassetmanager/elementApi/import", payload);
} }
...@@ -346,10 +350,24 @@ export function deleteDraftDataAsset(payload) { ...@@ -346,10 +350,24 @@ export function deleteDraftDataAsset(payload) {
return PostJSON('/dataassetmanager/draftApi/deleteDrafts', payload); return PostJSON('/dataassetmanager/draftApi/deleteDrafts', payload);
} }
// /draftApi/publishDrafts
export function publishDraftDataAsset(payload) {
return PostJSON(`/dataassetmanager/draftApi/publishDrafts?${qs.stringify(payload, { arrayFormat: 'repeat' })}`);
}
// /draftApi/getDraftDetail // /draftApi/getDraftDetail
export function getDraftDataAssetDetail(payload) { export function getDraftDataAssetDetail(payload) {
return PostJSON('/dataassetmanager/draftApi/getDraftDetail', payload); return PostJSON('/dataassetmanager/draftApi/getDraftDetail', payload);
} }
// /dataAssetApi/checkIsNeedSaveAsDraft
export function checkIsNeedSaveAsDraftDataAsset(payload) {
return PostJSON('/dataassetmanager/dataAssetApi/checkIsNeedSaveAsDraft', payload);
}
// /draftApi/saveAsDraft
export function saveAsDraftDataAsset(payload) {
return PostJSON('/dataassetmanager/draftApi/saveAsDraft', payload);
}
import React, { useCallback } from "react"; import React, { useCallback, createContext, useMemo } from "react";
import { import {
Table, Table,
Button, Button,
...@@ -9,16 +9,18 @@ import { ...@@ -9,16 +9,18 @@ import {
Modal, Modal,
Pagination, Pagination,
} from "antd"; } from "antd";
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 AssetDetailDrawer from "../../AssetManage/Component/AssetDetailDrawer"; import AssetDetailDrawer from "../../AssetManage/Component/AssetDetailDrawer";
import "./index.less"; import "./index.less";
// 主组件 // 主组件
const AssetManagementTable = () => { const AssetManagementTable = () => {
const [draftParams, setDraftParams] = React.useState({ const [draftParams, setDraftParams] = React.useState({
visible: false, visible: false,
dirId: "", dirId: "",
draftId:'', draftId: "",
templateType: "", templateType: "",
}); });
const { const {
...@@ -32,8 +34,13 @@ const AssetManagementTable = () => { ...@@ -32,8 +34,13 @@ const AssetManagementTable = () => {
setPagination, setPagination,
dataLoading, dataLoading,
draftData, draftData,
getDraftData,
selectedRowKeys,
setSelectedRowKeys,
batchDelete,
batchPublish,
} = useGetAssetDraft({ setDraftParams }); } = useGetAssetDraft({ setDraftParams });
const [modal, contextHolder] = Modal.useModal();
const changeTemplate = (value) => { const changeTemplate = (value) => {
setCurrentTemplate(value); setCurrentTemplate(value);
}; };
...@@ -61,6 +68,31 @@ const AssetManagementTable = () => { ...@@ -61,6 +68,31 @@ const AssetManagementTable = () => {
})); }));
}; };
const rowSelection = {
onChange: (selectedRowKeys) => {
setSelectedRowKeys(selectedRowKeys);
},
};
const showConfirm = (type) => {
const confirmed = modal.confirm({
title: "提示",
content: `确认${type}选中的草稿吗?`,
onOk: () => {
if (type === "删除") {
batchDelete();
}else if (type === "送审") {
batchPublish();
}
confirmed.destroy();
},
});
};
const hasItems = useMemo(() => {
return selectedRowKeys.length === 0;
}, [selectedRowKeys]);
return ( return (
<div style={{ background: "#fff" }} className="container"> <div style={{ background: "#fff" }} className="container">
{/* 操作按钮区域 */} {/* 操作按钮区域 */}
...@@ -81,10 +113,26 @@ const AssetManagementTable = () => { ...@@ -81,10 +113,26 @@ const AssetManagementTable = () => {
value={currentTemplate} value={currentTemplate}
onChange={changeTemplate} onChange={changeTemplate}
/> />
<Button>批量修改</Button> <Button disabled={hasItems}>批量修改</Button>
<Button>导出</Button> <Button disabled={hasItems}>导出</Button>
<Button type="primary">送审</Button> <Button
<Button danger>删除</Button> disabled={hasItems}
type="primary"
onClick={() => {
showConfirm("送审");
}}
>
送审
</Button>
<Button
disabled={hasItems}
danger
onClick={() => {
showConfirm("删除");
}}
>
删除
</Button>
</Space> </Space>
<Space> <Space>
...@@ -127,6 +175,8 @@ const AssetManagementTable = () => { ...@@ -127,6 +175,8 @@ const AssetManagementTable = () => {
pagination={null} pagination={null}
size="middle" size="middle"
scroll={{ x: true }} scroll={{ x: true }}
rowSelection={rowSelection}
rowKey={"id"}
/> />
<Pagination <Pagination
style={{ margin: "12px auto", textAlign: "center" }} style={{ margin: "12px auto", textAlign: "center" }}
...@@ -143,14 +193,16 @@ const AssetManagementTable = () => { ...@@ -143,14 +193,16 @@ const AssetManagementTable = () => {
<AssetDetailDrawer <AssetDetailDrawer
{...draftParams} {...draftParams}
onCancel={() => { onCancel={() => {
getDraftData();
setDraftParams({ setDraftParams({
visible: false, visible: false,
dirId: "", dirId: "",
draftId:'', draftId: "",
templateType: "", templateType: "",
}); });
}} }}
/> />
{contextHolder}
</div> </div>
); );
}; };
......
...@@ -5,10 +5,11 @@ import { ...@@ -5,10 +5,11 @@ import {
getDraftDataAsset, getDraftDataAsset,
listFilterElementsGroupByType, listFilterElementsGroupByType,
deleteDraftDataAsset, deleteDraftDataAsset,
publishDraftDataAsset,
} from "../../../../service/dataassetmanager"; } from "../../../../service/dataassetmanager";
import { AssetItem } from "../../AssetManage/Component/AssetTable"; import { AssetItem } from "../../AssetManage/Component/AssetTable";
import { showMessage } from "../../../../util"; import { showMessage, showErrorNotifaction } from "../../../../util";
import LocalStorage from 'local-storage'; import LocalStorage from "local-storage";
import { appId } from "../../../../App"; import { appId } from "../../../../App";
const { Text } = Typography; const { Text } = Typography;
...@@ -28,6 +29,37 @@ export function useGetAssetDraft({ setDraftParams }) { ...@@ -28,6 +29,37 @@ export function useGetAssetDraft({ setDraftParams }) {
}); });
const [dataLoading, setDataLoading] = useState(false); const [dataLoading, setDataLoading] = useState(false);
const [draftData, setDraftData] = useState(); const [draftData, setDraftData] = useState();
const [selectedRowKeys, setSelectedRowKeys] = useState([]);
// 批量删除
const batchDelete = async (id = "") => {
try {
await deleteDraftDataAsset({
data: id ? id : selectedRowKeys,
});
showMessage("success", "删除成功");
getDraftData();
} catch (error) {
console.log("error", error);
let message = error?.ApiError?.cnMessage || "操作失败,请稍后再试";
showErrorNotifaction("提示", message, 3);
}
};
// 批量送审
const batchPublish = async (id = "") => {
try {
await publishDraftDataAsset({
draftIds: id ? id : selectedRowKeys,
});
showMessage("success", "送审成功");
getDraftData();
} catch (error) {
console.log("error", error);
let message = error?.ApiError?.cnMessage || "操作失败,请稍后再试";
showErrorNotifaction("提示", message, 3);
}
};
const getTemplatesList = async () => { const getTemplatesList = async () => {
try { try {
setLoading(true); setLoading(true);
...@@ -183,10 +215,7 @@ export function useGetAssetDraft({ setDraftParams }) { ...@@ -183,10 +215,7 @@ export function useGetAssetDraft({ setDraftParams }) {
width: 160, width: 160,
render: (text, record) => { render: (text, record) => {
const disabled = record?.draftState !== "draft"; const disabled = record?.draftState !== "draft";
const handlePublish = () => {
// 发布操作逻辑
console.log("发布记录:", record);
};
const handleEdit = (record) => { const handleEdit = (record) => {
// 编辑操作逻辑 // 编辑操作逻辑
console.log("编辑记录:", record); console.log("编辑记录:", record);
...@@ -197,33 +226,18 @@ export function useGetAssetDraft({ setDraftParams }) { ...@@ -197,33 +226,18 @@ export function useGetAssetDraft({ setDraftParams }) {
templateType: currentTemplate, templateType: currentTemplate,
}); });
}; };
const handleDelete = async (record) => {
// 删除操作逻辑
console.log("record:", record);
try {
await deleteDraftDataAsset({
data: [record?.id],
});
showMessage("success", "删除成功");
getDraftData();
} catch (error) {
console.log("error", error);
let message =
error?.ApiError?.cnMessage || "操作失败,请稍后再试";
showMessage("warn", message);
}
};
return ( return (
<div> <div>
<Button <Popconfirm
disabled={disabled} title="确认送审吗?"
type="link" onConfirm={() => {
size="small" batchPublish([record?.id]);
onClick={handlePublish} }}
> >
<Button disabled={disabled} type="link" size="small">
送审 送审
</Button> </Button>
</Popconfirm>
<Button <Button
size="small" size="small"
waring waring
...@@ -238,7 +252,7 @@ export function useGetAssetDraft({ setDraftParams }) { ...@@ -238,7 +252,7 @@ export function useGetAssetDraft({ setDraftParams }) {
<Popconfirm <Popconfirm
title="确认删除草稿?" title="确认删除草稿?"
onConfirm={() => { onConfirm={() => {
handleDelete(record); batchPublish([record?.id]);
}} }}
> >
<Button disabled={disabled} size="small" type="link" danger> <Button disabled={disabled} size="small" type="link" danger>
...@@ -304,6 +318,7 @@ export function useGetAssetDraft({ setDraftParams }) { ...@@ -304,6 +318,7 @@ export function useGetAssetDraft({ setDraftParams }) {
setDataLoading(false); setDataLoading(false);
} catch (error) { } catch (error) {
setDataLoading(false); setDataLoading(false);
} finally {
} }
}; };
...@@ -324,5 +339,10 @@ export function useGetAssetDraft({ setDraftParams }) { ...@@ -324,5 +339,10 @@ export function useGetAssetDraft({ setDraftParams }) {
setPagination, setPagination,
dataLoading, dataLoading,
draftData, draftData,
getDraftData,
selectedRowKeys,
setSelectedRowKeys,
batchDelete,
batchPublish,
}; };
} }
...@@ -54,6 +54,7 @@ const AssetAction = (props) => { ...@@ -54,6 +54,7 @@ const AssetAction = (props) => {
const [currentDomainGroup, setCurrentDomainGroup] = useState(undefined); const [currentDomainGroup, setCurrentDomainGroup] = useState(undefined);
const [currentBussinessDomain, setCurrentBussinessDomain] = useState(undefined); const [currentBussinessDomain, setCurrentBussinessDomain] = useState(undefined);
const [canEdit, setEdit] = useState(false); const [canEdit, setEdit] = useState(false);
const [isExist, setIsExist] = useState(false);
const [metadata, setMetadata] = useState(undefined); const [metadata, setMetadata] = useState(undefined);
const [loadingMetadataColumnList, setLoadingMetadataColumnList] = useState(false); const [loadingMetadataColumnList, setLoadingMetadataColumnList] = useState(false);
const [metadataColumnList, setMetadataColumnList] = useState(undefined); const [metadataColumnList, setMetadataColumnList] = useState(undefined);
...@@ -171,6 +172,7 @@ const AssetAction = (props) => { ...@@ -171,6 +172,7 @@ const AssetAction = (props) => {
setPagination({...pagination, pageNum: 1}); setPagination({...pagination, pageNum: 1});
getElements(); getElements();
getDraftData() getDraftData()
checkIsNeedSaveAsDraftDataAsset()
} }
else if ((id||'')!=='') { else if ((id||'')!=='') {
setPagination({...pagination, pageNum: 1}); setPagination({...pagination, pageNum: 1});
...@@ -387,6 +389,21 @@ const AssetAction = (props) => { ...@@ -387,6 +389,21 @@ const AssetAction = (props) => {
}) })
} }
// 判断当前模版内容操作需不需要保存为草稿
const checkIsNeedSaveAsDraftDataAsset = () => {
dispatch({
type: 'assetmanage.checkIsNeedSaveAsDraftDataAsset',
payload: {
params: {
templateType
}
},
callback: value => {
setEdit(value);
}
})
}
const getAsset = (userElements=null) => { const getAsset = (userElements=null) => {
setLoading(true); setLoading(true);
dispatch({ dispatch({
...@@ -478,7 +495,7 @@ const AssetAction = (props) => { ...@@ -478,7 +495,7 @@ const AssetAction = (props) => {
}, },
callback: data => { callback: data => {
setLoading(false); setLoading(false);
setIsExist(data?.existDraft)
const metadataIndex = data?.elements?.findIndex(item => item.name === '资产项'); const metadataIndex = data?.elements?.findIndex(item => item.name === '资产项');
if (metadataIndex !== -1) { if (metadataIndex !== -1) {
...@@ -652,7 +669,29 @@ const AssetAction = (props) => { ...@@ -652,7 +669,29 @@ const AssetAction = (props) => {
} }
setConfirmLoading(true); setConfirmLoading(true);
console.log('assets',assets);
console.log('newElements',newElements);
if(draftId){
dispatch({
type: 'assetmanage.saveAsDraftDataAsset',
payload: {
params: {
operation:'change'
},
data:{ ...assets, elements: newElements }
},
callback: () => {
setConfirmLoading(false);
setCurrentAction('detail');
getDraftData();
showMessage("success",(action==='add')?"新增成功":"修改成功");
onChange && onChange();
},
error: () => {
setConfirmLoading(false);
}
})
}else{
dispatch({ dispatch({
type: 'assetmanage.checkCodeIsExist', type: 'assetmanage.checkCodeIsExist',
payload: { payload: {
...@@ -686,7 +725,7 @@ const AssetAction = (props) => { ...@@ -686,7 +725,7 @@ const AssetAction = (props) => {
setConfirmLoading(false); setConfirmLoading(false);
} }
}) })
}
} catch (errInfo) { } catch (errInfo) {
showMessage('warn', '请完成资产必填项') showMessage('warn', '请完成资产必填项')
} }
...@@ -950,12 +989,13 @@ const AssetAction = (props) => { ...@@ -950,12 +989,13 @@ const AssetAction = (props) => {
}} }}
> >
{ {
(!readonly && (reference===AssetManageReference||canEdit)) && <div className='flex' style={{ justifyContent: 'right' }}> (!readonly && (reference===AssetManageReference||canEdit||draftId)) && <div className='flex' style={{ justifyContent: 'right' }}>
<Space> <Space>
{ {
currentAction==='detail' ? <Button type='primary' onClick={onActionButtonClick}>编辑</Button> : <React.Fragment> currentAction==='detail' ? <Tooltip title={isExist?'资产存在草稿箱中,不允许编辑':''}><Button type='primary' disabled={isExist} onClick={onActionButtonClick}>编辑</Button></Tooltip> : <React.Fragment>
<Button type='primary' onClick={onCancelButtonClick}>取消</Button> <Button type='primary' onClick={onCancelButtonClick}>取消</Button>
<Button type='primary' onClick={onActionButtonClick}>保存</Button> {(canEdit&&draftId)?<Button type='primary' onClick={onActionButtonClick}>保存为草稿</Button>:
<Button type='primary' onClick={onActionButtonClick}>保存</Button>}
</React.Fragment> </React.Fragment>
} }
{/* <Button type='primary' onClick={onAuthorizationButtonClick}>授权</Button> */} {/* <Button type='primary' onClick={onAuthorizationButtonClick}>授权</Button> */}
......
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