瀏覽代碼

Z991239-5697 #comment 区分各种情况下的应用重启页面;新增适配器升级流程处理;去掉心跳回退的事件处理转由升级实体处理后直接调用重启

oilyang 1 年之前
父節點
當前提交
2df0dcdf3d

+ 1 - 0
Framework/Common/SpBase.h

@@ -185,6 +185,7 @@ enum RebootTriggerEnum
 	RebootTrigger_ManualRemove,	//reboot by remote maintain
 	RebootTrigger_Unsubscribe,	    //The life of machine is over,and will not connect to backstage again
 	RebootTrigger_DeadForever,     //As some reason such as test failed, we want Framework dead and not reboot. TODO: let the Gardian know.
+	RebootTrigger_DeviceAdapterUpgrade,
 };
 
 enum RebootWayEnum

+ 3 - 0
Module/include/EventCode.h

@@ -581,6 +581,9 @@ ERROR_ACCESSAUTH_CONNECT_ACS_x}
 //请求框架重启 事件 2 0x50600004 请求健康实体执行框架重启,非版本升级,监护不做回退监控
 #define Event_Req_Framework_No_Upgrade_Restart 0x50600004
 //请求框架重启 事件 2 0x50600010 请求健康实体执行框架重启,版本回退,监护不做回退监控
+
+#define Event_DeviceAdapterUpgrade_Framework_Restart 0x50600005	//适配器升级,请求重启应用
+
 #define Event_Req_Framework_Rollback_Restart 0x50600100
 //请求框架重启 事件 2 0x50600011 请求健康实体执行操作系统重启,版本升级,监护做回退监控
 #define Event_Req_OS_Upgrade_Restart 0x50600101

+ 42 - 59
Module/mod_healthmanager/mod_healthmanager.cpp

@@ -955,45 +955,6 @@ bool CHealthManagerEntity::SaveFrameStartTimeForUpgrade()
 
 	return true;
 }
-bool CHealthManagerEntity::VersionRollBack(const char *pVerion)
-{
-	CSimpleStringA csCurrVer = m_sysStaticInfo.InstallVersion.ToString();
-	if (_stricmp(csCurrVer,pVerion) == 0)
-	{
-		DbgWithLink(LOG_LEVEL_WARN,LOG_TYPE_SYSTEM)("destination version identified the current version.");
-		return false;
-	}
-	m_pUpgMgr = new UpgradeMgrService_ClientBase(this);
-	if (m_pUpgMgr == NULL)
-	{
-		DbgWithLink(LOG_LEVEL_ERROR,LOG_TYPE_SYSTEM)("create UpgradeMgr client failed.");
-		return false;
-	}
-	CSmartPointer<IAsynWaitSp> pAsyncWait;
-	ErrorCodeEnum eErr = m_pUpgMgr->Connect(pAsyncWait);
-	if (eErr != Error_Succeed)
-	{
-		DbgWithLink(LOG_LEVEL_ERROR,LOG_TYPE_SYSTEM)("connect to UpgradeMgr failed(%s)", SpStrError(eErr));
-		return false;
-	}
-	else
-		eErr = pAsyncWait->WaitAnswer(10000);
-	UpgradeMgrService_RollbackUpdate_Req req;
-	req.strVersion = pVerion;
-	UpgradeMgrService_RollbackUpdate_Ans ans;
-	eErr = (*m_pUpgMgr)(EntityResource::getLink().upgradeLink())->RollbackUpdate(req,ans,10000);
-	if (eErr == Error_Succeed)
-	{
-		DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM)("version rollback doing.");
-		m_bVerRollback = true;
-		return true;
-	}
-	else
-	{
-		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("call UpgradeMgr rollback failed(%s)", SpStrError(eErr));
-		return false;
-	}
-}
 
 void CHealthManagerEntity::ReadCenterConfigStr(SpReqAnsContext<HealthManagerService_ReadCenterConfigStr_Req, HealthManagerService_ReadCenterConfigStr_Ans>::Pointer ctx)
 {
@@ -1054,6 +1015,7 @@ void CHealthManagerEntity::OnLog(const CAutoArray<CUUID>& SubIDs, const CUUID nL
 
 	case Event_Req_Framework_No_Upgrade_Restart://升级请求重启框架(体系外升级等等)
 	case Event_Req_Framework_Rollback_Restart:
+	case Event_DeviceAdapterUpgrade_Framework_Restart://适配器升级,重启应用
 	{
 		//TODO oilyang@20230613 all of the Privilege CMD need to been collated
 		LogWarn(Severity_Low, Error_Unexpect, HealthManager_UserErrorCode_PrivilegeCMD, CSimpleStringA::Format("%x", dwUserCode));
@@ -1074,7 +1036,7 @@ void CHealthManagerEntity::OnLog(const CAutoArray<CUUID>& SubIDs, const CUUID nL
 		{
 			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Event_Req_Framework_Restart.!!!!");
 			FrameworkRestartTask* task = new FrameworkRestartTask(this); //版本升级,有监控
-			task->needWarn = true;
+			task->eWarmPageType = WarmPageType_TerminalUpgrade;
 			task->needVerctrl = true;
 			task->eTrigger = RebootTrigger_FrameUpgrade;
 			task->eWay = RebootWay_Framework;
@@ -1084,9 +1046,8 @@ void CHealthManagerEntity::OnLog(const CAutoArray<CUUID>& SubIDs, const CUUID nL
 		else if (dwUserCode == Event_Req_Framework_Rollback)
 		{
 			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("version rollback succeed.to restart framework");
-			m_bVerRollback = false;
 			FrameworkRestartTask* task = new FrameworkRestartTask(this); //心跳重启,无监控
-			task->needWarn = true;
+			task->eWarmPageType = WarmPageType_HeartBeatRollBack;
 			task->needVerctrl = false;
 			task->eTrigger = RebootTrigger_RollBack;
 			task->eWay = RebootWay_Framework;
@@ -1097,7 +1058,7 @@ void CHealthManagerEntity::OnLog(const CAutoArray<CUUID>& SubIDs, const CUUID nL
 		{
 			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Event_Req_Framework_No_Upgrade_Restart.!!!!");
 			FrameworkRestartTask* task = new FrameworkRestartTask(this); //体系外升级,无监控
-			task->needWarn = true;
+			task->eWarmPageType = WarmPageType_ThirdPartyUpgrade;
 			task->needVerctrl = false;
 			task->eTrigger = RebootTrigger_FrameUpgrade;
 			task->eWay = RebootWay_Framework;
@@ -1107,15 +1068,25 @@ void CHealthManagerEntity::OnLog(const CAutoArray<CUUID>& SubIDs, const CUUID nL
 		else if (dwUserCode == Event_Req_Framework_Rollback_Restart)
 		{
 			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("version rollback succeed.to restart framework");
-			m_bVerRollback = false;
 			FrameworkRestartTask* task = new FrameworkRestartTask(this); //回退,无监控
-			task->needWarn = true;
+			task->eWarmPageType = WarmPageType_UpgradeRollBack;
 			task->needVerctrl = false;
 			task->eTrigger = RebootTrigger_RollBack;
 			task->eWay = RebootWay_Framework;
 			GetFunction()->PostThreadPoolTask(task);
 			break;
 		}
+		else if (dwUserCode == Event_DeviceAdapterUpgrade_Framework_Restart)
+		{
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("DeviceAdapter upgrade succeed.to restart framework");
+			FrameworkRestartTask* task = new FrameworkRestartTask(this); 
+			task->eWarmPageType = WarmPageType_DeviceAdapterUpgrade;
+			task->needVerctrl = false;
+			task->eTrigger = RebootTrigger_DeviceAdapterUpgrade;
+			task->eWay = RebootWay_Framework;
+			GetFunction()->PostThreadPoolTask(task);
+			break;
+		}
 		m_fsm.QuitFrameworkAndSaveInfo(RebootTrigger_Unknown, RebootWay_Framework);
 	}
 	break;
@@ -1130,7 +1101,6 @@ void CHealthManagerEntity::OnLog(const CAutoArray<CUUID>& SubIDs, const CUUID nL
 		{
 
 			FrameworkRestartTask* task = new FrameworkRestartTask(this);
-			task->needWarn = false;
 			task->needVerctrl = false;
 			task->eTrigger = RebootTrigger_OSUpgrade;
 			task->eWay = RebootWay_OS;
@@ -1139,7 +1109,7 @@ void CHealthManagerEntity::OnLog(const CAutoArray<CUUID>& SubIDs, const CUUID nL
 		else if (dwUserCode == Event_Req_OS_Upgrade_Restart)
 		{
 			FrameworkRestartTask* task = new FrameworkRestartTask(this); 
-			task->needWarn = true;
+			task->eWarmPageType = WarmPageType_TerminalUpgrade;
 			task->needVerctrl = true;
 			task->eTrigger = RebootTrigger_OSUpgrade;
 			task->eWay = RebootWay_OS;
@@ -1241,14 +1211,6 @@ void CHealthManagerEntity::OnLog(const CAutoArray<CUUID>& SubIDs, const CUUID nL
 		}
 	}
 	break;
-	case LOG_EVT_INC_VERSION_ROLLBACK:
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("version to be rollback to %s", pszMessage);
-		if (!m_bVerRollback)
-		{
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("rollbacking");
-			VersionRollBack(pszMessage);
-		}
-		break;
 	case EVENT_MOD_RELEASESIP_TIMEOUT:
 		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("RELEASESIP_TIMEOUT.");
 		RestartModule("SIPPhone");
@@ -1404,12 +1366,33 @@ bool CHealthManagerEntity::StartManagerDesktopPage(CSimpleStringA pageName)
 	return false;
 }
 
-void CHealthManagerEntity::WarnAndRestartFunc(RebootTriggerEnum eTrigger, RebootWayEnum eWay, bool needWarn, bool needVerctrl)
+void CHealthManagerEntity::WarnAndRestartFunc(RebootTriggerEnum eTrigger, RebootWayEnum eWay, WarmPageTypeEnum eWarmPageType, bool needVerctrl)
 {
-	if (needWarn)
+	switch (eWarmPageType)
 	{
-		StartManagerDesktopPage("upgradeRestart.html");
-		Sleep(5000);
+	case WarmPageType_TerminalUpgrade:
+		StartManagerDesktopPage("TerminalUpgradeRestart.html");
+		Sleep(5000);//oiltmp to be defined ???
+		break;
+	case WarmPageType_DeviceAdapterUpgrade:
+		StartManagerDesktopPage("DeviceAdapterUpgradeRestart.html");
+		Sleep(5000);//oiltmp to be defined ???
+		break;
+	case WarmPageType_HeartBeatRollBack:
+		StartManagerDesktopPage("HeartBeatRollBackRestart.html");
+		Sleep(5000);//oiltmp to be defined ???
+		break;
+	case WarmPageType_UpgradeRollBack:
+		StartManagerDesktopPage("UpgradeRollBackRestart.html");
+		Sleep(5000);//oiltmp to be defined ???
+		break;
+	case WarmPageType_ThirdPartyUpgrade:
+		StartManagerDesktopPage("ThirdPartyUpgradeRestart.html");
+		Sleep(5000);//oiltmp to be defined ???
+		break;
+	case WarmPageType_None:
+	default:
+		break;
 	}
 
 	if (needVerctrl)

+ 15 - 10
Module/mod_healthmanager/mod_healthmanager.h

@@ -30,7 +30,15 @@ typedef ErrorCodeEnum (*pfFrameworkQuit)(RebootTriggerEnum eReason);
 #define DEPLOYSTATE_DONE 1
 #define DEPLOYSTATE_FAILED 2
 
-
+//提示页面类型
+enum WarmPageTypeEnum {
+	WarmPageType_None = 0,				//无提示页
+	WarmPageType_TerminalUpgrade,		//终端应用升级
+	WarmPageType_DeviceAdapterUpgrade,	//适配器升级
+	WarmPageType_HeartBeatRollBack,		//心跳回退
+	WarmPageType_UpgradeRollBack,		//升级任务回退
+	WarmPageType_ThirdPartyUpgrade,		//体系外升级
+};
 struct ModuleRunInfo
 {
 	DWORD dwStart;
@@ -77,8 +85,7 @@ public:
 	CHealthManagerEntity() :
 		m_bWaitRestartPC(false)
 		, m_bScreenLock(false)
-		, m_bSayIdle(false), m_bGuardianRun(false), m_guardianCount(1), m_pUpgMgr(NULL)
-		, m_bVerRollback(false)
+		, m_bSayIdle(false), m_bGuardianRun(false), m_guardianCount(1)
 		, m_menuChoice(""), m_menuPre(""), m_netState("N"), m_bBrowserIdleFirst(true)
 		, m_bInMainPage(false), m_stopSelfCheck(0)
 		, m_bEnterMainPageEver(false),m_bHaveThrowMainPage(false)
@@ -241,7 +248,7 @@ public:
 	void GetAuthErrMsg(SpReqAnsContext<HealthManagerService_GetAuthErrMsg_Req, HealthManagerService_GetAuthErrMsg_Ans>::Pointer ctx);
 	void QueryCenterCfg(SpReqAnsContext<HealthManagerService_QueryCenterCfg_Req, HealthManagerService_QueryCenterCfg_Ans>::Pointer ctx);
 	bool StartManagerDesktopPage(CSimpleStringA pageName);
-	void WarnAndRestartFunc(RebootTriggerEnum eTrigger, RebootWayEnum eWay, bool needWarn = false, bool needVerctrl = false);
+	void WarnAndRestartFunc(RebootTriggerEnum eTrigger, RebootWayEnum eWay, WarmPageTypeEnum eWarmPageType, bool needVerctrl = false);
 	void RealCheck(SpReqAnsContext<HealthManagerService_RealCheck_Req, HealthManagerService_RealCheck_Ans>::Pointer ctx);
 	void OnAnswer(CSmartPointer<IAsynWaitSp> pAsynWaitSp);
 	ErrorCodeEnum ExceptionErrorProcess(const char* pszEntityName, ErrorCodeEnum eTestResult);
@@ -270,7 +277,7 @@ private:
 	int m_stopSelfCheck;
 	int m_restartHour, m_restartMinute, m_lastHour, m_guardianCount, m_maxAbnormalTimes, m_rebootHourBegin, m_rebootHourEnd;;
 	bool m_bWaitRestartPC, m_bScreenLock, m_bSayIdle
-		, m_bGuardianRun, m_bVerRollback, m_bBrowserIdleFirst
+		, m_bGuardianRun, m_bBrowserIdleFirst
 		, m_bInMainPage, m_bEnterMainPageEver, m_bHaveThrowMainPage, m_bToRestartByCenterSetting;
 	bool m_bNeedAuthRetry/*需要重试准入*/, m_bNeedGuardianRestart/*需要重启*/, m_bNeedGuardian;
 	DWORD m_dwTimeOfAuthSuc;
@@ -279,7 +286,6 @@ private:
 
 	CSimpleStringA m_menuChoice,m_currentVer,m_menuPre,m_netState, m_versionEx;
 	map<CSimpleStringA,ModuleRunInfo> m_modRunInfo;
-	UpgradeMgrService_ClientBase *m_pUpgMgr;
 	CAutoArray<CSimpleStringA> m_activeEntity;
 
 	pfShakeHands m_pfShake;
@@ -299,7 +305,6 @@ private:
 	int CheckGuardianIsRun(bool bStart=false);
 	bool StopGuardian();
 	bool StartGuardian();
-	bool VersionRollBack(const char *pVerion);
 	
 	CSimpleStringA __ReadCenterConfigStr(CSimpleStringA key, CSimpleStringA entityName);
 
@@ -313,14 +318,14 @@ struct FrameworkRestartTask : public ITaskSp
 {
 	RebootTriggerEnum eTrigger;
 	RebootWayEnum eWay;
-	bool needWarn; 
+	WarmPageTypeEnum eWarmPageType;
 	bool needVerctrl;
 
 	CHealthManagerEntity* m_entity;
-	FrameworkRestartTask(CHealthManagerEntity* entity) : m_entity(entity) {}
+	FrameworkRestartTask(CHealthManagerEntity* entity) : m_entity(entity), eWarmPageType(WarmPageType_None) {}
 	void Process()
 	{
-		m_entity->WarnAndRestartFunc(eTrigger, eWay, needWarn, needVerctrl);
+		m_entity->WarnAndRestartFunc(eTrigger, eWay, eWarmPageType, needVerctrl);
 	}
 };
 

+ 106 - 0
addin/res/ManagerDesktop/DeviceAdapterUpgradeRestart.html

@@ -0,0 +1,106 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+	<head>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+		<title>错误页-重启应用</title>
+		<meta name="viewport" content="width=device-width,initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
+		<link rel="stylesheet" type="text/css" href="css/errType.css" />
+		<link rel="stylesheet" type="text/css" href="css/non-ie-style.css" /> 
+		<link rel="stylesheet" type="text/css" href="css/loading.css" />
+
+		<style>
+			.upgrade-restart h3{
+				margin-bottom: 40px;
+			}
+		</style>
+	</head>
+	<body class="errType">
+		<nav>
+			<div class="logo">
+				<img width="100%" src="./images/logo_cmb.png" />
+			</div>
+		</nav>
+		<div class="hareword-info upgrade-restart">
+			<h3 class="fz_44">厂商适配器更新中,稍后自动重启<dot class="dot">●●●●●●</dot></h3>
+			<!-- <p id="errorInfo">
+				该设备硬件地址信息和后台记录不一致,请联系分行设备管理员扫描下方二维码。
+			</p> -->
+			<div class="result-wrap">
+				<div class="result-item">
+					<label class="fz_28">终端号</label>
+					<span class="fz_28 terminalNo"></span>
+				</div>
+				<div class="result-item">
+					<label class="fz_28">当前时间</label>
+					<span class="fz_28 currDate"></span>
+				</div>
+				<div class="result-item">
+					<label class="fz_28">终端版本</label>
+					<span class="fz_28 termVersion"></span>
+				</div>
+				<div class="result-item">
+					<label class="fz_28">准入地址</label>
+					<span class="fz_28 urlAccessAddr"></span>
+				</div>
+			</div>
+
+			<!-- 二维码授权验证start -->
+			<!-- <div class="scan-verify">
+				<iframe frameborder="no" border="0" allowtransparency="yes" allow="microphone;camera;midi;encrypted-media;"
+				  id="iframeSrc"
+					src="https://one-account-gateway.paasuat.cmbchina.cn/auth-plugin/v2/identity-authentication?clientId=6898ec10629f499187d7b31fbe9823a4&ui=eyJhdXRoVHlwZXMiOlsicXJDb2RlIl0sImhlYWRlciI6dHJ1ZSwicXJDb2RlU2l6ZSI6MTQ1fQ%253D%253D"
+					></iframe>
+				<p>完成扫码授权后</br>请重置密钥</p>
+				<button class="btn-blue" onclick="exit()">重置密钥</button>
+			</div> -->
+			<!-- 二维码授权验证end -->
+		</div>
+
+		<!-- 提示框 -->
+		<div class="modal-box" id="modalBox">
+			<div class="coverBg"></div>
+			<div class="modal" id="modal">
+				<img src="./images/success.png" />
+				<p class="fz_24" id="errTips"></p>
+				<button class="fz_23" onclick="closeModal('modal')">确定</button>
+			</div>
+		</div>
+		<!-- 提示框 -->
+
+		<!-- loading -->
+		<div id='loadContent'>
+			<div class="back_cover" ></div>
+			<div class='loading' id='loading'>
+				<div class='circle circle1'>
+					<span></span>
+					<span></span>
+					<span></span>
+					<span></span>
+				</div>
+				<div class='circle circle2'>
+					<span></span>
+					<span></span>
+					<span></span>
+					<span></span>
+				</div>
+				<div class='circle circle3'>
+					<span></span>
+					<span></span>
+					<span></span>
+					<span></span>
+				</div>
+			</div>
+		</div>
+		<!-- loading -->
+	</body>
+	<script type="text/javascript" src="js/common.js"></script>
+	<script type="text/javascript" src="js/websocket.js"></script>
+	<script type="text/javascript" src="js/webSocketBase.js"></script>
+	<script type="text/javascript" src="js/entityMessage.js"></script>
+	<script type="text/javascript" src="js/eventEmitter.js"></script>
+	<script type="text/javascript" src="js/innerEventEmitter.js"></script>
+	<script type="text/javascript" src="js/errorCodeEnum.js"></script>
+	<script type="text/javascript" src="js/entityService.js"></script>
+	<script type="text/javascript" src="Include/jQuery/js/jquery.min.js" ></script>
+	<script type="text/javascript" src="js/getTerminalInfo.js"></script>
+</html>

+ 106 - 0
addin/res/ManagerDesktop/HeartBeatRollBackRestart.html

@@ -0,0 +1,106 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+	<head>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+		<title>错误页-重启应用</title>
+		<meta name="viewport" content="width=device-width,initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
+		<link rel="stylesheet" type="text/css" href="css/errType.css" />
+		<link rel="stylesheet" type="text/css" href="css/non-ie-style.css" /> 
+		<link rel="stylesheet" type="text/css" href="css/loading.css" />
+
+		<style>
+			.upgrade-restart h3{
+				margin-bottom: 40px;
+			}
+		</style>
+	</head>
+	<body class="errType">
+		<nav>
+			<div class="logo">
+				<img width="100%" src="./images/logo_cmb.png" />
+			</div>
+		</nav>
+		<div class="hareword-info upgrade-restart">
+			<h3 class="fz_44">应用更新中(指令通道),稍后自动重启<dot class="dot">●●●●●●</dot></h3>
+			<!-- <p id="errorInfo">
+				该设备硬件地址信息和后台记录不一致,请联系分行设备管理员扫描下方二维码。
+			</p> -->
+			<div class="result-wrap">
+				<div class="result-item">
+					<label class="fz_28">终端号</label>
+					<span class="fz_28 terminalNo"></span>
+				</div>
+				<div class="result-item">
+					<label class="fz_28">当前时间</label>
+					<span class="fz_28 currDate"></span>
+				</div>
+				<div class="result-item">
+					<label class="fz_28">终端版本</label>
+					<span class="fz_28 termVersion"></span>
+				</div>
+				<div class="result-item">
+					<label class="fz_28">准入地址</label>
+					<span class="fz_28 urlAccessAddr"></span>
+				</div>
+			</div>
+
+			<!-- 二维码授权验证start -->
+			<!-- <div class="scan-verify">
+				<iframe frameborder="no" border="0" allowtransparency="yes" allow="microphone;camera;midi;encrypted-media;"
+				  id="iframeSrc"
+					src="https://one-account-gateway.paasuat.cmbchina.cn/auth-plugin/v2/identity-authentication?clientId=6898ec10629f499187d7b31fbe9823a4&ui=eyJhdXRoVHlwZXMiOlsicXJDb2RlIl0sImhlYWRlciI6dHJ1ZSwicXJDb2RlU2l6ZSI6MTQ1fQ%253D%253D"
+					></iframe>
+				<p>完成扫码授权后</br>请重置密钥</p>
+				<button class="btn-blue" onclick="exit()">重置密钥</button>
+			</div> -->
+			<!-- 二维码授权验证end -->
+		</div>
+
+		<!-- 提示框 -->
+		<div class="modal-box" id="modalBox">
+			<div class="coverBg"></div>
+			<div class="modal" id="modal">
+				<img src="./images/success.png" />
+				<p class="fz_24" id="errTips"></p>
+				<button class="fz_23" onclick="closeModal('modal')">确定</button>
+			</div>
+		</div>
+		<!-- 提示框 -->
+
+		<!-- loading -->
+		<div id='loadContent'>
+			<div class="back_cover" ></div>
+			<div class='loading' id='loading'>
+				<div class='circle circle1'>
+					<span></span>
+					<span></span>
+					<span></span>
+					<span></span>
+				</div>
+				<div class='circle circle2'>
+					<span></span>
+					<span></span>
+					<span></span>
+					<span></span>
+				</div>
+				<div class='circle circle3'>
+					<span></span>
+					<span></span>
+					<span></span>
+					<span></span>
+				</div>
+			</div>
+		</div>
+		<!-- loading -->
+	</body>
+	<script type="text/javascript" src="js/common.js"></script>
+	<script type="text/javascript" src="js/websocket.js"></script>
+	<script type="text/javascript" src="js/webSocketBase.js"></script>
+	<script type="text/javascript" src="js/entityMessage.js"></script>
+	<script type="text/javascript" src="js/eventEmitter.js"></script>
+	<script type="text/javascript" src="js/innerEventEmitter.js"></script>
+	<script type="text/javascript" src="js/errorCodeEnum.js"></script>
+	<script type="text/javascript" src="js/entityService.js"></script>
+	<script type="text/javascript" src="Include/jQuery/js/jquery.min.js" ></script>
+	<script type="text/javascript" src="js/getTerminalInfo.js"></script>
+</html>

+ 0 - 0
addin/res/ManagerDesktop/upgradeRestart.html → addin/res/ManagerDesktop/TerminalUpgradeRestart.html


+ 106 - 0
addin/res/ManagerDesktop/ThirdPartyUpgradeRestart.html

@@ -0,0 +1,106 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+	<head>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+		<title>错误页-重启应用</title>
+		<meta name="viewport" content="width=device-width,initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
+		<link rel="stylesheet" type="text/css" href="css/errType.css" />
+		<link rel="stylesheet" type="text/css" href="css/non-ie-style.css" /> 
+		<link rel="stylesheet" type="text/css" href="css/loading.css" />
+
+		<style>
+			.upgrade-restart h3{
+				margin-bottom: 40px;
+			}
+		</style>
+	</head>
+	<body class="errType">
+		<nav>
+			<div class="logo">
+				<img width="100%" src="./images/logo_cmb.png" />
+			</div>
+		</nav>
+		<div class="hareword-info upgrade-restart">
+			<h3 class="fz_44">第三方应用更新中,稍后自动重启<dot class="dot">●●●●●●</dot></h3>
+			<!-- <p id="errorInfo">
+				该设备硬件地址信息和后台记录不一致,请联系分行设备管理员扫描下方二维码。
+			</p> -->
+			<div class="result-wrap">
+				<div class="result-item">
+					<label class="fz_28">终端号</label>
+					<span class="fz_28 terminalNo"></span>
+				</div>
+				<div class="result-item">
+					<label class="fz_28">当前时间</label>
+					<span class="fz_28 currDate"></span>
+				</div>
+				<div class="result-item">
+					<label class="fz_28">终端版本</label>
+					<span class="fz_28 termVersion"></span>
+				</div>
+				<div class="result-item">
+					<label class="fz_28">准入地址</label>
+					<span class="fz_28 urlAccessAddr"></span>
+				</div>
+			</div>
+
+			<!-- 二维码授权验证start -->
+			<!-- <div class="scan-verify">
+				<iframe frameborder="no" border="0" allowtransparency="yes" allow="microphone;camera;midi;encrypted-media;"
+				  id="iframeSrc"
+					src="https://one-account-gateway.paasuat.cmbchina.cn/auth-plugin/v2/identity-authentication?clientId=6898ec10629f499187d7b31fbe9823a4&ui=eyJhdXRoVHlwZXMiOlsicXJDb2RlIl0sImhlYWRlciI6dHJ1ZSwicXJDb2RlU2l6ZSI6MTQ1fQ%253D%253D"
+					></iframe>
+				<p>完成扫码授权后</br>请重置密钥</p>
+				<button class="btn-blue" onclick="exit()">重置密钥</button>
+			</div> -->
+			<!-- 二维码授权验证end -->
+		</div>
+
+		<!-- 提示框 -->
+		<div class="modal-box" id="modalBox">
+			<div class="coverBg"></div>
+			<div class="modal" id="modal">
+				<img src="./images/success.png" />
+				<p class="fz_24" id="errTips"></p>
+				<button class="fz_23" onclick="closeModal('modal')">确定</button>
+			</div>
+		</div>
+		<!-- 提示框 -->
+
+		<!-- loading -->
+		<div id='loadContent'>
+			<div class="back_cover" ></div>
+			<div class='loading' id='loading'>
+				<div class='circle circle1'>
+					<span></span>
+					<span></span>
+					<span></span>
+					<span></span>
+				</div>
+				<div class='circle circle2'>
+					<span></span>
+					<span></span>
+					<span></span>
+					<span></span>
+				</div>
+				<div class='circle circle3'>
+					<span></span>
+					<span></span>
+					<span></span>
+					<span></span>
+				</div>
+			</div>
+		</div>
+		<!-- loading -->
+	</body>
+	<script type="text/javascript" src="js/common.js"></script>
+	<script type="text/javascript" src="js/websocket.js"></script>
+	<script type="text/javascript" src="js/webSocketBase.js"></script>
+	<script type="text/javascript" src="js/entityMessage.js"></script>
+	<script type="text/javascript" src="js/eventEmitter.js"></script>
+	<script type="text/javascript" src="js/innerEventEmitter.js"></script>
+	<script type="text/javascript" src="js/errorCodeEnum.js"></script>
+	<script type="text/javascript" src="js/entityService.js"></script>
+	<script type="text/javascript" src="Include/jQuery/js/jquery.min.js" ></script>
+	<script type="text/javascript" src="js/getTerminalInfo.js"></script>
+</html>

+ 106 - 0
addin/res/ManagerDesktop/UpgradeRollBackRestart.html

@@ -0,0 +1,106 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+	<head>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+		<title>错误页-重启应用</title>
+		<meta name="viewport" content="width=device-width,initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
+		<link rel="stylesheet" type="text/css" href="css/errType.css" />
+		<link rel="stylesheet" type="text/css" href="css/non-ie-style.css" /> 
+		<link rel="stylesheet" type="text/css" href="css/loading.css" />
+
+		<style>
+			.upgrade-restart h3{
+				margin-bottom: 40px;
+			}
+		</style>
+	</head>
+	<body class="errType">
+		<nav>
+			<div class="logo">
+				<img width="100%" src="./images/logo_cmb.png" />
+			</div>
+		</nav>
+		<div class="hareword-info upgrade-restart">
+			<h3 class="fz_44">应用更新中(升级任务),稍后自动重启<dot class="dot">●●●●●●</dot></h3>
+			<!-- <p id="errorInfo">
+				该设备硬件地址信息和后台记录不一致,请联系分行设备管理员扫描下方二维码。
+			</p> -->
+			<div class="result-wrap">
+				<div class="result-item">
+					<label class="fz_28">终端号</label>
+					<span class="fz_28 terminalNo"></span>
+				</div>
+				<div class="result-item">
+					<label class="fz_28">当前时间</label>
+					<span class="fz_28 currDate"></span>
+				</div>
+				<div class="result-item">
+					<label class="fz_28">终端版本</label>
+					<span class="fz_28 termVersion"></span>
+				</div>
+				<div class="result-item">
+					<label class="fz_28">准入地址</label>
+					<span class="fz_28 urlAccessAddr"></span>
+				</div>
+			</div>
+
+			<!-- 二维码授权验证start -->
+			<!-- <div class="scan-verify">
+				<iframe frameborder="no" border="0" allowtransparency="yes" allow="microphone;camera;midi;encrypted-media;"
+				  id="iframeSrc"
+					src="https://one-account-gateway.paasuat.cmbchina.cn/auth-plugin/v2/identity-authentication?clientId=6898ec10629f499187d7b31fbe9823a4&ui=eyJhdXRoVHlwZXMiOlsicXJDb2RlIl0sImhlYWRlciI6dHJ1ZSwicXJDb2RlU2l6ZSI6MTQ1fQ%253D%253D"
+					></iframe>
+				<p>完成扫码授权后</br>请重置密钥</p>
+				<button class="btn-blue" onclick="exit()">重置密钥</button>
+			</div> -->
+			<!-- 二维码授权验证end -->
+		</div>
+
+		<!-- 提示框 -->
+		<div class="modal-box" id="modalBox">
+			<div class="coverBg"></div>
+			<div class="modal" id="modal">
+				<img src="./images/success.png" />
+				<p class="fz_24" id="errTips"></p>
+				<button class="fz_23" onclick="closeModal('modal')">确定</button>
+			</div>
+		</div>
+		<!-- 提示框 -->
+
+		<!-- loading -->
+		<div id='loadContent'>
+			<div class="back_cover" ></div>
+			<div class='loading' id='loading'>
+				<div class='circle circle1'>
+					<span></span>
+					<span></span>
+					<span></span>
+					<span></span>
+				</div>
+				<div class='circle circle2'>
+					<span></span>
+					<span></span>
+					<span></span>
+					<span></span>
+				</div>
+				<div class='circle circle3'>
+					<span></span>
+					<span></span>
+					<span></span>
+					<span></span>
+				</div>
+			</div>
+		</div>
+		<!-- loading -->
+	</body>
+	<script type="text/javascript" src="js/common.js"></script>
+	<script type="text/javascript" src="js/websocket.js"></script>
+	<script type="text/javascript" src="js/webSocketBase.js"></script>
+	<script type="text/javascript" src="js/entityMessage.js"></script>
+	<script type="text/javascript" src="js/eventEmitter.js"></script>
+	<script type="text/javascript" src="js/innerEventEmitter.js"></script>
+	<script type="text/javascript" src="js/errorCodeEnum.js"></script>
+	<script type="text/javascript" src="js/entityService.js"></script>
+	<script type="text/javascript" src="Include/jQuery/js/jquery.min.js" ></script>
+	<script type="text/javascript" src="js/getTerminalInfo.js"></script>
+</html>