Commit 42a72dcc authored by wenmo's avatar wenmo

页面调整

parent 311685bf
......@@ -92,17 +92,6 @@
<discardingThreshold>0</discardingThreshold>
<appender-ref ref="FileAppender"/>
</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">
<appender-ref ref="StdoutAppender"/>
<appender-ref ref="file_async"/>
......
......@@ -12,7 +12,7 @@ const Settings: LayoutSettings & {
fixedHeader: false,
fixSiderbar: true,
colorWeak: false,
title: 'Dlink 开发平台',
title: 'Dlink',
pwa: false,
logo: 'https://gw.alipayobjects.com/zos/rmsportal/KDpgvguMpGfqaHPjicRK.svg',
iconfontUrl: '',
......
......@@ -42,6 +42,7 @@ export default [
{
path: '/dev',
name: 'dev',
icon: 'crown',
routes: [
{
path: '/dev/flink',
......@@ -90,6 +91,7 @@ export default [
{
path: '/demo',
name: 'demo',
icon: 'crown',
//access: 'canAdmin',
routes: [
{
......
......@@ -6,7 +6,7 @@ export default () => {
const intl = useIntl();
const defaultMessage = intl.formatMessage({
id: 'app.copyright.produced',
defaultMessage: 'DataLink 数据中台 开源',
defaultMessage: 'Dlink',
});
return (
......@@ -14,15 +14,15 @@ export default () => {
copyright={`2021 ${defaultMessage}`}
links={[
{
key: 'DataLink',
title: 'DataLink',
key: 'Dlink',
title: 'Dlink',
href: '',
blankTarget: true,
},
{
key: 'github',
title: <GithubOutlined />,
href: 'https://github.com/aiwenmo/DataLink',
href: 'https://github.com/aiwenmo/Dlink',
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) => {
return (
<Modal
destroyOnClose
title="添加任务"
title="添加 Flink 集群"
visible={modalVisible}
onCancel={() => onCancel()}
footer={null}
......
......@@ -13,25 +13,3 @@ export type ClusterTableListItem = {
createTime: 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 { 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";
export type UpdateFormProps = {
onCancel: (flag?: boolean, formVals?: Partial<TableListItem>) => void;
onSubmit: (values: Partial<TableListItem>) => void;
updateModalVisible: boolean;
values: Partial<TableListItem>;
onCancel: (flag?: boolean, formVals?: Partial<TableListItem>) => void;
onSubmit: (values: Partial<TableListItem>) => void;
updateModalVisible: boolean;
values: Partial<TableListItem>;
};
const FormItem = Form.Item;
const formLayout = {
labelCol: { span: 7 },
wrapperCol: { span: 13 },
labelCol: {span: 7},
wrapperCol: {span: 13},
};
const UpdateForm: React.FC<UpdateFormProps> = (props) => {
const [formVals, setFormVals] = useState<Partial<TableListItem>>({
id: props.values.id,
name: props.values.name,
alias: props.values.alias,
type: props.values.type,
note: props.values.note,
enabled: props.values.enabled,
createUser: props.values.createUser,
updateUser: props.values.updateUser,
tenantId: props.values.tenantId,
});
const [form] = Form.useForm();
const [formVals, setFormVals] = useState<Partial<TableListItem>>({
id: props.values.id,
name: props.values.name,
alias: props.values.alias,
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,
enabled: props.values.enabled,
});
const {
onSubmit: handleUpdate,
onCancel: handleUpdateModalVisible,
updateModalVisible,
values,
} = props;
const [form] = Form.useForm();
const submitForm = async () => {
const fieldsValue = await form.validateFields();
setFormVals({ ...formVals, ...fieldsValue });
handleUpdate({ ...formVals, ...fieldsValue });
};
const {
onSubmit: handleUpdate,
onCancel: handleUpdateModalVisible,
updateModalVisible,
values,
} = props;
const renderContent = (formVals) => {
return (
<>
<FormItem
name="name"
label="名称"
rules={[{ required: true, message: '请输入名称!' }]} >
<Input placeholder="请输入" />
</FormItem>
<FormItem
name="alias"
label="别名"
>
<Input placeholder="请输入" />
</FormItem>
<FormItem
name="type"
label="类型"
>
<Input placeholder="请输入" />
</FormItem>
<FormItem
name="note"
label="注释"
>
<Input placeholder="请输入" />
</FormItem>
<FormItem
name="enabled"
label="是否启用"
rules={[{ required: true, message: '请输入是否启用!' }]} >
<Switch checkedChildren="启用" unCheckedChildren="禁用"
defaultChecked={formVals.enabled}/>
</FormItem>
</>
);
};
const renderFooter = () => {
return (
<>
<Button onClick={() => handleUpdateModalVisible(false, values)}>取消</Button>
<Button type="primary" onClick={() => submitForm()}>
完成
</Button>
</>
);
};
const submitForm = async () => {
const fieldsValue = await form.validateFields();
setFormVals({...formVals, ...fieldsValue});
handleUpdate({...formVals, ...fieldsValue});
};
const renderContent = (formVals) => {
return (
<Modal
width={640}
bodyStyle={{ padding: '32px 40px 48px' }}
destroyOnClose
title="编辑任务"
visible={updateModalVisible}
footer={renderFooter()}
onCancel={() => handleUpdateModalVisible()}
<>
<FormItem
name="name"
label="名称"
rules={[{required: true, message: '请输入名称!'}]}>
<Input placeholder="请输入"/>
</FormItem>
<FormItem
name="alias"
label="别名"
>
<Input placeholder="请输入"/>
</FormItem>
<FormItem
name="type"
label="类型"
>
<Input placeholder="请输入"/>
</FormItem>
<FormItem
name="note"
label="注释"
>
<Input placeholder="请输入"/>
</FormItem>
<FormItem
name="checkPoint"
label="CheckPoint"
>
<Input placeholder="请输入"/>
</FormItem>
<FormItem
name="savePointPath"
label="SavePointPath"
>
<Form
{...formLayout}
form={form}
initialValues={{
id: formVals.id,
name: formVals.name,
alias: formVals.alias,
type: formVals.type,
note: formVals.note,
enabled: formVals.enabled,
createUser: formVals.createUser,
updateUser: formVals.updateUser,
tenantId: formVals.tenantId,
}}
>
{renderContent(formVals)}
</Form>
</Modal>
<Input placeholder="请输入"/>
</FormItem>
<FormItem
name="parallelism"
label="Parallelism"
>
<Input placeholder="请输入"/>
</FormItem>
<FormItem
name="fragemnt"
label="Fragment"
>
<Input placeholder="请输入"/>
</FormItem>
<FormItem
name="note"
label="注释"
>
<Input placeholder="请输入"/>
</FormItem>
<FormItem
name="enabled"
label="是否启用"
rules={[{required: true, message: '请输入是否启用!'}]}>
<Switch checkedChildren="启用" unCheckedChildren="禁用"
defaultChecked={formVals.enabled}/>
</FormItem>
</>
);
};
const renderFooter = () => {
return (
<>
<Button onClick={() => handleUpdateModalVisible(false, values)}>取消</Button>
<Button type="primary" onClick={() => submitForm()}>
完成
</Button>
</>
);
};
return (
<Modal
width={640}
bodyStyle={{padding: '32px 40px 48px'}}
destroyOnClose
title="编辑任务"
visible={updateModalVisible}
footer={renderFooter()}
onCancel={() => handleUpdateModalVisible()}
>
<Form
{...formLayout}
form={form}
initialValues={{
id: formVals.id,
name: formVals.name,
alias: formVals.alias,
type: formVals.type,
note: formVals.note,
checkPoint: formVals.checkPoint,
savePointPath: formVals.savePointPath,
parallelism: formVals.parallelism,
fragemnt: formVals.fragemnt,
clusterId: formVals.clusterId,
enabled: formVals.enabled,
}}
>
{renderContent(formVals)}
</Form>
</Modal>
);
};
export default UpdateForm;
export type TaskTableListItem = {
id: number,
name: string,
alias: string,
type: string,
checkPoint: number,
savePointPath: string,
parallelism: number,
fragment: boolean,
clusterId: number,
note: string,
enabled: boolean,
createTime: 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>;
id: number,
name: string,
alias: string,
type: string,
checkPoint: number,
savePointPath: string,
parallelism: number,
fragment: boolean,
clusterId: number,
clusterName: string,
note: string,
enabled: boolean,
createTime: Date,
updateTime: Date,
};
......@@ -15,7 +15,7 @@ import Dropdown from "antd/es/dropdown/dropdown";
import Menu from "antd/es/menu";
import {handleAddOrUpdate, handleRemove, handleSubmit, queryData, updateEnabled} from "@/components/Common/crud";
const url = '/api-dlink/task';
const url = '/api/task';
const TaskTableList: React.FC<{}> = () => {
const [createModalVisible, handleModalVisible] = useState<boolean>(false);
......@@ -112,6 +112,54 @@ const TaskTableList: React.FC<{}> = () => {
hideInSearch: true,
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: '注释',
sorter: true,
......@@ -143,23 +191,6 @@ const TaskTableList: React.FC<{}> = () => {
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: '创建时间',
dataIndex: 'createTime',
......@@ -178,23 +209,6 @@ const TaskTableList: React.FC<{}> = () => {
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: '最近更新时间',
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 = () => {
<div className={styles.header}>
<Link to="/">
<img alt="logo" className={styles.logo} src="/logo.svg" />
<span className={styles.title}>DataLink</span>
<span className={styles.title}>Dlink</span>
</Link>
</div>
<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