Commit 528d33ac authored by shaoan123's avatar shaoan123

对接人工智能方案管理接口

parent e45a7f6d
Pipeline #27247 skipped with stages
# PUBLIC_PATH = reactOMS, 默认转发 /cityinterface # PUBLIC_PATH = reactOMS, 默认转发 /cityinterface
PROXY=/Cityinterface:http://192.168.10.150:8777;/Publish:http://192.168.10.150:8777;/Web4:http://192.168.10.150:8777;/CityTemp:http://192.168.10.150:8777 # PROXY=/Cityinterface:http://192.168.10.150:8777;/Publish:http://192.168.10.150:8777;/Web4:http://192.168.10.150:8777;/CityTemp:http://192.168.10.150:8777
PROXY=/Cityinterface:http://192.168.12.121:8082;/Publish:http://192.168.12.121:8082;/Web4:http://192.168.12.121:8082;/CityTemp:http://192.168.12.121:8082
# 可设置第二个代理,test为转发前缀,后面为代理转发的地址 # 可设置第二个代理,test为转发前缀,后面为代理转发的地址
# PROXY2 = test : http://localhost:8006/ # PROXY2 = test : http://localhost:8006/
......
...@@ -13,6 +13,9 @@ ...@@ -13,6 +13,9 @@
background-color: #ffffff; background-color: #ffffff;
color: #000000; color: #000000;
} }
.ant-card-body{
padding-bottom: 0 !important;
}
} }
.predict{ .predict{
display: flex; display: flex;
...@@ -32,3 +35,12 @@ ...@@ -32,3 +35,12 @@
text-decoration: underline; text-decoration: underline;
width: 8rem; width: 8rem;
} }
.deviceList{
max-height: 20rem;
overflow-y: scroll;
}
.deleteItem{
position:relative;
right: -100%;
top: -8rem;
}
\ No newline at end of file
import { Space, Table, Button, Popconfirm, notification } from 'antd'; import { Space, Table, Button, Popconfirm, notification, Spin } from 'antd';
import React, { useState, useEffect } from 'react'; import React, { useState, useEffect } from 'react';
import styles from '../policiesIssued.less' import styles from '../policiesIssued.less'
import { import {
deleteTaskOptions, taskOptionsList, getIotDeviceType, algorithmList, getEquipmentInfo getIotDeviceType, getPredictInfo, deletePredictOptions
} from '@/services/intelligence/api'; } from '@/services/intelligence/api';
import AddModal from './AddModal' import AddModal from './AddModal'
const VectorData = props => { const VectorData = props => {
...@@ -18,56 +18,51 @@ const VectorData = props => { ...@@ -18,56 +18,51 @@ const VectorData = props => {
const columns = [ const columns = [
{ {
title: '序号', title: '序号',
dataIndex: 'serviceName', align: 'center',
key: 'serviceName', render: (text, record, index) => (
align: 'center' <Space>
<span>{(index + 1)}</span>
</Space>
)
}, },
{ {
title: '方案名称', title: '方案名称',
dataIndex: 'GISServerIP', dataIndex: 'PredictName',
key: 'GISServerIP', key: 'PredictName',
align: 'center' align: 'center'
}, },
{ {
title: '算法名称', title: '场景名称',
dataIndex: 'GISServerPort', dataIndex: 'SceneName',
key: 'GISServerPort', key: 'SceneName',
align: 'center' align: 'center'
}, },
{ {
title: '设备类型', title: '设备类型',
dataIndex: 'GISServerProjectName', dataIndex: 'DeviceType',
key: 'GISServerProjectName', key: 'DeviceType',
align: 'center'
},
{
title: '设备编码',
dataIndex: 'publishTime',
key: 'publishTime',
align: 'center'
},
{
title: '指标名称',
dataIndex: 'publishTime',
key: 'publishTime',
align: 'center' align: 'center'
}, },
{ {
title: '预测间隔', title: '预测间隔',
dataIndex: 'publishTime', align: 'center',
key: 'publishTime', render: (record) => (
align: 'center' <Space>
{record.CycleValue + record.Cycle}
</Space>
)
}, },
{ {
title: '首次执行时间', title: '首次执行时间',
dataIndex: 'publishTime', dataIndex: 'DateFrom',
key: 'publishTime', key: 'DateFrom',
align: 'center' align: 'center'
}, },
{ {
title: '描述', title: '描述',
dataIndex: 'publishTime', dataIndex: 'Remarks',
key: 'publishTime', key: 'Remarks',
align: 'center' align: 'center'
}, },
{ {
...@@ -75,10 +70,18 @@ const VectorData = props => { ...@@ -75,10 +70,18 @@ const VectorData = props => {
align: 'center', align: 'center',
render: (text, record, index) => ( render: (text, record, index) => (
<Space> <Space>
<Button
type="primary"
size="small"
onClick={() => {
changeRecord(record);
}}
>
编辑
</Button>
<div onClick={e => e.stopPropagation()}> <div onClick={e => e.stopPropagation()}>
<Popconfirm <Popconfirm
title="是否删除该矢量数据?" title="是否删除该方案?"
okText="确认" okText="确认"
cancelText="取消" cancelText="取消"
onConfirm={() => { onConfirm={() => {
...@@ -100,13 +103,30 @@ const VectorData = props => { ...@@ -100,13 +103,30 @@ const VectorData = props => {
const onSubmit = prop => { const onSubmit = prop => {
setVisible(false); setVisible(false);
setFlag(flag+1) setFlag(flag + 1)
}; };
const delConfirm = (record) => {
const delConfirm = (record) => {
deletePredictOptions(record.ID).then(res => {
if (res.errMsg === '') {
setFlag(flag + 1)
notification.success({
message: '提示',
duration: 3,
description: '删除成功',
});
} else {
notification.error({
message: '提示',
duration: 3,
description: res.errMsg,
});
};
})
} }
const handleAdd = () => { const handleAdd = () => {
setFormObj({});
setType('add'); setType('add');
setVisible(true); setVisible(true);
} }
...@@ -115,22 +135,27 @@ const VectorData = props => { ...@@ -115,22 +135,27 @@ const VectorData = props => {
}, [flag]); }, [flag]);
// 获取瓦片数据配置数据 // 获取瓦片数据配置数据
const renderTile = () => { const renderTile = () => {
setTreeLoading(true)
const getIotDevice = getIotDeviceType() const getIotDevice = getIotDeviceType()
const algorithm = algorithmList() const getPredictList = getPredictInfo()
const taskOption = taskOptionsList() Promise.all([getIotDevice, getPredictList]).then(res => {
Promise.all([getIotDevice, algorithm, taskOption]).then(res => {
res[0].getMe && res[0].getMe.length && setDeviceType(res[0].getMe) res[0].getMe && res[0].getMe.length && setDeviceType(res[0].getMe)
res[2].getMe && res[2].getMe.length && setTileData(res[2].getMe) res[1].getMe && res[1].getMe.length && setTileData(res[1].getMe)
setTreeLoading(false) setTreeLoading(false)
}).catch(err => { }).catch(err => {
setTreeLoading(false) setTreeLoading(false)
}) })
}; };
const changeRecord = (record) => {
setType('edit');
setFormObj(record);
setVisible(true);
}
return ( return (
<> <>
<Spin tip="loading..." spinning={treeLoading}>
<div className={styles.tileBtn}> <div className={styles.tileBtn}>
<Button type="primary" onClick={() => { <Button type="primary" onClick={() => {
handleAdd(); handleAdd();
...@@ -142,9 +167,10 @@ const VectorData = props => { ...@@ -142,9 +167,10 @@ const VectorData = props => {
columns={columns} columns={columns}
dataSource={tileData} dataSource={tileData}
bordered bordered
rowKey="createTime" rowKey="ID"
scroll={{ y: 400 }} scroll={{ y: 700 }}
pagination={{ pagination={{
pageSize: '10',
showTotal: (total, range) => showTotal: (total, range) =>
`第${range[0]}-${range[1]} 条/共 ${total} 条` `第${range[0]}-${range[1]} 条/共 ${total} 条`
...@@ -159,7 +185,9 @@ const VectorData = props => { ...@@ -159,7 +185,9 @@ const VectorData = props => {
deviceType={deviceType} deviceType={deviceType}
formObj={formObj} formObj={formObj}
/> />
</Spin>
</> </>
) )
} }
export default VectorData export default VectorData
\ No newline at end of file
import { Space, Table, Button, Popconfirm, notification } from 'antd'; import { Space, Table, Button, Popconfirm, notification ,Spin} from 'antd';
import React, { useState, useEffect } from 'react'; import React, { useState, useEffect } from 'react';
import styles from '../policiesIssued.less' import styles from '../policiesIssued.less'
import { import {
GetVectorService, deleteVectorService, getSolutionList, updatePublishedMetaData taskOptionsList, getIotDeviceType, getStrategyInfo, deleteStrategyOptions
} from '@/services/webConfig/api'; } from '@/services/intelligence/api';
import AddModal from './AddModal' import AddModal from './AddModal'
const VectorData = props => { const VectorData = props => {
const [treeLoading, setTreeLoading] = useState(false);// 弹窗显示 const [treeLoading, setTreeLoading] = useState(false);// 弹窗显示
const [tileData, setTileData] = useState([]); // table表格数据
const [visible, setVisible] = useState(false); // 弹窗
const [previewVisible, setPreviewVisible] = useState(false); // 预览弹窗
const [flag, setFlag] = useState(0); // 更新list const [flag, setFlag] = useState(0); // 更新list
const [loading, setLoading] = useState([]); // 更新状态 const [loading, setLoading] = useState([]); // 更新状态
const [type, setType] = useState(''); // 弹窗类型 const [type, setType] = useState(''); // 弹窗类型
const [solutionNames, setSolutionNames] = useState(''); const [solutionNames, setSolutionNames] = useState('');
const [formObj, setFormObj] = useState({ user: 'admin', password: 'geoserver' }); const [formObj, setFormObj] = useState({ user: 'admin', password: 'geoserver' });
const [currentMetaData,setCurrentMetaData] = useState(null) const [tileData, setTileData] = useState([]); // table表格数据
const [visible, setVisible] = useState(false); // 弹窗
const [deviceType, setDeviceType] = useState([]); //设备类型列表
const columns = [ const columns = [
{ {
title: '序号', title: '序号',
dataIndex: 'serviceName', align: 'center',
key: 'serviceName', render: (text, record, index) => (
align: 'center' <Space>
<span>{(index + 1)}</span>
</Space>
)
}, },
{ {
title: '方案名称', title: '策略名称',
dataIndex: 'GISServerIP', dataIndex: 'StrategyName',
key: 'GISServerIP', key: 'StrategyName',
align: 'center' align: 'center'
}, },
{ {
title: '方案类型', title: '策略类型',
dataIndex: 'GISServerPort', dataIndex: 'StrategyType',
key: 'GISServerPort', key: 'StrategyType',
align: 'center' align: 'center'
}, },
{ {
title: '任务名称', title: '创建时间',
dataIndex: 'GISServerProjectName', dataIndex: 'CreateTime',
key: 'GISServerProjectName', key: 'CreateTime',
align: 'center' align: 'center'
}, },
{ {
title: '创建时间', title: '设备类型',
dataIndex: 'publishTime', dataIndex: 'DeviceType',
key: 'publishTime', key: 'DeviceType',
align: 'center' align: 'center'
}, },
{ {
title: '描述', title: '描述',
dataIndex: 'publishTime', dataIndex: 'StrategyDes',
key: 'publishTime', key: 'StrategyDes',
align: 'center' align: 'center'
}, },
{ {
...@@ -58,10 +62,18 @@ const VectorData = props => { ...@@ -58,10 +62,18 @@ const VectorData = props => {
align: 'center', align: 'center',
render: (text, record, index) => ( render: (text, record, index) => (
<Space> <Space>
<Button
type="primary"
size="small"
onClick={() => {
changeRecord(record);
}}
>
编辑
</Button>
<div onClick={e => e.stopPropagation()}> <div onClick={e => e.stopPropagation()}>
<Popconfirm <Popconfirm
title="是否删除该矢量数据?" title="是否删除该方案?"
okText="确认" okText="确认"
cancelText="取消" cancelText="取消"
onConfirm={() => { onConfirm={() => {
...@@ -83,47 +95,60 @@ const VectorData = props => { ...@@ -83,47 +95,60 @@ const VectorData = props => {
const onSubmit = prop => { const onSubmit = prop => {
setVisible(false); setVisible(false);
setFlag(flag+1) setFlag(flag + 1)
}; };
const delConfirm = (record) => { const delConfirm = (record) => {
let query = { deleteStrategyOptions(record.ID).then(res => {
serviceName: record.serviceName, if (res.errMsg==='') {
_version: 9999,
solution: solutionNames
}
deleteVectorService(query).then(res => {
if (res.success) {
setFlag(flag + 1) setFlag(flag + 1)
notification.success({ notification.success({
message: '提示', message: '提示',
duration: 3, duration: 3,
description: '删除元数据成功', description: '删除成功',
}); });
} else { } else {
notification.error({ notification.error({
message: '提示', message: '提示',
duration: 3, duration: 3,
description: '删除元数据失败', description: res.errMsg,
}); });
}; };
}) })
} }
const handleAdd = () => { const handleAdd = () => {
// setType('add'); setFormObj({});
// setVisible(true); setType('add');
setVisible(true);
} }
useEffect(() => { useEffect(() => {
renderTile(); renderTile();
}, [flag]); }, [flag]);
// 获取瓦片数据配置数据 // 获取瓦片数据配置数据
const renderTile = () => { const renderTile = () => {
setTreeLoading(true)
const getIotDevice = getIotDeviceType()
const getStrategy = getStrategyInfo()
Promise.all([getIotDevice,getStrategy]).then(res => {
console.log('res[3].getMe',res[1].getMe);
res[0].getMe && res[0].getMe.length && setDeviceType(res[0].getMe)
res[1].getMe && res[1].getMe.length && setTileData(res[1].getMe)
setTreeLoading(false)
}).catch(err => {
setTreeLoading(false)
})
}; };
const changeRecord =(record)=>{
setType('edit');
setFormObj(record);
setVisible(true);
}
return ( return (
<> <>
<Spin tip="loading..." spinning={treeLoading}>
<div className={styles.tileBtn}> <div className={styles.tileBtn}>
<Button type="primary" onClick={() => { <Button type="primary" onClick={() => {
handleAdd(); handleAdd();
...@@ -135,9 +160,10 @@ const VectorData = props => { ...@@ -135,9 +160,10 @@ const VectorData = props => {
columns={columns} columns={columns}
dataSource={tileData} dataSource={tileData}
bordered bordered
rowKey="createTime" rowKey="ID"
scroll={{ y: 400 }} scroll={{ y: 700 }}
pagination={{ pagination={{
pageSize: '10' ,
showTotal: (total, range) => showTotal: (total, range) =>
`第${range[0]}-${range[1]} 条/共 ${total} 条` `第${range[0]}-${range[1]} 条/共 ${total} 条`
...@@ -149,10 +175,12 @@ const VectorData = props => { ...@@ -149,10 +175,12 @@ const VectorData = props => {
onCancel={() => setVisible(false)} onCancel={() => setVisible(false)}
callBackSubmit={onSubmit} callBackSubmit={onSubmit}
type={type} type={type}
deviceType={deviceType}
formObj={formObj} formObj={formObj}
solutionNames={solutionNames}
/> />
</Spin>
</> </>
) )
} }
export default VectorData export default VectorData
\ No newline at end of file
...@@ -87,7 +87,9 @@ const AddModal = props => { ...@@ -87,7 +87,9 @@ const AddModal = props => {
const handleTaskType =(value)=>{
console.log(value,'value');
}
const layout = { const layout = {
layout: 'horizontal', layout: 'horizontal',
labelCol: { labelCol: {
...@@ -128,18 +130,19 @@ const AddModal = props => { ...@@ -128,18 +130,19 @@ const AddModal = props => {
<Input placeholder="请输入任务名称" allowClear /> <Input placeholder="请输入任务名称" allowClear />
</Item> </Item>
<Item <Item
label="方案类型" label="任务类型"
name="type" name="TaskType"
rules={[{ required: true, message: '请选择类型' }]} rules={[{ required: true, message: '请选择类型' }]}
> >
<Select> <Select onChange={handleTaskType}>
<Select.Option value='水龄预测'>水龄预测</Select.Option> <Select.Option value='预测'>预测</Select.Option>
<Select.Option value='二供泵房'>二供泵房</Select.Option> <Select.Option value='控制'>控制</Select.Option>
<Select.Option value='http'>http</Select.Option>
</Select> </Select>
</Item> </Item>
<Item <Item
label="方案名称" label="方案名称"
name="strategy" name="AlgorithmName"
> >
<Select > <Select >
{/* {workList.length ? workList.map((item, index) => { return <Option key={index} value={item.name}>{item.name}</Option> }) : ''} */} {/* {workList.length ? workList.map((item, index) => { return <Option key={index} value={item.name}>{item.name}</Option> }) : ''} */}
...@@ -157,7 +160,7 @@ const AddModal = props => { ...@@ -157,7 +160,7 @@ const AddModal = props => {
</Item> </Item>
<Item <Item
label="描述" label="描述"
name="dec" name="Describe"
> >
<TextArea placeholder="可输入描述信息" rows={4} allowClear /> <TextArea placeholder="可输入描述信息" rows={4} allowClear />
</Item> </Item>
......
...@@ -18,8 +18,12 @@ const VectorData = props => { ...@@ -18,8 +18,12 @@ const VectorData = props => {
{ {
title: '序号', title: '序号',
dataIndex: 'index', dataIndex: 'index',
key: 'serviceName', align: 'center',
align: 'center' render: (text, record, index) => (
<Space>
<span>{(index + 1)}</span>
</Space>
)
}, },
{ {
title: '场景名称', title: '场景名称',
...@@ -47,8 +51,8 @@ const VectorData = props => { ...@@ -47,8 +51,8 @@ const VectorData = props => {
}, },
{ {
title: '间隔', title: '间隔',
dataIndex: 'publishTime', dataIndex: 'Interval',
key: 'publishTime', key: 'Interval',
align: 'center' align: 'center'
}, },
{ {
...@@ -68,7 +72,15 @@ const VectorData = props => { ...@@ -68,7 +72,15 @@ const VectorData = props => {
align: 'center', align: 'center',
render: (text, record, index) => ( render: (text, record, index) => (
<Space> <Space>
<Button
type="primary"
size="small"
onClick={() => {
changeRecord(record);
}}
>
编辑
</Button>
<div onClick={e => e.stopPropagation()}> <div onClick={e => e.stopPropagation()}>
<Popconfirm <Popconfirm
title="是否删除该矢量数据?" title="是否删除该矢量数据?"
...@@ -101,7 +113,7 @@ const VectorData = props => { ...@@ -101,7 +113,7 @@ const VectorData = props => {
_version: 9999, _version: 9999,
solution: solutionNames solution: solutionNames
} }
deleteVectorService(query).then(res => { deleteTaskOptions(query).then(res => {
if (res.success) { if (res.success) {
setFlag(flag + 1) setFlag(flag + 1)
notification.success({ notification.success({
...@@ -118,6 +130,12 @@ const VectorData = props => { ...@@ -118,6 +130,12 @@ const VectorData = props => {
}; };
}) })
} }
//编辑任务调度
const changeRecord = (record) => {
setType('edit');
setFormObj(record);
setVisible(true);
}
const handleAdd = () => { const handleAdd = () => {
setType('add'); setType('add');
setVisible(true); setVisible(true);
...@@ -132,8 +150,9 @@ const VectorData = props => { ...@@ -132,8 +150,9 @@ const VectorData = props => {
const algorithm = algorithmList() const algorithm = algorithmList()
const taskOption = taskOptionsList() const taskOption = taskOptionsList()
Promise.all([getIotDevice, algorithm, taskOption]).then(res => { Promise.all([getIotDevice, algorithm, taskOption]).then(res => {
console.log('res', res);
res[0].getMe && res[0].getMe.length && setDeviceType(res[0].getMe) res[0].getMe && res[0].getMe.length && setDeviceType(res[0].getMe)
res[2].getMe && res[2].getMe.length && setDeviceType(res[2].getMe) res[2].getMe && res[2].getMe.length && setTileData(res[2].getMe)
setTreeLoading(false) setTreeLoading(false)
}).catch(err => { }).catch(err => {
setTreeLoading(false) setTreeLoading(false)
...@@ -143,6 +162,7 @@ const VectorData = props => { ...@@ -143,6 +162,7 @@ const VectorData = props => {
return ( return (
<> <>
<div className={styles.container}>
<div className={styles.tileBtn}> <div className={styles.tileBtn}>
<Button type="primary" onClick={() => { <Button type="primary" onClick={() => {
handleAdd(); handleAdd();
...@@ -154,7 +174,7 @@ const VectorData = props => { ...@@ -154,7 +174,7 @@ const VectorData = props => {
columns={columns} columns={columns}
dataSource={tileData} dataSource={tileData}
bordered bordered
rowKey="createTime" rowKey="Id"
scroll={{ y: 400 }} scroll={{ y: 400 }}
pagination={{ pagination={{
showTotal: (total, range) => showTotal: (total, range) =>
...@@ -172,6 +192,8 @@ const VectorData = props => { ...@@ -172,6 +192,8 @@ const VectorData = props => {
formObj={formObj} formObj={formObj}
solutionNames={solutionNames} solutionNames={solutionNames}
/> />
</div>
</> </>
) )
} }
......
.container{
width: 100%;
height: 100%;
background-color: #ffffff;
}
.predict{ .predict{
display: flex; display: flex;
align-items: flex-end; align-items: flex-end;
...@@ -8,7 +13,7 @@ ...@@ -8,7 +13,7 @@
display: flex; display: flex;
justify-content: flex-end; justify-content: flex-end;
width: 100%; width: 100%;
padding: 0 0 2rem padding: 2rem 1rem 2rem 0;
} }
.corn{ .corn{
cursor: pointer; cursor: pointer;
......
...@@ -114,7 +114,6 @@ const TileData = props => { ...@@ -114,7 +114,6 @@ const TileData = props => {
}) })
} }
const handleAdd = () => { const handleAdd = () => {
console.log('baseMap',baseMap);
if(baseMap.length){ if(baseMap.length){
setType('add'); setType('add');
setVisible(true); setVisible(true);
......
...@@ -20,6 +20,13 @@ export const algorithmList = () => ...@@ -20,6 +20,13 @@ export const algorithmList = () =>
export const getEquipmentInfo = (query) => export const getEquipmentInfo = (query) =>
get(`${CITY_SERVICE}/IOTPlatform.svc/AcrossTable/GetEquipmentInfo?equipType=${query}`); get(`${CITY_SERVICE}/IOTPlatform.svc/AcrossTable/GetEquipmentInfo?equipType=${query}`);
//获取指标列表
export const getQutaList = (query) =>
get(`${CITY_SERVICE}/IOTPlatform.svc/AcrossTable/GetQutaList?AcountName=${query.accountName}&&AddrSchemeID=${query.AddrSchemeID}`);
//获取场景列表
export const getSceneNameInfo = () =>
get(`${CITY_SERVICE}/IOTPlatform.svc/WaterAge/GetSceneNameInfo`);
//任务添加 //任务添加
export const addTaskOptions = (params) => export const addTaskOptions = (params) =>
...@@ -32,3 +39,44 @@ export const updateTaskOptions = (params) => ...@@ -32,3 +39,44 @@ export const updateTaskOptions = (params) =>
//任务删除 //任务删除
export const deleteTaskOptions = (params) => export const deleteTaskOptions = (params) =>
post(`${CITY_SERVICE}/IOTPlatform.svc/WaterAge/DeleteTaskOptions`, params); post(`${CITY_SERVICE}/IOTPlatform.svc/WaterAge/DeleteTaskOptions`, params);
//预测列表
export const getPredictInfo = () =>
get(`${CITY_SERVICE}/IOTPlatform.svc/WaterAge/GetPredictInfo`);
//预测新增
export const addPredictOptions = (params) =>
post(`${CITY_SERVICE}/IOTPlatform.svc/WaterAge/AddPredictOptions`, params);
//预测编辑
export const editPredictOptions = (params) =>
post(`${CITY_SERVICE}/IOTPlatform.svc/WaterAge/EditPredictOptions`, params);
//预测删除
export const deletePredictOptions = (params) =>
post(`${CITY_SERVICE}/IOTPlatform.svc/WaterAge/DeletePredictOptions?PredictID=${params}`);
//策略下发列表
export const getStrategyInfo = () =>
get(`${CITY_SERVICE}/IOTPlatform.svc/WaterAge/GetStrategyInfo`);
//策略下发增加
export const addStrategyOptions = (params) =>
post(`${CITY_SERVICE}/IOTPlatform.svc/WaterAge/AddStrategyOptions`, params);
//策略下发编辑
export const editStrategyOptions = (params) =>
post(`${CITY_SERVICE}/IOTPlatform.svc/WaterAge/EditStrategyOptions`, params);
//策略下发删除
export const deleteStrategyOptions = (params) =>
post(`${CITY_SERVICE}/IOTPlatform.svc/WaterAge/DeleteStrategyOptions?StrategyId=${params}`);
//获取预测设备
export const getPredictDevice = (params) =>
get(`${CITY_SERVICE}/IOTPlatform.svc/WaterAge/GetPredictDevice?DeviceType=${params}`);
//获取预测指标
export const getPredictDevicePoint = (params) =>
get(`${CITY_SERVICE}/IOTPlatform.svc/WaterAge/GetPredictDevicePoint?DeviceType=${params.deviceType}&DeviceCode=${params.DeviceCode}`);
\ No newline at end of file
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