update modbus db and view
This commit is contained in:
parent
52e18de9ac
commit
eeead43baf
5
app.js
5
app.js
@ -48,3 +48,8 @@ app.get('/', (req, res) => {
|
|||||||
app.get(['/admin','/admin/*'], (req,res) => {
|
app.get(['/admin','/admin/*'], (req,res) => {
|
||||||
res.sendFile(path.resolve(__dirname, 'views', 'admin.html'));
|
res.sendFile(path.resolve(__dirname, 'views', 'admin.html'));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
app.get('/servcmd', (req,res) => {
|
||||||
|
res.send({status: `exit time ${Date.now()}`});
|
||||||
|
setTimeout(()=>{process.exit(1)}, 2000);
|
||||||
|
});
|
@ -84434,21 +84434,27 @@ var DeviceListItem = function DeviceListItem(_ref) {
|
|||||||
return _react2.default.createElement(
|
return _react2.default.createElement(
|
||||||
_semanticUiReact.List.Item,
|
_semanticUiReact.List.Item,
|
||||||
{ active: data.uid == showDev },
|
{ active: data.uid == showDev },
|
||||||
|
_react2.default.createElement(_semanticUiReact.Icon, { style: { cursor: 'pointer' }, name: 'trash', title: 'Delete', onClick: function onClick() {
|
||||||
|
delModbus(data.uid || '');
|
||||||
|
} }),
|
||||||
|
_react2.default.createElement(_semanticUiReact.Icon, { style: { cursor: 'pointer' }, name: 'write', title: 'Edit', onClick: function onClick() {
|
||||||
|
editModbus(1, data);
|
||||||
|
} }),
|
||||||
_react2.default.createElement(
|
_react2.default.createElement(
|
||||||
'span',
|
_semanticUiReact.List.Content,
|
||||||
{ style: { cursor: 'pointer' }, onClick: function onClick() {
|
{ style: { cursor: 'pointer' }, onClick: function onClick() {
|
||||||
selectDevToShow(data.uid);
|
selectDevToShow(data.uid);
|
||||||
} },
|
} },
|
||||||
data.name,
|
_react2.default.createElement(
|
||||||
' / Node:',
|
_semanticUiReact.List.Header,
|
||||||
data.node
|
null,
|
||||||
|
data.name
|
||||||
),
|
),
|
||||||
_react2.default.createElement(_semanticUiReact.Icon, { style: { cursor: 'pointer' }, name: 'trash', onClick: function onClick() {
|
'Node: ',
|
||||||
delModbus(data.uid || '');
|
data.node,
|
||||||
} }),
|
' / Type: ',
|
||||||
_react2.default.createElement(_semanticUiReact.Icon, { style: { cursor: 'pointer' }, name: 'write', onClick: function onClick() {
|
data.type
|
||||||
editModbus(1, data);
|
)
|
||||||
} })
|
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -84501,6 +84507,7 @@ var IOModal = function IOModal(_ref) {
|
|||||||
id: data.uid || '',
|
id: data.uid || '',
|
||||||
addr: '',
|
addr: '',
|
||||||
num: '',
|
num: '',
|
||||||
|
datalen: '',
|
||||||
type: ''
|
type: ''
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -84510,6 +84517,8 @@ var IOModal = function IOModal(_ref) {
|
|||||||
if (num && 'value' in num) json.num = num.value;
|
if (num && 'value' in num) json.num = num.value;
|
||||||
var type = e.querySelector('select[name="io_type"]');
|
var type = e.querySelector('select[name="io_type"]');
|
||||||
if (type && 'value' in type) json.type = type.value;
|
if (type && 'value' in type) json.type = type.value;
|
||||||
|
var len = e.querySelector('input[name="datalen"]');
|
||||||
|
if (len && 'value' in len) json.datalen = len.value;
|
||||||
|
|
||||||
return json;
|
return json;
|
||||||
} },
|
} },
|
||||||
@ -84541,12 +84550,17 @@ var IOModal = function IOModal(_ref) {
|
|||||||
_react2.default.createElement(
|
_react2.default.createElement(
|
||||||
_semanticUiReact.Form.Field,
|
_semanticUiReact.Form.Field,
|
||||||
null,
|
null,
|
||||||
_react2.default.createElement(_semanticUiReact.Input, { name: 'addr', label: '\u8D77\u59CB\u4F4D\u5740', defaultValue: data.addr || '' })
|
_react2.default.createElement(_semanticUiReact.Input, { name: 'addr', label: '\u8D77\u59CB\u4F4D\u5740', defaultValue: data.addr })
|
||||||
),
|
),
|
||||||
_react2.default.createElement(
|
_react2.default.createElement(
|
||||||
_semanticUiReact.Form.Field,
|
_semanticUiReact.Form.Field,
|
||||||
null,
|
null,
|
||||||
_react2.default.createElement(_semanticUiReact.Input, { name: 'num', label: '\u6578\u91CF', defaultValue: data.num || '' })
|
_react2.default.createElement(_semanticUiReact.Input, { name: 'num', label: '\u6578\u91CF', defaultValue: data.num })
|
||||||
|
),
|
||||||
|
_react2.default.createElement(
|
||||||
|
_semanticUiReact.Form.Field,
|
||||||
|
null,
|
||||||
|
_react2.default.createElement(_semanticUiReact.Input, { name: 'datalen', label: '\u8CC7\u6599\u9577\u5EA6', defaultValue: data.datalen, placeholder: '\u9577\u5EA6\u4E0D\u586B\u5247\u9810\u8A2D2' })
|
||||||
),
|
),
|
||||||
_react2.default.createElement(
|
_react2.default.createElement(
|
||||||
_semanticUiReact.Grid,
|
_semanticUiReact.Grid,
|
||||||
@ -84701,7 +84715,12 @@ var IOPanel = function (_React$Component) {
|
|||||||
_react2.default.createElement(
|
_react2.default.createElement(
|
||||||
_semanticUiReact.Table.HeaderCell,
|
_semanticUiReact.Table.HeaderCell,
|
||||||
null,
|
null,
|
||||||
'\u63A5\u53E3\u6578\u91CF'
|
'\u8B80\u53D6\u6578\u91CF'
|
||||||
|
),
|
||||||
|
_react2.default.createElement(
|
||||||
|
_semanticUiReact.Table.HeaderCell,
|
||||||
|
null,
|
||||||
|
'\u8CC7\u6599\u9577\u5EA6'
|
||||||
),
|
),
|
||||||
_react2.default.createElement(
|
_react2.default.createElement(
|
||||||
_semanticUiReact.Table.HeaderCell,
|
_semanticUiReact.Table.HeaderCell,
|
||||||
@ -84784,6 +84803,11 @@ var IOPanelListItem = function IOPanelListItem(_ref) {
|
|||||||
null,
|
null,
|
||||||
data.num
|
data.num
|
||||||
),
|
),
|
||||||
|
_react2.default.createElement(
|
||||||
|
_semanticUiReact.Table.Cell,
|
||||||
|
null,
|
||||||
|
data.datalen
|
||||||
|
),
|
||||||
_react2.default.createElement(
|
_react2.default.createElement(
|
||||||
_semanticUiReact.Table.Cell,
|
_semanticUiReact.Table.Cell,
|
||||||
null,
|
null,
|
||||||
@ -84847,6 +84871,7 @@ var ModbusModal = function ModbusModal(_ref) {
|
|||||||
var json = {
|
var json = {
|
||||||
name: '',
|
name: '',
|
||||||
node: '',
|
node: '',
|
||||||
|
type: '',
|
||||||
id: data.uid || '',
|
id: data.uid || '',
|
||||||
original_node: data.node || ''
|
original_node: data.node || ''
|
||||||
};
|
};
|
||||||
@ -84855,6 +84880,8 @@ var ModbusModal = function ModbusModal(_ref) {
|
|||||||
if (n && 'value' in n) json.name = n.value;
|
if (n && 'value' in n) json.name = n.value;
|
||||||
var nn = e.querySelector('input[name="node"]');
|
var nn = e.querySelector('input[name="node"]');
|
||||||
if (nn && 'value' in nn) json.node = nn.value;
|
if (nn && 'value' in nn) json.node = nn.value;
|
||||||
|
var type = e.querySelector('input[name="type"]');
|
||||||
|
if (type && 'value' in type) json.type = type.value;
|
||||||
|
|
||||||
return json;
|
return json;
|
||||||
} },
|
} },
|
||||||
@ -84866,7 +84893,12 @@ var ModbusModal = function ModbusModal(_ref) {
|
|||||||
_react2.default.createElement(
|
_react2.default.createElement(
|
||||||
_semanticUiReact.Form.Field,
|
_semanticUiReact.Form.Field,
|
||||||
null,
|
null,
|
||||||
_react2.default.createElement(_semanticUiReact.Input, { name: 'node', defaultValue: data.node || '', label: 'Node' })
|
_react2.default.createElement(_semanticUiReact.Input, { name: 'node', defaultValue: data.node, label: 'Node' })
|
||||||
|
),
|
||||||
|
_react2.default.createElement(
|
||||||
|
_semanticUiReact.Form.Field,
|
||||||
|
null,
|
||||||
|
_react2.default.createElement(_semanticUiReact.Input, { name: 'type', defaultValue: data.type, label: 'Type', placeholder: '\u9810\u8A2D\u8ACB\u7559\u7A7A' })
|
||||||
),
|
),
|
||||||
_react2.default.createElement(
|
_react2.default.createElement(
|
||||||
_semanticUiReact.Grid,
|
_semanticUiReact.Grid,
|
||||||
@ -85024,6 +85056,7 @@ var ModbusPage = function (_React$Component) {
|
|||||||
var i18n = _this.props.i18n;
|
var i18n = _this.props.i18n;
|
||||||
|
|
||||||
if (type == 1 && !data.id || !('addr' in data) || !('num' in data) || !('type' in data)) return _this.props.showDialog(i18n.t('tip.input_empty'));
|
if (type == 1 && !data.id || !('addr' in data) || !('num' in data) || !('type' in data)) return _this.props.showDialog(i18n.t('tip.input_empty'));
|
||||||
|
if (data.datalen == 0) return _this.props.showDialog('資料長度不能為0');
|
||||||
|
|
||||||
data.devuid = _this.state.showDev;
|
data.devuid = _this.state.showDev;
|
||||||
if (type == 1) {
|
if (type == 1) {
|
||||||
|
@ -96,12 +96,14 @@ router
|
|||||||
if (!arr.data.name) return n('ERR0026');
|
if (!arr.data.name) return n('ERR0026');
|
||||||
if (!('node' in arr.data)) return n('ERR0038');
|
if (!('node' in arr.data)) return n('ERR0038');
|
||||||
|
|
||||||
|
let type = arr.data.type && isFinite(arr.data.type) ? arr.data.type : 0;
|
||||||
|
|
||||||
let u = '';
|
let u = '';
|
||||||
let obj = so.get(req.headers['x-auth-token']);
|
let obj = so.get(req.headers['x-auth-token']);
|
||||||
if (obj != null && 'user' in obj && 'account' in obj.user) u = obj.user.account;
|
if (obj != null && 'user' in obj && 'account' in obj.user) u = obj.user.account;
|
||||||
|
|
||||||
let query = "insert into ??.?? (`name`, `node`, `adduser`, `moduser`, `ctime`, `mtime`) values (?,?,?,?, unix_timestamp(), unix_timestamp())";
|
let query = "insert into ??.?? (`name`, `node`, `type`, `adduser`, `moduser`, `ctime`, `mtime`) values (?,?,?,?,?, unix_timestamp(), unix_timestamp())";
|
||||||
let param = [config.db.db5, 'device', arr.data.name, arr.data.node, u, u];
|
let param = [config.db.db5, 'device', arr.data.name, arr.data.node, type, u, u];
|
||||||
|
|
||||||
res.db.query(query, param, (err, row) => {
|
res.db.query(query, param, (err, row) => {
|
||||||
if (err) return n('ERR8001');
|
if (err) return n('ERR8001');
|
||||||
@ -122,6 +124,8 @@ router
|
|||||||
if (!arr.data.name) return n('ERR0026');
|
if (!arr.data.name) return n('ERR0026');
|
||||||
if (!('node' in arr.data) || !('original_node' in arr.data)) return n('ERR0038');
|
if (!('node' in arr.data) || !('original_node' in arr.data)) return n('ERR0038');
|
||||||
|
|
||||||
|
let type = arr.data.type && isFinite(arr.data.type) ? arr.data.type : 0;
|
||||||
|
|
||||||
let query = "select count(*) as num from ??.?? where `node` = ? and `uid` != ?";
|
let query = "select count(*) as num from ??.?? where `node` = ? and `uid` != ?";
|
||||||
let param = [config.db.db5, 'device', arr.data.node, arr.data.id];
|
let param = [config.db.db5, 'device', arr.data.node, arr.data.id];
|
||||||
res.db.query(query, param, (err, row) => {
|
res.db.query(query, param, (err, row) => {
|
||||||
@ -135,11 +139,12 @@ router
|
|||||||
let query = "update ??.?? set \
|
let query = "update ??.?? set \
|
||||||
`name` = ?, \
|
`name` = ?, \
|
||||||
`node` = ?, \
|
`node` = ?, \
|
||||||
|
`type` = ?, \
|
||||||
`moduser` = ?, \
|
`moduser` = ?, \
|
||||||
`mtime` = unix_timestamp() \
|
`mtime` = unix_timestamp() \
|
||||||
where \
|
where \
|
||||||
`uid` = ?";
|
`uid` = ?";
|
||||||
let param = [config.db.db5, 'device', arr.data.name, arr.data.node, u, arr.data.id];
|
let param = [config.db.db5, 'device', arr.data.name, arr.data.node, type, u, arr.data.id];
|
||||||
res.db.query(query, param, (err, row) => {
|
res.db.query(query, param, (err, row) => {
|
||||||
if (err) return n('ERR8002');
|
if (err) return n('ERR8002');
|
||||||
|
|
||||||
@ -198,7 +203,8 @@ router
|
|||||||
where \
|
where \
|
||||||
d.`uid` = ? \
|
d.`uid` = ? \
|
||||||
and rt.`type` = ? \
|
and rt.`type` = ? \
|
||||||
and i.`uid` is not null ";
|
and i.`uid` is not null \
|
||||||
|
order by rt.`port` asc";
|
||||||
let param = [config.db.db6, 'jcmbrt', config.db.db5, 'device', config.db.db5, 'iolist', arr.data.type, config.db.db5, 'aioset', arr.data.id, arr.data.type];
|
let param = [config.db.db6, 'jcmbrt', config.db.db5, 'device', config.db.db5, 'iolist', arr.data.type, config.db.db5, 'aioset', arr.data.id, arr.data.type];
|
||||||
|
|
||||||
res.db.query(query, param, (err, row) => {
|
res.db.query(query, param, (err, row) => {
|
||||||
@ -238,6 +244,8 @@ router
|
|||||||
if (!arr.data.addr) return n('ERR0048');
|
if (!arr.data.addr) return n('ERR0048');
|
||||||
if (!arr.data.num) return n('ERR0049');
|
if (!arr.data.num) return n('ERR0049');
|
||||||
|
|
||||||
|
let dlen = arr.data.datalen || 2;
|
||||||
|
|
||||||
let query = "select count(*) as c from ??.?? \
|
let query = "select count(*) as c from ??.?? \
|
||||||
where \
|
where \
|
||||||
`devuid` = ? \
|
`devuid` = ? \
|
||||||
@ -249,8 +257,8 @@ router
|
|||||||
|
|
||||||
if (row[0].c > 0) return n('ERR0054');
|
if (row[0].c > 0) return n('ERR0054');
|
||||||
|
|
||||||
let query = "insert into ??.?? (`devuid`,`type`,`addr`,`num`,`ctime`,`mtime`) values (?, ?, ?, ?, unix_timestamp(), unix_timestamp())";
|
let query = "insert into ??.?? (`devuid`,`type`,`addr`,`num`,`datalen`,`ctime`,`mtime`) values (?, ?, ?, ?, unix_timestamp(), unix_timestamp())";
|
||||||
let param = [config.db.db5, 'iolist', arr.data.id, arr.data.type, arr.data.addr, arr.data.num];
|
let param = [config.db.db5, 'iolist', arr.data.id, arr.data.type, arr.data.addr, arr.data.num, dlen];
|
||||||
res.db.query(query, param, (err, row) => {
|
res.db.query(query, param, (err, row) => {
|
||||||
if (err) return n('ERR8001');
|
if (err) return n('ERR8001');
|
||||||
|
|
||||||
@ -270,6 +278,8 @@ router
|
|||||||
if (!arr.data.addr) return n('ERR0048');
|
if (!arr.data.addr) return n('ERR0048');
|
||||||
if (!arr.data.num) return n('ERR0049');
|
if (!arr.data.num) return n('ERR0049');
|
||||||
|
|
||||||
|
let dlen = arr.data.datalen || 2;
|
||||||
|
|
||||||
let query = "select count(*) as c from ??.?? i \
|
let query = "select count(*) as c from ??.?? i \
|
||||||
left join ??.?? i2 \
|
left join ??.?? i2 \
|
||||||
on i2.`type` = i.`type` \
|
on i2.`type` = i.`type` \
|
||||||
@ -287,10 +297,11 @@ router
|
|||||||
let q = "update ??.?? set \
|
let q = "update ??.?? set \
|
||||||
`addr` = ?, \
|
`addr` = ?, \
|
||||||
`num` = ?, \
|
`num` = ?, \
|
||||||
|
`datalen` = ?, \
|
||||||
`mtime` = unix_timestamp() \
|
`mtime` = unix_timestamp() \
|
||||||
where \
|
where \
|
||||||
`uid` = ?";
|
`uid` = ?";
|
||||||
let p = [config.db.db5, 'iolist', arr.data.addr, arr.data.num, arr.data.id];
|
let p = [config.db.db5, 'iolist', arr.data.addr, arr.data.num, dlen, arr.data.id];
|
||||||
res.db.query(q, p, (err, row) => {
|
res.db.query(q, p, (err, row) => {
|
||||||
if (err) return n('ERR8002');
|
if (err) return n('ERR8002');
|
||||||
|
|
||||||
|
@ -361,25 +361,35 @@ router
|
|||||||
let q, p;
|
let q, p;
|
||||||
switch (arr.data.type) {
|
switch (arr.data.type) {
|
||||||
case 'do':
|
case 'do':
|
||||||
|
if(!config.permission.dio) return n('ERR9000');
|
||||||
q = "select `doname` as name, `douid` as id from ??.??";
|
q = "select `doname` as name, `douid` as id from ??.??";
|
||||||
p = [config.db.db1, 'dolist'];
|
p = [config.db.db1, 'dolist'];
|
||||||
pro = tool.promiseQuery(res, q, p, '');
|
pro = tool.promiseQuery(res, q, p, '');
|
||||||
break;
|
break;
|
||||||
case 'di':
|
case 'di':
|
||||||
|
if(!config.permission.dio) return n('ERR9000');
|
||||||
q = "select `diname` as name, `diuid` as id from ??.??";
|
q = "select `diname` as name, `diuid` as id from ??.??";
|
||||||
p = [config.db.db1, 'dilist'];
|
p = [config.db.db1, 'dilist'];
|
||||||
pro = tool.promiseQuery(res, q, p, '');
|
pro = tool.promiseQuery(res, q, p, '');
|
||||||
break;
|
break;
|
||||||
case 'leone':
|
case 'leone':
|
||||||
|
if(!config.permission.leone) return n('ERR9000');
|
||||||
q = "select `leonename` as name, `leonelistuid` as id from ??.??";
|
q = "select `leonename` as name, `leonelistuid` as id from ??.??";
|
||||||
p = [config.db.db1, 'leonelist'];
|
p = [config.db.db1, 'leonelist'];
|
||||||
pro = tool.promiseQuery(res, q, p, '');
|
pro = tool.promiseQuery(res, q, p, '');
|
||||||
break;
|
break;
|
||||||
case 'iogroup':
|
case 'iogroup':
|
||||||
|
if(!config.permission.iogroup) return n('ERR9000');
|
||||||
q = "select `iogroupname` as name, `iogroupuid` as id from ??.??";
|
q = "select `iogroupname` as name, `iogroupuid` as id from ??.??";
|
||||||
p = [config.db.db1, 'iogroup'];
|
p = [config.db.db1, 'iogroup'];
|
||||||
pro = tool.promiseQuery(res, q, p, '');
|
pro = tool.promiseQuery(res, q, p, '');
|
||||||
break;
|
break;
|
||||||
|
case 'modbus':
|
||||||
|
if(!config.permission.modbus) return n('ERR9000');
|
||||||
|
q = "select `name`, `uid` as id from ??.??";
|
||||||
|
p = [config.db.db5, 'device'];
|
||||||
|
pro = tool.promiseQuery(res,q,p, '');
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
return n();
|
return n();
|
||||||
}
|
}
|
||||||
|
@ -5,13 +5,16 @@ const DeviceListItem = ({i18n, idx, data, delModbus, editModbus, showDev, select
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<List.Item active={data.uid == showDev}>
|
<List.Item active={data.uid == showDev}>
|
||||||
<span style={{cursor: 'pointer'}} onClick={() => {
|
<Icon style={{cursor: 'pointer'}} name="trash" title="Delete" onClick={()=>{delModbus(data.uid || '')}}/>
|
||||||
|
<Icon style={{cursor: 'pointer'}} name="write" title="Edit" onClick={()=>{editModbus(1, data)}}/>
|
||||||
|
<List.Content style={{cursor: 'pointer'}} onClick={() => {
|
||||||
selectDevToShow(data.uid);
|
selectDevToShow(data.uid);
|
||||||
}}>
|
}}>
|
||||||
{data.name} / Node:{data.node}
|
<List.Header>
|
||||||
</span>
|
{data.name}
|
||||||
<Icon style={{cursor: 'pointer'}} name="trash" onClick={()=>{delModbus(data.uid || '')}}/>
|
</List.Header>
|
||||||
<Icon style={{cursor: 'pointer'}} name="write" onClick={()=>{editModbus(1, data)}}/>
|
Node: {data.node} / Type: {data.type}
|
||||||
|
</List.Content>
|
||||||
</List.Item>
|
</List.Item>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -17,6 +17,7 @@ const IOModal = ({i18n, open, type, data, onSubmit, onClose}) => {
|
|||||||
id: data.uid || '',
|
id: data.uid || '',
|
||||||
addr: '',
|
addr: '',
|
||||||
num: '',
|
num: '',
|
||||||
|
datalen: '',
|
||||||
type: ''
|
type: ''
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -26,6 +27,8 @@ const IOModal = ({i18n, open, type, data, onSubmit, onClose}) => {
|
|||||||
if(num && 'value' in num) json.num = num.value;
|
if(num && 'value' in num) json.num = num.value;
|
||||||
let type = e.querySelector('select[name="io_type"]');
|
let type = e.querySelector('select[name="io_type"]');
|
||||||
if(type && 'value' in type) json.type = type.value;
|
if(type && 'value' in type) json.type = type.value;
|
||||||
|
let len = e.querySelector('input[name="datalen"]');
|
||||||
|
if(len && 'value' in len) json.datalen = len.value;
|
||||||
|
|
||||||
return json;
|
return json;
|
||||||
}}>
|
}}>
|
||||||
@ -41,10 +44,13 @@ const IOModal = ({i18n, open, type, data, onSubmit, onClose}) => {
|
|||||||
</select>
|
</select>
|
||||||
</Form.Field>
|
</Form.Field>
|
||||||
<Form.Field>
|
<Form.Field>
|
||||||
<Input name="addr" label="起始位址" defaultValue={data.addr || ''} />
|
<Input name="addr" label="起始位址" defaultValue={data.addr} />
|
||||||
</Form.Field>
|
</Form.Field>
|
||||||
<Form.Field>
|
<Form.Field>
|
||||||
<Input name="num" label="數量" defaultValue={data.num || ''} />
|
<Input name="num" label="數量" defaultValue={data.num} />
|
||||||
|
</Form.Field>
|
||||||
|
<Form.Field>
|
||||||
|
<Input name="datalen" label="資料長度" defaultValue={data.datalen} placeholder="長度不填則預設2"/>
|
||||||
</Form.Field>
|
</Form.Field>
|
||||||
<Grid columns={2}>
|
<Grid columns={2}>
|
||||||
<Grid.Column>
|
<Grid.Column>
|
||||||
|
@ -54,7 +54,8 @@ class IOPanel extends React.Component {
|
|||||||
<Table.Header>
|
<Table.Header>
|
||||||
<Table.Row>
|
<Table.Row>
|
||||||
<Table.HeaderCell>起始位置</Table.HeaderCell>
|
<Table.HeaderCell>起始位置</Table.HeaderCell>
|
||||||
<Table.HeaderCell>接口數量</Table.HeaderCell>
|
<Table.HeaderCell>讀取數量</Table.HeaderCell>
|
||||||
|
<Table.HeaderCell>資料長度</Table.HeaderCell>
|
||||||
<Table.HeaderCell>操作</Table.HeaderCell>
|
<Table.HeaderCell>操作</Table.HeaderCell>
|
||||||
</Table.Row>
|
</Table.Row>
|
||||||
</Table.Header>
|
</Table.Header>
|
||||||
|
@ -7,6 +7,7 @@ const IOPanelListItem = ({i18n, data, ioModal, delIOList, showAIOSet}) => {
|
|||||||
<Table.Row>
|
<Table.Row>
|
||||||
<Table.Cell>{data.addr}</Table.Cell>
|
<Table.Cell>{data.addr}</Table.Cell>
|
||||||
<Table.Cell>{data.num}</Table.Cell>
|
<Table.Cell>{data.num}</Table.Cell>
|
||||||
|
<Table.Cell>{data.datalen}</Table.Cell>
|
||||||
<Table.Cell>
|
<Table.Cell>
|
||||||
<Button type="button" basic content="修改" onClick={()=>{ioModal(1, data)}}/>
|
<Button type="button" basic content="修改" onClick={()=>{ioModal(1, data)}}/>
|
||||||
<Button type="button" basic content="刪除" onClick={()=>{delIOList(data.uid || '')}}/>
|
<Button type="button" basic content="刪除" onClick={()=>{delIOList(data.uid || '')}}/>
|
||||||
|
@ -15,6 +15,7 @@ const ModbusModal = ({i18n, open, type, data, onSubmit, onClose}) => {
|
|||||||
let json = {
|
let json = {
|
||||||
name: '',
|
name: '',
|
||||||
node: '',
|
node: '',
|
||||||
|
type: '',
|
||||||
id: data.uid || '',
|
id: data.uid || '',
|
||||||
original_node: data.node || ''
|
original_node: data.node || ''
|
||||||
};
|
};
|
||||||
@ -23,6 +24,8 @@ const ModbusModal = ({i18n, open, type, data, onSubmit, onClose}) => {
|
|||||||
if(n && 'value' in n) json.name = n.value;
|
if(n && 'value' in n) json.name = n.value;
|
||||||
let nn = e.querySelector('input[name="node"]');
|
let nn = e.querySelector('input[name="node"]');
|
||||||
if(nn && 'value' in nn) json.node = nn.value;
|
if(nn && 'value' in nn) json.node = nn.value;
|
||||||
|
let type = e.querySelector('input[name="type"]');
|
||||||
|
if(type && 'value' in type) json.type = type.value;
|
||||||
|
|
||||||
return json ;
|
return json ;
|
||||||
}}>
|
}}>
|
||||||
@ -30,7 +33,10 @@ const ModbusModal = ({i18n, open, type, data, onSubmit, onClose}) => {
|
|||||||
<Input name="name" defaultValue={data.name || ''} label="Name"/>
|
<Input name="name" defaultValue={data.name || ''} label="Name"/>
|
||||||
</Form.Field>
|
</Form.Field>
|
||||||
<Form.Field>
|
<Form.Field>
|
||||||
<Input name="node" defaultValue={data.node || ''} label="Node"/>
|
<Input name="node" defaultValue={data.node} label="Node"/>
|
||||||
|
</Form.Field>
|
||||||
|
<Form.Field>
|
||||||
|
<Input name="type" defaultValue={data.type} label="Type" placeholder="預設請留空"/>
|
||||||
</Form.Field>
|
</Form.Field>
|
||||||
<Grid columns={2}>
|
<Grid columns={2}>
|
||||||
<Grid.Column>
|
<Grid.Column>
|
||||||
|
@ -101,6 +101,7 @@ class ModbusPage extends React.Component {
|
|||||||
submitIOModal = (type, data) => {
|
submitIOModal = (type, data) => {
|
||||||
let {i18n} = this.props;
|
let {i18n} = this.props;
|
||||||
if((type == 1 && !data.id) || !('addr' in data) || !('num' in data) || !('type' in data)) return this.props.showDialog(i18n.t('tip.input_empty'));
|
if((type == 1 && !data.id) || !('addr' in data) || !('num' in data) || !('type' in data)) return this.props.showDialog(i18n.t('tip.input_empty'));
|
||||||
|
if(data.datalen == 0) return this.props.showDialog('資料長度不能為0');
|
||||||
|
|
||||||
data.devuid = this.state.showDev;
|
data.devuid = this.state.showDev;
|
||||||
if(type == 1){
|
if(type == 1){
|
||||||
|
Loading…
Reference in New Issue
Block a user