Commit ca30c991 authored by 张烨's avatar 张烨

style: fix lint

parent 3717c68a
......@@ -96,6 +96,9 @@ module.exports = {
'redux-saga/no-yield-in-race': 2,
'redux-saga/yield-effects': 2,
'require-yield': 0,
'no-param-reassign': 0,
'prefer-const': 0,
'button-has-type': 1,
},
settings: {
'import/resolver': {
......
import React,{ useEffect, useState } from 'react';
import { Card, Form, Input, Button, Select, Table, Tag, Space, notification } from 'antd';
import React, { useEffect, useState } from 'react';
import {
Card,
Form,
Input,
Button,
Select,
Table,
Tag,
Space,
notification,
} from 'antd';
import { PageContainer } from '@ant-design/pro-layout';
import { connect } from 'react-redux';
import { get, post } from 'services';
const { Option } = Select
const { Option } = Select;
const formLables = {
ip:'服务器名或IP地址',
userName:'数据库用户名称',
password:'数据库用户密码',
dbName:'数据库名称',
}
const InitDataBase = (props) =>{
const [form] = Form.useForm()
const onFinish = (e) =>{
}
const [tableLoading, setTableLoading] = useState(false)
const [dbForm,setDbForm] = useState({
ip:'',
dbName:'',
password:'',
userName:'',
inUse:'',
ip: '服务器名或IP地址',
userName: '数据库用户名称',
password: '数据库用户密码',
dbName: '数据库名称',
};
const InitDataBase = props => {
const [form] = Form.useForm();
const onFinish = e => {};
const [tableLoading, setTableLoading] = useState(false);
const [dbForm, setDbForm] = useState({
ip: '',
dbName: '',
password: '',
userName: '',
inUse: '',
});
const [data, setData] = useState([]); //数据库链接记录
const [option, setOption] = useState([]); //下拉列表数据
console.log(window.location.host);
//获取数据库链接记录
useEffect(() => {
setTableLoading(true);
get(`/Cityinterface/rest/services/OMS.svc/S_GetConnRecord`, {
_version: 9999,
dc: 1603334559186,
})
const [data, setData ] = useState([]) //数据库链接记录
const [option, setOption] =useState([]) //下拉列表数据
console.log(window.location.host)
//获取数据库链接记录
useEffect( () =>{
setTableLoading(true)
get(`/Cityinterface/rest/services/OMS.svc/S_GetConnRecord`,{
_version:9999,
dc:1603334559186
}).then(res =>{
setTableLoading(false)
if(res.length>0){
let arr = res.map( (item,index) =>{
item.key = index
return item
})
setData(arr)
}
}).catch(err =>{
setTableLoading(false)
console.error(err)
})
},[])
//获取数据库配置信息
useEffect( () =>{
get(`/Cityinterface/rest/services/OMS.svc/S_GetDataBaseConfig`,{
_version:9999,
dc:1603334559186
}).then(res =>{
console.log(res)
if(res.success){
let obj ={}
for( let k in dbForm){
obj[k]=res[k]
}
form.setFieldsValue(obj)
setDbForm((val)=>{
return {...val,...obj}
})
}
}).catch(err =>{
console.error(err)
})
},[])
const testChlick = () =>{
}
const onValuesChange =(value,b)=>{
form.setFieldsValue(value)
}
const onChange = (value) => {
form.setFieldsValue({
dbName:value
})
}
const onCheck = (e) =>{
console.log(dbForm)
console.log(form.getFieldValue())
console.log(form.getFieldsValue())
}
const selectFocus = (e) =>{
setOption([])
let params =form.getFieldsValue()
get(`/Cityinterface/rest/services/OMS.svc/S_GetDataBaseList`,{
_version:9999,
_dc:1603334559186,
userName:params['userName']||'',
password:params['password']||'',
ip:params['ip']||'',
}).then(res =>{
if(res.success){
setOption(res.root)
}else{
notification.error({
message:'通知',
duration:3,
description:res.message
})
setOption([])
}
console.log(res)
}).catch(err =>{
console.error(err)
})
}
//点击表格回显到表单
const tableClick = (item) => {
let obj = {...dbForm}
for(let k in obj){
obj[k] = item[k]
}
form.setFieldsValue(obj)
.then(res => {
setTableLoading(false);
if (res.length > 0) {
let arr = res.map((item, index) => {
item.key = index;
return item;
});
setData(arr);
}
})
.catch(err => {
setTableLoading(false);
console.error(err);
});
}, []);
//获取数据库配置信息
useEffect(() => {
get(`/Cityinterface/rest/services/OMS.svc/S_GetDataBaseConfig`, {
_version: 9999,
dc: 1603334559186,
})
.then(res => {
console.log(res);
if (res.success) {
let obj = {};
for (let k in dbForm) {
obj[k] = res[k];
}
form.setFieldsValue(obj);
setDbForm(val => {
return { ...val, ...obj };
});
}
})
.catch(err => {
console.error(err);
});
}, []);
const testChlick = () => {};
const onValuesChange = (value, b) => {
form.setFieldsValue(value);
};
const onChange = value => {
form.setFieldsValue({
dbName: value,
});
};
const onCheck = e => {
console.log(dbForm);
console.log(form.getFieldValue());
console.log(form.getFieldsValue());
};
const selectFocus = e => {
setOption([]);
let params = form.getFieldsValue();
get(`/Cityinterface/rest/services/OMS.svc/S_GetDataBaseList`, {
_version: 9999,
_dc: 1603334559186,
userName: params['userName'] || '',
password: params['password'] || '',
ip: params['ip'] || '',
})
.then(res => {
if (res.success) {
setOption(res.root);
} else {
notification.error({
message: '通知',
duration: 3,
description: res.message,
});
setOption([]);
}
console.log(res);
})
.catch(err => {
console.error(err);
});
};
//点击表格回显到表单
const tableClick = item => {
let obj = { ...dbForm };
for (let k in obj) {
obj[k] = item[k];
}
const columns = [
{
title: '服务器名或IP地址',
dataIndex: 'ip',
key: 'ip',
},
{
title: '数据库名称',
dataIndex: 'dbName',
key: 'dbName',
},
{
title: '数据库用户名称',
dataIndex: 'userName',
key: 'userName',
},
{
title: '保存时间',
dataIndex: 'saveTime',
key: 'saveTime',
},
{
title: '描述',
dataIndex: 'desc',
key: 'desc',
},
{
title: '修改描述',
dataIndex: 'name',
key: 'name',
render: () =>{
return (
<button>修改描述</button>
)
}
},
{
title: '删除',
dataIndex: 'name',
key: 'name',
render: () =>{
return (
<button>删除</button>
)
}
},
]
return (
<>
<PageContainer>
<Card>
<div>数据库初始化</div>
<div></div>
<Form
layout="horizontal"
labelAlign='left'
labelCol={{span:3}}
form={form}
onFinish={onFinish}
onValuesChange= {onValuesChange}
>
<Form.Item label={`${formLables.ip}:`} name='ip'>
<Input placeholder="请输入" />
</Form.Item>
<Form.Item label={`${formLables.userName}:`} name='userName'>
<Input placeholder="请输入" />
</Form.Item>
<Form.Item label={`${formLables.password}:`} name = 'password'>
<Input placeholder="请输入" />
</Form.Item>
<Form.Item label={`${formLables.dbName}:`} name = 'dbName'>
<Select
showSearch
placeholder="请选择"
optionFilterProp="children"
onFocus = {()=>{selectFocus()}}
onChange={(e) =>{onChange(e)}}
filterOption={(input, option) =>
option.children.toLowerCase().indexOf(input.toLowerCase()) >= 0
}
>
{option && option.length>0 &&option.map( (item, index) =>{
return (<Option value={item.value} key={index}>{item.value}</Option>)
})}
</Select>
</Form.Item>
<Form.Item >
<Space size='large'>
<Button onClick={onCheck}>测试连接</Button>
<Button htmlType='submit'>保存连接</Button>
<Button htmlType='reset' onClick = { testChlick}>数据库初始化</Button>
</Space>
<span>{dbForm.inUse}</span>
</Form.Item>
{/* <div className={`btnBox`}>
form.setFieldsValue(obj);
};
const columns = [
{
title: '服务器名或IP地址',
dataIndex: 'ip',
key: 'ip',
},
{
title: '数据库名称',
dataIndex: 'dbName',
key: 'dbName',
},
{
title: '数据库用户名称',
dataIndex: 'userName',
key: 'userName',
},
{
title: '保存时间',
dataIndex: 'saveTime',
key: 'saveTime',
},
{
title: '描述',
dataIndex: 'desc',
key: 'desc',
},
{
title: '修改描述',
dataIndex: 'name',
key: 'name',
render: () => {
return <button>修改描述</button>;
},
},
{
title: '删除',
dataIndex: 'name',
key: 'name',
render: () => {
return <button>删除</button>;
},
},
];
return (
<>
<PageContainer>
<Card>
<div>数据库初始化</div>
<div />
<Form
layout="horizontal"
labelAlign="left"
labelCol={{ span: 3 }}
form={form}
onFinish={onFinish}
onValuesChange={onValuesChange}
>
<Form.Item label={`${formLables.ip}:`} name="ip">
<Input placeholder="请输入" />
</Form.Item>
<Form.Item label={`${formLables.userName}:`} name="userName">
<Input placeholder="请输入" />
</Form.Item>
<Form.Item label={`${formLables.password}:`} name="password">
<Input placeholder="请输入" />
</Form.Item>
<Form.Item label={`${formLables.dbName}:`} name="dbName">
<Select
showSearch
placeholder="请选择"
optionFilterProp="children"
onFocus={() => {
selectFocus();
}}
onChange={e => {
onChange(e);
}}
filterOption={(input, option) =>
option.children.toLowerCase().indexOf(input.toLowerCase()) >=
0
}
>
{option &&
option.length > 0 &&
option.map((item, index) => {
return (
<Option value={item.value} key={index}>
{item.value}
</Option>
);
})}
</Select>
</Form.Item>
<Form.Item>
<Space size="large">
<Button onClick={onCheck}>测试连接</Button>
<Button htmlType="submit">保存连接</Button>
<Button htmlType="reset" onClick={testChlick}>
数据库初始化
</Button>
</Space>
<span>{dbForm.inUse}</span>
</Form.Item>
{/* <div className={`btnBox`}>
<Button onClick={onCheck}>测试连接</Button>
<Button>保存连接</Button>
<Button>数据库初始化</Button>
<span>(产品方案(物联GCK))</span>
</div> */}
</Form>
</Card>
<Card>
<div>近期保存的数据库连接</div>
<Table columns={columns} dataSource={data} bordered loading={tableLoading}
onRow={record => {
return {
onClick: () => { tableClick(record)}, // 点击行
};
}}
/>
</Card>
</PageContainer>
</>
)
}
</Form>
</Card>
<Card>
<div>近期保存的数据库连接</div>
<Table
columns={columns}
dataSource={data}
bordered
loading={tableLoading}
onRow={record => {
return {
onClick: () => {
tableClick(record);
}, // 点击行
};
}}
/>
</Card>
</PageContainer>
</>
);
};
export default connect()(InitDataBase);
import React,{ useEffect, useState } from 'react';
import { Card, Form, Input, Button, Select, Table, Tag, Space, Modal} from 'antd';
import React, { useEffect, useState } from 'react';
import { Card, Button, Table, Space, Modal } from 'antd';
import { PageContainer } from '@ant-design/pro-layout';
import { connect } from 'react-redux';
import { get, post } from 'services';
import { get } from 'services';
const ManagementDataBase = () => {
const [autoCheckList, setAutoCheckList] = useState([])
const [checkList, setCheckList] = useState([])
const [logList, setLogList] = useState([])
const [checkLoading, setCheckLoading] = useState(false)
const [logLoading, setLogLoading] = useState(false)
const [modalVisible, setModalVisible] = useState(false) //弹窗
const [content, setContent] = useState(null)
//检查数据库表
useEffect( () => {
setCheckLoading(true)
get(`/Cityinterface/rest/services/OMS.svc/TableCheck`,{
_version:9999,
_dc:new Date().getTime()
}).then(res =>{
setCheckLoading(false)
console.log(res)
if(res.sucess){
const { list, messageList } = res
//自动检测列表
let arr = list.map((item,index) => {
item.key=index
return item
})
//手动检查列表
let arr2 = messageList.map((item,index) => {
item.key=index
return item
})
console.log(arr)
setAutoCheckList(arr)
setCheckList(arr2)
}
}).catch(err =>{
setCheckLoading(false)
console.error(err)
})
},[])
//获取数据库升级记录
useEffect( () => {
setLogLoading(true)
get(`/Cityinterface/rest/services/OMS.svc/DatabaseStandard_GetLog`,{
_version:9999,
_dc:new Date().getTime()
}).then(res =>{
setLogLoading(false)
console.log(res)
if(res){
let arr = []
res.map((item,index)=>{
item.key = index
arr.push(item)
})
setLogList(res)
}
}).catch(err =>{
setLogLoading(false)
console.error(err)
})
},[])
const handleCheck = () =>{
console.log('check DB')
}
const handleUpdate = () =>{
console.log('updatedb')
}
const handleLog = (text) =>{
setModalVisible(true)
setContent(text)
}
const autoCheckColumns = [
{
title:'表名称',
dataIndex: 'tableName',
key: 'tableName',
},
{
title:'类型',
dataIndex: 'type',
key: 'type',
},
{
title:'差异比较',
dataIndex: 'message',
key: 'message',
},
];
const checkColumns = [
{
title:'表名称',
dataIndex: 'tableName',
key: 'tableName',
width:200
},
// {
// title:'类型',
// dataIndex: 'type',
// key: 'type',
// },
{
title:'差异比较',
dataIndex: 'message',
key: 'message',
ellipsis:true,
// width:80
},
];
const logColumns = [
{
title:'登录名',
dataIndex: 'updateBy',
key: 'updateBy',
},
{
title:'数据库名称',
dataIndex: 'name',
key: 'name',
},
{
title:'数据库版本',
dataIndex: 'version',
key: 'version',
},
{
title:'升级时间',
dataIndex: 'updateTime',
key: 'updateTime',
},
{
title:'版本日志',
dataIndex: 'despersion',
key: 'despersion',
render: (text) =>{
return (
<button onClick ={()=>{handleLog(text)}}>日志</button>
)
}
},
{
title:'升级内容',
dataIndex: 'content',
key: 'content',
ellipsis:true,
render: (text) =>{
return (
<button onClick ={()=>{handleLog(text)}}>升级内容</button>
)
}
},
]
const [autoCheckList, setAutoCheckList] = useState([]);
const [checkList, setCheckList] = useState([]);
const [logList, setLogList] = useState([]);
const [checkLoading, setCheckLoading] = useState(false);
const [logLoading, setLogLoading] = useState(false);
const [modalVisible, setModalVisible] = useState(false); //弹窗
const [content, setContent] = useState(null);
//检查数据库表
useEffect(() => {
setCheckLoading(true);
get(`/Cityinterface/rest/services/OMS.svc/TableCheck`, {
_version: 9999,
_dc: new Date().getTime(),
})
.then(res => {
setCheckLoading(false);
console.log(res);
if (res.sucess) {
const { list, messageList } = res;
// 自动检测列表
let arr = list.map((item, index) => {
item.key = index;
return item;
});
// 手动检查列表
let arr2 = messageList.map((item, index) => {
item.key = index;
return item;
});
console.log(arr);
setAutoCheckList(arr);
setCheckList(arr2);
}
})
.catch(err => {
setCheckLoading(false);
console.error(err);
});
}, []);
//获取数据库升级记录
useEffect(() => {
setLogLoading(true);
get(`/Cityinterface/rest/services/OMS.svc/DatabaseStandard_GetLog`, {
_version: 9999,
_dc: new Date().getTime(),
})
.then(res => {
setLogLoading(false);
console.log(res);
if (res) {
let arr = [];
res.map((item, index) => {
item.key = index;
arr.push(item);
});
setLogList(res);
}
})
.catch(err => {
setLogLoading(false);
console.error(err);
});
}, []);
const handleCheck = () => {
console.log('check DB');
};
const handleUpdate = () => {
console.log('updatedb');
};
const handleLog = text => {
setModalVisible(true);
setContent(text);
};
const autoCheckColumns = [
{
title: '表名称',
dataIndex: 'tableName',
key: 'tableName',
},
{
title: '类型',
dataIndex: 'type',
key: 'type',
},
{
title: '差异比较',
dataIndex: 'message',
key: 'message',
},
];
const checkColumns = [
{
title: '表名称',
dataIndex: 'tableName',
key: 'tableName',
width: 200,
},
// {
// title:'类型',
// dataIndex: 'type',
// key: 'type',
// },
{
title: '差异比较',
dataIndex: 'message',
key: 'message',
ellipsis: true,
// width:80
},
];
const logColumns = [
{
title: '登录名',
dataIndex: 'updateBy',
key: 'updateBy',
},
{
title: '数据库名称',
dataIndex: 'name',
key: 'name',
},
{
title: '数据库版本',
dataIndex: 'version',
key: 'version',
},
{
title: '升级时间',
dataIndex: 'updateTime',
key: 'updateTime',
},
{
title: '版本日志',
dataIndex: 'despersion',
key: 'despersion',
render: text => {
return (
<button
onClick={() => {
handleLog(text);
}}
>
日志
</button>
);
},
},
{
title: '升级内容',
dataIndex: 'content',
key: 'content',
ellipsis: true,
render: text => {
return (
<button
onClick={() => {
handleLog(text);
}}
>
升级内容
</button>
);
},
},
];
return (
<>
<PageContainer>
<Card>
<div>表结构自动化修复</div>
<Table columns={ autoCheckColumns } dataSource={autoCheckList} bordered loading={checkLoading}></Table>
<Space>
<Button onClick= {handleCheck}>检查</Button>
<Button onClick= {handleUpdate}>升级</Button>
</Space>
</Card>
<Card>
<div>表字段手动修复 (字段长度不统一,请手动修改差异,数据可能会截断,请谨慎操作)</div>
<Table columns={ checkColumns } dataSource={checkList} bordered loading={checkLoading}></Table>
</Card>
<Card>
<div>数据库升级记录</div>
<Table columns={ logColumns } dataSource={logList} bordered loading={logLoading}></Table>
</Card>
</PageContainer>
return (
<>
<PageContainer>
<Card>
<div>表结构自动化修复</div>
<Table
columns={autoCheckColumns}
dataSource={autoCheckList}
bordered
loading={checkLoading}
/>
<Space>
<Button onClick={handleCheck}>检查</Button>
<Button onClick={handleUpdate}>升级</Button>
</Space>
</Card>
<Card>
<div>
表字段手动修复
(字段长度不统一,请手动修改差异,数据可能会截断,请谨慎操作)
</div>
<Table
columns={checkColumns}
dataSource={checkList}
bordered
loading={checkLoading}
/>
</Card>
<Card>
<div>数据库升级记录</div>
<Table
columns={logColumns}
dataSource={logList}
bordered
loading={logLoading}
/>
</Card>
</PageContainer>
<Modal
title='详细信息'
visible={modalVisible}
keyboard={false} maskClosable
onOk={() => setModalVisible(false)}
onCancel={() => setModalVisible(false)}
footer={[
<Button onClick={ () => setModalVisible(false)}>关闭窗口</Button>
]}>
{content}
</Modal>
</>
)
<Modal
title="详细信息"
visible={modalVisible}
keyboard={false}
maskClosable
onOk={() => setModalVisible(false)}
onCancel={() => setModalVisible(false)}
footer={[
<Button onClick={() => setModalVisible(false)}>关闭窗口</Button>,
]}
>
{content}
</Modal>
</>
);
};
}
export default ManagementDataBase
\ No newline at end of file
export default ManagementDataBase;
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