guide.js 75 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948
  1. const preStepIndex = 0;
  2. const curStepIndex = 1;
  3. const nextStepIndex = 2;
  4. var DeployStepChain = {
  5. Begin : [DEPLOY.DeployStep_Begin, DEPLOY.DeployStep_Begin, DEPLOY.DeployStep_3rdParty_FontInstall],
  6. FontInstall : [DEPLOY.DeployStep_Begin, DEPLOY.DeployStep_3rdParty_FontInstall,DEPLOY.DeployStep_3rdParty_SogouInstall],
  7. SogouInstall : [DEPLOY.DeployStep_3rdParty_FontInstall, DEPLOY.DeployStep_3rdParty_SogouInstall,DEPLOY.DeployStep_GetTerminalInfo],
  8. GetTerminalInfo : [DEPLOY.DeployStep_3rdParty_SogouInstall, DEPLOY.DeployStep_GetTerminalInfo,DEPLOY.DeployStep_AdapterConfig],
  9. AdapterConfig : [DEPLOY.DeployStep_GetTerminalInfo, DEPLOY.DeployStep_AdapterConfig,DEPLOY.DeployStep_MediaConfig],
  10. MediaConfig : [DEPLOY.DeployStep_AdapterConfig, DEPLOY.DeployStep_MediaConfig,DEPLOY.DeployStep_FetchCenterSettings],
  11. FetchCenterSettings : [DEPLOY.DeployStep_MediaConfig, DEPLOY.DeployStep_FetchCenterSettings,DEPLOY.DeployStep_AccessAuthorize],
  12. AccessAuthorize : [DEPLOY.DeployStep_FetchCenterSettings, DEPLOY.DeployStep_AccessAuthorize,DEPLOY.DeployStep_Finished],
  13. Finished : [DEPLOY.DeployStep_Finished, DEPLOY.DeployStep_Finished,DEPLOY.DeployStep_Finished],
  14. }
  15. var SETCTION = {
  16. BEGIN:'start',
  17. GETTERMINAL_INFO:'init_param',
  18. CENTERSETTINGS:'sync_centersetting',
  19. ACCESS_AUTHORIZE:'access_authorize',
  20. MEDIA_CONFIG:'media_config',
  21. FINSHED:'finish',
  22. };
  23. var MEDIA_TYPE = {
  24. CAMERA : 1,
  25. MICROPHONE : 2,
  26. LOUNDSPEAKER:4
  27. }
  28. var MEDIA_DETAIL_TYPE = {
  29. MediaDev_OutSpeaker:1,
  30. MediaDev_InSpeaker:2,
  31. MediaDev_OutMicrophone:3,
  32. MediaDev_InMicrophone:4
  33. }
  34. var VENDOR = ['KEBA','CW','GRG','NANTIAN','GWI','*'];
  35. var VENDOR_ZHCN = ['中钞科堡','恒银金融','广电运通','云南南天','长城信息','全部'];
  36. var VENDOR_MACHINE_TYPE = [
  37. ['E1080-L'],['CASH35AG-JR10(G)'],['DT-7000I64A'],['VTM-6200B17FQ'],['VTM700-A02']
  38. ];
  39. function DisplayVendorFriendName(abbr)
  40. {
  41. for(var n=0; n < VENDOR.length; ++n) {
  42. if(abbr === VENDOR[n]) {
  43. return VENDOR_ZHCN[n];
  44. }
  45. }
  46. return '';
  47. }
  48. var globalFinishedFlag = false;
  49. var globalInterestRootFlag = false;
  50. var globalAdapterFileNameList = [];
  51. var globalAdapterFileNameStatus = [];
  52. var globalAdapterOpenParamPort = [];
  53. var globalAdapterOpenParamBaudrate = [];
  54. var globalLastRemberAdapterName = '';
  55. var globalLastRemberAdapterConfigState = false;
  56. var globalTerminalNo = '';
  57. var globalSelectVendorType = '';
  58. var globalServerIP = '';
  59. var adapterTestFailedCount = 0;
  60. var apdaterTestAllBefore = 0;
  61. function clearAdapterSelectedValue()
  62. {
  63. $('#gui_adapter_config_adapter').empty();
  64. $('#gui_adapter_config_adapter').attr("value", '');
  65. $('#guide_adapter_config_port_input').val('');
  66. $('#guide_adapter_config_baudrate_input').val('');
  67. }
  68. function generateAdapterSelect(devices, status, select_id) {
  69. var deviceLength = 0;
  70. if ((devices) instanceof Array) {
  71. deviceLength = devices.length;
  72. } else {
  73. deviceLength = 1
  74. }
  75. var devicesHtml = '';
  76. var selectid = select_id;
  77. $('#' + selectid).empty();
  78. for (var loop = 0; loop < deviceLength; loop++) {
  79. var cur = devices[loop];
  80. var deviceTemplateData = {
  81. loop: loop,
  82. deviceName : cur,
  83. type: selectid
  84. };
  85. var pushHtml = '';
  86. pushHtml = '<div id="{{type}}_item_{{loop}}" option="{{deviceName}}" class="select_medium hide_with_ellipsis"'
  87. if(!(status[loop] & 0x1)) {
  88. pushHtml += ' style="color:#C0C0C0;"'
  89. } else {
  90. pushHtml += ' onclick="AdapterSelectChange(\'{{deviceName}}\')"'
  91. }
  92. //root.ini 配置
  93. if((status[loop] & 0x2)) {
  94. pushHtml += '>{{deviceName}}&nbsp;(当前配置)</div>'
  95. } else {
  96. pushHtml += '>{{deviceName}}</div>'
  97. }
  98. $('#' + selectid).secureAppend(pushHtml, deviceTemplateData);
  99. }
  100. }
  101. function FulfillDevAdapterFileList(device, vendor, root_or_not, flag)
  102. {
  103. let req = new Request();
  104. req.root = root_or_not;
  105. req.adapter=device;
  106. req.vendor=vendor;
  107. req.version="";
  108. req.batch="";
  109. globalAdapterFileNameList = [];
  110. globalAdapterFileNameStatus = [];
  111. globalAdapterOpenParamPort = [];
  112. globalAdapterOpenParamBaudrate = [];
  113. RVC.DeviceControlEntityCtrl.GetVendorFileList(req, function(ret) {
  114. if(ret.errorCode === 0) {
  115. let result = JSON.parse(ret[RVC.EntityController.sigResponseUUID])
  116. if(result.result == 0) {
  117. console.log('=============================');
  118. for (var n = 0; n < result.filenames.length; n++) {
  119. console.log(result.filenames[n] + ' ' + result.status[n] + ' ' + result.port[n] + ' ' + result.baudrate[n]);
  120. globalAdapterFileNameList.push(result.filenames[n]);
  121. globalAdapterFileNameStatus.push(result.status[n]);
  122. globalAdapterOpenParamPort.push(result.port[n]);
  123. globalAdapterOpenParamBaudrate.push(result.baudrate[n]);
  124. if(globalLastRemberAdapterName !== '' && globalLastRemberAdapterName === globalAdapterFileNameList[n]) {
  125. globalLastRemberAdapterConfigState = (globalAdapterFileNameStatus[n] & 0x2);
  126. }
  127. }
  128. clearAdapterSelectedValue();
  129. generateAdapterSelect(globalAdapterFileNameList, globalAdapterFileNameStatus, 'gui_adapter_config_adapter_list');
  130. if(typeof flag !== 'undefined') {
  131. if(flag === true) {
  132. if(root_or_not) {
  133. utilShowToast("已刷新!适配器列表仅显示 root.ini 配置的硬件适配器信息", 5000);
  134. } else {
  135. utilShowToast("已刷新!适配器列表将显示当前所有能找到的厂商硬件适配器文件", 6000);
  136. }
  137. } else {
  138. utilShowToast('已刷新!');
  139. }
  140. }
  141. //test
  142. if(result.filenames.length == 1 && root_or_not && device !== '' && device != '*') {
  143. FulfillAdapterCurrentSelect(globalAdapterFileNameList[0], (globalAdapterFileNameStatus[0] & 0x2));
  144. } else if(globalLastRemberAdapterName !== '') {
  145. FulfillAdapterCurrentSelect(globalLastRemberAdapterName, globalLastRemberAdapterConfigState);
  146. }
  147. //test_end
  148. } else if(typeof flag !== 'undefined') {
  149. utilStartAlertDialog("操作失败:[" + result.result + "] " + result.msg);
  150. } else {
  151. console.error("操作失败:[" + result.result + "] " + result.msg);
  152. }
  153. } else if(typeof flag !== 'undefined') {
  154. RVC.DeviceControlEntityCtrl.commErrorCallback(ret);
  155. } else {
  156. console.error("操作失败! ErrorCode: " + ErrorCodeStringfy(ret.errorCode));
  157. }
  158. });
  159. }
  160. function LoadDeviceAdaptersWithEvent(flag)
  161. {
  162. var deviceName = $('#gui_adapter_config_device').attr('value');
  163. var vendorName = $('#gui_adapter_config_vendor').attr('value').toLowerCase();
  164. FulfillDevAdapterFileList(deviceName, vendorName, globalInterestRootFlag, flag);
  165. }
  166. function AdapterSelectChange(name)
  167. {
  168. $('#guide_adapter_config_port_input').val('');
  169. $('#guide_adapter_config_baudrate_input').val('');
  170. for(var n=0; n < globalAdapterFileNameList.length; n++) {
  171. if(globalAdapterFileNameList[n] === name) {
  172. if((globalAdapterFileNameStatus[n] & 0x2) /**root.ini 配置 */) {
  173. $('#guide_adapter_config_port_input').val('' + globalAdapterOpenParamPort[n]);
  174. $('#guide_adapter_config_baudrate_input').val('' + globalAdapterOpenParamBaudrate[n]);
  175. }
  176. setSaveBtnStatus(!(globalAdapterFileNameStatus[n] & 0x2));
  177. break;
  178. }
  179. }
  180. }
  181. function FulfillAdapterCurrentSelect(value, configed)
  182. {
  183. if(value === '') {
  184. clearAdapterSelectedValue();
  185. } else {
  186. if(configed) {
  187. $('#gui_adapter_config_adapter').html(value + '&nbsp;(当前配置)');
  188. } else {
  189. $('#gui_adapter_config_adapter').html(value);
  190. }
  191. $('#gui_adapter_config_adapter').attr('value', value);
  192. AdapterSelectChange(value);
  193. }
  194. }
  195. function generateDeviceTypeSelect(devices, select_id) {
  196. var deviceLength = 0;
  197. if ((devices) instanceof Array) {
  198. deviceLength = devices.length;
  199. } else {
  200. deviceLength = 1
  201. }
  202. var devicesHtml = '';
  203. var selectid = select_id;
  204. $('#' + selectid).empty();
  205. for (var loop = 0; loop < deviceLength; loop++) {
  206. var cur = devices[loop];
  207. var deviceTemplateData = {
  208. loop: loop,
  209. deviceName : cur,
  210. type: selectid
  211. };
  212. var pushHtml = '';
  213. pushHtml = '<div id="{{type}}_item_{{loop}}" option="{{deviceName}}" class="select_medium hide_with_ellipsis">'
  214. pushHtml += '{{deviceName}}</div>'
  215. $('#' + selectid).secureAppend(pushHtml, deviceTemplateData);
  216. }
  217. }
  218. function VendorSelectChangedAtInit(name)
  219. {
  220. var vendorName = name.toLowerCase();
  221. $('#gui_init_param_device_model').empty();
  222. $('#gui_init_param_device_model').attr("value", '');
  223. for(var n=0; n < VENDOR.length; ++n) {
  224. if(name === VENDOR[n]) {
  225. var deviceTypes = VENDOR_MACHINE_TYPE[n];
  226. generateDeviceTypeSelect(deviceTypes, 'gui_init_param_device_model_list');
  227. if(deviceTypes.length > 0) {
  228. $('#gui_init_param_device_model').text(deviceTypes[0]);
  229. $('#gui_init_param_device_model').attr("value", deviceTypes[0]);
  230. }
  231. }
  232. }
  233. }
  234. //正式环境该参数不可选
  235. function VendorSelectChanged(name)
  236. {
  237. var deviceName = $('#gui_adapter_config_device').attr('value');
  238. var vendorName = name.toLowerCase();
  239. FulfillDevAdapterFileList(deviceName, vendorName, globalInterestRootFlag, false);
  240. }
  241. function DeviceSelectChange(name)
  242. {
  243. var vendorName = $('#gui_adapter_config_vendor').attr('value').toLowerCase();
  244. FulfillDevAdapterFileList(name, vendorName, globalInterestRootFlag, false);
  245. }
  246. function setBtnStatus(enable, classID)
  247. {
  248. if (enable && $('#' + classID).hasClass('btn_disabled')) {
  249. $('#' + classID).attr('disabled', false);
  250. $('#' + classID).removeClass('btn_disabled');
  251. } else if(!enable && !$('#' + classID).hasClass('btn_disabled')) {
  252. $('#' + classID).attr('disabled', true);
  253. $('#' + classID).addClass('btn_disabled');
  254. }
  255. }
  256. function setInputTextStatus(err, classID)
  257. {
  258. if (err && $('#' + classID).hasClass('input_normal')) {
  259. $('#' + classID).removeClass('input_normal');
  260. $('#' + classID).addClass('input_normal_error');
  261. } else if(!err && !$('#' + classID).hasClass('input_normal')) {
  262. $('#' + classID).removeClass('input_normal_error');
  263. $('#' + classID).addClass('input_normal');
  264. }
  265. }
  266. function setSelectInputStatus(err, classID)
  267. {
  268. if (err && $('#' + classID).hasClass('select_on_normal')) {
  269. $('#' + classID).removeClass('select_on_normal');
  270. $('#' + classID).addClass('select_on_normal_error');
  271. } else if(!err && !$('#' + classID).hasClass('select_on_normal')) {
  272. $('#' + classID).removeClass('select_on_normal_error');
  273. $('#' + classID).addClass('select_on_normal');
  274. }
  275. }
  276. var flickInvaliInterval = 0;
  277. function adapeterNameInputFlick()
  278. {
  279. var flag = ((flickInvaliInterval % 2) == 0);
  280. flickInvaliInterval += 1;
  281. setSelectInputStatus(flag, 'gui_adapter_config_adapter');
  282. setInputTextStatus(flag, 'guide_adapter_config_port_input_div');
  283. setInputTextStatus(flag, 'guide_adapter_config_baudrate_input_div');
  284. }
  285. function invalidFilck() {
  286. flickInvaliInterval = 0;
  287. let clock = 6
  288. let timer = setInterval(function () {
  289. clock--
  290. adapeterNameInputFlick();
  291. if (clock == 0) {
  292. clearInterval(timer);
  293. }
  294. }, 240)
  295. }
  296. function rebindBtnClick(classID, callback)
  297. {
  298. $('#' + classID).prop("onclick",null).off("click");;
  299. $('#' + classID).unbind('click');
  300. if(callback) {
  301. $('#' + '#' + classID).bind('click', callback);
  302. }
  303. }
  304. function setTestAllBtnStatus(enable) {
  305. setBtnStatus(enable, 'guide_adapter_config_test')
  306. }
  307. function setTestBtnStatus(enable) {
  308. setBtnStatus(enable, 'gui_adapter_config_adapter_check_btn')
  309. }
  310. function setSaveBtnStatus(enable) {
  311. setBtnStatus(enable, 'guide_adapter_config_save')
  312. }
  313. function setNextBtnStatus(enable) {
  314. setBtnStatus(enable, 'guide_adapter_config_next')
  315. }
  316. function InterestRootSwitch(flag)
  317. {
  318. if ($('#gui_adapter_config_root_interest_switch').hasClass('switch_on')) {
  319. globalInterestRootFlag = true;
  320. } else {
  321. globalInterestRootFlag = false;
  322. }
  323. setSaveBtnStatus(!globalInterestRootFlag);
  324. if(typeof flag == 'undefined')
  325. LoadDeviceAdaptersWithEvent(true);
  326. else
  327. LoadDeviceAdaptersWithEvent();
  328. //setTestAllBtnStatus(globalInterestRootFlag);
  329. }
  330. function MediaDeviceSelectChange(evt)
  331. {
  332. var obj = evt.parentElement.parentElement;
  333. var value = evt.textContent;
  334. var obj_id = obj.id;
  335. if(obj_id === 'gui_media_config_audio_output_outfree_list') {
  336. var loundspeakers_in_value = $('#gui_media_config_audio_output_infree').attr('value');
  337. if(loundspeakers_in_value !== '' && value === loundspeakers_in_value) {
  338. utilShowToast('该设备已在话筒扬声器中被选择!');
  339. }
  340. } else if(obj_id === 'gui_media_config_audio_output_infree_list') {
  341. var loundspeakers_out_value = $('#gui_media_config_audio_output_outfree').attr('value');
  342. if(loundspeakers_out_value !== '' && value === loundspeakers_out_value) {
  343. utilShowToast('该设备已在外部扬声器中被选择!');
  344. }
  345. }else if(obj_id === 'gui_media_config_audio_input_outfree_list') {
  346. var microphones_in_value = $('#gui_media_config_audio_input_infree').attr('value');
  347. if(microphones_in_value !== '' && value === microphones_in_value) {
  348. utilShowToast('该设备已在话筒麦克风中被选择!');
  349. }
  350. }else if(obj_id === 'gui_media_config_audio_input_infree_list') {
  351. var microphones_out_value = $('#gui_media_config_audio_input_outfree').attr('value');
  352. if(microphones_out_value !== '' && value === microphones_out_value) {
  353. utilShowToast('该设备已在外部麦克风中被选择!');
  354. }
  355. }
  356. }
  357. $(function () {
  358. /**不使用,转到实体里头处理 */
  359. function StartBasicHardwareEntity(entityName, sucCallback, failCallback)
  360. {
  361. let req = new Request();
  362. req.option = 1; //启动实体
  363. req.additional = 0;
  364. req.devId = 0;
  365. req.entityName = entityName;
  366. req.force = true;
  367. req.param = '';
  368. req.reserved1 = 0;
  369. req.reserved2 = '';
  370. req.timeout = 60000;
  371. RVC.HealthmanagerEntityCtrl.ControlEntityLife(req, function(ret) {
  372. if(ret.errorCode === 0) {
  373. let result = JSON.parse(ret[RVC.EntityController.sigResponseUUID])
  374. if(result.result == 0) {
  375. if(sucCallback) {
  376. utilShowToast("启动模块" + entityName + "成功!", 3000);
  377. sucCallback();
  378. }
  379. } else {
  380. utilShowToast("启动模块" + entityName + "失败:[" + result.result + "] " + result.msg, 5000);
  381. if(failCallback) {
  382. failCallback();
  383. }
  384. }
  385. } else {
  386. utilShowToast("请求失败:" + ErrorCodeStringfy(ret.errorCode));
  387. if(failCallback) {
  388. failCallback();
  389. }
  390. }
  391. });
  392. }
  393. function AbortDeployConfig(finished) {
  394. RVC.HealthmanagerEntityCtrl.QuitApp(true);
  395. RVC.GuideController.hideAllPage();
  396. RVC.GuideController.hideAllRebootTipElem();
  397. $('#guide_quit_loading').show();
  398. $('#guide_reboot_page').show();
  399. }
  400. function ResetDeployConfig() {
  401. let req = new Request();
  402. req.preStep = DeployStepChain.Begin[preStepIndex];
  403. req.currStep = DeployStepChain.Begin[curStepIndex];
  404. req.nextStep = DeployStepChain.Begin[nextStepIndex];
  405. req.param1 = 0;
  406. req.param2 = 0;
  407. req.param3 = '';
  408. req.param4 = '';
  409. req.param5 = '';
  410. req.array1 = [0];
  411. req.array2 = [''];
  412. req.additional = 0;
  413. req.options = 1;//重置标识
  414. req.restartApp = true;
  415. req.restartPC = false;
  416. if(req.restartApp) {
  417. utilStartSubmitDialog("重置成功将会自动重启应用,请耐心等候...");
  418. } else {
  419. utilStartSubmitDialog();
  420. }
  421. RVC.HealthmanagerEntityCtrl.DeployTerminal(req, function(ret) {
  422. utilStopSubmitDialog();
  423. if(ret.errorCode === 0) {
  424. let result = JSON.parse(ret[RVC.EntityController.sigResponseUUID])
  425. if(result.result == 0) {
  426. if(req.restartApp || req.restartPC) {
  427. RVC.GuideController.hideAllPage();
  428. RVC.GuideController.hideAllRebootTipElem();
  429. if(req.restartApp) {
  430. $('#guide_restart_loading').show();
  431. } else if(req.reboot_pagrestartPC) {
  432. $('#guide_reboot_loading').show();
  433. }
  434. $('#guide_reboot_page').show();
  435. }
  436. } else {
  437. utilStartAlertDialog("操作失败:[" + result.result + "] " + result.additionalMsg);
  438. }
  439. } else {
  440. RVC.HealthmanagerEntityCtrl.commErrorCallback(ret);
  441. }
  442. });
  443. }
  444. function IPConnectableTest(ip)
  445. {
  446. let req = new Request();
  447. req.protocol = 1; //Ping
  448. req.ip = ip;
  449. req.port = 0;
  450. req.reserved1 = 0;
  451. req.reserved2 = '';
  452. function showErrTips(val) {
  453. setTimeout(function () {
  454. $('#text_guide_init_param_ip_tips').addClass('hide');
  455. }, 2000);
  456. $('#text_guide_init_param_ip_tips').removeClass('hide')
  457. .removeClass('guide_input_descript').addClass('guide_error').html(val);
  458. }
  459. function showSuccTips(val) {
  460. setTimeout(function () {
  461. $('#text_guide_init_param_ip_tips').addClass('hide');
  462. }, 2000);
  463. $('#text_guide_init_param_ip_tips').removeClass('hide')
  464. .removeClass('guide_error').addClass('guide_input_descript').html(val);
  465. }
  466. if(!isValidIpAddress(ip)) {
  467. showErrTips('无效IP格式');
  468. return;
  469. }
  470. RVC.DeviceControlEntityCtrl.TestConnectivity(req, function(ret) {
  471. if(ret.errorCode === 0) {
  472. let result = JSON.parse(ret[RVC.EntityController.sigResponseUUID])
  473. if(result.result == 0) {
  474. showSuccTips('可正常连接');
  475. } else {
  476. console.log(result.additionalMsg);
  477. showErrTips('连接失败:' + result.additionalMsg);
  478. }
  479. } else {
  480. let tips = ip + '测试失败:' + ErrorCodeStringfy(ret.errorCode);
  481. showErrTips(tips);
  482. }
  483. });
  484. }
  485. function GetTerminalBaseInfo(callback, flag)
  486. {
  487. let req = new Request();
  488. req.preStep = DeployStepChain.GetTerminalInfo[curStepIndex];
  489. req.currStep = DeployStepChain.GetTerminalInfo[curStepIndex];
  490. req.nextStep = DeployStepChain.GetTerminalInfo[curStepIndex];
  491. req.param1 = 0;
  492. req.param2 = 0;
  493. req.param3 = '';
  494. req.param4 = '';
  495. req.param5 = '';
  496. req.array1 = [0];
  497. req.array2 = [''];
  498. req.options = 1; //获取缓存基本信息
  499. req.additional = 0;
  500. req.restartApp = false;
  501. req.restartPC = false;
  502. globalTerminalNo = '';
  503. globalSelectVendorType = '';
  504. globalServerIP = '';
  505. RVC.HealthmanagerEntityCtrl.DeployTerminal(req, function(ret) {
  506. if(ret.errorCode === 0) {
  507. let result = JSON.parse(ret[RVC.EntityController.sigResponseUUID])
  508. if(result.result == 0) {
  509. if(result.array2.length === 3) {
  510. globalTerminalNo = result.array2[0];
  511. globalSelectVendorType = result.array2[1];
  512. globalServerIP = result.array2[2];
  513. if(callback) {
  514. callback();
  515. }
  516. }
  517. } else {
  518. if(typeof type !== 'undefined') {
  519. utilStartAlertDialog("操作失败:[" + result.result + "] " + result.additionalMsg);
  520. } else {
  521. utilShowToast("操作失败:[" + result.result + "] " + result.additionalMsg);
  522. }
  523. }
  524. } else {
  525. if(typeof type !== 'undefined') {
  526. utilStartAlertDialog("操作失败! ErrorCode: " + ErrorCodeStringfy(ret.errorCode));
  527. } else {
  528. utilShowToast("操作失败! ErrorCode: " + ErrorCodeStringfy(ret.errorCode));
  529. }
  530. }
  531. });
  532. }
  533. function InitCenterSettingInputParam()
  534. {
  535. if(globalServerIP === '') {
  536. GetTerminalBaseInfo(function(){
  537. $('#guide_sync_centersetting_server_ip_content').attr('value', globalServerIP);
  538. });
  539. } else {
  540. $('#guide_sync_centersetting_server_ip_content').attr('value', globalServerIP);
  541. }
  542. }
  543. function TestAllAdapterAvailableOrNot()
  544. {
  545. let req = new Request();
  546. req.filename= '';
  547. req.type = 1;
  548. req.options = 1; //遇到一个硬件报错立即返回
  549. req.port = 0;
  550. req.baudrate = 0;
  551. req.param1 = 0;
  552. req.param2 = 0;
  553. req.param3 = "";
  554. req.param4 = "";
  555. apdaterTestAllBefore = 1;
  556. if(req.options == 0) {
  557. req.timeout = 120000;
  558. utilStartSubmitDialog('涉及到多个硬件模块,此操作将花费较长的时间,请耐心等候...', 'btnCancelAdapterTest', '中断');
  559. $(document).on('click', '#btnCancelAdapterTest', function() {
  560. utilStopSubmitDialog();
  561. });
  562. } else {
  563. req.timeout = 60000;
  564. utilStartSubmitDialog('将逐一加载硬件适配器文件并尝试打开硬件设备,此操作可能需花费较长时间,请耐心等候...');
  565. }
  566. EventEmitter.subscribe('AdapterTestResult','TestAllAdapterAvailableOrNot', (evt)=> {
  567. let result = JSON.parse(evt[RVC.EntityController.sigResponseUUID]);
  568. console.log(result.result + ";" + result.adapterInfo + ";" + result.errMsg);
  569. if(0 == result.result) {
  570. utilShowToast(result.adapterInfo + '验证成功!');
  571. } else {
  572. utilShowToast(result.adapterInfo + '验证失败:' + result.errMsg);
  573. apdaterTestAllBefore = 1;
  574. }
  575. });
  576. RVC.DeviceControlEntityCtrl.TestAdapterFileAvailable(req, function(ret) {
  577. utilStopSubmitDialog();
  578. EventEmitter.unsubscribe('AdapterTestResult','TestAllAdapterAvailableOrNot');
  579. if(ret.errorCode === 0) {
  580. let result = JSON.parse(ret[RVC.EntityController.sigResponseUUID])
  581. if(result.status == 0) {
  582. apdaterTestAllBefore = 2;
  583. utilStartConfirmDialog('所有硬件配置验证通过!点击确认进入下一步,取消则不进行任何操作(后续可通过页面上的[跳过]菜单进入下一步)', function() {
  584. FinshedDevAdapterConfig();
  585. });
  586. } else {
  587. var errmsg = '';
  588. var firstAdapterName = '';
  589. for (var n = 0; n < result.reserved1.length; n++) {
  590. console.log(result.reserved2[n] + ': ' + result.reserved3[n]);
  591. if(errmsg !== '') errmsg += '<br>';
  592. errmsg += '<strong>' + result.reserved2[n] + '</strong>: ' + result.reserved3[n];
  593. if(firstAdapterName === '') firstAdapterName = result.reserved2[n];
  594. }
  595. if(firstAdapterName !== '') {
  596. for(var n=0; n < globalAdapterFileNameList.length; n++) {
  597. if(globalAdapterFileNameList[n] === firstAdapterName) {
  598. globalLastRemberAdapterName = globalAdapterFileNameList[n];
  599. globalLastRemberAdapterConfigState = (globalAdapterFileNameStatus[n] & 0x2);
  600. FulfillAdapterCurrentSelect(globalLastRemberAdapterName, globalLastRemberAdapterConfigState);
  601. break;
  602. }
  603. }
  604. }
  605. var tips = "检测失败!请修改硬件配置或检查硬件是否可用:<br><br><span style='color:red'>" + errmsg + "</span>";
  606. utilStartAlertDialog(tips, function() {
  607. invalidFilck();
  608. });
  609. }
  610. } else {
  611. if(parseInt(ret.errorCode, 10) == ErrorCodeEnum.Error_NetBroken) {
  612. utilStartAlertDialog("请求失败:" + ErrorCodeStringfy(ret.errorCode) + "<br>猜测是验证硬件模块时引起实体进程异常退出,请检查配置或硬件再重试!");
  613. setTimeout(function () {
  614. StartBasicHardwareEntity("DeviceControl");
  615. }, 300);
  616. } else {
  617. utilStartAlertDialog("请求失败:" + ErrorCodeStringfy(ret.errorCode));
  618. }
  619. }
  620. });
  621. }
  622. function InitCurrentVendorSelect()
  623. {
  624. if(globalSelectVendorType === '') {
  625. GetTerminalBaseInfo(function() {
  626. const vendorZhCnName = DisplayVendorFriendName(globalSelectVendorType);
  627. $('#gui_adapter_config_vendor').attr('value', globalSelectVendorType);
  628. $('#gui_adapter_config_vendor').html(vendorZhCnName);
  629. });
  630. } else {
  631. const vendorZhCnName = DisplayVendorFriendName(globalSelectVendorType);
  632. $('#gui_adapter_config_vendor').attr('value', globalSelectVendorType);
  633. $('#gui_adapter_config_vendor').html(vendorZhCnName);
  634. }
  635. }
  636. function InitTemrinalAbout(server_ip, new_terminalno, vendorName, deviceModel, deviceSN)
  637. {
  638. let req = new Request();
  639. req.preStep = DeployStepChain.GetTerminalInfo[preStepIndex];
  640. req.currStep = DeployStepChain.GetTerminalInfo[curStepIndex];
  641. req.nextStep = DeployStepChain.GetTerminalInfo[nextStepIndex];
  642. req.param1 = 0;
  643. req.param2 = 0;
  644. req.param3 = server_ip;
  645. req.param4 = new_terminalno + '|' + vendorName;
  646. req.param5 = '';
  647. req.array1 = [0,0,0];
  648. req.array2 = [vendorName, deviceModel, deviceSN];
  649. req.options = 0;
  650. req.additional = 1; //重命名root.ini
  651. req.restartApp = true;
  652. req.restartPC = false;
  653. req.timeout = 60000; //网络连接,延长时间,让实体自身反馈报错
  654. if(req.restartApp) {
  655. utilStartSubmitDialog("正在请求,处理成功将会自动执行应用重启,请耐心等候...");
  656. } else {
  657. utilStartSubmitDialog();
  658. }
  659. RVC.HealthmanagerEntityCtrl.DeployTerminal(req, function(ret) {
  660. utilStopSubmitDialog();
  661. if(ret.errorCode === 0) {
  662. let result = JSON.parse(ret[RVC.EntityController.sigResponseUUID])
  663. if(result.result == 0) {
  664. if(req.restartApp || req.restartPC) {
  665. RVC.GuideController.hideAllPage();
  666. RVC.GuideController.hideAllRebootTipElem();
  667. if(req.restartApp) {
  668. $('#guide_restart_loading').show();
  669. } else if(req.restartPC) {
  670. $('#guide_reboot_loading').show();
  671. }
  672. $('#guide_reboot_page').show();
  673. } else {
  674. utilStartAlertDialog("信息录入成功,即将进入下一步", function() {
  675. RVC.GuideController.gotoPage(result.nextStep);
  676. });
  677. }
  678. } else {
  679. utilStartAlertDialog("操作失败:[" + result.result + "] " + result.additionalMsg);
  680. }
  681. } else {
  682. RVC.HealthmanagerEntityCtrl.commErrorCallback(ret);
  683. }
  684. });
  685. }
  686. function DownloadCenterSetting(ip, port)
  687. {
  688. let req = new Request();
  689. req.preStep = DeployStepChain.FetchCenterSettings[preStepIndex];
  690. req.currStep = DeployStepChain.FetchCenterSettings[curStepIndex];
  691. req.nextStep = DeployStepChain.FetchCenterSettings[nextStepIndex];
  692. req.param1 = parseInt(port, 10);
  693. req.param2 = 0;
  694. req.param3 = ip;
  695. req.options = 0;
  696. req.additional = 0;
  697. req.restartApp = false;
  698. req.restartPC = false;
  699. req.param4 = '';
  700. req.param5 = '';
  701. req.array1 = [0];
  702. req.array2 = [''];
  703. utilStartSubmitDialog();
  704. RVC.HealthmanagerEntityCtrl.DeployTerminal(req, function(ret) {
  705. utilStopSubmitDialog();
  706. if(ret.errorCode === 0) {
  707. let result = JSON.parse(ret[RVC.EntityController.sigResponseUUID])
  708. if(result.result == 0) {
  709. utilStartAlertDialog("操作成功,即将进入下一步", function() {
  710. RVC.GuideController.gotoPage(result.nextStep);
  711. });
  712. } else {
  713. utilStartAlertDialog("操作失败:[" + result.result + "] " + result.additionalMsg);
  714. }
  715. } else {
  716. RVC.HealthmanagerEntityCtrl.commErrorCallback(ret);
  717. }
  718. });
  719. }
  720. function InitAccessAuthParam()
  721. {
  722. let req = new Request();
  723. req.entityName = 'AccessAuthorization'
  724. req.key = 'Server'
  725. $('#guide_access_authorize_server_ip_content').val('');
  726. $('#guide_access_authorize_port_content').val('');
  727. RVC.DeviceControlEntityCtrl.ReadCenterConfigStr(req, function(ret){
  728. if(ret.errorCode === 0) {
  729. console.log('fetch auth addr from centersettins succ.');
  730. let result = JSON.parse(ret[RVC.EntityController.sigResponseUUID])
  731. const addr = result.value.split(' ')[0]
  732. const port = result.value.split(' ')[1]
  733. if(checkIpv4(addr) && check_port(port)) {
  734. $('#guide_access_authorize_server_ip_content').val(addr);
  735. $('#guide_access_authorize_port_content').val(port);
  736. var serveraddr = addr + ':' + port;
  737. console.log(serveraddr);
  738. } else {
  739. utilShowToast("获取准入配置信息有误,请检查集中配置文件!");
  740. }
  741. } else {
  742. utilShowToast("获取准入配置信息失败! ErrorCode: " + ErrorCodeStringfy(ret.errorCode));
  743. }
  744. });
  745. }
  746. function AuthorizeTerminal(ip, port, username, password)
  747. {
  748. let req = new Request();
  749. req.preStep = DeployStepChain.AccessAuthorize[preStepIndex];
  750. req.currStep = DeployStepChain.AccessAuthorize[curStepIndex];
  751. req.nextStep = DeployStepChain.AccessAuthorize[nextStepIndex];
  752. req.param1 = parseInt(port, 10);
  753. req.param2 = 0;
  754. req.param3 = ip;
  755. req.param4 = '';
  756. req.options = 0;
  757. req.additional = 0;
  758. req.restartApp = false;
  759. req.restartPC = false;
  760. req.param5 = '';
  761. req.array1 = [0,0];
  762. req.array2 = [username, password];
  763. req.timeout = 65000;
  764. utilStartSubmitDialog();
  765. RVC.HealthmanagerEntityCtrl.DeployTerminal(req, function(ret) {
  766. utilStopSubmitDialog();
  767. if(ret.errorCode === 0) {
  768. let result = JSON.parse(ret[RVC.EntityController.sigResponseUUID])
  769. if(result.result == 0) {
  770. utilStartAlertDialog("操作成功,即将进入下一步", function() {
  771. RVC.GuideController.gotoPage(result.nextStep);
  772. });
  773. } else {
  774. utilStartAlertDialog("操作失败:[" + result.result + "] " + result.additionalMsg);
  775. }
  776. } else {
  777. RVC.HealthmanagerEntityCtrl.commErrorCallback(ret);
  778. }
  779. });
  780. }
  781. function generateMediaDeviceSelect(devices, select_id) {
  782. var deviceLength = 0;
  783. if ((devices) instanceof Array) {
  784. deviceLength = devices.length;
  785. } else {
  786. deviceLength = 1
  787. }
  788. var devicesHtml = '';
  789. var selectid = select_id;
  790. $('#' + selectid).empty();
  791. for (var loop = 0; loop < deviceLength; loop++) {
  792. var cur = devices[loop];
  793. var deviceTemplateData = {
  794. loop: loop,
  795. deviceName : cur,
  796. type: selectid
  797. };
  798. var pushHtml = '';
  799. pushHtml = '<div id="{{type}}_item_{{loop}}" option="{{deviceName}}" class="select_medium hide_with_ellipsis" onclick=MediaDeviceSelectChange(this)>'
  800. pushHtml += '{{deviceName}}</div>'
  801. $('#' + selectid).secureAppend(pushHtml, deviceTemplateData);
  802. }
  803. }
  804. function FulfillMediaDeviceList(flag)
  805. {
  806. let req = new Request();
  807. req.type = 6; //1,2,4不需要摄像头配置
  808. req.interest = 0;
  809. req.reserverd1 = 0;
  810. req.reserverd2 = '';
  811. req.reserverd2 = '';
  812. RVC.CameraConfigEntity.GetMediaAvailableList(req, function(ret) {
  813. if(ret.errorCode === 0) {
  814. let result = JSON.parse(ret[RVC.EntityController.sigResponseUUID])
  815. console.log('device count: ' + result.result);
  816. var microphones = [];
  817. var loundspeakers = [];
  818. var cameras = [];
  819. const inner_deault = '内置音频';
  820. var microphones_in_value = $('#gui_media_config_audio_input_infree').attr('value');
  821. var microphones_in_exist = false;
  822. var microphones_inner_exist = false;
  823. var microphones_out_value = $('#gui_media_config_audio_input_outfree').attr('value');
  824. var microphones_out_exist = false;
  825. var loundspeakers_in_value = $('#gui_media_config_audio_output_infree').attr('value');
  826. var loundspeakers_in_exist = false;
  827. var loundspeakers_inner_exist = false;
  828. var loundspeakers_out_value = $('#gui_media_config_audio_output_outfree').attr('value');
  829. var loundspeakers_out_exist = false;
  830. for (var n = 0; n < result.AvailableList.length; n++) {
  831. console.log(result.AvailableList[n] + ' ' + result.ListItemType[n] + ' ' + result.ListItemStatus[n]);
  832. if(result.ListItemType[n] == MEDIA_TYPE.MICROPHONE) {
  833. microphones.push(result.AvailableList[n]);
  834. if(microphones_in_value !== '' && microphones_in_value === result.AvailableList[n]){
  835. microphones_in_exist = true;
  836. }
  837. if(microphones_out_value !== '' && microphones_out_value === result.AvailableList[n]){
  838. microphones_out_exist = true;
  839. }
  840. if(inner_deault === result.AvailableList[n]) {
  841. microphones_inner_exist = true;
  842. }
  843. } else if(result.ListItemType[n] == MEDIA_TYPE.LOUNDSPEAKER) {
  844. loundspeakers.push(result.AvailableList[n]);
  845. if(loundspeakers_out_value !== '' && loundspeakers_out_value === result.AvailableList[n]){
  846. loundspeakers_out_exist = true;
  847. }
  848. if(loundspeakers_in_value !== '' && loundspeakers_in_value === result.AvailableList[n]){
  849. loundspeakers_in_exist = true;
  850. }
  851. if(inner_deault === result.AvailableList[n]) {
  852. loundspeakers_inner_exist = true;
  853. }
  854. } else if(result.ListItemType[n] == MEDIA_TYPE.CAMERA) {
  855. cameras.push(result.AvailableList[n]);
  856. }
  857. }
  858. generateMediaDeviceSelect(loundspeakers, 'gui_media_config_audio_output_outfree_list');
  859. generateMediaDeviceSelect(loundspeakers, 'gui_media_config_audio_output_infree_list');
  860. generateMediaDeviceSelect(microphones, 'gui_media_config_audio_input_outfree_list');
  861. generateMediaDeviceSelect(microphones, 'gui_media_config_audio_input_infree_list');
  862. if(typeof flag !== 'undefined') {
  863. if(!microphones_in_exist) {
  864. $('#gui_media_config_audio_input_infree').empty();
  865. $('#gui_media_config_audio_input_infree').attr('value', '');
  866. }
  867. if(!microphones_out_exist){
  868. $('#gui_media_config_audio_input_outfree').empty();
  869. $('#gui_media_config_audio_input_outfree').attr('value', '');
  870. }
  871. if(!loundspeakers_in_exist){
  872. $('#gui_media_config_audio_output_infree').empty();
  873. $('#gui_media_config_audio_output_infree').attr('value', '');
  874. }
  875. if(!loundspeakers_out_exist) {
  876. $('#gui_media_config_audio_output_outfree').empty();
  877. $('#gui_media_config_audio_output_outfree').attr('value', '');
  878. }
  879. utilShowToast("已刷新");
  880. } else {
  881. if(microphones_inner_exist) {
  882. $('#gui_media_config_audio_input_infree').text(inner_deault);
  883. $('#gui_media_config_audio_input_infree').attr('value', inner_deault);
  884. }
  885. if(loundspeakers_inner_exist) {
  886. $('#gui_media_config_audio_output_infree').text(inner_deault);
  887. $('#gui_media_config_audio_output_infree').attr('value', inner_deault);
  888. }
  889. }
  890. } else if(typeof flag !== 'undefined'){
  891. RVC.CameraConfigEntity.commErrorCallback(ret);
  892. }
  893. });
  894. }
  895. function SaveMediaDeviceConfig()
  896. {
  897. //话筒扬声器
  898. var output_infree = $('#gui_media_config_audio_output_infree').attr('value');
  899. //外部扬声器
  900. var output_outfree = $('#gui_media_config_audio_output_outfree').attr('value');
  901. //话筒麦克风
  902. var input_infree = $('#gui_media_config_audio_input_infree').attr('value');
  903. //外部麦克风
  904. var input_outfree = $('#gui_media_config_audio_input_outfree').attr('value');
  905. if(output_outfree === '') {
  906. utilStartAlertDialog('请选择外部扬声器');
  907. return;
  908. }
  909. if(output_infree === '') {
  910. utilStartAlertDialog('请选择话筒扬声器');
  911. return;
  912. }
  913. if(input_outfree === '') {
  914. utilStartAlertDialog('请选择外部麦克风');
  915. return;
  916. }
  917. if(input_infree === '') {
  918. utilStartAlertDialog('请选择话筒麦克风');
  919. return;
  920. }
  921. if(output_infree == output_outfree) {
  922. utilStartAlertDialog('扬声器选取冲突,请重新选择');
  923. return;
  924. }
  925. if(input_infree == input_outfree) {
  926. utilStartAlertDialog('麦克风选取冲突,请重新选择');
  927. return;
  928. }
  929. let req = new Request();
  930. req.preStep = DeployStepChain.MediaConfig[preStepIndex];
  931. req.currStep = DeployStepChain.MediaConfig[curStepIndex];
  932. req.nextStep = DeployStepChain.MediaConfig[nextStepIndex];
  933. req.additional = 0;
  934. req.options = 1; //0:保存在临时文件,1:保存在root.ini
  935. req.restartApp = false;
  936. req.restartPC = false;
  937. req.param1 = 0;
  938. req.param2 = 0;
  939. req.param3 = '';
  940. req.param4 = '';
  941. req.param5 = '';
  942. req.array1 = [MEDIA_DETAIL_TYPE.MediaDev_OutSpeaker, MEDIA_DETAIL_TYPE.MediaDev_InSpeaker, MEDIA_DETAIL_TYPE.MediaDev_OutMicrophone, MEDIA_DETAIL_TYPE.MediaDev_InMicrophone];
  943. req.array2 = [output_outfree, output_infree, input_outfree, input_infree];
  944. utilStartSubmitDialog();
  945. RVC.HealthmanagerEntityCtrl.DeployTerminal(req, function(ret) {
  946. utilStopSubmitDialog();
  947. if(ret.errorCode === 0) {
  948. let result = JSON.parse(ret[RVC.EntityController.sigResponseUUID])
  949. if(result.result == 0) {
  950. if(req.restartApp || req.restartPC) {
  951. RVC.GuideController.hideAllPage();
  952. RVC.GuideController.hideAllRebootTipElem();
  953. if(req.restartApp) {
  954. $('#guide_restart_loading').show();
  955. } else if(req.restartPC) {
  956. $('#guide_reboot_loading').show();
  957. }
  958. $('#guide_reboot_page').show();
  959. } else {
  960. utilStartAlertDialog("操作成功,即将进入下一步", function() {
  961. RVC.GuideController.gotoPage(result.nextStep);
  962. });
  963. }
  964. } else {
  965. utilStartAlertDialog("操作失败:[" + result.result + "] " + result.additionalMsg);
  966. }
  967. } else {
  968. RVC.HealthmanagerEntityCtrl.commErrorCallback(ret);
  969. }
  970. });
  971. }
  972. //硬件测试接口
  973. function CheckDevAdapterAvailable(adapter, port, baudrate)
  974. {
  975. let req = new Request();
  976. req.filename= adapter;
  977. req.type = 0;
  978. req.options = 0;
  979. req.port = parseInt(port, 10);
  980. req.baudrate = parseInt(baudrate, 10);
  981. req.param1 = 0;
  982. req.param2 = 0;
  983. req.param3 = "";
  984. req.param4 = "";
  985. req.timeout = 60000;
  986. console.log("check adapter: " + adapter + " " + port + " " + baudrate);
  987. utilStartSubmitDialog();
  988. RVC.DeviceControlEntityCtrl.TestAdapterFileAvailable(req, function(ret) {
  989. utilStopSubmitDialog();
  990. if(ret.errorCode === 0) {
  991. if(adapterTestFailedCount != 0) {
  992. adapterTestFailedCount = 0;
  993. }
  994. let result = JSON.parse(ret[RVC.EntityController.sigResponseUUID])
  995. if(result.status == 0) {
  996. utilShowToast("适配器文件成功加载;尝试打开设备成功!", 1500);
  997. } else {
  998. utilStartAlertDialog("验证失败:[" + result.status + "] " + result.msg);
  999. }
  1000. } else {
  1001. if(parseInt(ret.errorCode, 10) == ErrorCodeEnum.Error_NetBroken) {
  1002. adapterTestFailedCount++;
  1003. if(adapterTestFailedCount >= 3) {
  1004. utilStartAlertDialog("检测到多次调用测试通道失败,将尝试重启关联模块", function() {
  1005. utilShowToast('尝试重启关联模块,请稍后', 5000);
  1006. setTestBtnStatus(false);
  1007. StartBasicHardwareEntity("DeviceControl", function(){
  1008. setTestBtnStatus(true);
  1009. adapterTestFailedCount = 0;
  1010. },function(){
  1011. setTestBtnStatus(true);
  1012. });
  1013. });
  1014. } else {
  1015. utilStartAlertDialog("请求失败:" + ErrorCodeStringfy(ret.errorCode));
  1016. }
  1017. } else {
  1018. utilStartAlertDialog("请求失败:" + ErrorCodeStringfy(ret.errorCode));
  1019. }
  1020. }
  1021. });
  1022. }
  1023. function SaveDevAdapterInfo(adapter, port, baudrate)
  1024. {
  1025. let req = new Request();
  1026. req.preStep = DeployStepChain.AdapterConfig[curStepIndex];
  1027. req.currStep = DeployStepChain.AdapterConfig[curStepIndex];
  1028. req.nextStep = DeployStepChain.AdapterConfig[curStepIndex];
  1029. req.param1 = parseInt(port, 10);
  1030. req.param2 = parseInt(baudrate, 10);
  1031. req.param3 = adapter;
  1032. req.param4 = '';
  1033. req.param5 = '';
  1034. req.array1 = [0];
  1035. req.array2 = [''];
  1036. req.options = 0x2; //0x1:更新到临时的root.ini; 0x2:更新到root.ini
  1037. req.additional = 0;
  1038. req.restartApp = false;
  1039. req.restartPC = false;
  1040. setSaveBtnStatus(false);
  1041. RVC.HealthmanagerEntityCtrl.DeployTerminal(req, function(ret) {
  1042. setSaveBtnStatus(true);
  1043. if(ret.errorCode === 0) {
  1044. let result = JSON.parse(ret[RVC.EntityController.sigResponseUUID])
  1045. if(result.result == 0) {
  1046. globalLastRemberAdapterName = adapter;
  1047. console.log('save adapter info');
  1048. utilShowToast('已保存,将重新刷新', 1000, function() {
  1049. LoadDeviceAdaptersWithEvent(false);
  1050. });
  1051. } else {
  1052. utilStartAlertDialog("保存失败:[" + result.result + "] " + result.additionalMsg);
  1053. }
  1054. } else {
  1055. RVC.HealthmanagerEntityCtrl.commErrorCallback(ret);
  1056. }
  1057. });
  1058. }
  1059. /**
  1060. * 结束基本硬件配置后的操作
  1061. */
  1062. function FinshedDevAdapterConfig()
  1063. {
  1064. let req = new Request();
  1065. req.preStep = DeployStepChain.AdapterConfig[preStepIndex];
  1066. req.currStep = DeployStepChain.AdapterConfig[curStepIndex];
  1067. req.nextStep = DeployStepChain.AdapterConfig[nextStepIndex];
  1068. req.param1 = 1; //Start
  1069. req.param2 = 1; //Force
  1070. req.param3 = 'PinPad';
  1071. req.param4 = ''; //Start param
  1072. req.param5 = '';
  1073. req.array1 = [0];
  1074. req.array2 = [''];
  1075. req.options = 0x4; //ControlEntity
  1076. req.additional = 0;
  1077. req.restartApp = false;
  1078. req.restartPC = false;
  1079. utilStartSubmitDialog();
  1080. RVC.HealthmanagerEntityCtrl.DeployTerminal(req, function(ret) {
  1081. utilStopSubmitDialog();
  1082. if(ret.errorCode === 0) {
  1083. let result = JSON.parse(ret[RVC.EntityController.sigResponseUUID])
  1084. if(result.result == 0) {
  1085. RVC.GuideController.gotoPage(result.nextStep);
  1086. // utilStartAlertDialog("操作成功,即将进入下一步", function() {
  1087. // });
  1088. } else {
  1089. utilStartAlertDialog("操作失败:[" + result.result + "] " + result.additionalMsg);
  1090. }
  1091. } else {
  1092. RVC.HealthmanagerEntityCtrl.commErrorCallback(ret);
  1093. }
  1094. });
  1095. }
  1096. function FinshedDeploy()
  1097. {
  1098. //RVC.HealthmanagerEntityCtrl.ControlTerminalLifeNo(1);
  1099. let req = new Request();
  1100. req.preStep = DeployStepChain.Finished[preStepIndex];
  1101. req.currStep = DeployStepChain.Finished[curStepIndex];
  1102. req.nextStep = DeployStepChain.Finished[nextStepIndex];
  1103. req.param1 = 0;
  1104. req.param2 = 0;
  1105. req.param3 = '';
  1106. req.param4 = '';
  1107. req.param5 = '';
  1108. req.array1 = [0];
  1109. req.array2 = [''];
  1110. req.additional = 0;
  1111. req.options = 0;
  1112. req.restartApp = true;
  1113. req.restartPC = false;
  1114. if(req.restartApp) {
  1115. utilStartSubmitDialog("请求重启应用,请稍后...");
  1116. } else {
  1117. utilStartSubmitDialog();
  1118. }
  1119. RVC.HealthmanagerEntityCtrl.DeployTerminal(req, function(ret) {
  1120. utilStopSubmitDialog();
  1121. if(ret.errorCode === 0) {
  1122. let result = JSON.parse(ret[RVC.EntityController.sigResponseUUID])
  1123. if(result.result == 0) {
  1124. if(req.restartApp || req.restartPC) {
  1125. RVC.GuideController.hideAllPage();
  1126. RVC.GuideController.hideAllRebootTipElem();
  1127. if(req.restartApp) {
  1128. $('#guide_restart_loading').show();
  1129. } else if(req.restartPC) {
  1130. $('#guide_reboot_loading').show();
  1131. }
  1132. $('#guide_reboot_page').show();
  1133. }
  1134. } else {
  1135. utilStartAlertDialog("操作失败:[" + result.result + "] " + result.additionalMsg);
  1136. }
  1137. } else {
  1138. RVC.HealthmanagerEntityCtrl.commErrorCallback(ret);
  1139. }
  1140. });
  1141. }
  1142. function FontInstallStateSwitch(installState)
  1143. {
  1144. if(installState === 0) {
  1145. $('#guide_font_installed_div').hide();
  1146. $('#guide_font_installed_sample_div').hide();
  1147. $('#guide_font_noinstall_div').show();
  1148. $('#guide_font_confirm_next').hide();
  1149. $('#guide_font_confirm_install').show();
  1150. } else if(installState === 1) {
  1151. var tip = '检测到字体已安装';
  1152. $('#guide_font_installed_content').html(tip);
  1153. $('#guide_font_noinstall_div').hide();
  1154. $('#guide_font_installed_div').show();
  1155. $('#guide_font_installed_sample_div').show();
  1156. $('#guide_font_confirm_install').hide();
  1157. $('#guide_font_confirm_next').show();
  1158. } else if(installState === 2) {
  1159. var tip = '字体安装成功!';
  1160. $('#guide_font_installed_content').html(tip);
  1161. $('#guide_font_noinstall_div').hide();
  1162. $('#guide_font_installed_div').hide();
  1163. $('#guide_font_installed_sample_div').hide();
  1164. $('#guide_font_confirm_install').hide();
  1165. $('#guide_font_confirm_next').show();
  1166. $('#guide_font_install_finished_div').show();
  1167. }
  1168. }
  1169. function SogouInstallStateSwitch(installState)
  1170. {
  1171. if(installState === 0) {
  1172. $('#guide_sogou_installed_div').hide();
  1173. $('#guide_sogou_noinstall_div').show();
  1174. $('#guide_sogou_install_next').hide();
  1175. $('#guide_sogou_install_start').show();
  1176. } else if(installState === 1) {
  1177. $('#guide_sogou_noinstall_div').hide();
  1178. $('#guide_sogou_installed_div').show();
  1179. $('#guide_sogou_install_start').hide();
  1180. $('#guide_sogou_install_next').show();
  1181. } else if(installState === 2) {
  1182. $('#guide_sogou_noinstall_div').hide();
  1183. $('#guide_sogou_installed_div').hide();
  1184. $('#guide_sogou_install_start').hide();
  1185. $('#guide_sogou_install_next').show();
  1186. $('#guide_sogou_install_finished_div').show();
  1187. }
  1188. }
  1189. function InstallSpecifiesFont()
  1190. {
  1191. let req = new Request();
  1192. req.preStep = DeployStepChain.FontInstall[preStepIndex];
  1193. req.currStep = DeployStepChain.FontInstall[curStepIndex];
  1194. req.nextStep = DeployStepChain.FontInstall[nextStepIndex];
  1195. req.param1 = 0;
  1196. req.param2 = 0;
  1197. req.param3 = '';
  1198. req.param4 = '';
  1199. req.param5 = '';
  1200. req.array1 = [0];
  1201. req.array2 = [''];
  1202. req.options = 2;
  1203. req.additional = 0;
  1204. req.restartApp = false;
  1205. req.restartPC = false;
  1206. utilStartSubmitDialog();
  1207. RVC.HealthmanagerEntityCtrl.DeployTerminal(req, function(ret) {
  1208. utilStopSubmitDialog();
  1209. if(ret.errorCode === 0) {
  1210. let result = JSON.parse(ret[RVC.EntityController.sigResponseUUID])
  1211. if(result.result == 0) {
  1212. FontInstallStateSwitch(2);
  1213. } else {
  1214. utilStartAlertDialog("安装失败:[" + result.result + "] " + result.additionalMsg);
  1215. }
  1216. } else {
  1217. RVC.HealthmanagerEntityCtrl.commErrorCallback(ret);
  1218. }
  1219. });
  1220. }
  1221. function InstallSogouInput()
  1222. {
  1223. let req = new Request();
  1224. req.preStep = DeployStepChain.SogouInstall[preStepIndex];
  1225. req.currStep = DeployStepChain.SogouInstall[curStepIndex];
  1226. req.nextStep = DeployStepChain.SogouInstall[nextStepIndex];
  1227. req.param1 = 0;
  1228. req.param2 = 0;
  1229. req.param3 = '';
  1230. req.param4 = '';
  1231. req.param5 = '';
  1232. req.array1 = [0];
  1233. req.array2 = [''];
  1234. req.options = 2; //安装搜狗输入法
  1235. req.additional = 0;
  1236. req.restartApp = false;
  1237. req.restartPC = false;
  1238. utilStartSubmitDialog();
  1239. RVC.HealthmanagerEntityCtrl.DeployTerminal(req, function(ret) {
  1240. utilStopSubmitDialog();
  1241. if(ret.errorCode === 0) {
  1242. let result = JSON.parse(ret[RVC.EntityController.sigResponseUUID])
  1243. if(result.result == 0) {
  1244. SogouInstallStateSwitch(2);
  1245. var tip = '安装成功!';
  1246. if(result.array2.length === 3) {
  1247. tip += '<br><br>版本:<strong>' + result.array2[0] + '</strong>';
  1248. tip += '<br>安装时间:<strong>' + result.array2[2] + '</strong>';
  1249. }
  1250. $('#guide_sogou_install_finished_content').html(tip);
  1251. } else {
  1252. utilStartAlertDialog("安装失败:[" + result.result + "] " + result.additionalMsg);
  1253. }
  1254. } else {
  1255. RVC.HealthmanagerEntityCtrl.commErrorCallback(ret);
  1256. }
  1257. });
  1258. }
  1259. function DisplayFontInstallState()
  1260. {
  1261. let req = new Request();
  1262. req.preStep = DeployStepChain.FontInstall[curStepIndex];
  1263. req.currStep = DeployStepChain.FontInstall[curStepIndex];
  1264. req.nextStep = DeployStepChain.FontInstall[curStepIndex];
  1265. req.param1 = 0;
  1266. req.param2 = 0;
  1267. req.param3 = '';
  1268. req.param4 = '';
  1269. req.param5 = '';
  1270. req.array1 = [0];
  1271. req.array2 = [''];
  1272. req.options = 1; //检测字体的安装状态
  1273. req.additional = 0;
  1274. req.restartApp = false;
  1275. req.restartPC = false;
  1276. RVC.HealthmanagerEntityCtrl.DeployTerminal(req, function(ret) {
  1277. if(ret.errorCode === 0) {
  1278. let result = JSON.parse(ret[RVC.EntityController.sigResponseUUID])
  1279. if(result.result == 0) {
  1280. if(result.param1 === 1) {
  1281. FontInstallStateSwitch(1);
  1282. } else {
  1283. FontInstallStateSwitch(0);
  1284. }
  1285. } else {
  1286. utilStartAlertDialog("查询失败:[" + result.result + "] " + result.additionalMsg);
  1287. }
  1288. } else {
  1289. RVC.HealthmanagerEntityCtrl.commErrorCallback(ret);
  1290. }
  1291. });
  1292. }
  1293. function DisplaySogouInstallState()
  1294. {
  1295. let req = new Request();
  1296. req.preStep = DeployStepChain.SogouInstall[curStepIndex];
  1297. req.currStep = DeployStepChain.SogouInstall[curStepIndex];
  1298. req.nextStep = DeployStepChain.SogouInstall[curStepIndex];
  1299. req.param1 = 0;
  1300. req.param2 = 0;
  1301. req.param3 = '';
  1302. req.param4 = '';
  1303. req.param5 = '';
  1304. req.array1 = [0];
  1305. req.array2 = [''];
  1306. req.options = 1; //检测输入法的安装状态
  1307. req.additional = 0;
  1308. req.restartApp = false;
  1309. req.restartPC = false;
  1310. RVC.HealthmanagerEntityCtrl.DeployTerminal(req, function(ret) {
  1311. if(ret.errorCode === 0) {
  1312. let result = JSON.parse(ret[RVC.EntityController.sigResponseUUID])
  1313. if(result.result == 0) {
  1314. if(result.param1 === 1) {
  1315. SogouInstallStateSwitch(1);
  1316. var tip = '检测到输入法已安装!';
  1317. if(result.array2.length === 3) {
  1318. tip += '<br><br>版本:<strong>' + result.array2[0] + '</strong>';
  1319. tip += '<br>安装时间:<strong>' + result.array2[2] + '</strong>';
  1320. }
  1321. $('#guide_sogou_installed_content').html(tip);
  1322. console.log(tip);
  1323. } else {
  1324. SogouInstallStateSwitch(0);
  1325. }
  1326. } else {
  1327. utilStartAlertDialog("查询失败:[" + result.result + "] " + result.additionalMsg);
  1328. }
  1329. } else {
  1330. RVC.HealthmanagerEntityCtrl.commErrorCallback(ret);
  1331. }
  1332. });
  1333. }
  1334. function FulfillTerminalBasicInfo(val) {
  1335. let req = new Request();
  1336. RVC.DeviceControlEntityCtrl.QueryHardwareInfo(req, function(ret){
  1337. if (ret.errorCode === 0) {
  1338. let result = JSON.parse(ret[RVC.EntityController.sigResponseUUID])
  1339. if(result.terminalNo === '') {
  1340. $('#page_footer #termina_no_td').hide();
  1341. } else {
  1342. $('#page_footer #termina_no_td').show();
  1343. $('#page_footer #terminal_no').html('终端号:' + result.terminalNo);
  1344. }
  1345. //$('#machineType span').html(result.machineType);
  1346. //$('#deploySite span').html(result.site);
  1347. $('#page_footer #app_version').html('应用版本:' + result.termVersion);
  1348. $('#page_footer #footer_local_ip').html('IP:' + result.ip[0]);
  1349. $('#page_footer #footer_local_mac').html('MAC:' + result.mac[0]);
  1350. $('#page_footer').show();
  1351. } else {
  1352. $('#page_footer').hide();
  1353. utilShowToast("获取终端信息失败:" + ErrorCodeStringfy(ret.errorCode));
  1354. }
  1355. });
  1356. }
  1357. RVC.GuideController = RVC.Object.extend({
  1358. hideAllPage: function () {
  1359. $('#guide_start_page').hide();
  1360. $('#guide_font_confirm_page').hide();
  1361. $('#guide_sogou_install_page').hide();
  1362. $('#guide_init_param_page').hide();
  1363. $('#guide_adapter_config_page').hide();
  1364. $('#guide_media_config_page').hide();
  1365. $('#guide_sync_centersetting_page').hide();
  1366. $('#guide_access_authorize_page').hide();
  1367. $('#guide_finish_page').hide();
  1368. $('#guide_reboot_page').hide();
  1369. },
  1370. hideAllRebootTipElem: function() {
  1371. $('#reboot_operate').hide();
  1372. $('#guide_rebootinfo').hide();
  1373. $('#guide_rebootinfo_need_restart').hide();
  1374. $('#guide_rebootinfo_need_reboot').hide();
  1375. $('#guide_reboot_application_button').hide();
  1376. $('#guide_reboot_device_button').hide();
  1377. $('#guide_finished_button').hide();
  1378. $('#guide_finish_device_button').hide();
  1379. $('#guide_save_loading').hide();
  1380. $('#guide_reboot_loading').hide();
  1381. $('#guide_restart_loading').hide();
  1382. },
  1383. resizeWindow: function () {
  1384. var winHei = $(window).height();
  1385. var popHeight = 480;
  1386. var adjustHeight = 0;
  1387. var blueBackgroundHeight = 0;
  1388. if (winHei < 860) {
  1389. winHei = 860;
  1390. }
  1391. blueBackgroundHeight = winHei - $('.headcontainer').height() - $('#page_footer').height();
  1392. $('#guide_height').height(blueBackgroundHeight);
  1393. adjustHeight = (blueBackgroundHeight - popHeight) * 0.5;
  1394. $('#guide_start_page').css('padding-top', (adjustHeight + 100) + 'px');
  1395. var domWidth = $('body').width();
  1396. var winWidth = $('window').width();
  1397. if (domWidth > winWidth) {
  1398. setTimeout(function () {
  1399. $('body').scrollTop($('.headcontainer').height() + adjustHeight);
  1400. $('body').scrollLeft(($('body').width() - $(window).width()) / 2);
  1401. }, 1000)
  1402. }
  1403. $('#guide_init_param_page').css('padding-top', adjustHeight + 'px');
  1404. $('#guide_font_confirm_page').css('padding-top', adjustHeight + 'px');
  1405. $('#guide_sogou_install_page').css('padding-top', adjustHeight + 'px');
  1406. $('#guide_media_config_page').css('padding-top', adjustHeight + 'px');
  1407. $('#guide_adapter_config_page').css('padding-top', adjustHeight + 'px');
  1408. $('#guide_sync_centersetting_page').css('padding-top', adjustHeight + 'px');
  1409. $('#guide_access_authorize_page').css('padding-top', adjustHeight + 'px');
  1410. $('#guide_finish_page,#guide_reboot_page').css('padding-top', adjustHeight + 'px');
  1411. },
  1412. beginInstall: function() {
  1413. this.gotoPage(DEPLOY.DeployStep_3rdParty_FontInstall);
  1414. },
  1415. getPage: function(step) {
  1416. var select_page = '';
  1417. switch(step) {
  1418. case DEPLOY.DeployStep_Begin:
  1419. select_page = 'guide_start_page';
  1420. break;
  1421. case DEPLOY.DeployStep_GetTerminalInfo :
  1422. select_page = 'guide_init_param_page';
  1423. break;
  1424. case DEPLOY.DeployStep_FetchCenterSettings:
  1425. select_page = 'guide_sync_centersetting_page';
  1426. break;
  1427. case DEPLOY.DeployStep_AccessAuthorize :
  1428. select_page = 'guide_access_authorize_page';
  1429. break;
  1430. case DEPLOY.DeployStep_MediaConfig :
  1431. select_page = 'guide_media_config_page';
  1432. break;
  1433. case DEPLOY.DeployStep_AdapterConfig :
  1434. select_page = 'guide_adapter_config_page';
  1435. break;
  1436. case DEPLOY.DeployStep_Finished :
  1437. select_page = 'guide_finish_page';
  1438. break
  1439. case DEPLOY.DeployStep_3rdParty_SogouInstall:
  1440. select_page = 'guide_sogou_install_page';
  1441. break;
  1442. case DEPLOY.DeployStep_3rdParty_FontInstall:
  1443. select_page = 'guide_font_confirm_page';
  1444. break;
  1445. default:
  1446. break;
  1447. }
  1448. return select_page;
  1449. },
  1450. checkPageAvailable: function(step) {
  1451. const select_page = this.getPage(step);
  1452. if(select_page !== '') {
  1453. return true;
  1454. } else {
  1455. return false;
  1456. }
  1457. },
  1458. preLoadPage: function(step) {
  1459. this.hideAllPage();
  1460. switch(step) {
  1461. case DEPLOY.DeployStep_MediaConfig:
  1462. FulfillMediaDeviceList();
  1463. break;
  1464. case DEPLOY.DeployStep_AdapterConfig:
  1465. adapterTestFailedCount = 0;
  1466. InitCurrentVendorSelect();
  1467. break;
  1468. case DEPLOY.DeployStep_FetchCenterSettings:
  1469. InitCenterSettingInputParam();
  1470. break;
  1471. case DEPLOY.DeployStep_3rdParty_SogouInstall:
  1472. DisplaySogouInstallState();
  1473. break;
  1474. case DEPLOY.DeployStep_3rdParty_FontInstall:
  1475. DisplayFontInstallState();
  1476. break;
  1477. default:
  1478. break;
  1479. }
  1480. },
  1481. postLoadPage: function(step) {
  1482. switch(step) {
  1483. case DEPLOY.DeployStep_Finished:
  1484. globalFinishedFlag = true;
  1485. break;
  1486. case DEPLOY.DeployStep_AdapterConfig:
  1487. InterestRootSwitch(true);
  1488. $(document).off('keyup change', '#guide_adapter_config_baudrate_input,#guide_adapter_config_port_input');
  1489. $(document).on('keyup change', '#guide_adapter_config_baudrate_input,#guide_adapter_config_port_input', function () {
  1490. setSaveBtnStatus(true);
  1491. });
  1492. apdaterTestAllBefore = 0;
  1493. break;
  1494. case DEPLOY.DeployStep_AccessAuthorize:
  1495. InitAccessAuthParam();
  1496. break;
  1497. default:
  1498. break;
  1499. }
  1500. },
  1501. gotoPage: function(nextStep) {
  1502. var select_page = this.getPage(nextStep);
  1503. if(select_page !== '') {
  1504. this.preLoadPage(nextStep);
  1505. $('#' + select_page).show();
  1506. this.postLoadPage(nextStep);
  1507. } else {
  1508. utilShowToast('不支持步骤!无法识别:' + nextStep, 5000);
  1509. }
  1510. },
  1511. sectOverPass: function() {
  1512. },
  1513. sectNext: function() {
  1514. },
  1515. setNavigaBtnAble: function(enable) {
  1516. }
  1517. });
  1518. $(document).on('click', '#guide_init_param_ip_check #ip_connect_check', function(){
  1519. var ip = $('#guide_server_ip').val();
  1520. console.log('ip: ' + ip);
  1521. IPConnectableTest(ip);
  1522. });
  1523. $(document).on('click', '#guide_init_param_next', function() {
  1524. const ip = $('#guide_server_ip').val();
  1525. const terminalno = $('#guide_init_param_terminalno').val();
  1526. var tmp = $('#guide_init_param_device_sn').val();
  1527. const deviceSN = tmp.replace(/^\s*|\s*$/g,"");
  1528. if(!isValidIpAddress(ip)) {
  1529. utilStartAlertDialog("无效IP格式");
  1530. return;
  1531. }
  1532. const vendorType = $('#gui_init_param_vendor').attr('value');
  1533. if(vendorType === '' || vendorType === 'None') {
  1534. utilStartAlertDialog("请选择设备厂商");
  1535. return;
  1536. }
  1537. const deviceModel = $('#gui_init_param_device_model').attr('value');
  1538. if(deviceSN === '') {
  1539. utilStartAlertDialog("请输入设备序列号");
  1540. return;
  1541. }
  1542. if(!IsDigital(terminalno)) {
  1543. utilStartAlertDialog("无效终端号格式");
  1544. return;
  1545. }
  1546. utilStartConfirmDialog("<span>基本信息录入后将不可更改,如需重新配置可通过点击页面右上角菜单</span><span><img src=\"./images/clear.png\" style=\"width:20px;height:20px;padding: 0px 2px;\"></span><span>进行重置,请确认是否提交?</span>", function() {
  1547. InitTemrinalAbout(ip, terminalno, vendorType, deviceModel, deviceSN);
  1548. });
  1549. });
  1550. $(document).on('click', '#gui_adapter_config_adapter_check_btn', function() {
  1551. var adapterName = $('#gui_adapter_config_adapter').attr('value');
  1552. var paramPort = $('#guide_adapter_config_port_input').val();
  1553. var paramBaudrate = $('#guide_adapter_config_baudrate_input').val();
  1554. CheckDevAdapterAvailable(adapterName, paramPort, paramBaudrate);
  1555. });
  1556. $(document).on('click', '#guide_adapter_config_test', function() {
  1557. TestAllAdapterAvailableOrNot();
  1558. });
  1559. $(document).on('click', '#guide_adapter_config_save', function() {
  1560. var adapterName = $('#gui_adapter_config_adapter').attr('value');
  1561. var paramPort = $('#guide_adapter_config_port_input').val();
  1562. var paramBaudrate = $('#guide_adapter_config_baudrate_input').val();
  1563. SaveDevAdapterInfo(adapterName, paramPort, paramBaudrate);
  1564. });
  1565. $(document).on('click', '#guide_adapter_config_next', function() {
  1566. var tips = '';
  1567. if(apdaterTestAllBefore === 0) {
  1568. tips = '还未进行过【配置有效性检测】,请确认是否要跳过?(首次安装强烈建议至少执行一次配置有效性检测)';
  1569. } else if(apdaterTestAllBefore === 1) {
  1570. tips = '之前检测存在模块未通过验证,请确认是否要跳过?(强烈建议所有模块检测通过后再进入下一步)';
  1571. }
  1572. if(tips !== '') {
  1573. utilStartConfirmDialog(tips, function() {
  1574. FinshedDevAdapterConfig();
  1575. });
  1576. } else {
  1577. FinshedDevAdapterConfig();
  1578. }
  1579. });
  1580. $(document).on('click', '#guide_sync_centersetting_next', function() {
  1581. const ip = $('#guide_sync_centersetting_server_ip_content').val();
  1582. const port = $('#guide_sync_centersetting_port_content').val();
  1583. if(!isValidIpAddress(ip)) {
  1584. utilStartAlertDialog("无效IP格式");
  1585. return;
  1586. }
  1587. if(!check_port(port)) {
  1588. utilStartAlertDialog("无效端口号");
  1589. return;
  1590. }
  1591. DownloadCenterSetting(ip, port);
  1592. });
  1593. $(document).on('click', '#guide_access_authorize_next', function() {
  1594. const ip = $('#guide_access_authorize_server_ip_content').val();
  1595. const port = $('#guide_access_authorize_port_content').val();
  1596. const username = $('#guide_access_authorize_username_content').val();
  1597. const psw = $('#guide_access_authorize_password_content').val();
  1598. if(!isValidIpAddress(ip)) {
  1599. utilStartAlertDialog("无效IP格式");
  1600. return;
  1601. }
  1602. if(!check_port(port)) {
  1603. utilStartAlertDialog("无效端口号");
  1604. return;
  1605. }
  1606. if(username === '') {
  1607. utilStartAlertDialog("请输入用户名");
  1608. return;
  1609. }
  1610. if(psw === '') {
  1611. utilStartAlertDialog("请输入密码");
  1612. return;
  1613. }
  1614. AuthorizeTerminal(ip, port, username, psw);
  1615. });
  1616. $(document).on('click', '#guide_media_config_refresh', function() {
  1617. FulfillMediaDeviceList(true);
  1618. });
  1619. $(document).on('click', '#guide_media_config_next', function() {
  1620. SaveMediaDeviceConfig();
  1621. });
  1622. $(document).on('click', '#guide_sogou_install_next', function() {
  1623. RVC.GuideController.gotoPage(DEPLOY.DeployStep_GetTerminalInfo);
  1624. });
  1625. $(document).on('click', '#guide_sogou_install_start', function() {
  1626. InstallSogouInput();
  1627. });
  1628. //字体安装按钮
  1629. $(document).on('click', '#guide_font_confirm_install', function() {
  1630. InstallSpecifiesFont();
  1631. });
  1632. //字体安装页面下一步按钮
  1633. $(document).on('click', '#guide_font_confirm_next', function() {
  1634. RVC.GuideController.gotoPage(DEPLOY.DeployStep_3rdParty_SogouInstall);
  1635. });
  1636. $(document).on('click', '#guide_finish_restart_btn', function() {
  1637. FinshedDeploy();
  1638. });
  1639. $(document).on('click', '#reset_btn', function() {
  1640. utilStartConfirmDialog("确认要重置当前终端的配置?(操作不可撤销)", function() {
  1641. ResetDeployConfig();
  1642. });
  1643. });
  1644. $('#header_right #quitpage_btn_div').bind('click', function() {
  1645. if(!globalFinishedFlag) {
  1646. utilStartConfirmDialog("配置还未完成,确定要退出当前配置吗?(应用也将退出)", function() {
  1647. AbortDeployConfig();
  1648. });
  1649. } else {
  1650. AbortDeployConfig(true);
  1651. }
  1652. });
  1653. $('#header_right #rebootapp_btn_div').bind('click', function() {
  1654. if(!globalFinishedFlag) {
  1655. utilStartConfirmDialog("配置还未完成,确定要重启应用吗?", function() {
  1656. RVC.HealthmanagerEntityCtrl.RestartApp(true);
  1657. RVC.GuideController.hideAllPage();
  1658. RVC.GuideController.hideAllRebootTipElem();
  1659. $('#guide_restart_loading').show();
  1660. $('#guide_reboot_page').show();
  1661. });
  1662. } else {
  1663. RVC.HealthmanagerEntityCtrl.RestartApp(true);
  1664. RVC.GuideController.hideAllPage();
  1665. RVC.GuideController.hideAllRebootTipElem();
  1666. $('#guide_restart_loading').show();
  1667. $('#guide_reboot_page').show();
  1668. }
  1669. });
  1670. $('#header_right #restartpc_btn_div').bind('click', function() {
  1671. if(!globalFinishedFlag) {
  1672. utilStartConfirmDialog("配置还未完成,确定要重启设备吗?", function() {
  1673. RVC.HealthmanagerEntityCtrl.RestartPC(true);
  1674. RVC.GuideController.hideAllPage();
  1675. RVC.GuideController.hideAllRebootTipElem();
  1676. $('#guide_reboot_loading').show();
  1677. $('#guide_reboot_page').show();
  1678. });
  1679. } else {
  1680. RVC.HealthmanagerEntityCtrl.RestartPC(true);
  1681. RVC.GuideController.hideAllPage();
  1682. RVC.GuideController.hideAllRebootTipElem();
  1683. $('#guide_reboot_loading').show();
  1684. $('#guide_reboot_page').show();
  1685. }
  1686. });
  1687. if (window.addEventListener) {
  1688. window.addEventListener('resize', RVC.GuideController.resizeWindow, false);
  1689. } else {
  1690. window.attachEvent('resize', RVC.GuideController.resizeWindow);
  1691. }
  1692. RVC.CameraConfigEntity.init();
  1693. if (window.location.href.indexOf('guide.html') !== -1) {
  1694. RVC.GuideController.resizeWindow();
  1695. RVC.Scroll.initScroll('#init_param_content');
  1696. $('#header_right #header_help_info_div').bind('click', function() {
  1697. //reloadThisPage();
  1698. //RVC.HealthmanagerEntityCtrl.OpenLocalMaintainPage();
  1699. utilStartAlertDialog('功能暂未实现!');
  1700. });
  1701. //console.log("href:" + window.location.href);
  1702. //console.log("search:" + window.location.search);
  1703. var pageIdx = getQueryStringByName('page');
  1704. var terminalNo = getQueryStringByName('terminalno');
  1705. var vendorAbbr = getQueryStringByName('vendor');
  1706. var serverIP = getQueryStringByName('ip');
  1707. if(terminalNo !== null && terminalNo.length > 0 && terminalNo !== 'null') {
  1708. globalTerminalNo = terminalNo;
  1709. }
  1710. if(vendorAbbr !== null && vendorAbbr.length > 0 && vendorAbbr !== 'null') {
  1711. globalSelectVendorType = vendorAbbr;
  1712. }
  1713. if(serverIP !== null && serverIP.length > 0 && serverIP !== 'null') {
  1714. globalServerIP = serverIP;
  1715. }
  1716. if(pageIdx !== null && pageIdx.length > 0 && pageIdx !== 'null' && IsDigital(pageIdx)) {
  1717. var step = parseInt(pageIdx, 10);
  1718. if(RVC.GuideController.checkPageAvailable(step)) {
  1719. utilStartAlertDialog('请点击确认按钮继续进行上次未完成的配置', function() {
  1720. RVC.GuideController.gotoPage(step);
  1721. });
  1722. }
  1723. } else {
  1724. /**
  1725. * DeployStep_Begin : 0,
  1726. DeployStep_GetTerminalInfo : 1,
  1727. DeployStep_FetchCenterSettings : 2,
  1728. DeployStep_AccessAuthorize : 3,
  1729. DeployStep_MediaConfig : 4,
  1730. DeployStep_Finished : 5,
  1731. DeployStep_AdapterConfig : 6,
  1732. DeployStep_3rdParty_SogouInstall : 7,
  1733. DeployStep_3rdParty_FontInstall
  1734. *
  1735. */
  1736. RVC.GuideController.gotoPage(DEPLOY.DeployStep_Begin);
  1737. }
  1738. FulfillTerminalBasicInfo();
  1739. }
  1740. setTimeout(RVC.GuideController.resizeWindow, 200);
  1741. });