Commit 1b61b19b authored by 涂伟's avatar 涂伟
parents a18f7114 8155e397
Pipeline #74755 passed with stages
......@@ -848,6 +848,7 @@ const BookConfigNew = props => {
onOk={viewSubmit}
onCancel={() => {
setAccountVisile(false);
callBackSubmit();
}}
centered
bodyStyle={{ width: '100%', height: '800px', overflowY: 'scorll' }}
......
......@@ -98,6 +98,14 @@ const StandingBook = props => {
width: 200,
ellipsis: true,
},
{
title: '父台账名称',
dataIndex: 'PreName',
key: 'PreName',
align: 'center',
width: 200,
ellipsis: true,
},
{
title: '台账字段',
dataIndex: 'fields',
......
......@@ -33,6 +33,8 @@ import {
CM_XWBPlan_feedbackTable,
CM_XWBPlan_DataEditORAdd,
CM_XWBPlan_DataList,
CM_XWBPlan_DeviceAccountTable,
GetParentDeviceTemplate,
} from '@/services/maintenance/api';
import { GetTaskSyncField } from '@/services/PatrolFeedback/api';
......@@ -75,6 +77,7 @@ const AddModal = props => {
const [eventData, setEventData] = useState([]);
const [autoFlag, setAutoFlag] = useState(false); // 禁用自动派发
const [keepData, setKeepData] = useState('');
const [parentList, setParentList] = useState([]);
const [keep, setKeep] = useState([
'任务编码',
'设备编码',
......@@ -143,6 +146,7 @@ const AddModal = props => {
getEventData();
if (visible) {
getRole();
getParentList();
if (type === 'add') {
setChee('否');
form.setFieldsValue({ isSubmit: '否', docycle: '一周一次' });
......@@ -162,6 +166,11 @@ const AddModal = props => {
setVisibleChecked1(data.autoAssign == '是');
console.log(data);
data && form.setFieldsValue({ ...data });
if (data.parentBusinessName) {
form.setFieldsValue({ parentId: data.parentId });
} else {
form.setFieldsValue({ parentId: '' });
}
let mappingFields = JSON.parse(data.mappingFields);
getGetTaskSyncField(mappingFields); // 获取字段名数据
......@@ -189,6 +198,14 @@ const AddModal = props => {
getFeedbackTable();
}, []);
const getParentList = () => {
GetParentDeviceTemplate({ id: formObj.id }).then(res => {
if (res.code === 0) {
setParentList(res.data);
}
});
};
// 获取关联事件数据
const getEventData = () => {
GetCM_Event_LoadEventTable().then(res => {
......@@ -208,13 +225,9 @@ const AddModal = props => {
};
const getList = () => {
CM_XWBPlan_AccountTable().then(res => {
if (res.msg == 'Ok') {
let arr = [];
res.data.map((item, index) => {
arr.push(item.accountName);
});
setTreeData(arr);
CM_XWBPlan_DeviceAccountTable().then(res => {
if (res.code === 0) {
setTreeData(res.data);
}
});
};
......@@ -484,6 +497,17 @@ const AddModal = props => {
return <TreeNode value={org} title={org} key={org} />;
};
const mapTree = org => {
if (org.Value) {
return (
<TreeNode value={org.Key} title={org.Key} disabled>
{org.Value.map(item => mapTree(item))}
</TreeNode>
);
}
return <TreeNode value={org} title={org} key={org} />;
};
// 获取字段名数据
const getGetTaskSyncField = e => {
// 编辑时处理数据为下拉框过滤调已选数据
......@@ -535,14 +559,11 @@ const AddModal = props => {
let lastFrom = [];
let lastTo = [];
console.log(from);
console.log(keep);
keep.map(j => {
if (from.indexOf(j) == -1) {
lastFrom.push(j);
}
});
console.log(lastFrom);
setKeepData(lastFrom);
keepAll.map(j => {
......@@ -550,7 +571,6 @@ const AddModal = props => {
lastTo.push(j);
}
});
console.log(lastTo);
setKeepTree(lastTo);
}
......@@ -571,13 +591,11 @@ const AddModal = props => {
// 改变关联事件类型
const onChangeEvent = (e, i) => {
console.log(e, i, '666');
if (!i || !e) {
setKeepData(keep);
formAdd.resetFields();
}
let aa = keepAllData.find(i => i.name === e);
console.log(keepAllData, e, '666');
if (aa) {
getReloadTableField(aa.tableName, i); // 找到关联事件对应事件表获取对应表的所有字段
}
......@@ -588,8 +606,6 @@ const AddModal = props => {
tableName: e,
}).then(res => {
if (res.msg === 'Ok') {
console.log(res.data.root);
console.log(i);
setKeepAll(res.data.root);
// 编辑时过滤下l拉框初始数据
if (i) {
......@@ -606,7 +622,6 @@ const AddModal = props => {
lastTo.push(b);
}
});
console.log(lastTo);
setKeepTree(lastTo);
} else {
setKeepTree(res.data.root);
......@@ -632,7 +647,6 @@ const AddModal = props => {
aa.push({ name: item, key: index, ID: index, children: arr[item] });
bb.push(item);
});
console.log(aa, 'aaaaaaaaaaaaa');
// setKeepTree(aa);
// setKeepAll(aa);
// all.current = aa;
......@@ -749,6 +763,7 @@ const AddModal = props => {
<Select placeholder="选择业务类型" onSearch={inputType} showSearch>
<Option value="巡检">巡检</Option>
<Option value="保养">保养</Option>
<Option value="水厂">水厂</Option>
</Select>
</Item>
</Col>
......@@ -764,22 +779,6 @@ const AddModal = props => {
>
{characteristics1.map(i => mapTreeSelect(i))}
</TreeSelect>
{/* <Select placeholder="选择计划执行周期">
<Option value="一日一次">一日一次</Option>
<Option value="一周一次">一周一次</Option>
<Option value="半月一次">半月一次</Option>
<Option value="一月一次">一月一次</Option>
<Option value="季度一次">季度一次</Option>
<Option value="半年一次">半年一次</Option>
<Option value="一年一次">一年一次</Option>
<Option value="1小时一次">1小时一次</Option>
<Option value="2小时一次">2小时一次</Option>
<Option value="3小时一次">3小时一次</Option>
<Option value="4小时一次">4小时一次</Option>
<Option value="6小时一次">6小时一次</Option>
<Option value="8小时一次">8小时一次</Option>
<Option value="12小时一次">12小时一次</Option>
</Select> */}
</Item>
</Col>
<Col span={24}>
......@@ -790,7 +789,7 @@ const AddModal = props => {
rules={[
{
required: true,
message: '请输入业务名称',
message: '请选择维保设备',
},
{
validator: (rule, value) => {
......@@ -802,7 +801,7 @@ const AddModal = props => {
},
]}
>
<Select placeholder="选择此计划关联的设备台账名称" showSearch>
{/* <Select placeholder="选择此计划关联的设备台账名称" showSearch>
{treeData
? treeData.map((item, index) => (
<Option key={index} value={item}>
......@@ -810,6 +809,29 @@ const AddModal = props => {
</Option>
))
: ''}
</Select> */}
<TreeSelect
showSearch
dropdownStyle={{ maxHeight: 400, overflow: 'auto' }}
placeholder="请选择执行周期"
allowClear
treeDefaultExpandAll
showCheckedStrategy
>
{treeData.map(i => mapTree(i))}
</TreeSelect>
</Item>
</Col>
<Col span={24}>
<Item label="父业务模板" name="parentId" labelCol={{ span: 5 }}>
<Select placeholder="选择父业务模板" showSearch allowClear>
{parentList
? parentList.map((item, index) => (
<Option key={index.ID} value={item.ID}>
{item.TemplateName}
</Option>
))
: ''}
</Select>
</Item>
</Col>
......
......@@ -10,7 +10,13 @@ import {
GetDeviceConfigList,
EditDeviceConfig,
} from '@/services/maintenance/api';
import { EditTwoTone, DeleteOutlined, PlusOutlined, OrderedListOutlined } from '@ant-design/icons';
import {
EditTwoTone,
DeleteOutlined,
PlusOutlined,
OrderedListOutlined,
ApartmentOutlined,
} from '@ant-design/icons';
import styles from './maintenance.less';
import AddModal from './AddModal';
import OptionEditModal from './OptionEditModal';
......@@ -355,11 +361,17 @@ const maintenance = () => {
</Tooltip>
),
},
{
title: '父业务模板',
dataIndex: 'parentBusinessName',
key: 'parentBusinessName',
width: 100,
align: 'center',
},
{
title: '反馈名称',
dataIndex: 'feedbackName',
key: 'feedbackName',
onCell: () => ({
style: {
maxWidth: 200,
......
......@@ -1082,9 +1082,11 @@ const FlowChart = props => {
const jsonData = val => {
let listArr = [];
val.map((item, index) => {
if(!item.Config){
console.log(item);
debugger;
if (!item.Config) {
console.log(item);
debugger
debugger;
let arr = [];
arr.push({
mapServer: item.schemeName,
......@@ -1108,6 +1110,7 @@ const FlowChart = props => {
fromData: {
tableName: item.TableName,
filed: item.Fields,
filedShape: item.tableShape,
},
toData: arr,
},
......@@ -1118,6 +1121,7 @@ const FlowChart = props => {
fromData: {
tableName: item.TableName,
filed: item.Fields,
filedShape: item.tableShape,
},
toData: arr,
},
......@@ -1126,10 +1130,9 @@ const FlowChart = props => {
let json = JSON.stringify(obj);
let newObj = { Config: json, BackfillType: 'GIS', RuleName: item.RuleName };
listArr.push(newObj);
}else{
} else {
listArr.push(item);
}
});
return listArr;
};
......
......@@ -43,6 +43,7 @@ const AddModal = props => {
const [tableType, setTableType] = useState();
const [tableName, setTableName] = useState();
const [ruleList, setRuleList] = useState([]);
const [tableShape, setTableShape] = useState();
const [form] = Form.useForm();
useEffect(() => {
......@@ -54,7 +55,9 @@ const AddModal = props => {
setRuleList(arr);
getSchemeList();
if (modalType === 'edit') {
console.log(msg);
form.setFieldsValue(msg);
setTableShape(msg.tableShape);
setTableType(msg.tableType);
setTableName(msg.TableName);
}
......@@ -104,8 +107,6 @@ const AddModal = props => {
const getLayerFields = (val, key, value, typeFields) => {
let obj = form.getFieldsValue();
let newValue = value ? value : schemeValue;
console.log(schemeValue);
debugger;
let data = newValue.find(i => i.servicename === obj.schemeName);
GetLayerFields({
mapServer: data.servicename,
......@@ -141,6 +142,7 @@ const AddModal = props => {
arr.push(...item.TableFields);
});
let data = arr.find(i => i.FieldName === val[Object.keys(val)[0]]);
setTableShape(data.FiledShape);
setTableType(data.type);
setType(data.FiledType);
setTableName(data.table);
......@@ -178,7 +180,8 @@ const AddModal = props => {
} else {
obj = { ...validate, key: msg.ID || msg.key, ...arr };
}
onSubumit(obj, modalType, tableType, tableName);
debugger
onSubumit(obj, modalType, tableType, tableName, tableShape);
}
});
};
......
......@@ -81,6 +81,8 @@ const ConfigGIS = (props, ref) => {
let obj = {};
if (item.Config) {
let newConfig = JSON.parse(item.Config);
console.log(newConfig);
debugger
if (newConfig.mapping) {
let users = [];
newConfig.mapping[0].toData.map((x, y) => {
......@@ -90,6 +92,7 @@ const ConfigGIS = (props, ref) => {
obj.ID = index;
obj.RuleName = item.RuleName;
obj.TableName = newConfig.mapping[0].fromData.tableName;
obj.tableShape = newConfig.mapping[0].fromData.filedShape;
obj.key = index;
obj.nodeName1 = newConfig.mapping[0].toData[0].tableName;
obj.nodeValue1 = newConfig.mapping[0].toData[0].filed;
......@@ -112,6 +115,7 @@ const ConfigGIS = (props, ref) => {
obj.ID = index;
obj.RuleName = item.RuleName;
obj.TableName = newConfig.relationFormMapping[0].fromData.tableName;
obj.tableShape = newConfig.relationFormMapping[0].fromData.filedShape;
obj.key = index;
obj.nodeName1 = newConfig.relationFormMapping[0].toData[0].tableName;
obj.nodeValue1 = newConfig.relationFormMapping[0].toData[0].filed;
......@@ -176,20 +180,21 @@ const ConfigGIS = (props, ref) => {
setviewMsg(val);
};
// GIS配置确定回调
const saveView = (val, type, tableType, TableName) => {
const saveView = (val, type, tableType, TableName, tableShape) => {
let list = JSON.parse(JSON.stringify(tableData.current));
// eslint-disable-next-line prefer-spread
let newKey = list.length > 0 ? Math.max.apply(Math, list.map(item => item.key)) + 1 : 0;
if (type === 'add') {
list.push({ ...val, key: newKey, tableType, TableName });
list.push({ ...val, key: newKey, tableType, TableName, tableShape });
} else {
let edtiIndex = list.findIndex(item => item.key === val.key);
list[edtiIndex] = { ...val, key: newKey, tableType, TableName };
list[edtiIndex] = { ...val, key: newKey, tableType, TableName, tableShape };
}
tableData.current = list;
console.log(list);
debugger
nodeChage('FlowNodeBackfillConfigs', tableData.current);
setViewModal(false);
};
......
/* eslint-disable no-else-return */
/* eslint-disable no-unneeded-ternary */
import React, { useState, useEffect } from 'react';
import {
DatePicker,
Input,
Table,
Row,
Col,
Button,
notification,
message,
Tooltip,
Spin,
Pagination,
Select,
Tag,
Modal,
} from 'antd';
import { SwapRightOutlined, SyncOutlined } from '@ant-design/icons';
import moment from 'moment';
import 'moment/dist/locale/zh-cn';
import locale from 'antd/es/date-picker/locale/zh_CN';
import styles from './index.less';
import { GetCallLogPages } from '@/services/logCenter/api';
const { RangePicker } = DatePicker;
const LogCenter = () => {
const [loading, setLoading] = useState(false); // 源数据
const [requestUrl, setRequestUrl] = useState(''); // 接口名称筛选
const [label, setLabel] = useState(''); // 标签筛选
const [allTime, setAllTime] = useState([
moment().startOf('month'),
moment(new Date(), 'YYYY-MM-DD HH:mm:ss'),
]);
const [showSearchStyle, setShowSearchStyle] = useState(false); // 是否显示模糊查询样式
const [total, setTotal] = useState();
const [pageSize, setPageSize] = useState(20);
const [currentPage, setCurrentPage] = useState(1);
const [keepTableList, setKeepTableList] = useState([]);
const [loginCodeFilters, setLoginCodeFilters] = useState([]);
const [loginStateCodeFilters, setLoginStateCodeFilters] = useState([]);
const [filteredValue, setFilteredValue] = useState([]);
const [content, setContent] = useState();
const [modalVisible, setModalVisible] = useState(false);
useEffect(() => {
getTableList();
}, []);
const getTableList = (pageIndex, page, time, url, tag) => {
setLoading(true);
GetCallLogPages({
pageIndex: pageIndex ? pageIndex : currentPage,
pageSize: page ? page : pageSize,
sortFieldsAndDirection: '',
isAll: true,
dateFrom: time
? time[0].format('YYYY-MM-DD HH:mm:ss')
: allTime[0].format('YYYY-MM-DD HH:mm:ss'),
dateTo: time
? time[1].format('YYYY-MM-DD HH:mm:ss')
: allTime[1].format('YYYY-MM-DD HH:mm:ss'),
requestUrl: url === '' ? '' : requestUrl,
thirdUrl: '',
label: tag === '' ? '' : label,
}).then(res => {
setLoading(false);
if (res.code === 0) {
setKeepTableList(res.data.list);
setTotal(res.data.totalCount);
setPageSize(res.data.pageSize);
setCurrentPage(res.data.pageIndex);
let arr1 = res.data.list.map(item => item.code);
arr1 = arr1.filter((value, index) => arr1.indexOf(value) === index);
setLoginCodeFilters(arr1.map(item => ({ text: item, value: item })));
let arr2 = res.data.list.map(item => item.statusCode);
arr2 = arr2.filter((value, index) => arr2.indexOf(value) === index);
setLoginStateCodeFilters(arr2.map(item => ({ text: item, value: item })));
} else {
setKeepTableList([]);
notification.error({
message: '提示',
duration: 3,
description: res.msg,
});
}
});
};
const columns = [
{
title: '接口标签',
dataIndex: 'label',
key: 'label',
width: 150,
fixed: 'left',
render: item => searchStyle1(item),
},
{
title: '接口名称',
dataIndex: 'requestUrl',
key: 'requestUrl',
width: 300,
fixed: 'left',
// render: item => searchStyle(item),
onCell: () => ({
style: {
maxWidth: 400,
overflow: 'hidden',
whiteSpace: 'nowrap',
textOverflow: 'ellipsis',
cursor: 'pointer',
},
}),
render: record => (
<Tooltip placement="topLeft" title={record}>
{searchStyle(record)}
</Tooltip>
),
},
{
title: '调用时间',
dataIndex: 'time',
key: 'time',
width: 120,
align: 'center',
},
{
title: '调用结果',
dataIndex: 'code',
key: 'code',
width: 100,
align: 'center',
filters: loginCodeFilters,
onFilter: (value, record) => record.code === value,
filteredValue,
render: record => {
if (record === 0) {
return <span style={{ color: '#6ecd3d', fontWeight: 'bold' }}>成功</span>;
} else {
return <span style={{ color: 'red', fontWeight: 'bold' }}>失败</span>;
}
},
},
{
title: '耗时/ms',
dataIndex: 'consumerTime',
key: 'consumerTime',
align: 'center',
width: 80,
},
{
title: '返回状态码',
dataIndex: 'statusCode',
key: 'statusCode',
width: 100,
align: 'center',
filters: loginStateCodeFilters,
onFilter: (value, record) => record.statusCode === value,
filteredValue,
},
{
title: '请求方法',
dataIndex: 'method',
key: 'method',
width: 80,
align: 'center',
// render: record => {
// if (record === 'GET') {
// return <span style={{ color: '#6ecd3d', fontWeight: 'bold' }}>GET</span>;
// } else if (record === 'POST') {
// return <span style={{ color: '#ffb880', fontWeight: 'bold' }}>POST</span>;
// }
// },
},
{
title: '返回体大小/byte',
dataIndex: 'responseSize',
key: 'responseSize',
width: 130,
align: 'center',
},
{
title: '返回信息',
dataIndex: 'message',
key: 'message',
onCell: () => ({
style: {
maxWidth: 400,
overflow: 'hidden',
whiteSpace: 'nowrap',
textOverflow: 'ellipsis',
cursor: 'pointer',
},
}),
render: record => (
<Tooltip placement="topLeft" title={record}>
{record}
</Tooltip>
),
},
{
title: '异常信息',
dataIndex: 'exception',
key: 'exception',
align: 'center',
width: 100,
render: record => {
if (record) {
return (
<Button
size="small"
type="primary"
onClick={() => {
handleLog(record);
}}
style={{ backgroundColor: 'red' }}
>
错误内容
</Button>
);
}
},
},
];
const handleLog = text => {
setModalVisible(true);
setContent(text);
};
// 模糊查询匹配的样式
const searchStyle = val => {
let n;
if (showSearchStyle) {
n = val.replace(new RegExp(requestUrl, 'g'), `<span style='color:red'>${requestUrl}</span>`);
} else {
n = val;
}
return <div dangerouslySetInnerHTML={{ __html: n }} />;
};
const searchStyle1 = val => {
let n;
if (showSearchStyle) {
n = val.replace(new RegExp(label, 'g'), `<span style='color:red'>${label}</span>`);
} else {
n = val;
}
return <div dangerouslySetInnerHTML={{ __html: n }} />;
};
const changeTime = time => {
let time1 = time[0].format('YYYY-MM');
let time2 = time[1].format('YYYY-MM');
if (time1 !== time2) {
message.warning('不允许跨月查询');
} else {
setAllTime(time);
setPageSize(20);
setCurrentPage(1);
getTableList(1, 20, time);
}
};
// 近1/6/12/24小时
const setTime = time => {
setAllTime([
moment(new Date(new Date().getTime() - time * 60 * 60 * 1000), 'YYYY-MM-DD HH:mm:ss'),
moment(new Date(), 'YYYY-MM-DD HH:mm:ss'),
]);
};
const handleReset = () => {
setAllTime([moment().startOf('month'), moment(new Date(), 'YYYY-MM-DD HH:mm:ss')]);
setRequestUrl('');
setLabel('');
setShowSearchStyle(false);
getTableList(
1,
20,
[moment().startOf('month'), moment(new Date(), 'YYYY-MM-DD HH:mm:ss')],
'',
'',
);
};
const paginationChange = (page, pageSizes) => {
getTableList(page, pageSizes);
setCurrentPage(page);
setPageSize(pageSizes);
};
const onChangeInput = filters => {
setFilteredValue(filters.code, filters.statusCode);
};
return (
<div className={styles.centerLog}>
<div className={styles.head}>
<span style={{ lineHeight: 2, marginLeft: '7px' }}>时间:</span>
<RangePicker
locale={locale}
showTime
format="YYYY-MM-DD HH:mm:ss"
onChange={changeTime}
value={allTime}
allowClear={false}
/>
<span style={{ marginLeft: '20px' }}>接口名称:</span>
<Input
style={{ width: '200px' }}
placeholder="请输入接口名称"
onChange={e => {
setRequestUrl(e.target.value);
}}
value={requestUrl}
allowClear
/>
<span style={{ marginLeft: '20px' }}>接口标签:</span>
<Input
style={{ width: '200px' }}
placeholder="请输入接口标签"
onChange={e => {
setLabel(e.target.value);
}}
value={label}
allowClear
/>
<Button
type="primary"
style={{ marginLeft: '10px' }}
onClick={() => {
setPageSize(20);
setCurrentPage(1);
getTableList(1, 20);
setShowSearchStyle(true);
}}
>
查询
</Button>
<Button
icon={<SyncOutlined className={styles.icon} />}
onClick={handleReset}
style={{
marginLeft: '25px',
verticalAlign: 'middle',
marginTop: '-3px',
}}
>
重置
</Button>
</div>
<div className={styles.table}>
<Table
size="small"
bordered
columns={columns}
dataSource={keepTableList}
scroll={{ x: 'max-content', y: 'calc(100vh - 225px)' }}
pagination={false}
onChange={onChangeInput}
loading={loading}
/>
</div>
<div className={styles.footer}>
<Pagination
total={total}
showTotal={(aa, range) => `第${range[0]}-${range[1]} 条/共 ${total} 条`}
pageSizeOptions={[10, 20, 40, 100]}
current={currentPage}
onChange={paginationChange}
size="small"
pageSize={pageSize}
showSizeChanger
/>
</div>
<Modal
title="详细信息"
visible={modalVisible}
keyboard={false}
maskClosable
centered
onOk={() => setModalVisible(false)}
onCancel={() => setModalVisible(false)}
width="1000px"
bodyStyle={{
minHeight: '100px',
maxHeight: '600px',
overflowY: 'scroll',
}}
style={{ top: '40px' }}
footer={[
<Button type="primary" onClick={() => setModalVisible(false)} key="back">
关闭窗口
</Button>,
]}
>
{content}
</Modal>
</div>
);
};
export default LogCenter;
.centerLog {
width: 100%;
height: 100%;
.head {
padding: 10px;
background: white;
margin-bottom: 2px;
width: 100%;
height: 52px;
}
.table {
height: calc(100% - 95px);
width: 100%;
background-color: white;
padding: 10px;
overflow: hidden;
margin-bottom: 3px;
}
.footer{
width: 100%;
height: 42px;
background-color: white;
display: flex;
justify-content: flex-end;
padding: 10px;
}
.icon {
margin-top: -5px !important;
vertical-align: text-bottom;
}
}
......@@ -17,6 +17,7 @@ import { SaveRoutes } from '@/services/hostmanager/hostmanager';
import { InfoCircleOutlined } from '@ant-design/icons';
const { Item } = Form;
const { TextArea } = Input;
const AddModal = props => {
const { callBackSubmit = () => {}, type, pickItem, visible, onCancel, keepData } = props;
const [loading, setLoading] = useState(false);
......@@ -40,6 +41,7 @@ const AddModal = props => {
IsAuthentication: pickItem.isAuthentication,
Key: pickItem.key,
Priority: pickItem.priority,
Remark: pickItem.remark,
UpstreamHost: pickItem.upstreamHost,
AddHeasersToRequest: pickItem.addHeasersToRequest,
UpstreamHeaderTransform: pickItem.upstreamHeaderTransform,
......@@ -103,6 +105,7 @@ const AddModal = props => {
Url: obj.Url || null,
IsAuthentication: obj.IsAuthentication,
Key: obj.Key || null,
Remark: obj.Remark || null,
Priority: obj.Priority || 0,
UpstreamHost: obj.UpstreamHost || null,
AddHeasersToRequest: obj.AddHeasersToRequest || null,
......@@ -239,7 +242,7 @@ const AddModal = props => {
},
]}
>
<Input allowClear placeholder="示例:/{url}" disabled={hidden}/>
<Input allowClear placeholder="示例:/{url}" disabled={hidden} />
</Item>
<Item
label="上游请求方式"
......@@ -275,10 +278,6 @@ const AddModal = props => {
label="关键字"
name="Key"
rules={[
{
required: true,
message: '请输入关键字',
},
{
validator: (rule, value) => {
let val = form.getFieldValue().Key;
......@@ -300,6 +299,18 @@ const AddModal = props => {
>
<Input allowClear disabled={hidden} />
</Item>
<Item
label="备注"
name="Remark"
rules={[
{
required: true,
message: '请填写备注',
},
]}
>
<TextArea placeholder="请填写备注" allowClear />
</Item>
<Row>
<Col span={8}>
<Item
......
......@@ -69,13 +69,6 @@ const GateConfig = () => {
console.log(checked);
if (checked) {
setAllLoading(true);
// axios({
// method: 'get',
// url: `${tableData[0].url}/PandaOMS/OMS/health/get`,
// }).then(res => {
// console.log(res);
// debugger;
// });
GetWayHealthCheck().then(resData => {
setAllLoading(false);
if (resData.code === 0) {
......
......@@ -167,6 +167,7 @@ const MobileConfigPage = asyncComponent(() => import('@/pages/productCenter/mobi
const ServiceLog = asyncComponent(() => import('@/pages/log/serviceLog'));
const LoginLog = asyncComponent(() => import('@/pages/log/loginLog'));
const OmsLog = asyncComponent(() => import('@/pages/log/omsLog'));
const LogCenter = asyncComponent(() => import('@/pages/log/logCenter'));
const superAuthority = [USER_MODE.SUPER];
const adminAuthority = [...superAuthority, USER_MODE.ADMIN];
const iconStyle = { verticalAlign: 'middle' };
......@@ -529,6 +530,11 @@ export default {
name: '运维痕迹',
component: OmsLog,
},
{
path: '/system/logCenter',
name: '日志管理',
component: LogCenter,
},
],
},
],
......
/* eslint-disable camelcase */
/*
* @Description:
* @Author: leizhe
* @Date: 2021-09-27 09:42:21
* @LastEditTime: 2022-04-19 14:56:50
* @LastEditors: leizhe
*/
import { get, PUBLISH_SERVICE, post, postForm } from '../index';
// 获取错误日志、业务日志、第三方调用日志
export const GetCallLogPages = data => post(`/PandaCore/GCK/Log/GetCallLogPages`, data);
......@@ -24,6 +24,10 @@ export const CM_XWBPlan_DataList = query =>
export const CM_XWBPlan_AccountTable = query =>
get(`${PUBLISH_SERVICE}/WorkOrderCenter/CM_XWBPlan_AccountTable`, query);
// 巡维保计划关联设备台账表、普通台账
export const CM_XWBPlan_DeviceAccountTable = query =>
get(`${PUBLISH_SERVICE}/WorkOrderCenter/CM_XWBPlan_DeviceAccountTable`, query);
// 计划关联反馈台账表
export const CM_XWBPlan_feedbackTable = query =>
get(`${PUBLISH_SERVICE}/WorkOrderCenter/CM_XWBPlan_feedbackTable`, query);
......@@ -39,3 +43,7 @@ export const CM_XWBPlan_DataEditORAdd = data =>
// 巡维保计划数据编辑OR添加
export const CM_XWBPlan_ChangeOrder = planIds =>
post(`${PUBLISH_SERVICE}/WorkOrderCenter/CM_XWBPlan_ChangeOrder?planIds=${planIds}`);
// 获取父级维保模板
export const GetParentDeviceTemplate = query =>
get(`${PUBLISH_SERVICE}/WorkOrderCenter/GetParentDeviceTemplate`, query);
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