Commit 42a72dcc authored by wenmo's avatar wenmo

页面调整

parent 311685bf
...@@ -92,17 +92,6 @@ ...@@ -92,17 +92,6 @@
<discardingThreshold>0</discardingThreshold> <discardingThreshold>0</discardingThreshold>
<appender-ref ref="FileAppender"/> <appender-ref ref="FileAppender"/>
</appender> </appender>
<appender name="audit_log_async" class="ch.qos.logback.classic.AsyncAppender">
<discardingThreshold>0</discardingThreshold>
<appender-ref ref="audit_log"/>
</appender>
<logger name="com.datalink.log.monitor" level="debug" addtivity="false">
<appender-ref ref="point_log_async" />
</logger>
<logger name="com.datalink.log.service.impl.LoggerAuditServiceImpl" level="debug" addtivity="false">
<appender-ref ref="audit_log_async" />
</logger>
<root level="INFO"> <root level="INFO">
<appender-ref ref="StdoutAppender"/> <appender-ref ref="StdoutAppender"/>
<appender-ref ref="file_async"/> <appender-ref ref="file_async"/>
......
...@@ -12,7 +12,7 @@ const Settings: LayoutSettings & { ...@@ -12,7 +12,7 @@ const Settings: LayoutSettings & {
fixedHeader: false, fixedHeader: false,
fixSiderbar: true, fixSiderbar: true,
colorWeak: false, colorWeak: false,
title: 'Dlink 开发平台', title: 'Dlink',
pwa: false, pwa: false,
logo: 'https://gw.alipayobjects.com/zos/rmsportal/KDpgvguMpGfqaHPjicRK.svg', logo: 'https://gw.alipayobjects.com/zos/rmsportal/KDpgvguMpGfqaHPjicRK.svg',
iconfontUrl: '', iconfontUrl: '',
......
...@@ -42,6 +42,7 @@ export default [ ...@@ -42,6 +42,7 @@ export default [
{ {
path: '/dev', path: '/dev',
name: 'dev', name: 'dev',
icon: 'crown',
routes: [ routes: [
{ {
path: '/dev/flink', path: '/dev/flink',
...@@ -90,6 +91,7 @@ export default [ ...@@ -90,6 +91,7 @@ export default [
{ {
path: '/demo', path: '/demo',
name: 'demo', name: 'demo',
icon: 'crown',
//access: 'canAdmin', //access: 'canAdmin',
routes: [ routes: [
{ {
......
...@@ -6,7 +6,7 @@ export default () => { ...@@ -6,7 +6,7 @@ export default () => {
const intl = useIntl(); const intl = useIntl();
const defaultMessage = intl.formatMessage({ const defaultMessage = intl.formatMessage({
id: 'app.copyright.produced', id: 'app.copyright.produced',
defaultMessage: 'DataLink 数据中台 开源', defaultMessage: 'Dlink',
}); });
return ( return (
...@@ -14,15 +14,15 @@ export default () => { ...@@ -14,15 +14,15 @@ export default () => {
copyright={`2021 ${defaultMessage}`} copyright={`2021 ${defaultMessage}`}
links={[ links={[
{ {
key: 'DataLink', key: 'Dlink',
title: 'DataLink', title: 'Dlink',
href: '', href: '',
blankTarget: true, blankTarget: true,
}, },
{ {
key: 'github', key: 'github',
title: <GithubOutlined />, title: <GithubOutlined />,
href: 'https://github.com/aiwenmo/DataLink', href: 'https://github.com/aiwenmo/Dlink',
blankTarget: true, blankTarget: true,
}, },
]} ]}
......
import {Effect, Reducer} from "umi";
export type StateType = {
current?: string;
data?: {
sql: string;
};
};
export type ModelType = {
namespace: string;
state: StateType;
effects: {
executeSql: Effect;
};
reducers: {
saveSql: Reducer<StateType>;
};
};
...@@ -12,7 +12,7 @@ const CreateForm: React.FC<CreateFormProps> = (props) => { ...@@ -12,7 +12,7 @@ const CreateForm: React.FC<CreateFormProps> = (props) => {
return ( return (
<Modal <Modal
destroyOnClose destroyOnClose
title="添加任务" title="添加 Flink 集群"
visible={modalVisible} visible={modalVisible}
onCancel={() => onCancel()} onCancel={() => onCancel()}
footer={null} footer={null}
......
...@@ -13,25 +13,3 @@ export type ClusterTableListItem = { ...@@ -13,25 +13,3 @@ export type ClusterTableListItem = {
createTime: Date, createTime: Date,
updateTime: Date, updateTime: Date,
}; };
export type TableListPagination = {
total: number;
pageSize: number;
current: number;
};
export type TableListData = {
list: TableListItem[];
pagination: Partial<TableListPagination>;
};
export type TableListParams = {
status?: string;
name?: string;
desc?: string;
key?: number;
pageSize?: number;
currentPage?: number;
filter?: Record<string, any[]>;
sorter?: Record<string, any>;
};
import request from 'umi-request';
import type { TableListParams } from './data.d';
import {ClusterTableListItem} from "./data.d";
export async function queryCluster(params?: TableListParams) {
return request('/api/task', {
method: 'POST',
data: {
...params,
},
});
}
export async function removeCluster(params: number[]) {
return request('/api/task', {
method: 'DELETE',
data: {
...params,
},
});
}
export async function submitCluster(params: number[]) {
return request('/api/cluster/submit', {
method: 'POST',
data: {
...params,
},
});
}
export async function addOrUpdateCluster(params: ClusterTableListItem) {
return request('/api/task', {
method: 'PUT',
data: {
...params,
},
});
}
import React, {useEffect, useState} from 'react'; import React, {useEffect, useState} from 'react';
import { Form, Button, Input, Modal } from 'antd'; import {Form, Button, Input, Modal} from 'antd';
import type { TableListItem } from '../data.d'; import type {TableListItem} from '../data.d';
import Switch from "antd/es/switch"; import Switch from "antd/es/switch";
export type UpdateFormProps = { export type UpdateFormProps = {
onCancel: (flag?: boolean, formVals?: Partial<TableListItem>) => void; onCancel: (flag?: boolean, formVals?: Partial<TableListItem>) => void;
onSubmit: (values: Partial<TableListItem>) => void; onSubmit: (values: Partial<TableListItem>) => void;
...@@ -12,8 +13,8 @@ export type UpdateFormProps = { ...@@ -12,8 +13,8 @@ export type UpdateFormProps = {
const FormItem = Form.Item; const FormItem = Form.Item;
const formLayout = { const formLayout = {
labelCol: { span: 7 }, labelCol: {span: 7},
wrapperCol: { span: 13 }, wrapperCol: {span: 13},
}; };
const UpdateForm: React.FC<UpdateFormProps> = (props) => { const UpdateForm: React.FC<UpdateFormProps> = (props) => {
...@@ -22,11 +23,13 @@ const UpdateForm: React.FC<UpdateFormProps> = (props) => { ...@@ -22,11 +23,13 @@ const UpdateForm: React.FC<UpdateFormProps> = (props) => {
name: props.values.name, name: props.values.name,
alias: props.values.alias, alias: props.values.alias,
type: props.values.type, type: props.values.type,
checkPoint: props.values.checkPoint,
savePointPath: props.values.savePointPath,
parallelism: props.values.parallelism,
fragemnt: props.values.fragment,
clusterId: props.values.clusterId,
note: props.values.note, note: props.values.note,
enabled: props.values.enabled, enabled: props.values.enabled,
createUser: props.values.createUser,
updateUser: props.values.updateUser,
tenantId: props.values.tenantId,
}); });
const [form] = Form.useForm(); const [form] = Form.useForm();
...@@ -40,8 +43,8 @@ const UpdateForm: React.FC<UpdateFormProps> = (props) => { ...@@ -40,8 +43,8 @@ const UpdateForm: React.FC<UpdateFormProps> = (props) => {
const submitForm = async () => { const submitForm = async () => {
const fieldsValue = await form.validateFields(); const fieldsValue = await form.validateFields();
setFormVals({ ...formVals, ...fieldsValue }); setFormVals({...formVals, ...fieldsValue});
handleUpdate({ ...formVals, ...fieldsValue }); handleUpdate({...formVals, ...fieldsValue});
}; };
const renderContent = (formVals) => { const renderContent = (formVals) => {
...@@ -50,31 +53,61 @@ const UpdateForm: React.FC<UpdateFormProps> = (props) => { ...@@ -50,31 +53,61 @@ const UpdateForm: React.FC<UpdateFormProps> = (props) => {
<FormItem <FormItem
name="name" name="name"
label="名称" label="名称"
rules={[{ required: true, message: '请输入名称!' }]} > rules={[{required: true, message: '请输入名称!'}]}>
<Input placeholder="请输入" /> <Input placeholder="请输入"/>
</FormItem> </FormItem>
<FormItem <FormItem
name="alias" name="alias"
label="别名" label="别名"
> >
<Input placeholder="请输入" /> <Input placeholder="请输入"/>
</FormItem> </FormItem>
<FormItem <FormItem
name="type" name="type"
label="类型" label="类型"
> >
<Input placeholder="请输入" /> <Input placeholder="请输入"/>
</FormItem>
<FormItem
name="note"
label="注释"
>
<Input placeholder="请输入"/>
</FormItem>
<FormItem
name="checkPoint"
label="CheckPoint"
>
<Input placeholder="请输入"/>
</FormItem>
<FormItem
name="savePointPath"
label="SavePointPath"
>
<Input placeholder="请输入"/>
</FormItem>
<FormItem
name="parallelism"
label="Parallelism"
>
<Input placeholder="请输入"/>
</FormItem>
<FormItem
name="fragemnt"
label="Fragment"
>
<Input placeholder="请输入"/>
</FormItem> </FormItem>
<FormItem <FormItem
name="note" name="note"
label="注释" label="注释"
> >
<Input placeholder="请输入" /> <Input placeholder="请输入"/>
</FormItem> </FormItem>
<FormItem <FormItem
name="enabled" name="enabled"
label="是否启用" label="是否启用"
rules={[{ required: true, message: '请输入是否启用!' }]} > rules={[{required: true, message: '请输入是否启用!'}]}>
<Switch checkedChildren="启用" unCheckedChildren="禁用" <Switch checkedChildren="启用" unCheckedChildren="禁用"
defaultChecked={formVals.enabled}/> defaultChecked={formVals.enabled}/>
</FormItem> </FormItem>
...@@ -96,7 +129,7 @@ const UpdateForm: React.FC<UpdateFormProps> = (props) => { ...@@ -96,7 +129,7 @@ const UpdateForm: React.FC<UpdateFormProps> = (props) => {
return ( return (
<Modal <Modal
width={640} width={640}
bodyStyle={{ padding: '32px 40px 48px' }} bodyStyle={{padding: '32px 40px 48px'}}
destroyOnClose destroyOnClose
title="编辑任务" title="编辑任务"
visible={updateModalVisible} visible={updateModalVisible}
...@@ -112,10 +145,12 @@ const UpdateForm: React.FC<UpdateFormProps> = (props) => { ...@@ -112,10 +145,12 @@ const UpdateForm: React.FC<UpdateFormProps> = (props) => {
alias: formVals.alias, alias: formVals.alias,
type: formVals.type, type: formVals.type,
note: formVals.note, note: formVals.note,
checkPoint: formVals.checkPoint,
savePointPath: formVals.savePointPath,
parallelism: formVals.parallelism,
fragemnt: formVals.fragemnt,
clusterId: formVals.clusterId,
enabled: formVals.enabled, enabled: formVals.enabled,
createUser: formVals.createUser,
updateUser: formVals.updateUser,
tenantId: formVals.tenantId,
}} }}
> >
{renderContent(formVals)} {renderContent(formVals)}
......
...@@ -8,30 +8,9 @@ export type TaskTableListItem = { ...@@ -8,30 +8,9 @@ export type TaskTableListItem = {
parallelism: number, parallelism: number,
fragment: boolean, fragment: boolean,
clusterId: number, clusterId: number,
clusterName: string,
note: string, note: string,
enabled: boolean, enabled: boolean,
createTime: Date, createTime: Date,
updateTime: Date, updateTime: Date,
}; };
export type TableListPagination = {
total: number;
pageSize: number;
current: number;
};
export type TableListData = {
list: TableListItem[];
pagination: Partial<TableListPagination>;
};
export type TableListParams = {
status?: string;
name?: string;
desc?: string;
key?: number;
pageSize?: number;
currentPage?: number;
filter?: Record<string, any[]>;
sorter?: Record<string, any>;
};
...@@ -15,7 +15,7 @@ import Dropdown from "antd/es/dropdown/dropdown"; ...@@ -15,7 +15,7 @@ import Dropdown from "antd/es/dropdown/dropdown";
import Menu from "antd/es/menu"; import Menu from "antd/es/menu";
import {handleAddOrUpdate, handleRemove, handleSubmit, queryData, updateEnabled} from "@/components/Common/crud"; import {handleAddOrUpdate, handleRemove, handleSubmit, queryData, updateEnabled} from "@/components/Common/crud";
const url = '/api-dlink/task'; const url = '/api/task';
const TaskTableList: React.FC<{}> = () => { const TaskTableList: React.FC<{}> = () => {
const [createModalVisible, handleModalVisible] = useState<boolean>(false); const [createModalVisible, handleModalVisible] = useState<boolean>(false);
...@@ -112,6 +112,54 @@ const TaskTableList: React.FC<{}> = () => { ...@@ -112,6 +112,54 @@ const TaskTableList: React.FC<{}> = () => {
hideInSearch: true, hideInSearch: true,
hideInTable: false, hideInTable: false,
}, },
{
title: 'CheckPoint',
sorter: true,
dataIndex: 'checkPoint',
hideInForm: false,
hideInSearch: true,
hideInTable: true,
},
{
title: 'SavePointPath',
sorter: true,
dataIndex: 'savePointPath',
hideInForm: false,
hideInSearch: true,
hideInTable: true,
},
{
title: 'Parallelism',
sorter: true,
dataIndex: 'parallelism',
hideInForm: false,
hideInSearch: true,
hideInTable: true,
},
{
title: 'Fragment',
sorter: true,
dataIndex: 'fragment',
hideInForm: false,
hideInSearch: true,
hideInTable: true,
},
{
title: '集群ID',
sorter: true,
dataIndex: 'clusterId',
hideInForm: false,
hideInSearch: true,
hideInTable: true,
},
{
title: '集群',
sorter: true,
dataIndex: 'clusterName',
hideInForm: true,
hideInSearch: true,
hideInTable: true,
},
{ {
title: '注释', title: '注释',
sorter: true, sorter: true,
...@@ -143,23 +191,6 @@ const TaskTableList: React.FC<{}> = () => { ...@@ -143,23 +191,6 @@ const TaskTableList: React.FC<{}> = () => {
false: { text: '禁用', status: 'Error' }, false: { text: '禁用', status: 'Error' },
}, },
}, },
{
title: '创建人ID',
sorter: true,
dataIndex: 'createUser',
hideInForm: true,
hideInSearch: true,
hideInTable: true,
hideInDescriptions:true,
},
{
title: '创建人',
sorter: true,
dataIndex: 'createNickName',
hideInForm: true,
hideInSearch: true,
hideInTable: true,
},
{ {
title: '创建时间', title: '创建时间',
dataIndex: 'createTime', dataIndex: 'createTime',
...@@ -178,23 +209,6 @@ const TaskTableList: React.FC<{}> = () => { ...@@ -178,23 +209,6 @@ const TaskTableList: React.FC<{}> = () => {
return defaultRender(item); return defaultRender(item);
}, },
}, },
{
title: '更新人ID',
sorter: true,
dataIndex: 'updateUser',
hideInForm: true,
hideInSearch: true,
hideInTable: true,
hideInDescriptions:true,
},
{
title: '更新人',
sorter: true,
dataIndex: 'updateNickName',
hideInForm: true,
hideInSearch: true,
hideInTable: false,
},
{ {
title: '最近更新时间', title: '最近更新时间',
dataIndex: 'updateTime', dataIndex: 'updateTime',
......
import request from 'umi-request';
import type { TableListParams } from './data.d';
import {TaskTableListItem} from "./data.d";
export async function queryTask(params?: TableListParams) {
return request('/api/task', {
method: 'POST',
data: {
...params,
},
});
}
export async function removeTask(params: number[]) {
return request('/api/task', {
method: 'DELETE',
data: {
...params,
},
});
}
export async function submitTask(params: number[]) {
return request('/api/task/submit', {
method: 'POST',
data: {
...params,
},
});
}
export async function addOrUpdateTask(params: TaskTableListItem) {
return request('/api/task', {
method: 'PUT',
data: {
...params,
},
});
}
...@@ -95,7 +95,7 @@ const Login: React.FC = () => { ...@@ -95,7 +95,7 @@ const Login: React.FC = () => {
<div className={styles.header}> <div className={styles.header}>
<Link to="/"> <Link to="/">
<img alt="logo" className={styles.logo} src="/logo.svg" /> <img alt="logo" className={styles.logo} src="/logo.svg" />
<span className={styles.title}>DataLink</span> <span className={styles.title}>Dlink</span>
</Link> </Link>
</div> </div>
<div className={styles.desc}> <div className={styles.desc}>
......
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