2026-02-25 17:53:09 +08:00

358 lines
6.5 KiB
Plaintext

var g_simBeginTime = [];
var g_simulatePkg = {};
var g_simulateSeq = [];
var g_simulateMode = false;
var g_keyMap = {};
var g_iconAction = {};
function start()
{
SView.clicked.connect(g_pClicked);
SView.contextMenu.connect(onMenuClicked);
if(JSON.stringify(g_iconAction) == "{}")
{
var str = SDAO.readFileData("../../data/model/iconAction.json");
g_iconAction = JSON.parse(str);
}
}
function g_pClicked(itemCout, msgStr)
{
var context = SApp.getAppContext();
if(itemCout > 0 && context == 1)
{
executeYcCmd(msgStr);
}
if(itemCout > 0 && context == 3)
{
executeSimulateCmd(msgStr);
}
}
function executeYcCmd(msgStr)
{
var tags = msgStr.split('^');
var keyInfo = "";
var args = "";
if(tags.length < 10)
{
return;
}
var objType = tags[0];
var objName = tags[1];
var iconName = tags[2];
var curValue = tags[3];
var keyTagName = tags[8];
if(objName!="多态文本")
{
return;
}
if(keyTagName=="")
{
return;
}
//showMessageDialog(objName);
//SWnd.fileOpen("遥测.glx", "opt", FILE_OPEN_DIALOG, keyTagName);
}
function executeSimulateCmd(msgStr)
{
var tags = msgStr.split('^');
var keyInfo = "";
var args = "";
if(tags.length < 10)
{
return;
}
var objType = tags[0];
var objName = tags[1];
var iconName = tags[2];
var curValue = tags[3];
var keyTagName = tags[8];
if(objName=="")
{
return;
}
if(keyTagName=="")
{
return;
}
if(!(iconName in g_iconAction))
{
return;
}
if(0 == g_iconAction[iconName]["Simulate"])
{
return;
}
var retList = SView.getKeyInfoValue(keyTagName,objName);
var value = retList[0];
var status = retList[1];
var scriptValue = retList[2];
if(g_keyMap[keyTagName] == null)
{
g_keyMap[keyTagName] = retList;
}
var keyTag = SView.truncTag(keyTagName, "key");
var valueNum = SDAO.getDigValueNum(keyTag);
if(valueNum == 1)
{
if(value == 0)
value = 1;
else
value = 0;
}
else if(valueNum == 2)
{
if(value <= 1)
value = 2;
else
value = 1;
}
else
{
if(value == 1)
value = 2;
else
value = 1;
}
var lockRet = SView.checkLockLogic(keyTag, value);
if(lockRet[0] == false)
{
showMessageDialog(lockRet[1], lockRet[0]);
return;
}
SView.addReqData(keyTagName, value, 256);
var simulateInfo = {};
simulateInfo.beginTime = g_simBeginTime;
simulateInfo.tagName = keyTagName;
if(scriptValue == 1 || scriptValue == 3)
{
simulateInfo.desc = "分闸";
}
else
{
simulateInfo.desc = "合闸";
}
g_simulateSeq.push(simulateInfo);
SView.callTopo();
}
function toFillInt(value)
{
var len = 2;
var ret = (Array(len).join('0') + value).slice(-len);
return ret;
}
function beginSimulate()
{
var date = new Date;
var year = date.getUTCFullYear();
var month = date.getUTCMonth();
var day = date.getUTCDate();
var hour = date.getUTCHours();
var min = date.getUTCMinutes();
var second = date.getUTCSeconds();
g_simBeginTime[0] = date.getFullYear() + "-" + toFillInt(date.getMonth()+1) + "-" + toFillInt(date.getDate()) + " " + toFillInt(date.getHours()) + ":" + toFillInt(date.getMinutes()) + ":" + toFillInt(date.getSeconds());
g_simBeginTime[1] = Date.UTC(year,month,day,hour,min,second);
}
function finishSimulate()
{
var context = SApp.getAppContext();
if(g_simulateSeq.length == 0 || context == 1)
{
return;
}
for(key in g_keyMap)
{
SView.addReqData(key, g_keyMap[key][0], g_keyMap[key][1]);
}
SView.callTopo();
g_simulateSeq = [];
g_simulatePkg = {};
g_keyMap = {};
}
function initTicketInfo()
{
var context = SApp.getAppContext();
if(g_simulateSeq.length == 0 || context == 1)
{
return;
}
g_simulatePkg.content = g_simulateSeq;
var str = JSON.stringify(g_simulatePkg);
SWnd.fileOpen("界面框架/panel_opt_ticket.glx", "simulate", 3);
var code = "insertRecord('" + str + "')";
SWnd.execute("", "界面框架/panel_opt_ticket.glx", code, -1);
}
function getTicketMode()
{
var code = "getTicketMode()";
var ret = SWnd.execute("", "index.glx", code, -1);
return ret;
}
function setContextMenu(objInfo)
{
var context = SApp.getAppContext();
if(context != 1 &&
context != 3)
{
return;
}
if(context == 3)
{
menuInfo = ["退出模拟操作,1"];
return menuInfo;
}
var menuInfo;
if(objInfo == "")
{
menuInfo = ["遥信停闪,1"];
return menuInfo;
}
var tags = objInfo.split('^');
var code = "getTicketMode()";
var ticketMode = SWnd.execute("", "index.glx", code, -1);
if(ticketMode == 0)
{
return;
}
var valid = false;
var iconName = tags[1];
var keyTagName = tags[8];
switch(iconName)
{
case "刀闸":
case "断路器":
case "手车刀闸":
case "手车_上":
case "手车_下":
// case "电动隔离开关":
// case "断路器":
// case "手车":
valid = true;
break;
default:
break;
}
if(valid)
{
if(ticketMode == 1)
{
menuInfo = getTopicTicketList(keyTagName);
}
else if(ticketMode == 2)
{
menuInfo = ["工作票1,1","工作票2,1"];
}
else
return;
}
return menuInfo;
}
function onMenuClicked(menu, objCount, objInfo)
{
var context = SApp.getAppContext();
if(context != 1 &&
context != 3)
{
return;
}
if(menu == "退出模拟操作")
{
var code = "simulate()";
SWnd.execute("","界面框架/view_sim_operate.glx",code,1);
return;
}
if(menu == "遥信停闪")
{
SView.clearTwinkle();
return;
}
var tags = objInfo.split('^');
var keyInfo = "";
var args = "";
if(tags.length < 10)
{
return;
}
var objType = tags[0];
var objName = tags[1];
var iconName = tags[2];
var curValue = tags[3];
var keyTagName = tags[8];
var ticketMode = getTicketMode();
if(ticketMode == 1)
{
SWnd.fileOpen("界面框架/panel_ticket_manage.glx", "", FILE_OPEN_DIALOG, "", menu);
}
else if(ticketMode == 2)
{
SWnd.fileOpen("界面框架/view_work_ticket.glx", "", FILE_OPEN_DIALOG, "", menu + "," + keyTagName);
}
else
{}
}
function getTopicTicketList(keyTagName)
{
var menuList = [];
var sqlStr = "select order_name from operation_order_model where id in(select distinct order_id from operation_order_model_info where key_id_tag = '" + keyTagName + "')";
var record = SDAO.dbSelect(sqlStr);
var count = record[0];
if(count < 0)
{
showMessageDialog("查询失败");
}
else
{
for(var i = 1; i <= count; i++)
{
menuList.push(record[i][0] + ",1");
}
}
return menuList;
}