startup.service.ts 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. import { Injectable, Inject } from '@angular/core';
  2. import { HttpClient } from '@angular/common/http';
  3. import { zip } from 'rxjs';
  4. import { catchError } from 'rxjs/operators';
  5. import { MenuService, SettingsService, TitleService, ALAIN_I18N_TOKEN } from '@delon/theme';
  6. import { ACLService } from '@delon/acl';
  7. import { TranslateService } from '@ngx-translate/core';
  8. import { I18NService } from '../i18n/i18n.service';
  9. import { NzIconService } from 'ng-zorro-antd';
  10. import { ICONS_AUTO } from '../../../style-icons-auto';
  11. import { ICONS } from '../../../style-icons';
  12. /**
  13. * 用于应用启动时
  14. * 一般用来获取应用所需要的基础数据等
  15. */
  16. @Injectable()
  17. export class StartupService {
  18. constructor(
  19. iconSrv: NzIconService,
  20. private menuService: MenuService,
  21. private translate: TranslateService,
  22. @Inject(ALAIN_I18N_TOKEN) private i18n: I18NService,
  23. private settingService: SettingsService,
  24. private aclService: ACLService,
  25. private titleService: TitleService,
  26. private httpClient: HttpClient,
  27. private i18NService:I18NService
  28. ) {
  29. iconSrv.addIcon(...ICONS_AUTO, ...ICONS);
  30. }
  31. load(): Promise<any> {
  32. // only works with promises
  33. // https://github.com/angular/angular/issues/15088
  34. return new Promise((resolve) => {
  35. //加载翻译信息
  36. this.httpClient.get(`assets/tmp/i18n/${this.i18n.defaultLang}.json`).subscribe((langData) => {
  37. this.translate.setTranslation(this.i18n.defaultLang, langData);
  38. this.translate.setDefaultLang(this.i18n.defaultLang);
  39. })
  40. zip(
  41. // this.httpClient.get(`assets/tmp/i18n/${this.i18n.defaultLang}.json`),
  42. this.httpClient.get('sys/ng-alain/getAppData')
  43. //this.httpClient.get('./assets/tmp/app-data.json')
  44. ).pipe(
  45. // 接收其他拦截器后产生的异常消息
  46. catchError(([appData]) => {
  47. resolve(null);
  48. return [appData];
  49. }),
  50. ).subscribe(([appData]) => {
  51. // <<<<<<< HEAD
  52. // // setting language data
  53. // // this.translate.setTranslation(this.i18n.defaultLang, langData);
  54. // // this.translate.setDefaultLang(this.i18n.defaultLang);
  55. // // application data
  56. // if (appData == null) {
  57. // return;
  58. // }
  59. // const res: any = appData.result;
  60. // // 应用信息:包括站点名、描述、年份
  61. // this.settingService.setApp(res.app);
  62. // // 用户信息:包括姓名、头像、邮箱地址
  63. // this.settingService.setUser(res.user);
  64. // // ACL:设置权限为全量
  65. // //this.aclService.setFull(true);
  66. // this.aclService.setAbility(res.perms);
  67. // // 初始化菜单
  68. // this.menuService.add(res.menu);
  69. // // 设置页面标题的后缀
  70. // this.titleService.default = '';
  71. // this.titleService.suffix = "斑马自动化办公信息系统";
  72. // },
  73. // () => { },
  74. // () => {
  75. // resolve(null);
  76. // },
  77. // );
  78. // =======
  79. // setting language data
  80. // this.translate.setTranslation(this.i18n.defaultLang, langData);
  81. // this.translate.setDefaultLang(this.i18n.defaultLang);
  82. // application data
  83. if (appData == null) {
  84. return;
  85. }
  86. const res: any = appData.result;
  87. // 应用信息:包括站点名、描述、年份
  88. this.settingService.setApp(res.app);
  89. // 用户信息:包括姓名、头像、邮箱地址
  90. this.settingService.setUser(res.user);
  91. // ACL:设置权限为全量
  92. //this.aclService.setFull(true);
  93. this.aclService.setAbility(res.perms);
  94. // 初始化菜单
  95. // res.menu.forEach((element) => {
  96. // element.children.forEach((e, i) => {
  97. // if (i === 8) {
  98. // e.children.forEach((ele) => {
  99. // console.warn(111111)
  100. // ele.children = [];
  101. // ele.children = [
  102. // ...ele.children,
  103. // {
  104. // disabled: false,
  105. // externalLink: "",
  106. // group: true,
  107. // i18n: "menu.Log.Management",
  108. // icon: { theme: "outline", spin: false, type: "icon", value: "" },
  109. // link: "projectMilestones/bioequivalencePretest",
  110. // reuse: true,
  111. // text: "12312312",
  112. // __id: 72,
  113. // _aclResult: true,
  114. // _depth: 2,
  115. // _hidden: false,
  116. // _open: false,
  117. // _selected: false,
  118. // _type: 1,
  119. // }
  120. // ];
  121. // })
  122. // }
  123. // })
  124. // });
  125. // let icon = null;
  126. // res.menu.forEach((element) => {
  127. // element.children.forEach((e, i) => {
  128. // if (i === 2) {
  129. // icon = e.icon;
  130. // console.error("icon")
  131. // console.error(icon)
  132. // }
  133. // // if (e.text === "项目里程碑") {
  134. // // e.children.forEach((cli, index) => {
  135. // // if (cli.text === "生物等效性预试验") {
  136. // // e.children.splice(index, 1);
  137. // // const preliminaryExperiment = cli;
  138. // // preliminaryExperiment.__parent = element;
  139. // // preliminaryExperiment.icon = "anticon anticon-profile";
  140. // // element.children.push(preliminaryExperiment);
  141. // // }
  142. // // })
  143. // // }
  144. // });
  145. // });
  146. // console.error(res.menu)
  147. this.menuService.add(res.menu);
  148. // 设置页面标题的后缀
  149. this.titleService.default = '';
  150. // this.titleService.suffix = "方达项目管理系统";
  151. // this.titleService.suffix=this.i18NService.fanyi("app.login.title");
  152. this.titleService.suffix="福玻斯";
  153. // this.titleService.suffix="上海萃颠信息科技有限公司";
  154. },
  155. () => { },
  156. () => {
  157. resolve(null);
  158. },
  159. );
  160. });
  161. }
  162. getI18nData() {
  163. var p = new Promise(function (resolve, reject) {
  164. //做一些异步操作
  165. this.httpClient.get(`assets/tmp/i18n/${this.i18n.defaultLang}.json`);
  166. });
  167. return p;
  168. }
  169. getAppData() {
  170. var p = new Promise(function (resolve, reject) {
  171. //做一些异步操作
  172. this.httpClient.get('sys/ng-alain/getAppData');
  173. });
  174. return p;
  175. }
  176. }