configuration-center.component.html 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372
  1. <div class="configurationCenter">
  2. <div class="tagsAndTemplete">
  3. <div class="tags">
  4. <div><i class="icon_transport transport-peizhizhongxin"></i>配置中心&emsp;&gt;&emsp;事件配置</div>
  5. <div class="tagList">
  6. <span *ngFor="let tag of tagList" [ngClass]="{ active: activeTagId === tag.id }" (click)="clickTag(tag)">{{ tag.name }}</span>
  7. </div>
  8. <button nz-button class="btn default" (click)="goBack()">返回</button>
  9. </div>
  10. </div>
  11. <!-- 故障现象 -->
  12. <ng-container *ngIf="activeTagId === 1">
  13. <div class="hospitalConfig">
  14. <nz-radio-group [(ngModel)]="hospitalConfig" (ngModelChange)="changeHospitalConfig($event)">
  15. <label nz-radio [nzValue]="item.id" *ngFor="let item of hospitalConfigList">{{ item.name }}</label>
  16. </nz-radio-group>
  17. </div>
  18. <div class="content">
  19. <div class="contentInner">
  20. <div class="address">
  21. <div class="contentHead">一级故障现象<button nz-button nzType="primary" nzSize="small" (click)="addCategoryModal(1)">新增</button></div>
  22. <overlay-scrollbars #osComponentRef1 class="contentBody">
  23. <nz-spin nzSimple [nzSpinning]="categoryLoading1" class="mt8 text_align_center"></nz-spin>
  24. <div [hidden]="categoryLoading1" class="contentItem" [ngClass]="{ active: item.id === activeCategory1.id }" (click)="clickCategory(item, 1)" *ngFor="let item of categoryList1">{{ item.category }}</div>
  25. </overlay-scrollbars>
  26. </div>
  27. <div class="address">
  28. <div class="contentHead">二级故障现象<button nz-button nzType="primary" nzSize="small" *ngIf="activeCategory1.id" (click)="addCategoryModal(2)">新增</button></div>
  29. <overlay-scrollbars #osComponentRef2 class="contentBody">
  30. <nz-spin nzSimple [nzSpinning]="categoryLoading2" class="mt8 text_align_center"></nz-spin>
  31. <div [hidden]="categoryLoading2" class="contentItem" [ngClass]="{ active: item.id === activeCategory2.id }" (click)="clickCategory(item, 2)" *ngFor="let item of categoryList2">{{ item.category }}</div>
  32. </overlay-scrollbars>
  33. </div>
  34. <div class="address">
  35. <div class="contentHead">三级故障现象<button nz-button nzType="primary" nzSize="small" *ngIf="activeCategory2.id" (click)="addCategoryModal(3)">新增</button></div>
  36. <overlay-scrollbars #osComponentRef3 class="contentBody">
  37. <nz-spin nzSimple [nzSpinning]="categoryLoading3" class="mt8 text_align_center"></nz-spin>
  38. <div [hidden]="categoryLoading3" class="contentItem" [ngClass]="{ active: item.id === activeCategory3.id }" (click)="clickCategory(item, 3)" *ngFor="let item of categoryList3">{{ item.category }}</div>
  39. </overlay-scrollbars>
  40. </div>
  41. <div class="addressAssign">
  42. <div class="contentHead">
  43. <div class="title" title="{{activeCategory1.category}}{{activeCategory2.category ? ' - ' + activeCategory2.category : ''}}{{activeCategory3.category ? ' - ' + activeCategory3.category : ''}}">{{activeCategory1.category}}{{activeCategory2.category ? ' - ' + activeCategory2.category : ''}}{{activeCategory3.category ? ' - ' + activeCategory3.category : ''}}</div>
  44. <div class="btns" *ngIf="activeCategory1.id || activeCategory2.id || activeCategory3.id">
  45. <button nz-button nzType="primary" nzSize="small" (click)="showDelModal(data, hospitalConfig === 1 ? '您确认向下复制您的配置信息吗?' : '您确认向下复制您的配置吗?将会移除各科室的配置,使用当前配置进行覆盖。','向下复制','copy')" *ngIf="currentChildrenCategoryList">向下复制</button>
  46. <button nz-button nzType="primary" nzSize="small" class="ml8" *ngIf="hospitalConfig === 2" (click)="addConfigModal()">新增</button>
  47. </div>
  48. </div>
  49. <div class="contentBody" id="categoryTable">
  50. <div class="list-template">
  51. <div class="list-template__content">
  52. <div class="list-template__bottom">
  53. <nz-table class="list-template__nzTable" [nzData]="categoryConfigList" nzSize="middle" [nzShowPagination]="false"
  54. [nzLoading]="loading1" [nzScroll]="{ y: tableCategoryHeight + 'px' }">
  55. <thead>
  56. <tr class="thead">
  57. <th nzWidth="16%">院区</th>
  58. <th nzWidth="16%">责任部门</th>
  59. <th nzWidth="16%">优先级</th>
  60. <th nzWidth="16%">积分</th>
  61. <th nzWidth="16%">维修人|组</th>
  62. <th nzWidth="20%">操作</th>
  63. </tr>
  64. </thead>
  65. <tbody>
  66. <tr *ngFor="let data of categoryConfigList;let i = index">
  67. <td>{{data.hospitalDTO?.hosName}}</td>
  68. <td>{{data.dutyDTO?.hosName}}</td>
  69. <td>{{data.priorityDTO?.name}}</td>
  70. <td>{{data.score?.value}}</td>
  71. <td>{{data.userGroup === 1 ? data.userDTO?.name : (data.userGroup === 2 ? data.groupDTO?.groupName : '')}}</td>
  72. <td>
  73. <div class="coop">
  74. <span (click)="showDelModal(data,'您确认要删除吗?','删除','delConfig')">删除</span>
  75. <span (click)="editConfig(data)">编辑</span>
  76. </div>
  77. </td>
  78. </tr>
  79. </tbody>
  80. </nz-table>
  81. </div>
  82. </div>
  83. </div>
  84. </div>
  85. </div>
  86. </div>
  87. </div>
  88. </ng-container>
  89. <!-- 优先级 -->
  90. <ng-container *ngIf="activeTagId === 2">
  91. <div class="content priority">
  92. <div class="contentInner">
  93. <div class="list-template" id="priorityTable">
  94. <div class="list-template__content">
  95. <div class="list-template__bottom">
  96. <div class="list-template__top" nz-row>
  97. <div nz-col nzLg="24" class="list-template__btns">
  98. <button nz-button class="btn default" (click)="addPriorityModal()">新增</button>
  99. </div>
  100. </div>
  101. <nz-table class="list-template__nzTable" [nzData]="priorityList" nzSize="middle" [nzShowPagination]="false"
  102. [nzLoading]="loading1" [nzScroll]="{ y: tablePriorityHeight + 'px' }">
  103. <thead>
  104. <tr class="thead">
  105. <th nzWidth="20%">优先级名称</th>
  106. <th nzWidth="20%">排序</th>
  107. <th nzWidth="20%">响应时间(分钟)</th>
  108. <th nzWidth="20%">解决时间(分钟)</th>
  109. <th nzWidth="20%">操作</th>
  110. </tr>
  111. </thead>
  112. <tbody>
  113. <tr *ngFor="let data of priorityList;let i = index">
  114. <td>{{data.name}}</td>
  115. <td>{{data.orders}}</td>
  116. <td>{{data.responseTime}}</td>
  117. <td>{{data.handleTime}}</td>
  118. <td>
  119. <div class="coop">
  120. <span (click)="showDelModal(data,'您确认要删除吗?','删除','delPriority')">删除</span>
  121. <span (click)="editPriority(data)">编辑</span>
  122. </div>
  123. </td>
  124. </tr>
  125. </tbody>
  126. </nz-table>
  127. </div>
  128. </div>
  129. </div>
  130. </div>
  131. </div>
  132. </ng-container>
  133. <!-- 数据字典 -->
  134. <ng-container *ngIf="activeTagId === 3">
  135. <div class="content" id="dictionary">
  136. <div class="contentInner">
  137. <div class="address">
  138. <overlay-scrollbars #osComponentRef5 class="contentBody">
  139. <div class="contentItem" [ngClass]="{ active: item.id === activeDictionaryKey.id }" (click)="clickDictionaryKey(item)" *ngFor="let item of dictionaryKeyList">{{ item.name }}</div>
  140. </overlay-scrollbars>
  141. </div>
  142. <div class="addressAssign">
  143. <div class="contentBody">
  144. <div class="dictionaryRow">
  145. <div class="name">键</div>
  146. <div class="value">值</div>
  147. </div>
  148. <form nz-form [formGroup]="validateDictionaryForm" class="w100">
  149. <div class="dictionaryRow" *ngFor="let data of dictionaryList;let i = index;">
  150. <div class="name">
  151. <nz-form-item>
  152. <nz-form-control [nzSpan]="24" nzErrorTip="请输入键!">
  153. <nz-input-group>
  154. <input [formControlName]="'name_' + data.id" nz-input class="nameInput">
  155. </nz-input-group>
  156. </nz-form-control>
  157. </nz-form-item>
  158. </div>
  159. <div class="value">
  160. <nz-form-item>
  161. <nz-form-control [nzSpan]="24" nzErrorTip="请输入值!">
  162. <nz-input-group>
  163. <nz-input-number [formControlName]="'value_' + data.id" class="valueInput"></nz-input-number>
  164. </nz-input-group>
  165. </nz-form-control>
  166. </nz-form-item>
  167. <i class="icon_transport transport-tag27fuben ml8" (click)="addField(i)"></i>
  168. <i class="icon_transport transport-shanchu1 ml8" *ngIf="dictionaryList.length > 1" (click)="removeField(data, i)"></i>
  169. </div>
  170. </div>
  171. </form>
  172. </div>
  173. <div class="contentBtns">
  174. <button nz-button nzType="primary" class="ml8" (click)="saveDictionary()">保存</button>
  175. </div>
  176. </div>
  177. </div>
  178. </div>
  179. </ng-container>
  180. </div>
  181. <!-- 操作成功/失败提示框 -->
  182. <app-prompt-modal *ngIf="promptModalShow" [content]="promptContent" [success]="ifSuccess" [show]="promptModalShow"
  183. [info]="promptInfo">
  184. </app-prompt-modal>
  185. <!-- 删除模态框 -->
  186. <app-dialog-delete [delModal]="delModal" (hideDelModalEvent)="hideDelModal()" [btnLoading]="btnLoading"
  187. (confirmDelEvent)="confirmDel()" [content]="tipsMsg1"></app-dialog-delete>
  188. <!-- 新增/编辑优先级模态框 -->
  189. <div class="save display_flex justify-content_flex-center align-items_center add" *ngIf="modalPriority">
  190. <div class="modalBody">
  191. <div class="title">{{modelName}}优先级<i class="icon_transport transport-guanbi" (click)="hidePriorityModal()"></i></div>
  192. <div class="content">
  193. <form nz-form [formGroup]="validatePriorityForm" class="addForm">
  194. <nz-form-item>
  195. <nz-form-label [nzSpan]="6" nzRequired nzFor="name">优先级名称</nz-form-label>
  196. <nz-form-control [nzSpan]="18" nzErrorTip="请输入优先级名称!">
  197. <nz-input-group>
  198. <input formControlName="name" nz-input placeholder="请输入优先级名称">
  199. </nz-input-group>
  200. </nz-form-control>
  201. </nz-form-item>
  202. <nz-form-item>
  203. <nz-form-label [nzSpan]="6" nzRequired nzFor="orders">排&nbsp;&nbsp;&nbsp;序&nbsp;&nbsp;&nbsp;号</nz-form-label>
  204. <nz-form-control [nzSpan]="18" nzErrorTip="请输入排序号!">
  205. <nz-input-group>
  206. <nz-input-number class="w100" formControlName="orders" nzPlaceHolder="请输入排序号" [nzMin]="0" [nzStep]="1" [nzPrecision]="0"></nz-input-number>
  207. </nz-input-group>
  208. </nz-form-control>
  209. </nz-form-item>
  210. <nz-form-item>
  211. <nz-form-label [nzSpan]="6" nzRequired nzFor="responseTime">响&nbsp;应&nbsp;时&nbsp;间</nz-form-label>
  212. <nz-form-control [nzSpan]="18" nzErrorTip="请输入响应时间(分钟)!">
  213. <nz-input-group>
  214. <nz-input-number class="w100" formControlName="responseTime" nzPlaceHolder="请输入响应时间(分钟)" [nzMin]="0" [nzStep]="1" [nzPrecision]="0" [nzFormatter]="formatterMinute" [nzParser]="parserMinute"></nz-input-number>
  215. </nz-input-group>
  216. </nz-form-control>
  217. </nz-form-item>
  218. <nz-form-item>
  219. <nz-form-label [nzSpan]="6" nzRequired nzFor="handleTime">解&nbsp;决&nbsp;时&nbsp;间</nz-form-label>
  220. <nz-form-control [nzSpan]="18" nzErrorTip="请输入解决时间(分钟)!">
  221. <nz-input-group>
  222. <nz-input-number class="w100" formControlName="handleTime" nzPlaceHolder="请输入解决时间(分钟)" [nzMin]="0" [nzStep]="1" [nzPrecision]="0" [nzFormatter]="formatterMinute" [nzParser]="parserMinute"></nz-input-number>
  223. </nz-input-group>
  224. </nz-form-control>
  225. </nz-form-item>
  226. </form>
  227. </div>
  228. <div class=" display_flex justify-content_flex-center">
  229. <button nzType="primary" nz-button (click)="submitPriorityForm()" [nzLoading]="btnLoading">确认</button>
  230. <button class="btn cancel" nz-button nzType="default" (click)="hidePriorityModal()">取消</button>
  231. </div>
  232. </div>
  233. </div>
  234. <!-- 新增/编辑故障现象模态框 -->
  235. <div class="save display_flex justify-content_flex-center align-items_center add" *ngIf="modalCategory">
  236. <div class="modalBody">
  237. <div class="title">{{modelName}}<i class="icon_transport transport-guanbi" (click)="hideCategoryModal()"></i></div>
  238. <div class="content">
  239. <div class="tips" *ngIf="coopType === 1">您将添加一级故障现象,请输入故障现象</div>
  240. <div class="tips" *ngIf="coopType === 2">您将在“<span class="red">{{activeCategory1.category}}</span>”下新增故障现象,请输入故障现象</div>
  241. <div class="tips" *ngIf="coopType === 3">您将在“<span class="red">{{activeCategory1.category}}{{activeCategory2.category ? ' - ' + activeCategory2.category : ''}}</span>”下新增故障现象,请输入故障现象</div>
  242. <form nz-form [formGroup]="validateCategoryForm" class="addForm">
  243. <nz-form-item>
  244. <nz-form-control [nzSpan]="24" nzErrorTip="请输入故障现象名称!">
  245. <nz-input-group>
  246. <textarea formControlName="name" nz-input placeholder="请输入故障现象名称" [nzAutosize]="{minRows: 3}"></textarea>
  247. </nz-input-group>
  248. </nz-form-control>
  249. </nz-form-item>
  250. </form>
  251. </div>
  252. <div class=" display_flex justify-content_flex-center">
  253. <button nzType="primary" nz-button (click)="submitCategoryForm()" [nzLoading]="btnLoading">确认</button>
  254. <button class="btn cancel" nz-button nzType="default" (click)="hideCategoryModal()">取消</button>
  255. </div>
  256. </div>
  257. </div>
  258. <!-- 新增/编辑关联模态框 -->
  259. <div class="save display_flex justify-content_flex-center align-items_center add" *ngIf="modalConfig">
  260. <div class="modalBody">
  261. <div class="title">{{modelName}}<i class="icon_transport transport-guanbi" (click)="hideConfigModal()"></i></div>
  262. <div class="content">
  263. <form nz-form [formGroup]="validateConfigForm" class="addForm">
  264. <nz-form-item>
  265. <nz-form-label [nzSpan]="5" nzRequired nzFor="hosId">院区</nz-form-label>
  266. <nz-form-control [nzSpan]="19" nzErrorTip="请选择院区!">
  267. <nz-select [nzDropdownMatchSelectWidth]="false" formControlName="hosId" nzShowSearch
  268. nzPlaceHolder="请选择院区" nzServerSearch (ngModelChange)="changeHospital($event)" [nzDisabled]="!add">
  269. <ng-container *ngFor="let data of hospitalList">
  270. <nz-option *ngIf="!isLoading" [nzLabel]="data.hosName" [nzValue]="data.id"></nz-option>
  271. </ng-container>
  272. <nz-option *ngIf="isLoading" nzDisabled nzCustomContent>
  273. <i nz-icon nzType="loading" class="loading-icon"></i> 搜索中...
  274. </nz-option>
  275. </nz-select>
  276. </nz-form-control>
  277. </nz-form-item>
  278. <nz-form-item>
  279. <nz-form-label [nzSpan]="5" nzRequired nzFor="dutyId">责任部门</nz-form-label>
  280. <nz-form-control [nzSpan]="19" nzErrorTip="请选择责任部门!">
  281. <nz-select [nzDropdownMatchSelectWidth]="false" formControlName="dutyId" nzShowSearch
  282. nzPlaceHolder="请选择责任部门" nzServerSearch (ngModelChange)="changeDuty($event)" [nzDisabled]="!add">
  283. <ng-container *ngFor="let data of dutyList">
  284. <nz-option *ngIf="!isLoading" [nzLabel]="data.hosName" [nzValue]="data.id"></nz-option>
  285. </ng-container>
  286. <nz-option *ngIf="isLoading" nzDisabled nzCustomContent>
  287. <i nz-icon nzType="loading" class="loading-icon"></i> 搜索中...
  288. </nz-option>
  289. </nz-select>
  290. </nz-form-control>
  291. </nz-form-item>
  292. <nz-form-item>
  293. <nz-form-label [nzSpan]="5" nzRequired nzFor="priority">优先级</nz-form-label>
  294. <nz-form-control [nzSpan]="19" nzErrorTip="请选择优先级!">
  295. <nz-select [nzDropdownMatchSelectWidth]="false" formControlName="priority" nzShowSearch
  296. nzPlaceHolder="请选择优先级" nzServerSearch>
  297. <ng-container *ngFor="let option of priority_c_List">
  298. <nz-option *ngIf="!isLoading" [nzLabel]="option.name" [nzValue]="option.id"></nz-option>
  299. </ng-container>
  300. <nz-option *ngIf="isLoading" nzDisabled nzCustomContent>
  301. <i nz-icon nzType="loading" class="loading-icon"></i> 搜索中...
  302. </nz-option>
  303. </nz-select>
  304. </nz-form-control>
  305. </nz-form-item>
  306. <nz-form-item>
  307. <nz-form-label [nzSpan]="5" nzRequired nzFor="score">积分</nz-form-label>
  308. <nz-form-control [nzSpan]="19" nzErrorTip="请选择积分!">
  309. <nz-select [nzDropdownMatchSelectWidth]="false" formControlName="score" nzShowSearch
  310. nzPlaceHolder="请选择积分" nzServerSearch>
  311. <ng-container *ngFor="let data of scoreList">
  312. <nz-option *ngIf="!isLoading" [nzLabel]="data.name" [nzValue]="data.id"></nz-option>
  313. </ng-container>
  314. <nz-option *ngIf="isLoading" nzDisabled nzCustomContent>
  315. <i nz-icon nzType="loading" class="loading-icon"></i> 搜索中...
  316. </nz-option>
  317. </nz-select>
  318. </nz-form-control>
  319. </nz-form-item>
  320. <nz-form-item>
  321. <nz-form-label [nzSpan]="5" nzRequired nzFor="userGroup">分配方式</nz-form-label>
  322. <nz-form-control [nzSpan]="19" nzErrorTip="请选择积分!">
  323. <nz-radio-group formControlName="userGroup" (ngModelChange)="changeUserGroup($event)">
  324. <label nz-radio [nzValue]="1">人</label>
  325. <label nz-radio [nzValue]="2">组</label>
  326. </nz-radio-group>
  327. </nz-form-control>
  328. </nz-form-item>
  329. <nz-form-item *ngIf="validateConfigForm.value.userGroup === 1">
  330. <nz-form-label [nzSpan]="5" nzRequired nzFor="userId">维修人</nz-form-label>
  331. <nz-form-control [nzSpan]="19" nzErrorTip="请选择维修人!">
  332. <nz-select (nzOnSearch)="changeInp('add', 'user', $event)" [nzDropdownMatchSelectWidth]="false" nzServerSearch nzShowSearch nzAllowClear formControlName="userId" nzPlaceHolder="请选择维修人">
  333. <ng-container *ngFor="let option of userList">
  334. <nz-option *ngIf="!isLoading" [nzLabel]="option.name" [nzValue]="option.id"></nz-option>
  335. </ng-container>
  336. <nz-option *ngIf="isLoading" nzDisabled nzCustomContent>
  337. <i nz-icon nzType="loading" class="loading-icon"></i> 搜索中...
  338. </nz-option>
  339. </nz-select>
  340. </nz-form-control>
  341. </nz-form-item>
  342. <nz-form-item *ngIf="validateConfigForm.value.userGroup === 2">
  343. <nz-form-label [nzSpan]="5" nzRequired nzFor="groupId">维修组</nz-form-label>
  344. <nz-form-control [nzSpan]="19" nzErrorTip="请选择维修组!">
  345. <nz-select (nzOnSearch)="changeInp('add', 'group', $event)" [nzDropdownMatchSelectWidth]="false" nzServerSearch nzShowSearch nzAllowClear formControlName="groupId" nzPlaceHolder="请选择维修组">
  346. <ng-container *ngFor="let option of groupList">
  347. <nz-option *ngIf="!isLoading" [nzLabel]="option.groupName" [nzValue]="option.id"></nz-option>
  348. </ng-container>
  349. <nz-option *ngIf="isLoading" nzDisabled nzCustomContent>
  350. <i nz-icon nzType="loading" class="loading-icon"></i> 搜索中...
  351. </nz-option>
  352. </nz-select>
  353. </nz-form-control>
  354. </nz-form-item>
  355. </form>
  356. </div>
  357. <div class=" display_flex justify-content_flex-center">
  358. <button nzType="primary" nz-button (click)="submitConfigForm()" [nzLoading]="btnLoading">确认</button>
  359. <button class="btn cancel" nz-button nzType="default" (click)="hideConfigModal()">取消</button>
  360. </div>
  361. </div>
  362. </div>
  363. <!-- 遮罩 -->
  364. <app-mask *ngIf="maskFlag"></app-mask>