655 lines
20 KiB
QML
655 lines
20 KiB
QML
import QtQuick
|
|
import Qt.labs.settings
|
|
import "./js/global.js" as GL
|
|
CommandForm {
|
|
id: self
|
|
anchors.fill: parent
|
|
property var curCmdId: ""
|
|
property var cmdSets: []
|
|
property var cmdSortStr: ""
|
|
property var cmdSorts: []
|
|
property var searchType: "全部"
|
|
property var showEnd: true
|
|
property var maxLogCount: 1000
|
|
Settings {
|
|
property alias _cmdSortStr: self.cmdSortStr
|
|
}
|
|
Component.onCompleted: {
|
|
cmdSorts = cmdSortStr.split(",")
|
|
}
|
|
|
|
// 连接新的信号
|
|
Connections {
|
|
target: backend_proxy
|
|
function onReal_time_logs_signal(result)
|
|
{
|
|
var result_obj = JSON.parse(result)
|
|
|
|
logModel.append({'time': result_obj.data.time, 'conetxt': result_obj.data.result})
|
|
if(logModel.count > maxLogCount)
|
|
logModel.remove(0)
|
|
if(showEnd)
|
|
{
|
|
_logTableView.positionViewAtRow(logModel.count -1,
|
|
ListView.End)
|
|
}
|
|
|
|
}
|
|
}
|
|
Connections {
|
|
target:self
|
|
|
|
|
|
function onLogTabViewDoubleClick()
|
|
{
|
|
showEnd = !showEnd
|
|
if(showEnd)
|
|
{
|
|
_logTableView.positionViewAtRow(logModel.count -1,
|
|
ListView.End)
|
|
}
|
|
}
|
|
|
|
function onCopyCmdClick(row)
|
|
{
|
|
var cmdId = cmdModel.get(row).id
|
|
var obj = get_cmd_set(cmdId)
|
|
if(!!obj)
|
|
{
|
|
obj.name = obj.name + " 副本"
|
|
var result = backend_proxy.add_cmd_set(JSON.stringify(obj))
|
|
if(result.code === 200)
|
|
{
|
|
obj = result.data
|
|
mapCmdModel[obj.id] = obj
|
|
cmdModel.insert(row+1, obj)
|
|
insertArr(cmdSorts, cmdId, obj.id)
|
|
}
|
|
else
|
|
{
|
|
alert.show(result.msg)
|
|
}
|
|
}
|
|
}
|
|
|
|
function onUpdateSorts()
|
|
{
|
|
if(searchType == "全部")
|
|
{
|
|
cmdSorts = []
|
|
for(var i = 0; i < cmdModel.count; ++i)
|
|
{
|
|
cmdSorts.push(cmdModel.get(i).id)
|
|
}
|
|
cmdSortStr = cmdSorts.toString()
|
|
}
|
|
}
|
|
|
|
function onChangeType(type)
|
|
{
|
|
searchType = type
|
|
get_cmd_sets_forType(searchType)
|
|
}
|
|
|
|
function onLogCleanClick()
|
|
{
|
|
logModel.clear()
|
|
}
|
|
|
|
function onLogExplorerClick()
|
|
{
|
|
var result = backend_proxy.open_log_folder()
|
|
}
|
|
|
|
function onJsBtnClick()
|
|
{
|
|
jsText = codedialog.showEditor(jsText)
|
|
var regExp = /\t/g;
|
|
jsText = jsText.replace(regExp, ' ');
|
|
}
|
|
|
|
function onCreateLstClick() // 菜单插入
|
|
{
|
|
cmdSets = []
|
|
for(var i = 0 ; i < cmdModel.count; ++i)
|
|
{
|
|
if(cmdModel.get(i).checked)
|
|
{
|
|
cmdSets.push({"id":cmdModel.get(i).id,"delay":"0","loop":"1"} )
|
|
}
|
|
}
|
|
_createLstDialog.visible = true
|
|
}
|
|
|
|
function onDeleteCmdClick(row)
|
|
{
|
|
var cmdId = cmdModel.get(row).id
|
|
var result = backend_proxy.delete_cmd_set(cmdId)
|
|
if(result.code !== 200)
|
|
{
|
|
alert.show(result.msg)
|
|
return
|
|
}
|
|
delete mapCmdModel[cmdId]
|
|
cmdModel.remove(row)
|
|
removeArr(cmdSorts, cmdId)
|
|
}
|
|
|
|
function onDeleteLstClick(cmdLstId)
|
|
{
|
|
var result = backend_proxy.del_queue(cmdLstId)
|
|
if(result.code !== 200)
|
|
{
|
|
alert.show(result.msg)
|
|
}
|
|
get_queues()
|
|
}
|
|
|
|
function onSignalInserLstClick(cmdId)
|
|
{
|
|
var cmd_sets = []
|
|
cmd_sets.push({"id":cmdId,"delay":"0","loop":"1"} )
|
|
var cmdobj = get_cmd_set(cmdId)
|
|
if(!!cmdobj)
|
|
{
|
|
_editlst.cmdLstmodel.append({'name':cmdobj.name, 'loop': '1', 'cmdId': cmdId.toString(), 'delay': '0'})
|
|
}
|
|
}
|
|
|
|
function onInserLstClick()
|
|
{
|
|
var cmd_sets = []
|
|
for(var i = 0 ; i < cmdModel.count; ++i)
|
|
{
|
|
if(cmdModel.get(i).checked)
|
|
{
|
|
var cmdId = cmdModel.get(i).id.toString()
|
|
cmd_sets.push({"id":cmdId,"delay":"0","loop":"1"} )
|
|
var cmdobj = get_cmd_set(cmdId)
|
|
if(!!cmdobj)
|
|
{
|
|
_editlst.cmdLstmodel.append({'name':cmdobj.name, 'loop': '1', 'cmdId': cmdId, 'delay': '0'})
|
|
}
|
|
|
|
}
|
|
}
|
|
if( _cbCmdSelectAll.checked)
|
|
_cbCmdSelectAll.checked= false
|
|
else
|
|
checkSelectAll(false)
|
|
}
|
|
|
|
function onCmdLstCreateClick() // 按钮创建
|
|
{
|
|
cmdSets = []
|
|
_createLstDialog.visible = true
|
|
}
|
|
function onCreateLstDialogAcceptClick()
|
|
{
|
|
|
|
var queue = {
|
|
'name': _tfLstName.text, 'operator': g_session.id, 'remark': _tfLstRemark.text, 'cmd_sets': JSON.stringify(cmdSets)
|
|
}
|
|
cmdSets = []
|
|
var result = backend_proxy.create_queue(JSON.stringify(queue))
|
|
if(result.code !== 200)
|
|
{
|
|
|
|
alert.show(result.msg)
|
|
return
|
|
}
|
|
_tfLstName.text = ""
|
|
_tfLstRemark.text = ""
|
|
get_queues()
|
|
}
|
|
|
|
function onCmdLstBackClick()
|
|
{
|
|
editingLst = false
|
|
}
|
|
|
|
function onCmdLstEditClick(model)
|
|
{
|
|
if(lstRunning)
|
|
return
|
|
_editlst._tfLstName.text = model.name
|
|
_editlst._tfLstLoop.text = model.repeat_nums
|
|
_editlst._tfLstDelay.text = model.queue_delay
|
|
_editlst._tfLstRemark.text = model.remark
|
|
|
|
var cmd_sets = JSON.parse(model.cmd_sets)
|
|
_editlst.cmdLstmodel.clear()
|
|
for(var i = 0 ; i < cmd_sets.length; ++i)
|
|
{
|
|
var cmdSet = cmd_sets[i]
|
|
var cmdId = cmdSet.id.toString()
|
|
var cmdobj = get_cmd_set(cmdId)
|
|
if(!!cmdobj)
|
|
{
|
|
_editlst.cmdLstmodel.append({"name":cmdobj.name, "loop": !!cmdSet.loop ? cmdSet.loop : 1, "cmdId": cmdId, "delay": !!cmdSet.delay ? cmdSet.delay: 0})
|
|
}
|
|
}
|
|
}
|
|
function onCmdLstSaveClick(cmdLstId)
|
|
{
|
|
var cmd_sets = []
|
|
for(var i = 0; i < _editlst.cmdLstmodel.count; ++i)
|
|
{
|
|
var item = _editlst.cmdLstmodel.get(i)
|
|
cmd_sets.push({"id":item.cmdId, "delay": item.delay, "loop": item.loop})
|
|
}
|
|
|
|
var queue = {
|
|
'id':cmdLstId, 'name': _editlst._tfLstName.text, 'repeat_nums': _editlst._tfLstLoop.text, 'queue_delay':_editlst._tfLstDelay.text, 'operator': g_session.id, 'remark': _editlst._tfLstRemark.text, 'cmd_sets': JSON.stringify(cmd_sets)
|
|
}
|
|
|
|
var result = backend_proxy.update_queue(JSON.stringify(queue))
|
|
if(result.code !== 200)
|
|
{
|
|
alert.show(result.msg)
|
|
return
|
|
}
|
|
editingLst = false
|
|
get_queues()
|
|
}
|
|
|
|
function onCmdCreateClick()
|
|
{
|
|
_cbCmdInstrument.currentIndex = 0
|
|
_cbCmdModule.currentIndex = 0
|
|
_cbCmdType.currentIndex = 0
|
|
|
|
_cbEncode.currentIndex = 0
|
|
_cbDecode.currentIndex = 0
|
|
_sendCheck.currentIndex = 0
|
|
_receiveCheck.currentIndex = 0
|
|
curCmdId = ""
|
|
_tfCmdName.text = ""
|
|
_tfCmdWord.text = ""
|
|
_teCmdData._te.text = ""
|
|
_tfYdcd.text = "0"
|
|
_tfCs.text = "1000"
|
|
_tfYmsm.text = ""
|
|
jsText = Qt.atob(GL.aJsText)
|
|
_createCmdDialog.title = "创建指令"
|
|
_createCmdDialog.visible = true
|
|
}
|
|
|
|
function onRunCmdClick(cmdId)
|
|
{
|
|
if(!comIsOpen )
|
|
{
|
|
alert.show("请打开串口")
|
|
return
|
|
}
|
|
if(lstRunning)
|
|
{
|
|
alert.show("队列正在运行")
|
|
return
|
|
}
|
|
|
|
var result = backend_proxy.send_cmd_set(cmdId, g_curPro.id, g_session.id, "")
|
|
|
|
if(result.code !== 200)
|
|
{
|
|
alert.show(result.msg)
|
|
}
|
|
}
|
|
|
|
function onRunLstCmdClick(row)
|
|
{
|
|
if(!comIsOpen )
|
|
{
|
|
alert.show("请打开串口")
|
|
return
|
|
}
|
|
if(lstRunning)
|
|
{
|
|
alert.show("队列正在运行")
|
|
return
|
|
}
|
|
var result = backend_proxy.send_queue(cmdLstModel.get( row ).id, g_curPro.id, g_session.id)
|
|
|
|
if(result.code !== 200)
|
|
{
|
|
lstRunning = false
|
|
alert.show(result.msg)
|
|
}
|
|
else
|
|
{
|
|
lstRunning = true
|
|
cmdLstModel.get( row ).status = "1"
|
|
}
|
|
}
|
|
|
|
function onRunStopLstCmdClick(row)
|
|
{
|
|
if(!comIsOpen)
|
|
return
|
|
var model = cmdLstModel.get( row )
|
|
|
|
var result = backend_proxy.stop_queue(model.id, g_curPro.id, g_session.id)
|
|
|
|
if(result.code !== 200)
|
|
{
|
|
lstRunning = true
|
|
alert.show(result.msg)
|
|
}
|
|
else
|
|
{
|
|
lstRunning = false
|
|
cmdLstModel.get( row ).status = "0"
|
|
}
|
|
}
|
|
|
|
function onCmdEditClick(cmdId)
|
|
{
|
|
if(lstRunning)
|
|
return
|
|
var model = get_cmd_set(cmdId)
|
|
_cbCmdInstrument.currentIndex = !!model['instrument'] ? _cbCmdInstrument.find(model['instrument']) : 0
|
|
_cbCmdModule.currentIndex = !!model['module'] ? _cbCmdModule.find(model['module']) : 0
|
|
_cbCmdType.currentIndex = !!model['type'] ? _cbCmdType.find(model['type']) : 0
|
|
var _cbEncodeText = !!model['data_encode'] ? model['data_encode'] : ""
|
|
_cbEncode.currentIndex = getIndex(codec_lists, _cbEncodeText)
|
|
var _cbDecodeText = !!model['rsp_decode'] ? model['rsp_decode'] : ""
|
|
_cbDecode.currentIndex = getIndex(codec_lists, _cbDecodeText)
|
|
var _sendCheckText = !!model['data_check'] ? model['data_check'] : ""
|
|
_sendCheck.currentIndex = getIndex(check_lists, _sendCheckText)
|
|
var _receiveCheckText = !!model['rsp_check'] ? model['rsp_check'] : ""
|
|
_receiveCheck.currentIndex = getIndex(check_lists, _receiveCheckText)
|
|
curCmdId = !!model['id'] ? model['id'] : ""
|
|
_tfCmdName.text = !!model['name'] ? model['name'] : ""
|
|
_tfCmdWord.text = !!model['cmd'] ? model['cmd'] : ""
|
|
_teCmdData._te.text = !!model['data'] ? model['data'] : ""
|
|
_tfYdcd.text = !!model['rsp_len'] ? model['rsp_len'] : ""
|
|
_tfCs.text = !!model['rsp_timeout'] ? model['rsp_timeout'] : ""
|
|
_tfYmsm.text = !!model['remark'] ? model['remark'] : ""
|
|
var aJsText = !!model['script'] ? model['script'] : GL.aJsText
|
|
jsText = Qt.atob(aJsText)
|
|
_createCmdDialog.title = "编辑指令"
|
|
_createCmdDialog.visible = true
|
|
}
|
|
|
|
function onCreateCmdDialogAcceptClick()
|
|
{
|
|
var obj = {
|
|
'instrument':_cbCmdInstrument.currentText,
|
|
'module': _cbCmdModule.currentText,
|
|
'type': _cbCmdType.currentText,
|
|
'name': _tfCmdName.text,
|
|
'cmd': _tfCmdWord.text,
|
|
'data': _teCmdData._te.text,
|
|
'rsp_len': _tfYdcd.text,
|
|
'rsp_timeout': _tfCs.text,
|
|
'data_encode': codec_lists[_cbEncode.currentIndex],
|
|
'rsp_decode': codec_lists[_cbDecode.currentIndex],
|
|
'data_check': check_lists[_sendCheck.currentIndex],
|
|
'rsp_check': check_lists[_receiveCheck.currentIndex],
|
|
'script': Qt.btoa(jsText),
|
|
'remark': _tfYmsm.text
|
|
}
|
|
var result = ""
|
|
if(_createCmdDialog.title == "编辑指令")
|
|
{
|
|
obj.id = curCmdId
|
|
result = backend_proxy.update_cmd_set(JSON.stringify(obj))
|
|
if(result.code === 200)
|
|
{
|
|
cmdModel.set(_cmdTableView.currentRow , obj)
|
|
mapCmdModel[obj.id] = obj
|
|
}
|
|
else
|
|
{
|
|
alert.show(result.msg)
|
|
}
|
|
return
|
|
}
|
|
|
|
result = backend_proxy.add_cmd_set(JSON.stringify(obj))
|
|
|
|
if(result.code === 200)
|
|
{
|
|
obj = result.data
|
|
mapCmdModel[obj.id] = obj
|
|
cmdModel.append(obj)
|
|
cmdSorts.push(obj.id)
|
|
}
|
|
else
|
|
{
|
|
alert.show(result.msg)
|
|
}
|
|
}
|
|
}
|
|
|
|
function refreshData()
|
|
{
|
|
get_cmd_sets()
|
|
|
|
get_queues()
|
|
}
|
|
|
|
function clearCmdDlgData()
|
|
{
|
|
_cbCmdInstrument.currentIndex = 0
|
|
_cbCmdModule.currentIndex = 0
|
|
_cbCmdType.currentIndex = 0
|
|
_cbEncode.currentIndex = 0
|
|
_cbDecode.currentIndex = 0
|
|
_sendCheck.currentIndex = 0
|
|
_receiveCheck.currentIndex = 0
|
|
curCmdId = ""
|
|
_tfCmdName.text = ""
|
|
_tfCmdWord.text = ""
|
|
_teCmdData._te.text = ""
|
|
_tfYdcd.text = ""
|
|
_tfCs.text = ""
|
|
_tfYmsm.text = ""
|
|
_createCmdDialog.title = ""
|
|
}
|
|
|
|
function get_queues()
|
|
{
|
|
var result = backend_proxy.get_queues()
|
|
|
|
if(result.code === 200)
|
|
{
|
|
cmdLstModel.clear()
|
|
result.data.forEach(function(item){
|
|
if(item.name.indexOf(planFirstName) === -1)
|
|
{
|
|
item.status = "0"
|
|
item.date = ""
|
|
item.operator_name = ""
|
|
item.repeat_nums = !!item.repeat_nums ? item.repeat_nums.toString() : "1"
|
|
item.queue_delay = !!item.queue_delay ? item.queue_delay.toString() : "0"
|
|
cmdLstModel.append(item)
|
|
}
|
|
})
|
|
_cmdLstTableView.currentRow = _cmdLstTableView.currentRow
|
|
}
|
|
else
|
|
{
|
|
alert.show(result.msg)
|
|
}
|
|
}
|
|
|
|
function get_cmd_sets_forType(type)
|
|
{
|
|
cmdModel.clear()
|
|
cmdSorts.forEach(function(id){
|
|
if(!!mapCmdModel[id])
|
|
{
|
|
if(type === "全部")
|
|
{
|
|
cmdModel.append(mapCmdModel[id])
|
|
}
|
|
else
|
|
{
|
|
if(mapCmdModel[id].type === type)
|
|
cmdModel.append(mapCmdModel[id])
|
|
}
|
|
}
|
|
})
|
|
}
|
|
|
|
function insertArr(arr, oldId, newId)
|
|
{
|
|
for(var i = 0; i < arr.length; ++i)
|
|
{
|
|
if(arr[i] === oldId)
|
|
{
|
|
arr.splice(i+1,0, newId)
|
|
return
|
|
}
|
|
}
|
|
}
|
|
|
|
function removeArr(arr, cmdId)
|
|
{
|
|
for(var i = 0; i < arr.length; ++i)
|
|
{
|
|
if(arr[i] == cmdId)
|
|
{
|
|
arr.splice(i,1)
|
|
return
|
|
}
|
|
}
|
|
}
|
|
|
|
property var mapCmdModel: ({})
|
|
function get_cmd_sets()
|
|
{
|
|
var result = backend_proxy.get_cmd_sets()
|
|
if(result.code === 200)
|
|
{
|
|
cmdModel.clear()
|
|
mapCmdModel = {}
|
|
if(result.data.length-1 === cmdSorts.length) // 排除id=1001 必须-1
|
|
{
|
|
result.data.forEach(function(item){
|
|
item.checked = false
|
|
|
|
if(item.id != planCmdId)
|
|
{
|
|
var obj = {}
|
|
obj.checked = item.checked
|
|
obj.id = !!item.id ? item.id : ""
|
|
obj.type = !!item.type ? item.type : ""
|
|
obj.name = !!item.name ? item.name : ""
|
|
obj.remark = !!item.remark ? item.remark : ""
|
|
mapCmdModel[obj.id] = obj // 存入map 用于筛选和排序
|
|
}
|
|
})
|
|
cmdSorts.forEach(function(id){
|
|
if(!!mapCmdModel[id])
|
|
cmdModel.append(mapCmdModel[id])
|
|
})
|
|
|
|
}
|
|
else
|
|
{
|
|
result.data.forEach(function(item){
|
|
item.checked = false
|
|
|
|
if(item.id != planCmdId)
|
|
{
|
|
var obj = {}
|
|
obj.checked = item.checked
|
|
obj.id = !!item.id ? item.id : ""
|
|
obj.type = !!item.type ? item.type : ""
|
|
obj.name = !!item.name ? item.name : ""
|
|
obj.remark = !!item.remark ? item.remark : ""
|
|
mapCmdModel[obj.id] = obj // 存入map 用于筛选和排序
|
|
cmdModel.append(obj)
|
|
}
|
|
})
|
|
updateSorts()
|
|
}
|
|
if( _cmdTableView.currentRow > -1)
|
|
_cmdTableView.currentRow = _cmdTableView.currentRow
|
|
}
|
|
else
|
|
{
|
|
alert.show(result.msg)
|
|
}
|
|
}
|
|
|
|
// 退出时关闭队列
|
|
function stopLstCmd()
|
|
{
|
|
if(!comIsOpen)
|
|
return
|
|
var row = _cmdLstTableView.currentRow
|
|
var model = cmdLstModel.get(row)
|
|
|
|
var result = backend_proxy.stop_queue(model.id, g_curPro.id, g_session.id)
|
|
|
|
if(result.code !== 200)
|
|
{
|
|
lstRunning = true
|
|
alert.show(result.msg)
|
|
}
|
|
else
|
|
{
|
|
lstRunning = false
|
|
cmdLstModel.get( row ).status = "0"
|
|
}
|
|
}
|
|
|
|
function get_cmd_set(cmdId)
|
|
{
|
|
var result = backend_proxy.get_cmd_set(cmdId)
|
|
if(result.code === 200)
|
|
{
|
|
return result.data
|
|
}
|
|
else
|
|
{
|
|
alert.show(result.msg)
|
|
}
|
|
return null
|
|
}
|
|
|
|
// 格式化日对象
|
|
function getNowDate () {
|
|
var date = new Date();
|
|
var sign2 = ":";
|
|
var year = date.getFullYear() // 年
|
|
var month = date.getMonth() + 1; // 月
|
|
var day = date.getDate(); // 日
|
|
var hour = date.getHours(); // 时
|
|
var minutes = date.getMinutes(); // 分
|
|
var seconds = date.getSeconds() //秒
|
|
var weekArr = ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期天'];
|
|
var week = weekArr[date.getDay()];
|
|
// 给一位数的数据前面加 “0”
|
|
if (month >= 1 && month <= 9) {
|
|
month = "0" + month;
|
|
}
|
|
if (day >= 0 && day <= 9) {
|
|
day = "0" + day;
|
|
}
|
|
if (hour >= 0 && hour <= 9) {
|
|
hour = "0" + hour;
|
|
}
|
|
if (minutes >= 0 && minutes <= 9) {
|
|
minutes = "0" + minutes;
|
|
}
|
|
if (seconds >= 0 && seconds <= 9) {
|
|
seconds = "0" + seconds;
|
|
}
|
|
return year + "-" + month + "-" + day + " " + hour + sign2 + minutes + sign2 + seconds;
|
|
}
|
|
|
|
function hasCheck()
|
|
{
|
|
for(var i = 0 ; i < cmdModel.count; ++i)
|
|
{
|
|
if ( cmdModel.get(i).checked )
|
|
return true
|
|
}
|
|
return false
|
|
}
|
|
}
|