Commit 43e0c992 by zhaochengxiang

凡软报表

parent c17b714a
......@@ -77,6 +77,6 @@
"last 1 safari version"
]
},
"proxy": "http://139.198.126.96:8089",
"proxy": "http://192.168.0.54:8888",
"homepage": "http://myhost/data-govern"
}
......@@ -256,3 +256,23 @@ export function* listSmartBIWorkbooks(payload) {
export function* deleteSmartBIWorkbooks(payload) {
return yield call(service.deleteSmartBIWorkbooks, payload);
}
export function* listSupportReportTypes() {
return yield call(service.listSupportReportTypes);
}
export function* saveWorkbookByType(payload) {
return yield call(service.saveWorkbookByType, payload)
}
export function* deleteWorkbooks(payload) {
return yield call(service.deleteWorkbooks, payload)
}
export function* listWorkbooksByType(payload) {
return yield call(service.listWorkbooksByType, payload)
}
export function* getViewUrlByWorkbookId(payload) {
return yield call(service.getViewUrlByWorkbookId, payload)
}
\ No newline at end of file
......@@ -263,3 +263,23 @@ export function listSmartBIWorkbooks(payload) {
export function deleteSmartBIWorkbooks(payload) {
return Post("/dataassetmanager/smartBIApi/deleteWorkbooks", payload);
}
export function listSupportReportTypes() {
return GetJSON("/dataassetmanager/reportApi/listSupportReportTypes")
}
export function saveWorkbookByType(payload) {
return Post("/dataassetmanager/reportApi/saveWorkbook", payload)
}
export function deleteWorkbooks(payload) {
return PostJSON("/dataassetmanager/reportApi/deleteWorkbooks", payload)
}
export function listWorkbooksByType(payload) {
return GetJSON("/dataassetmanager/reportApi/listWorkbooks", payload)
}
export function getViewUrlByWorkbookId(payload) {
return Get("/dataassetmanager/reportApi/getViewUrlByWorkbookId", payload)
}
......@@ -6,7 +6,7 @@ import { IsArr, showMessage, isSzseEnv } from './index';
const CancelToken = axios.CancelToken;
const baseURL = '/api/';
// const debugEnv = 475629450;
// const debugEnv = 1458134081;
const debugEnv = '';
const instance = axios.create({
......
......@@ -153,6 +153,9 @@ const AssetTable = (props) => {
const [ assetDeleteModalVisible, setAssetDeleteModalVisible ] = useState(false);
const [ worksheetModalVisible, setWorksheetModalVisible ] = useState(false);
const [ workbookDrawerVisible, setWorkbookDrawerVisible ] = useState(false);
const [ biType, setBiType ] = useState('');
const [ reportTypes, setReportTypes ] = useState();
const [ report, setReport ] = useState();
const [ modal, contextHolder ] = Modal.useModal();
const anchorId = getQueryParam(AnchorId, props?.location?.search);
......@@ -181,6 +184,7 @@ const AssetTable = (props) => {
}, [columns, TableWidth])
useEffect(() => {
getReportTypes();
window?.addEventListener("storage", storageChange);
return () => {
......@@ -239,6 +243,15 @@ const AssetTable = (props) => {
}
}
const getReportTypes = () => {
dispatch({
type: 'assetmanage.listSupportReportTypes',
callback: data => {
setReportTypes(data)
}
});
}
const getDataAssetLocationByRelation = () => {
setLoading(true);
dispatch({
......@@ -705,17 +718,19 @@ const AssetTable = (props) => {
onFullScreenChange && onFullScreenChange(!fullScreen);
}
const onSmartBIAnalyseClick = () => {
const onReportAnalyseClick = (val) => {
if ((checkedKeys||[]).length === 0) {
showMessage('warn', '请先选择一个资产');
} else if ((checkedKeys||[]).length > 1) {
showMessage('warn', '只能选择一个资产');
} else {
setReport(val);
setWorksheetModalVisible(true);
}
}
const onSmartBIWorkbookClick = () => {
const onReportWorkbookClick = (val) => {
setReport(val);
setWorkbookDrawerVisible(true);
}
......@@ -835,20 +850,22 @@ const AssetTable = (props) => {
</Menu.Item>
{
(reference===AssetManageReference) && <Menu.Item disabled={(checkedKeys||[]).length===0}>
<div className='text-center' onClick={onSmartBIAnalyseClick}>
smartBI自助分析
reference===AssetManageReference && reportTypes?.map(item =>
<React.Fragment key={item.code}>
<Menu.Item disabled={(checkedKeys||[]).length===0}>
<div className='text-center' onClick={() => { onReportAnalyseClick(item) }}>
{`${item.name}自助分析`}
</div>
</Menu.Item>
}
{
(reference===AssetManageReference) && <Menu.Item>
<div className='text-center' onClick={onSmartBIWorkbookClick}>
smartBI工作簿
<Menu.Item>
<div className='text-center' onClick={() => { onReportWorkbookClick(item)}}>
{`${item.name}工作簿`}
</div>
</Menu.Item>
</React.Fragment>
)
}
</Menu>
);
......@@ -889,7 +906,7 @@ const AssetTable = (props) => {
(reference===AssetManageReference && nodeLevel!==1 && nodeType!=='custom') && <Button onClick={addAsset}>新增</Button>
}
{
(compact && reference===AssetManageReference) ? <Dropdown overlay={moreMenu} placement="bottomCenter">
(reference===AssetManageReference) ? <Dropdown overlay={moreMenu} placement="bottomCenter">
<Button>其他操作</Button>
</Dropdown> : <React.Fragment>
{
......@@ -917,16 +934,6 @@ const AssetTable = (props) => {
</React.Fragment>
}
<Button onClick={onFilterElementClick}>可见列设置</Button>
{
(reference===AssetManageReference) && <React.Fragment>
<Tooltip title={(checkedKeys||[]).length===0?'请先选择资产':''}>
<Button onClick={onSmartBIAnalyseClick} disabled={(checkedKeys||[]).length===0} >smartBI自助分析</Button>
</Tooltip>
<Tooltip title={(checkedKeys||[]).length===0?'请先选择资产':''}>
<Button onClick={onSmartBIWorkbookClick} disabled={(checkedKeys||[]).length===0} >smartBI工作簿</Button>
</Tooltip>
</React.Fragment>
}
</React.Fragment>
}
{
......@@ -1068,12 +1075,15 @@ const AssetTable = (props) => {
onDeleteAll={onAssetDeleteModalDeleteAll}
/>
<WorksheetModal
report={report}
visible={ worksheetModalVisible }
id={ (checkedKeys||[]).length>0?checkedKeys[0]:'' }
metadata={ (checkedItems||[]).length>0?checkedItems[0].metadata:{} }
onCancel={onWorksheetModalCancel}
/>
<WorkbookDrawer
report={report}
visible={workbookDrawerVisible}
onCancel={onWorkbookDrawerCancel}
/>
......
import React, { useState, useEffect } from 'react';
import { Drawer, Pagination, List } from 'antd';
import { Drawer, Pagination, List, Modal } from 'antd';
import { dispatch } from '../../../../model';
import { showMessage } from '../../../../util';
const WorkbookDrawer = (props) => {
const { onCancel, visible } = props;
const { onCancel, visible, report } = props;
const [ loading, setLoading ] = useState(false);
const [ workbooks, setWorkbooks ] = useState([]);
const [ pagination, setPagination ] = useState( { pageNum: 1, pageSize: 20 } );
const { pageNum, pageSize } = pagination;
const [ total, setTotal ] = useState(0);
const [ modal, contextHolder ] = Modal.useModal();
useEffect(() => {
......@@ -24,11 +26,14 @@ const WorkbookDrawer = (props) => {
const getWorkbooks = (p = 1, s = 20) => {
setLoading(true);
dispatch({
type: 'assetmanage.listSmartBIWorkbooks',
type: 'assetmanage.listWorkbooksByType' ,
payload: {
pageNum: p,
pageSize: s
pageSize: s,
type: report?.code,
},
callback: data => {
setLoading(false);
......@@ -41,21 +46,21 @@ const WorkbookDrawer = (props) => {
})
}
const onDeleteClick = (id) => {
dispatch({
type: 'assetmanage.deleteSmartBIWorkbooks',
payload: {
data: [id]
},
callback: () => {
getWorkbooks();
}
})
}
// const onDeleteClick = (id) => {
// dispatch({
// type: 'assetmanage.deleteWorkbooks',
// payload: {
// data: [id]
// },
// callback: () => {
// getWorkbooks();
// }
// })
// }
const onDevelopClick = (id) => {
dispatch({
type: 'assetmanage.getSmartBIWorkbookUrl',
type: 'assetmanage.getViewUrlByWorkbookId',
payload: {
workbookId: id,
},
......@@ -69,7 +74,7 @@ const WorkbookDrawer = (props) => {
<Drawer
forceRender
visible={ visible }
title='smartBI工作簿'
title={`${report?.name}工作簿`}
width={900}
placement="right"
closable={ true }
......@@ -85,9 +90,25 @@ const WorkbookDrawer = (props) => {
renderItem={item => (
<List.Item
key={item.id}
actions={[
<a key="develop" onClick={() => { onDevelopClick(item.id); }}>报表开发</a>,
// <a key="delete" onClick={() => { onDeleteClick(item.id); }}>删除</a>,
actions={[<a key="develop" onClick={() => { onDevelopClick(item.id); }}>报表开发</a>,
<a key="delete" onClick={() => {
modal.confirm({
title: '提示',
content: '确定删除该报表吗?',
onOk: () => {
dispatch({
type: 'assetmanage.deleteWorkbooks',
payload: {
data: [item.id]
},
callback: data => {
showMessage('success', '删除成功');
getWorkbooks()
}
})
}
})
}}>删除</a>
]}
>
<List.Item.Meta
......@@ -115,6 +136,7 @@ const WorkbookDrawer = (props) => {
pageSizeOptions={[10,20]}
showTotal={total => `共 ${total} 条`}
/>
{contextHolder}
</Drawer>
)
}
......
......@@ -6,35 +6,38 @@ import { showMessage } from '../../../../util';
const WorksheetModal = (props) => {
const { onCancel, visible, id, metadata = {} } = props;
const { onCancel, visible, id, report, metadata = {} } = props;
const [ confirmLoading, setConfirmLoading ] = useState(false);
const [ form ] = Form.useForm();
useEffect(() => {
if (visible) {
form?.setFieldsValue({ tableName: metadata?.tableName, columnNames: metadata?.columnItems?.map(item => item.metadataColumnName) });
form?.setFieldsValue({ tableName: metadata?.tableName, columns: metadata?.columnItems?.map(item => {
return {
cnName: item.metadataColumnCnName,
metadataColumnId: item.metadataColumnId,
name: item.metadataColumnName
}
}, [visible])
}) });
}
}, [visible, report, metadata])
const onOk = async() => {
try {
const row = await form?.validateFields();
let metadataTableId = '';
metadata?.columnItems?.forEach(item => {
if (!metadataTableId) {
metadataTableId = item.metadataTableId;
}
})
setConfirmLoading(true);
dispatch({
type: 'assetmanage.saveSmartBIWorkbook',
type: 'assetmanage.saveWorkbookByType',
payload: {
data: {
dataAssetId:id,
metadataTableId,
metadataTableId: metadata?.metadataTableId,
tableName: metadata?.tableName,
tableCnName: metadata?.tableCnName,
type: report?.code,
...row,
}
},
......@@ -77,7 +80,7 @@ const WorksheetModal = (props) => {
return (
<Modal
forceRender
title='工作簿信息'
title={`${report?.name}工作簿信息`}
visible={ visible }
width={ 600 }
onCancel={() => {
......@@ -104,12 +107,47 @@ const WorksheetModal = (props) => {
</Form.Item>
<Form.Item
label="字段"
name="columnNames"
name="columns"
>
<ColumnsItem data={metadata?.columnItems} />
</Form.Item>
<Form.Item
label="元数据"
name="tableName"
hidden={true}
>
<Input />
</Form.Item>
</Form>
</Modal>
);
}
export default WorksheetModal;
const ColumnsItem = ({ value, onChange, data }) => {
return (
<Checkbox.Group
onChange={(checkedValue) => {
if ((checkedValue??[]).length === 0) {
onChange([])
} else {
const filterData = (data??[]).filter(item => checkedValue.includes(item.metadataColumnName))
onChange(filterData.map(item => {
return {
cnName: item.metadataColumnCnName,
metadataColumnId: item.metadataColumnId,
name: item.metadataColumnName
}
}))
}
}}
value={(value??[]).map(item => item.name)}
>
<Checkbox.Group>
<Row>
{
metadata?.columnItems?.map((item, index) => <Col key={index} span={8}>
data?.map((item, index) => <Col key={index} span={8}>
<Checkbox
value={item.metadataColumnName}
style={{
......@@ -122,17 +160,5 @@ const WorksheetModal = (props) => {
}
</Row>
</Checkbox.Group>
</Form.Item>
<Form.Item
label="元数据"
name="tableName"
hidden={true}
>
<Input />
</Form.Item>
</Form>
</Modal>
);
)
}
\ No newline at end of file
export default WorksheetModal;
\ No newline at end of file
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