guide.js 55 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464
  1. var CONST = {
  2. DeployStep_Begin : 0,
  3. DeployStep_3rdParty_FontInstall : 1,
  4. DeployStep_3rdParty_SogouInstall :2,
  5. DeployStep_GetTerminalInfo : 3,
  6. DeployStep_AdapterConfig : 4,
  7. DeployStep_MediaConfig : 5,
  8. DeployStep_FetchCenterSettings : 6,
  9. DeployStep_AccessAuthorize : 7,
  10. DeployStep_Finished : 8
  11. };
  12. const preStepIndex = 0;
  13. const curStepIndex = 1;
  14. const nextStepIndex = 2;
  15. var DeployStepChain = {
  16. Begin : [CONST.DeployStep_Begin, CONST.DeployStep_Begin, CONST.DeployStep_3rdParty_FontInstall],
  17. FontInstall : [CONST.DeployStep_Begin, CONST.DeployStep_3rdParty_FontInstall,CONST.DeployStep_3rdParty_SogouInstall],
  18. SogouInstall : [CONST.DeployStep_3rdParty_FontInstall, CONST.DeployStep_3rdParty_SogouInstall,CONST.DeployStep_GetTerminalInfo],
  19. GetTerminalInfo : [CONST.DeployStep_3rdParty_SogouInstall, CONST.DeployStep_GetTerminalInfo,CONST.DeployStep_AdapterConfig],
  20. AdapterConfig : [CONST.DeployStep_GetTerminalInfo, CONST.DeployStep_AdapterConfig,CONST.DeployStep_MediaConfig],
  21. MediaConfig : [CONST.DeployStep_AdapterConfig, CONST.DeployStep_MediaConfig,CONST.DeployStep_FetchCenterSettings],
  22. FetchCenterSettings : [CONST.DeployStep_MediaConfig, CONST.DeployStep_FetchCenterSettings,CONST.DeployStep_AccessAuthorize],
  23. AccessAuthorize : [CONST.DeployStep_FetchCenterSettings, CONST.DeployStep_AccessAuthorize,CONST.DeployStep_Finished],
  24. Finished : [CONST.DeployStep_Finished, CONST.DeployStep_Finished,CONST.DeployStep_Finished],
  25. }
  26. var SETCTION = {
  27. BEGIN:'start',
  28. GETTERMINAL_INFO:'init_param',
  29. CENTERSETTINGS:'sync_centersetting',
  30. ACCESS_AUTHORIZE:'access_authorize',
  31. MEDIA_CONFIG:'media_config',
  32. FINSHED:'finish',
  33. };
  34. var MEDIA_TYPE = {
  35. CAMERA : 1,
  36. MICROPHONE : 2,
  37. LOUNDSPEAKER:4
  38. }
  39. var MEDIA_DETAIL_TYPE = {
  40. MediaDev_OutSpeaker:1,
  41. MediaDev_InSpeaker:2,
  42. MediaDev_OutMicrophone:3,
  43. MediaDev_InMicrophone:4
  44. }
  45. var VENDOR = ['KEBA','CW','GRG','NANTIAN','GWI','*'];
  46. var VENDOR_ZHCN = ['中钞科堡','恒银金融','广电运通','云南南天','长城信息','全部'];
  47. function DisplayVendorFriendName(abbr)
  48. {
  49. for(var n=0; n < VENDOR.length; ++n) {
  50. if(abbr === VENDOR[n]) {
  51. return VENDOR_ZHCN[n];
  52. }
  53. }
  54. return '';
  55. }
  56. var globalFinishedFlag = false;
  57. var globalInterestRootFlag = false;
  58. var globalAdapterFileNameList = [];
  59. var globalAdapterFileNameStatus = [];
  60. var globalAdapterOpenParamPort = [];
  61. var globalAdapterOpenParamBaudrate = [];
  62. var globalLastRemberAdapterName = '';
  63. var globalLastRemberAdapterConfigState = false;
  64. var globalTerminalNo = '';
  65. var globalSelectVendorType = '';
  66. var globalServerIP = '';
  67. function clearAdapterSelectedValue()
  68. {
  69. $('#gui_adapter_config_adapter').empty();
  70. $('#gui_adapter_config_adapter').attr("value", '');
  71. $('#guide_adapter_config_port_input').val('');
  72. $('#guide_adapter_config_baudrate_input').val('');
  73. }
  74. function generateAdapterSelect(devices, status, select_id) {
  75. var deviceLength = 0;
  76. if ((devices) instanceof Array) {
  77. deviceLength = devices.length;
  78. } else {
  79. deviceLength = 1
  80. }
  81. var devicesHtml = '';
  82. var selectid = select_id;
  83. $('#' + selectid).empty();
  84. for (var loop = 0; loop < deviceLength; loop++) {
  85. var cur = devices[loop];
  86. var deviceTemplateData = {
  87. loop: loop,
  88. deviceName : cur,
  89. type: selectid
  90. };
  91. var pushHtml = '';
  92. pushHtml = '<div id="{{type}}_item_{{loop}}" option="{{deviceName}}" class="select_medium hide_with_ellipsis"'
  93. if(!(status[loop] & 0x1)) {
  94. pushHtml += ' style="color:#C0C0C0;"'
  95. } else {
  96. pushHtml += ' onclick="AdapterSelectChange(\'{{deviceName}}\')"'
  97. }
  98. //root.ini 配置
  99. if((status[loop] & 0x2)) {
  100. pushHtml += '>{{deviceName}}&nbsp;(当前配置)</div>'
  101. } else {
  102. pushHtml += '>{{deviceName}}</div>'
  103. }
  104. $('#' + selectid).secureAppend(pushHtml, deviceTemplateData);
  105. }
  106. }
  107. function FulfillDevAdapterFileList(device, vendor, root_or_not, flag)
  108. {
  109. let req = new Request();
  110. req.root = root_or_not;
  111. req.adapter=device;
  112. req.vendor=vendor;
  113. req.version="";
  114. req.batch="";
  115. globalAdapterFileNameList = [];
  116. globalAdapterFileNameStatus = [];
  117. globalAdapterOpenParamPort = [];
  118. globalAdapterOpenParamBaudrate = [];
  119. RVC.DeviceControlEntityCtrl.GetVendorFileList(req, function(ret) {
  120. if(ret.errorCode === 0) {
  121. let result = JSON.parse(ret[RVC.EntityController.sigResponseUUID])
  122. if(result.result == 0) {
  123. console.log('=============================');
  124. for (var n = 0; n < result.filenames.length; n++) {
  125. console.log(result.filenames[n] + ' ' + result.status[n] + ' ' + result.port[n] + ' ' + result.baudrate[n]);
  126. globalAdapterFileNameList.push(result.filenames[n]);
  127. globalAdapterFileNameStatus.push(result.status[n]);
  128. globalAdapterOpenParamPort.push(result.port[n]);
  129. globalAdapterOpenParamBaudrate.push(result.baudrate[n]);
  130. if(globalLastRemberAdapterName !== '' && globalLastRemberAdapterName === globalAdapterFileNameList[n]) {
  131. globalLastRemberAdapterConfigState = (globalAdapterFileNameStatus[n] & 0x2);
  132. }
  133. }
  134. clearAdapterSelectedValue();
  135. generateAdapterSelect(globalAdapterFileNameList, globalAdapterFileNameStatus, 'gui_adapter_config_adapter_list');
  136. if(typeof flag !== 'undefined') {
  137. utilShowToast("已刷新");
  138. }
  139. //test
  140. if(result.filenames.length == 1 && globalInterestRootFlag && device !== '' && device != '*') {
  141. FulfillAdapterCurrentSelect(globalAdapterFileNameList[0], (globalAdapterFileNameStatus[0] & 0x2));
  142. } else if(globalLastRemberAdapterName !== '') {
  143. FulfillAdapterCurrentSelect(globalLastRemberAdapterName, globalLastRemberAdapterConfigState);
  144. }
  145. //test_end
  146. } else if(typeof flag !== 'undefined') {
  147. utilStartAlertDialog("操作失败:[" + result.result + "] " + result.msg);
  148. } else {
  149. console.error("操作失败:[" + result.result + "] " + result.msg);
  150. }
  151. } else if(typeof flag !== 'undefined') {
  152. RVC.DeviceControlEntityCtrl.commErrorCallback(ret);
  153. } else {
  154. console.error("操作失败! ErrorCode: " + ErrorCodeStringfy(ret.errorCode));
  155. }
  156. });
  157. }
  158. function LoadDeviceAdaptersWithEvent(flag)
  159. {
  160. var deviceName = $('#gui_adapter_config_device').attr('value');
  161. var vendorName = $('#gui_adapter_config_vendor').attr('value').toLowerCase();
  162. FulfillDevAdapterFileList(deviceName, vendorName, globalInterestRootFlag, flag);
  163. }
  164. function AdapterSelectChange(name)
  165. {
  166. $('#guide_adapter_config_port_input').val('');
  167. $('#guide_adapter_config_baudrate_input').val('');
  168. for(var n=0; n < globalAdapterFileNameList.length; n++) {
  169. if(globalAdapterFileNameList[n] === name) {
  170. if((globalAdapterFileNameStatus[n] & 0x2) /**root.ini 配置 */) {
  171. $('#guide_adapter_config_port_input').val('' + globalAdapterOpenParamPort[n]);
  172. $('#guide_adapter_config_baudrate_input').val('' + globalAdapterOpenParamBaudrate[n]);
  173. }
  174. setSaveBtnStatus(!(globalAdapterFileNameStatus[n] & 0x2));
  175. break;
  176. }
  177. }
  178. }
  179. function FulfillAdapterCurrentSelect(value, configed)
  180. {
  181. if(value === '') {
  182. clearAdapterSelectedValue();
  183. } else {
  184. if(configed) {
  185. $('#gui_adapter_config_adapter').html(value + '&nbsp;(当前配置)');
  186. } else {
  187. $('#gui_adapter_config_adapter').html(value);
  188. }
  189. $('#gui_adapter_config_adapter').attr('value', value);
  190. AdapterSelectChange(value);
  191. }
  192. }
  193. //正式环境该参数不可选
  194. function VendorSelectChanged(name)
  195. {
  196. var deviceName = $('#gui_adapter_config_device').attr('value');
  197. var vendorName = name.toLowerCase();
  198. FulfillDevAdapterFileList(deviceName, vendorName, globalInterestRootFlag, true);
  199. }
  200. function DeviceSelectChange(name)
  201. {
  202. var vendorName = $('#gui_adapter_config_vendor').attr('value').toLowerCase();
  203. FulfillDevAdapterFileList(name, vendorName, globalInterestRootFlag, true);
  204. }
  205. function setBtnStatus(enable, classID)
  206. {
  207. if (enable && $('#' + classID).hasClass('btn_disabled')) {
  208. $('#' + classID).attr('disabled', false);
  209. $('#' + classID).removeClass('btn_disabled');
  210. } else if(!enable && !$('#' + classID).hasClass('btn_disabled')) {
  211. $('#' + classID).attr('disabled', true);
  212. $('#' + classID).addClass('btn_disabled');
  213. }
  214. }
  215. function rebindBtnClick(classID, callback)
  216. {
  217. $('#' + classID).prop("onclick",null).off("click");;
  218. $('#' + classID).unbind('click');
  219. if(callback) {
  220. $('#' + '#' + classID).bind('click', callback);
  221. }
  222. }
  223. function setTestBtnStatus(enable) {
  224. setBtnStatus(enable, 'guide_adapter_config_test')
  225. }
  226. function setSaveBtnStatus(enable) {
  227. setBtnStatus(enable, 'guide_adapter_config_save')
  228. }
  229. function setNextBtnStatus(enable) {
  230. setBtnStatus(enable, 'guide_adapter_config_next')
  231. }
  232. function InterestRootSwitch(flag)
  233. {
  234. if ($('#gui_adapter_config_root_interest_switch').hasClass('switch_on')) {
  235. globalInterestRootFlag = true;
  236. } else {
  237. globalInterestRootFlag = false;
  238. }
  239. setSaveBtnStatus(!globalInterestRootFlag);
  240. if(typeof flag == 'undefined')
  241. LoadDeviceAdaptersWithEvent(true);
  242. else
  243. LoadDeviceAdaptersWithEvent();
  244. }
  245. $(function () {
  246. function AbortDeployConfig(finished) {
  247. RVC.HealthmanagerEntityCtrl.QuitApp(true);
  248. RVC.GuideController.hideAllPage();
  249. RVC.GuideController.hideAllRebootTipElem();
  250. $('#guide_quit_loading').show();
  251. $('#guide_reboot_page').show();
  252. }
  253. function ResetDeployConfig() {
  254. let req = new Request();
  255. req.preStep = DeployStepChain.Begin[preStepIndex];
  256. req.currStep = DeployStepChain.Begin[curStepIndex];
  257. req.nextStep = DeployStepChain.Begin[nextStepIndex];
  258. req.param1 = 0;
  259. req.param2 = 0;
  260. req.param3 = '';
  261. req.param4 = '';
  262. req.param5 = '';
  263. req.array1 = [0];
  264. req.array2 = [''];
  265. req.additional = 0;
  266. req.options = 1;//重置标识
  267. req.restartApp = true;
  268. req.restartPC = false;
  269. if(req.restartApp) {
  270. utilStartSubmitDialog("重置成功将会自动重启应用,请耐心等候...");
  271. } else {
  272. utilStartSubmitDialog();
  273. }
  274. RVC.HealthmanagerEntityCtrl.DeployTerminal(req, function(ret) {
  275. utilStopSubmitDialog();
  276. if(ret.errorCode === 0) {
  277. let result = JSON.parse(ret[RVC.EntityController.sigResponseUUID])
  278. if(result.result == 0) {
  279. if(req.restartApp || req.restartPC) {
  280. RVC.GuideController.hideAllPage();
  281. RVC.GuideController.hideAllRebootTipElem();
  282. if(req.restartApp) {
  283. $('#guide_restart_loading').show();
  284. } else if(req.reboot_pagrestartPC) {
  285. $('#guide_reboot_loading').show();
  286. }
  287. $('#guide_reboot_page').show();
  288. }
  289. } else {
  290. utilStartAlertDialog("操作失败:[" + result.result + "] " + result.additionalMsg);
  291. }
  292. } else {
  293. RVC.HealthmanagerEntityCtrl.commErrorCallback(ret);
  294. }
  295. });
  296. }
  297. function IPConnectableTest(ip)
  298. {
  299. let req = new Request();
  300. req.protocol = 1; //Ping
  301. req.ip = ip;
  302. req.port = 0;
  303. req.reserved1 = 0;
  304. req.reserved2 = '';
  305. function showErrTips(val) {
  306. setTimeout(function () {
  307. $('#text_guide_init_param_ip_tips').addClass('hide');
  308. }, 2000);
  309. $('#text_guide_init_param_ip_tips').removeClass('hide')
  310. .removeClass('guide_input_descript').addClass('guide_error').html(val);
  311. }
  312. function showSuccTips(val) {
  313. setTimeout(function () {
  314. $('#text_guide_init_param_ip_tips').addClass('hide');
  315. }, 2000);
  316. $('#text_guide_init_param_ip_tips').removeClass('hide')
  317. .removeClass('guide_error').addClass('guide_input_descript').html(val);
  318. }
  319. if(!isValidIpAddress(ip)) {
  320. showErrTips('无效IP格式');
  321. return;
  322. }
  323. RVC.DeviceControlEntityCtrl.TestConnectivity(req, function(ret) {
  324. if(ret.errorCode === 0) {
  325. let result = JSON.parse(ret[RVC.EntityController.sigResponseUUID])
  326. if(result.result == 0) {
  327. showSuccTips('可正常连接');
  328. } else {
  329. console.log(result.additionalMsg);
  330. showErrTips('连接失败:' + result.additionalMsg);
  331. }
  332. } else {
  333. let tips = ip + '测试失败:' + ErrorCodeStringfy(ret.errorCode);
  334. showErrTips(tips);
  335. }
  336. });
  337. }
  338. function GetTerminalBaseInfo(flag)
  339. {
  340. let req = new Request();
  341. req.preStep = DeployStepChain.GetTerminalInfo[curStepIndex];
  342. req.currStep = DeployStepChain.GetTerminalInfo[curStepIndex];
  343. req.nextStep = DeployStepChain.GetTerminalInfo[curStepIndex];
  344. req.param1 = 0;
  345. req.param2 = 0;
  346. req.param3 = '';
  347. req.param4 = '';
  348. req.param5 = '';
  349. req.array1 = [0];
  350. req.array2 = [''];
  351. req.options = 1; //获取缓存基本信息
  352. req.additional = 0;
  353. req.restartApp = false;
  354. req.restartPC = false;
  355. globalTerminalNo = '';
  356. globalSelectVendorType = '';
  357. globalServerIP = '';
  358. RVC.HealthmanagerEntityCtrl.DeployTerminal(req, function(ret) {
  359. if(ret.errorCode === 0) {
  360. let result = JSON.parse(ret[RVC.EntityController.sigResponseUUID])
  361. if(result.result == 0) {
  362. if(result.array2.length === 3) {
  363. globalTerminalNo = result.array2[0];
  364. globalSelectVendorType = result.array2[1];
  365. globalServerIP = result.array2[2];
  366. }
  367. } else {
  368. if(typeof type === 'undefined') {
  369. utilStartAlertDialog("操作失败:[" + result.result + "] " + result.additionalMsg);
  370. } else {
  371. utilShowToast("操作失败:[" + result.result + "] " + result.additionalMsg);
  372. }
  373. }
  374. } else {
  375. if(typeof type === 'undefined') {
  376. utilStartAlertDialog("操作失败! ErrorCode: " + ErrorCodeStringfy(ret.errorCode));
  377. } else {
  378. utilShowToast("操作失败! ErrorCode: " + ErrorCodeStringfy(ret.errorCode));
  379. }
  380. }
  381. });
  382. }
  383. function InitCenterSettingInputParam()
  384. {
  385. if(globalServerIP === '') {
  386. GetTerminalBaseInfo();
  387. }
  388. $('#guide_sync_centersetting_server_ip_content').attr('value', globalServerIP);
  389. }
  390. function InitCurrentVendorSelect()
  391. {
  392. if(globalSelectVendorType === '') {
  393. GetTerminalBaseInfo();
  394. }
  395. const vendorZhCnName = DisplayVendorFriendName(globalSelectVendorType);
  396. $('#gui_adapter_config_vendor').attr('value', globalSelectVendorType);
  397. $('#gui_adapter_config_vendor').html(vendorZhCnName);
  398. }
  399. function InitTemrinalAbout(server_ip, new_terminalno, vendorName)
  400. {
  401. let req = new Request();
  402. req.preStep = DeployStepChain.GetTerminalInfo[preStepIndex];
  403. req.currStep = DeployStepChain.GetTerminalInfo[curStepIndex];
  404. req.nextStep = DeployStepChain.GetTerminalInfo[nextStepIndex];
  405. req.param1 = 0;
  406. req.param2 = 0;
  407. req.param3 = server_ip;
  408. req.param4 = new_terminalno + '|' + vendorName;
  409. req.param5 = '';
  410. req.array1 = [0];
  411. req.array2 = [''];
  412. req.options = 0;
  413. req.additional = 1; //重命名root.ini
  414. req.restartApp = true;
  415. req.restartPC = false;
  416. req.timeout = 60000; //网络连接,延长时间,让实体自身反馈报错
  417. if(req.restartApp) {
  418. utilStartSubmitDialog("正在请求,处理成功将会自动执行应用重启,请耐心等候...");
  419. } else {
  420. utilStartSubmitDialog();
  421. }
  422. RVC.HealthmanagerEntityCtrl.DeployTerminal(req, function(ret) {
  423. utilStopSubmitDialog();
  424. if(ret.errorCode === 0) {
  425. let result = JSON.parse(ret[RVC.EntityController.sigResponseUUID])
  426. if(result.result == 0) {
  427. if(req.restartApp || req.restartPC) {
  428. RVC.GuideController.hideAllPage();
  429. RVC.GuideController.hideAllRebootTipElem();
  430. if(req.restartApp) {
  431. $('#guide_restart_loading').show();
  432. } else if(req.restartPC) {
  433. $('#guide_reboot_loading').show();
  434. }
  435. $('#guide_reboot_page').show();
  436. } else {
  437. utilStartAlertDialog("信息录入成功,即将进入下一步", function() {
  438. RVC.GuideController.gotoPage(result.nextStep);
  439. });
  440. }
  441. } else {
  442. utilStartAlertDialog("操作失败:[" + result.result + "] " + result.additionalMsg);
  443. }
  444. } else {
  445. RVC.HealthmanagerEntityCtrl.commErrorCallback(ret);
  446. }
  447. });
  448. }
  449. function DownloadCenterSetting(ip, port)
  450. {
  451. let req = new Request();
  452. req.preStep = DeployStepChain.FetchCenterSettings[preStepIndex];
  453. req.currStep = DeployStepChain.FetchCenterSettings[curStepIndex];
  454. req.nextStep = DeployStepChain.FetchCenterSettings[nextStepIndex];
  455. req.param1 = parseInt(port, 10);
  456. req.param2 = 0;
  457. req.param3 = ip;
  458. req.options = 0;
  459. req.additional = 0;
  460. req.restartApp = false;
  461. req.restartPC = false;
  462. req.param4 = '';
  463. req.param5 = '';
  464. req.array1 = [0];
  465. req.array2 = [''];
  466. utilStartSubmitDialog();
  467. RVC.HealthmanagerEntityCtrl.DeployTerminal(req, function(ret) {
  468. utilStopSubmitDialog();
  469. if(ret.errorCode === 0) {
  470. let result = JSON.parse(ret[RVC.EntityController.sigResponseUUID])
  471. if(result.result == 0) {
  472. utilStartAlertDialog("操作成功,即将进入下一步", function() {
  473. RVC.GuideController.gotoPage(result.nextStep);
  474. });
  475. } else {
  476. utilStartAlertDialog("操作失败:[" + result.result + "] " + result.additionalMsg);
  477. }
  478. } else {
  479. RVC.HealthmanagerEntityCtrl.commErrorCallback(ret);
  480. }
  481. });
  482. }
  483. function InitAccessAuthParam()
  484. {
  485. let req = new Request();
  486. req.entityName = 'AccessAuthorization'
  487. req.key = 'Server'
  488. $('#guide_access_authorize_server_ip_content').val('');
  489. $('#guide_access_authorize_port_content').val('');
  490. RVC.DeviceControlEntityCtrl.ReadCenterConfigStr(req, function(ret){
  491. if(ret.errorCode === 0) {
  492. console.log('fetch auth addr from centersettins succ.');
  493. let result = JSON.parse(ret[RVC.EntityController.sigResponseUUID])
  494. const addr = result.value.split(' ')[0]
  495. const port = result.value.split(' ')[1]
  496. if(checkIpv4(addr) && check_port(port)) {
  497. $('#guide_access_authorize_server_ip_content').val(addr);
  498. $('#guide_access_authorize_port_content').val(port);
  499. var serveraddr = addr + ':' + port;
  500. console.log(serveraddr);
  501. } else {
  502. utilShowToast("获取准入配置信息有误,请检查集中配置文件!");
  503. }
  504. } else {
  505. utilShowToast("获取准入配置信息失败! ErrorCode: " + ErrorCodeStringfy(ret.errorCode));
  506. }
  507. });
  508. }
  509. function AuthorizeTerminal(ip, port, username, password)
  510. {
  511. let req = new Request();
  512. req.preStep = DeployStepChain.AccessAuthorize[preStepIndex];
  513. req.currStep = DeployStepChain.AccessAuthorize[curStepIndex];
  514. req.nextStep = DeployStepChain.AccessAuthorize[nextStepIndex];
  515. req.param1 = parseInt(port, 10);
  516. req.param2 = 0;
  517. req.param3 = ip;
  518. req.param4 = '';
  519. req.options = 0;
  520. req.additional = 0;
  521. req.restartApp = false;
  522. req.restartPC = false;
  523. req.param5 = '';
  524. req.array1 = [0,0];
  525. req.array2 = [username, password];
  526. req.timeout = 65000;
  527. utilStartSubmitDialog();
  528. RVC.HealthmanagerEntityCtrl.DeployTerminal(req, function(ret) {
  529. utilStopSubmitDialog();
  530. if(ret.errorCode === 0) {
  531. let result = JSON.parse(ret[RVC.EntityController.sigResponseUUID])
  532. if(result.result == 0) {
  533. utilStartAlertDialog("操作成功,即将进入下一步", function() {
  534. RVC.GuideController.gotoPage(result.nextStep);
  535. });
  536. } else {
  537. utilStartAlertDialog("操作失败:[" + result.result + "] " + result.additionalMsg);
  538. }
  539. } else {
  540. RVC.HealthmanagerEntityCtrl.commErrorCallback(ret);
  541. }
  542. });
  543. }
  544. function generateMediaDeviceSelect(devices, select_id) {
  545. var deviceLength = 0;
  546. if ((devices) instanceof Array) {
  547. deviceLength = devices.length;
  548. } else {
  549. deviceLength = 1
  550. }
  551. var devicesHtml = '';
  552. var selectid = select_id;
  553. $('#' + selectid).empty();
  554. for (var loop = 0; loop < deviceLength; loop++) {
  555. var cur = devices[loop];
  556. var deviceTemplateData = {
  557. loop: loop,
  558. deviceName : cur,
  559. type: selectid
  560. };
  561. var pushHtml = '';
  562. pushHtml = '<div id="{{type}}_item_{{loop}}" option="{{deviceName}}" class="select_medium hide_with_ellipsis">'
  563. pushHtml += '{{deviceName}}</div>'
  564. $('#' + selectid).secureAppend(pushHtml, deviceTemplateData);
  565. }
  566. }
  567. function FulfillMediaDeviceList(flag)
  568. {
  569. let req = new Request();
  570. req.type = 6; //1,2,4不需要摄像头配置
  571. req.interest = 0;
  572. req.reserverd1 = 0;
  573. req.reserverd2 = '';
  574. req.reserverd2 = '';
  575. RVC.CameraConfigEntity.GetMediaAvailableList(req, function(ret) {
  576. if(ret.errorCode === 0) {
  577. let result = JSON.parse(ret[RVC.EntityController.sigResponseUUID])
  578. console.log('device count: ' + result.result);
  579. var microphones = [];
  580. var loundspeakers = [];
  581. var cameras = [];
  582. for (var n = 0; n < result.AvailableList.length; n++) {
  583. console.log(result.AvailableList[n] + ' ' + result.ListItemType[n] + ' ' + result.ListItemStatus[n]);
  584. if(result.ListItemType[n] == MEDIA_TYPE.MICROPHONE) {
  585. microphones.push(result.AvailableList[n]);
  586. } else if(result.ListItemType[n] == MEDIA_TYPE.LOUNDSPEAKER) {
  587. loundspeakers.push(result.AvailableList[n]);
  588. } else if(result.ListItemType[n] == MEDIA_TYPE.CAMERA) {
  589. cameras.push(result.AvailableList[n]);
  590. }
  591. }
  592. generateMediaDeviceSelect(loundspeakers, 'gui_media_config_audio_output_outfree_list');
  593. generateMediaDeviceSelect(loundspeakers, 'gui_media_config_audio_output_infree_list');
  594. generateMediaDeviceSelect(microphones, 'gui_media_config_audio_input_outfree_list');
  595. generateMediaDeviceSelect(microphones, 'gui_media_config_audio_input_infree_list');
  596. if(typeof flag !== 'undefined') {
  597. $('#gui_media_config_audio_input_infree').empty();
  598. $('#gui_media_config_audio_input_infree').attr('value', '');
  599. $('#gui_media_config_audio_input_outfree').empty();
  600. $('#gui_media_config_audio_input_outfree').attr('value', '');
  601. $('#gui_media_config_audio_output_infree').empty();
  602. $('#gui_media_config_audio_output_infree').attr('value', '');
  603. $('#gui_media_config_audio_output_outfree').empty();
  604. $('#gui_media_config_audio_output_outfree').attr('value', '');
  605. utilShowToast("已刷新");
  606. }
  607. } else if(typeof flag !== 'undefined'){
  608. RVC.CameraConfigEntity.commErrorCallback(ret);
  609. }
  610. });
  611. }
  612. function SaveMediaDeviceConfig()
  613. {
  614. //话筒扬声器
  615. var output_infree = $('#gui_media_config_audio_output_infree').attr('value');
  616. //外部扬声器
  617. var output_outfree = $('#gui_media_config_audio_output_outfree').attr('value');
  618. //话筒麦克风
  619. var input_infree = $('#gui_media_config_audio_input_infree').attr('value');
  620. //外部麦克风
  621. var input_outfree = $('#gui_media_config_audio_input_outfree').attr('value');
  622. if(output_outfree === '') {
  623. utilStartAlertDialog('请选择外部扬声器');
  624. return;
  625. }
  626. if(output_infree === '') {
  627. utilStartAlertDialog('请选择话筒扬声器');
  628. return;
  629. }
  630. if(input_outfree === '') {
  631. utilStartAlertDialog('请选择外部麦克风');
  632. return;
  633. }
  634. if(input_infree === '') {
  635. utilStartAlertDialog('请选择话筒麦克风');
  636. return;
  637. }
  638. // if(output_infree == output_outfree) {
  639. // utilStartAlertDialog('扬声器选取冲突,请重新选择');
  640. // return;
  641. // }
  642. // if(input_infree == input_outfree) {
  643. // utilStartAlertDialog('麦克风选取冲突,请重新选择');
  644. // return;
  645. // }
  646. let req = new Request();
  647. req.preStep = DeployStepChain.MediaConfig[preStepIndex];
  648. req.currStep = DeployStepChain.MediaConfig[curStepIndex];
  649. req.nextStep = DeployStepChain.MediaConfig[nextStepIndex];
  650. req.additional = 0;
  651. req.options = 1; //0:保存在临时文件,1:保存在root.ini
  652. req.restartApp = false;
  653. req.restartPC = false;
  654. req.param1 = 0;
  655. req.param2 = 0;
  656. req.param3 = '';
  657. req.param4 = '';
  658. req.param5 = '';
  659. req.array1 = [MEDIA_DETAIL_TYPE.MediaDev_OutSpeaker, MEDIA_DETAIL_TYPE.MediaDev_InSpeaker, MEDIA_DETAIL_TYPE.MediaDev_OutMicrophone, MEDIA_DETAIL_TYPE.MediaDev_InMicrophone];
  660. req.array2 = [output_outfree, output_infree, input_outfree, input_infree];
  661. utilStartSubmitDialog();
  662. RVC.HealthmanagerEntityCtrl.DeployTerminal(req, function(ret) {
  663. utilStopSubmitDialog();
  664. if(ret.errorCode === 0) {
  665. let result = JSON.parse(ret[RVC.EntityController.sigResponseUUID])
  666. if(result.result == 0) {
  667. if(req.restartApp || req.restartPC) {
  668. RVC.GuideController.hideAllPage();
  669. RVC.GuideController.hideAllRebootTipElem();
  670. if(req.restartApp) {
  671. $('#guide_restart_loading').show();
  672. } else if(req.restartPC) {
  673. $('#guide_reboot_loading').show();
  674. }
  675. $('#guide_reboot_page').show();
  676. } else {
  677. utilStartAlertDialog("操作成功,即将进入下一步", function() {
  678. RVC.GuideController.gotoPage(result.nextStep);
  679. });
  680. }
  681. } else {
  682. utilStartAlertDialog("操作失败:[" + result.result + "] " + result.additionalMsg);
  683. }
  684. } else {
  685. RVC.HealthmanagerEntityCtrl.commErrorCallback(ret);
  686. }
  687. });
  688. }
  689. function CheckDevAdapterAvailable(adapter, port, baudrate)
  690. {
  691. let req = new Request();
  692. req.filename= adapter;
  693. req.type = 0;
  694. req.options = 0;
  695. req.port = parseInt(port, 10);
  696. req.baudrate = parseInt(baudrate, 10);
  697. req.param1 = 0;
  698. req.param2 = 0;
  699. req.param3 = "";
  700. req.param4 = "";
  701. console.log("check adapter: " + adapter + " " + port + " " + baudrate);
  702. utilStartSubmitDialog();
  703. RVC.DeviceControlEntityCtrl.TestAdapterFileAvailable(req, function(ret) {
  704. utilStopSubmitDialog();
  705. if(ret.errorCode === 0) {
  706. let result = JSON.parse(ret[RVC.EntityController.sigResponseUUID])
  707. if(result.status == 0) {
  708. utilStartAlertDialog("适配器文件成功加载;尝试打开设备成功!");
  709. } else {
  710. utilStartAlertDialog("验证失败:[" + result.status + "] " + result.msg);
  711. }
  712. } else {
  713. RVC.DeviceControlEntityCtrl.commErrorCallback(ret);
  714. }
  715. });
  716. }
  717. function SaveDevAdapterInfo(adapter, port, baudrate)
  718. {
  719. let req = new Request();
  720. req.preStep = DeployStepChain.AdapterConfig[curStepIndex];
  721. req.currStep = DeployStepChain.AdapterConfig[curStepIndex];
  722. req.nextStep = DeployStepChain.AdapterConfig[curStepIndex];
  723. req.param1 = parseInt(port, 10);
  724. req.param2 = parseInt(baudrate, 10);
  725. req.param3 = adapter;
  726. req.param4 = '';
  727. req.param5 = '';
  728. req.array1 = [0];
  729. req.array2 = [''];
  730. req.options = 0x2; //0x1:更新到临时的root.ini; 0x2:更新到root.ini
  731. req.additional = 0;
  732. req.restartApp = false;
  733. req.restartPC = false;
  734. setSaveBtnStatus(false);
  735. RVC.HealthmanagerEntityCtrl.DeployTerminal(req, function(ret) {
  736. setSaveBtnStatus(true);
  737. if(ret.errorCode === 0) {
  738. let result = JSON.parse(ret[RVC.EntityController.sigResponseUUID])
  739. if(result.result == 0) {
  740. globalLastRemberAdapterName = adapter;
  741. utilShowToast('已保存,将重新刷新', 1000, function() {
  742. LoadDeviceAdaptersWithEvent(true);
  743. });
  744. } else {
  745. utilStartAlertDialog("保存失败:[" + result.result + "] " + result.additionalMsg);
  746. }
  747. } else {
  748. RVC.HealthmanagerEntityCtrl.commErrorCallback(ret);
  749. }
  750. });
  751. }
  752. /**不使用,转到实体里头处理 */
  753. function StartBasicHardwareEntity(entityName, sucCallback)
  754. {
  755. let req = new Request();
  756. req.option = 1; //启动实体
  757. req.additional = 0;
  758. req.devId = 0;
  759. req.entityName = entityName;
  760. req.force = true;
  761. req.param = '';
  762. req.reserved1 = 0;
  763. req.reserved2 = '';
  764. req.timeout = 60000;
  765. RVC.HealthmanagerEntityCtrl.ControlEntityLife(req, function(ret) {
  766. if(ret.errorCode === 0) {
  767. let result = JSON.parse(ret[RVC.EntityController.sigResponseUUID])
  768. if(result.result == 0) {
  769. if(sucCallback) {
  770. sucCallback();
  771. }
  772. } else {
  773. utilShowToast("启动模块" + entityName + "失败:[" + result.result + "] " + result.msg);
  774. }
  775. } else {
  776. RVC.HealthmanagerEntityCtrl.commErrorCallback(ret);
  777. }
  778. });
  779. }
  780. /**
  781. * 结束基本硬件配置后的操作
  782. */
  783. function FinshedDevAdapterConfig()
  784. {
  785. let req = new Request();
  786. req.preStep = DeployStepChain.AdapterConfig[preStepIndex];
  787. req.currStep = DeployStepChain.AdapterConfig[curStepIndex];
  788. req.nextStep = DeployStepChain.AdapterConfig[nextStepIndex];
  789. req.param1 = 1; //Start
  790. req.param2 = 1; //Force
  791. req.param3 = 'PinPad';
  792. req.param4 = ''; //Start param
  793. req.param5 = '';
  794. req.array1 = [0];
  795. req.array2 = [''];
  796. req.options = 0x4; //ControlEntity
  797. req.additional = 0;
  798. req.restartApp = false;
  799. req.restartPC = false;
  800. utilStartSubmitDialog();
  801. RVC.HealthmanagerEntityCtrl.DeployTerminal(req, function(ret) {
  802. utilStopSubmitDialog();
  803. if(ret.errorCode === 0) {
  804. let result = JSON.parse(ret[RVC.EntityController.sigResponseUUID])
  805. if(result.result == 0) {
  806. utilStartAlertDialog("操作成功,即将进入下一步", function() {
  807. RVC.GuideController.gotoPage(result.nextStep);
  808. });
  809. } else {
  810. utilStartAlertDialog("操作失败:[" + result.result + "] " + result.additionalMsg);
  811. }
  812. } else {
  813. RVC.HealthmanagerEntityCtrl.commErrorCallback(ret);
  814. }
  815. });
  816. }
  817. function FinshedDeploy()
  818. {
  819. //RVC.HealthmanagerEntityCtrl.ControlTerminalLifeNo(1);
  820. let req = new Request();
  821. req.preStep = DeployStepChain.Finished[preStepIndex];
  822. req.currStep = DeployStepChain.Finished[curStepIndex];
  823. req.nextStep = DeployStepChain.Finished[nextStepIndex];
  824. req.param1 = 0;
  825. req.param2 = 0;
  826. req.param3 = '';
  827. req.param4 = '';
  828. req.param5 = '';
  829. req.array1 = [0];
  830. req.array2 = [''];
  831. req.additional = 0;
  832. req.options = 0;
  833. req.restartApp = true;
  834. req.restartPC = false;
  835. if(req.restartApp) {
  836. utilStartSubmitDialog("请求重启应用,请稍后...");
  837. } else {
  838. utilStartSubmitDialog();
  839. }
  840. RVC.HealthmanagerEntityCtrl.DeployTerminal(req, function(ret) {
  841. utilStopSubmitDialog();
  842. if(ret.errorCode === 0) {
  843. let result = JSON.parse(ret[RVC.EntityController.sigResponseUUID])
  844. if(result.result == 0) {
  845. if(req.restartApp || req.restartPC) {
  846. RVC.GuideController.hideAllPage();
  847. RVC.GuideController.hideAllRebootTipElem();
  848. if(req.restartApp) {
  849. $('#guide_restart_loading').show();
  850. } else if(req.restartPC) {
  851. $('#guide_reboot_loading').show();
  852. }
  853. $('#guide_reboot_page').show();
  854. }
  855. } else {
  856. utilStartAlertDialog("操作失败:[" + result.result + "] " + result.additionalMsg);
  857. }
  858. } else {
  859. RVC.HealthmanagerEntityCtrl.commErrorCallback(ret);
  860. }
  861. });
  862. }
  863. function SogouInstallStateSwitch(installState)
  864. {
  865. if(installState === 0) {
  866. $('#guide_sogou_installed_div').hide();
  867. $('#guide_sogou_noinstall_div').show();
  868. $('#guide_sogou_install_next').hide();
  869. $('#guide_sogou_install_start').show();
  870. } else if(installState === 1) {
  871. $('#guide_sogou_noinstall_div').hide();
  872. $('#guide_sogou_installed_div').show();
  873. $('#guide_sogou_install_start').hide();
  874. $('#guide_sogou_install_next').show();
  875. } else if(installState === 2) {
  876. $('#guide_sogou_noinstall_div').hide();
  877. $('#guide_sogou_installed_div').hide();
  878. $('#guide_sogou_install_start').hide();
  879. $('#guide_sogou_install_next').show();
  880. $('#guide_sogou_install_finished_div').show();
  881. }
  882. }
  883. function InstallSpecifiesFont()
  884. {
  885. let req = new Request();
  886. req.preStep = DeployStepChain.FontInstall[preStepIndex];
  887. req.currStep = DeployStepChain.FontInstall[curStepIndex];
  888. req.nextStep = DeployStepChain.FontInstall[nextStepIndex];
  889. req.param1 = 0;
  890. req.param2 = 0;
  891. req.param3 = '';
  892. req.param4 = '';
  893. req.param5 = '';
  894. req.array1 = [0];
  895. req.array2 = [''];
  896. req.options = 0;
  897. req.additional = 0;
  898. req.restartApp = false;
  899. req.restartPC = false;
  900. utilStartSubmitDialog();
  901. RVC.HealthmanagerEntityCtrl.DeployTerminal(req, function(ret) {
  902. utilStopSubmitDialog();
  903. if(ret.errorCode === 0) {
  904. let result = JSON.parse(ret[RVC.EntityController.sigResponseUUID])
  905. if(result.result == 0) {
  906. var tip = '安装成功!强烈建议将当前页面拍照临存以便后续比对!';
  907. utilStartCommonDialog(tip, 3000, function() {
  908. //utilStartAlertDialog(tip, function() {
  909. $('#guide_font_confirm_install').text('请后续确认效果');
  910. $('#guide_font_confirm_install').addClass('btn_disabled');
  911. rebindBtnClick('guide_font_confirm_install');
  912. //$('#guide_font_confirm_install').prop("onclick",null).off("click");;
  913. //$('#guide_font_confirm_install').unbind('click');
  914. $('#guide_font_confirmed_div').empty();
  915. var content = '<div class="pull-left text-left" id="guide_font_confirmed_content"\
  916. style="font-family:\'HYQiHei 55S\',\'HYQiHei-55S\',sans-serif;width:540px;padding-top:2px;font-size:60px;border:1px solid #00F;padding: 25px 0px 25px 30px;">\
  917. 我是,;测试字体!1234\
  918. </div>';
  919. $('#guide_font_confirmed_div').html(content);
  920. $('#guide_font_confirm_next').text('下一步');
  921. });
  922. } else {
  923. utilStartAlertDialog("安装失败:[" + result.result + "] " + result.additionalMsg);
  924. }
  925. } else {
  926. RVC.HealthmanagerEntityCtrl.commErrorCallback(ret);
  927. }
  928. });
  929. }
  930. function InstallSogouInput()
  931. {
  932. let req = new Request();
  933. req.preStep = DeployStepChain.SogouInstall[preStepIndex];
  934. req.currStep = DeployStepChain.SogouInstall[curStepIndex];
  935. req.nextStep = DeployStepChain.SogouInstall[nextStepIndex];
  936. req.param1 = 0;
  937. req.param2 = 0;
  938. req.param3 = '';
  939. req.param4 = '';
  940. req.param5 = '';
  941. req.array1 = [0];
  942. req.array2 = [''];
  943. req.options = 2; //安装搜狗输入法
  944. req.additional = 0;
  945. req.restartApp = false;
  946. req.restartPC = false;
  947. utilStartSubmitDialog();
  948. RVC.HealthmanagerEntityCtrl.DeployTerminal(req, function(ret) {
  949. utilStopSubmitDialog();
  950. if(ret.errorCode === 0) {
  951. let result = JSON.parse(ret[RVC.EntityController.sigResponseUUID])
  952. if(result.result == 0) {
  953. SogouInstallStateSwitch(2);
  954. var tip = '安装成功!';
  955. if(result.array2.length === 3) {
  956. tip += '<br><br>版本:<strong>' + result.array2[0] + '</strong>';
  957. tip += '<br>安装时间:<strong>' + result.array2[2] + '</strong>';
  958. }
  959. $('#guide_sogou_install_finished_content').html(tip);
  960. } else {
  961. utilStartAlertDialog("安装失败:[" + result.result + "] " + result.additionalMsg);
  962. }
  963. } else {
  964. RVC.HealthmanagerEntityCtrl.commErrorCallback(ret);
  965. }
  966. });
  967. }
  968. function DisplaySogouInstallState()
  969. {
  970. let req = new Request();
  971. req.preStep = DeployStepChain.SogouInstall[curStepIndex];
  972. req.currStep = DeployStepChain.SogouInstall[curStepIndex];
  973. req.nextStep = DeployStepChain.SogouInstall[curStepIndex];
  974. req.param1 = 0;
  975. req.param2 = 0;
  976. req.param3 = '';
  977. req.param4 = '';
  978. req.param5 = '';
  979. req.array1 = [0];
  980. req.array2 = [''];
  981. req.options = 1; //检测输入法的安装状态
  982. req.additional = 0;
  983. req.restartApp = false;
  984. req.restartPC = false;
  985. RVC.HealthmanagerEntityCtrl.DeployTerminal(req, function(ret) {
  986. if(ret.errorCode === 0) {
  987. let result = JSON.parse(ret[RVC.EntityController.sigResponseUUID])
  988. if(result.result == 0) {
  989. if(result.param1 === 1) {
  990. SogouInstallStateSwitch(1);
  991. var tip = '已检测到输入法!';
  992. if(result.array2.length === 3) {
  993. tip += '<br><br>版本:<strong>' + result.array2[0] + '</strong>';
  994. tip += '<br>安装时间:<strong>' + result.array2[2] + '</strong>';
  995. }
  996. $('#guide_sogou_installed_content').html(tip);
  997. console.log(tip);
  998. } else {
  999. SogouInstallStateSwitch(0);
  1000. }
  1001. } else {
  1002. utilStartAlertDialog("查询失败:[" + result.result + "] " + result.additionalMsg);
  1003. }
  1004. } else {
  1005. RVC.HealthmanagerEntityCtrl.commErrorCallback(ret);
  1006. }
  1007. });
  1008. }
  1009. RVC.GuideController = RVC.Object.extend({
  1010. hideAllPage: function () {
  1011. $('#guide_start_page').hide();
  1012. $('#guide_font_confirm_page').hide();
  1013. $('#guide_sogou_install_page').hide();
  1014. $('#guide_init_param_page').hide();
  1015. $('#guide_adapter_config_page').hide();
  1016. $('#guide_media_config_page').hide();
  1017. $('#guide_sync_centersetting_page').hide();
  1018. $('#guide_access_authorize_page').hide();
  1019. $('#guide_finish_page').hide();
  1020. $('#guide_reboot_page').hide();
  1021. },
  1022. hideAllRebootTipElem: function() {
  1023. $('#reboot_operate').hide();
  1024. $('#guide_rebootinfo').hide();
  1025. $('#guide_rebootinfo_need_restart').hide();
  1026. $('#guide_rebootinfo_need_reboot').hide();
  1027. $('#guide_reboot_application_button').hide();
  1028. $('#guide_reboot_device_button').hide();
  1029. $('#guide_finished_button').hide();
  1030. $('#guide_finish_device_button').hide();
  1031. $('#guide_save_loading').hide();
  1032. $('#guide_reboot_loading').hide();
  1033. $('#guide_restart_loading').hide();
  1034. },
  1035. resizeWindow: function () {
  1036. var winHei = $(window).height();
  1037. var popHeight = 480;
  1038. var adjustHeight = 0;
  1039. var blueBackgroundHeight = 0;
  1040. if (winHei < 860) {
  1041. winHei = 860;
  1042. }
  1043. blueBackgroundHeight = winHei - $('.headcontainer').height() - $('#page_footer').height();
  1044. $('#guide_height').height(blueBackgroundHeight);
  1045. adjustHeight = (blueBackgroundHeight - popHeight) * 0.5;
  1046. $('#guide_start_page').css('padding-top', (adjustHeight + 100) + 'px');
  1047. var domWidth = $('body').width();
  1048. var winWidth = $('window').width();
  1049. if (domWidth > winWidth) {
  1050. setTimeout(function () {
  1051. $('body').scrollTop($('.headcontainer').height() + adjustHeight);
  1052. $('body').scrollLeft(($('body').width() - $(window).width()) / 2);
  1053. }, 1000)
  1054. }
  1055. $('#guide_init_param_page').css('padding-top', adjustHeight + 'px');
  1056. },
  1057. beginInstall: function() {
  1058. this.gotoPage(CONST.DeployStep_3rdParty_FontInstall);
  1059. },
  1060. getPage: function(step) {
  1061. var select_page = '';
  1062. switch(step) {
  1063. case CONST.DeployStep_Begin:
  1064. select_page = 'guide_start_page';
  1065. break;
  1066. case CONST.DeployStep_GetTerminalInfo :
  1067. select_page = 'guide_init_param_page';
  1068. break;
  1069. case CONST.DeployStep_FetchCenterSettings:
  1070. select_page = 'guide_sync_centersetting_page';
  1071. break;
  1072. case CONST.DeployStep_AccessAuthorize :
  1073. select_page = 'guide_access_authorize_page';
  1074. break;
  1075. case CONST.DeployStep_MediaConfig :
  1076. select_page = 'guide_media_config_page';
  1077. break;
  1078. case CONST.DeployStep_AdapterConfig :
  1079. select_page = 'guide_adapter_config_page';
  1080. break;
  1081. case CONST.DeployStep_Finished :
  1082. select_page = 'guide_finish_page';
  1083. break
  1084. case CONST.DeployStep_3rdParty_SogouInstall:
  1085. select_page = 'guide_sogou_install_page';
  1086. break;
  1087. case CONST.DeployStep_3rdParty_FontInstall:
  1088. select_page = 'guide_font_confirm_page';
  1089. break;
  1090. default:
  1091. break;
  1092. }
  1093. return select_page;
  1094. },
  1095. checkPageAvailable: function(step) {
  1096. const select_page = this.getPage(step);
  1097. if(select_page !== '') {
  1098. return true;
  1099. } else {
  1100. return false;
  1101. }
  1102. },
  1103. preLoadPage: function(step) {
  1104. this.hideAllPage();
  1105. switch(step) {
  1106. case CONST.DeployStep_MediaConfig:
  1107. FulfillMediaDeviceList();
  1108. break;
  1109. case CONST.DeployStep_AdapterConfig:
  1110. InitCurrentVendorSelect();
  1111. break;
  1112. case CONST.DeployStep_FetchCenterSettings:
  1113. InitCenterSettingInputParam();
  1114. break;
  1115. case CONST.DeployStep_3rdParty_SogouInstall:
  1116. DisplaySogouInstallState();
  1117. break;
  1118. default:
  1119. break;
  1120. }
  1121. },
  1122. postLoadPage: function(step) {
  1123. switch(step) {
  1124. case CONST.DeployStep_Finished:
  1125. globalFinishedFlag = true;
  1126. break;
  1127. case CONST.DeployStep_AdapterConfig:
  1128. InterestRootSwitch(true);
  1129. break;
  1130. case CONST.DeployStep_AccessAuthorize:
  1131. InitAccessAuthParam();
  1132. break;
  1133. default:
  1134. break;
  1135. }
  1136. },
  1137. gotoPage: function(nextStep) {
  1138. var select_page = this.getPage(nextStep);
  1139. if(select_page !== '') {
  1140. this.preLoadPage(nextStep);
  1141. $('#' + select_page).show();
  1142. this.postLoadPage(nextStep);
  1143. } else {
  1144. utilShowToast('不支持步骤!无法识别:' + nextStep, 5000);
  1145. }
  1146. },
  1147. sectOverPass: function() {
  1148. },
  1149. sectNext: function() {
  1150. },
  1151. setNavigaBtnAble: function(enable) {
  1152. }
  1153. });
  1154. $(document).on('click', '#guide_init_param_ip_check #ip_connect_check', function(){
  1155. var ip = $('#guide_server_ip').val();
  1156. console.log('ip: ' + ip);
  1157. IPConnectableTest(ip);
  1158. });
  1159. $(document).on('click', '#guide_init_param_next', function() {
  1160. const ip = $('#guide_server_ip').val();
  1161. const terminalno = $('#guide_init_param_terminalno').val();
  1162. if(!isValidIpAddress(ip)) {
  1163. utilStartAlertDialog("无效IP格式");
  1164. return;
  1165. }
  1166. if(!IsDigital(terminalno)) {
  1167. utilStartAlertDialog("无效终端号格式");
  1168. return;
  1169. }
  1170. const vendorType = $('#gui_init_param_vendor').attr('value');
  1171. if(vendorType === '' || vendorType === 'None') {
  1172. utilStartAlertDialog("请选择设备厂商");
  1173. return;
  1174. }
  1175. utilStartConfirmDialog("基本信息录入后将不可撤销,如需修改需重置后再配置,请确认是否提交?", function() {
  1176. InitTemrinalAbout(ip, terminalno, vendorType);
  1177. });
  1178. });
  1179. $(document).on('click', '#guide_adapter_config_test', function() {
  1180. var adapterName = $('#gui_adapter_config_adapter').attr('value');
  1181. var paramPort = $('#guide_adapter_config_port_input').val();
  1182. var paramBaudrate = $('#guide_adapter_config_baudrate_input').val();
  1183. CheckDevAdapterAvailable(adapterName, paramPort, paramBaudrate);
  1184. });
  1185. $(document).on('click', '#guide_adapter_config_save', function() {
  1186. var adapterName = $('#gui_adapter_config_adapter').attr('value');
  1187. var paramPort = $('#guide_adapter_config_port_input').val();
  1188. var paramBaudrate = $('#guide_adapter_config_baudrate_input').val();
  1189. SaveDevAdapterInfo(adapterName, paramPort, paramBaudrate);
  1190. });
  1191. $(document).on('click', '#guide_adapter_config_next', function() {
  1192. FinshedDevAdapterConfig();
  1193. });
  1194. $(document).on('click', '#guide_sync_centersetting_next', function() {
  1195. const ip = $('#guide_sync_centersetting_server_ip_content').val();
  1196. const port = $('#guide_sync_centersetting_port_content').val();
  1197. if(!isValidIpAddress(ip)) {
  1198. utilStartAlertDialog("无效IP格式");
  1199. return;
  1200. }
  1201. if(!check_port(port)) {
  1202. utilStartAlertDialog("无效端口号");
  1203. return;
  1204. }
  1205. DownloadCenterSetting(ip, port);
  1206. });
  1207. $(document).on('click', '#guide_access_authorize_next', function() {
  1208. const ip = $('#guide_access_authorize_server_ip_content').val();
  1209. const port = $('#guide_access_authorize_port_content').val();
  1210. const username = $('#guide_access_authorize_username_content').val();
  1211. const psw = $('#guide_access_authorize_password_content').val();
  1212. if(!isValidIpAddress(ip)) {
  1213. utilStartAlertDialog("无效IP格式");
  1214. return;
  1215. }
  1216. if(!check_port(port)) {
  1217. utilStartAlertDialog("无效端口号");
  1218. return;
  1219. }
  1220. if(username === '') {
  1221. utilStartAlertDialog("请输入用户名");
  1222. return;
  1223. }
  1224. if(psw === '') {
  1225. utilStartAlertDialog("请输入密码");
  1226. return;
  1227. }
  1228. AuthorizeTerminal(ip, port, username, psw);
  1229. });
  1230. $(document).on('click', '#guide_media_config_refresh', function() {
  1231. FulfillMediaDeviceList(true);
  1232. });
  1233. $(document).on('click', '#guide_media_config_next', function() {
  1234. SaveMediaDeviceConfig();
  1235. });
  1236. $(document).on('click', '#guide_sogou_install_next', function() {
  1237. RVC.GuideController.gotoPage(CONST.DeployStep_GetTerminalInfo);
  1238. });
  1239. $(document).on('click', '#guide_sogou_install_start', function() {
  1240. InstallSogouInput();
  1241. });
  1242. //字体安装按钮
  1243. $(document).on('click', '#guide_font_confirm_install', function() {
  1244. InstallSpecifiesFont();
  1245. });
  1246. //字体安装页面下一步按钮
  1247. $(document).on('click', '#guide_font_confirm_next', function() {
  1248. RVC.GuideController.gotoPage(CONST.DeployStep_3rdParty_SogouInstall);
  1249. });
  1250. $(document).on('click', '#guide_finish_restart_btn', function() {
  1251. FinshedDeploy();
  1252. });
  1253. $(document).on('click', '#reset_btn', function() {
  1254. utilStartConfirmDialog("确认要重置当前终端的配置?(操作不可撤销,请慎重!)", function() {
  1255. ResetDeployConfig();
  1256. });
  1257. });
  1258. if (window.addEventListener) {
  1259. window.addEventListener('resize', RVC.GuideController.resizeWindow, false);
  1260. } else {
  1261. window.attachEvent('resize', RVC.GuideController.resizeWindow);
  1262. }
  1263. RVC.CameraConfigEntity.init();
  1264. if (window.location.href.indexOf('guide.html') !== -1) {
  1265. RVC.GuideController.resizeWindow();
  1266. RVC.Scroll.initScroll('#init_param_content');
  1267. $('#header_right #quitpage_btn_div').bind('click', function() {
  1268. if(!globalFinishedFlag) {
  1269. utilStartConfirmDialog("配置还未完成,确定要退出当前配置吗?(应用也将退出)", function() {
  1270. AbortDeployConfig();
  1271. });
  1272. } else {
  1273. AbortDeployConfig(true);
  1274. }
  1275. });
  1276. console.log("href:" + window.location.href);
  1277. console.log("search:" + window.location.search);
  1278. var pageIdx = getQueryStringByName('page');
  1279. var terminalNo = getQueryStringByName('terminalno');
  1280. var vendorAbbr = getQueryStringByName('vendor');
  1281. var serverIP = getQueryStringByName('ip');
  1282. if(terminalNo !== null && terminalNo.length > 0 && terminalNo !== 'null') {
  1283. globalTerminalNo = terminalNo;
  1284. }
  1285. if(vendorAbbr !== null && vendorAbbr.length > 0 && vendorAbbr !== 'null') {
  1286. globalSelectVendorType = vendorAbbr;
  1287. }
  1288. if(serverIP !== null && serverIP.length > 0 && serverIP !== 'null') {
  1289. globalServerIP = serverIP;
  1290. }
  1291. if(pageIdx !== null && pageIdx.length > 0 && pageIdx !== 'null' && IsDigital(pageIdx)) {
  1292. var step = parseInt(pageIdx, 10);
  1293. if(RVC.GuideController.checkPageAvailable(step)) {
  1294. utilStartAlertDialog('请点击确认按钮继续上次的配置', function() {
  1295. RVC.GuideController.gotoPage(step);
  1296. });
  1297. }
  1298. } else {
  1299. /**
  1300. * DeployStep_Begin : 0,
  1301. DeployStep_GetTerminalInfo : 1,
  1302. DeployStep_FetchCenterSettings : 2,
  1303. DeployStep_AccessAuthorize : 3,
  1304. DeployStep_MediaConfig : 4,
  1305. DeployStep_Finished : 5,
  1306. DeployStep_AdapterConfig : 6,
  1307. DeployStep_3rdParty_SogouInstall : 7,
  1308. DeployStep_3rdParty_FontInstall
  1309. *
  1310. */
  1311. RVC.GuideController.gotoPage(CONST.DeployStep_Begin);
  1312. }
  1313. }
  1314. setTimeout(RVC.GuideController.resizeWindow, 200);
  1315. });