Commit e0e0c4fe by zhaochengxiang

样式调整

parent 6b3d874f
...@@ -10,7 +10,7 @@ body { ...@@ -10,7 +10,7 @@ body {
sans-serif; sans-serif;
-webkit-font-smoothing: antialiased; -webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale; -moz-osx-font-smoothing: grayscale;
background-color: #fff; background-color: #ECEEF3;
} }
code { code {
...@@ -67,15 +67,15 @@ div[id^='__qiankun_microapp_wrapper_'] { ...@@ -67,15 +67,15 @@ div[id^='__qiankun_microapp_wrapper_'] {
} }
//ant design //ant design
.ant-layout { .yy-layout {
background-color: #eee !important; background-color: #ECEEF3 !important;
} }
.yy-tabs-content-holder { .yy-tabs-content-holder {
height: 100% !important; height: 100% !important;
} }
.yy-tabs-content { .yy-tabs-content, .yy-table {
height: 100% !important; height: 100% !important;
overflow: auto !important; overflow: auto !important;
} }
......
...@@ -5,7 +5,7 @@ import { connect } from 'react-redux'; ...@@ -5,7 +5,7 @@ import { connect } from 'react-redux';
import classnames from 'classnames'; import classnames from 'classnames';
import { UserOutlined, LogoutOutlined, MenuFoldOutlined, MenuUnfoldOutlined, HomeOutlined, FileOutlined, AppstoreOutlined } from "@ant-design/icons"; import { UserOutlined, LogoutOutlined, MenuFoldOutlined, MenuUnfoldOutlined, HomeOutlined, FileOutlined, AppstoreOutlined } from "@ant-design/icons";
import { ContextPath, Open } from '../util'; import { ContextPath, Open, showMessage } from '../util';
import { routes, routeMap } from '../routes'; import { routes, routeMap } from '../routes';
...@@ -30,7 +30,7 @@ const _Logout = ({session, isHome, location}) => session ? ...@@ -30,7 +30,7 @@ const _Logout = ({session, isHome, location}) => session ?
> >
<Menu.Item key="SignOut" <Menu.Item key="SignOut"
onClick={e => dispatchLatest({type: 'user.signout', callback: e => { onClick={e => dispatchLatest({type: 'user.signout', callback: e => {
message.success('退出成功!') showMessage('success', '退出成功!');
window.setTimeout(e => Open(`${ContextPath}/login`, { target: '_self' }), 1000); window.setTimeout(e => Open(`${ContextPath}/login`, { target: '_self' }), 1000);
}})}> }})}>
<LogoutOutlined /> <LogoutOutlined />
...@@ -105,7 +105,7 @@ export const ManageLayout = function ({ content, location }) { ...@@ -105,7 +105,7 @@ export const ManageLayout = function ({ content, location }) {
</Menu> </Menu>
</Sider> </Sider>
<Content className="m-3" style={{ backgroundColor: '#eee' }}> <Content className="m-3" style={{ backgroundColor: '#ECEEF3', height: '100%' }}>
{content} {content}
</Content> </Content>
......
import axios from 'axios'; import axios from 'axios';
import { message } from 'antd'; import { message } from 'antd';
import { IsArr } from './index'; import { IsArr } from './index';
import { showMessage } from './index';
const CancelToken = axios.CancelToken; const CancelToken = axios.CancelToken;
const baseURL = '/api/'; const baseURL = '/api/';
...@@ -85,7 +87,7 @@ export const SetSource = function (source) { ...@@ -85,7 +87,7 @@ export const SetSource = function (source) {
const callback = resp => { const callback = resp => {
if (resp.status === 401) { if (resp.status === 401) {
message.warning("session过期,请重新登录!"); showMessage('warn', "session过期,请重新登录!");
//外网 //外网
window.location.href="/center-home/view/login" window.location.href="/center-home/view/login"
//内网 //内网
......
import React, { useState } from "react"; import React, { useState } from "react";
import { Table, Space, Button, Tooltip, message } from 'antd'; import { Table, Space, Button, Tooltip, Modal } from 'antd';
import { EditOutlined, CheckOutlined, ReconciliationOutlined, DeleteOutlined } from '@ant-design/icons'; import { EditOutlined, CheckOutlined, ReconciliationOutlined, DeleteOutlined } from '@ant-design/icons';
import { dispatchLatest } from '../../../../model'; import { dispatchLatest } from '../../../../model';
import { showMessage } from '../../../../util';
import './ModelTable.less';
const ModelTable = (props) => { const ModelTable = (props) => {
const { data, onChange } = props; const { data, onChange, loading } = props;
const [ selectedRowKeys, setSelectedRowKeys ] = useState([]); const [ selectedRowKeys, setSelectedRowKeys ] = useState([]);
const [modal, contextHolder] = Modal.useModal();
const columns = [ const columns = [
{ {
title: '模型名称', title: '模型名称',
...@@ -47,6 +51,11 @@ const ModelTable = (props) => { ...@@ -47,6 +51,11 @@ const ModelTable = (props) => {
]; ];
const deleteItem = (record) => { const deleteItem = (record) => {
modal.confirm({
title: '提示!',
content: '您确定要删除该模型吗?',
onOk: () => {
dispatchLatest({ dispatchLatest({
type: 'datamodel.deleteDataModel', type: 'datamodel.deleteDataModel',
payload: { payload: {
...@@ -55,11 +64,13 @@ const ModelTable = (props) => { ...@@ -55,11 +64,13 @@ const ModelTable = (props) => {
} }
}, },
callback: () => { callback: () => {
message.success('模型删除成功'); showMessage('success', '模型删除成功');
onChange && onChange(); onChange && onChange();
} }
}) })
} }
});
}
const onSelectChange = keys => { const onSelectChange = keys => {
setSelectedRowKeys(keys); setSelectedRowKeys(keys);
...@@ -71,15 +82,17 @@ const ModelTable = (props) => { ...@@ -71,15 +82,17 @@ const ModelTable = (props) => {
}; };
return ( return (
<> <div className='model-table'>
<Table <Table
loading={loading}
rowSelection={rowSelection} rowSelection={rowSelection}
columns={columns} columns={columns}
rowKey={'id'} rowKey={'id'}
dataSource={data} dataSource={data}
pagination={false} pagination={false}
/> />
</> { contextHolder }
</div>
); );
} }
......
.model-table {
.yy-table {
height: calc(100vh - 64px - 20px - 53px - 20px) !important;
overflow: auto !important;
}
}
\ No newline at end of file
import React from "react"; import React, { useState, useEffect } from "react";
import { Tooltip, Tree, message, Button } from "antd"; import { Tooltip, Tree, Button, Modal, Spin } from "antd";
import { PlusOutlined, EditOutlined, SyncOutlined, DeleteOutlined } from '@ant-design/icons'; import { PlusOutlined, EditOutlined, SyncOutlined, DeleteOutlined } from '@ant-design/icons';
import UpdateTreeItemModal from './UpdateTreeItemModal'; import UpdateTreeItemModal from './UpdateTreeItemModal';
import { dispatchLatest } from '../../../../model'; import { dispatchLatest } from '../../../../model';
import { showMessage } from '../../../../util';
import './ModelTree.less';
class ModelTree extends React.Component { const ModelTree = (props) => {
constructor() { const { onSelect } = props;
super(); const [ loading, setLoading ] = useState(false);
this.state = { const [ treeData, setTreeData ] = useState(null);
loading: false, const [ item, setItem ] = useState(null);
treeData: null, const [ visible, setVisible ] = useState(false);
item: null, const [ type, setType ] = useState(null);
visible: false,
type: null
};
}
componentDidMount() { const [modal, contextHolder] = Modal.useModal();
this.getTreeData();
}
getTreeData = () => { useEffect(() => {
const { onSelect } = this.props; getTreeData();
}, [])
this.setState({ loading: true }, () => { const getTreeData = () => {
setLoading(true);
dispatchLatest({ dispatchLatest({
type: 'datamodel.loadDataModelCatalog', type: 'datamodel.loadDataModelCatalog',
callback: data => { callback: data => {
...@@ -48,55 +46,51 @@ class ModelTree extends React.Component { ...@@ -48,55 +46,51 @@ class ModelTree extends React.Component {
} }
recursion(data.subCatalogs); recursion(data.subCatalogs);
setLoading(false);
this.setState({ loading: false, treeData: [ data ], item: data }, () => { setTreeData([ data||{} ]);
if (onSelect) { setItem(data);
onSelect(data.key); onSelect && onSelect(data.key||'');
}
});
} }
}) })
})
} }
onTreeSelect = (keys,data) => { const onTreeSelect = (keys,data) => {
const { onSelect } = this.props;
const _item = {...data.selectedNodes[0]||[]}; const _item = {...data.selectedNodes[0]||[]};
this.setState({ item: _item }, () => { setItem(_item);
if (onSelect) { onSelect && onSelect(_item.key);
onSelect(_item.key);
}
});
} }
add = () => { const add = () => {
this.setState({ visible: true, type: 'add' }); setVisible(true);
setType('add');
} }
update = () => { const update = () => {
const { item } = this.state;
if (!item) { if (!item) {
message.info('请先选择目录'); showMessage('info', '请先选择目录');
return; return;
} }
this.setState({ visible: true, type: 'update' }); setVisible(true);
setType('update');
} }
refresh = () => { const refresh = () => {
this.getTreeData(); getTreeData();
} }
delete = () => { const deleteNode = () => {
const { item } = this.state;
if (!item) { if (!item) {
message.info('请先选择目录'); showMessage('info', '请先选择目录');
return; return;
} }
modal.confirm({
title: '提示!',
content: '删除目录会删除相关的模型,您确定删除吗?',
onOk: () => {
dispatchLatest({ dispatchLatest({
type: 'datamodel.deleteDataModelCatalog', type: 'datamodel.deleteDataModelCatalog',
payload: { payload: {
...@@ -105,28 +99,26 @@ class ModelTree extends React.Component { ...@@ -105,28 +99,26 @@ class ModelTree extends React.Component {
} }
}, },
callback: () => { callback: () => {
message.success('删除目录成功'); showMessage('success', '删除目录成功');
this.getTreeData(); getTreeData();
} }
}); });
} }
});
onUpdateTreeItemModalOk = () => {
this.setState({ visible: false }, () => {
this.getTreeData();
})
} }
onUpdateTreeItemModalCancel = () => { const onUpdateTreeItemModalOk = () => {
this.setState({ visible: false }); setVisible(false);
getTreeData();
} }
render() { const onUpdateTreeItemModalCancel = () => {
const { loading, treeData, visible, type, item } = this.state; setVisible(false);
}
return ( return (
<> <div className='model-tree'>
<div <div
className='p-3' className='p-3'
style={{ style={{
...@@ -136,52 +128,58 @@ class ModelTree extends React.Component { ...@@ -136,52 +128,58 @@ class ModelTree extends React.Component {
> >
<Tooltip title="新增目录"> <Tooltip title="新增目录">
<Button <Button
type="primary"
shape="circle" shape="circle"
icon={<PlusOutlined />} icon={<PlusOutlined />}
onClick={this.add} onClick={add}
/> />
</Tooltip> </Tooltip>
<Tooltip title="修改" className='ml-3'> <Tooltip title="修改" className='ml-3'>
<Button <Button
type="primary"
shape="circle" shape="circle"
icon={<EditOutlined />} icon={<EditOutlined />}
onClick={this.update} onClick={update}
/> />
</Tooltip> </Tooltip>
<Tooltip title="刷新" className='ml-3'> <Tooltip title="刷新" className='ml-3'>
<Button <Button
type="primary"
shape="circle" shape="circle"
icon={<SyncOutlined />} icon={<SyncOutlined />}
onClick={this.refresh} onClick={refresh}
/> />
</Tooltip> </Tooltip>
<Tooltip title="删除" className='ml-3'> <Tooltip title="删除" className='ml-3'>
<Button <Button
type="primary"
shape="circle" shape="circle"
icon={<DeleteOutlined />} icon={<DeleteOutlined />}
onClick={this.delete} onClick={deleteNode}
/> />
</Tooltip> </Tooltip>
</div> </div>
<div <div
className='overflow-auto p-3' className='p-3'
> >
<Tree loading={loading} showLine showIcon={false} onSelect={this.onTreeSelect} treeData={treeData} selectedKeys={[item?item.key:'']} /> {
loading? <Spin /> : (
<Tree
showLine
showIcon={false}
onSelect={onTreeSelect}
treeData={treeData}
selectedKeys={[item?item.key:'']}
/>
)
}
</div> </div>
<UpdateTreeItemModal <UpdateTreeItemModal
visible={visible} visible={visible}
type={type} type={type}
item={item} item={item}
onOk={this.onUpdateTreeItemModalOk} onOk={onUpdateTreeItemModalOk}
onCancel={this.onUpdateTreeItemModalCancel} onCancel={onUpdateTreeItemModalCancel}
/> />
</> {contextHolder}
</div>
); );
}
} }
export default ModelTree; export default ModelTree;
\ No newline at end of file
.model-tree {
.yy-tree-list {
height: calc(100vh - 64px - 20px - 53px - 20px) !important;
overflow: auto !important;
}
}
\ No newline at end of file
...@@ -17,7 +17,8 @@ class Model extends React.Component { ...@@ -17,7 +17,8 @@ class Model extends React.Component {
exportModalVisible: false, exportModalVisible: false,
catalogId: '', catalogId: '',
importModalAction: '', importModalAction: '',
tableData: [] tableData: [],
loadingTableData: false,
} }
} }
...@@ -30,15 +31,17 @@ class Model extends React.Component { ...@@ -30,15 +31,17 @@ class Model extends React.Component {
onTableChange = () => { onTableChange = () => {
const { catalogId } = this.state; const { catalogId } = this.state;
this.setState({ loadingTableData: true }, () => {
dispatchLatest({ dispatchLatest({
type: 'datamodel.getCurrentDataModelCatalog', type: 'datamodel.getCurrentDataModelCatalog',
payload: { payload: {
easyDataModelerCatalogId: catalogId easyDataModelerCatalogId: catalogId
}, },
callback: data => { callback: data => {
this.setState({ tableData: data.easyDataModelerDataModels||[] }); this.setState({ loadingTableData: false, tableData: data.easyDataModelerDataModels||[] });
} }
}) })
})
} }
onImportBtnClick = () => { onImportBtnClick = () => {
...@@ -59,15 +62,18 @@ class Model extends React.Component { ...@@ -59,15 +62,18 @@ class Model extends React.Component {
} }
render() { render() {
const { importModalVisible, exportModalVisible, catalogId, importModalAction, tableData } = this.state; const { importModalVisible, exportModalVisible, catalogId, importModalAction, tableData, loadingTableData } = this.state;
return ( return (
<div style={{ backgroundColor: '#fff', height: '100%' }}> <div style={{ backgroundColor: '#ECEEF3', height: '100%' }}>
<Row gutter={10} style={{ height: '100%' }}> <Row style={{ height: '100%' }}>
<Col span={6}> <Col span={6} style={{ height: '100%' }} >
<div className='mr-3' style={{ backgroundColor: '#fff' }}>
<ModelTree onSelect={this.onTreeSelect} /> <ModelTree onSelect={this.onTreeSelect} />
</div>
</Col> </Col>
<Col span={18}> <Col span={18}>
<div style={{ backgroundColor: '#fff' }}>
<div <div
className='p-3' className='p-3'
style={{ style={{
...@@ -75,13 +81,13 @@ class Model extends React.Component { ...@@ -75,13 +81,13 @@ class Model extends React.Component {
borderBottom: "1px solid #EFEFEF", borderBottom: "1px solid #EFEFEF",
}} }}
> >
<Button type="primary" style={{marginLeft: 'auto'}}>全选</Button> <Button type="primary" style={{ marginLeft: 'auto' }}>提交审核</Button>
<Button type="primary" className='ml-3'>提交审核</Button>
<Button type="primary" className='ml-3' onClick={this.onImportBtnClick}>模型创建</Button> <Button type="primary" className='ml-3' onClick={this.onImportBtnClick}>模型创建</Button>
<Button type="primary" className='ml-3' onClick={this.onExportBtnClick}>模型导出</Button> <Button type="primary" className='ml-3' onClick={this.onExportBtnClick}>模型导出</Button>
</div> </div>
<div className='p-3'> <div className='p-3'>
<ModelTable data={tableData} onChange={this.onTableChange} /> <ModelTable loading={loadingTableData} data={tableData} onChange={this.onTableChange} />
</div>
</div> </div>
</Col> </Col>
</Row> </Row>
......
...@@ -4,7 +4,7 @@ import { connect } from 'react-redux'; ...@@ -4,7 +4,7 @@ import { connect } from 'react-redux';
import CryptoJS from "crypto-js"; import CryptoJS from "crypto-js";
import { UserOutlined, LockOutlined } from "@ant-design/icons"; import { UserOutlined, LockOutlined } from "@ant-design/icons";
import { Open, Assert, ContextPath } from '../../util'; import { Open, Assert, ContextPath, showMessage } from '../../util';
import { dispatchLatest } from '../../model'; import { dispatchLatest } from '../../model';
import loginBG from "../../assets/login_bg.png"; import loginBG from "../../assets/login_bg.png";
...@@ -26,7 +26,7 @@ class Signin extends Component { ...@@ -26,7 +26,7 @@ class Signin extends Component {
return; return;
} }
Assert(sess === "ok", "用户名或密码不正确"); Assert(sess === "ok", "用户名或密码不正确");
message.success('登录成功'); showMessage('success', '登录成功');
history.push(referer || `${ContextPath}/home`); history.push(referer || `${ContextPath}/home`);
} }
}); });
......
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