guide.js 88 KB

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