guide.js 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715
  1. var CONST = {
  2. DeployStep_Begin : 0,
  3. DeployStep_GetTerminalInfo : 1,
  4. DeployStep_FetchCenterSettings : 2,
  5. DeployStep_AccessAuthorize : 3,
  6. DeployStep_MediaConfig : 4,
  7. DeployStep_Finished : 5,
  8. DeployStep_AdapterConfig : 6
  9. };
  10. var SETCTION = {
  11. BEGIN:'start',
  12. GETTERMINAL_INFO:'init_param',
  13. CENTERSETTINGS:'sync_centersetting',
  14. ACCESS_AUTHORIZE:'access_authorize',
  15. MEDIA_CONFIG:'media_config',
  16. FINSHED:'finish',
  17. };
  18. var MEDIA_TYPE = {
  19. CAMERA : 1,
  20. MICROPHONE : 2,
  21. LOUNDSPEAKER:4
  22. }
  23. var MEDIA_DETAIL_TYPE = {
  24. MediaDev_OutSpeaker:1,
  25. MediaDev_InSpeaker:2,
  26. MediaDev_OutMicrophone:3,
  27. MediaDev_InMicrophone:4
  28. }
  29. var VENDOR = {
  30. KEBA : 'KEBA',
  31. CW : 'CW',
  32. GRG : 'GRG',
  33. NANTIAN : 'NANTIAN',
  34. GWI : 'GWI'
  35. };
  36. var globalFinishedFlag = false;
  37. $(function () {
  38. RVC.GuideController = RVC.Object.extend({
  39. hideAllPage: function () {
  40. $('#guide_start_page').hide();
  41. $('#guide_init_param_page').hide();
  42. $('#guide_sync_centersetting_page').hide();
  43. $('#guide_access_authorize_page').hide();
  44. $('#guide_media_config_page').hide();
  45. $('#guide_finish_page').hide();
  46. $('#guide_reboot_page').hide();
  47. },
  48. hideAllRebootTipElem: function() {
  49. $('#reboot_operate').hide();
  50. $('#guide_rebootinfo').hide();
  51. $('#guide_rebootinfo_need_restart').hide();
  52. $('#guide_rebootinfo_need_reboot').hide();
  53. $('#guide_reboot_application_button').hide();
  54. $('#guide_reboot_device_button').hide();
  55. $('#guide_finished_button').hide();
  56. $('#guide_finish_device_button').hide();
  57. $('#guide_save_loading').hide();
  58. $('#guide_reboot_loading').hide();
  59. $('#guide_restart_loading').hide();
  60. },
  61. resizeWindow: function () {
  62. var winHei = $(window).height();
  63. var popHeight = 480;
  64. var adjustHeight = 0;
  65. var blueBackgroundHeight = 0;
  66. if (winHei < 860) {
  67. winHei = 860;
  68. }
  69. blueBackgroundHeight = winHei - $('.headcontainer').height() - $('#page_footer').height();
  70. $('#guide_height').height(blueBackgroundHeight);
  71. adjustHeight = (blueBackgroundHeight - popHeight) * 0.5;
  72. $('#guide_start_page').css('padding-top', (adjustHeight + 100) + 'px');
  73. var domWidth = $('body').width();
  74. var winWidth = $('window').width();
  75. if (domWidth > winWidth) {
  76. setTimeout(function () {
  77. $('body').scrollTop($('.headcontainer').height() + adjustHeight);
  78. $('body').scrollLeft(($('body').width() - $(window).width()) / 2);
  79. }, 1000)
  80. }
  81. $('#guide_init_param_page').css('padding-top', adjustHeight + 'px');
  82. },
  83. beginInstall: function() {
  84. this.gotoPage(CONST.DeployStep_GetTerminalInfo);
  85. },
  86. getPage: function(step) {
  87. var select_page = '';
  88. switch(step) {
  89. case CONST.DeployStep_Begin:
  90. select_page = 'guide_start_page';
  91. break;
  92. case CONST.DeployStep_GetTerminalInfo :
  93. select_page = 'guide_init_param_page';
  94. break;
  95. case CONST.DeployStep_FetchCenterSettings:
  96. select_page = 'guide_sync_centersetting_page';
  97. break;
  98. case CONST.DeployStep_AccessAuthorize :
  99. select_page = 'guide_access_authorize_page';
  100. break;
  101. case CONST.DeployStep_MediaConfig :
  102. select_page = 'guide_media_config_page';
  103. break;
  104. case CONST.DeployStep_AdapterConfig :
  105. select_page = 'guide_adapter_config_page';
  106. break;
  107. case CONST.DeployStep_Finished :
  108. select_page = 'guide_finish_page';
  109. break;
  110. default:
  111. break;
  112. }
  113. return select_page;
  114. },
  115. checkPageAvailable: function(step) {
  116. const select_page = this.getPage(step);
  117. if(select_page !== '') {
  118. return true;
  119. } else {
  120. return false;
  121. }
  122. },
  123. preLoadPage: function(step) {
  124. this.hideAllPage();
  125. switch(step) {
  126. case CONST.DeployStep_MediaConfig:
  127. FulfillMediaDeviceList();
  128. break;
  129. case CONST.DeployStep_AdapterConfig:
  130. FulfillDevAdapterFileList();
  131. break;
  132. default:
  133. break;
  134. }
  135. },
  136. postLoadPage: function(step) {
  137. switch(step) {
  138. case CONST.DeployStep_Finished:
  139. globalFinishedFlag = true;
  140. break;
  141. default:
  142. break;
  143. }
  144. },
  145. gotoPage: function(nextStep) {
  146. var select_page = this.getPage(nextStep);
  147. if(select_page !== '') {
  148. this.preLoadPage(nextStep);
  149. $('#' + select_page).show();
  150. this.postLoadPage(nextStep);
  151. } else {
  152. utilShowToast('无法识别步骤标识:' + nextStep, 3000);
  153. }
  154. },
  155. sectOverPass: function() {
  156. },
  157. sectNext: function() {
  158. },
  159. setNavigaBtnAble: function(enable) {
  160. }
  161. });
  162. RVC.CameraConfigEntity = RVC.EntityController.extend({
  163. entityName: 'CameraConfigManage',
  164. className: 'CameraConfigManageService',
  165. methodID: {
  166. GetMediaAvailableList: 9,
  167. SetMediaDevice: 10,
  168. TestAvailableMedieDev: 11
  169. },
  170. methodSignature: {
  171. GetMediaAvailableList: -1547834445,
  172. SetMediaDevice: -865058557,
  173. TestAvailableMedieDev: -2126935432
  174. },
  175. GetMediaAvailableList: function(req, callback) {
  176. this.webSocketInvokeEx(req,
  177. ({id:this.methodID.GetMediaAvailableList, sig:this.methodSignature.GetMediaAvailableList}),
  178. callback);
  179. },
  180. SetMediaDevice: function(req, callback) {
  181. this.webSocketInvokeEx(req,
  182. ({id:this.methodID.SetMediaDevice, sig:this.methodSignature.SetMediaDevice}),
  183. callback);
  184. },
  185. TestAvailableMedieDev: function(req, callback) {
  186. this.webSocketInvokeEx(req,
  187. ({id:this.methodID.TestAvailableMedieDev, sig:this.methodSignature.TestAvailableMedieDev}),
  188. callback);
  189. }
  190. });
  191. function ResetDeployConfig() {
  192. let req = new Request();
  193. req.preStep = CONST.DeployStep_Begin;
  194. req.currStep = CONST.DeployStep_Begin;
  195. req.nextStep = CONST.DeployStep_Begin;
  196. req.param1 = 1; //重置标识
  197. req.param2 = 0;
  198. req.param3 = '';
  199. req.param4 = '';
  200. req.param5 = '';
  201. req.array1 = [0];
  202. req.array2 = [''];
  203. req.additional = 0;
  204. req.restartApp = true;
  205. req.restartPC = false;
  206. utilStartSubmitDialog();
  207. RVC.HealthmanagerEntityCtrl.DeployTerminal(req, function(ret) {
  208. utilStopSubmitDialog();
  209. if(ret.errorCode === 0) {
  210. let result = JSON.parse(ret[RVC.EntityController.sigResponseUUID])
  211. if(result.result == 0) {
  212. if(req.restartApp || req.restartPC) {
  213. RVC.GuideController.hideAllPage();
  214. RVC.GuideController.hideAllRebootTipElem();
  215. if(req.restartApp) {
  216. $('#guide_restart_loading').show();
  217. } else if(req.restartPC) {
  218. $('#guide_reboot_loading').show();
  219. }
  220. $('#guide_reboot_page').show();
  221. }
  222. } else {
  223. utilStartAlertDialog("操作失败:[" + result.result + "] " + result.additionalMsg);
  224. }
  225. } else {
  226. RVC.HealthmanagerEntityCtrl.commErrorCallback(ret);
  227. }
  228. });
  229. }
  230. function IPConnectableTest(ip)
  231. {
  232. let req = new Request();
  233. req.protocol = 1; //Ping
  234. req.ip = ip;
  235. req.port = 0;
  236. req.reserved1 = 0;
  237. req.reserved2 = '';
  238. function showErrTips(val) {
  239. setTimeout(function () {
  240. $('#text_guide_init_param_ip_tips').addClass('hide');
  241. }, 3000);
  242. $('#text_guide_init_param_ip_tips').removeClass('hide')
  243. .removeClass('guide_input_descript').addClass('guide_error').html(val);
  244. }
  245. function showSuccTips(val) {
  246. setTimeout(function () {
  247. $('#text_guide_init_param_ip_tips').addClass('hide');
  248. }, 3000);
  249. $('#text_guide_init_param_ip_tips').removeClass('hide')
  250. .removeClass('guide_error').addClass('guide_input_descript').html(val);
  251. }
  252. if(!isValidIpAddress(ip)) {
  253. showErrTips('无效IP格式');
  254. return;
  255. }
  256. RVC.DeviceControlEntityCtrl.TestConnectivity(req, function(ret) {
  257. if(ret.errorCode === 0) {
  258. let result = JSON.parse(ret[RVC.EntityController.sigResponseUUID])
  259. if(result.result == 0) {
  260. showSuccTips('可正常连通');
  261. } else {
  262. console.log(result.additionalMsg);
  263. showErrTips(result.additionalMsg);
  264. }
  265. } else {
  266. let tips = ip + ' 测试连接失败:' + ErrorCodeStringfy(ret.errorCode);
  267. showErrTips(tips);
  268. }
  269. });
  270. }
  271. function DeployTerminalWithIPAndPort(server_ip, port, access_flag)
  272. {
  273. let req = new Request();
  274. if(!access_flag) {//下载集中配置
  275. req.preStep = CONST.DeployStep_MediaConfig;
  276. req.currStep = CONST.DeployStep_FetchCenterSettings;
  277. req.nextStep = CONST.DeployStep_AccessAuthorize;
  278. } else { //准入验证
  279. req.preStep = CONST.DeployStep_FetchCenterSettings;
  280. req.currStep = CONST.DeployStep_AccessAuthorize;
  281. req.nextStep = CONST.DeployStep_Finished;
  282. }
  283. req.param1 = parseInt(port, 10);
  284. req.param2 = 0;
  285. req.param3 = server_ip;
  286. req.additional = 0;
  287. req.restartApp = false;
  288. req.restartPC = false;
  289. req.param4 = '';
  290. req.param5 = '';
  291. req.array1 = [0];
  292. req.array2 = [''];
  293. utilStartSubmitDialog();
  294. RVC.HealthmanagerEntityCtrl.DeployTerminal(req, function(ret) {
  295. utilStopSubmitDialog();
  296. if(ret.errorCode === 0) {
  297. let result = JSON.parse(ret[RVC.EntityController.sigResponseUUID])
  298. if(result.result == 0) {
  299. utilStartAlertDialog("操作成功,进入下一步", function() {
  300. RVC.GuideController.gotoPage(result.nextStep);
  301. });
  302. } else {
  303. utilStartAlertDialog("操作失败:[" + result.result + "] " + result.additionalMsg);
  304. }
  305. } else {
  306. RVC.HealthmanagerEntityCtrl.commErrorCallback(ret);
  307. }
  308. });
  309. }
  310. function InitTemrinalAbout(server_ip, new_terminalno, vendorName)
  311. {
  312. let req = new Request();
  313. req.preStep = CONST.DeployStep_Begin;
  314. req.currStep = CONST.DeployStep_GetTerminalInfo;
  315. req.nextStep = CONST.DeployStep_MediaConfig;
  316. req.param1 = 0;
  317. req.param2 = 0;
  318. req.param3 = server_ip;
  319. req.param4 = new_terminalno + '|' + vendorName;
  320. req.param5 = '';
  321. req.array1 = [0];
  322. req.array2 = [''];
  323. req.additional = 0;
  324. req.restartApp = false;
  325. req.restartPC = false;
  326. utilStartSubmitDialog();
  327. RVC.HealthmanagerEntityCtrl.DeployTerminal(req, function(ret) {
  328. utilStopSubmitDialog();
  329. if(ret.errorCode === 0) {
  330. let result = JSON.parse(ret[RVC.EntityController.sigResponseUUID])
  331. if(result.result == 0) {
  332. utilStartAlertDialog("操作成功,进入下一步", function() {
  333. RVC.GuideController.gotoPage(result.nextStep);
  334. });
  335. } else {
  336. utilStartAlertDialog("操作失败:[" + result.result + "] " + result.additionalMsg);
  337. }
  338. } else {
  339. RVC.HealthmanagerEntityCtrl.commErrorCallback(ret);
  340. }
  341. });
  342. }
  343. function PreDeployTerminalWithIPAndPort(server_ip, port, access_flag)
  344. {
  345. if(!isValidIpAddress(server_ip)) {
  346. utilStartAlertDialog("无效IP格式");
  347. return;
  348. }
  349. if(!check_port(port)) {
  350. utilStartAlertDialog("无效端口号");
  351. return;
  352. }
  353. DeployTerminalWithIPAndPort(server_ip, port, access_flag);
  354. }
  355. function DownloadCenterSetting(ip, port)
  356. {
  357. PreDeployTerminalWithIPAndPort(ip, port, false);
  358. }
  359. function AuthorizeTerminal(ip, port)
  360. {
  361. PreDeployTerminalWithIPAndPort(ip, port, true);
  362. }
  363. function generateDeviceSelect(devices, select_id) {
  364. var deviceLength = 0;
  365. if ((devices) instanceof Array) {
  366. deviceLength = devices.length;
  367. } else {
  368. deviceLength = 1
  369. }
  370. var devicesHtml = '';
  371. var selectid = select_id;
  372. $('#' + selectid).empty();
  373. for (var loop = 0; loop < deviceLength; loop++) {
  374. var cur = devices[loop];
  375. var deviceTemplateData = {
  376. loop: loop,
  377. deviceName : cur,
  378. type: selectid
  379. };
  380. var pushHtml = '';
  381. pushHtml = '<div id="{{type}}_item_{{loop}}" option="{{deviceName}}" class="select_medium hide_with_ellipsis">'
  382. pushHtml += '{{deviceName}}</div>'
  383. $('#' + selectid).secureAppend(pushHtml, deviceTemplateData);
  384. }
  385. }
  386. function generateAdapterSelect(devices, status, select_id) {
  387. var deviceLength = 0;
  388. if ((devices) instanceof Array) {
  389. deviceLength = devices.length;
  390. } else {
  391. deviceLength = 1
  392. }
  393. var devicesHtml = '';
  394. var selectid = select_id;
  395. $('#' + selectid).empty();
  396. for (var loop = 0; loop < deviceLength; loop++) {
  397. var cur = devices[loop];
  398. var deviceTemplateData = {
  399. loop: loop,
  400. deviceName : cur,
  401. type: selectid
  402. };
  403. var pushHtml = '';
  404. pushHtml = '<div id="{{type}}_item_{{loop}}" option="{{deviceName}}" class="select_medium hide_with_ellipsis">'
  405. pushHtml += '{{deviceName}}</div>'
  406. $('#' + selectid).secureAppend(pushHtml, deviceTemplateData);
  407. }
  408. }
  409. function FulfillMediaDeviceList(flag)
  410. {
  411. let req = new Request();
  412. req.type = 6; //1,2,4不需要摄像头配置
  413. req.interest = 0;
  414. req.reserverd1 = 0;
  415. req.reserverd2 = '';
  416. req.reserverd2 = '';
  417. RVC.CameraConfigEntity.GetMediaAvailableList(req, function(ret) {
  418. if(ret.errorCode === 0) {
  419. let result = JSON.parse(ret[RVC.EntityController.sigResponseUUID])
  420. console.log('device count: ' + result.result);
  421. var microphones = [];
  422. var loundspeakers = [];
  423. var cameras = [];
  424. for (var n = 0; n < result.AvailableList.length; n++) {
  425. console.log(result.AvailableList[n] + ' ' + result.ListItemType[n] + ' ' + result.ListItemStatus[n]);
  426. if(result.ListItemType[n] == MEDIA_TYPE.MICROPHONE) {
  427. microphones.push(result.AvailableList[n]);
  428. } else if(result.ListItemType[n] == MEDIA_TYPE.LOUNDSPEAKER) {
  429. loundspeakers.push(result.AvailableList[n]);
  430. } else if(result.ListItemType[n] == MEDIA_TYPE.CAMERA) {
  431. cameras.push(result.AvailableList[n]);
  432. }
  433. }
  434. generateDeviceSelect(loundspeakers, 'gui_media_config_audio_output_outfree_list');
  435. generateDeviceSelect(loundspeakers, 'gui_media_config_audio_output_infree_list');
  436. generateDeviceSelect(microphones, 'gui_media_config_audio_input_outfree_list');
  437. generateDeviceSelect(microphones, 'gui_media_config_audio_input_infree_list');
  438. if(typeof flag !== 'undefined') {
  439. $('#gui_media_config_audio_input_infree').empty();
  440. $('#gui_media_config_audio_input_infree').attr('value', '');
  441. $('#gui_media_config_audio_input_outfree').empty();
  442. $('#gui_media_config_audio_input_outfree').attr('value', '');
  443. $('#gui_media_config_audio_output_infree').empty();
  444. $('#gui_media_config_audio_output_infree').attr('value', '');
  445. $('#gui_media_config_audio_output_outfree').empty();
  446. $('#gui_media_config_audio_output_outfree').attr('value', '');
  447. utilShowToast("已刷新");
  448. }
  449. } else if(typeof flag !== 'undefined'){
  450. RVC.CameraConfigEntity.commErrorCallback(ret);
  451. }
  452. });
  453. }
  454. function FulfillDevAdapterFileList(flag)
  455. {
  456. let req = new Request();
  457. req.root = false;
  458. req.adapter="";
  459. req.vendor="";
  460. req.version="";
  461. req.batch="";
  462. RVC.DeviceControlEntityCtrl.GetVendorFileList(req, function(ret) {
  463. if(ret.errorCode === 0) {
  464. let result = JSON.parse(ret[RVC.EntityController.sigResponseUUID])
  465. if(result.result == 0) {
  466. var libs = [];
  467. var status = [];
  468. for (var n = 0; n < result.filenames.length; n++) {
  469. console.log(result.filenames[n] + ' ' + result.status[n]);
  470. libs.push(result.filenames[n]);
  471. status.push(result.status[n]);
  472. }
  473. generateAdapterSelect(libs, status, 'gui_adapter_config_adapter_list');
  474. } else if(typeof flag !== 'undefined') {
  475. utilStartAlertDialog("操作失败:[" + result.result + "] " + result.msg);
  476. }
  477. } else if(typeof flag !== 'undefined'){
  478. RVC.CameraConfigEntity.commErrorCallback(ret);
  479. }
  480. });
  481. }
  482. function SaveMediaDeviceConfig()
  483. {
  484. //话筒扬声器
  485. var output_infree = $('#gui_media_config_audio_output_infree').attr('value');
  486. //外部扬声器
  487. var output_outfree = $('#gui_media_config_audio_output_outfree').attr('value');
  488. //话筒麦克风
  489. var input_infree = $('#gui_media_config_audio_input_infree').attr('value');
  490. //外部麦克风
  491. var input_outfree = $('#gui_media_config_audio_input_outfree').attr('value');
  492. if(output_outfree === '') {
  493. utilStartAlertDialog('请选择外部扬声器');
  494. return;
  495. }
  496. if(output_infree === '') {
  497. utilStartAlertDialog('请选择话筒扬声器');
  498. return;
  499. }
  500. if(input_outfree === '') {
  501. utilStartAlertDialog('请选择外部麦克风');
  502. return;
  503. }
  504. if(input_infree === '') {
  505. utilStartAlertDialog('请选择话筒麦克风');
  506. return;
  507. }
  508. // if(output_infree == output_outfree) {
  509. // utilStartAlertDialog('扬声器选取冲突,请重新选择');
  510. // return;
  511. // }
  512. // if(input_infree == input_outfree) {
  513. // utilStartAlertDialog('麦克风选取冲突,请重新选择');
  514. // return;
  515. // }
  516. let req = new Request();
  517. req.preStep = CONST.DeployStep_GetTerminalInfo;
  518. req.currStep = CONST.DeployStep_MediaConfig;
  519. req.nextStep = CONST.DeployStep_FetchCenterSettings;
  520. req.additional = 1; //重命名root.ini
  521. req.restartApp = true;
  522. req.restartPC = false;
  523. req.param1 = 0;
  524. req.param2 = 0;
  525. req.param3 = '';
  526. req.param4 = '';
  527. req.param5 = '';
  528. req.array1 = [MEDIA_DETAIL_TYPE.MediaDev_OutSpeaker, MEDIA_DETAIL_TYPE.MediaDev_InSpeaker, MEDIA_DETAIL_TYPE.MediaDev_OutMicrophone, MEDIA_DETAIL_TYPE.MediaDev_InMicrophone];
  529. req.array2 = [output_outfree, output_infree, input_outfree, input_infree];
  530. utilStartSubmitDialog();
  531. RVC.HealthmanagerEntityCtrl.DeployTerminal(req, function(ret) {
  532. utilStopSubmitDialog();
  533. if(ret.errorCode === 0) {
  534. let result = JSON.parse(ret[RVC.EntityController.sigResponseUUID])
  535. if(result.result == 0) {
  536. if(req.restartApp || req.restartPC) {
  537. RVC.GuideController.hideAllPage();
  538. RVC.GuideController.hideAllRebootTipElem();
  539. if(req.restartApp) {
  540. $('#guide_restart_loading').show();
  541. } else if(req.restartPC) {
  542. $('#guide_reboot_loading').show();
  543. }
  544. $('#guide_reboot_page').show();
  545. } else {
  546. utilStartAlertDialog("操作成功,进入下一步", function() {
  547. RVC.GuideController.gotoPage(result.nextStep);
  548. });
  549. }
  550. } else {
  551. utilStartAlertDialog("操作失败:[" + result.result + "] " + result.additionalMsg);
  552. }
  553. } else {
  554. RVC.HealthmanagerEntityCtrl.commErrorCallback(ret);
  555. }
  556. });
  557. }
  558. $(document).on('click', '#guide_init_param_ip_check #ip_connect_check', function(){
  559. var ip = $('#guide_server_ip').val();
  560. console.log('ip: ' + ip);
  561. IPConnectableTest(ip);
  562. });
  563. $(document).on('click', '#guide_init_param_next', function() {
  564. const ip = $('#guide_server_ip').val();
  565. const terminalno = $('#guide_init_param_terminalno').val();
  566. if(!isValidIpAddress(ip)) {
  567. utilStartAlertDialog("无效IP格式");
  568. return;
  569. }
  570. if(!IsDigital(terminalno)) {
  571. utilStartAlertDialog("无效终端号格式");
  572. return;
  573. }
  574. var vendorType = $('#gui_init_param_vendor').attr('value');
  575. if(vendorType === '' || vendorType === 'None') {
  576. utilStartAlertDialog("请选择设备厂商");
  577. return;
  578. }
  579. InitTemrinalAbout(ip, terminalno, vendorType);
  580. });
  581. $(document).on('click', '#guide_sync_centersetting_next', function() {
  582. const ip = $('#guide_sync_centersetting_server_ip_content').val();
  583. var port = $('#guide_sync_centersetting_port_content').val();
  584. DownloadCenterSetting(ip, port);
  585. });
  586. $(document).on('click', '#guide_access_authorize_next', function() {
  587. const ip = $('#guide_access_authorize_server_ip_content').val();
  588. var port = $('#guide_access_authorize_port_content').val();
  589. AuthorizeTerminal(ip, port);
  590. });
  591. $(document).on('click', '#guide_media_config_refresh', function() {
  592. FulfillMediaDeviceList(true);
  593. });
  594. $(document).on('click', '#guide_media_config_next', function() {
  595. SaveMediaDeviceConfig();
  596. });
  597. $(document).on('click', '#reset_btn', function() {
  598. utilStartConfirmDialog("确认要重置当前终端的配置?(操作不可撤销,请慎重!)", function() {
  599. ResetDeployConfig();
  600. });
  601. });
  602. if (window.addEventListener) {
  603. window.addEventListener('resize', RVC.GuideController.resizeWindow, false);
  604. } else {
  605. window.attachEvent('resize', RVC.GuideController.resizeWindow);
  606. }
  607. RVC.CameraConfigEntity.init();
  608. if (window.location.href.indexOf('guide.html') !== -1) {
  609. RVC.GuideController.resizeWindow();
  610. RVC.Scroll.initScroll('#init_param_content');
  611. $('#header_right #quitpage_btn_div').prop("onclick",null).off("click");;
  612. $('#header_right #quitpage_btn_div').unbind('click');
  613. $('#header_right #quitpage_btn_div').bind('click', function() {
  614. if(!globalFinishedFlag) {
  615. utilStartConfirmDialog("配置还未完成,确定要退出页面吗?", function() {
  616. quitThisPage();
  617. });
  618. } else {
  619. quitThisPage();
  620. }
  621. });
  622. var hash = window.location.href.split('#')[1];
  623. if(hash && IsDigital(hash)) {
  624. var step = parseInt(hash, 10);
  625. if(RVC.GuideController.checkPageAvailable(step)) {
  626. utilStartAlertDialog('点击<确认>以继续上次的配置', function() {
  627. RVC.GuideController.gotoPage(step);
  628. });
  629. }
  630. } else {
  631. RVC.GuideController.gotoPage(CONST.DeployStep_AdapterConfig);
  632. }
  633. }
  634. setTimeout(RVC.GuideController.resizeWindow, 200);
  635. });