Commit d6496c28 by zhaochengxiang

模型配置权限

parent 6c0f3df3
...@@ -325,3 +325,11 @@ export function* getInheritanceTypes() { ...@@ -325,3 +325,11 @@ export function* getInheritanceTypes() {
export function* inheriteDataModel(payload) { export function* inheriteDataModel(payload) {
return yield call(datamodelerService.inheriteDataModel, payload); return yield call(datamodelerService.inheriteDataModel, payload);
} }
export function* getConfigPrivilege() {
return yield call(datamodelerService.getConfigPrivilege);
}
export function* getDesignPrivilege() {
return yield call(datamodelerService.getDesignPrivilege);
}
\ No newline at end of file
...@@ -276,3 +276,11 @@ export function getInheritanceTypes() { ...@@ -276,3 +276,11 @@ export function getInheritanceTypes() {
export function inheriteDataModel(payload) { export function inheriteDataModel(payload) {
return PostJSON("/datamodeler/easyDataModelerInheritance/inheriteDataModel", payload); return PostJSON("/datamodeler/easyDataModelerInheritance/inheriteDataModel", payload);
} }
export function getConfigPrivilege() {
return GetJSON("/datamodeler/easyDataModelerPrivilegeProvider/getConfigPrivilege");
}
export function getDesignPrivilege() {
return GetJSON("/datamodeler/easyDataModelerPrivilegeProvider/getDesignPrivilege");
}
\ No newline at end of file
import React, { useMemo } from 'react';
import { Button, Tooltip } from 'antd';
const FC = (props) => {
const { permissionKey, permissions, ...restProps } = props;
const havePermission = useMemo(() => {
let _havePermission = true;
if (permissionKey) {
const index = (permissions||[]).findIndex(item => item.name === permissionKey);
if (index !== -1) {
_havePermission = permissions[index].enabled ?? true;
}
}
return _havePermission;
}, [permissionKey, permissions])
return (
<Tooltip title={havePermission?'':'暂无权限'}>
<Button {...restProps} disabled={!havePermission} />
</Tooltip>
)
}
export default FC;
\ No newline at end of file
import React, { useEffect, useState } from 'react'; import React, { useEffect, useState, useContext, useMemo } from 'react';
import { Table, Button, Tooltip, Modal, Divider } from 'antd'; import { Table, Button, Tooltip, Modal, Divider } from 'antd';
import { dispatch } from '../../../../model'; import { dispatch } from '../../../../model';
import { showMessage } from '../../../../util'; import { showMessage } from '../../../../util';
import UpdatePartitionModal from './UpdatePartitionModal'; import UpdatePartitionModal from './UpdatePartitionModal';
import { ModelConfigContext } from '..';
import PermissionButton from '../../../../util/Component/PermissionButton';
const PartitionCURD = (props) => { const PartitionCURD = (props) => {
...@@ -14,14 +16,23 @@ const PartitionCURD = (props) => { ...@@ -14,14 +16,23 @@ const PartitionCURD = (props) => {
const { action, updataPartitionModalVisible, item } = actionData; const { action, updataPartitionModalVisible, item } = actionData;
const modelConfingContext = useContext(ModelConfigContext);
const [modal, contextHolder] = Modal.useModal(); const [modal, contextHolder] = Modal.useModal();
useEffect(() => { useEffect(() => {
getPartitions(); getPartitions();
}, []) }, [])
const permissions = useMemo(() => {
const index = (modelConfingContext?.permissions||[]).findIndex(item => item.privilegedObjectId === '4');
if (index !== -1) {
return modelConfingContext?.permissions[index].optionList;
}
return [];
}, [modelConfingContext?.permissions])
const columns = [ const columns = [
{ {
title: '序号', title: '序号',
...@@ -111,25 +122,29 @@ const PartitionCURD = (props) => { ...@@ -111,25 +122,29 @@ const PartitionCURD = (props) => {
render: (text,record) => { render: (text,record) => {
return ( return (
<div style={{ display: 'flex', alignItems: 'center' }}> <div style={{ display: 'flex', alignItems: 'center' }}>
<Button <PermissionButton
type='link' type='link'
size='small' size='small'
onClick={() => { editItem(record); }} onClick={() => { editItem(record); }}
style={{ padding: 0 }} style={{ padding: 0 }}
permissionKey='编辑'
permissions={permissions}
> >
编辑 编辑
</Button> </PermissionButton>
<div style={{ margin: '0 5px' }}> <div style={{ margin: '0 5px' }}>
<Divider type='vertical' /> <Divider type='vertical' />
</div> </div>
<Button <PermissionButton
type='link' type='link'
size='small' size='small'
onClick={() => { deleteItem(record); }} onClick={() => { deleteItem(record); }}
style={{ padding: 0 }} style={{ padding: 0 }}
permissionKey='删除'
permissions={permissions}
> >
删除 删除
</Button> </PermissionButton>
</div> </div>
) )
} }
...@@ -191,11 +206,13 @@ const PartitionCURD = (props) => { ...@@ -191,11 +206,13 @@ const PartitionCURD = (props) => {
return ( return (
<div> <div>
<div className='d-flex mb-3' style={{ alignItems: 'center' }}> <div className='d-flex mb-3' style={{ alignItems: 'center' }}>
<Button <PermissionButton
onClick={onAddClick} onClick={onAddClick}
permissionKey='新增'
permissions={permissions}
> >
新建 新建
</Button> </PermissionButton>
</div> </div>
<Table <Table
loading={loading} loading={loading}
......
import React, { useEffect, useState } from 'react'; import React, { useEffect, useState, useContext, useMemo } from 'react';
import { Table, Button, Tooltip, Modal, Divider, Select } from 'antd'; import { Table, Button, Tooltip, Modal, Divider, Select } from 'antd';
import { Action, TemplateId } from '../../../../util/constant'; import { Action, TemplateId } from '../../../../util/constant';
import { dispatch } from '../../../../model'; import { dispatch } from '../../../../model';
import { showMessage } from '../../../../util'; import { showMessage } from '../../../../util';
import { ModelConfigContext } from '..';
import PermissionButton from '../../../../util/Component/PermissionButton';
const TemplateCURD = (props) => { const TemplateCURD = (props) => {
const [constraints, setConstraints] = useState([]); const [constraints, setConstraints] = useState([]);
...@@ -11,6 +13,7 @@ const TemplateCURD = (props) => { ...@@ -11,6 +13,7 @@ const TemplateCURD = (props) => {
const [ loading, setLoading ] = useState(false); const [ loading, setLoading ] = useState(false);
const [currentConstraint, setCurrentConstraint] = useState(undefined); const [currentConstraint, setCurrentConstraint] = useState(undefined);
const modelConfingContext = useContext(ModelConfigContext);
const [modal, contextHolder] = Modal.useModal(); const [modal, contextHolder] = Modal.useModal();
useEffect(() => { useEffect(() => {
...@@ -27,6 +30,16 @@ const TemplateCURD = (props) => { ...@@ -27,6 +30,16 @@ const TemplateCURD = (props) => {
//eslint-disable-next-line react-hooks/exhaustive-deps //eslint-disable-next-line react-hooks/exhaustive-deps
}, [currentConstraint]) }, [currentConstraint])
const permissions = useMemo(() => {
const index = (modelConfingContext?.permissions||[]).findIndex(item => item.privilegedObjectId === '2');
if (index !== -1) {
return modelConfingContext?.permissions[index].optionList;
}
return [];
}, [modelConfingContext?.permissions])
const storageChange = (e) => { const storageChange = (e) => {
if (e.key === 'templateChange') { if (e.key === 'templateChange') {
getTemplates(); getTemplates();
...@@ -89,25 +102,29 @@ const TemplateCURD = (props) => { ...@@ -89,25 +102,29 @@ const TemplateCURD = (props) => {
render: (text,record) => { render: (text,record) => {
return ( return (
<div style={{ display: 'flex', alignItems: 'center' }}> <div style={{ display: 'flex', alignItems: 'center' }}>
<Button <PermissionButton
type='link' type='link'
size='small' size='small'
onClick={() => { editItem(record); }} onClick={() => { editItem(record); }}
style={{ padding: 0 }} style={{ padding: 0 }}
permissionKey='编辑'
permissions={permissions}
> >
编辑 编辑
</Button> </PermissionButton>
<div style={{ margin: '0 5px' }}> <div style={{ margin: '0 5px' }}>
<Divider type='vertical' /> <Divider type='vertical' />
</div> </div>
<Button <PermissionButton
type='link' type='link'
size='small' size='small'
onClick={() => { deleteItem(record); }} onClick={() => { deleteItem(record); }}
style={{ padding: 0 }} style={{ padding: 0 }}
permissionKey='删除'
permissions={permissions}
> >
删除 删除
</Button> </PermissionButton>
</div> </div>
) )
} }
...@@ -176,11 +193,13 @@ const TemplateCURD = (props) => { ...@@ -176,11 +193,13 @@ const TemplateCURD = (props) => {
return ( return (
<div> <div>
<div className='d-flex mb-3' style={{ alignItems: 'center', justifyContent: 'space-between' }}> <div className='d-flex mb-3' style={{ alignItems: 'center', justifyContent: 'space-between' }}>
<Button <PermissionButton
onClick={onAddClick} onClick={onAddClick}
permissionKey='新增'
permissions={permissions}
> >
新建 新建
</Button> </PermissionButton>
<Select <Select
placeholder='请选择规范' placeholder='请选择规范'
allowClear allowClear
......
import React, { useState } from 'react'; import React, { useState, useContext, useMemo } from 'react';
import { Button, Upload, Form, Row, Col } from 'antd'; import { Button, Upload, Form, Row, Col } from 'antd';
import { DownloadOutlined, UploadOutlined } from '@ant-design/icons'; import { DownloadOutlined, UploadOutlined } from '@ant-design/icons';
import { dispatchLatest } from '../../../../model'; import { dispatchLatest } from '../../../../model';
import { ModelConfigContext } from '..';
import PermissionButton from '../../../../util/Component/PermissionButton';
const WordTemplate = (props) => { const WordTemplate = (props) => {
const [ fileList, setFileList ] = useState([]); const [ fileList, setFileList ] = useState([]);
const [ confirmLoading, setConfirmLoading ] = useState(false); const [ confirmLoading, setConfirmLoading ] = useState(false);
const modelConfingContext = useContext(ModelConfigContext);
const [ form ] = Form.useForm(); const [ form ] = Form.useForm();
const permissions = useMemo(() => {
const index = (modelConfingContext?.permissions||[]).findIndex(item => item.privilegedObjectId === '1');
if (index !== -1) {
return modelConfingContext?.permissions[index].optionList;
}
return [];
}, [modelConfingContext?.permissions])
const downloadTemplate = () => { const downloadTemplate = () => {
window.open("/api/datamodeler/easyDataModelerExport/word/downloadTemplate"); window.open("/api/datamodeler/easyDataModelerExport/word/downloadTemplate");
} }
...@@ -100,16 +113,28 @@ const WordTemplate = (props) => { ...@@ -100,16 +113,28 @@ const WordTemplate = (props) => {
</Form.Item> </Form.Item>
</Col> </Col>
<Col> <Col>
<Button className='ml-3' icon={<DownloadOutlined />} onClick={ downloadTemplate }> <PermissionButton
className='ml-3'
icon={<DownloadOutlined />}
onClick={ downloadTemplate }
permissionKey='编辑'
permissions={permissions}
>
模版下载 模版下载
</Button> </PermissionButton>
</Col> </Col>
</Row> </Row>
</Form.Item> </Form.Item>
<Form.Item {...tailLayout}> <Form.Item {...tailLayout}>
<Button type="primary" htmlType="submit" loading={confirmLoading}> <PermissionButton
type="primary"
htmlType="submit"
loading={confirmLoading}
permissionKey='新增'
permissions={permissions}
>
确定 确定
</Button> </PermissionButton>
</Form.Item> </Form.Item>
</Form> </Form>
) )
......
import React, { useState } from 'react'; import React, { useEffect, useState } from 'react';
import { Tabs } from 'antd'; import { Tabs, Spin } from 'antd';
import { dispatch } from '../../../model';
import WordTemplate from './Component/WordTemplate'; import WordTemplate from './Component/WordTemplate';
import TemplateCURD from './Component/TemplateCURD'; import TemplateCURD from './Component/TemplateCURD';
import ConstraintDetail from './Component/ConstraintDetail'; import ConstraintDetail from './Component/ConstraintDetail';
...@@ -10,15 +11,43 @@ import './index.less'; ...@@ -10,15 +11,43 @@ import './index.less';
const { TabPane } = Tabs; const { TabPane } = Tabs;
export const ModelConfigContext = React.createContext({
permissions: undefined,
});
const ModelConfig = () => { const ModelConfig = () => {
const [loading, setLoading] = useState(false);
const [ tabKey, setTabKey ] = useState('1'); const [ tabKey, setTabKey ] = useState('1');
const [permissions, setPermissions] = useState(undefined);
useEffect(() => {
getPermissions();
}, [])
const getPermissions = () => {
setLoading(true);
dispatch({
type: 'datamodel.getConfigPrivilege',
callback: data => {
setLoading(false);
setPermissions(data);
},
error: () => {
setLoading(false);
}
})
}
const onTabChange = (key) => { const onTabChange = (key) => {
setTabKey(key); setTabKey(key);
} }
return ( return (
<ModelConfigContext.Provider value={{
permissions
}}>
<div className='model-config'> <div className='model-config'>
<Spin spinning={loading}>
<Tabs activeKey={tabKey} onChange={onTabChange}> <Tabs activeKey={tabKey} onChange={onTabChange}>
<TabPane tab='Word模版配置' key='1'> <TabPane tab='Word模版配置' key='1'>
<WordTemplate /> <WordTemplate />
...@@ -33,7 +62,9 @@ const ModelConfig = () => { ...@@ -33,7 +62,9 @@ const ModelConfig = () => {
<PartitionCURD /> <PartitionCURD />
</TabPane> </TabPane>
</Tabs> </Tabs>
</Spin>
</div> </div>
</ModelConfigContext.Provider>
) )
} }
......
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